Registrarse

[JPAN] FR | Expandir los OW con el JPAN's Engine

Estado
Cerrado para nuevas respuestas.

CompuMax

Discord: CompuMax#0425
Miembro insignia
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.

Ir a la carpeta donde está la aplicación y a abrir el archivo llamado FSDump.txt.

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

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

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;
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:
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
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!
 
Última edición:

KERBEROS

Usuario de Platino
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Soy el primero. Y sin duda tratare de hacerlo. Pero mi ROM ya tiene los overwold expandidos..
Siempre desee un tutp de como usar esta herramienta y alfin alguien se atreve gracias amigo
 

Bugrhak

A long time ago I used to call myself "Subzero".
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Sencillo e ilustrativo, ¡si señor!
Siempre que intentaba esto no me salía del todo bien, y siempre que lo intentaba lo hacía directamente con el OverWorld Manager y pensaba que eso ya era todo.
Pero ahora, esto ya es otra cosa... :D
¡Muy bueno la verdad!
 

hacanoca

Héroe de WaH
Respuesta: [FR] Expandir los OW con el JPAN's Engine

¡Así que te decidiste a realizar el tutorial!
¡Genial!
Todo se entiende muy bien, y hasta explica el por qué no funcionan ciertas cosas como lo de las paletas.
Gracias por explicarnos como usar esta maravillosa herramienta para nuestros hacks.
Creo que la usaré en mi hack =)...
¡Muy bueno el tutorial!
 

Versekr Dark

Usuario mítico
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Como siempre dándonos cátedra de rom hacking, grande @CompuMax, esto le servirá a mucha gente, yo ya había visto la herramienta pero no la usaba por que pensaba que buggeaba es mas varios usuarios de aquí decían lo mismo, pero por lo que vemos solamente es necesario conocerla para poder sacarle el máximo potencial.
 

Kammm

Profesional de WaH
Miembro del equipo
Staff
Respuesta: [FR] Expandir los OW con el JPAN's Engine

¿Hasta 65.000 OW?

¿Aquí no juegan con mi sentimientos?

Gracias por esforzarte para traernos esto, y por tomarte el tiempo de hacer el Tutorial.

Te lo agradezco
 

CompuMax

Discord: CompuMax#0425
Miembro insignia
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Soy el primero. Y sin duda tratare de hacerlo. Pero mi ROM ya tiene los overwold expandidos..
Siempre desee un tutp de como usar esta herramienta y alfin alguien se atreve gracias amigo
No importa si ya tienes los OW expandidos, siempre y cuando no hayas expandido las tablas de las tablas de OW (que hasta donde sé sólo lo ha hecho JPAN). El sistema detecta tus OW y los deja intacto. Solo debes tener en cuenta las consideraciones explicadas para que no te dañe la rom.

¿Hasta 65.000 OW?

¿Aquí no juegan con mi sentimientos?

Gracias por esforzarte para traernos esto, y por tomarte el tiempo de hacer el Tutorial.

Te lo agradezco
65.520 para ser más exacto!

:D

Como siempre dándonos cátedra de rom hacking, grande @CompuMax, esto le servirá a mucha gente, yo ya había visto la herramienta pero no la usaba por que pensaba que buggeaba es mas varios usuarios de aquí decían lo mismo, pero por lo que vemos solamente es necesario conocerla para poder sacarle el máximo potencial.
Bueno bro, como mencioné a mi tampoco me funcionaba si la usaba aplicando la lógica. A eso me refiero con, por ejemplo:

- Elegir solo 2 tablas
- No settear las variables del player a penas inicia el juego

Al parecer se le escapó unas ciertas consideraciones al hacer las rutinas o al insertarlas con la herramienta y no fue hasta que hacanoca me pidió algo de ayuda con esos sistemas que me dediqué a hacerlos funcionar. Así que agradezcan también a él.

:D
 

Naren Jr.

Puto amo
Usuario de Platino
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Excelente tutorial, ya me lo habías comentado por interno, realmente es un detalle muy impresionante a tener en cuenta.

Gracias por haberlo realizado brosito, lo terminaré de aplicar mas tarde en mi hack, un abrazo!
 

KERBEROS

Usuario de Platino
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Perdon pero por algun motivo se me cierra la app de owm antes de terminar el proceso , sera por el win10?
 

CompuMax

Discord: CompuMax#0425
Miembro insignia
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Perdon pero por algun motivo se me cierra la app de owm antes de terminar el proceso , sera por el win10?
Hiciste todos los pasos descritos?, pasa solo con tu rom modificada?, probaste con una rom virgen?

Si pasa sólo con tu rom, puede que sea algunos otros cambios que le hayas hecho. Si pasa con un rom virgen definitivamente puede que sea tu OS. En cualquier caso yo solo posteé el tutorial de como expandir los OW con el Engine de JPAN, no puedo darte asesoría técnica del OWM. Para ello tendrías que contactar con Kimonas.

'^^
 

MACHINE

Space Cowboy
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Hola, @CompuMax

Mi antivirus me bloquea el OWM, ¿Sabes si eso es normal en ese programa o solo me ocurre a mi?
 

CompuMax

Discord: CompuMax#0425
Miembro insignia
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Hola, @CompuMax

Mi antivirus me bloquea el OWM, ¿Sabes si eso es normal en ese programa o solo me ocurre a mi?
Ni idea bro!

Por mis conocimientos de informática no suelo usar antivirus.

Pero si estás descargando el archivo desde el enlace que he proporcionado dudo que tenga virus ya que el mismo GitHub tiene su propio sistema antivirus y escanea los archivos alojados en el servidor. Por si acaso te dejo el enlace directo al archivo:

OWM-x86.zip

También te dejo el resultado del análisis de VirusTotal donde analiza el archivo con 66 antivirus y no detecta amenaza con ninguno (como era de esperarse)

VirusTotal - OWM-x86.zip
 
Respuesta: [FR] Expandir los OW con el JPAN's Engine

muy buen tuto compu. puedo hacer una base de prueba y capaz con el tiempo se vuelve mi base definitiva :D
 

Satan-Sama

Ultimate Lucky Student
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Que grande eres de verdad excelente aporte como siempre lo acabo de probar y no me tome ni 10 minutos en que me saliera a la primera muchas gracias por traer tan buenos aportes
 

Satan-Sama

Ultimate Lucky Student
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Muy buenas de nuevo

como te comente me gustaría preguntarte algo sobre esta parte del tutorial

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.

¿como se debe buscar estos offset?
Realmente aun no domino bien el programa de hxd, por lo que aun no se como ubicarme en estos offset, ya que con CTRL+G solo busca 6 números hasta donde pude ver. Osea si mi offset es 0X0871A241 solo podría buscar 871A24 y aquí es donde surge mi problema dado que si entiendo la parte de hacer que termine en 0 4 8 c pero no se como buscar lo ya mencionado y me gustaría poder editar mi rom ya avanzada con este método de ow por lo que recurro a preguntar si podrías darme una idea de como editar esta parte.


Muchas gracias por leer nuevamente
 

Inferno

Miembro insignia
Miembro insignia
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Muy buenas de nuevo

como te comente me gustaría preguntarte algo sobre esta parte del tutorial


¿como se debe buscar estos offset?
Realmente aun no domino bien el programa de hxd, por lo que aun no se como ubicarme en estos offset, ya que con CTRL+G solo busca 6 números hasta donde pude ver. Osea si mi offset es 0X0871A241 solo podría buscar 871A24 y aquí es donde surge mi problema dado que si entiendo la parte de hacer que termine en 0 4 8 c pero no se como buscar lo ya mencionado y me gustaría poder editar mi rom ya avanzada con este método de ow por lo que recurro a preguntar si podrías darme una idea de como editar esta parte.


Muchas gracias por leer nuevamente
Explicación rápida, tomando como referencia tu offset: 0x0871A241 debes saber que este, hablando de una forma teórica, se podría dividir en dos partes: el 08 y el 71A241.
Lo primero que debes saber es que un archivo .gba, el juego por así decirlo, no está compuesto solo por la ROM, existen más componentes como la BIOS, la RAM, la WRAM, la VRAM, la OAM...

De ahí la necesidad de indicar de algún modo cuando nos encontramos en una zona o en otra. Pues esta indicación se hace a través de lo que conocemos comúnmente como los prefijos de los offsets, esos dos números que aparecen al principio de un offset.

Aquí tienes una lista con los prefijos y lo que indica cada uno (referencia al post de Frostie):
  • 00xxxxxx > La BIOS del cartucho.
  • 01xxxxxx > ¿?
  • 02xxxxxx > Working RAM. (WRAM)
    Aquí se encuentra todo lo relacionado con la RAM (memoria de acceso aleatorio) "principal" del juego (hay otros tipos de RAM en el cartucho que controlan otras cosas, por así decirlo).
    Se puede leer y escribir en ella en cualquier momento, no es de sólo lectura como la ROM (aunque nosotros no hagamos caso a eso, por ello nos llamamos ROM hackers xD).
    Jugando con la RAM podemos editar casi cualquier dato de nuestro archivo guardado (ojo, datos, no hablo de gráficos ni de cambiar la trama del juego), crear Gamesharks/cheat codes... También es aquí donde se almacenan las variables del juego, esas que utilizaremos en nuestros scripts.
  • 03xxxxxx > Parte de la WRAM...
  • 04xxxxxx > I/O registers (registros de entrada y salida). Si sabéis de scripting avanzado os habréis fijado en que las direcciones (de 4 bytes, mantened eso siempre en mente) que empiezan por 04 son en las que se encuentran cosas tan interesantes como la data de las teclas de la Gameboy y gracias a ello podemos hacer scripts a lo @ReoNeky o @Jo7a. xD
  • 05xxxxxx > Palette RAM (PRAM). Donde se encuentra la "data interna" de las paletas.
  • 06xxxxxx > Video RAM (VRAM). Se deduce por el nombre que sin esto no podríamos ver el juego en pantalla.
  • 07xxxxxx > Object attribute memory (OAM). Los atributos de los OBJ, es decir, la data interna de cada NPC del juego, por así decirlo.
  • 08xxxxxx/09xxxxxxx > Como dije, repetí y recalqué, os recuerdo que aquí está la ROM, los datos con los que principalmente vais a trabajar en el ROM Hacking (si no no sería ROM Hacking, claro).
Resumiendo, de tu offset original el 08 nos indica que estamos en la ROM y el 71A241 es una dirección, en este caso de la ROM. Por lo tanto lo que tu tienes que buscar haciendo CTRL+G en el HxD va a ser siempre una dirección, es decir, 71A241.

Te recomiendo encarecidamente este tutorial: https://whackahack.com/foro/t-34687/guia-todo-sobre-sistema-hexadecimal-orientado-al-rom-hacking
 

IIWolfgangII

Usuario de oro
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Holaa una pregunta, Por alguna Razón la Tabla 1 no se me crea nunca, ni tampoco me deja Adherir Nuevas tablas, sabes por casualidad el ¿Por que?

Admito que tengo Problemas en cuanto la parte que decís que hay que dejar todos los Offsets en 0, 4, 8 y c (Aunque que los offsets que no terminaban en eso, luego agregándoles los 00 si hice que terminaran asi) y ademas en la parte que aparece el recuadro ``input variable for the first hero...´´ vos pusiste 0x4090 (creo) yo pongo solo 0 ahí por que no entendí bien que colocar y ahora los Sprites del Hero no me aparecen.
 

Ryder

Designer Maps
Puede que sera un error estúpido el que quiero mencionar, pero no encuentro lo sig..

En el archivo FSDump me arrojo varias direcciones entre las cuales estan 0X0871D15F y 0X088000E3 que visto en el tuto tengo que editarlas para colocarlas en direcciones alineadas... resulta que cuando voy a HxD e intento buscar esas direcciones no las encuentro... lo mas cercano que logro obtener es 871D15 y 88000E respectivamente, pero tengo mis dudas si son o no esas... Alguien me ayuda plis
 

Satan-Sama

Ultimate Lucky Student
Respuesta: [FR] Expandir los OW con el JPAN's Engine

Muy buenas tardes.

Tengo una pregunta sobre el tutorial, estaba agregando ow sin ningún problema y he creado 2 tablas nuevas, incluso los he probado y todo iba bien, pero cuando he ido agregando nuevos ow me ha pasado lo siguiente de la imagen

https://mega.nz/#!hx8wVYSZ!_oHr_76ywq7kvturKpzyOlQzOIJRU77W-GOOEQAkSn8

Y no comprendo el por que, estuve leyendo un poco y me fije que con una versión antigua del owm podia agregar el resto de los ow, pero esta versión no me lee las nuevas tablas "1 y 2" solo trabaja en la tabla 0.

Entonces me gustaría saber si tienes alguna idea del porque ocurre esto o si hay alguna solución, quiero decir en el inicio del tutorial se menciona esto
podamos usar 256 tablas de 256 OW cada una para un total de más de 65.000 OW
Pero yo solo quiero 3 tablas '^^ por lo que no creo haber pasado el limite de ow posibles.

Agradecere mucho si me brindan algo de ayuda o si me indican que pude haber hecho mal y asi corregirlo. Un saludo.
 

KERBEROS

Usuario de Platino
una pregunta, ya logre alinear los offset en la rom, pero duante el analisis, se cierra el OWM. ayuda
 
Estado
Cerrado para nuevas respuestas.
Arriba