11770-FR&E_|_Scripting_|_Movimiento_Instantáneo_de_Cámara_en_FR_y_EMERALD
#0
Sephiroth 13677
Instant movecamera
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:

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:

setvar 0x8002 0xX (donde X es la coordenada X de la camara)
setvar 0x8003 0xY (donde Y es la coordenada Y de la camara)
callasm 0xOFFSET DONDE SE ENCUENTRA LA RUTINA + 1

Emerald USA

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):

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 02Y otra vez los setvars en lugar de los writebytetooffset's:

setvar 0x8002 0xX (donde X es la coordenada X de la camara)
setvar 0x8003 0xY (donde Y es la coordenada Y de la camara)
callasm 0xOFFSET DONDE INSERTASTE EL HEX ARRIBA + 1Y 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.




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.