inv_gba
Thread Id: 28750
Thread Name: Información duplicada
Abro este tema para documentar todos los casos de información duplicada en el ROM que podamos encontrar.
Empiezo con el caso de los cabezales de mapa.
Un cabezal de mapa tiene la siguiente forma:
map_data_ptr - ptr
event_data_ptr - ptr
level_script_ptr - ptr
connections_ptr - ptr
song_index - short
map_ptr_index - short
label_index - byte
is_a_cave - byte
weather - byte
map_type - byte
null - short
show_label - byte
battle_type - byte
El primer elemento es un puntero a un segundo set de datos:
w - long
h - long
border_ptr - ptr
tilemap_ptr - ptr
global_tileset_ptr - ptr
local_tileset_ptr - ptr
border_w - byte
border_h - byte
(Los últimos dos elementos solo están en FR).
Hasta aquí todo bien. El problema llega cuando cambiamos ese puntero al de otro mapa, y no pasa nada. O lo dejamos a 0, y todo sigue funcionando. Y nos fijamos en ese map_ptr_index.
Si buscamos el map_data_ptr de cualquier mapa, lo encontraremos, además de en el cabezal del mapa, en:
0x304f18+((map_ptr_index-1)*4)
Es decir, en 0x304f18 hay una lista de todos los map_data_ptr, que se accede a través de map_ptr_index con índices a partir de 1.
No estoy seguro de que no se use el map_data_ptr como tal, pero he estado haciendo pruebas y al dejarlo a 0 todo seguía funcionando.
Ni AM 1.92, ni AM 1.95, ni Blue Spider tienen ni idea de esto, y usan map_data_ptr para conseguir la información en lugar del índice y la tabla.
A ver si entiendo, en el cabezal del mapa hay un puntero que señala a otro set de datos sobre el mapa, ahora mi duda es ¿al editar un mapa ese segundo set de datos cambia o siempre se mantiene? es intrigante para mi ese segundo set de datos.
No entiendo una mierda colega XD, a ver, entiendo que hay una tabla y un indice de mapas, y que las herramientas actuales usan el "map_data_ptr" (que no se lo que es) en vez de esta tabla e indice.
Pero no entiendo que quieres decir con esto. ¿Estamos haciendo mal los mapas? o no entiendo la verdad XD ¿podrías explicarme el objetivo de esto?
Iniciado por SirSayer301
No entiendo una mierda colega XD, a ver, entiendo que hay una tabla y un indice de mapas, y que las herramientas actuales usan el "map_data_ptr" (que no se lo que es) en vez de esta tabla e indice.
Pero no entiendo que quieres decir con esto. ¿Estamos haciendo mal los mapas? o no entiendo la verdad XD ¿podrías explicarme el objetivo de esto?
Let's see... Tenemos el cabezal del mapa. En el cabezal del mapa pone dos cosas:
1 - El resto de datos referentes al mapa están en: 0xAAAAAA (map_data_ptr)
2 - El resto de datos referentes al mapa están en el número 0x25 (de la lista en 0x304f18)
En el número 0x25 de la lista en 0x304f18 pone: 0xAAAAAA.
Entonces, si vamos y cambiamos lo que ponía en el punto 1 (es decir, en el campo map_data_ptr del cabezal del mapa) por, digamos 0xBBBBBBBB, 0x0, o 0xFFFFFFFF no pasa absolutamente nada. Esto es porque el juego está usando en 0x25 y la lista.
No es que estemos haciendo nada mal, (bueno, no se qué tal inserta los mapas AM), pero hay algo duplicado en el ROM sin motivo aparente, y nuestras herramientas leen el valor que no se usa.
(Mods, perdonad el doble post, podéis fusionar los mensajes si eso)
Iniciado por Yellow Kuchiki
A ver si entiendo, en el cabezal del mapa hay un puntero que señala a otro set de datos sobre el mapa, ahora mi duda es ¿al editar un mapa ese segundo set de datos cambia o siempre se mantiene? es intrigante para mi ese segundo set de datos.
En ese segundo set de datos hay cosas bastante importantes, como un puntero a los datos del mapa de tiles, los punteros al tileset global y local, y las dimensiones del mapa. Si modificas alguno de esos datos esa parte de la estructura cambiará, claro (los punteros que hay en el cabezal y la lista no).