Este tutorial está basado en el tuto de Samug en Pokecomunity . Lo traigo a la luz porque me parece relevante para la trilogía de tutos sobre MAPSECS y Porymap que estoy desarrollando. Te recomiendo revisar el primero aquí:
TRILOGÍA DE LOS MAPSEC:
Primero, vamos
Y añade el nuevo mapa justo antes del MAPSEC_NONE y procurando actualizar el MAPSEC_NONE sumándole uno más:
Si has removido los MAPSEC de Kanto, entonces es posible que no tengas que mover el MAPSEC_NONE, puesto que tendrás espacio disponible desde el 0x58 hasta el 0xD5
Compila el juego.
Segundo, Usando Porymap (después de recaragr el projecto) asigna el mapa que quieras al nuevo MAPSEC. (también podrías hacerlo en
Tercero, También será necesario añadir el MapName en
Y más abajo vincularla con el MAPSEC previamente creado, usando la estructura
Donde x e y vendrían siendo las coordenadas X,Y del mapa regional donde quieras ubicar el mapa) (se pueden ver en el editor de mapas de Porymap)
Cuarto, hora de añadir el letrero de entrada con el nombre del mapa en
NOTA: Si has seguido el tutorial para remover los MAPSEC de Kanto, no será necesario incluir la resta del KANTO_MAPSEC_COUNT sino que lo puedes dejar normal
Quinto, (únicamente si has tenido que cambiar el MAPSEC_NONE)
Y aquí tienes mapas nuevos en el Porymap....
Aún así, sigue siendo poco práctico tener que desplazarte hasta el final para ver tus mapas nuevos. Mientras que los originales de Emerald que probablemente nunca vayas a tocar sigan de primeros.
¿Es posible cambiar esto?
Lo veremos en la parte final de esta trilogía.
Se despide Juanjo
TRILOGÍA DE LOS MAPSEC:
- Elimina los MAPSEC de Kanto
- Insertar nuevos MAPSECS (Estás aquí)
- Muestra tus mapas primero y no último en Porymap
- VisualStudioCode (O cualquier IDE de tu gusto, Notepad para los valientes >:V )
- Porymap (Esta vez no es opcional)
- Editor hexadecimal (preferentemente HxD)
ekisdé
Primero, vamos
include/constants/region_map_sections.h
hasta encontrar
C:
#define MAPSEC_TRAINER_HILL 0xD4
#define MAPSEC_NONE 0xD5
Código:
#define MAPSEC_TRAINER_HILL 0xD4
// Nuevos Mapas
#define MAPSEC_NUEVA_AREA 0xD5
#define MAPSEC_NONE 0xD6
En cuyo caso deberás buscar el último de los mapas de Esmeralda, es decir, el TRAINER_HILL
En este caso, al hacer la operación 0xD4 - 0xC5 + FIX_MAPSEC_KANTO obtenemos el 0x67.
Técnicamente puedes añadir nuevos MAPSEC sin problema hasta llegar al D4. A partir de ahí tendrás que mover el MAPSEC_NONE como se explica en este tutorial.
Código:
...
#define MAPSEC_TRAINER_HILL 0x67 //0xD4 - 0xC5 + FIX_MAPSEC_KANTO
// Nuevos Mapas
#define MAPSEC_NUEVA_AREA 0x68
#define MAPSEC_NONE 0xD5
Técnicamente puedes añadir nuevos MAPSEC sin problema hasta llegar al D4. A partir de ahí tendrás que mover el MAPSEC_NONE como se explica en este tutorial.
Compila el juego.
Segundo, Usando Porymap (después de recaragr el projecto) asigna el mapa que quieras al nuevo MAPSEC. (también podrías hacerlo en
data/maps/NuevaArea/map.json
añdiendo la línea:
C:
"region_map_section": "MAPSEC_NUEVA_AREA",
src/data/region_map/region_map_entries.h
:
Código:
static const u8 sMapName_TrainerHill[] = _("TRAINER HILL");
static const u8 sMapName_NewArea[] = _("NUEVA AREA");
gRegionMapEntries
C:
[MAPSEC_NEW_AREA] = {x, y, 1, 1, sMapName_NewArea},
Cuarto, hora de añadir el letrero de entrada con el nombre del mapa en
src/map_name_popup.c
en la lista gRegionMapSectionId_To_PopUpThemeIdMapping y usar el tipo de letero deseado. (en mi caso usaré madera) :
C:
[MAPSEC_NUEVA_AREA - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_WOOD,
[MAPSEC_NUEVA_AREA] = MAPPOPUP_THEME_WOOD,
Quinto, (únicamente si has tenido que cambiar el MAPSEC_NONE)
Si haz movido el MAPSEC_NONE para añadir un mapa nuevo, entonces habrás corrompido los datos de las ubicaciones del mapa, (Ya que estos están en un fichero hexadecimal y en que las zonas sin mapa apuntan al 0xD5 o a donde se supone de debe estar el MAPSEC_NONE. Al añadir un nuevo mapa con esta dirección 0xD5, le haces creer al juego que tu mapa es vacío y debería estar en cualquier parte.
En este caso, Samug utiliza el NAVEL_ROCK2, que está definido como 0xD3. Guarda y abramos
Ahora tenemos que actualizar todas las 0xD5 (antiguo MAPSEC_NONE) al nuevo (en este caso 0xD6):
Ahora simplemente recaragamos Porymap de nuevo y reemplazamos el lugar donde habíamos puesto el NAVEL_ROCK2 con nuestro mapa nuevo.
Felicidades haz arreglado la corrupción!!! y aprendido a mover el MAPSEC_NONE para futuros mapas nuevos. Aunque reocmendaría simplemente elimianar los de Kanto y así no tendrías que mover el MAPSEC_NONE
Créditos Samug (Pokecomunity)
Lo primero que debemos hacer es seleccionar el lugar donde realmente queramos que esté ubicado nuestro mapa. Y asignarle un mapa cualquiera que no sea el nuevo ni el MAPSEC_NONE.En este caso, Samug utiliza el NAVEL_ROCK2, que está definido como 0xD3. Guarda y abramos
graphics/pokenav/region_map_section_layout.bin
con un editor hexadecimal.Ahora tenemos que actualizar todas las 0xD5 (antiguo MAPSEC_NONE) al nuevo (en este caso 0xD6):
Ahora simplemente recaragamos Porymap de nuevo y reemplazamos el lugar donde habíamos puesto el NAVEL_ROCK2 con nuestro mapa nuevo.
Felicidades haz arreglado la corrupción!!! y aprendido a mover el MAPSEC_NONE para futuros mapas nuevos. Aunque reocmendaría simplemente elimianar los de Kanto y así no tendrías que mover el MAPSEC_NONE
Y aquí tienes mapas nuevos en el Porymap....
Aún así, sigue siendo poco práctico tener que desplazarte hasta el final para ver tus mapas nuevos. Mientras que los originales de Emerald que probablemente nunca vayas a tocar sigan de primeros.
¿Es posible cambiar esto?
Lo veremos en la parte final de esta trilogía.
Se despide Juanjo
Última edición: