Alguna vez te diste cuenta que al "hablar" con una pared de afuera del centro pokémon aparecía un mensaje, pero si revisabas en el mapa no tenía ningún script? Bueno, pues eso se debe a que el script no esta asignado directamente en el mapa, sino que está asignado al tile mismo! y es por eso que en cada centro Pokémon aparece el mismo mensaje una y otra vez.
De eso se trata este tutorial. Vamos a ver como reemplazar estos comportamientos, los que he encontrado son solo algunos, pero además faltan bastantes... y algunos ni se usan!
Este tutorial es válido para cualquier versión de Pokémon. Sin embargo los datos recopilados son solo para Fire Red. Si conoces mas de estos datos y fueras tan amable de compartirlos con el mundo sería grandioso, por favor contacta con el administrador.
Para empezar hay que saber que el comportamiento que podemos asignar no es nada mas que un Script como cualquier otro. Vamos a necesitar uno, puede ser cualquier cosa como un mensaje simple, un mensaje de pregunta, un multichoice, o algo mas complejo como un script que compruebe que alguno de tus pokemon tenga un ataque específico para poder obtener ciertas cosas, que tengas cierta medalla para "traspasar" un muro, o cualquier cosa que te puedas imaginar. Si por este momento no tienes ni idea de por donde empezar, pues te dejo un ejemplo bien sencillo con un mensaje para que no te vayas a quedar estancado y que podamos continuar con este tutorial.
#dynamic 0x '--------------- #org @start lock msgbox @msg 0x6 release end '--------------- #org @msg = ¡Funciona!
Ahora debemos de compilar el Script en la Rom con la ayuda del XSE. Si no sabes hacerlo trataré de explicarlo de forma rápida...
Ahora lo unico que tenemos que memorizarnos (o preferiblemente anotar en el Bloc de notas) es el Offset, en este caso el Offset 0x750000.
En esta parte viene lo mas interesante, es una lista de comportamientos que pude encontrar en una Rom de Pokémon Fire Red. Analízala un poco y decide cual comportamiento es el que vas a sustituir...
Byte Offset Descripcion 81 0x1A7606 Libreros 82 0x1A760F Mostradores Tienda 83 0x1A6955 PC 85 0x1A6C32 Mapa 86 0x168C78 Programa de TV 87 0x1A76E7 Centro Pokémon 88 0x1A76DE Tienda Pokémon 89 0x1A7657 Platos perfectamente alineados 8A 0x1A7660 Huele delicioso 8B 0x1A7669 Mueble resistente 8C 0x1A7672 Un montón de comida 8F 0x1A7702 Cuestionario Regalo Misterioso 90 0x1A7618 Un Refrigerador 91 0x1A76F0 Estatua 1 Esto es la calle victoria 92 0x1A76F9 Estatua 2 Esto es la calle victoria 94 0x1A767B Un retrato muy mono 95 0x1A7684 Máquina Extraña 96 0x1A768D Teléfono 97 0x1A762A Una PC con códigos raros 98 0x1A7696 Poster de productos 99 0x1A769F Platillos del Restaurante y del SS ANNE 9A 0x1A76A8 Botes de Basura 9B 0x1A76B1 Taza de Café 9C 0x1A76BA Ventana 9D 0x1A76C3 Otra Ventana 9E 0x1A76CC Lucecitas de colores... 9F 0x1A76D5 Mostradores Tienda de Bicis
Ahora que ya seleccionaste uno de la lista (yo escogí el 91 que es el de una estatua en la calle victoria) hay que descompilar el contenido del Script. Trataré de explicarlo de manera rapida...
Lo que vemos en la pantalla es el script original, es decir el comportamiento original que tenía asignado un Tile, lo que vamos a hacer es simplemente reemplazar todo lo que haya (Excepto la primer linea #org) por el comando "goto 0x" seguido del Mismo offset donde compilamos antes el Script y luego presionamos el botoón "Compilar".
Esto hará que cuando el juego quiera leer lo que había en el Script original se encuentre con nuestro comando goto que le dirá el nuevo Offset donde esta el Script.
Nota como yo he puesto un 8 antes del offset, es completamente opcional, pero parece que algunas versiones viejas de XSE no lo permiten, asi que de preferencia deja solo el Offset.
Lo que sigue es decidir qué tile es el que reaccionará con este comportamiento. Ten en cuenta que pueden ser varios tiles, no solamente uno.
Yo voy a escoger el tile de árbol. Para asignar el comportamiento vamos a cargar nuestro ROM en Advance Map y cargar el mapa que contenga el tilemap (es decir, el mapa donde aparezca el tile que buscamos) y hacer clic en el botón de "Editor de Bloques" (tiene un icono con una pieza de rompecabezas morada). Esto nos abrirá una nueva herramienta donde aparecen todos los tiles que utiliza el mapa. Vamos a buscar el que nosotros deseemos y lo seleccionamos, entonces en la parte derecha nos van a aparecer varias opciones. Debemos de cambiar el valor del cuadro "Byte de comportamiento 1" por el Byte de la lista anterior que corresponda al comportamiento que hayamos elegido y presionamos el botón "Guardar".
Ahora cerramos el editor de bloques y presionamos Ctrl+S para guardar todos los cambios, y entonces sí, en el emulador vamos a comprobar como todos las copias del tile en el mapa tienen ese comportamiento!
Nota: El script que yo compilé no es el de este tutorial. Muestra de que se pueden hacer cosas mas complejas. ¡Adelante, a echar volar la imaginación!