Bugrhak
A long time ago I used to call myself "Subzero".
Buenas WAHeros, hoy me gustaria enseñarles una mini imbestigación/documentación que hice hoy al
amanecer. No tengo mucho que decir así que "aqui va el rollo". :V
Estructura del bloque (De mapeo).
- La estructura no alberga los "comportamientos de byte" que se encuentran en el bloque.
- Cada bloque comprende una longitud de 0x10 es decir, "ocupa" unos 16 bytes (10 = 16 en decimal).
- Parte de esos 16 bytes conforman tanto la capa inferior, como la superior y a su vez, tambien estan incluidos los tiles que conforman la totalidad del bloque, al igual que los "Flips" ("Inversiones de derecha-izquierda") que puedan llegar a ser utilizados por los tiles del bloque.
- De los 16 bytes totales de la estructura, 8 de ellos comprenden cada fragmento de tile (de 8x8 pixeles cada uno), tanto de la capa inferior, como superior.
- Los otros 8 bytes restantes son destinados para los flips usados tanto para los fragmentos de tiles de la capa inferior como de la superior.
- El "físico" de la estructura es el siguiente: "Tile" - "flip" - "Tile" - "flip" y así sucecivamente hasta ocupar los 16 bytes correspondientes. Cabe aclarar que la estructura SIEMPRE comienza "enseñando" el tile, y finaliza con el flip.
- Como ya he dicho, el primer byte corresponde al "Tile". Esto significa que ese byte "almacena" el numero del tile dentro del tileset.
- Para cada variación de flip existente, un valor puntual que le identifica, he aqui los valores:
- Si por ejemplo, el numero de nuestro tile es de tres sifras (o superior), el valor del flip va a "mutar".
¿"Mutar"?
Si, eso, "muta", vamo a explicarlo:
Un byte esta compuesto de dos digitos, y el numero de nuestro tile tiene 3. Supongamos que tenemos el bloque 2C5 y tiene aplicado un flip X, esto ya en la estructura se veria así:
C5 corresponde al numero del tile y 06 al flip X. Lo que ocurre aqui, es que como el byte del tile no puede almacenar todos los datos, tenemos que compartir datos con el byte del flip.
Podemos decir que aquí tambien ocurre una "suma" y una permuteción, veamos primero la "permutación:
Si vemos al nro del tile (0x25C)como "025C", estariamos "permutandolo y sumandolo de esta forma: 5C 06. Donde 5C como ya dige equivale al nro del tile y 06 es la suma del flip mas el numero "restante" que corresponde al nro del tile.
En caso de que el nro del tile use tres cifras (o mas)y este no use flip, simplemente ocupas el byte del flip con el numero proveniente del nro del tile (si, el que "nos quedó por fuera), si vemos el caso anterior pero ahora sin el uso de flip seria asi:
Nota: Si se dirigen al editor de bloques, y seleccionan uno (bloque de mapeo) podrán ver un offset, dicho offset corresponde a la estructura del bloque.
Muy bien waheros, espero que les haya gustado esta mini "imbestigación", un saludin :awesome:
Si hay algo que no se entiende por la forma en la que me expreso, o estoy en falta de información, por favor haganmelo saber en este mismo tema
PD: Se que esto a la hora de romhackear parece no tener mucha importancia ya que es algo que hace una herramienta por nosotros, pero nunca está mal saber como funcionan las cosas (se que lo dige al principio del post :v)
amanecer. No tengo mucho que decir así que "aqui va el rollo". :V
¿De que va esto?
Esta imbestigación/documentacion trata sobre los bloques que utilizamos a diario para mapear,
al hacerlo me propongo "explicar de forma directa"el funcionamiento del bloque, y como está compuesto (su estructura).
Otro objetivo que para mi no es menor, es, que sepamos un poquito mas "el como de las cosas", es decir, con lo que lidiamos a diario, porque creo que un buen RomHacker es aquel que sabe lo que hace y de que manera hacerlo.
La documentación
Estructura del bloque (De mapeo).
- La estructura no alberga los "comportamientos de byte" que se encuentran en el bloque.
- Cada bloque comprende una longitud de 0x10 es decir, "ocupa" unos 16 bytes (10 = 16 en decimal).
- Parte de esos 16 bytes conforman tanto la capa inferior, como la superior y a su vez, tambien estan incluidos los tiles que conforman la totalidad del bloque, al igual que los "Flips" ("Inversiones de derecha-izquierda") que puedan llegar a ser utilizados por los tiles del bloque.
- De los 16 bytes totales de la estructura, 8 de ellos comprenden cada fragmento de tile (de 8x8 pixeles cada uno), tanto de la capa inferior, como superior.
- Los otros 8 bytes restantes son destinados para los flips usados tanto para los fragmentos de tiles de la capa inferior como de la superior.
- El "físico" de la estructura es el siguiente: "Tile" - "flip" - "Tile" - "flip" y así sucecivamente hasta ocupar los 16 bytes correspondientes. Cabe aclarar que la estructura SIEMPRE comienza "enseñando" el tile, y finaliza con el flip.
- Como ya he dicho, el primer byte corresponde al "Tile". Esto significa que ese byte "almacena" el numero del tile dentro del tileset.
- Para cada variación de flip existente, un valor puntual que le identifica, he aqui los valores:
Código:
No usa flip: 00
Flip XY: 0C
Flip X: 04
Flip Y: 08
¿"Mutar"?
Si, eso, "muta", vamo a explicarlo:
Un byte esta compuesto de dos digitos, y el numero de nuestro tile tiene 3. Supongamos que tenemos el bloque 2C5 y tiene aplicado un flip X, esto ya en la estructura se veria así:
Código:
C5 06
Podemos decir que aquí tambien ocurre una "suma" y una permuteción, veamos primero la "permutación:
Si vemos al nro del tile (0x25C)como "025C", estariamos "permutandolo y sumandolo de esta forma: 5C 06. Donde 5C como ya dige equivale al nro del tile y 06 es la suma del flip mas el numero "restante" que corresponde al nro del tile.
En caso de que el nro del tile use tres cifras (o mas)y este no use flip, simplemente ocupas el byte del flip con el numero proveniente del nro del tile (si, el que "nos quedó por fuera), si vemos el caso anterior pero ahora sin el uso de flip seria asi:
Código:
C5 02 ...
----------------------------
Muy bien waheros, espero que les haya gustado esta mini "imbestigación", un saludin :awesome:
Si hay algo que no se entiende por la forma en la que me expreso, o estoy en falta de información, por favor haganmelo saber en este mismo tema
PD: Se que esto a la hora de romhackear parece no tener mucha importancia ya que es algo que hace una herramienta por nosotros, pero nunca está mal saber como funcionan las cosas (se que lo dige al principio del post :v)
Última edición: