WAH'S MEORH | UNIDAD 1: CONCEPTOS BÁSICOS
TEMA 1: DEFINICIONES BÁSICAS
Para poder empezar a romhackear es necesario, antes, ponernos de acuerdo en los términos que usaremos. Asimismo, es de vital importancia que sepan a qué me refiero cuando menciono cosas como "pointers", "ROMs", "RAM", "hex" u "offset".
Planteemos, entonces, la siguiente lista:
Podríamos agregar otros conceptos, pero con estos por ahora nos alcanza. No quiero alargar más la lista, así podemos empezar pronto la parte práctica. A medida que vayamos necesitando introducir otros conceptos, los iremos detallando y, probablemente, agregando a esta lista.
Para poder empezar a romhackear es necesario, antes, ponernos de acuerdo en los términos que usaremos. Asimismo, es de vital importancia que sepan a qué me refiero cuando menciono cosas como "pointers", "ROMs", "RAM", "hex" u "offset".
Planteemos, entonces, la siguiente lista:
- ROM: Read Only Memory. Traducido como Memoria de sólo lectura. Es el archivo que contiene los datos de (en este caso) el juego que editaremos. ¿Si es de sólo lectura cómo hacemos para modificarla? Es perfectamente posible hacerlo. Lo que no podemos hacer es modificarla mientras la ejecutamos (es decir, en el emulador).
- RAM: Random Acces Memory. Traducido como Memoria de acceso aleatorio. En ella se guardan datos que son modificados a medida que jugamos el ROM (es decir, desde el emulador). Por ejemplo, la información de los pokémons en el equipo o los objetos de la mochila y el PC.
- ROM expandida: Es una ROM que pesa más de 16 MBs, por lo tanto, tiene más espacio para agregar nuestras ediciones. Sin embargo, salvo que usemos Emerald como base, no suele ser necesario.
- Binario: Sistema numérico que consta únicamente de dos dígitos, 0 y 1.
- Decimal: Sistema numérico que consta de diez dígitos y utilizamos en nuestra vida cotidiana. Éstos son: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9.
- Hexadecimal: Sistema numérico que consta de dieciseis dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Es probablemente el que más emplearemos en esta escuela y en el romhacking en general.
- Herramienta: Programa informático que usamos para modificar una ROM. Ejemplos de ellas son A-Map, XSE y APE.
- Sprite: Es un gráfico o "dibujo" que, en el caso de la GBA, mide 64x64 píxeles y puede tener hasta 15 colores + 1 de fondo (será transparente, por lo que no podremos usarlo para pintar al personaje o pokémon en cuestión). Ejemplos de sprites son cada uno de los pokémons que sale en batalla.
- Tile: Que puede traducirse como "azulejo". Es un gráfico de 8x8 píxeles que constan la mayor parte de los gráficos del juego.
- Bloque: Es un gráfico de 16x16 píxeles, es decir, que está formado por 4 tiles. Ejemplo puede ser la hierba (tanto la normal del suelo como la "hierba alta" en donde salen pokémons).
- Script: Conjunto de comandos que forman los eventos y desarrollan el juego, por ejemplo, los mensajes que nos dicen los distintos personajes, los objetos que encontramos tirados o los pokémons que nos dan.
- ASM: Acrónimo de "Assembler Language" o, en español, "Lenguaje Ensamblador". Es un lenguaje de programación de bajo nivel que nos permitirá editar prácticamente cualquier aspecto del ROM, ya que estaremos re-programándolo nosotros mismos.
- Indexar: Limitar los colores de una imagen a aquellos que sean compatibles con la GBA.
- Offset: Dirección dentro de la ROM. Nos sirve para indicar en qué lugar se encuentra cada cosa, por ejemplo, un script o un sprite. Se nombran numéricamente y, por lo general, usaremos el sistema hexadecimal para eso, aunque también sea válido usar el decimal o el binario. Piénsenlo como el cartel de numeración de las casas.
- Puntero: Es un conjunto de datos que encontramos en la ROM y nos indican el offset de alguna cosa. Está formado por 8 dígitos hexadecimales: $XXXXXXXX, por lo general, los dos primeros son "08" pues hacen referencia a la ROM, aunque en ROMs expandidas podríamos tener otros distintos.
- Bit: Es la mínima unidad en informática, se corresponde con 1 dígito binario. Es decir, sus valores pueden ser 0 o 1. Ejemplo: 00010 son 5 bits.
- Byte: Es un conjunto de 8 bits (o también podemos decir, 8 dígitos binarios). Sin embargo, por lo general lo veremos en forma de 2 dígitos hexadecimales en lugar de 8 binarios. Ejemplo: $FF, $05, 0b01100011 son 3 bytes.
- Halfword: Conjunto de 16 bits o, lo que es lo mismo, 2 bytes. $FEE5, $9853, 0b0100110101110001 son 3 halfwords.
- Word: Conjunto de 32 bits o, lo que es lo mismo, 4 bytes. $F5A3E732, $87563118 son 2 words. Retomando el concepto de puntero o "pointer", cada uno de ellos es una word.
Podríamos agregar otros conceptos, pero con estos por ahora nos alcanza. No quiero alargar más la lista, así podemos empezar pronto la parte práctica. A medida que vayamos necesitando introducir otros conceptos, los iremos detallando y, probablemente, agregando a esta lista.
TEMA 2: INTRODUCCIÓN AL ROM HACKING
Si quieren aprender a romhackear es extremadamente crucial que entiendan qué es el rom hacking.
Llamamos rom hacking al proceso de modificar una ROM, tanto sea mediante herramientas o edición hexadecimal.
Entonces, cualquier modificación, por pequeña que sea, es parte del rom hacking.
¿Quieres agregar nuevos pokémons? ¿Cambiar el nivel o la frecuencia con la que aparecen? ¿Cambiar sus sprites? ¿Editar los mensajes que dicen los NPCs? ¿Agregar nuevos sistemas? ¿Implementar sistemas de otros juegos? Todas esas acciones y muchas más comprenden lo que llamamos ROM HACKING.
Crear un juego desde 0 es un trabajo muy complicado, pero rom hackear implica un doble trabajo ya que, si bien puede que no tengamos que programar los sistemas nosotros mismos, o diseñar todos los gráficos, pero al estar modificando algo creado por otra persona primero debemos entender qué es lo que está armado y cómo funciona para luego poder editarlo correctamente.
Por lo tanto, tiene su parte difícil. Ahí es donde fracasan la mayor parte de los principiantes, quieren hacer y hacer sin saber cómo o qué hacen y se les plantean dudas que carecen de toda lógica y podrían responderse ellos mismos si supieran cómo funciona lo que quieren hacer y cómo está programada la ROM.
Eso es todo. Por ahora, no tenemos tarea. Pero ya desde la segunda clase empezarán a tener trabajo :jejeje:
Si quieren aprender a romhackear es extremadamente crucial que entiendan qué es el rom hacking.
Llamamos rom hacking al proceso de modificar una ROM, tanto sea mediante herramientas o edición hexadecimal.
Entonces, cualquier modificación, por pequeña que sea, es parte del rom hacking.
¿Quieres agregar nuevos pokémons? ¿Cambiar el nivel o la frecuencia con la que aparecen? ¿Cambiar sus sprites? ¿Editar los mensajes que dicen los NPCs? ¿Agregar nuevos sistemas? ¿Implementar sistemas de otros juegos? Todas esas acciones y muchas más comprenden lo que llamamos ROM HACKING.
Crear un juego desde 0 es un trabajo muy complicado, pero rom hackear implica un doble trabajo ya que, si bien puede que no tengamos que programar los sistemas nosotros mismos, o diseñar todos los gráficos, pero al estar modificando algo creado por otra persona primero debemos entender qué es lo que está armado y cómo funciona para luego poder editarlo correctamente.
Por lo tanto, tiene su parte difícil. Ahí es donde fracasan la mayor parte de los principiantes, quieren hacer y hacer sin saber cómo o qué hacen y se les plantean dudas que carecen de toda lógica y podrían responderse ellos mismos si supieran cómo funciona lo que quieren hacer y cómo está programada la ROM.
Eso es todo. Por ahora, no tenemos tarea. Pero ya desde la segunda clase empezarán a tener trabajo :jejeje:
@Laquin Laquih @Toni Kuchiki @Arkelao @Nairik Troll on Fire @Nozz Capriccola @N master @Skyflyer @NewHacker12 @Max08 @Slayer810 @AlejBlue @Yue Toramaru @Nightmare919 @Wolf @SoulOfBandit @xxIndieGamerxx9000 @Toni I @Infernape Kuchiki @~Masked_Hero~ @Gorka @CompuMax @HancockParallax @IvanHack @MCLuis1212 @Shinichy @AmuSakura @Hkiller @Creepyking @Geonhosis @BonnieClem @Tobimo @TAbelShow @Buiseru @CharoOdadjian
Última edición: