Tutorial: Buscar y modificar gráficos GBA

 


*Este tutorial está más enfocado a la búsqueda de sprites en las ROMs más que en su modificación a pesar de dar algunas nociones. Tile Molester, el programa de edición que usaremos es muy intuitivo y cada cual deberá hacer los arreglos y/o cambio de colores que crea necesario en su respectivo hackrom. Si no te es familiar, aquí tienes una guía para aprender a usarlo.

No obstante, publicaré tutoriales más específicos sobre modificación de paletas y sprites.

Gráficos

Búsqueda de gráficos

Por suerte, prácticamente todo el apartado gráfico de este juego es modificable, y es que a excepción de backgrounds y portraits no hay datos comprimidos, los cuales también podremos modificar.

Gráficos no comprimidos

Para esta tarea utilizaremos cualquier juego, en mi caso DBAA, un emulador (recomiendo MGBA por comodidad), Tile Molester y un editor Hex. En mi caso HxD. Estos programas lo podréis encontrar fácilmente con una búsqueda en algún buscador.

Cargamos el juego en el emulador, y vamos mismamente a seleccionar el modo 1v1. Da igual en qué modo te encuentres, historia, 1v1, minijuegos… siempre y cuando los sprites que quieras buscar aparezcan en pantalla.

En este caso buscaremos los sprites de Goku.

Una vez tengamos a Goku delante, pausamos la emulación (Ctrl+P).


Iremos a “Herramientas > Ver Sprites…” y vamos clicando en la flecha superior del recuadro “Dirección” hasta que el sprite de Goku, o más bien parte de él, aparezca en la columna derecha. Y pinchamos sobre cualquier punto de la imagen, mismamente la cara, para que cargue la información de su tile (sprite de 8x8 píxeles).

El motivo de no escoger su primer Tile, que sería el de la esquina superior izquierda, es porque no contiene información.

Cuanta másinformación contenga el Tile que seleccionemos (no es exacto, pero se podría decir que mayor cantidad de colores), mejor.



De esta venta necesitaremos dos datos:

1.  Nº de paleta : 8

2.  Dirección: 0x60126e0

Ahora nos dirigiremos a “Herramientas > Ver memoria…” y en “Inspeccionar dirección” anotamos la que obtuvimos para que nos lleve a la dirección de memoria indicada.

Una vez allí, podemos copiar los primeros h20 (32 en hex) Bytes, que son los que ocupa un Tile, o copiar unos cuantos más hasta llegar como máximo al final del último Tile del gráfico del cual podemos obtener su dirección realizando el mismo proceso anterior.


Una vez copiado y sin cerrar aún MGBA, es momento de irnos a HxD y tras abrir el ROM, vamos a “Buscar x2 > Valores hexadecimales” y pegamos nuestro código. Antes de buscar, en el apartado “Dirección”, marcaremos la casilla “Todo” y clicamos en aceptar, no siendo necesario darle a “buscar todo”, ya que esto hará que arroje todos los resultados posibles, que no serían más que todas las veces que el Tile que estamos buscando se repite en los distintos sprites de Goku.


Automáticamente nos llevará al Offset 1BBB5C.

Es momento de abrir la ROM en Tile Molester. Una vez abierto, aunque normalmente venga por defecto, nos aseguraremos que está bien configurado para poder ver los gráficos correctamente. Así que vamos a “Ver > Códec”  y seleccionamos 4bpp lineal, reverse-order.

El siguiente paso será ir a la dirección obtenida en HxD, por lo que pulsamos en “Navegar > Ir A…” y escribimos nuestra dirección “1BBB5C”.

Con esto, ya logramos ver cierta partes de los sprites de Goku aunque con los colores que carga por defecto Tile Molester y distorsionado.


Para verlo correctamente reduciremos el número de columnas de Tiles a 4. Para ello debéis ir pulsando  el botón “Disminuir ancho” (columnas con flecha apuntando a la izq.).

Para terminar y situarnos en el Offset correcto, lo que debemos hacer es pulsar “Mosaico Siguiente” >, o bien pulsar la flecha derecha de nuestro teclado. Y ahora, sí que vemos a Goku.


Y ahora vamos a darle el color correcto, y para ello debemos cargar su paleta de colores. Este paso se puede hacer perfectamente antes de buscar el sprite, incluso a veces es necesario para poder verlos mejor cuando vamos desplazándonos por los offset para verlo claramente y saber qué pasos seguir.

Conseguir la paleta tiene un proceso similar al de conseguir el mapeado de los sprites, así que, sabiendo que su paleta es la nº8, recordad que este dato lo conseguimos antes, vayamos de nuevo a MGBA y nos dirigiremos a “Herramientas > Ver Paletas”. Debemos fijarnos en las paletas de los Objetos y contamos  hacia abajo. *Recordad que el 0 cuenta, por lo que realmente será la novena paleta.


Seleccionado el primer color de nuestra paleta, observamos que su Índice es 384. Este número no nos facilita el trabajo, de hecho, si alguien usa VisualBoyAdvance le otorgará la dirección de memoria en la que se encuentra su código, pero como ya estamos en MGBA os enseñaré como obtenerlo a partir de este índice.

La siguiente operación requerirá que abráis la calculadora de Windows y la pongáis en modo  programador. Seleccionando “DEC” escribimos nuestro número y lo dividiremos por 16 (colores que tiene cada paleta) y así obtendremos el nº de paleta que ocupa en la memoria. Posteriormente multiplicamos por 32 nuestro resultadoEl motivo es porque son 32 Bytes lo que ocupa cada paleta de 16 colores, obteniendo así la posición de nuestra paleta en la memoria.

Resumiendo:

384 / 16 = 24 * 32 = 768

No olvidemos que estamos operando con decimales, y necesitamos Hex, por lo que nos quedamos con su equivalencia en Hex ofrecida por la calculadora, siendo 300.

Por lo que finalmente descubrimos que la paleta se encuentra en la dirección 5000300.

¿Por qué sumarle  5000000? Pues porque es el comienzo de la dirección donde la memoria almacena las paletas.

Realmente se tarda unos segundos en obtener la dirección, aunque como he dicho, simplemente podéis usar VisualBoyAdvance  y obtenerla directamente en la ventana de paletas. El motivo de usar MGBA es porque la ventana del Visor de memoria nos permite copiar los datos que buscamos y con VBA nos tocaría escribirlos en nuestro editor Hex ya que no nos permite copiar. Cada cual con su criterio.

El siguiente paso sería ir como sabréis a “Herramientas > Ver Memoria…” y escribimos 5000300 en “Inspeccionar Dirección”, y una vez nos traslade a dicho offset de memoria, copiaremos los h20(32) bytes pertenecientes a la paleta.


Con nuestra paleta copiada, podemos cerrar MGBA e irnos a HxD, “Buscar x2 > Valores hexadecimales” y marcamos “Todo”. Pegamos el código y pulsamos “Aceptar.


Y nuestro Offest es 1B8BBC.

Vayamos a Tile Molester y acto seguido a “Paleta > Importar desde > este archivo”. En “offset” pegamos o escribimos la dirección obteniday en “Tamaño” escribimos 16 (Nº de colores). 

Y Voilá.


Las herramientas de dibujo son similares a Paint como son el cuentagotas, lápiz, bote de pintura, goma… Y no tiene mayor complicación. Aun así, si queréis modificar los gráficos en un editor de imágenes con el que os encontréis más cómodo lo podéis hacer exportando e importando los sprites.

Para modificar la tabla de colores hay varios métodos, pero ya que estamos en Tile Molester, podéis hacerlo haciendo doble clic en cada color y podréis modificarlo a vuestro antojo con las diversas opciones que ofrece el editor de colores como son desde elegir un color, a modificar la saturación, contraste, iluminación e incluso pegando su código Hex. Para los que quieran aprender otros métodos y más sobre cómo usar este programa y otros aspectos mencionados en esta guía, estoy elaborando otro tutorial donde explicaré algunos conceptos y métodos básicos. Aun así, modifiquemos la ropa a modo de ejemplo.

Una vez acabado, guardamos y ejecutamos el juego en el emulador para comprobar los cambios.