Вы находитесь на странице: 1из 9

Laboratorio de Scripts de Ribon22x 1

Agrandar una ROM para insertar más scripts

AGRANDAR UNA ROM PARA INSERTAR MÁS SCRIPTS

Introducción:

No es muy común ver hacks que quedan flotando bajo porque se han quedado sin espacio para insertar ciertos
componentes, pero a veces nos hace falta un poco más de espacio en nuestras ROMs para almacenar más contenido del
cual no tenemos espacio disponible para almacenarlo.

A continuación les enseñaré una forma con la cual podrán insertar más espacio en una ROM para que creen más
scripts de los que ya tienen. Empezaré explicando cómo hacerlo y terminaré dando una explicación técnica de cómo
llegué a la conclusión de que podía hacer eso. No está demás decir que este tutorial es para gente que no es tan novata,
puesto que ocuparé términos que deberán conocer antes y no explicaré que son.

También decirles que esto está en proceso de búsqueda de bugs, por lo que no estoy seguro al 100% de que no
vaya a ocasionar alguna especie de problema en las ROMS al momento de emular, aunque yo lo he probado y me ha
funcionado de maravilla.

Herramientas necesarias:

Para cumplir nuestro propósito necesitaremos una serie de recursos, de los cuales se deberán tener por lo
menos una noción de para qué sirve y como usarlo. Las herramientas que usaremos son:

- HEX Workshop

- Advance Map

- XSE

- Una ROM

Bueno, HEX Workshop lo pueden descargar desde su página oficial, aunque no es obligatorio usar este editor
HEXA, pueden usar el que quieran pero que tenga la opción de inserción de bytes, para este tutorial yo usaré la versión 6
para Windows XP de 32 bits.

La versión que usarán de advance map da lo mismo ya que es solo para asignarle offsets a los minis u otros
comportamientos

El HEX Workshop también será utilizado para insertar scripts que no podrán ser insertados por XSE por
limitación de offsets.
Laboratorio de Scripts de Ribon22x 2
Agrandar una ROM para insertar más scripts

Agrandar la ROM:

Aunque este es el objetivo principal del tutorial, es una de las partes más fáciles de hacer, y solo se necesitará el
HEX Workshop.

Paso a paso:

1.- Lo primero que haremos será abrir nuestra ROM usando HEX Workshop, lo que nos producirá lo que vemos a
continuación:
Laboratorio de Scripts de Ribon22x 3
Agrandar una ROM para insertar más scripts

2.- Luego de esto vamos a bajar al fondo usando la barra deslizadora, hasta que lleguemos a la dirección 0xFFFFFF

3.- Ya hecho esto estaremos listos para insertar nuevos bytes. Lo primero que haremos será apretar clic derecho al final
del último byte, se nos desplegará un menú como este:
Laboratorio de Scripts de Ribon22x 4
Agrandar una ROM para insertar más scripts

4.- En ese menú vamos a presionar donde dice “insert” (insertar), se nos desplegará la siguiente ventana:

Donde dice “Number of bytes” debemos ingresar la cantidad de bytes que vamos a insertar, para este ejemplo lo
dejaremos en 1000, pero luego veremos en la parte teórica la inmensa cantidad que podremos insertar

En el segundo cuadro donde dice “Fill with the following hex byte” asegurarse que dice “ff” para que llene todo el
espacio que crearemos con FF.

Ahora le damos a OK y hemos agregado 1000 bytes a nuestra ROM (El límite lo veremos después) acá una imagen que
muestra hasta que offset llega ahora nuestra ROM:

Si se dan cuenta nuestra ROM a crecido 1000 Bytes. Las FF aparecerán en rojo hasta que guardemos, así que no significa
que haya error, solo es una funcionalidad de HEX Workshop que nos muestra la cantidad de bytes que han sido
modificados y no guardados.
Laboratorio de Scripts de Ribon22x 5
Agrandar una ROM para insertar más scripts

Bien, ahora vamos a guardar haciendo clic en el icono del disquete que se encuentra en el menú superior:

Al apretar en el nos aparecerá un mensaje que nos preguntará si queremos hacer una copia de seguridad de nuestra
ROM, o sea guardar la ROM dos veces, una que estará modificada y la otra sin modificar (un respaldo). La idea es que
guarden un respaldo si es que llegará a ocurrir alguna especie de error.

Bien, ya hemos terminado el paso más fácil, nuestra ROM ya es más grande.

Probar nuestra ROM

Bueno, para comprobar que nuestra ROM no sufrió percances vamos a probarla en VisualBoy Advance, pero
deben tener una consideración. La opción “Save Type”(Options > Emulator > Save Type) debe estar en “Flash 128K”

Extra: Acá el por qué Emerald debe tener esa configuración. Emerald tiene unos 10 bytes extra por lo que se pasa del
offset 0xFFFFFF. *cejas*. Si quieren pueden comprobarlo abriéndolo con un editor HEX.

Insertar nuevos scripts:

Bueno, ahora es la hora de empezar a insertar nuevos scripts, pero la verdad no habrá comodidad de usar un
compilador como XSE para insertarlos ya que tendremos que hacerlo usando nuestro editor hexadecimal favorito y
tendremos que recordar todas las reglas de permutación y todo eso que aprendieron acerca de scriptear usando HEX.

Claro está que esto es solo aplicable si quieren hacer scripts que se encuentren almacenados en los nuevos
offsets agregados, ya que si quieren insertar scripts en los offsets que ya existían podrán seguir haciéndolo sin ningún
problema usando XSE por ejemplo, solo que XSE no tendrá acceso a escribir en los nuevos por un asunto que veremos
más adelante en la explicación técnica.
Laboratorio de Scripts de Ribon22x 6
Agrandar una ROM para insertar más scripts

Por ejemplo si quieren insertar un msgbox que muestre un mensaje que se encuentra en la dirección 0x816AC56
y que se cierre al terminar el dialogo, ustedes normalmente escribirían el siguiente código en XSE:

msgbox 0x0 816AC56


callstd 0x6

Pues ahora tendrán que insertarlo con un editor HEX de la siguiente forma:

0F 00 56 AC 16 08 09 06

MSGBOX
OFFSET PERMUTADO
CALLSTD 0X6

Acá está la imagen mostrando como quedaría insertándolo usando HEX Workshop desde la dirección 0x01000000

Los correspondiente números HEXA para cada comando los pueden sacar del XSE apretando F1 para ver la ayuda

Lo otro que también pueden hacer es insertar el script en una de las direcciones a las que puede acceder el XSE compilar
y luego ir a esa dirección usando el editor HEX y copiar el código generado y pegándolo en la nueva dirección.

Existen muchas formas de insertar el código, traten de ver las que más les convenga.

Llamar el script:

Bueno, esta es otra de las partes del tutorial en las que deben poner mucho ojo ya que pueden perderse. Como
podrán saberlo (o no) el Advance Map solo deja que le asignemos offsets de scripts que se encuentran en el rango desde
#000000 hasta #FFFFFF, lo que es un problema, ya que todos los offsets que acabamos de insertar se encuentran desde
#1000000 (#FFFFFF + 1), pero existe una solución para este problema, lo único que necesitaremos es asignarle un offset
que tengamos libre dentro del rango soportado por advance map, por ejemplo #6E645A, y Advance Map lo encontrará
como un offset válido.
Laboratorio de Scripts de Ribon22x 7
Agrandar una ROM para insertar más scripts

Paso a Paso:

Asignar offset válido para Advance Map

Voy a hacer como que queremos llamar el script que insertamos hace un rato, el que estaba en la dirección 0x1000000

Abrimos el XSE y nos vamos al offset que le asignamos

Entonces debemos poner el siguiente código:

#ORG 0x6E645A
goto 0x9000000

Bueno, para este caso como el script fue insertado en la dirección 0x1000000 debemos poner goto 0x9000000, pero si
por ejemplo el script que queremos ejecutar se encuentra está en 0x1353535, entonces deberíamos poner 0x9353535 o
sea de forma corta, solo deben cambiar el 1 por un 9 (esto se explicará en la explicación técnica).
Laboratorio de Scripts de Ribon22x 8
Agrandar una ROM para insertar más scripts

Luego es la hora de probar nuestro script, compilamos y nos vamos a el mini que se supone llamo a el script válido desde
nuestro emulador.

Bueno, en la imagen podrán ver que funcionó.

Nota: Si, es el mismo mensaje que muestra originalmente ese mini, pero solo que esta vez es llamado desde la dirección
0x9000000. XD.

Recuerden asegurarse de que la opción Save Type este en Flash 128KB.

EXPLICACIÓN TÉCNICA
De dónde Salió la curiosidad:
Laboratorio de Scripts de Ribon22x 9
Agrandar una ROM para insertar más scripts

Bueno, la verdad hace ya tiempo estaba intrigado con esto, pero como no tenía tiempo no lo investigaba.
Si nos vamos a las especificaciones técnicas de la Gameboy Advance veremos que en su memoria RAM existen
32 MB destinados a él direccionamiento de la ROM (Memoria de solo lectura). De los cuales un juego de pokémon sólo
estaba ocupando 16MB o sea solo la mitad de lo que tenía disponible.

Busque ROMs (de otros juegos) para ver en que utilizaban los 16MB de RAM que los juegos de pokémon no
usaban y encontré varios que lo utilizaban para almacenar datos útiles para el juego, o sea que no era memoria
reservada para procesos de la consola ni nada.

Por eso me confié y empecé a buscar formas para agrandar la capacidad de la ROM.

¿Cuánto se puede agrandar la ROM?

Bueno, la verdad sería perfecto si pudiéramos tener una ROM de 32 MB o sea el doble de lo que tenemos
originalmente para poder hacer lo que queramos, pero yo creo que eso crearía desventajas, aunque no lo he probado, lo
que los deja a ustedes con libertad de agrandar todo lo que quieran la ROM claro sin pasarse de la dirección 0x1FFFFFF
porque ese es el límite que soporta la RAM (Idealmente).

¿Por qué cambiar el 1 por el 9?

Bueno, como habrán leído en algunos tutoriales sabrán que la memoria reservada para nuestra ROM empieza
desde la dirección 0x0800000 y normalmente una ROM de pokémon tiene 16MB o sea ocupa hasta la dirección
0x8FFFFFF, pues ahora como rompemos ese límite empezamos desde la dirección 0x9000000 en adelante y tenemos
hasta la 0x9FFFFFF.

¿Cuántas veces puedo agrandar la ROM?

La ROM pueden modificarle su tamaño las veces que quieran, de hecho recomiendo que solo lo agranden de
1000 en 1000 para que las herramientas no demoren tanto en abrirla. Y también procurando que no se pasen de los
32MB.

¿Scripts solamente?

Los nuevos offset solo los he probado para almacenar scripts, si ustedes quieren pueden probar a repuntar
gráficos y decirme que resultado obtuvieron, después de todo este manual está recién naciendo, todavía hay que
encontrarle sus ventajas y desventajas.

Bueno, con esto termino la explicación de cómo agrandar la ROM.


si me falta algo iré actualizando. Saludos

Вам также может понравиться