Registrarse

[Otros] Secondary Map Header

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.

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:

Chamber

Miembro insignia
Miembro insignia
Respuesta: [Headers] Secondary Map Header

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.
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
Respuesta: [Headers][GBC] Secondary Map Header

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).
 
Arriba