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: Perdon por no saber a ciencia cierta lo que controlan algunas bytes, pero es necesario que se use esta pequeña guia para que sirva como base para otros tutoriales mas avanzados que hare en el futuro.
El Secondary Map Header controla el tamaño de los mapas, por donde se unen ciertos mapas, cuantos eventos (personas, anuncios, etc) tiene un mapa y con que bloques se compone el mapa.
[Y size (in blocks)][X size (in blocks)][Map data pointer (3-bytes)][Script pointer (2-bytes)][Event data pointer (2-bytes)][Map Connections]
- = No lo se. Lo siento pero no se que 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 donde se encuentra localizado el mapa para que el juego lo pueda cargar.
- = Esto es algo curioso. El Script Pointer y Event Data Pointer usan el mismo Bank (ver mi tutorial sobre pointers para saber que es el Bank), esto es para ahorrar espacio al hacer scripts en el ROM.
- [Script Pointer (2-bytes)] = Señala donde 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 repointearlo y eso es algo tedioso) pero aun no se si mis metodos tienen limitaciones que solo se puedan arreglar usando el Script Pointer o no.
- [Event Data Pointer (2-bytes)] = Señala donde estan los eventos (las personas, los anuncios que lees, los eventos (batallas, que te den items, 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.