Guía desde básico hasta avanzado para modificación de ROMs de Super Nintendo
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.
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 |
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) +-----------------------+
Las ROMs pueden venir en varios formatos:
La edición hexadecimal es la base del ROM hacking. Permite modificar directamente los valores en la ROM.
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.
Para encontrar datos específicos puedes usar estas técnicas:
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
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
Para cambiar sprites, fondos y otros elementos gráficos:
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
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)
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.
Proceso básico para traducciones:
Para cambios profundos necesitas modificar el código assembly:
1. Desensamblar la ROM (WLA-DX, bass) 2. Localizar la rutina a modificar 3. Editar el código ASM 4. Reensamblar la ROM
; 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
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 |
Para encontrar y corregir errores:
Monitorea valores en memoria para entender cómo el juego almacena datos.
IMPORTANTE: El ROM hacking debe hacerse solo con fines educativos o para modificar copias de juegos que ya poseas.
Buenas prácticas: