Manual Completo de ROM Hacking para SNES

Guía desde básico hasta avanzado para modificación de ROMs de Super Nintendo

Introducción al ROM Hacking de SNES

El ROM hacking es el proceso de modificar los archivos de ROM de juegos de SNES para alterar su contenido, ya sea para traducciones, hackeos de dificultad, o creaciones completamente nuevas.

NOTA: Este manual es solo con fines educativos. Solo modifique ROMs de juegos que posea físicamente.

Herramientas Básicas

Para comenzar necesitarás estas herramientas esenciales:

Herramienta Descripción Uso
Emulador (SNES9x, ZSNES) Para probar los cambios Ejecución de ROMs
Hex Editor (HxD, Hex Fiend) Edición directa del código Modificación de bytes
Tile Editor (YY-CHR, Tile Layer Pro) Edición de gráficos Modificar sprites y tiles
ROM expander Aumentar tamaño de ROM Para añadir contenido

Estructura de una ROM de SNES

Las ROMs de SNES tienen una estructura particular:

        +-----------------------+
        |       Cabecera        |  (512 bytes)
        +-----------------------+
        |    Código del juego  |  (Tamaño variable)
        +-----------------------+
        |      Gráficos        |  (Tamaño variable)
        +-----------------------+
        |        Música         |  (Tamaño variable)
        +-----------------------+
        |        Texto          |  (Tamaño variable)
        +-----------------------+
        |       Tablas          |  (Tamaño variable)
        +-----------------------+
        

Formato de archivo

Las ROMs pueden venir en varios formatos:

Edición Hexadecimal Básica

La edición hexadecimal es la base del ROM hacking. Permite modificar directamente los valores en la ROM.

Ejemplo: Cambiar vidas iniciales

Supongamos que queremos cambiar las vidas iniciales en Super Mario World de 5 a 10:

        1. Abre la ROM en un hex editor
        2. Busca la secuencia de bytes que representa las vidas iniciales
           (Para SMW es comúnmente en 0x7E0019)
        3. Cambia el valor de 05 a 0A (hexadecimal para 10)
        4. Guarda la ROM y prueba en el emulador
        

ADVERTENCIA: Siempre haz una copia de seguridad antes de editar.

Búsqueda de Datos en la ROM

Para encontrar datos específicos puedes usar estas técnicas:

Búsqueda de texto

        1. Conoce el texto que buscas (ej. "GAME OVER")
        2. Convierte cada carácter a su valor hexadecimal (tabla ASCII)
        3. Busca esa secuencia en el hex editor
        

Búsqueda de patrones gráficos

        1. Extrae los tiles gráficos con un tile editor
        2. Identifica el patrón hexadecimal de los tiles
        3. Busca ese patrón en la ROM
        

Modificación de Gráficos

Para cambiar sprites, fondos y otros elementos gráficos:

Proceso con YY-CHR

        1. Abre la ROM en YY-CHR
        2. Navega por los bloques gráficos
        3. Edita los tiles directamente
        4. Exporta los cambios a la ROM
        

Formatos gráficos comunes

Modificación de Paletas de Colores

Las paletas de SNES usan formato BGR555 (15-bit):

        Ejemplo de color en hex: 7FFF
        Binario: 0bbbbbgg gggrrrrr
        Donde:
        - bbbbb: 5 bits para azul (blue)
        - ggggg: 5 bits para verde (green)
        - rrrrr: 5 bits para rojo (red)
        

Herramientas para paletas

Expansión de ROM

Para añadir contenido nuevo a veces necesitas expandir la ROM:

        1. Usa un tool como Lunar Expand
        2. Selecciona la ROM y el nuevo tamaño
        3. Asegúrate de actualizar punteros relevantes
        4. Modifica el código para usar el nuevo espacio
        

NOTA: No todos los juegos soportan expansión fácilmente. Investiga antes.

Traducción de Juegos

Proceso básico para traducciones:

  1. Localizar tablas de texto
  2. Extraer el texto
  3. Traducir
  4. Reinsertar (puede requerir compresión)
  5. Ajustar punteros

Herramientas para traducción

Hacking con ASM (Avanzado)

Para cambios profundos necesitas modificar el código assembly:

Proceso básico

        1. Desensamblar la ROM (WLA-DX, bass)
        2. Localizar la rutina a modificar
        3. Editar el código ASM
        4. Reensamblar la ROM
        

Ejemplo de código 65816

        ; Ejemplo: Cambiar velocidad de movimiento
        LDA $7E0010   ; Carga velocidad actual
        CLC           ; Limpia carry
        ADC #$02      ; Añade 2 a la velocidad
        STA $7E0010   ; Guarda nueva velocidad
        RTS           ; Retorna de subrutina
        

Herramientas Avanzadas

Herramienta Propósito
Lunar Magic Editor de niveles para SMW
Geiger's SPC Tool Edición de música
Overworld Editor Mapas de mundo
Mesen-S Debugger avanzado

Técnicas de Debugging

Para encontrar y corregir errores:

Con emuladores

Con RAM viewers

Monitorea valores en memoria para entender cómo el juego almacena datos.

Recursos y Comunidades