# Hackeo de ROM

El hackeo de ROM es el proceso de modificar una imagen de la ROM o un archivo de la ROM de un videojuego para alterar los gráficos, los diálogos, los niveles, la jugabilidad y otros elementos del juego. Esto lo suelen hacer los aficionados a los videojuegos con inclinación técnica para dar nueva vida a un juego antiguo apreciado, como salida creativa, o para hacer esencialmente nuevos juegos no oficiales utilizando el motor del juego antiguo.
El hackeo de ROM se realiza generalmente mediante el uso de un editor hexadecimal (un programa para editar datos no textuales) y varias herramientas especializadas como editores de baldosas, y herramientas específicas del juego que se utilizan generalmente para editar niveles, objetos y similares, aunque ocasionalmente se utilizan herramientas más avanzadas como ensambladores y depuradores. Una vez listos, suelen distribuirse en Internet para que otros puedan jugar en un emulador o una consola de juegos.
La traducción por parte de los fans (conocida como "translation hacking" dentro de la comunidad de hackers de ROMs) es un tipo de hackeo de ROMs; también existen hacks anticensura que restauran un juego a su estado original, lo que se ve a menudo con juegos antiguos que fueron importados, ya que las políticas de contenido de los editores para los videojuegos (más notablemente, la de Nintendo) eran mucho más estrictas en los Estados Unidos que en Japón o Europa; también hay aleatorizadores que barajan la colocación de entidades. Aunque gran parte del método se aplica a ambos tipos de piratería, este artículo se centra en la "piratería creativa", como la edición de los niveles del juego.

## Comunidades

La mayoría de los grupos de hacking ofrecen espacio web para alojar hacks y capturas de pantalla (a veces sólo alojan hacks de los miembros del grupo, a veces alojan casi cualquier hack), un tablón de anuncios y a menudo tienen un canal IRC.

## Métodos

Al haber sido creados por muchos programadores o equipos de programación diferentes, los datos de la ROM pueden ser muy diversos.

### Edición hexadecimal

Un editor hexadecimal es una de las herramientas más fundamentales en el repertorio de cualquier hacker de ROM. Los editores hexadecimales suelen utilizarse para editar texto y para editar otros datos cuya estructura se conoce (por ejemplo, las propiedades de los elementos), y para el pirateo de ensamblajes.
La edición de texto es una de las formas más básicas de hacking. Muchos juegos no almacenan su texto en forma ASCII, y debido a esto, se han desarrollado algunos editores hexadecimales especializados, a los que se les puede decir qué valores de bytes corresponden a qué letra(s) del alfabeto, para facilitar la edición de texto; un archivo que define estas relaciones byte=letra se llama archivo "tabla". Otros juegos utilizan técnicas sencillas de compresión de texto (como la codificación por pares de bytes, también llamada codificación de doble mosaico o DTE, en la que ciertas combinaciones de dos o más letras se codifican como un solo byte) que un editor hexadecimal convenientemente equipado puede facilitar la edición.
Un editor hexadecimal es la herramienta preferida para editar cosas como las propiedades de los personajes/objetos, si se conoce la estructura y la ubicación de estos datos y no hay un editor específico para el juego que pueda editar esta información. Algunos intrépidos hackers también realizan la edición de niveles con un editor hexadecimal, pero esto es extremadamente difícil (excepto en juegos cuyo formato de almacenamiento de niveles se asemeja mucho a cómo se presenta en un editor hexadecimal).

### Edición de gráficos

Otra habilidad básica de hackeo es el hackeo de gráficos, que consiste en cambiar la apariencia de los entornos del juego, los personajes, las fuentes u otras cosas similares. El formato de los datos gráficos varía de una consola a otra, pero la mayoría de las primeras (NES, Super NES, Game Boy, etc.) almacenan los gráficos en mosaicos, que son unidades de datos de 8x8 píxeles, que se disponen en la pantalla para producir el resultado deseado. La edición de estos tiles también es posible con un editor hexadecimal, pero generalmente se realiza con un editor de tiles (como Tile Layer o Tile Molester), que puede mostrar los datos de la ROM de forma gráfica, así como encontrar y editar los tiles.
Los hacks de gráficos pueden ir desde simples ediciones (como dar a Luigi un palo de golf, o hacer sprites pixelados para la última generación de Pokemon) hasta "portar" personajes de un juego a otro, pasando por cambios temáticos completos (normalmente con cambios en la paleta; ver más abajo).
El hackeo de gráficos más sofisticado implica cambiar algo más que los azulejos y los colores, sino también la forma en que los azulejos están dispuestos, o los grupos de azulejos generados, dando más flexibilidad y control sobre la apariencia final. Esto se consigue mediante la edición de hexágonos o una herramienta especializada (ya sea para el juego específico o para un sistema concreto). Un buen ejemplo de hack gráfico es el incompleto Pokémon Torzach, un hack que intentaba añadir toda una nueva generación de Pokémon y fichas al juego. El hack ha sido descontinuado desde entonces, pero todavía sirve como un buen ejemplo de lo que se puede lograr con las herramientas disponibles.

### Edición de paleta

Otra forma común de pirateo es el palette hacking donde los valores de color se modifican para cambiar los colores que un jugador ve en el juego (esto a menudo va de la mano con el pirateo de gráficos); Los valores de la paleta se almacenan comúnmente en hexadecimal. Esto es bastante fácil para los juegos de NES, cuyos gráficos utilizan un conjunto predefinido de colores entre los que selecciona un juego; La piratería de paleta en este caso implica cambiar cuál de esos colores se selecciona. El asunto es un poco más complicado con los juegos Super NES y los juegos para otros sistemas, que almacenan valores de color RGB absolutos. Los editores de paleta suelen ser simples y, a menudo, se encuentran con editores de nivel o editores de gráficos específicos del juego.

### Edición de nivel

Una de las formas más populares de pirateo de ROM, la edición de niveles implica modificar o rediseñar los niveles o mapas de un juego. Esto se hace casi exclusivamente con un editor especialmente diseñado para un juego en particular (llamado editor de niveles). Se pueden realizar ediciones de nivel para hacer que el juego sea más desafiante, para alterar el flujo de la trama del juego o simplemente para darle algo nuevo a un juego antiguo. Combinado con una extensa piratería de gráficos, el juego puede adquirir un aspecto y una sensación muy diferentes.

### Edición de datos

Un componente central de muchos trucos (especialmente de los videojuegos de rol) es la edición de datos como el personaje, el elemento y las propiedades del enemigo. Esto generalmente se hace "a mano" (con un editor hexadecimal) si se conoce la ubicación y estructura de los datos, o con un editor específico del juego que tenga esta funcionalidad. A través de esto, un hacker puede alterar cómo funcionan las armas, qué tan fuertes son los enemigos o cómo actúan, etc. Esto se puede hacer para hacer el juego más fácil o más difícil, o para crear nuevos escenarios para que el jugador los enfrente.

### Hackeo de ensamblajes

La técnica de pirateo más poderosa, y posiblemente la más difícil, es editar el código real del juego, un proceso llamado pirateo ASM ("ASM" significa "ensamblaje", refiriéndose al tipo de lenguaje de programación utilizado para los primeros videojuegos). No hay un patrón establecido para la piratería ASM, ya que el código varía mucho de un juego a otro, pero la mayoría de los piratas informáticos expertos en ASM utilizan un emulador equipado con un depurador o rastreador incorporado, o ejecutan la ROM a través de un desensamblador y luego analizan el código. y modificarlo usando un editor hexadecimal o ensamblador según sus necesidades. Si bien es bastante desafiante en comparación con los métodos relativamente simples enumerados anteriormente, todo es posible con la piratería ASM (por supuesto, dentro de los límites del hardware/software de la plataforma de juego), desde alterar la IA del enemigo hasta cambiar la forma en que se generan los gráficos. (Por supuesto, las posibilidades siguen estando limitadas por la capacidad del pirata informático para comprender y modificar el código existente).
Si los desarrolladores usaron un lenguaje escrito, el hacker puede compilar su propio código para el juego en el mismo idioma si tiene acceso a un compilador adecuado. Un ejemplo sería usar C para piratear juegos de Nintendo 64, ya que MIPS-GCC puede compilar código para Nintendo 64.

### Hackeo de música

Los trucos musicales son relativamente raros, debido a la amplia variedad de formas en que los juegos almacenan datos musicales (de ahí la dificultad para localizar y modificar estos datos) y las dificultades para componer música nueva (o portar música de otro juego). Dado que el descifrado de música es muy poco común, muchos hacks no tienen música portada / compuesta agregada. Sin embargo, como muchos juegos de Game Boy Advance usan el motor M4A (también llamado "Sappy Driver") para la música, el programa SapTapper se puede usar para hackear datos musicales de Game Boy Advance. Se crearon varias otras utilidades para trabajar con el motor, como Sappy 2006.
Otra instancia del mismo motor que se usa entre juegos es la Nintendo 64, en la que la mayoría de los juegos usan el mismo formato; aunque utilizan diferentes bancos de sonido. Se creó una utilidad conocida como N64 Midi Tool para editar las secuencias que usan la mayoría de los juegos de Nintendo 64, aunque no cubre los títulos propios de N64 que usan un motor ligeramente diferente, como Super Mario 64. Varios juegos de Mega Drive utilizan un motor de sonido conocido extraoficialmente como "SMPS", que ha sido investigado durante décadas por muchos piratas informáticos. A día de hoy, existen varias herramientas para alterar la música de los juegos que usan el motor SMPS (en particular los juegos de Sonic the Hedgehog), y muchos de ellos llegaron al Steam Workshop.

### Expansión de ROM

En términos generales, un pirata informático de ROM normalmente no puede agregar contenido a un juego, sino simplemente cambiar el contenido existente. Este límite se puede superar mediante la expansión de la ROM, mediante la cual se incrementa el tamaño total de la imagen de la ROM, dejando espacio para más contenido y, a su vez, un juego más grande. La dificultad para hacer esto varía según el sistema para el que se creó el juego. Por ejemplo, expandir una ROM de NES puede ser difícil o incluso imposible debido al mapeador que usa el juego. Por ejemplo, si un mapeador permite 16 bancos de ROM y se utilizan todos, es imposible expandir más la ROM sin convertir de alguna manera el juego en otro mapeador, lo que podría ser fácil o extremadamente difícil. Por otro lado, expandir un juego de SNES es (relativamente) sencillo. Para utilizar el espacio adicional, partes del código del juego deben ser modificadas o reescritas (ver Hack de ensamblajes arriba) para que el juego sepa dónde buscar. Otro tipo de expansión de ROM que es bastante fácil son las ROM de Game Boy Advance. Las ROM en sí mismas son generalmente pequeñas, pero el espacio de memoria disponible a veces lo excede en múltiplos de hasta 17.

## Distribución

Una vez que se completa un truco (o una versión incompleta se considera adecuada para una versión provisional) se lanza a Internet para que otros la jueguen. La forma generalmente aceptada de hacer esto es haciendo un parche no oficial (en formato IPS u otros) que se pueda aplicar a la ROM no modificada. Esto, y generalmente algún tipo de documentación, se coloca en un archivo de almacenamiento y se carga en algún lugar. IPS es un formato para registrar las diferencias entre dos archivos binarios (en este caso, entre las ROM no modificadas y pirateadas) y es adecuado para hacks de ROM. IPS todavía se usa hoy para pequeños parches; sin embargo, a medida que las ROM aumentaron de tamaño, este formato se volvió inútil, lo que llevó a la creación de bastantes formatos de archivo, como NINJA y PPF ("Formato de parche de PlayStation"). PPF todavía se usa hoy en día, particularmente para parchear archivos grandes como imágenes de CD ISO y juegos de Nintendo 64. La comunidad de piratería ROM también ha desarrollado un nuevo formato de parche, UPS, diseñado para ser el sucesor de IPS y PPF. Un formato de parcheo más reciente, el sistema de parcheo APS, también ha sido desarrollado por un hacker dedicado a la ROM de Game Boy Advance. El sistema APS ocupa más espacio, es reversible y más rápido que su predecesor.
El propósito de distribuir un truco en forma de parche es evitar los aspectos legales de distribuir imágenes ROM completas; el parche registra solo lo que ha cambiado en la ROM, por lo que distribuirlo no suele distribuir partes del juego original. Un parche también suele ser drásticamente más pequeño que la imagen de la ROM completa (una ROM de NES puede ejecutarse en cualquier lugar de 8 KB a 2 MB; una ROM de Super NES puede ejecutar de 256 kB a 6 MB).
En un ejemplo novedoso de distribución legal, Sega lanzó un centro virtual basado en Steam para su colección anterior de juegos Mega Drive/Genesis, titulado Sega Mega Drive Classics Hub. El Hub, además de permitir a los jugadores jugar versiones emuladas de estos juegos más antiguos, aprovecha el soporte de Steam para el contenido creado por el usuario a través de Steam Workshop, permitiendo oficialmente la distribución de hacks de ROM de cualquiera de los juegos ofrecidos.

## Uso

Las ROM parcheadas a menudo se reproducen en emuladores, sin embargo, también es posible reproducir ROM parcheadas en el hardware original. El cartucho de destino podría ser el cartucho original del que se extrajo la ROM inicial sin parche u otro cartucho compatible del mismo tipo. Esto es particularmente popular para las traducciones de los fanáticos, los juegos caseros, los prototipos u otros juegos para los que nunca se produjeron cartuchos originales, o para los juegos que requieren una sincronización exacta u otros elementos del hardware original que no están disponibles en los emuladores.

## Sistemas y juegos

La mayor parte del hackeo de ROM se realiza en juegos de NES, SNES y Sega Genesis, ya que estos juegos son pequeños y simples en comparación con los juegos de consolas más avanzadas como Nintendo 64 o Nintendo DS. Los juegos para Game Boy, Game Boy Color y Game Boy Advance también son populares para la piratería, así como los juegos para PlayStation en menor medida. Sin embargo, los juegos destinados a consolas más recientes no están exentos de piratería, ya que las computadoras se han vuelto más rápidas y se han escrito más programas y utilidades, han surgido más hacks de PlayStation, Nintendo 64 y Nintendo DS.
De estos, los juegos populares para jugar son los juegos populares para piratear; Se han lanzado muchos trucos de juegos de la serie Sonic the Hedgehog, la serie Super Mario (incluidos Mario Bros., Super Mario Bros., Super Mario Bros. 2, Super Mario Bros. 3, Super Mario Land, Super Mario Land 2: 6 Golden Coins, Super Mario 64 y Super Mario World), la serie Mario Kart (sobre todo Super Mario Kart, Mario Kart Wii, Mario Kart 7 y Mario Kart DS), la serie Pokémon, Chip's Challenge, Castlevania, Final Fantasy, The Legend of Zelda, juegos de la serie Mega Man, Fire Emblem, EarthBound, Super Metroid y muchos otros.
Un notable juego de arcade pirateado fue Street Fighter II: Rainbow Edition, que presentaba una mayor velocidad de juego y nuevos movimientos especiales. El éxito de este juego llevó a Capcom a lanzar Street Fighter II: Hyper Fighting como respuesta oficial.
Su revista Sinclair publicó una columna mensual llamada "Program Pitstop". Esto se centró principalmente en trucos para juegos, pero también incluyó una impresora de mapas de nivel para el Gauntlet original, así como un editor de nivel completo para el mismo juego.