Author Id: 15014 Author Name: Cheve_X Post Content: Bueno, antes que nada, debemos entender que éste tutorial será adaptado a cada Rom Base simplemente cambiando de Offsets, ya que todas funcionan de igual manera. Los offset serán diferenciados con los colores: Fire Red Ruby Esmeralda Parte Número 1: Conociendo la Data Bueno, los cabezales de mapas se organizan de las siguiente manera: En el Offset: 0x05524C 0x053324 0x084AA0 se encuentra la dirección a la Tabla de Cabezales de Mapas, en ésta Tabla, encontramos direcciones a las tablas de Mapas de cada cabezal. Las direcciones de las Tabla de Cabezales de Mapas son las siguientes: 71DeD0 308588 84AA0 Entonces, resumimos: Offset de Inicio > Dirección a Tabla de Cabezales > Cada dirección de Cabezal lleva a la Data de Cada mapa. Sabiendo ésto, es muy fácil realizar cualquier operación con los mapas y los cabezales. Ya sea que necesitemos Borrar mapas, Crear mapas, borrar cabezales, crear cabezales. Parte 2: Realizando Operaciones: Crear nuevos cabezales Ésto puede ser hecho mediante A-Map tranquilamente, llendo a éste menú e introduciendo la cantidad nueva de Cabezales que queremos: [IMG]http://img96.xooimage.com/files/f/9/7/sin-t-tulo-43c17d6.png[/IMG] Pero como soy un renegado de la vida, igual os voy a explicar como hacerlo en Hex :D Bueno, para agregar cabezales de mapa, será necesario repuntear nuestra tabla, ¿Como hacemos eso? sencillo, vamos al Offset donde se encuentra la dirección a nuestra tabla. (Es decir, vamos al offset 0x05524C 0x053324 0x084AA0 ) y allí vamos a necesitar poner un offset con espacio libre donde escribir nuestros nuevos cabezales... ¿Pero como sabemos cuanto espacio necesitaremos? Bueno, para saberlo, vamos a donde se encuentra nuestra tabla original: 71DeD0 308588 84AA0 Ahora, podemos fácilmente saber donde termina la tabla: [spoiler][IMG]http://img97.xooimage.com/files/7/6/8/sin-t-tulo-43c18ce.png[/IMG][/spoiler] Asi que para repuntear vamos a copiar toda esa data que está seleccionada en la imágen... La longitud de la data de cada Rom es FR: 0xAC RBY y EMER: 0x88, ésto es porque cada puntero utiliza 4 bytes, es decir, dirección permutada +08 (XX XX XX 08) contando el cabezal nº 0, si usamos AC, o 88, lo dividimos por 4 y lo pasamos a decimal nos dá la cantidad actual de cabezales de Mapas que tiene nuestra Rom. Bueno, ahora que copiamos eso, y sabemos lo que sabemos, lo vamos a pegar en un lugar con, al menos, 4 bytes más de espacio vacio. Entonces copiamos la Data y digamos que yo encontré como offset vacio 0x970000. (En Emerald me fuí al EEEEE0) Entonces voy a ese offset y pego la Data que copié antes: [spoiler][IMG]http://img98.xooimage.com/files/5/3/b/sin-t-tulo-43c1963.png[/IMG][/spoiler] Ahora, me dirijo al offset que me decía donde se encontraba mi tabla de cabezales 0x05524C 0x053324 0x084AA0 y reemplazo ese valor con el offset donde pege la nueva data. Ese Offset debe estar permutado y puesto como Pointer. Nuestro Offset: 970000 Permutado: 00 00 97 Como Pointer 00 00 97 08 Una vez que lo reemplazamos, le damos a guardar en nuestro editor HEX. Volvemos a ir a nuestra nueva tabla (En mi caso 0x970000 0x970000 0xEEEEE0 ) y ahora al final escribiremos un nuevo offset que deberá tener espacio libre según ésta formula: Mapas nuevos para el Cabezal * 4 Yo por ejemplo usaré el 0x980000 como mi dirección así que lo permuto y lo escribo a lo ultimo de mi nueva tabla (A partir de aquí solo sigo con FireRed ya que el procedimiento es exactamente el mismo en todas las bases) [IMG]http://img99.xooimage.com/files/0/9/3/sin-t-tulo-43c1a2b.png[/IMG] Bueno, ahora si quereís asignarle a ésta nueva cabecera un nuevo mapa, deberán hacerlo con A-Map, de la forma convencional, pero sabrán que no se estará sobreescribiendo nada. Ya que la data de los mapas cambia dependiendo de varias cosas jaja Ahora, yo dije que hibamos a jugar un poco no? pues ¿Que les pareces si arruinamos un poco la Rom o "jugamos con su sistema"? :3 Bueno, vayamos a nuestra tabla de cabezales y miremos la primer dirección: "Despermutada" sería 08 35 20 04, sin el 08 0x352004, es la dirección del cabezal 0; El cabezal 0 tiene 5 mapas, cada offset lleva a los datos de cada mapa. Ahora, si van a esa dirección podrán ver que el cabezal tiene "Espacio Reservado" (Si, ese espacio para insertar más mapas es el "Espacio Reservado" al que se refiere el A-Map) Ahora, volvamos a nuestra tabla, y vayamos al tercer cabezal. (352204) y copiemos el primer Offset permutado: 88 FF 34 08 ¿Que tal si lo pegamos en 0x352004 en un lugar de los "Reservados"? [IMG]http://img95.xooimage.com/files/1/1/e/sin-t-tulo-43c1b53.png[/IMG] Exactamente, ahora ambos cabezales comparten el mismo mapa Si borras éste offset de los cabezales, el mapa desaparecerá, pero sus datos seguirán allí. Aunque supongo que llendo un poco más a fondo se puede saber qué datos borrar y cuales no para hacer que un mapa se convierta en "Espacio Vacio" o "FF's" Aunque no es nada muy específico lo que se enseñó aquí espero que hayan aprendido algo de como están estructurados los cabezales de los mapas y que en un futuro les sirva para algo. Un saludo y nos vemos en otro tutorial.