Author Id: 13677 Author Name: Sephiroth Post Content: 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 [URL="http://www.pokecommunity.com/member.php?u=49169"]TSK de PokéCommunity[/URL], mientras que lo segundo corresponde a Emerald USA y ha sido hecho por [URL="http://wahackforo.com/u-Sonicarvalho"]Sonicarvalho[/URL]. 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. [spoiler=Script de Ejemplo en EMERALD] #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--Resultado: [IMG]http://img850.imageshack.us/img850/468/sdasdasfda.png[/IMG] Créditos a R!cci y a Xiros. [/spoiler] 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.