Hoy les traigo un tutorial de algo que me planteé desde que empecé mi hack y que no había logrado hacer funcionar... ¡hasta ahora!
Expandir los OW usando el Fire Red Hack Engine de JPAN. Para los que desconocen que hace este hack, les digo que esto nos permite expandir la tabla de OW a tablas de tablas de OW. Teniendo como resultado que podamos usar 256 tablas de 256 OW cada una para un total de más de 65.000 OW.
El problema con este sistema es que si se instala aplicando simple sentido común, no va a funcionar y hasta puede llegar a dañar nuestra rom. De ahí que haya hecho este tutorial, así que empecemos.
Para ello vamos a usar dicha aplicación, que la pueden descargar en el siguiente enlace:
Pokemon Fire Red Hacked v1.1
Una vez descargado, descomprimir abrir la carpeta Hack Applier, luego abrir la carpeta Hack tool y finalmente abrir el programa Hacked routine applier.
Darle al botón Open ROM, buscar la rom al que le insertarán el hack y le darle a Abrir o simplemente doble clic.
Darle al botón Apply OverWorld Hacks
En la ventana que se abra preguntará el tamaño de la tabla de OW, ingresar 256 y presionar OK
Nota: De no ingresar 256 el sistema no funcionará y deberán hacer cambios en un editor hexadecimal para cambiar un byte a FF, como se ha indicado en este mensaje. ¿Y qué creen? es ese 256 que fuesen puesto.
En la siguiente ventana se nos preguntará que variable se utilizará para el cambio de OW del primer héroe. Esta función nos permitirá que el player pueda cambiar de OW simplemente seteando unas simples variables con el valor del OW deseado. Se puede colocar una variable con el 0x delante si se utilizará dicha función o dejar en 0 si no se utilizará.
En este ejemplo se eligió hacer uso del cambio de OW del player y se seleccionó la variable 0x4090.
Luego preguntará ¿cuántos OW dinámicos se van a insertar? hasta ahora no he probado esa función, pero asumo que es algo parecido al cambio de OW del player. Por ahora puede se dejar en 0.
Se presiona OK y aparecerá la siguiente ventana:
Indicando que los Hacks de OW han sido aplicados exitosamente.
Si se presiona el botón Get changed data la aplicación mostrará la información de los cambios que ha realizado.
Aquí podemos ver la siguiente información:
Se presiona el botón Aceptar y ya se puede guardar la rom presionando el botón Save ROM.
Ahora se descarga la última versión del OWM en la siguiente dirección:
OWM - OverWorld Manager
Se ejecuta la aplicación y se abre la rom con la opción Open and Analyze .... Una vez termine de analizar la rom, detectará que está aplicado el hack de JPAN y permitirá agregar nuevas tablas.
Como ven en el ejemplo se ha agregado una nueva tabla y se ha insertado un nuevo OW tipo 1 (16x32) de 9 frames. Ahora se guardan los cambios.
Se abre la rom con Advance Map y en Eventos añadir algún evento de persona, seleccionar en Picture no: el número de entrada del OW en la nueva tabla (en nuestro caso 0) y debajo de la casilla Movement, en Unknown colocar 01 para indicar que se está trabajando con la segunda tabla, 02 para la tercera y para trabajar con la original dejar en 00, en nuestro ejemplo la dejamos en 01. Se guarda y ya se puede probar la rom.
Así se verá en A-Map:
Y así en el juego:
Ya con esto hemos expandido las tablas de OW y la hemos hecho funcionar.
Ahora vamos a configurar el cambio de OW del héroe.
Si se está usando el cambio de OW del héroe, como se ha aplicado en el tutorial, se debe insertar un script lo antes posible con los siguientes cambios:
Para ello se recomienda hacer uso del comando checkgender.
Donde 0x4090 es la variable que seleccionamos al insertar el hack y las otras variables las 6 siguientes.
Recomendaciones:
- Para una mejor implementación de las paletas se recomienda aplicar el sistema de Paletas Dinámicas de Overworld (Dynamic Overworld Palettes) de Navenatox. Aunque algunos usuarios han reportado algunos fallos con este sistema, por lo tanto se debe usar con cuidado.
- A pesar de que JPAN expandió las tablas de OW, olvidó expandir las tablas de las paletas o su cantidad máxima. Y a pesar de que en su manual de instrucción dice que se pueden usar más de 256 paletas moviendo la tabla a un lugar con más espacio, agregar más paletas y finalizar la tabla con 00000000 FF110000, esto no es posible por 2 razones:
1.- FF110000 corresponde al ID de paleta 11FF que es el ID de la paleta FF o 256, por lo tanto, en lo que el código encuentre dicha paleta no seguirá buscando en la tabla pues asumirá que es el final de la tabla, independientemente del puntero que tenga asociado dicho ID.
2.- El código nativo del juego aplica un filtro de 8 bits para identificar el ID de la paleta, por lo que su valor está entre 0x00 y 0xFF. Haciendo nuevamente imposible cargar más de 256 paletas.
Por lo que se recomienda usar con cuidado la cantidad máxima de paletas a insertar en la rom.
Ya con esto finaliza este tutorial. Espero les haya agradado y que le saquen mucho provecho.
Saludos!
Expandir los OW usando el Fire Red Hack Engine de JPAN. Para los que desconocen que hace este hack, les digo que esto nos permite expandir la tabla de OW a tablas de tablas de OW. Teniendo como resultado que podamos usar 256 tablas de 256 OW cada una para un total de más de 65.000 OW.
El problema con este sistema es que si se instala aplicando simple sentido común, no va a funcionar y hasta puede llegar a dañar nuestra rom. De ahí que haya hecho este tutorial, así que empecemos.
Para ello vamos a usar dicha aplicación, que la pueden descargar en el siguiente enlace:
Pokemon Fire Red Hacked v1.1
Una vez descargado, descomprimir abrir la carpeta Hack Applier, luego abrir la carpeta Hack tool y finalmente abrir el programa Hacked routine applier.
Darle al botón Open ROM, buscar la rom al que le insertarán el hack y le darle a Abrir o simplemente doble clic.
Ir a la carpeta donde está la aplicación y a abrir el archivo llamado FSDump.txt.
Se verá algo como esto:
Lo que se ve aquí no es más que los offsets donde el programa encontró espacios libres y la cantidad de bytes disponibles. Esto es una genialidad, ya que le podemos dar muchos usos sin tener que usar la herramienta más que para eso, saber donde tenemos espacio libre y cuanto tenemos disponible. En este caso se puede ver que una rom limpia Fire Red USA v1.0 posee unos 7.2MB de espacio libre, es decir, 45% de espacio libre (y aún así lo primero que hacen es expandir la rom).
Estas direcciones de espacio libre son las que tendrá en cuenta la aplicación al insertar los cambios que realiza, generalmente rutinas. Pero una cosa que no tuvo en cuenta el creador de la aplicación u olvidó implementar, es que las rutinas no se pueden insertar en cualquier offset, sino en offsets alineados, ya saben, esos que terminan en 0, 4, 8 o C. Por lo tanto si abrimos una rom que ya haya sido modificada, debemos prestar mucha atención a este log y garantizar que todos los offsets libres estén alineados. Para ello basta con rellenar con 00 los bytes siguientes a partir de los offsets encontrados por el programa, hasta que el siguiente offset libre sea uno alineado. Ejemplo:
Supongamos que nuestro archivo FSDump.txt nos muestra algo como esto:
Como pueden ver ni 0X0871A241 ni 0X08EB0B2E son offsets alineados, entonces abrimos la rom con un editor hexadecimal, vamos a esos offsets y rellenamos con 00 hasta que el siguiente offset libre termine con 0, 4, 8 o C. En nuestro ejemplo debemos agregar 00 00 00 a partir de 0X0871A241 para que el siguiente offset libre sea 0X0871A244 y 00 00 a partir de 0X08EB0B2E para que el siguiente offset libre sea 0X08EB0B30.
Ahora ya se puede abrir de nuevo la rom y continuar...
Se verá algo como esto:
Código:
Address 0X0871A23C has 6184388 bytes free (0X5E5DC4)
Address 0X08EB0B20 has 1373408 bytes free (0X14F4E0)
By Size
Small
Medium
High
Address 0X08EB0B20 has 1373408 bytes free (0X14F4E0)
Address 0X0871A23C has 6184388 bytes free (0X5E5DC4)
Estas direcciones de espacio libre son las que tendrá en cuenta la aplicación al insertar los cambios que realiza, generalmente rutinas. Pero una cosa que no tuvo en cuenta el creador de la aplicación u olvidó implementar, es que las rutinas no se pueden insertar en cualquier offset, sino en offsets alineados, ya saben, esos que terminan en 0, 4, 8 o C. Por lo tanto si abrimos una rom que ya haya sido modificada, debemos prestar mucha atención a este log y garantizar que todos los offsets libres estén alineados. Para ello basta con rellenar con 00 los bytes siguientes a partir de los offsets encontrados por el programa, hasta que el siguiente offset libre sea uno alineado. Ejemplo:
Supongamos que nuestro archivo FSDump.txt nos muestra algo como esto:
Código:
Address 0X0871A241 has 6184384 bytes free (0X5E5DC0)
Address 0X08EB0B2E has 1373395 bytes free (0X14F4D2)
By Size
Small
Medium
High
Address 0X08EB0B2E has 1373394 bytes free (0X14F4D2)
Address 0X0871A241 has 6184384 bytes free (0X5E5DC0)
Ahora ya se puede abrir de nuevo la rom y continuar...
Darle al botón Apply OverWorld Hacks
En la ventana que se abra preguntará el tamaño de la tabla de OW, ingresar 256 y presionar OK
Nota: De no ingresar 256 el sistema no funcionará y deberán hacer cambios en un editor hexadecimal para cambiar un byte a FF, como se ha indicado en este mensaje. ¿Y qué creen? es ese 256 que fuesen puesto.
En la siguiente ventana se nos preguntará que variable se utilizará para el cambio de OW del primer héroe. Esta función nos permitirá que el player pueda cambiar de OW simplemente seteando unas simples variables con el valor del OW deseado. Se puede colocar una variable con el 0x delante si se utilizará dicha función o dejar en 0 si no se utilizará.
En este ejemplo se eligió hacer uso del cambio de OW del player y se seleccionó la variable 0x4090.
Luego preguntará ¿cuántos OW dinámicos se van a insertar? hasta ahora no he probado esa función, pero asumo que es algo parecido al cambio de OW del player. Por ahora puede se dejar en 0.
Se presiona OK y aparecerá la siguiente ventana:
Indicando que los Hacks de OW han sido aplicados exitosamente.
Si se presiona el botón Get changed data la aplicación mostrará la información de los cambios que ha realizado.
Aquí podemos ver la siguiente información:
Código:
Se utilizaron las variables 0x4090 a 0x4096 para el hack de cambio de héroe;
Se utilizaron las variables 0x0 a 0xFFFFFFFF para el hack de OW Dinámicos;
La nueva tabla de overworld está ubicada en 0x71A3C0 con espacio para 256 tablas,
ya asignadas (verificar los punteros). La tabla original de OW está presente en la posición 0;
Ahora se descarga la última versión del OWM en la siguiente dirección:
OWM - OverWorld Manager
Se ejecuta la aplicación y se abre la rom con la opción Open and Analyze .... Una vez termine de analizar la rom, detectará que está aplicado el hack de JPAN y permitirá agregar nuevas tablas.
Como ven en el ejemplo se ha agregado una nueva tabla y se ha insertado un nuevo OW tipo 1 (16x32) de 9 frames. Ahora se guardan los cambios.
Se abre la rom con Advance Map y en Eventos añadir algún evento de persona, seleccionar en Picture no: el número de entrada del OW en la nueva tabla (en nuestro caso 0) y debajo de la casilla Movement, en Unknown colocar 01 para indicar que se está trabajando con la segunda tabla, 02 para la tercera y para trabajar con la original dejar en 00, en nuestro ejemplo la dejamos en 01. Se guarda y ya se puede probar la rom.
Así se verá en A-Map:
Y así en el juego:
Ya con esto hemos expandido las tablas de OW y la hemos hecho funcionar.
Ahora vamos a configurar el cambio de OW del héroe.
Si se está usando el cambio de OW del héroe, como se ha aplicado en el tutorial, se debe insertar un script lo antes posible con los siguientes cambios:
Código:
Si es chico:
setvar 0x4090 0x0
setvar 0x4091 0x1
setvar 0x4092 0x2
setvar 0x4093 0x3
setvar 0x4094 0x4
setvar 0x4095 0x5
setvar 0x4096 0x6
Si es chica:
setvar 0x4090 0x7
setvar 0x4091 0x8
setvar 0x4092 0x9
setvar 0x4093 0xA
setvar 0x4094 0xB
setvar 0x4095 0xC
setvar 0x4096 0xD
Donde 0x4090 es la variable que seleccionamos al insertar el hack y las otras variables las 6 siguientes.
Recomendaciones:
- Para una mejor implementación de las paletas se recomienda aplicar el sistema de Paletas Dinámicas de Overworld (Dynamic Overworld Palettes) de Navenatox. Aunque algunos usuarios han reportado algunos fallos con este sistema, por lo tanto se debe usar con cuidado.
- A pesar de que JPAN expandió las tablas de OW, olvidó expandir las tablas de las paletas o su cantidad máxima. Y a pesar de que en su manual de instrucción dice que se pueden usar más de 256 paletas moviendo la tabla a un lugar con más espacio, agregar más paletas y finalizar la tabla con 00000000 FF110000, esto no es posible por 2 razones:
1.- FF110000 corresponde al ID de paleta 11FF que es el ID de la paleta FF o 256, por lo tanto, en lo que el código encuentre dicha paleta no seguirá buscando en la tabla pues asumirá que es el final de la tabla, independientemente del puntero que tenga asociado dicho ID.
2.- El código nativo del juego aplica un filtro de 8 bits para identificar el ID de la paleta, por lo que su valor está entre 0x00 y 0xFF. Haciendo nuevamente imposible cargar más de 256 paletas.
Por lo que se recomienda usar con cuidado la cantidad máxima de paletas a insertar en la rom.
Ya con esto finaliza este tutorial. Espero les haya agradado y que le saquen mucho provecho.
Saludos!
Última edición: