Registrarse

[ASM] FR, E | Mensajes de Entrenadores en Batallas

Gold

Porrero a tiempo parcial
Miembro insignia
Bueno, bueno. Esta función es algo que he querido insertar siempre para darle un toque más moderno a mi hack. Y ahora es ya posible y completamente funcional.

Vuelvo a explicar el título. En Pokémon Diamante/Perla se introdujo una curiosa función, la cual consiste en algunos entrenadores importantes, como líderes de gimnasio o Alto mando, los cuales aparecerán y nos dirán ciertos mensajes a media batalla.

Dicha función permaneció hasta la quinta generación, mas dicha función desapareció con la llegada de los juegos en 3D. El punto es que ahora ya tenemos dicha función disponible tanto para FireRed como para Emerald.

Este código está disponible en forma de repositorio, pero igual les haré el favor de traducir el mismo para quien no sepa inglés.

Primero, el repositorio. Deben descargar el mismo y descomprimir el archivo .zip generado.

https://gitgud.io/pfero/trainer_sliding

Para compilar este código necesitarás:
  • Devkitarm y sus variables de entorno configuradas.
  • Armips tambien configurado
  • Make instalado
  • Notepad++

En el foro pueden encontrar como configurar todas las dependencias anteriormente mencionadas.

Ahora sí, las instrucciones de instalación

1. Copia el archivo .gba del proyecto en el cual vamos a trabajar y pegalo en la raíz del repositorio; Renómbralo dependiendo de la versión que has puesto (firered.gba o emerald.gba)

2. En la carpeta version, abre la carpeta que contiene la versión que vas a usar, luego abre y edita los archivos insert.asm y linker.ld; En ambos archivos busca la linea free_space, esta determina el espacio libre donde el código va a ser insertado. Cámbialo a tu conveniencia.

3. Ya con todo lo anterior listo, en la carpeta raíz solo debes ejecutar el comando make. Si lo haces bien no se mostrará ningún error y se generarán varios archivos nuevos. los que nos importarán son *.patched.gba y *_messages.asm (Siendo el * la versión que usaste)

4. El código está insertado, mas no hará cambio algo ya que los dialogos no han sido insertados. Es aquí donde entra el *_messages.asm. Para insertar los dialogos basta con editar ese archivo con notepad++, leer las instrucciones del archivo generado y comenzar a agregar dialogos. El archivo generado te dirá donde debes poner el iD de entrenador que dará el mensaje y como enlazqr las lineas de texto. Puedes actualizar y agregar cuantos entrenadores y lineas de texto gustes.

4. Ya que tengas listo todo, toca ensamblar el código que hará que los dialogos funcionen. para hacerlo basta con usar armips y ejecutar el comando armips *_messages.asm. El código será insertado en el srchivo .patched de la raíz del repositorio.

5. Puedes incluso sacar de ahí tu ROM y ponerla en otra carpeta para seguir insertando más dialogos. Tan solo debes de llevarte tambien el archivo *_messages.asm y charmap.tbl y asegurarte que tu ROM se llame *.patched.asm y con eso bastará para volver a insertar todos los dialogos.

Si has hecho todo bien el resultado final será así (Salta al minuto 2:00 para ver el efecto)


El código se basa en mensajes de batalla, por ende si tienes algún parche o has repunteado la tabla de mensajes de batalla quizás debas de actualizar el comando 0x200 que es usado en el repositorio, lo puedes editar en source/scripts.h y source/scripts.s. Tambien lo puedes hacer modificando string_hook (En el directorio version/ correspondiemte) cualquiera que quede mejor para tu ROM.

Adicionalmente para FireRed, el código agrega un nuevo script de batalla para mostrar y ocultar al entrenador, siendo este el comando 0xF8, Si has aplicado un parche que agrega nuevos efectos para ataques es probable que hayan conflictos y puede que algunos movimientos o este código cuelguen tu ROM (En el parche de MrDollSteak por ejemplo, el comando 0xF8 pertenece al comando callasm, por ende no te va a funcionar a la primera) Para hacer el código compatible con tu proyecto habrá que editar version/firered/insert.asm:bs_execute_handle y source/script_commands.h y/o apuntar el comando a la función correcta,
que se hace editando version/firered/insert.asm:battlecommand_trainer_back_slide. Puedes ver el archivo *.patched.sym generado para encontrar la.dirección de la misma).

Y es todo, espero que la forma en que he traducido y explicado slgunos puntos sea entendible para todos, aunque por desgracia no es tan noob-friendly y se requieren ciertos conocimientos para poder insertar este código sin liarla.

Todos los créditos van para pfero por ser el autor del código, hecho originalmente para el hack Countryball de Pollandev
 
Última edición:
Arriba