ROM hacking (abreviatura de Read-only memory hacking ) es el proceso de modificar una imagen ROM o un archivo ROM para alterar el contenido que contienen, generalmente de un videojuego para alterar los gráficos, el diálogo, los niveles, la jugabilidad y/u otros elementos del juego. Esto generalmente lo hacen los fanáticos de los videojuegos con inclinaciones técnicas para mejorar un juego antiguo de importancia, como una salida creativa o para hacer juegos nuevos no oficiales utilizando el motor del juego antiguo. Los ROM hacks rediseñan un juego para una jugabilidad completamente nueva y divertida manteniendo la mayoría de los elementos, si no todos, iguales, así como también desbloquean y/o reimplementan características que existían en el código del juego pero que no se utilizan en el juego.
El hackeo de ROM generalmente se logra mediante el uso de un editor hexadecimal (un programa para editar datos no textuales) y varias herramientas especializadas, como editores de mosaicos y herramientas específicas del juego que generalmente se usan para editar niveles, elementos y similares, aunque ocasionalmente se usan herramientas más avanzadas, como ensambladores y depuradores . Una vez listos, generalmente se distribuyen en Internet para que otros jueguen en un emulador o una consola de juegos. [1]
La traducción de fans (conocida como "piratería de traducción" dentro de la comunidad de piratería de ROM) es un tipo de piratería de ROM; también existen trucos anticensura que existen para restaurar un juego a su estado original, lo que a menudo se ve con juegos antiguos que fueron importados, ya que las políticas de contenido de los editores para videojuegos (sobre todo, las de Nintendo ) eran mucho más estrictas en los Estados Unidos que en Japón o Europa; así como aleatorizadores para ciertos juegos que mezclan las ubicaciones de las entidades. [2] 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 niveles de juego.
La mayoría de los grupos de hackers ofrecen espacio web para alojar hacks y capturas de pantalla (a veces solo alojan hacks de los miembros del grupo y alojan casi cualquier hack), un foro de mensajes y, a menudo, tienen un canal IRC . También hay muchas guías creadas por varios grupos de hackers que tienen como objetivo ayudar a otros a familiarizarse con el hackeo de ROM por primera vez, una de las cuales fue la legendaria "Biblia del hackeo de ROM" para la NES escrita a mediados y fines de la década de 1990. [3]
Uno de los sitios más populares dedicados al hackeo de ROM de juegos fueROMhacking.net, que se puso en línea por primera vez a fines de 2005, albergaba un repositorio de hacks, traducciones, utilidades, documentos y parches para muchos videojuegos conocidos y desconocidos desde la tercera generación hasta la séptima . Fue precedido por su predecesor inmediato, ROMhacking.com, un sitio similar orientado al hackeo de ROM que se lanzó en 2000 y se desconectó a fines de 2004. [4] El 1 de agosto de 2024, el personal del sitio anunció que ROMhacking.net pasaría a ser un sitio de noticias de solo lectura después de casi 20 años de alojamiento debido a varias razones fuera del control del sitio, y su antigua base de datos y archivos se archivarían en Internet Archive . Las nuevas presentaciones en el sitio también se cerraron permanentemente el mismo día del anuncio, y todas las descargas permanecerán disponibles en el sitio hasta nuevo aviso. [5] [6] [7] [8]
Al haber sido creados por muchos programadores o equipos de programación diferentes, los datos ROM pueden ser muy diversos.
Un editor hexadecimal es una de las herramientas más fundamentales en el repertorio de cualquier hacker de ROM. Los editores hexadecimales se utilizan generalmente para editar texto y otros datos cuya estructura se conoce (por ejemplo, propiedades de elementos) y para hackear ensamblajes.
La edición de texto es una de las formas más básicas de hacking. Muchos juegos no almacenan su texto en formato ASCII y, debido a esto, se han desarrollado algunos editores hexadecimales especializados, a los que se les puede indicar 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 denomina archivo de "tabla". Otros juegos utilizan técnicas de compresión de texto simples (como la codificación de pares de bytes , también llamada codificación de mosaico dual o DTE, en la que ciertas combinaciones de dos o más letras se codifican como un byte) que un editor hexadecimal equipado adecuadamente puede facilitar la edición.
Un editor hexadecimal es la herramienta ideal para editar elementos como las propiedades de personajes o elementos si se conoce la estructura y la ubicación de estos datos y no existe un editor específico para el juego que pueda editar esta información. Algunos hackers intrépidos 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).
Otra habilidad básica de hacking es el hackeo de gráficos, que consiste en cambiar la apariencia de los entornos, personajes, fuentes y demás elementos del juego. 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 organizan en la pantalla para producir el resultado deseado. También es posible editar estos mosaicos con un editor hexadecimal, pero generalmente se logra con un editor de mosaicos (como Tile Layer o Tile Molester), que puede mostrar gráficamente los datos de la ROM, así como encontrar y editar mosaicos.
Los hacks gráficos pueden variar desde ediciones simples (como darle a Mario un afro o a Luigi un palo de golf ) hasta "portar" personajes de un juego a otro (como crear sprites pixelados "de estilo retro" de Pokémon de generaciones posteriores para usar en juegos de Pokémon de Generación IV [9] ), hasta cambios temáticos completos (generalmente con cambios de paleta acompañantes; ver más abajo).
Un hackeo gráfico más sofisticado implica cambiar más que solo los mosaicos y los colores, sino también la forma en que se disponen los mosaicos o se generan los grupos de mosaicos, lo que brinda más flexibilidad y control sobre la apariencia final. Esto se logra mediante la edición hexadecimal o una herramienta especializada (ya sea para un juego específico o un sistema específico).
Algunos ejemplos de hacks gráficos incluyen el incompleto Pokémon Torzach , un hack de Pokémon FireRed que intenta agregar una nueva generación de Pokémon y fichas al juego, [10] y Super Mario Land 2 DX: 6 Golden Coins , una versión mejorada del juego original que agregó, entre otros, soporte a todo color (el juego original solo admitía escala de grises) y correcciones a problemas de parpadeo de pantalla del juego original. [11]
Otra forma común de piratería es la piratería de paletas , donde los valores de color se modifican para cambiar los colores que ve un jugador en el juego (esto a menudo va de la mano con la piratería de gráficos); los valores de paleta se almacenan comúnmente en Hex . Esto es bastante fácil para los juegos de NES , cuyos gráficos usan un conjunto predefinido de colores entre los cuales un juego selecciona (usando una paleta de colores basada en YIQ ); la piratería de paletas en este caso implica cambiar cuáles de esos colores se seleccionan. El asunto es un poco más complicado con los juegos de Super NES , así como con los juegos para otros sistemas (que incluyen los juegos de Sega Mega Drive/Genesis ), que almacenan valores de color RGB absolutos . Los editores de paletas suelen ser simples y, a menudo, lo son con editores de niveles o editores de gráficos específicos del juego.
La edición de niveles, una de las formas más populares de piratear ROM, 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 ). Las ediciones de niveles se pueden realizar 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 un extenso pirateo de gráficos, el juego puede adoptar un aspecto y una sensación muy diferentes.
Un componente central de muchos hacks (especialmente de los videojuegos de rol ) es la edición de datos como las propiedades de los personajes, los objetos y los enemigos. Esto se suele hacer "a mano" (con un editor hexadecimal) si se conoce la ubicación y la 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 el funcionamiento de las armas, la fuerza de los enemigos o su forma de actuar, etc. Esto se puede hacer para que el juego sea más fácil o más difícil o para crear nuevos escenarios a los que el jugador deba enfrentarse.
La técnica de hacking más poderosa, y posiblemente la más difícil, es editar el código real del juego, un proceso llamado hacking ASM ("ASM" significa " ensamblaje ", refiriéndose al lenguaje de programación de bajo nivel que ejecuta la CPU). [1] No hay un patrón establecido para hackear ASM, ya que el código varía ampliamente de un juego a otro, pero la mayoría de los hackers ASM expertos usan un emulador equipado con un depurador o trazador incorporado, o ejecutan la ROM a través de un desensamblador , luego analizan el código y lo modifican 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 el hacking ASM dentro de los límites del hardware y el software de la plataforma de juego, desde alterar la IA enemiga hasta cambiar cómo se generan los gráficos. Si los desarrolladores usaron un lenguaje tipificado , el hacker puede compilar su código para el juego en el mismo lenguaje si tiene acceso a un compilador adecuado. Un ejemplo de ello sería el uso de C para hackear juegos de Nintendo 64 , ya que MIPS - GCC puede compilar código para Nintendo 64. [12] [13]
Los hacks de música son relativamente raros en la mayoría de los hacks, debido a la amplia variedad de formas en que los juegos almacenan datos de música (de ahí la dificultad de localizar y modificar estos datos), así como las dificultades para componer música nueva (o portar música de otro juego). Como el hackeo de música es muy poco común, muchos hacks no tienen música portada/compuesta agregada. Existen excepciones, como los hacks más recientes de Super Mario World donde la música nueva puede tener nuevos instrumentos que no se encuentran en el juego original. Otros juegos que tienen el hackeo de música como parte de sus comunidades de investigación y hackeo son los juegos Mega Man de NES, Final Fantasy VI y los juegos Sonic the Hedgehog de Mega Drive (Genesis) .
Como muchos juegos de Game Boy Advance utilizan el motor M4A (informalmente llamado "Sappy Driver" y oficialmente conocido como "MusicPlayer2000" o MP2k) para la música, el programa SapTapper se puede utilizar para piratear los datos de música de Game Boy Advance. Se crearon varias otras utilidades para trabajar con el motor, como Sappy 2006. Otro ejemplo del mismo motor utilizado entre juegos es en Nintendo 64, donde la mayoría de los juegos utilizan el mismo formato; aunque con diferentes bancos de sonido. Se creó una utilidad conocida como N64 Midi Tool para editar las secuencias que utilizan la mayoría de los juegos de Nintendo 64, sin embargo, no cubre los títulos propios de N64 que utilizan un motor ligeramente diferente, como Super Mario 64 .
Varios juegos para Sega Mega Drive/Genesis [14] usaban un motor de sonido conocido comúnmente como "SMPS", que se ha ofrecido tanto en versiones de 68k como en versiones basadas en Z80 . [15] Este motor de sonido se usó predominantemente en una amplia variedad de juegos desarrollados en Japón para el sistema (incluidos los juegos propios) y algunos juegos proporcionaban versiones modificadas del motor de sonido adaptadas a un juego específico. Muchos piratas informáticos lo han investigado durante décadas. [16] Hoy en día, hay muchas herramientas disponibles [17] para alterar la música de los juegos que usaban el motor SMPS (especialmente los juegos de Sonic the Hedgehog ); muchos de ellos finalmente habían llegado a Steam Workshop . [18]
En términos generales, un hacker de ROM normalmente no puede añadir contenido a un juego, sino simplemente cambiar el contenido existente. Este límite se puede superar mediante la expansión de ROM , por la que se aumenta el tamaño total de la imagen de ROM, lo que deja espacio para más contenido y, a su vez, un juego más grande. La dificultad de 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 utilizado por el juego. Por ejemplo, si un mapeador permite 16 bancos de ROM y se utilizan todos, expandir la ROM más es imposible sin convertir de alguna manera el juego a otro mapeador, lo que podría ser fácil o extremadamente difícil. Por otro lado, expandir un juego de SNES (e incluso un juego de Mega Drive/Genesis) es (relativamente) sencillo. Para utilizar el espacio adicional, se deben modificar o reescribir partes del código del juego (ver Hackeo de ensamblaje más 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í son generalmente pequeñas, pero el espacio de memoria disponible a veces las supera en múltiplos de hasta 17.
Una vez que se completa un hack (o se considera que una versión incompleta es adecuada para un lanzamiento provisional), se publica en Internet para que otros puedan jugar. La forma generalmente aceptada de hacerlo es creando un parche no oficial (en formato IPS u otros) que se pueda aplicar a la ROM sin modificar. [1] Esto, y normalmente algún tipo de documentación, se coloca en un archivo y se sube a algún lugar. IPS es un formato para registrar las diferencias entre dos archivos binarios (en este caso, entre las ROM sin modificar y las hackeadas) y es adecuado para hacks de ROM. [19] IPS todavía se usa hoy en día para parches pequeños; sin embargo, a medida que las ROM se hicieron más grandes, este formato se volvió inútil, lo que llevó a la creación de bastantes formatos de archivo, como NINJA y PPF (también conocido como " formato de parche de PlayStation "). PPF todavía se usa hoy en día, particularmente para parchear archivos grandes como imágenes ISO de CD-ROM y juegos de Nintendo 64. La comunidad de hackers de ROM también ha desarrollado un nuevo formato de parche, UPS, diseñado para ser el sucesor de IPS y PPF. [20] Un formato de parcheo más reciente, el sistema de parcheo APS, también ha sido desarrollado por un hacker de ROM de Game Boy Advance. [21] El sistema APS es más eficiente en cuanto al espacio, es reversible y es más rápido que su predecesor. [22]
El objetivo principal de distribuir un hack en forma de parche es evitar los aspectos legales de distribuir imágenes ROM completas; el parche solo registra lo que ha cambiado en la ROM, por lo tanto, distribuirlo no suele distribuir partes del juego original. En este caso, los parches generalmente contenían cambios de código hechos por el usuario en el juego y no el código con derechos de autor del juego original, lo que habría eliminado cualquier problema de derechos de autor que pueda ocurrir con la distribución de parches no oficiales para juegos. [ cita requerida ] Un parche también suele ser drásticamente más pequeño que la imagen ROM completa (una ROM de NES puede funcionar en cualquier lugar de 8 KB a 2 MB; una ROM de Super NES puede funcionar de 256 KB a 6 MB; y las ROM de Mega Drive/Genesis pueden funcionar de 512 KB a 4 MB).
En un nuevo ejemplo de distribución legal, Sega lanzó un centro virtual basado en Steam para su colección anterior de juegos de Mega Drive/Genesis, llamado 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 contenido creado por el usuario a través del Steam Workshop, lo que permite oficialmente la distribución de ROM hacks de cualquiera de los juegos ofrecidos. [23]
Las ROM parcheadas se suelen reproducir en emuladores, sin embargo, es posible reproducir ROM parcheadas en el hardware original. [24] El cartucho de destino podría ser el cartucho original del que se extrajo la ROM inicial sin parchear (lo que generalmente implica reemplazar el chip de ROM original por uno nuevo), u otro cartucho compatible del mismo tipo, como cartuchos flash. Esto es particularmente popular para traducciones de fans , juegos caseros , prototipos, juegos para los que nunca se produjeron cartuchos ROM o para juegos que requieren una sincronización exacta u otros elementos del hardware original que no están disponibles en los emuladores.
La mayoría de los hackeos de ROM se realizan en juegos de NES y SNES (incluidos los juegos de Sega Mega Drive/Genesis hasta cierto punto), ya que dichos 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 hackear, así como los juegos para PlayStation en menor medida. Sin embargo, los juegos destinados a consolas más recientes no están exentos de hackeos, y como las computadoras se han vuelto más rápidas con el tiempo y se han escrito más programas y utilidades, han surgido más hackeos para PlayStation, Nintendo 64 y Nintendo DS.
De estos, los juegos populares para jugar son juegos populares para hackear; se han lanzado muchos hacks de juegos de la serie Sonic the Hedgehog , la serie Mario (incluyendo 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 , la serie Mega Man , la serie Fire Emblem , EarthBound , Super Metroid y muchos otros.
Un juego arcade hackeado notable fue Street Fighter II: Rainbow Edition , que ofrecía una mayor velocidad de juego y nuevos movimientos especiales. El éxito de este juego impulsó a Capcom a lanzar Street Fighter II: Hyper Fighting como respuesta oficial.
La revista Your Sinclair publicó una columna mensual llamada "Program Pitstop". Esta se centraba principalmente en trucos para juegos, pero también incluía una impresora de mapas de niveles [25] para el Gauntlet original , así como un editor de niveles completo [26] para el mismo juego.