El romhacking es básicamente modificar los datos existentes dentro de la memoria interna de un juego. Estas modificaciones son de gráficos, música entre otros aspectos.
Es un lenguaje de programación que consta de 10 números empezando del 0 y llegando al 9 que continua con letras a partir de A y terminando en F dando 16 números de allí el nombre Hexadecimal, como se ve a continuación cada uno de estos tiene un número equivalente en números "normales".
0x00=0
0x01=1
0x02=2
0x03=3
0x04=4
0x05=5
0x06=6
0x07=7
0x08=8
0x09=9
0x0A=10
0x0B=11
0x0C=12
0x0D=13
0x0E=14
0x0F=15
Con esos mismos números podemos llegar formas más números hasta el 255, si empieza por el 0 tendremos un total de 256 números. Te dejo una tabla para que veas la forma en que se pueden hacer.
Rápidamente veamos pues todos esos números se pueden usar como un ID este término para no complicar esto tanto diremos que es una posición y ya está, haciendo que en diferentes partes de nuestro juego estén estos llamados ID
Ya conociste el ID ahora toca que conozcas los llamados punteros que son casi lo mismo pero un poco más complejo ya que en vez de tener un 0x0F tendríamos un 0x1AFF estas direcciones son lugares donde están los datos y es muy peligroso alterar los números en estas direcciones o usarlos para cosas que no son (créeme por experiencia, he roto cosas como el sound room por cosas así)
Es necesario también saber un poco de lenguaje ASCII pero no te preocupes son lo mismo símbolos que usamos al escribir como las letras y signos de puntuación, pero también tienen algunos valores específicos
Muy bien ya te expliqué algunas cosas, ahora veamos estas un poco más prácticas. Cuando abramos un juego en un editor Hexadecimal (aunque este método ya está casi obsoleto) podemos ver distintas cosas, pero todavía puede que no veas de lo que te acabo de hablar ve la siguiente imagen, estoy usando una ROM de FE8 USA como ejemplo
En el cuadro verde hay punteros, en el rosa tenemos código hexadecimal y en el rojo tenemos ASCII
Estos dos decidí ponerlos juntos ya que uno va dentro del otro; como sabes los juegos usan ciertas imágenes o modelos 3D para mostrar los elementos básicamente eso es a lo que me refiero, pero hay algunos casos donde están sujetos a algo que llamamos paletas, estas paletas son simplemente un conjunto de colores de los cuales debe seleccionar.
Rápidamente te pongo un Sprite, y dejo algunas paletas que usa.
Hasta aquí serían los conceptos (hasta ahora, probablemente si me acuerdo de algo lo agregaré después)