Capitulo 0: Conocimientos Básicos de Hex

Edición, fanfics, o ilustraciones y creaciones hechas por ti.
Responder
Lord Solrac
Bard
Bard
Mensajes: 2040
Registrado: 13 May 2010, 21:45

Mensaje por Lord Solrac »

¡Saludos! Este tutorial será el primero de muchos para la creación de un Hack de Fire Emblem para GBA, este tutorial estará basado en el FE7 pero hay algunas cosas que aplican al FE6/FE8, aclarado todo esto demos comienzo a esta recopilación de tutoriales.

Requerimientos:
-Un editor hexadecimal (HxD de preferencia)
-Un ROM GBA (googlealo)
-Un cerebro (muy importante)
-Paciencia (y mucha)

El objetivo de este primer capitulo es el de dar la información básica pero primordial cuando se esta trabajando con hex. Ya que un ROM esta escrito en este sistema. Lo primero es saber que es el Sistema Hexadecimal.
¿Qué es el Sistema Hexadecimal?
Para no aburrir con conceptos complejos y todo eso, pues el Sistema Hexadecimal no es mas que otro método para “contar” solo que este es usado en las PC y es más largo que el sistema que usamos los humanos. Para que se entienda mejor, veamos nuestro sistema para contar:

Los humanos empleamos el Sistema Decimal, que tiene una base de 10 (de ahí el nombre) el sistema consta de los siguientes valores 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, al contar su base vemos que son 10 números. Los humanos para formar los números empleamos la base del Sistema Decimal para crearlos, los números que siguen después de los números base ya son números secundarios o complejos. Para formar el número diez usamos los primeros números de la base 10, luego seguimos con el siguiente numero y así sucesivamente. 11, 12, 13, 14, 20, 30, 99…

Eso es cuando hablamos de sistema decimal, o el Sistema Humano. Pues el Sistema Hexadecimal es similar salvo que emplea más símbolos o “números” pues a la base decimal (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) se le agregan 6 “números” más, bueno, son letras pero se usan con los números. Pues como ya no existen números base después del 9, decidieron usar el alfabeto, así las letras A, B, C, D, E, F son anexadas a la base, sumando 16 símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). Pues como hay más símbolos numéricos pues …7, 8, 9, 10, 11…. Esta mal escrito pues hay 6 nuevos números, quedaría …07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11…. Y así hasta llegar al FF que seria el “ultimo” número.

Después de esta aburrida explicación, mostraré una tabla de los números hexadecimales:

0x00 0x20 0x40 0x60 0x80 0xA0 0xC0 0xE0
0x01 0x21 0x41 0x61 0x81 0xA1 0xC1 0xE1
0x02 0x22 0x42 0x62 0x82 0xA2 0xC2 0xE2
0x03 0x23 0x43 0x63 0x83 0xA3 0xC3 0xE3
0x04 0x24 0x44 0x64 0x84 0xA4 0xC4 0xE4
0x05 0x25 0x45 0x65 0x85 0xA5 0xC5 0xE5
0x06 0x26 0x46 0x66 0x86 0xA6 0xC6 0xE6
0x07 0x27 0x47 0x67 0x87 0xA7 0xC7 0xE7
0x08 0x28 0x48 0x68 0x88 0xA8 0xC8 0xE8
0x09 0x29 0x49 0x69 0x89 0xA9 0xC9 0xE9
0x0A 0x2A 0x4A 0x6A 0x8A 0xAA 0xCA 0xEA
0x0B 0x2B 0x4B 0x6B 0x8B 0xAB 0xCB 0xEB
0x0C 0x2C 0x4C 0x6C 0x8C 0xAC 0xCC 0xEC
0x0D 0x2D 0x4D 0x6D 0x8D 0xAD 0xCD 0xED
0x0E 0x2E 0x4E 0x6E 0x8E 0xAE 0xCE 0xEE
0x0F 0x2F 0x4F 0x6F 0x8F 0xAF 0xCF 0xEF
0x10 0x30 0x50 0x70 0x90 0xB0 0xD0 0xF0
0x11 0x31 0x51 0x71 0x91 0xB1 0xD1 0xF1
0x12 0x32 0x52 0x72 0x92 0xB2 0xD2 0xF2
0x13 0x33 0x53 0x73 0x93 0xB3 0xD3 0xF3
0x14 0x34 0x54 0x74 0x94 0xB4 0xD4 0xF4
0x15 0x35 0x55 0x75 0x95 0xB5 0xD5 0xF5
0x16 0x36 0x56 0x76 0x96 0xB6 0xD6 0xF6
0x17 0x37 0x57 0x77 0x97 0xB7 0xD7 0xF7
0x18 0x38 0x58 0x78 0x98 0xB8 0xD8 0xF8
0x19 0x39 0x59 0x79 0x99 0xB9 0xD9 0xF9
0x1A 0x3A 0x5A 0x7A 0x9A 0xBA 0xDA 0xFA
0x1B 0x3B 0x5B 0x7B 0x9B 0xBB 0xDB 0xFB
0x1C 0x3C 0x5C 0x7C 0x9C 0xBC 0xDC 0xFC
0x1D 0x3D 0x5D 0x7D 0x9D 0xBD 0xDD 0xFD
0x1E 0x3E 0x5E 0x7E 0x9E 0xBE 0xDE 0xFE
0x1F 0x3F 0x5F 0x7F 0x9F 0xBF 0xDF 0xFF


Pues estos son los “números” que usaremos para modificar un ROM. Si te preguntas ¿Por qué hay un 0x antes de cada número? Pues eres observador, la forma de escribir un Hexadecimal es un poco diferente, comparado con un decimal. Si yo escribo A1 ¿Qué puede ser? Una celda de Microsoft Excel, una coordenada, un nombre de avión, etc. Tal parece que hay muchas cosas que se pueden nombrar como A1, pero si se quiere expresar A1 como un numero hexadecimal, pues se le puede agregar el “prefijo” 0x seguido del número, quedaría 0xA1, pero no es la única forma, ya que también se puede usar el símbolo $ para referirse a un número hexadecimal. 0xA1 - $A1 son validos, pero a mi gusto personal prefiero el 0x aunque tenga que escribir un poco más.

COPIAS DE SEGURIDAD (BACK UP)
Seré directo y sin vacilar. Cada vez que modifiques una parte de tu Hack, haz una copia de seguridad. ¿Qué es una copia de seguridad (back up)? Es una copia de tu ROM de la última vez que funciono, si haces algo mal, solo necesitas volver a tu copia y el problema se solucionará. Basta con copiar tu ROM y guardarlo en otra ubicación.

Eso es el Sistema Hexadecimal, ahora entraremos de lleno en un editor hexadecimal, uso el HxD pues tiene una interfaz gráfica simple pero sabe lo que hace y lo hace muy bien.

Nota: Yo he modificado este programa, por eso, cuando tú lo utilices pues notarás una interfaz diferente. Pero los procedimientos son los mismos.

Lo primero es abrir el programa y cargar un ROM en el.
-Menú Archivo
-Abrir
-Busca el ROM


Imagen

Lo que notarás será un o.O una serie de letras y números con cosas raras, sin embargo esta es la información que contiene el ROM. ¡CUIDADO! Si modificas tan solo un número puedes corromper al ROM y este quedará corrupto. Se cuidadoso cuando trabajes en este programa.

Bien, ¿Qué podemos hacer? Prácticamente cualquier cosa, desde una face hasta una animación personalizada. Claro que tendrías que ser un cybor para hacer todos esos procesos xD pero se puede aunque puedes tardarte años haciendo tan solo un sprite…

¿Qué puede hacer un humano? Eso ya es más razonable, podemos repuntear, expandir el ROM, agregar información y muchas cosas más. Pero antes de eso debemos conocer un poco más de este programa.

Imagen

Es indispensable que conozcas cada parte ya que juegan un papel muy importante para crear tu Hack. Vamos por partes:

Punteros ~ Pointer/Offset:
Estoy seguro que has escuchado esta palabra muchas veces ya que es una de las partes más importantes, y a la que debes prestar mucha atención, para modificar un ROM.
¿Qué es un Puntero/Pointer/Offset?
Básicamente es una “dirección” en donde se indica que hay algo. Por ejemplo: los ítems (armas, magias, objetos) tienen una tabla, en donde se encuentran los datos del ítem, la susodicha tabla esta en el offset 0x00BE222C cada campo de esa tabla representa un ítem, teniendo como máximo 255 ítem (que son los números 0x00 hasta 0xFF) Bien, ¿Qué hace el juego? Pues lo primero que hace es ir al offset 0x00BE222C para saber donde están los ítems. Después busca el valor que representa a un ítem X y lo muestra. Ya en el programa podrás ver todos lo offset que hay en el ROM (que son muchos)

Posición:
Esta parte es vital ya que te dice exactamente en que offset estas. En la imagen estoy en el offset 0x00000070 ¿Y por qué tantos ceros? Pues resulta que el “tamaño” de un offset es de “4 números” 0x XX XX XX XX, recuerda que un numero hex esta hecho de dos números de su base, en este caso tengo el 0ffset 0x70 pero esta mal escrito ya que tiene que tener los 4 números. Por eso solo le agrego ceros (00) y asunto resuelto.

Datos Seleccionados:
En la imagen se muestra un texto azul con un relleno verde, mi programa esta modificado así, tu lo que veras será un texto blanco con un relleno azul. Esto solo te servirá para copiar datos y repuntearlos a otra parte. Basta con copiar y pegar.

Bloque:
Esto solo te saldrá cuando selecciones datos. Lo que indica es desde cual offset haz comenzado a seleccionar y en cual offset termina tu selección, esto es solo informativo, pero te sirve para saber donde comenzar y terminar.

Longitud:
Esto solo te saldrá cuando selecciones datos. Es un poco más importante que el Bloque, ya que aquí te dice cuanto “mide” tu selección. Se utiliza para saber cuanto espacio se utilizará para insertar los datos. Muy útil si insertas datos sin expandir el ROM.

Datos Modificados:
¡Ah…! ¡Ingresar datos…! Esta parte es la más delicada ya que si no haces algo bien, pues tu ROM dejará de funcionar. ¡IMPORTANTE! CREA COPIAS DE SEGURIDAD (BACK UP) DE TU HACK, si modificas algo y resulta en un daño fatal para el ROM, pues PERDERAS todo tu avance. Siempre crea back up de tu ROM. La imagen muestra un texto rojo claro con un relleno rojo intenso, en tú monitor verás un texto rojo sin relleno.
Una vez seguro de lo que vas a hacer, pues ingresa los datos, basta con que te coloques en una parte de los datos y uses el teclado xD casi no ingresarás datos, ya que hay otros programas que se ocupan de eso. Solo ingresarás datos cuando tengas que expandir el ROM o modificar una paleta, serán pocas veces… por el momento.

Modificado:
Esta parte es bastante importante, solo es informativa, ya que aquí podrás ver si has cambiado el ROM. Si el ROM no ha sufrido cambios pues este mensaje no aparecerá.
Si no te gusta la apariencia del programa (un fondo blanco y letras negras) pues puedes modificarla. Solo hay que ir a Menú Extras/ Opciones / Pestaña Formato. Ahí encontrarás lo que puedes hacer.

Este programa te muestra los datos de dos formas, en modo Hexadecimal y en modo
ANSI. Bueno… en realidad hay más formas, pero es algo que no es necesario que conozcas.

Datos Hexadecimales:
Esta zona se muestra los datos hexadecimales, aquí es donde modificarás todo lo que tenga que ver en Hex.

Datos ANSI:
Esta es la zona en donde están los datos en modo Humano, aquí podrás leer algunas líneas ya que los datos están en ASCII, esta zona casi ó nunca la tocarás pero es bueno saber que es.

Herramientas del Programa:
Ya que este programa se ve muy sencillo, pero tiene sus cosas poderosas, una de ellas es su búsqueda, su función Ir a…, su función de Reemplazo y muchas más. Solo tocaré las básicas y las más útiles.


Imagen

Función Buscar:

Esta función es de las mas vitales y de la que más usarás, basta con ir a: Menú Buscar/Buscar. O Ctrl + F (más rápido) para ejecutar la herramienta.

Para buscar datos necesitaras especificar el Tipo de Dato, si dejas Cadena de Texto, la búsqueda será en la columna de los Datos ANSI, si quieres buscar texto o “palabras” pues usa esta búsqueda.

Si quieres buscar datos hexadecimales (que serán el 99.9% de tus búsquedas), tendrás que cambiar el Tipo de Datos a Valores Hexadecimales, una vez seleccionado el Tipo de Datos solo necesitaras ingresar los datos a buscar. Obviamente tienes que escribir datos en Hex, pero no es necesario escribir 0xFA para buscar solo se necesita FA para buscar ese dato.

En la opción de dirección solo es para determinar desde donde comenzará la búsqueda, selecciona Todo y no habrá mayor problema.


Imagen

Función Ir a:

Función vital para ir a un punto especifico del ROM, solo necesitas ir a Menú Buscar/ Ir a. Ó Ctrl + G. Necesitas ingresar el offset (sin el 0x) y llegarás a ese puntero.

Eso es todo lo “básico” que hace este programa, tiene muchísimas más funciones pero son más avanzadas. Ya familiarizados con el programa es momento de hacer algo con el, primero insertar datos vacios para ampliar el ROM.

Muchas veces he leído en excelentes tutoriales la frase “… inserta los datos en espacio vacio o expande el ROM” pero ¿Cómo ****** se expande un ROM? El método no es nada difícil y hasta cierto punto absurdo. Lo que se hace es ir al final de ROM (Ctrl + G más el offset FFFFFF) con esto llegaras al final del ROM (también puedes teclear Ctrl + Fin) ya estando en el final y asegurando que estamos en la zona de Datos Hexadecimales, solo pulsa la tecla 0 (cero) y comenzará a escribirse 00 00 00 00 00 00 00 00 00 según el tiempo que mantengas pulsada la tecla 0, con esto alcanzarás el offset 1000000 el que indica que los datos escritos desde ahí en adelante serán datos expandidos. Una forma rápida de expandir es hacer una línea de 0 (00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00) copiarla y pegarla al final las veces que sea necesario.

Ya con esto solo guardas Ctrl + S y tu ROM será un ROM expandido. Eso es cuando tienes que hacerlo al final y no hay mucho problema pues no sobrescribes ningún dato, pero si quieres hacerlos entre los datos ya existentes (sobrescribir) pues necesitarás ser más cuidadoso.

Sobrescribiendo / Insertando
Es muy importante saber la diferencia entre estas dos formas de insertar datos. Ya que una si no se usa correctamente pues tu ROM morirá…

Sobrescribiendo:
Esto lo puedes hacer con solo digitar en tu teclado, pero hay cosas que es mejor hacerlas en un documento de texto y luego ingresarlas en tu ROM. Cuando haces esto pues copias los datos del documento de texto, pero para agregarlos al ROM tienes dos opciones:
-Al final, sin preocuparte de nada ya que no sobrescribirás nada. Solo pulsa Ctrl + V y mira como se insertan los datos.

-En medio del ROM, no es lo ideal pero hay ciertas cosas que ya están punteadas, a menos que repuntes todo cosa que es tediosa y delicada, necesitarás sobrescribir los datos viejos con los nuevos que agregarás. NI SE TE OCURRA USAR CTRL + V. Si usas este método insertarás los datos no los sobrescribirás. ¿Qué significa esto? Veamos un ejemplo simple:

Mi ROM tiene estos punteros:
1-2-3-4-5
1=Inicio
2=Tabla de Ítem
3=Tabla de Unidades
4=Tabla de Eventos
5=Fin
Quiero insertar la Tabla de Ítems modificada, mi tabla mide 1 “puntero” como mí ROM ya tiene definida la dirección/offset de esta tabla, yo debo insertarla en el puntero 2, si uso el método Ctrl + V estoy insertando los datos y por ende quedaría:
1=Inicio
2=Tabla de Ítem
3=Tabla de Ítem
4=Tabla de Unidades
5=Tabla de Eventos
6=Fin
¿Qué paso? Pues inserte los datos antes de la vieja tabla de ítems, al hacerlo así, los datos se mantienen y solo mueve los offset hacia abajo, con esto todos los offset que estén después de aquí quedarán “movidos”. El juego buscará la tabla de unidades en el puntero 3, pero aquí esta la tabla de ítems vieja y como resultado cuando el ROM quiera mostrar una unidad, los datos no serán corrector y no sabrá como procesarlos y al final dará un error fatal.

Entonces ¿Cómo lo hago? Pues debes sobrescribir, basta con Menú Edición/ Pegar Escribiendo. O más rápido Ctrl + B
Al hacer esto pues solo modificas los datos sin necesidad de tocar puntero:
1=Inicio
2=Tabla de Ítem
3=Tabla de Unidades
4=Tabla de Eventos
5=Fin
Y mí ROM funciona igual pero con nuevas armas. ¡CUIDADO! Si lo que vas a insertar sobrescribiendo es más grande que el espacio disponible pues… digamos que mi tabla de ítems “mide” 2 punteros, cuando la inserte escribiendo pues quedará:
1=Inicio
2=Tabla de Ítem
3=Tabla de Ítem
4=Tabla de Eventos
5=Fin

El ROM funciona como debe, pero cuando tenga que ver la tabla de unidades ahí si dará el error fatal. Aquí si ya es obligatorio expandir la tabla de ítems y repuntearla, claro que eso es más avanzado y no lo verás en este tutorial.

Insertando:
Me imagino que ya comprendiste este método Ctrl + V en medio de tu ROM es muerte súbita. Solo usa el Ctrl + V al final del ROM. Punto.

Pues esto es todo lo básico que hace este programa, créeme, si deseas hacer un Hack personalizado este programa (HxD) te será vital “… es como el hada que sale de una botella y revive a Link”

Métodos Abreviados Útiles
Ctrl + O Abrir
Ctrl + S Guardar
Ctrl + V Pegar Insertando
Ctrl + B Pegar Escribiendo
Ctrl + C Copiar
Ctrl + F Buscar
Ctrl + G Ir a
Alt + F4 Salir

Silph B Felgrand
faggot
Mensajes: 1817
Registrado: 18 Abr 2009, 20:19

Mensaje por Silph B Felgrand »

jejeje ahora en clase de Introducción a Hexadecimales , requisito para el ramo de Event assembler y Hexadecimal I =P

buen tutorial Solrac, se te agradece bastante

Draxor
Asesino
Asesino
Mensajes: 818
Registrado: 05 Sep 2011, 23:19

Mensaje por Draxor »

Hex 101 lol

Excelente tutorial! estaré pendiente de la próxima clase

Kahx5
Domma
Domma
Mensajes: 2468
Registrado: 23 Ago 2011, 19:25

Mensaje por Kahx5 »

Gracias por el aporte,ahora estoy reconsiderando hacer un hack xD.

Whodao
Diabolistic
Diabolistic
Mensajes: 4802
Registrado: 03 Ago 2010, 20:07

Mensaje por Whodao »

No has hablado del buscar/reemplazar :shock:

Pero genial, muy útil para iniciarse en el HxD ;)

Mikey_Séregon
Oracle of yaoi
Oracle of yaoi
Mensajes: 7571
Registrado: 04 Ene 2008, 15:15

Mensaje por Mikey_Séregon »

¿Que version del HxD usas?
Se ve algo diferente a la que uso...

Lord Solrac
Bard
Bard
Mensajes: 2040
Registrado: 13 May 2010, 21:45

Mensaje por Lord Solrac »

Wodao escribió:No has hablado del buscar/reemplazar :shock:

Pero genial, muy útil para iniciarse en el HxD ;)
No entiendo tu comentario, dices "No hablo" ó te admiras de que hablo de Búsquedas.
Sir_oracle_Séregon escribió:¿Que version del HxD usas?
Se ve algo diferente a la que uso...
No has leido.... XD Solo he personalizado la interfaz del programa. Es la versión 1.7.7.0

A los demás, gracias por sus comentarios pues este tutorial es para que los user latinos que no hablan ingles xD puedan crear hack, y hasta yo gano pues podré jugar hack en español.

mauropo
Soldado
Soldado
Mensajes: 1
Registrado: 21 Dic 2011, 09:37

Mensaje por mauropo »

muy buen aporte ;)

blazt01
Bard
Bard
Mensajes: 2164
Registrado: 16 Ene 2011, 22:28

Mensaje por blazt01 »

muy buen tuto pero tengo una duda mi hack cuando busco el final llega hasta 0108a870 y todos ocupados y es normal que los tenga o tengo que remplazarlos tambien?

Responder