Sí, lo se, este es un tutorial más bien estético. Sin embargo, bien viene librarse un poco de tantos mapas molestos que estorban el Porymap.
Este tutorial es medio avanzado así que tengan cuidado porque hacerlo mal puede tener malas repercuciones
Adicionalmente, si añades MAPSEC nuevos, estos quedarán al final de la lista y tendrás que navegar un montón con la ruedita del mouse hasta el final de la lista.
Este tutorial es parte de una trilogía de tutoriales de MAPSEC de Porymap que iré subiendo para mejorar la experiencia.
Game Freak fue fundado el 26 de abril de 1989 por gente que no sabía program... ¡NO TAN ATRÁS!
[...]
Luego de la llegada de la tercera generación de Pokémon a la GBA, surgieron los remakes de Pokémon Red y Pokémon Green. Para esto, GameFreak utilizó el motor de Pokémon Rubí y Zafiro, añadiendo alguna que otra funcionalidad y removiendo otras (como las bayas). Ya entrados en el año 2004, decidieron sacar Pokémon Esmeralda el cual volvía a contar la historia de Rubí y Zafiro, pero con muchísimas mejoras y usando otras funcionalidades que venían de Rojo Fuego y Verde Hoja.
Al final, el códifo fuente de Esmeralda terminó hecho una colcha de retazos de código que venían de RS, FR-LG y su propio código nuevo. Esto explica por qué, entre la nomenclatura interna de los mapas originales de RS y los introducidos en Esmeralda aparecen en la mitad un montón de mapas de Kanto que no deberían estar ahí.
Game Freak, en vez de haber removido esa parte inútil del código, la dejó allí y para evitar los problemas de conteo decidió crear algunos macros interesantes como:
¿Qué significa esto?
KANTO_MAPSEC_START indica donde empiezan los mapas de Kanto (es decir en Pueblo Paleta).
KANTO_MAPSEC_END indica donde terminan los mapas de Kanto (es decir en Special Area que venga tú a saber donde es esa chimbada).
KANTO_MAPSEC_COUNT indica donde cuantos mapas de Kanto hay.
De este modo Game Freak podíamuy chambón-elegantemente saltarse los mapas de Kanto internamente. Y eso explicaba códigos como éste:
(perdón)
Ahora sí vamos a lo que nos importa.
Primero, vamos a hacer una cirugía en
Es decir, desde MAPSEC_PALLET_TOWN, hasta MAPSEC_SPECIAL_AREA.
Ahora habrá que cambiar manualmente los macros de los mapas nativos de Emerald para que sigan consecutivos a los de Hoenn (y en caso de existir también los propios que hayas agregado).
Si quieres optimizar el proceso puedes seguir estos pasos:
Ahora, deberíamos borrar/comentar también estas líneas:
Sergundo: Borrar también las líneas de la estructura
Este paso puede ser complicado, porque Porymap organiza esta lista en orden alfabético cada tanto.
Aquí mi recomendación es dejar que VSCode te muestre que líneas tienen errores (porque los MAPSEC ya no existen y borrarlas usando CTRL+X (para borrar la línea entera). Si no tienes esta funcionalidad en VSCode, tendrías que revisar la lista que te compartí con todas los MAPSEC borrados y usando el buscador irlas borrando una a una.
Opcional: No es necesario eliminar los map name (puesto que no se se llaman en ningún otro lado así que podrías dejarlos. Pero si quieres los puedes eliminar:
Tercero: Ya que nos libramos del KANTO_MAPSEC_COUNT tenemos que eliminarlo donde aparezca:
En
Borramos el « - KANTO_MAPSEC_COUNT» (podemos usar CTRL+D para tener una selección múltiple o usar el buscar y reemplazar) en todas las líneas que lo contengan (opcionalmente podemos también definirlo como 0 en
Debería quedar así:
Más abajo en la línea 377, eliminamos o comentamos las siguientes líneas:
Finalmente en
Ahora compila y verifica que el juego corra.
Abre Porymap, recarga el proyecto y comprueba que funcione
¡No más mapas vacíos de Kanto que interrumpen la navegación!
Este tutorial es el primer video de un trilogía que tengo preparada sobre MAPSECS y Porymap.
¿Quieres insertar un nuevo MAPSEC?
¿Quieres que los MAPSEC nuevos aparezcan de primero y no de últimos?
Se despide Juanjo.
Este tutorial es medio avanzado así que tengan cuidado porque hacerlo mal puede tener malas repercuciones
MOTIVACIÓN
Seguro que si has usado Porymap, habrás notado que existen un montón de carpetas vacías de Kanto que no vale la pena que estén allí, ya que hacen tediosa la navegación hacia los mapas nuevos y añaden mucha contaminación visual cuando quieras buscar los mapas que hayas creado.
Adicionalmente, si añades MAPSEC nuevos, estos quedarán al final de la lista y tendrás que navegar un montón con la ruedita del mouse hasta el final de la lista.
Este tutorial es parte de una trilogía de tutoriales de MAPSEC de Porymap que iré subiendo para mejorar la experiencia.
¡Pero primero, vamos a ver algo de historia!
[...]
Luego de la llegada de la tercera generación de Pokémon a la GBA, surgieron los remakes de Pokémon Red y Pokémon Green. Para esto, GameFreak utilizó el motor de Pokémon Rubí y Zafiro, añadiendo alguna que otra funcionalidad y removiendo otras (como las bayas). Ya entrados en el año 2004, decidieron sacar Pokémon Esmeralda el cual volvía a contar la historia de Rubí y Zafiro, pero con muchísimas mejoras y usando otras funcionalidades que venían de Rojo Fuego y Verde Hoja.
Al final, el códifo fuente de Esmeralda terminó hecho una colcha de retazos de código que venían de RS, FR-LG y su propio código nuevo. Esto explica por qué, entre la nomenclatura interna de los mapas originales de RS y los introducidos en Esmeralda aparecen en la mitad un montón de mapas de Kanto que no deberían estar ahí.
Game Freak, en vez de haber removido esa parte inútil del código, la dejó allí y para evitar los problemas de conteo decidió crear algunos macros interesantes como:
C:
#define KANTO_MAPSEC_START MAPSEC_PALLET_TOWN
#define KANTO_MAPSEC_END MAPSEC_SPECIAL_AREA
#define KANTO_MAPSEC_COUNT (KANTO_MAPSEC_END - KANTO_MAPSEC_START + 1)
KANTO_MAPSEC_START indica donde empiezan los mapas de Kanto (es decir en Pueblo Paleta).
KANTO_MAPSEC_END indica donde terminan los mapas de Kanto (es decir en Special Area que venga tú a saber donde es esa chimbada).
KANTO_MAPSEC_COUNT indica donde cuantos mapas de Kanto hay.
De este modo Game Freak podía
(perdón)
C:
if (regionMapSectionId >= KANTO_MAPSEC_START)
{
if (regionMapSectionId > KANTO_MAPSEC_END)
regionMapSectionId -= KANTO_MAPSEC_COUNT;
else
regionMapSectionId = 0; // Discard kanto region sections;
}
¿CÓMO ELIMINAR LOS MAPSEC DE KANTO SIN MORIR EN EL INTENTO?
Para este tutorial necesitaremos:
- VisualStudioCode (O cualquier IDE de tu gusto, Notepad para los valientes >:V )
- Porymap (Opcional xD)
Primero, vamos a hacer una cirugía en
include/constants/region_map_sections.h
donde removeremos todos los mapas de KANTO (si no quieres borrarlos, puedes comentarlos también).Es decir, desde MAPSEC_PALLET_TOWN, hasta MAPSEC_SPECIAL_AREA.
C:
#define MAPSEC_PALLET_TOWN 0x58
#define MAPSEC_VIRIDIAN_CITY 0x59
#define MAPSEC_PEWTER_CITY 0x5A
#define MAPSEC_CERULEAN_CITY 0x5B
#define MAPSEC_LAVENDER_TOWN 0x5C
#define MAPSEC_VERMILION_CITY 0x5D
#define MAPSEC_CELADON_CITY 0x5E
#define MAPSEC_FUCHSIA_CITY 0x5F
#define MAPSEC_CINNABAR_ISLAND 0x60
#define MAPSEC_INDIGO_PLATEAU 0x61
#define MAPSEC_SAFFRON_CITY 0x62
#define MAPSEC_ROUTE_4_FLYDUP 0x63
#define MAPSEC_ROUTE_10_FLYDUP 0x64
#define MAPSEC_ROUTE_1 0x65
#define MAPSEC_ROUTE_2 0x66
#define MAPSEC_ROUTE_3 0x67
#define MAPSEC_ROUTE_4 0x68
#define MAPSEC_ROUTE_5 0x69
#define MAPSEC_ROUTE_6 0x6A
#define MAPSEC_ROUTE_7 0x6B
#define MAPSEC_ROUTE_8 0x6C
#define MAPSEC_ROUTE_9 0x6D
#define MAPSEC_ROUTE_10 0x6E
#define MAPSEC_ROUTE_11 0x6F
#define MAPSEC_ROUTE_12 0x70
#define MAPSEC_ROUTE_13 0x71
#define MAPSEC_ROUTE_14 0x72
#define MAPSEC_ROUTE_15 0x73
#define MAPSEC_ROUTE_16 0x74
#define MAPSEC_ROUTE_17 0x75
#define MAPSEC_ROUTE_18 0x76
#define MAPSEC_ROUTE_19 0x77
#define MAPSEC_ROUTE_20 0x78
#define MAPSEC_ROUTE_21 0x79
#define MAPSEC_ROUTE_22 0x7A
#define MAPSEC_ROUTE_23 0x7B
#define MAPSEC_ROUTE_24 0x7C
#define MAPSEC_ROUTE_25 0x7D
#define MAPSEC_VIRIDIAN_FOREST 0x7E
#define MAPSEC_MT_MOON 0x7F
#define MAPSEC_S_S_ANNE 0x80
#define MAPSEC_UNDERGROUND_PATH 0x81
#define MAPSEC_UNDERGROUND_PATH_2 0x82
#define MAPSEC_DIGLETTS_CAVE 0x83
#define MAPSEC_KANTO_VICTORY_ROAD 0x84
#define MAPSEC_ROCKET_HIDEOUT 0x85
#define MAPSEC_SILPH_CO 0x86
#define MAPSEC_POKEMON_MANSION 0x87
#define MAPSEC_KANTO_SAFARI_ZONE 0x88
#define MAPSEC_POKEMON_LEAGUE 0x89
#define MAPSEC_ROCK_TUNNEL 0x8A
#define MAPSEC_SEAFOAM_ISLANDS 0x8B
#define MAPSEC_POKEMON_TOWER 0x8C
#define MAPSEC_CERULEAN_CAVE 0x8D
#define MAPSEC_POWER_PLANT 0x8E
#define MAPSEC_ONE_ISLAND 0x8F
#define MAPSEC_TWO_ISLAND 0x90
#define MAPSEC_THREE_ISLAND 0x91
#define MAPSEC_FOUR_ISLAND 0x92
#define MAPSEC_FIVE_ISLAND 0x93
#define MAPSEC_SEVEN_ISLAND 0x94
#define MAPSEC_SIX_ISLAND 0x95
#define MAPSEC_KINDLE_ROAD 0x96
#define MAPSEC_TREASURE_BEACH 0x97
#define MAPSEC_CAPE_BRINK 0x98
#define MAPSEC_BOND_BRIDGE 0x99
#define MAPSEC_THREE_ISLE_PORT 0x9A
#define MAPSEC_SEVII_ISLE_6 0x9B
#define MAPSEC_SEVII_ISLE_7 0x9C
#define MAPSEC_SEVII_ISLE_8 0x9D
#define MAPSEC_SEVII_ISLE_9 0x9E
#define MAPSEC_RESORT_GORGEOUS 0x9F
#define MAPSEC_WATER_LABYRINTH 0xA0
#define MAPSEC_FIVE_ISLE_MEADOW 0xA1
#define MAPSEC_MEMORIAL_PILLAR 0xA2
#define MAPSEC_OUTCAST_ISLAND 0xA3
#define MAPSEC_GREEN_PATH 0xA4
#define MAPSEC_WATER_PATH 0xA5
#define MAPSEC_RUIN_VALLEY 0xA6
#define MAPSEC_TRAINER_TOWER 0xA7
#define MAPSEC_CANYON_ENTRANCE 0xA8
#define MAPSEC_SEVAULT_CANYON 0xA9
#define MAPSEC_TANOBY_RUINS 0xAA
#define MAPSEC_SEVII_ISLE_22 0xAB
#define MAPSEC_SEVII_ISLE_23 0xAC
#define MAPSEC_SEVII_ISLE_24 0xAD
#define MAPSEC_NAVEL_ROCK_FRLG 0xAE
#define MAPSEC_MT_EMBER 0xAF
#define MAPSEC_BERRY_FOREST 0xB0
#define MAPSEC_ICEFALL_CAVE 0xB1
#define MAPSEC_ROCKET_WAREHOUSE 0xB2
#define MAPSEC_TRAINER_TOWER_2 0xB3
#define MAPSEC_DOTTED_HOLE 0xB4
#define MAPSEC_LOST_CAVE 0xB5
#define MAPSEC_PATTERN_BUSH 0xB6
#define MAPSEC_ALTERING_CAVE_FRLG 0xB7
#define MAPSEC_TANOBY_CHAMBERS 0xB8
#define MAPSEC_THREE_ISLE_PATH 0xB9
#define MAPSEC_TANOBY_KEY 0xBA
#define MAPSEC_BIRTH_ISLAND_FRLG 0xBB
#define MAPSEC_MONEAN_CHAMBER 0xBC
#define MAPSEC_LIPTOO_CHAMBER 0xBD
#define MAPSEC_WEEPTH_CHAMBER 0xBE
#define MAPSEC_DILFORD_CHAMBER 0xBF
#define MAPSEC_SCUFIB_CHAMBER 0xC0
#define MAPSEC_RIXY_CHAMBER 0xC1
#define MAPSEC_VIAPOIS_CHAMBER 0xC2
#define MAPSEC_EMBER_SPA 0xC3
#define MAPSEC_SPECIAL_AREA 0xC4
Ahora habrá que cambiar manualmente los macros de los mapas nativos de Emerald para que sigan consecutivos a los de Hoenn (y en caso de existir también los propios que hayas agregado).
Si quieres optimizar el proceso puedes seguir estos pasos:
Simplementa redefine los mapas de Emerald así
C:
#define MAPSEC_AQUA_HIDEOUT 0x58
#define MAPSEC_MAGMA_HIDEOUT 0x59
#define MAPSEC_MIRAGE_TOWER 0x5A
#define MAPSEC_BIRTH_ISLAND 0x5B
#define MAPSEC_FARAWAY_ISLAND 0x5C
#define MAPSEC_ARTISAN_CAVE 0x5D
#define MAPSEC_MARINE_CAVE 0x5E
#define MAPSEC_UNDERWATER_MARINE_CAVE 0x5F
#define MAPSEC_TERRA_CAVE 0x60
#define MAPSEC_UNDERWATER_105 0x61
#define MAPSEC_UNDERWATER_125 0x62
#define MAPSEC_UNDERWATER_129 0x63
#define MAPSEC_DESERT_UNDERPASS 0x64
#define MAPSEC_ALTERING_CAVE 0x65
#define MAPSEC_NAVEL_ROCK 0x66
#define MAPSEC_TRAINER_HILL 0x67
Ahora, deberíamos borrar/comentar también estas líneas:
C:
#define KANTO_MAPSEC_START MAPSEC_PALLET_TOWN
#define KANTO_MAPSEC_END MAPSEC_SPECIAL_AREA
#define KANTO_MAPSEC_COUNT (KANTO_MAPSEC_END - KANTO_MAPSEC_START + 1)
Sergundo: Borrar también las líneas de la estructura
gRegionMapEntries
que contengan los mapas de Kanto en src/data/region_map/region_map_entries.h
Este paso puede ser complicado, porque Porymap organiza esta lista en orden alfabético cada tanto.
Aquí mi recomendación es dejar que VSCode te muestre que líneas tienen errores (porque los MAPSEC ya no existen y borrarlas usando CTRL+X (para borrar la línea entera). Si no tienes esta funcionalidad en VSCode, tendrías que revisar la lista que te compartí con todas los MAPSEC borrados y usando el buscador irlas borrando una a una.
Si no has insertado muchos MAPSEC ( o incluso mejor, si no has creado ningún MAPSEC) nuevos tal vez te rentaría copiar las líneas con los MAPSEC tuyos en un bloc de notas temporalmente.
Reemplaza la struct
¡NO OLVIDES AÑADIR DE NUEVO LOS MAPSEC PROPIOS AL FINAL!!!
Reemplaza la struct
gRegionMapEntries
con ésta (a la que le he removido las líneas con los MAPSEC de KANTO.
C:
const struct RegionMapLocation gRegionMapEntries[] = {
[MAPSEC_ABANDONED_SHIP] = {6, 14, 1, 1, sMapName_AbandonedShip},
[MAPSEC_ALTERING_CAVE] = {6, 8, 1, 1, sMapName_AlteringCave},
[MAPSEC_AQUA_HIDEOUT] = {19, 3, 1, 1, sMapName_AquaHideout},
[MAPSEC_AQUA_HIDEOUT_OLD] = {19, 3, 1, 1, sMapName_AquaHideoutOld},
[MAPSEC_ARTISAN_CAVE] = {22, 12, 1, 1, sMapName_ArtisanCave},
[MAPSEC_BATTLE_FRONTIER] = {22, 12, 1, 1, sMapName_BattleFrontier},
[MAPSEC_BIRTH_ISLAND] = {0, 0, 1, 1, sMapName_BirthIsland},
[MAPSEC_CAVE_OF_ORIGIN] = {21, 7, 1, 1, sMapName_CaveOfOrigin},
[MAPSEC_DESERT_RUINS] = {8, 3, 1, 1, sMapName_DesertRuins},
[MAPSEC_DESERT_UNDERPASS] = {2, 0, 1, 1, sMapName_DesertUnderpass},
[MAPSEC_DEWFORD_TOWN] = {2, 14, 1, 1, sMapName_DewfordTown},
[MAPSEC_DYNAMIC] = {0, 0, 1, 1, sMapName_None},
[MAPSEC_EVER_GRANDE_CITY] = {27, 8, 1, 2, sMapName_EverGrandeCity},
[MAPSEC_FALLARBOR_TOWN] = {3, 0, 1, 1, sMapName_FallarborTown},
[MAPSEC_FARAWAY_ISLAND] = {0, 0, 1, 1, sMapName_FarawayIsland},
[MAPSEC_FIERY_PATH] = {6, 3, 1, 1, sMapName_FieryPath},
[MAPSEC_FIERY_PATH2] = {7, 3, 1, 1, sMapName_FieryPath},
[MAPSEC_FORTREE_CITY] = {12, 0, 1, 1, sMapName_FortreeCity},
[MAPSEC_GRANITE_CAVE] = {1, 13, 1, 1, sMapName_GraniteCave},
[MAPSEC_INSIDE_OF_TRUCK] = {0, 0, 1, 1, sMapName_InsideOfTruck},
[MAPSEC_ISLAND_CAVE] = {0, 10, 1, 1, sMapName_IslandCave},
[MAPSEC_JAGGED_PASS] = {6, 3, 1, 1, sMapName_JaggedPass},
[MAPSEC_JAGGED_PASS2] = {7, 2, 1, 1, sMapName_JaggedPass},
[MAPSEC_LAVARIDGE_TOWN] = {5, 3, 1, 1, sMapName_LavaridgeTown},
[MAPSEC_LILYCOVE_CITY] = {18, 3, 2, 1, sMapName_LilycoveCity},
[MAPSEC_LITTLEROOT_TOWN] = {4, 11, 1, 1, sMapName_LittlerootTown},
[MAPSEC_MAGMA_HIDEOUT] = {6, 3, 1, 1, sMapName_MagmaHideout},
[MAPSEC_MARINE_CAVE] = {0, 0, 1, 1, sMapName_MarineCave},
[MAPSEC_MAUVILLE_CITY] = {8, 6, 2, 1, sMapName_MauvilleCity},
[MAPSEC_METEOR_FALLS] = {0, 3, 1, 1, sMapName_MeteorFalls},
[MAPSEC_METEOR_FALLS2] = {1, 2, 1, 1, sMapName_MeteorFalls},
[MAPSEC_MIRAGE_ISLAND] = {17, 10, 1, 1, sMapName_MirageIsland},
[MAPSEC_MIRAGE_TOWER] = {8, 2, 1, 1, sMapName_MirageTower},
[MAPSEC_MOSSDEEP_CITY] = {24, 5, 2, 1, sMapName_MossdeepCity},
[MAPSEC_MT_CHIMNEY] = {6, 2, 1, 1, sMapName_MtChimney},
[MAPSEC_MT_PYRE] = {16, 4, 1, 1, sMapName_MtPyre},
[MAPSEC_NAVEL_ROCK] = {0, 0, 1, 1, sMapName_NavelRock},
[MAPSEC_NEW_MAUVILLE] = {8, 7, 1, 1, sMapName_NewMauville},
[MAPSEC_OLDALE_TOWN] = {4, 9, 1, 1, sMapName_OldaleTown},
[MAPSEC_PACIFIDLOG_TOWN] = {17, 10, 1, 1, sMapName_PacifidlogTown},
[MAPSEC_PETALBURG_CITY] = {1, 9, 1, 1, sMapName_PetalburgCity},
[MAPSEC_PETALBURG_WOODS] = {0, 8, 1, 1, sMapName_PetalburgWoods},
[MAPSEC_ROUTE_101] = {4, 10, 1, 1, sMapName_Route101},
[MAPSEC_ROUTE_102] = {2, 9, 2, 1, sMapName_Route102},
[MAPSEC_ROUTE_103] = {4, 8, 4, 1, sMapName_Route103},
[MAPSEC_ROUTE_104] = {0, 7, 1, 3, sMapName_Route104},
[MAPSEC_ROUTE_105] = {0, 10, 1, 3, sMapName_Route105},
[MAPSEC_ROUTE_106] = {0, 13, 2, 1, sMapName_Route106},
[MAPSEC_ROUTE_107] = {3, 14, 3, 1, sMapName_Route107},
[MAPSEC_ROUTE_108] = {6, 14, 2, 1, sMapName_Route108},
[MAPSEC_ROUTE_109] = {8, 12, 1, 3, sMapName_Route109},
[MAPSEC_ROUTE_110] = {8, 7, 1, 3, sMapName_Route110},
[MAPSEC_ROUTE_111] = {8, 0, 1, 6, sMapName_Route111},
[MAPSEC_ROUTE_112] = {6, 3, 2, 1, sMapName_Route112},
[MAPSEC_ROUTE_113] = {4, 0, 4, 1, sMapName_Route113},
[MAPSEC_ROUTE_114] = {1, 0, 2, 3, sMapName_Route114},
[MAPSEC_ROUTE_115] = {0, 2, 1, 3, sMapName_Route115},
[MAPSEC_ROUTE_116] = {1, 5, 4, 1, sMapName_Route116},
[MAPSEC_ROUTE_117] = {5, 6, 3, 1, sMapName_Route117},
[MAPSEC_ROUTE_118] = {10, 6, 2, 1, sMapName_Route118},
[MAPSEC_ROUTE_119] = {11, 0, 1, 6, sMapName_Route119},
[MAPSEC_ROUTE_120] = {13, 0, 1, 4, sMapName_Route120},
[MAPSEC_ROUTE_121] = {14, 3, 4, 1, sMapName_Route121},
[MAPSEC_ROUTE_122] = {16, 4, 1, 2, sMapName_Route122},
[MAPSEC_ROUTE_123] = {12, 6, 5, 1, sMapName_Route123},
[MAPSEC_ROUTE_124] = {20, 3, 4, 3, sMapName_Route124},
[MAPSEC_ROUTE_125] = {24, 3, 2, 2, sMapName_Route125},
[MAPSEC_ROUTE_126] = {20, 6, 3, 3, sMapName_Route126},
[MAPSEC_ROUTE_127] = {23, 6, 3, 3, sMapName_Route127},
[MAPSEC_ROUTE_128] = {23, 9, 4, 1, sMapName_Route128},
[MAPSEC_ROUTE_129] = {24, 10, 2, 1, sMapName_Route129},
[MAPSEC_ROUTE_130] = {21, 10, 3, 1, sMapName_Route130},
[MAPSEC_ROUTE_131] = {18, 10, 3, 1, sMapName_Route131},
[MAPSEC_ROUTE_132] = {15, 10, 2, 1, sMapName_Route132},
[MAPSEC_ROUTE_133] = {12, 10, 3, 1, sMapName_Route133},
[MAPSEC_ROUTE_134] = {9, 10, 3, 1, sMapName_Route134},
[MAPSEC_RUSTBORO_CITY] = {0, 5, 1, 2, sMapName_RustboroCity},
[MAPSEC_RUSTURF_TUNNEL] = {2, 5, 1, 1, sMapName_RusturfTunnel},
[MAPSEC_SAFARI_ZONE] = {16, 2, 1, 1, sMapName_SafariZone},
[MAPSEC_SCORCHED_SLAB] = {13, 0, 1, 1, sMapName_ScorchedSlab},
[MAPSEC_SEAFLOOR_CAVERN] = {24, 9, 1, 1, sMapName_SeafloorCavern},
[MAPSEC_SEALED_CHAMBER] = {11, 10, 1, 1, sMapName_SealedChamber},
[MAPSEC_SECRET_BASE] = {0, 0, 1, 1, sMapName_SecretBase},
[MAPSEC_SHOAL_CAVE] = {24, 4, 1, 1, sMapName_ShoalCave},
[MAPSEC_SKY_PILLAR] = {19, 10, 1, 1, sMapName_SkyPillar},
[MAPSEC_SLATEPORT_CITY] = {8, 10, 1, 2, sMapName_SlateportCity},
[MAPSEC_SOOTOPOLIS_CITY] = {21, 7, 1, 1, sMapName_SootopolisCity},
[MAPSEC_SOUTHERN_ISLAND] = {12, 14, 1, 1, sMapName_SouthernIsland},
[MAPSEC_TERRA_CAVE] = {0, 0, 1, 1, sMapName_TerraCave},
[MAPSEC_TRAINER_HILL] = {8, 4, 1, 1, sMapName_TrainerHill},
[MAPSEC_UNDERWATER_105] = {0, 10, 1, 3, sMapName_Underwater},
[MAPSEC_UNDERWATER_124] = {20, 3, 4, 3, sMapName_Underwater},
[MAPSEC_UNDERWATER_125] = {24, 3, 2, 2, sMapName_Underwater},
[MAPSEC_UNDERWATER_126] = {20, 6, 3, 3, sMapName_Underwater},
[MAPSEC_UNDERWATER_127] = {23, 6, 3, 3, sMapName_Underwater},
[MAPSEC_UNDERWATER_128] = {23, 9, 4, 1, sMapName_Underwater},
[MAPSEC_UNDERWATER_129] = {24, 10, 2, 1, sMapName_Underwater},
[MAPSEC_UNDERWATER_MARINE_CAVE] = {0, 0, 1, 1, sMapName_Underwater},
[MAPSEC_UNDERWATER_SEAFLOOR_CAVERN] = {24, 9, 1, 1, sMapName_Underwater},
[MAPSEC_UNDERWATER_SEALED_CHAMBER] = {11, 10, 1, 1, sMapName_Underwater},
[MAPSEC_UNDERWATER_SOOTOPOLIS] = {21, 7, 1, 1, sMapName_Underwater},
[MAPSEC_VERDANTURF_TOWN] = {4, 6, 1, 1, sMapName_VerdanturfTown},
[MAPSEC_VICTORY_ROAD] = {27, 9, 1, 1, sMapName_VictoryRoad},
};
Opcional: No es necesario eliminar los map name (puesto que no se se llaman en ningún otro lado así que podrías dejarlos. Pero si quieres los puedes eliminar:
static const u8 sMapName_PalletTown[] = _("PALLET TOWN"); ...
Tercero: Ya que nos libramos del KANTO_MAPSEC_COUNT tenemos que eliminarlo donde aparezca:
En
src/map_name_popup.c
, línea 151:
C:
[MAPSEC_AQUA_HIDEOUT - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_MAGMA_HIDEOUT - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_MIRAGE_TOWER - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_BIRTH_ISLAND - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_WOOD,
[MAPSEC_FARAWAY_ISLAND - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_WOOD,
[MAPSEC_ARTISAN_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_MARINE_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_UNDERWATER_MARINE_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
[MAPSEC_TERRA_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_UNDERWATER_105 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
[MAPSEC_UNDERWATER_125 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
[MAPSEC_UNDERWATER_129 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
[MAPSEC_DESERT_UNDERPASS - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_ALTERING_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_NAVEL_ROCK - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_TRAINER_HILL - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_MARBLE,
include/constants/region_map_sections.h
si son peresozos y no queremos eleminar este término de las líneas)Debería quedar así:
[MAPSEC_MAGMA_HIDEOUT] = MAPPOPUP_THEME_STONE, ....
Más abajo en la línea 377, eliminamos o comentamos las siguientes líneas:
C:
if (regionMapSectionId >= KANTO_MAPSEC_START)
{
if (regionMapSectionId > KANTO_MAPSEC_END)
regionMapSectionId -= KANTO_MAPSEC_COUNT;
else
regionMapSectionId = 0; // Discard kanto region sections;
}
src/tv.c
Eliminamos las líneas que dejo comentadas (las que usan el KANTO_MAPSEC:
C:
void SanitizeTVShowLocationsForRuby(TVShow *shows)
{
int i;
for (i = 0; i < LAST_TVSHOW_IDX; i++)
{
switch (shows[i].common.kind)
{
case TVSHOW_WORLD_OF_MASTERS:
// if (shows[i].worldOfMasters.location > KANTO_MAPSEC_START)
// memset(&shows[i], 0, sizeof(TVShow));
break;
case TVSHOW_POKEMON_TODAY_FAILED:
// if (shows[i].pokemonTodayFailed.location > KANTO_MAPSEC_START)
// memset(&shows[i], 0, sizeof(TVShow));
break;
}
}
}
Abre Porymap, recarga el proyecto y comprueba que funcione
¡No más mapas vacíos de Kanto que interrumpen la navegación!
Este tutorial es el primer video de un trilogía que tengo preparada sobre MAPSECS y Porymap.
¿Quieres insertar un nuevo MAPSEC?
¿Quieres que los MAPSEC nuevos aparezcan de primero y no de últimos?
Se despide Juanjo.
Adjuntos
-
218,9 KB Visitas: 500
Última edición: