ROM hacking

De Wikipedia, la enciclopedia libre
(Redirigido desde «Romhacking»)
Ir a la navegación Ir a la búsqueda

Se entiende por ROM hacking o ROM hack, al proceso de alteración de la imagen o volcado del soporte original de un videojuego o programa (por ejemplo, la memoria ROM de un cartucho o circuito integrado, o la superficie de un disco óptico --CD-ROM, DVD-ROM o BR-ROM--, generalmente estructurada según el sistema de archivos estándar ISO 9660). Dicho proceso puede tener por objetivos tanto la corrección de fallas o modificación, a veces con fines críticos, creativos o satíricos, de ciertos detalles o aspectos del juego, la traducción, o incluso la creación de nuevos juegos basándose en la mecánica, estructura y el formato de otro original; siendo quizá la traducción la tarea más frecuente, valorada y de mayor aplicación práctica.

El término proviene de la combinación de dos conceptos: ROM y Hacking. La ROM es un acrónimo de la expresión inglesa read only memory, traducida como memoria de sólo lectura, que, por lo general se refiere a los chips no modificables, programados y ensamblados de fábrica en la mayoría de circuitos integrados y cartuchos insertables en ranuras de expansión de computadoras. Estos, además de controladores o drivers, contienen y permiten la ejecución de juegos y programas de aplicación en ordenadores personales antiguos, o microordenadores, y en muchas videoconsolas; en el mundo de la emulación y el ROM hacking, el término se aplica comúnmente, por extensión, a las lecturas o volcados (en inglés dumping) que los aficionados a estos juegos y plataformas antiguas han ido realizando, con ayuda del instrumental adecuado, a los soportes de memoria secundaria o almacenamiento de datos, tales como los discos duros, de los ordenadores modernos, en forma de archivos o imágenes ROM. El hacking, hack, o hackeo, se refiere al arte informático de construir y solucionar problemas que atenten contra la eficacia o vulnerabilidad de un sistema o aplicación o limiten su capacidad, así como a las pequeñas modificaciones hechas a estos para mejorar, modificar o ampliar su funcionamiento. En otras palabras, ROM hacking es el arte de modificar y perfeccionar el funcionamiento de imágenes ROM, o de cualquier soporte o formato cuyo contenido sea el de un programa o un juego, como la imagen ISO de un disco óptico o CD/DVD-ROM, la imagen de cinta secuencial (.TAP, .TZX...) de un casete o cinta magnética, la imagen de disco (.IMG ó .DSK) de un disco flexible o el propio archivo ejecutable (.EXE, .COM, .bin o .SCR) o módulo (.DAT, .PAK, etc.) de un programa, directamente desde su código en bruto, ya compilado, en el producto comercial final, sin disponer del código fuente; o lo que es lo mismo, desde su archivo binario o código máquina.

Herramientas necesarias[editar]

El individuo que se dedica a realizar tal labor, ya sea de forma sistemática, u ocasional, como aficionado, se denomina Rom hacker.

Para poder desempeñar su labor de una manera eficaz y precisa, el ROM hacker suele acompañarse de herramientas varias:

  • Un editor hexadecimal, que da acceso a todos los datos de la ROM o cualquier archivo a partir de sus bytes, convenientemente señalizados mediante sus códigos ASCII, generalmente en números hexadecimales (por ser los más económicos desde el punto de vista de simetría, espacio y representación, capaz de representar 8 bits, 1 byte (256 caracteres posibles), utilizando sólo dos dígitos, "FF"). Algunos de los editores más conocidos son el thingy (y su versión gráfica thingy32), o el hex editor.
  • Un editor de tiles o de sprites, para poder editar ciertos gráficos necesarios, como la tipografía y símbolos de texto especiales, en las traducciones. Esto es fundamental para incluir, por ejemplo, la eñe, acentos, o ce con cedilla, en lenguas como el castellano, el portugués, y otras lenguas romances; los umlaut, en las lenguas germánicas; o sistemas gráficos alternativos, tanto silábicos ó ideográficos, en idiomas como el japonés, el coreano o el chino, o alfabéticos, en idiomas como el griego, el ruso (y otras lenguas eslavas) o el árabe.
  • Un buscador de cadenas de texto, que permita localizar la posición exacta de los textos, así como deducir su tabla de caracteres o códigos, en caso de que la codificación del texto no sea estándar (a diferencia de como ocurre en los IBM PC compatibles y en muchas computadoras con el sistema código ASCII), mediante la búsqueda de palabras que aparecen durante el programa o el juego, en modo búsqueda relativa, restando las posiciones de cada letra en el alfabeto en función de su distancia a partir de la letra "a". Esta función suele ser incluida en muchos de los editores hexadecimales especializados modernos.
  • Opcionalmente, una herramienta depuradora, que permita la interpretación y ensamblaje, mediante instrucciones de ensamblador, del código de máquina del juego, específico de la arquitectura de la computadora madre. Esta función puede realizarse manualmente, manipulando los bytes del código mediante el propio editor hexadecimal, si se dispone de la conveniente tabla de códigos e instrucciones de ensamblador del procesador de la computadora madre (a cada código hexadecimal de 1 o más bytes, corresponde una instrucción específica del procesador de la computadora madre, con sus parámetros). Esta técnica manual fue la empleada originalmente, para la programación de los primeros ordenadores, cuando aún no se disponía de las herramientas ensambladoras correspondientes. La herramienta depuradora permite, sin embargo, realizar un seguimiento, instrucción por instrucción, en orden, de cualquier parte del código del programa o juego, y observar el comportamiento efectuado.
  • Herramientas especializadas, preprogramadas y compiladas por otros Rom hackers, como herramientas específicas de ciertos juegos, para editar niveles, objetos, características de enemigos o personajes, etc. Algo muy recurrente en juegos de rol o estrategia o, en el caso de los niveles, en los plataformas.
  • Finalmente, un buen programa emulador del sistema específico del formato al que pertenece el programa o juego, para poder comprobar los cambios efectuados sobre el mismo, y apuntar posibles errores o despistes que hayan podido escaparse, para su corrección futura.

Clasificación por videojuegos[editar]

En realidad, muchas veces la profundidad del nivel de hacking se diferencia por la ROM base utilizada, ya que éstas diferencian enormemente la capacidad de personalización del juego. A pesar de ello, los juegos tienen una tendencia general a ser cada vez más complejos y más difíciles de modificar, acercándose más al desarrollo de videojuegos que al ROM Hacking en sí. Por otro lado, el proceso de ingeniería inversa de cada ROM es muy variado y depende principalmente de la consola, y también en parte de la empresa creadora y la distribuidora. Mientras que, en una misma consola, existen muchísimos tipos de archivos que son genéricos y comunes a muchos juegos de la consola, existen también formatos que pueden llegar a ser exclusivos de un solo videojuego. No obstante, suelen usarse casi siempre métodos similares, explicados más arriba en las herramientas básicas de un ROM hacker, y valiéndose de la información de software y hardware que muchas páginas ofrecen sobre varias consolas.

Muy popular es el Poke Hacking, edición de ROMs de Pokémon, cuya capacidad de admitir nuevos datos es enorme, actualmente las páginas más conocidas para esto son The PokéCommunity y Whack a Hack Foro!.

Enlaces externos[editar]

  1. Data Crystal Wiki, la wiki dedicada al ROM hacking (en inglés).
  2. RHWiki, una wiki alemana dedicada al ROM hacking (en alemán).