Bueno, voy a usar este tema para explicar lo que es el Secondary Map Header y qué es lo que controla cada byte que lo compone, ya que para hackear juegos de la 2da generación es necesario conocer los diferentes headers y qué controla cada uno de ellos para poder utilizarlos cuando sea necesario.
Antes de empezar, lo que necesitas:
_--_--_--_--_--_
- Conocimiento basico de hex (saber que es un byte) (Ver "Diccionario de hex editing")
- Conocimiento sobre pointers (2byte y 3byte pointers) (Ver "Tutorial: Pointers")
_--_--_--_--_--_
Otra cosa: Perdón por no saber a ciencia cierta lo que controlan algunos bytes, pero es necesario que se use esta pequeña guía para que sirva como base para otros tutoriales más avanzados a futuro.
El Secondary Map Header controla el tamaño de los mapas, por donde se unen ciertos mapas, cuántos eventos (personas, anuncios, etc) tiene un mapa y con qué bloques se compone el mapa.
Antes de empezar, lo que necesitas:
_--_--_--_--_--_
- Conocimiento basico de hex (saber que es un byte) (Ver "Diccionario de hex editing")
- Conocimiento sobre pointers (2byte y 3byte pointers) (Ver "Tutorial: Pointers")
_--_--_--_--_--_
Otra cosa: Perdón por no saber a ciencia cierta lo que controlan algunos bytes, pero es necesario que se use esta pequeña guía para que sirva como base para otros tutoriales más avanzados a futuro.
El Secondary Map Header controla el tamaño de los mapas, por donde se unen ciertos mapas, cuántos eventos (personas, anuncios, etc) tiene un mapa y con qué bloques se compone el mapa.
Código:
[Border Block][Y size (in blocks)][X size (in blocks)][Map data pointer (3-bytes)][Bank of Events & Maps Script][Script pointer (2-bytes)][Event data pointer (2-bytes)][Map Connections]
- [Border Block] = No lo sé. Lo siento, pero no sé qué es lo que controla. Voy a tratar de averiguarlo cuando pueda.
- [Y Size (in blocks)]= El tamaño en vertical que tiene el mapa POR BLOQUES.
- [X Size (in blocks)] = El tamaño en horizontal que tiene el mapa POR BLOQUES.
- [Map data pointer (3-bytes)] = Un 3byte pointer (ver mi tutorial sobre pointers) que señala en dónde se encuentra localizado el mapa para que el juego lo pueda cargar.
- [Bank of Events & Maps Script] = Esto es algo curioso. El Script Pointer y Event Data Pointer usan el mismo Bank (ver mi tutorial sobre pointers para saber qué es el Bank), esto es para ahorrar espacio al hacer scripts en la ROM.
- [Script Pointer (2-bytes)] = Señala dónde se encuentran los scripts (que te permiten tener eventos que solo se activen una vez en un mapa o eventos que solo sucedan cuando entras por primera vez a un mapa o cambios permanentes en el mapa. Personalmente he encontrado maneras de hacer ciertos cambios que se supone son controlados por el Script Pointer sin necesidad de tocarlo; porque tocarlo significa repuntearlo y eso es algo tedioso, pero aún no sé si mis métodos tienen limitaciones que solo se puedan arreglar usando el Script Pointer o no.
- [Event Data Pointer (2-bytes)] = Señala dónde estan los eventos (las personas, los anuncios que lees, los eventos (batallas, que te den ítems, etc), los "warps" (entradas a casas o cuevas)) y los controla. Conocer esto es vital para hackear.
Ejemplo sobre Bank of Events and Maps Script, Script Pointer y Event data Pointer:
Digamos que el Script Pointer se localize en 3B 1A2C y el Event Data Pointer se localize en 3B 05C4, en vez de escribir [3B1A2C][3B05C4] (como en un 3byte pointer normal) escribiremos [3B][1A2C][05C4]
- [Map connections] = Señala que mapas se conectan a cuales y por donde.
Última edición por un moderador: