Registrarse

Manual ROM Hacker GBA

Inferno

Personer
En esta ocasión no os traigo un tutorial ordinario, sino que vengo con una lista de conceptos y definiciones, así como la terminología de las diferentes áreas y herramientas pertenecientes al ROM Hacking GBA. El propósito principal es que los más nuevos se puedan familiarizar con este mundo de una forma más rápida, pero eso no impide que puedas llegar a desconocer alguno de los términos y lo aprendas aquí.

Índice:
  • Conceptos generales
    [*]Áreas dentro del RH
    [*]Principales herramientas


CONCEPTOS GENERALES

-Conceptos previos:
  • Emulador: Software que permite ejecutar programas en una plataforma diferente de aquella para la cual fueron escritos originalmente.

  • ROM: Memoria de solo lectura ("Read Only Memory"). Se trata del archivo que contiene los datos del juego en forma hexadecimal y, como su nombre indica, no podrá ser manipulada mientras esta se ejecuta.

  • RAM: Memoria de acceso aleatoria ("Random Access Memory"). En ella se almacenan los datos que son modificados a medida que jugamos el ROM.

  • VRAM: Memoria gráfica de acceso aleatorio ("Video Random Access Memory"). Tiene la misma función que la RAM, pero esta es exclusiva para funciones gráficas.

  • ROM virgen: Aquella ROM que no ha sido manipulada ni usada, también llamada ROM limpia.

  • ROM con MUGS: Se le dice a la ROM que posee una introducción que dura varios segundos donde se puede leer "Mugs", por lo general corrupta e invalida para Rom Hackear. (Click)

  • ROM expandida: ROM que pesa más de 16MB's, lo que indica que tiene más capacidad de almacenamiento.

  • ROM base: La ROM sobre la que trabajas, puede ser una ROM limpia o una que alguien ya ha modificado añadiendo algunas características, sin llegar a corromper la ROM, con la finalidad de ahorrar tiempo.

  • Parche: Archivo donde se encuentran los datos de una ROM pero de forma comprimida, al aplicarlo sobre una ROM virgen sobrescribirá los datos de esta. Las ROM bases en su mayoría vienen en forma de parche.

  • Binario: Sistema numérico que trabaja solamente con dos dígitos, el 1 y el 0.

  • Decimal: Sistema numérico que trabaja con 10 dígitos: El 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Es el que usamos en el día a día.

  • Hexadecimal: Sistema numérico que consta de 16 dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Es el sistema numérico por excelencia del ROM Hacking.

  • Herramienta: Programa informático que nos facilita la tarea de modificar nuestras ROM's.

-Términos gráficos:
  • Píxel: La menor unidad de medida con la que se miden una imagen digital. Las imágenes se forman como una sucesión de píxeles.

  • Paleta: Conjunto de colores y tonalidades que una imagen posee. Todos los colores que contiene la imagen. (Click)

  • Indexar: Limitar los colores de una paleta a la compatibilidad y capacidad de lectura de una plataforma, en nuestro caso GBA.

  • Tile: Gráfico de un tamaño de 8x8 píxeles. El conjunto de tiles crearan la mayor parte de los gráficos de nuestra ROM. (Click)

  • Bloque: Gráfico de un tamaño de 16x16 píxeles. Un bloque está compuesto por 4 tiles. (Click)

  • Tileset: Lámina compuesta por tiles. Aquí es donde deberemos colocar nuestros tiles para luego ser insertados en la ROM a través de alguna herramienta como Advance Map. (Click)

  • Mapa: Conjunto de bloques que, colocados de una forma correcta, crean un gráfico homogéneo sobre el cual se proyectaran nuestro personajes al ejecutar la ROM. Por así decirlo los mapas serán el escenario de nuestro juego.

  • Worldmap: O mapamundi, se trata del mapa de la región, contiene las rutas, los pueblos las ciudades...

  • Sprite: Gráfico del juego de una medida de 64x64 píxeles y que está formado por una paleta de 15 colores + 1 de fondo, este último hace de transparencia y no podrá ser usado para pintar nuestro personaje o Pokémon. (Click)

  • Backsprite: Sigue las características de un sprite normal, pero este término se refiere a la vista de espaldas de un sprite, es decir, a como veríamos el sprite se estuviésemos detrás de él. (Click)

  • Mugshot: Se puede definir como el retrato de cintura para arriba de un personaje de nuestro juego. El tamaño estándar es de 64x64 píxeles, pero con los conocimientos actuales se pueden llegar a insertar de 80x80 píxeles. Tienen una paleta de colores de 15 + 1 transparente. (Click)

  • Mini/Overworld/NPC: Son la representación en miniatura de personajes, pokémon y objetos. Se colocan en los mapas y cada mini puede hacer una serie de movimientos. En el caso del protagonista será el mini que controles con el teclado. (Click)

  • Background: El fondo o escenario de una imagen de la ROM. (Click)

  • Battle Background: Es el fondo o escenario que ves al entrar y durante una batalla Pokémon. (Click)

  • Redimensionar: Acción de agrandar o encoger una imagen para lograr su inserción en nuestra ROM.

-Términos del scripting:
  • Flag: Podríamos compararlas con interruptores, los cuales pueden estar o bien apagados (valor 0, flag desactivada) o bien encendidos (valor 1, flag activada). Devuelven un valor (0 o 1) según su estado.
    Existen una serie de flags especiales que no solo funcionan como interruptores, sino que tienen una función específica extra, por ejemplo la flag 0x828 que en Fire Red activa el Menú Pokémon, estás no podrán usarse como las comunes. Las flags seguras de usar van desde la 200 a la 2FF (Según el usuario karatekid552).

  • Variable: Las variables, a diferencia de las flags, almacenan valores, valores que pueden ir desde el 0 al FFFF (65535 en decimal). Son usadas para el trascurso de eventos en nuestro juego y para almacenar información.
    Las variables seguras de usar van desde la 4011 a la 40FF (Según el usuario karatekid552).

  • Comando: Palabra o palabras que tienen asignadas una función interna dentro de un programa. Existe una gran variedad de comandos y cada uno tiene su función específica. (Click)

  • Script: Conjunto de comandos e instrucciones que, conectados de una forma correcta, permiten realizar la acción deseada. (Click)

  • Evento: Secuencia de scripts que, de algún modo, están enlazados entre si creando el efecto de una escena o cinemática.

-Términos edición hexadecimal:
  • Bit: Es la unidad mínima en informática, se corresponde con 1 dígito binario, es decir, sus valores pueden ser 0 o 1.

  • Byte: Es un conjunto de 8 bits ( 8 dígitos binarios). Aunque lo normal es verlo en forma de 2 dígitos hexadecimales en vez de 8 binarios. Ejemplos de bytes podrían ser: AF, 7C, 58...

  • Halfword: Conjunto de 16 bits, es decir, 2 bytes. Un ejemplo de Halfword podría ser:F03D (formada por los bytes F0 y 3D).

  • Word: Conjunto de 32 bits o, lo que es lo mismo, 4 bytes. Un ejemplo de word sería: 0C42F2AA (formada por 2 halfwords 0C42 y F2AA, que a su vez están formadas por 2 bytes cada una: 0C, 42, F2, AA).

  • Offset: Dirección de un byte dentro de la ROM. A través de estos podemos indicar o comprobar donde se encuentra un elemento de la ROM, como por ejemplo una sprite o un script.

  • Permutar: Permutar consiste en colocar al revés los bytes de un offset. Si por ejemplo tenemos el offset 0x2468AC y lo permutamos quedaría algo así: AC 68 24 > AC6824.

  • Puntero: Conjunto de datos que encontramos en la ROM y nos indican la dirección, el offset, de alguna cosa específica. Está formado por 4 bytes siendo, en la mayoría de los casos, los 2 últimos 08 (dígitos que nos indican que estamos trabajando con la ROM). Se dice que nos llevan a un offset porque, si haces la permutación del puntero obtenemos el offset.

  • Repuntear: Acción de cambiar un puntero de lugar. Este proceso se llevará a cabo siempre y cuando lo que queramos insertar ocupe más espacio que lo que traía la ROM por defecto.

  • Tabla: Una tabla es como un conjunto de punteros que, una vez permutados y convertidos a offsets, nos dará las direcciones en la ROM de alguna parte específica de esta. Por ejemplo la tabla que contiene la información de los movimientos está formada por una serie de punteros, los cuales dirigirán a una parte específica del tema central de la tabla. (Click)

  • Header: "Cabecera" en español. Grupo de bytes que forma una estructura determinada la cual controla el funcionamiento de ciertos sectores de la ROM.

-Términos lenguaje de programación:
  • ASM: Acrónimo de "Assembler Language", en español, "Lenguaje Ensamblador". Se trata de un lenguaje de programación de bajo nivel que nos permitirá editar prácticamente cualquier aspecto de la ROM.

  • Rutina ASM: Código creado con el lenguaje de programación ASM, el cual produce cambios que no siempre se pueden lograr con scripts normales, ya que requieren un cierto manejo de distintas áreas de memoria a las que no se puede acceder con estos. (Click)

  • Compilar: También usado en el ámbito del scripting. Cuando estamos compilando un código lo que estamos haciendo es pasarlo a un lenguaje que la máquina pueda entender y procesar.

  • Disassembler: Programa que se encarga de traducir el lenguaje de máquina a lenguaje ensamblador, es decir, pasa de un sistema binario a uno decimal y hexadecimal.

  • Depurador/Debugger: Programa usado para probar y corregir los errores de otros programas. En este caso es usado para comprobar los fallos de nuestra rutina ASM.


-Términos del área musical:
  • Midi: Archivo musical que se reproduce en la ROM, la música de fondo de un mapa, la música de fondo de una batalla son ejemplos de midis. (Click)

  • Track: Pista de sonido donde se reproduce un instrumento, con la combinación de varios tracks se llega a crear una midi.

  • Cry: El cry de un Pokémon es el sonido que hace este al salir a batalla, al verlo en la Pokédex etc. (Click)

  • Loopear: Acción que permite que una midi se repita en bucle de forma indefinida.

  • Voicegroup: Conjunto de instrumentos que se ubican en un offset específico de la ROM.

ÁREAS DENTRO DEL RH

En el mundo del ROM Hacking es muy común que una sola persona controle varias áreas de este, pero no siempre se es tan bueno programando como haciendo un sprite de un entrenador por ejemplo y, aunque la especialización en una de estas áreas sería un error en términos de experiencia y conocimientos, no es nada raro que en un proyecto en conjunto se repartan las tareas para, de alguna manera, agilizar el desarrollo del juego.
Aquí tenéis la terminología comúnmente usada:
  • ROM Hacker: Referido a toda persona que se encarge de modificar una ROM.
  • Guionista: El encargado de realizar la trama del juego, su historia, sus personajes, los acontecimientos.
  • Scripter: Encargado de realizar los scripts, o lo que es lo mismo, los eventos del juego de acuerdo a la trama dada por el guionista.
  • Tiler: Su función es crear tiles para que luego se puedan crear mapas con ellos.
  • Mapper: Encargado de crear los distintos mapas del juego a partir de los tiles que le hayan sido dados.
  • Spriter: Se encarga de realizar los diferentes sprites (Personajes, Pokémon, minis...) que sean necesarios para la trama.
  • Programador: Entendedor de algún lenguaje de programación aplicable al RH. Crea rutinas/código para implementar sistemas innovadores al juego.
  • Beta tester: Aquella persona que, con la finalidad de buscar y corregir posibles errores antes del lanzamiento de una versión incompleta del Hack ROM, prueba el juego y busca el fallo a propósito.
  • Grafista: Se encarga de crear todo tipo de gráficos para su posterior inserción en la ROM, por lo tanto puede ejercer de tiler y spriter al mismo tiempo ya que sus habilidades, por lo general, se lo permiten.
  • Mider: Su función es crear las diferentes pistas musicales que serán reproducidas en los diferentes escenarios del juego.


PRINCIPALES HERRAMIENTAS

Aquí os voy a dejar una lista con las herramientas que me parecen son de las más importantes e interesantes a la hora de elaborar un proyecto y una brevísima explicación de lo que hace cada una.

-Editores de Mapas:
  • Advance Map 1.92: Herramienta por excelencia del RH, se trata de un editor de mapas avanzado.
  • Advance Map 1.95: Herramienta por excelencia del RH, se trata de un editor de mapas avanzado. Difiere de la anterior en que está tiene algunas funciones extra, pero es usada en menor medida debido a ciertos bugs que posee.

-Editores de scripts:
  • eXtreme Script Editor (XSE): Editor de scripts por excelencia, la mayoría de tutoriales de scripting van dirigidos a esta herramienta.
  • Red Alien: Otro editor de scripts creado por el usuario del foro cosarara97, a pesar de no ser tan usado tiene una mayor capacidad y logística que el anterior mencionado.

-Editores hexadecimales:
  • HxD: Editor Hexadecimal, a través de este se puede realizar cualquier tipo de cambio en la ROM.

-Editores de Pokémon:
  • Pokémon Game Editor (PGE): Editor de Pokémon avanzado: edita su entrada de la Pokédex, sus egg moves, sus movimientos, las MTs que pueden aprender, sus sprites...
  • Gen III Tools: Con esta herramienta multifuncional no solo podrás editar de una forma bastante completa la data de los Pokémon, también contiene un editor de items, de entrenadores, un descapitalizador y un editor de movimientos.

-Parcheadores:
  • Lunar IPS: Te permite crear y aplicar parches a una ROM.
  • Nups: Como el anterior, permite crear y aplicar parches, solo que este trabaja con la extensión .ups

-Editores Gráficos:
  • Advance Pallete Editor (APE): Edita y busca las paletas dentro de la ROM, tambien puedes importar y exportare distintos formatos. Maneja el sistema de compresión LZ77.
  • Character Maker Pro (CMP): Herramienta de ediciones de imágenes, muy usada para el cambio de extensión y sobre todo para indexar.
  • Just an Animation Editor (JAAE):Herramienta con la que podrás crear animaciones propias para los tiles de tu ROM.
  • NLZ-GBA Advance: Con esta herramienta podrás editar y buscar gráficos de la ROM, tanto sin comprimir como comprimidos (LZ77).
  • Nameless Sprite Editor (NSE): Con esta herramienta podrás editar e insertar ciertos gráficos de tu ROM.
  • Nameless Tile Map Editor (NTME): Permite crear y editar tilemaps, así como obtener su respectiva RAW.
  • Overworld Manager (OWM):Con esta herramienta podrás tener un amplio control sobre la edición de overworlds de tu ROM, soporta ROMs expandidas.
  • Sphere Editor: Esta herramienta la usaremos principalmente para crear un tileset a partir de una imagen.


-Editores Musicales:
  • Sappy: Con esta herramienta podrás insertar tus propias MIDIS en la ROM.
  • A Fixed Cry Editor: Versión mejorada del Cry Editor, este ya no busca direcciones erróneas para insertar los cries de los Pokémon.

-Otros:
  • Advance Series: Contiene tres herramientas: un editor de Sprites, uno de iconos y otro del posisionamiento de Pokémon.
  • Advance Text: Editor de texto, utilizado tanto para cambiar los textos como para traducirlos.
  • Advance Trainer: Edita y expande la tabla de entrenadores.
  • Day, Night & Seasons (DNS): Con esta herramienta podrás insertar un sistema de día/noche y un sistema de estaciones a tu ROM.
  • Free Space Finder (FSF): Herramienta usada para buscar direcciones con espacio libre de la ROM.
  • GBA Intro Manager: Esta herramienta permite editar numerosas cosas de lo que vendría a ser la intro del juego.
  • Thumb: Compilador, usado principalmente para compilar rutinas ASM.


Eso es todo por mi parte, pero ya sabéis, si creéis que hay algún error o que falta algún término que se podría añadir, simplemente comentadlo.


Un saludo :D
 
Arriba