tuts_gbc
Thread Id: 9616
Thread Name: [GBC][Headers] Secondary Map Header
Bueno, voy a usar este tema para explicar lo que es el Secondary Map Header y que es lo que controla cada byte que lo compone ya que para hackear juegos de la 2da generacion es necesario conocer los diferentes headers y que 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: 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.
Rescato es te post del abismo donde se encuetra!
Antes ya se ha hablado de la iniciativa de tener un subforo de GBC
(Clic aqui), y esta informacion es de vital importancia para 4 cosas que todo hacker quiere:
-Agregar Scripts
-Agregar Eventos
-Crecer Mapas
-Hacer conexiones de Mapas.
De momento no hare mas opiniones al respecto, pero si les digo a todos los inscritos en la
Escuela de Rom Hacking GBC que pronto echaremos mano de esta info.
Te he añadido "[GBC]" al título, para evitar confusiones ;)
Muy útil el tutorial, hacen falta cosas de estas para GBA (al crear el Blue Spider tuve que rebuscar entre el código fuente de EliteMap, ergh).