Sephiroth
---
Instant movecamera
en Fire Red y Emerald
en Fire Red y Emerald
Hola a todos. Bien, como el título del tema indica, aquí expondré una rutina ASM y un código en Hexadecimal que encontré por ahí. La primera corresponde a Fire Red USA y ha sido hecha por TSK de PokéCommunity, mientras que lo segundo corresponde a Emerald USA y ha sido hecho por Sonicarvalho. No creo que sea necesario especificar que los créditos si usan algo de aquí deben ir a sus respectivos autores y que yo no tengo ningún mérito.
Fire Red USA
Bueno... es bastante simple, sólo tenéis que insertar esta rutina ASM en HEX en la ROM de Fire Red:
Pégalo en un lugar en blanco en tu ROM de FR con cualquier Hex editor.
Y aquí están los specials que tienes que utilizar:
special 0x113 (para separar la telecámara y los movimientos del player)
special 0x114 (para "conectar" de nuevo la telecámara y el player)
special 0x8E
Bueno, pero eso no es todo... para usarlo correctamente tendréis que usar esto en lugar de los writebytetooffset:
Emerald USA
Código:
07B5 0548 0168 054A 1288 0A80 0231 044A 1288 0A80 07BD C046 0850 0003 BC70 0302 BE70 0302
Pégalo en un lugar en blanco en tu ROM de FR con cualquier Hex editor.
Y aquí están los specials que tienes que utilizar:
special 0x113 (para separar la telecámara y los movimientos del player)
special 0x114 (para "conectar" de nuevo la telecámara y el player)
special 0x8E
Bueno, pero eso no es todo... para usarlo correctamente tendréis que usar esto en lugar de los writebytetooffset:
Código:
setvar 0x8002 0xX (donde X es la coordenada X de la camara)
Código:
[FONT=Tahoma][SIZE=3] setvar 0x8003 0xY (donde Y es la coordenada Y de la camara)[/SIZE][/FONT]
[FONT=Tahoma][SIZE=3] callasm 0xOFFSET DONDE SE ENCUENTRA LA RUTINA + 1[/SIZE][/FONT]
Pues esta vez es aún más sencillo. Una vez que hayas expandido el ROM a 32 MB (puesto que hay realmente poco espacio en Emerald), tendrás que pegar esto en un offset libre (FF FF FF... etc etc etc):
Y otra vez los setvars en lugar de los writebytetooffset's:
Y para terminar, tendréis que insertar estos specials en lugar de los originales de Ruby USA en un movimiento de camara instantaneo, ya que los de Emerald son distintos...:
special 0x116 en lugar del special 0x113
special 0x91 en lugar del special 0x8E
special 0x117 en lugar del special 0x114
HAZ LO SIGUIENTE AL INSERTAR EL CÓDIGO/RUTINA:
Debes colocarlo en un OFFSET múltiplo de 4. Es decir, el offset donde lo coloques terminará en 0, 4, 8 o en C.
Resultado:
Créditos a R!cci y a Xiros.
Código:
07 B5 05 48 01 68 05 4A 12 88 0A 80 02 31 04 4A 12 88 0A 80 07 BD C0 46 8C 5D 00 03 DC 75 03 02 DE 75 03 02
Código:
setvar 0x8002 0xX (donde X es la coordenada X de la camara)
Código:
[FONT=Tahoma][SIZE=3] setvar 0x8003 0xY (donde Y es la coordenada Y de la camara)[/SIZE][/FONT]
[FONT=Tahoma][SIZE=3] callasm 0xOFFSET DONDE INSERTASTE EL HEX ARRIBA + 1[/SIZE][/FONT]
special 0x116 en lugar del special 0x113
special 0x91 en lugar del special 0x8E
special 0x117 en lugar del special 0x114
HAZ LO SIGUIENTE AL INSERTAR EL CÓDIGO/RUTINA:
Debes colocarlo en un OFFSET múltiplo de 4. Es decir, el offset donde lo coloques terminará en 0, 4, 8 o en C.
Código:
#org 0x869C95
lock
faceplayer
msgbox 0x8869D62 MSG_NORMAL '"Echa un vistazo a esto..."
special 0x116
setvar 0x8002 0x7
setvar 0x8003 0xD
callasm 0x99557F1
special 0x91
movesprite 0xFF 0x11 0x7
movesprite 0x2 0x11 0x6
fadescreen 0x0
pause 0x40
msgbox 0x886A139 MSG_NORMAL '"¿No es extraño?"
fadescreen 0x1
special 0x116
setvar 0x8002 0x11
setvar 0x8003 0x7
callasm 0x99557F1
special 0x91
movesprite 0xFF 0x11 0x7
movesprite 0x2 0x11 0x6
special 0x117
fadescreen 0x0
msgbox 0x886A14B MSG_NORMAL '"Pero si es rarísimo!"
release
end
--STRINGS--
Créditos a R!cci y a Xiros.
Bueno, para los que se pregunten "¿Y por qué no puedo utilizar un WBTO? Pues la razón es sencilla... en ambos juegos (FR y Emerald) las coordenadas son dinámicas, es decir, se refrescan (no sé exactamente si es por la RAM), así que no, no se puede usar un WBTO sin haber antes "des-dinamizado" las coordenadas, y al haberlo hecho el código no es compatible por alguna razón con un WBTO.
Un saludo.