Registrarse

[Map Editing] Todo lo necesario para modificar o crear el mapa de una región

Crystal_

Héroe de WaH
.
.


Contenidos
  • Map Header
  • Secondary Map Header
  • Localización en el Town Map
  • Flypoints y Blackout Points
  • Conectando Mapas
  • Añadiendo Pokemon Salvajes


Introducción

Este tutorial esta pensado para proporcionar al lector toda la información necesaria a la hora de trabajar con mapas. El tutorial contiene información sobre como modificar mapas existentes y crear nuevos mapas, como modificar el aspecto de la región y la localización de los mapas en ésta, y como conexionar mapas adyacentes corréctamente.

Para editar la apariencia de los mapas se emplean editores de mapas como son JohtoMap y GoldMap para Pokemon Gold / Silver, y CrystalMap para Pokemon Crystal. Como la edición del aspecto de mapas es muy intuitivo mediante la utilización de estas tools, nos centraremos en otros aspectos mas complicados.

Cada mapa viene identificado por dos equivalentes númericos de tamaño de byte: un equivalente que identifica el grupo al que pertenece el mapa, y un equivalente que permite distinguir entre mapas dentro de un mismo grupo. Hay 0x1A grupos diferentes mientras que la cantidad de mapas dentro de un mismo grupo es variable.

GROUP_OLIVINE_POKECENTER_1F EQU $01
GROUP_OLIVINE_GYM EQU $01
GROUP_OLIVINE_VOLTORB_HOUSE EQU $01
GROUP_OLIVINE_HOUSE_BETA EQU $01
GROUP_OLIVINE_PUNISHMENT_SPEECH_HOUSE EQU $01
GROUP_OLIVINE_GOOD_ROD_HOUSE EQU $01
GROUP_OLIVINE_CAFE EQU $01
GROUP_OLIVINE_MART EQU $01
GROUP_ROUTE_38_ECRUTEAK_GATE EQU $01
GROUP_ROUTE_39_BARN EQU $01
GROUP_ROUTE_39_FARMHOUSE EQU $01
GROUP_ROUTE_38 EQU $01
GROUP_ROUTE_39 EQU $01
GROUP_OLIVINE_CITY EQU $01
GROUP_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE EQU $02
GROUP_MAHOGANY_GYM EQU $02
GROUP_MAHOGANY_POKECENTER_1F EQU $02
GROUP_ROUTE_42_ECRUTEAK_GATE EQU $02
GROUP_ROUTE_42 EQU $02
GROUP_ROUTE_44 EQU $02
GROUP_MAHOGANY_TOWN EQU $02
GROUP_SPROUT_TOWER_1F EQU $03
GROUP_SPROUT_TOWER_2F EQU $03
GROUP_SPROUT_TOWER_3F EQU $03
GROUP_TIN_TOWER_1F EQU $03
GROUP_TIN_TOWER_2F EQU $03
GROUP_TIN_TOWER_3F EQU $03
GROUP_TIN_TOWER_4F EQU $03
GROUP_TIN_TOWER_5F EQU $03
GROUP_TIN_TOWER_6F EQU $03
GROUP_TIN_TOWER_7F EQU $03
GROUP_TIN_TOWER_8F EQU $03
GROUP_TIN_TOWER_9F EQU $03
GROUP_BURNED_TOWER_1F EQU $03
GROUP_BURNED_TOWER_B1F EQU $03
GROUP_NATIONAL_PARK EQU $03
GROUP_NATIONAL_PARK_BUG_CONTEST EQU $03
GROUP_RADIO_TOWER_1F EQU $03
GROUP_RADIO_TOWER_2F EQU $03
GROUP_RADIO_TOWER_3F EQU $03
GROUP_RADIO_TOWER_4F EQU $03
GROUP_RADIO_TOWER_5F EQU $03
GROUP_RUINS_OF_ALPH_OUTSIDE EQU $03
GROUP_RUINS_OF_ALPH_HO_OH_CHAMBER EQU $03
GROUP_RUINS_OF_ALPH_KABUTO_CHAMBER EQU $03
GROUP_RUINS_OF_ALPH_OMANYTE_CHAMBER EQU $03
GROUP_RUINS_OF_ALPH_AERODACTYL_CHAMBER EQU $03
GROUP_RUINS_OF_ALPH_INNER_CHAMBER EQU $03
GROUP_RUINS_OF_ALPH_RESEARCH_CENTER EQU $03
GROUP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM EQU $03
GROUP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM EQU $03
GROUP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM EQU $03
GROUP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM EQU $03
GROUP_RUINS_OF_ALPH_HO_OH_WORD_ROOM EQU $03
GROUP_RUINS_OF_ALPH_KABUTO_WORD_ROOM EQU $03
GROUP_RUINS_OF_ALPH_OMANYTE_WORD_ROOM EQU $03
GROUP_RUINS_OF_ALPH_AERODACTYL_WORD_ROOM EQU $03
GROUP_UNION_CAVE_1F EQU $03
GROUP_UNION_CAVE_B1F EQU $03
GROUP_UNION_CAVE_B2F EQU $03
GROUP_SLOWPOKE_WELL_B1F EQU $03
GROUP_SLOWPOKE_WELL_B2F EQU $03
GROUP_OLIVINE_LIGHTHOUSE_1F EQU $03
GROUP_OLIVINE_LIGHTHOUSE_2F EQU $03
GROUP_OLIVINE_LIGHTHOUSE_3F EQU $03
GROUP_OLIVINE_LIGHTHOUSE_4F EQU $03
GROUP_OLIVINE_LIGHTHOUSE_5F EQU $03
GROUP_OLIVINE_LIGHTHOUSE_6F EQU $03
GROUP_MAHOGANY_MART_1F EQU $03
GROUP_TEAM_ROCKET_BASE_B1F EQU $03
GROUP_TEAM_ROCKET_BASE_B2F EQU $03
GROUP_TEAM_ROCKET_BASE_B3F EQU $03
GROUP_ILEX_FOREST EQU $03
GROUP_WAREHOUSE_ENTRANCE EQU $03
GROUP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES EQU $03
GROUP_GOLDENROD_DEPT_STORE_B1F EQU $03
GROUP_UNDERGROUND_WAREHOUSE EQU $03
GROUP_MOUNT_MORTAR_1F_OUTSIDE EQU $03
GROUP_MOUNT_MORTAR_1F_INSIDE EQU $03
GROUP_MOUNT_MORTAR_2F_INSIDE EQU $03
GROUP_MOUNT_MORTAR_B1F EQU $03
GROUP_ICE_PATH_1F EQU $03
GROUP_ICE_PATH_B1F EQU $03
GROUP_ICE_PATH_B2F_MAHOGANY_SIDE EQU $03
GROUP_ICE_PATH_B2F_BLACKTHORN_SIDE EQU $03
GROUP_ICE_PATH_B3F EQU $03
GROUP_WHIRL_ISLAND_NW EQU $03
GROUP_WHIRL_ISLAND_NE EQU $03
GROUP_WHIRL_ISLAND_SW EQU $03
GROUP_WHIRL_ISLAND_CAVE EQU $03
GROUP_WHIRL_ISLAND_SE EQU $03
GROUP_WHIRL_ISLAND_B1F EQU $03
GROUP_WHIRL_ISLAND_B2F EQU $03
GROUP_WHIRL_ISLAND_LUGIA_CHAMBER EQU $03
GROUP_SILVER_CAVE_ROOM_1 EQU $03
GROUP_SILVER_CAVE_ROOM_2 EQU $03
GROUP_SILVER_CAVE_ROOM_3 EQU $03
GROUP_SILVER_CAVE_ITEM_ROOMS EQU $03
GROUP_DARK_CAVE_VIOLET_ENTRANCE EQU $03
GROUP_DARK_CAVE_BLACKTHORN_ENTRANCE EQU $03
GROUP_DRAGONS_DEN_1F EQU $03
GROUP_DRAGONS_DEN_B1F EQU $03
GROUP_DRAGON_SHRINE EQU $03
GROUP_TOHJO_FALLS EQU $03
GROUP_DIGLETTS_CAVE EQU $03
GROUP_MOUNT_MOON EQU $03
GROUP_UNDERGROUND EQU $03
GROUP_ROCK_TUNNEL_1F EQU $03
GROUP_ROCK_TUNNEL_B1F EQU $03
GROUP_SAFARI_ZONE_FUCHSIA_GATE_BETA EQU $03
GROUP_SAFARI_ZONE_BETA EQU $03
GROUP_VICTORY_ROAD EQU $03
GROUP_ECRUTEAK_HOUSE EQU $04
GROUP_WISE_TRIOS_ROOM EQU $04
GROUP_ECRUTEAK_POKECENTER_1F EQU $04
GROUP_ECRUTEAK_LUGIA_SPEECH_HOUSE EQU $04
GROUP_DANCE_THEATRE EQU $04
GROUP_ECRUTEAK_MART EQU $04
GROUP_ECRUTEAK_GYM EQU $04
GROUP_ECRUTEAK_ITEMFINDER_HOUSE EQU $04
GROUP_ECRUTEAK_CITY EQU $04
GROUP_BLACKTHORN_GYM_1F EQU $05
GROUP_BLACKTHORN_GYM_2F EQU $05
GROUP_BLACKTHORN_DRAGON_SPEECH_HOUSE EQU $05
GROUP_BLACKTHORN_DODRIO_TRADE_HOUSE EQU $05
GROUP_BLACKTHORN_MART EQU $05
GROUP_BLACKTHORN_POKECENTER_1F EQU $05
GROUP_MOVE_DELETERS_HOUSE EQU $05
GROUP_ROUTE_45 EQU $05
GROUP_ROUTE_46 EQU $05
GROUP_BLACKTHORN_CITY EQU $05
GROUP_CINNABAR_POKECENTER_1F EQU $06
GROUP_CINNABAR_POKECENTER_2F_BETA EQU $06
GROUP_ROUTE_19___FUCHSIA_GATE EQU $06
GROUP_SEAFOAM_GYM EQU $06
GROUP_ROUTE_19 EQU $06
GROUP_ROUTE_20 EQU $06
GROUP_ROUTE_21 EQU $06
GROUP_CINNABAR_ISLAND EQU $06
GROUP_CERULEAN_GYM_BADGE_SPEECH_HOUSE EQU $07
GROUP_CERULEAN_POLICE_STATION EQU $07
GROUP_CERULEAN_TRADE_SPEECH_HOUSE EQU $07
GROUP_CERULEAN_POKECENTER_1F EQU $07
GROUP_CERULEAN_POKECENTER_2F_BETA EQU $07
GROUP_CERULEAN_GYM EQU $07
GROUP_CERULEAN_MART EQU $07
GROUP_ROUTE_10_POKECENTER_1F EQU $07
GROUP_ROUTE_10_POKECENTER_2F_BETA EQU $07
GROUP_POWER_PLANT EQU $07
GROUP_BILLS_HOUSE EQU $07
GROUP_ROUTE_4 EQU $07
GROUP_ROUTE_9 EQU $07
GROUP_ROUTE_10A EQU $07
GROUP_ROUTE_10_NORTH EQU $07
GROUP_ROUTE_24 EQU $07
GROUP_ROUTE_25 EQU $07
GROUP_CERULEAN_CITY EQU $07
GROUP_AZALEA_POKECENTER_1F EQU $08
GROUP_CHARCOAL_KILN EQU $08
GROUP_AZALEA_MART EQU $08
GROUP_KURTS_HOUSE EQU $08
GROUP_AZALEA_GYM EQU $08
GROUP_ROUTE_33 EQU $08
GROUP_AZALEA_TOWN EQU $08
GROUP_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE EQU $09
GROUP_LAKE_OF_RAGE_MAGIKARP_HOUSE EQU $09
GROUP_ROUTE_43_MAHOGANY_GATE EQU $09
GROUP_ROUTE_43_GATE EQU $09
GROUP_ROUTE_43 EQU $09
GROUP_LAKE_OF_RAGE EQU $09
GROUP_ROUTE_32 EQU $0a
GROUP_ROUTE_35 EQU $0a
GROUP_ROUTE_36 EQU $0a
GROUP_ROUTE_37 EQU $0a
GROUP_VIOLET_CITY EQU $0a
GROUP_VIOLET_MART EQU $0a
GROUP_VIOLET_GYM EQU $0a
GROUP_EARLS_POKEMON_ACADEMY EQU $0a
GROUP_VIOLET_NICKNAME_SPEECH_HOUSE EQU $0a
GROUP_VIOLET_POKECENTER_1F EQU $0a
GROUP_VIOLET_ONIX_TRADE_HOUSE EQU $0a
GROUP_ROUTE_32_RUINS_OF_ALPH_GATE EQU $0a
GROUP_ROUTE_32_POKECENTER_1F EQU $0a
GROUP_ROUTE_35_GOLDENROD_GATE EQU $0a
GROUP_ROUTE_35_NATIONAL_PARK_GATE EQU $0a
GROUP_ROUTE_36_RUINS_OF_ALPH_GATE EQU $0a
GROUP_ROUTE_36_NATIONAL_PARK_GATE EQU $0a
GROUP_ROUTE_34 EQU $0b
GROUP_GOLDENROD_CITY EQU $0b
GROUP_GOLDENROD_GYM EQU $0b
GROUP_GOLDENROD_BIKE_SHOP EQU $0b
GROUP_GOLDENROD_HAPPINESS_RATER EQU $0b
GROUP_GOLDENROD_BILLS_HOUSE EQU $0b
GROUP_GOLDENROD_MAGNET_TRAIN_STATION EQU $0b
GROUP_GOLDENROD_FLOWER_SHOP EQU $0b
GROUP_GOLDENROD_PP_SPEECH_HOUSE EQU $0b
GROUP_GOLDENROD_NAME_RATERS_HOUSE EQU $0b
GROUP_GOLDENROD_DEPT_STORE_1F EQU $0b
GROUP_GOLDENROD_DEPT_STORE_2F EQU $0b
GROUP_GOLDENROD_DEPT_STORE_3F EQU $0b
GROUP_GOLDENROD_DEPT_STORE_4F EQU $0b
GROUP_GOLDENROD_DEPT_STORE_5F EQU $0b
GROUP_GOLDENROD_DEPT_STORE_6F EQU $0b
GROUP_GOLDENROD_DEPT_STORE_ELEVATOR EQU $0b
GROUP_GOLDENROD_DEPT_STORE_ROOF EQU $0b
GROUP_GOLDENROD_GAME_CORNER EQU $0b
GROUP_GOLDENROD_POKECENTER_1F EQU $0b
GROUP_GOLDENROD_POKECOM_CENTER_2F_MOBILE EQU $0b
GROUP_ILEX_FOREST_AZALEA_GATE EQU $0b
GROUP_ROUTE_34_ILEX_FOREST_GATE EQU $0b
GROUP_DAY_CARE EQU $0b
GROUP_ROUTE_6 EQU $0c
GROUP_ROUTE_11 EQU $0c
GROUP_VERMILION_CITY EQU $0c
GROUP_VERMILION_HOUSE_FISHING_SPEECH_HOUSE EQU $0c
GROUP_VERMILION_POKECENTER_1F EQU $0c
GROUP_VERMILION_POKECENTER_2F_BETA EQU $0c
GROUP_POKEMON_FAN_CLUB EQU $0c
GROUP_VERMILION_MAGNET_TRAIN_SPEECH_HOUSE EQU $0c
GROUP_VERMILION_MART EQU $0c
GROUP_VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE EQU $0c
GROUP_VERMILION_GYM EQU $0c
GROUP_ROUTE_6_SAFFRON_GATE EQU $0c
GROUP_ROUTE_6_UNDERGROUND_ENTRANCE EQU $0c
GROUP_ROUTE_1 EQU $0d
GROUP_PALLET_TOWN EQU $0d
GROUP_REDS_HOUSE_1F EQU $0d
GROUP_REDS_HOUSE_2F EQU $0d
GROUP_BLUES_HOUSE EQU $0d
GROUP_OAKS_LAB EQU $0d
GROUP_ROUTE_3 EQU $0e
GROUP_PEWTER_CITY EQU $0e
GROUP_PEWTER_NIDORAN_SPEECH_HOUSE EQU $0e
GROUP_PEWTER_GYM EQU $0e
GROUP_PEWTER_MART EQU $0e
GROUP_PEWTER_POKECENTER_1F EQU $0e
GROUP_PEWTER_POKECENTER_2F_BETA EQU $0e
GROUP_PEWTER_SNOOZE_SPEECH_HOUSE EQU $0e
GROUP_OLIVINE_PORT EQU $0f
GROUP_VERMILION_PORT EQU $0f
GROUP_FAST_SHIP_1F EQU $0f
GROUP_FAST_SHIP_CABINS_NNW_NNE_NE EQU $0f
GROUP_FAST_SHIP_CABINS_SW_SSW_NW EQU $0f
GROUP_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN EQU $0f
GROUP_FAST_SHIP_B1F EQU $0f
GROUP_OLIVINE_PORT_PASSAGE EQU $0f
GROUP_VERMILION_PORT_PASSAGE EQU $0f
GROUP_MOUNT_MOON_SQUARE EQU $0f
GROUP_MOUNT_MOON_GIFT_SHOP EQU $0f
GROUP_TIN_TOWER_ROOF EQU $0f
GROUP_ROUTE_23 EQU $10
GROUP_INDIGO_PLATEAU_POKECENTER_1F EQU $10
GROUP_WILLS_ROOM EQU $10
GROUP_KOGAS_ROOM EQU $10
GROUP_BRUNOS_ROOM EQU $10
GROUP_KARENS_ROOM EQU $10
GROUP_LANCES_ROOM EQU $10
GROUP_HALL_OF_FAME EQU $10
GROUP_ROUTE_13 EQU $11
GROUP_ROUTE_14 EQU $11
GROUP_ROUTE_15 EQU $11
GROUP_ROUTE_18 EQU $11
GROUP_FUCHSIA_CITY EQU $11
GROUP_FUCHSIA_MART EQU $11
GROUP_SAFARI_ZONE_MAIN_OFFICE EQU $11
GROUP_FUCHSIA_GYM EQU $11
GROUP_FUCHSIA_BILL_SPEECH_HOUSE EQU $11
GROUP_FUCHSIA_POKECENTER_1F EQU $11
GROUP_FUCHSIA_POKECENTER_2F_BETA EQU $11
GROUP_SAFARI_ZONE_WARDENS_HOME EQU $11
GROUP_ROUTE_15_FUCHSIA_GATE EQU $11
GROUP_ROUTE_8 EQU $12
GROUP_ROUTE_12 EQU $12
GROUP_ROUTE_10B EQU $12
GROUP_ROUTE_10_SOUTH EQU $12
GROUP_LAVENDER_TOWN EQU $12
GROUP_LAVENDER_POKECENTER_1F EQU $12
GROUP_LAVENDER_POKECENTER_2F_BETA EQU $12
GROUP_MR_FUJIS_HOUSE EQU $12
GROUP_LAVENDER_TOWN_SPEECH_HOUSE EQU $12
GROUP_LAVENDER_NAME_RATER EQU $12
GROUP_LAVENDER_MART EQU $12
GROUP_SOUL_HOUSE EQU $12
GROUP_LAV_RADIO_TOWER_1F EQU $12
GROUP_ROUTE_8_SAFFRON_GATE EQU $12
GROUP_ROUTE_12_SUPER_ROD_HOUSE EQU $12
GROUP_ROUTE_28 EQU $13
GROUP_SILVER_CAVE_OUTSIDE EQU $13
GROUP_SILVER_CAVE_POKECENTER_1F EQU $13
GROUP_ROUTE_28_FAMOUS_SPEECH_HOUSE EQU $13
GROUP_POKECENTER_2F EQU $14
GROUP_TRADE_CENTER EQU $14
GROUP_COLOSSEUM EQU $14
GROUP_TIME_CAPSULE EQU $14
GROUP_MOBILE_TRADE_ROOM_MOBILE EQU $14
GROUP_MOBILE_BATTLE_ROOM EQU $14
GROUP_ROUTE_7 EQU $15
GROUP_ROUTE_16 EQU $15
GROUP_ROUTE_17 EQU $15
GROUP_CELADON_CITY EQU $15
GROUP_CELADON_DEPT_STORE_1F EQU $15
GROUP_CELADON_DEPT_STORE_2F EQU $15
GROUP_CELADON_DEPT_STORE_3F EQU $15
GROUP_CELADON_DEPT_STORE_4F EQU $15
GROUP_CELADON_DEPT_STORE_5F EQU $15
GROUP_CELADON_DEPT_STORE_6F EQU $15
GROUP_CELADON_DEPT_STORE_ELEVATOR EQU $15
GROUP_CELADON_MANSION_1F EQU $15
GROUP_CELADON_MANSION_2F EQU $15
GROUP_CELADON_MANSION_3F EQU $15
GROUP_CELADON_MANSION_ROOF EQU $15
GROUP_CELADON_MANSION_ROOF_HOUSE EQU $15
GROUP_CELADON_POKECENTER_1F EQU $15
GROUP_CELADON_POKECENTER_2F_BETA EQU $15
GROUP_CELADON_GAME_CORNER EQU $15
GROUP_CELADON_GAME_CORNER_PRIZE_ROOM EQU $15
GROUP_CELADON_GYM EQU $15
GROUP_CELADON_CAFE EQU $15
GROUP_ROUTE_16_FUCHSIA_SPEECH_HOUSE EQU $15
GROUP_ROUTE_16_GATE EQU $15
GROUP_ROUTE_7_SAFFRON_GATE EQU $15
GROUP_ROUTE_17_18_GATE EQU $15
GROUP_ROUTE_40 EQU $16
GROUP_ROUTE_41 EQU $16
GROUP_CIANWOOD_CITY EQU $16
GROUP_MANIAS_HOUSE EQU $16
GROUP_CIANWOOD_GYM EQU $16
GROUP_CIANWOOD_POKECENTER_1F EQU $16
GROUP_CIANWOOD_PHARMACY EQU $16
GROUP_CIANWOOD_CITY_PHOTO_STUDIO EQU $16
GROUP_CIANWOOD_LUGIA_SPEECH_HOUSE EQU $16
GROUP_POKE_SEERS_HOUSE EQU $16
GROUP_BATTLE_TOWER_1F EQU $16
GROUP_BATTLE_TOWER_BATTLE_ROOM EQU $16
GROUP_BATTLE_TOWER_ELEVATOR EQU $16
GROUP_BATTLE_TOWER_HALLWAY EQU $16
GROUP_ROUTE_40_BATTLE_TOWER_GATE EQU $16
GROUP_BATTLE_TOWER_OUTSIDE EQU $16
GROUP_ROUTE_2 EQU $17
GROUP_ROUTE_22 EQU $17
GROUP_VIRIDIAN_CITY EQU $17
GROUP_VIRIDIAN_GYM EQU $17
GROUP_VIRIDIAN_NICKNAME_SPEECH_HOUSE EQU $17
GROUP_TRAINER_HOUSE_1F EQU $17
GROUP_TRAINER_HOUSE_B1F EQU $17
GROUP_VIRIDIAN_MART EQU $17
GROUP_VIRIDIAN_POKECENTER_1F EQU $17
GROUP_VIRIDIAN_POKECENTER_2F_BETA EQU $17
GROUP_ROUTE_2_NUGGET_SPEECH_HOUSE EQU $17
GROUP_ROUTE_2_GATE EQU $17
GROUP_VICTORY_ROAD_GATE EQU $17
GROUP_ROUTE_26 EQU $18
GROUP_ROUTE_27 EQU $18
GROUP_ROUTE_29 EQU $18
GROUP_NEW_BARK_TOWN EQU $18
GROUP_ELMS_LAB EQU $18
GROUP_KRISS_HOUSE_1F EQU $18
GROUP_KRISS_HOUSE_2F EQU $18
GROUP_KRISS_NEIGHBORS_HOUSE EQU $18
GROUP_ELMS_HOUSE EQU $18
GROUP_ROUTE_26_HEAL_SPEECH_HOUSE EQU $18
GROUP_ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE EQU $18
GROUP_ROUTE_27_SANDSTORM_HOUSE EQU $18
GROUP_ROUTE_29_46_GATE EQU $18
GROUP_ROUTE_5 EQU $19
GROUP_SAFFRON_CITY EQU $19
GROUP_FIGHTING_DOJO EQU $19
GROUP_SAFFRON_GYM EQU $19
GROUP_SAFFRON_MART EQU $19
GROUP_SAFFRON_POKECENTER_1F EQU $19
GROUP_SAFFRON_POKECENTER_2F_BETA EQU $19
GROUP_MR_PSYCHICS_HOUSE EQU $19
GROUP_SAFFRON_TRAIN_STATION EQU $19
GROUP_SILPH_CO_1F EQU $19
GROUP_COPYCATS_HOUSE_1F EQU $19
GROUP_COPYCATS_HOUSE_2F EQU $19
GROUP_ROUTE_5_UNDERGROUND_ENTRANCE EQU $19
GROUP_ROUTE_5_SAFFRON_CITY_GATE EQU $19
GROUP_ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE EQU $19
GROUP_ROUTE_30 EQU $1a
GROUP_ROUTE_31 EQU $1a
GROUP_CHERRYGROVE_CITY EQU $1a
GROUP_CHERRYGROVE_MART EQU $1a
GROUP_CHERRYGROVE_POKECENTER_1F EQU $1a
GROUP_CHERRYGROVE_GYM_SPEECH_HOUSE EQU $1a
GROUP_GUIDE_GENTS_HOUSE EQU $1a
GROUP_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE EQU $1a
GROUP_ROUTE_30_BERRY_SPEECH_HOUSE EQU $1a
GROUP_MR_POKEMONS_HOUSE EQU $1a
GROUP_ROUTE_31_VIOLET_GATE EQU $1a
MAP_OLIVINE_POKECENTER_1F EQU $01
MAP_OLIVINE_GYM EQU $02
MAP_OLIVINE_VOLTORB_HOUSE EQU $03
MAP_OLIVINE_HOUSE_BETA EQU $04
MAP_OLIVINE_PUNISHMENT_SPEECH_HOUSE EQU $05
MAP_OLIVINE_GOOD_ROD_HOUSE EQU $06
MAP_OLIVINE_CAFE EQU $07
MAP_OLIVINE_MART EQU $08
MAP_ROUTE_38_ECRUTEAK_GATE EQU $09
MAP_ROUTE_39_BARN EQU $0a
MAP_ROUTE_39_FARMHOUSE EQU $0b
MAP_ROUTE_38 EQU $0c
MAP_ROUTE_39 EQU $0d
MAP_OLIVINE_CITY EQU $0e
MAP_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE EQU $01
MAP_MAHOGANY_GYM EQU $02
MAP_MAHOGANY_POKECENTER_1F EQU $03
MAP_ROUTE_42_ECRUTEAK_GATE EQU $04
MAP_ROUTE_42 EQU $05
MAP_ROUTE_44 EQU $06
MAP_MAHOGANY_TOWN EQU $07
MAP_SPROUT_TOWER_1F EQU $01
MAP_SPROUT_TOWER_2F EQU $02
MAP_SPROUT_TOWER_3F EQU $03
MAP_TIN_TOWER_1F EQU $04
MAP_TIN_TOWER_2F EQU $05
MAP_TIN_TOWER_3F EQU $06
MAP_TIN_TOWER_4F EQU $07
MAP_TIN_TOWER_5F EQU $08
MAP_TIN_TOWER_6F EQU $09
MAP_TIN_TOWER_7F EQU $0a
MAP_TIN_TOWER_8F EQU $0b
MAP_TIN_TOWER_9F EQU $0c
MAP_BURNED_TOWER_1F EQU $0d
MAP_BURNED_TOWER_B1F EQU $0e
MAP_NATIONAL_PARK EQU $0f
MAP_NATIONAL_PARK_BUG_CONTEST EQU $10
MAP_RADIO_TOWER_1F EQU $11
MAP_RADIO_TOWER_2F EQU $12
MAP_RADIO_TOWER_3F EQU $13
MAP_RADIO_TOWER_4F EQU $14
MAP_RADIO_TOWER_5F EQU $15
MAP_RUINS_OF_ALPH_OUTSIDE EQU $16
MAP_RUINS_OF_ALPH_HO_OH_CHAMBER EQU $17
MAP_RUINS_OF_ALPH_KABUTO_CHAMBER EQU $18
MAP_RUINS_OF_ALPH_OMANYTE_CHAMBER EQU $19
MAP_RUINS_OF_ALPH_AERODACTYL_CHAMBER EQU $1a
MAP_RUINS_OF_ALPH_INNER_CHAMBER EQU $1b
MAP_RUINS_OF_ALPH_RESEARCH_CENTER EQU $1c
MAP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM EQU $1d
MAP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM EQU $1e
MAP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM EQU $1f
MAP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM EQU $20
MAP_RUINS_OF_ALPH_HO_OH_WORD_ROOM EQU $21
MAP_RUINS_OF_ALPH_KABUTO_WORD_ROOM EQU $22
MAP_RUINS_OF_ALPH_OMANYTE_WORD_ROOM EQU $23
MAP_RUINS_OF_ALPH_AERODACTYL_WORD_ROOM EQU $24
MAP_UNION_CAVE_1F EQU $25
MAP_UNION_CAVE_B1F EQU $26
MAP_UNION_CAVE_B2F EQU $27
MAP_SLOWPOKE_WELL_B1F EQU $28
MAP_SLOWPOKE_WELL_B2F EQU $29
MAP_OLIVINE_LIGHTHOUSE_1F EQU $2a
MAP_OLIVINE_LIGHTHOUSE_2F EQU $2b
MAP_OLIVINE_LIGHTHOUSE_3F EQU $2c
MAP_OLIVINE_LIGHTHOUSE_4F EQU $2d
MAP_OLIVINE_LIGHTHOUSE_5F EQU $2e
MAP_OLIVINE_LIGHTHOUSE_6F EQU $2f
MAP_MAHOGANY_MART_1F EQU $30
MAP_TEAM_ROCKET_BASE_B1F EQU $31
MAP_TEAM_ROCKET_BASE_B2F EQU $32
MAP_TEAM_ROCKET_BASE_B3F EQU $33
MAP_ILEX_FOREST EQU $34
MAP_WAREHOUSE_ENTRANCE EQU $35
MAP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES EQU $36
MAP_GOLDENROD_DEPT_STORE_B1F EQU $37
MAP_UNDERGROUND_WAREHOUSE EQU $38
MAP_MOUNT_MORTAR_1F_OUTSIDE EQU $39
MAP_MOUNT_MORTAR_1F_INSIDE EQU $3a
MAP_MOUNT_MORTAR_2F_INSIDE EQU $3b
MAP_MOUNT_MORTAR_B1F EQU $3c
MAP_ICE_PATH_1F EQU $3d
MAP_ICE_PATH_B1F EQU $3e
MAP_ICE_PATH_B2F_MAHOGANY_SIDE EQU $3f
MAP_ICE_PATH_B2F_BLACKTHORN_SIDE EQU $40
MAP_ICE_PATH_B3F EQU $41
MAP_WHIRL_ISLAND_NW EQU $42
MAP_WHIRL_ISLAND_NE EQU $43
MAP_WHIRL_ISLAND_SW EQU $44
MAP_WHIRL_ISLAND_CAVE EQU $45
MAP_WHIRL_ISLAND_SE EQU $46
MAP_WHIRL_ISLAND_B1F EQU $47
MAP_WHIRL_ISLAND_B2F EQU $48
MAP_WHIRL_ISLAND_LUGIA_CHAMBER EQU $49
MAP_SILVER_CAVE_ROOM_1 EQU $4a
MAP_SILVER_CAVE_ROOM_2 EQU $4b
MAP_SILVER_CAVE_ROOM_3 EQU $4c
MAP_SILVER_CAVE_ITEM_ROOMS EQU $4d
MAP_DARK_CAVE_VIOLET_ENTRANCE EQU $4e
MAP_DARK_CAVE_BLACKTHORN_ENTRANCE EQU $4f
MAP_DRAGONS_DEN_1F EQU $50
MAP_DRAGONS_DEN_B1F EQU $51
MAP_DRAGON_SHRINE EQU $52
MAP_TOHJO_FALLS EQU $53
MAP_DIGLETTS_CAVE EQU $54
MAP_MOUNT_MOON EQU $55
MAP_UNDERGROUND EQU $56
MAP_ROCK_TUNNEL_1F EQU $57
MAP_ROCK_TUNNEL_B1F EQU $58
MAP_SAFARI_ZONE_FUCHSIA_GATE_BETA EQU $59
MAP_SAFARI_ZONE_BETA EQU $5a
MAP_VICTORY_ROAD EQU $5b
MAP_ECRUTEAK_HOUSE EQU $01
MAP_WISE_TRIOS_ROOM EQU $02
MAP_ECRUTEAK_POKECENTER_1F EQU $03
MAP_ECRUTEAK_LUGIA_SPEECH_HOUSE EQU $04
MAP_DANCE_THEATRE EQU $05
MAP_ECRUTEAK_MART EQU $06
MAP_ECRUTEAK_GYM EQU $07
MAP_ECRUTEAK_ITEMFINDER_HOUSE EQU $08
MAP_ECRUTEAK_CITY EQU $09
MAP_BLACKTHORN_GYM_1F EQU $01
MAP_BLACKTHORN_GYM_2F EQU $02
MAP_BLACKTHORN_DRAGON_SPEECH_HOUSE EQU $03
MAP_BLACKTHORN_DODRIO_TRADE_HOUSE EQU $04
MAP_BLACKTHORN_MART EQU $05
MAP_BLACKTHORN_POKECENTER_1F EQU $06
MAP_MOVE_DELETERS_HOUSE EQU $07
MAP_ROUTE_45 EQU $08
MAP_ROUTE_46 EQU $09
MAP_BLACKTHORN_CITY EQU $0a
MAP_CINNABAR_POKECENTER_1F EQU $01
MAP_CINNABAR_POKECENTER_2F_BETA EQU $02
MAP_ROUTE_19___FUCHSIA_GATE EQU $03
MAP_SEAFOAM_GYM EQU $04
MAP_ROUTE_19 EQU $05
MAP_ROUTE_20 EQU $06
MAP_ROUTE_21 EQU $07
MAP_CINNABAR_ISLAND EQU $08
MAP_CERULEAN_GYM_BADGE_SPEECH_HOUSE EQU $01
MAP_CERULEAN_POLICE_STATION EQU $02
MAP_CERULEAN_TRADE_SPEECH_HOUSE EQU $03
MAP_CERULEAN_POKECENTER_1F EQU $04
MAP_CERULEAN_POKECENTER_2F_BETA EQU $05
MAP_CERULEAN_GYM EQU $06
MAP_CERULEAN_MART EQU $07
MAP_ROUTE_10_POKECENTER_1F EQU $08
MAP_ROUTE_10_POKECENTER_2F_BETA EQU $09
MAP_POWER_PLANT EQU $0a
MAP_BILLS_HOUSE EQU $0b
MAP_ROUTE_4 EQU $0c
MAP_ROUTE_9 EQU $0d
MAP_ROUTE_10A EQU $0e
MAP_ROUTE_10_NORTH EQU $0e
MAP_ROUTE_24 EQU $0f
MAP_ROUTE_25 EQU $10
MAP_CERULEAN_CITY EQU $11
MAP_AZALEA_POKECENTER_1F EQU $01
MAP_CHARCOAL_KILN EQU $02
MAP_AZALEA_MART EQU $03
MAP_KURTS_HOUSE EQU $04
MAP_AZALEA_GYM EQU $05
MAP_ROUTE_33 EQU $06
MAP_AZALEA_TOWN EQU $07
MAP_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE EQU $01
MAP_LAKE_OF_RAGE_MAGIKARP_HOUSE EQU $02
MAP_ROUTE_43_MAHOGANY_GATE EQU $03
MAP_ROUTE_43_GATE EQU $04
MAP_ROUTE_43 EQU $05
MAP_LAKE_OF_RAGE EQU $06
MAP_ROUTE_32 EQU $01
MAP_ROUTE_35 EQU $02
MAP_ROUTE_36 EQU $03
MAP_ROUTE_37 EQU $04
MAP_VIOLET_CITY EQU $05
MAP_VIOLET_MART EQU $06
MAP_VIOLET_GYM EQU $07
MAP_EARLS_POKEMON_ACADEMY EQU $08
MAP_VIOLET_NICKNAME_SPEECH_HOUSE EQU $09
MAP_VIOLET_POKECENTER_1F EQU $0a
MAP_VIOLET_ONIX_TRADE_HOUSE EQU $0b
MAP_ROUTE_32_RUINS_OF_ALPH_GATE EQU $0c
MAP_ROUTE_32_POKECENTER_1F EQU $0d
MAP_ROUTE_35_GOLDENROD_GATE EQU $0e
MAP_ROUTE_35_NATIONAL_PARK_GATE EQU $0f
MAP_ROUTE_36_RUINS_OF_ALPH_GATE EQU $10
MAP_ROUTE_36_NATIONAL_PARK_GATE EQU $11
MAP_ROUTE_34 EQU $01
MAP_GOLDENROD_CITY EQU $02
MAP_GOLDENROD_GYM EQU $03
MAP_GOLDENROD_BIKE_SHOP EQU $04
MAP_GOLDENROD_HAPPINESS_RATER EQU $05
MAP_GOLDENROD_BILLS_HOUSE EQU $06
MAP_GOLDENROD_MAGNET_TRAIN_STATION EQU $07
MAP_GOLDENROD_FLOWER_SHOP EQU $08
MAP_GOLDENROD_PP_SPEECH_HOUSE EQU $09
MAP_GOLDENROD_NAME_RATERS_HOUSE EQU $0a
MAP_GOLDENROD_DEPT_STORE_1F EQU $0b
MAP_GOLDENROD_DEPT_STORE_2F EQU $0c
MAP_GOLDENROD_DEPT_STORE_3F EQU $0d
MAP_GOLDENROD_DEPT_STORE_4F EQU $0e
MAP_GOLDENROD_DEPT_STORE_5F EQU $0f
MAP_GOLDENROD_DEPT_STORE_6F EQU $10
MAP_GOLDENROD_DEPT_STORE_ELEVATOR EQU $11
MAP_GOLDENROD_DEPT_STORE_ROOF EQU $12
MAP_GOLDENROD_GAME_CORNER EQU $13
MAP_GOLDENROD_POKECENTER_1F EQU $14
MAP_GOLDENROD_POKECOM_CENTER_2F_MOBILE EQU $15
MAP_ILEX_FOREST_AZALEA_GATE EQU $16
MAP_ROUTE_34_ILEX_FOREST_GATE EQU $17
MAP_DAY_CARE EQU $18
MAP_ROUTE_6 EQU $01
MAP_ROUTE_11 EQU $02
MAP_VERMILION_CITY EQU $03
MAP_VERMILION_HOUSE_FISHING_SPEECH_HOUSE EQU $04
MAP_VERMILION_POKECENTER_1F EQU $05
MAP_VERMILION_POKECENTER_2F_BETA EQU $06
MAP_POKEMON_FAN_CLUB EQU $07
MAP_VERMILION_MAGNET_TRAIN_SPEECH_HOUSE EQU $08
MAP_VERMILION_MART EQU $09
MAP_VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE EQU $0a
MAP_VERMILION_GYM EQU $0b
MAP_ROUTE_6_SAFFRON_GATE EQU $0c
MAP_ROUTE_6_UNDERGROUND_ENTRANCE EQU $0d
MAP_ROUTE_1 EQU $01
MAP_PALLET_TOWN EQU $02
MAP_REDS_HOUSE_1F EQU $03
MAP_REDS_HOUSE_2F EQU $04
MAP_BLUES_HOUSE EQU $05
MAP_OAKS_LAB EQU $06
MAP_ROUTE_3 EQU $01
MAP_PEWTER_CITY EQU $02
MAP_PEWTER_NIDORAN_SPEECH_HOUSE EQU $03
MAP_PEWTER_GYM EQU $04
MAP_PEWTER_MART EQU $05
MAP_PEWTER_POKECENTER_1F EQU $06
MAP_PEWTER_POKECENTER_2F_BETA EQU $07
MAP_PEWTER_SNOOZE_SPEECH_HOUSE EQU $08
MAP_OLIVINE_PORT EQU $01
MAP_VERMILION_PORT EQU $02
MAP_FAST_SHIP_1F EQU $03
MAP_FAST_SHIP_CABINS_NNW_NNE_NE EQU $04
MAP_FAST_SHIP_CABINS_SW_SSW_NW EQU $05
MAP_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN EQU $06
MAP_FAST_SHIP_B1F EQU $07
MAP_OLIVINE_PORT_PASSAGE EQU $08
MAP_VERMILION_PORT_PASSAGE EQU $09
MAP_MOUNT_MOON_SQUARE EQU $0a
MAP_MOUNT_MOON_GIFT_SHOP EQU $0b
MAP_TIN_TOWER_ROOF EQU $0c
MAP_ROUTE_23 EQU $01
MAP_INDIGO_PLATEAU_POKECENTER_1F EQU $02
MAP_WILLS_ROOM EQU $03
MAP_KOGAS_ROOM EQU $04
MAP_BRUNOS_ROOM EQU $05
MAP_KARENS_ROOM EQU $06
MAP_LANCES_ROOM EQU $07
MAP_HALL_OF_FAME EQU $08
MAP_ROUTE_13 EQU $01
MAP_ROUTE_14 EQU $02
MAP_ROUTE_15 EQU $03
MAP_ROUTE_18 EQU $04
MAP_FUCHSIA_CITY EQU $05
MAP_FUCHSIA_MART EQU $06
MAP_SAFARI_ZONE_MAIN_OFFICE EQU $07
MAP_FUCHSIA_GYM EQU $08
MAP_FUCHSIA_BILL_SPEECH_HOUSE EQU $09
MAP_FUCHSIA_POKECENTER_1F EQU $0a
MAP_FUCHSIA_POKECENTER_2F_BETA EQU $0b
MAP_SAFARI_ZONE_WARDENS_HOME EQU $0c
MAP_ROUTE_15_FUCHSIA_GATE EQU $0d
MAP_ROUTE_8 EQU $01
MAP_ROUTE_12 EQU $02
MAP_ROUTE_10B EQU $03
MAP_ROUTE_10_SOUTH EQU $03
MAP_LAVENDER_TOWN EQU $04
MAP_LAVENDER_POKECENTER_1F EQU $05
MAP_LAVENDER_POKECENTER_2F_BETA EQU $06
MAP_MR_FUJIS_HOUSE EQU $07
MAP_LAVENDER_TOWN_SPEECH_HOUSE EQU $08
MAP_LAVENDER_NAME_RATER EQU $09
MAP_LAVENDER_MART EQU $0a
MAP_SOUL_HOUSE EQU $0b
MAP_LAV_RADIO_TOWER_1F EQU $0c
MAP_ROUTE_8_SAFFRON_GATE EQU $0d
MAP_ROUTE_12_SUPER_ROD_HOUSE EQU $0e
MAP_ROUTE_28 EQU $01
MAP_SILVER_CAVE_OUTSIDE EQU $02
MAP_SILVER_CAVE_POKECENTER_1F EQU $03
MAP_ROUTE_28_FAMOUS_SPEECH_HOUSE EQU $04
MAP_POKECENTER_2F EQU $01
MAP_TRADE_CENTER EQU $02
MAP_COLOSSEUM EQU $03
MAP_TIME_CAPSULE EQU $04
MAP_MOBILE_TRADE_ROOM_MOBILE EQU $05
MAP_MOBILE_BATTLE_ROOM EQU $06
MAP_ROUTE_7 EQU $01
MAP_ROUTE_16 EQU $02
MAP_ROUTE_17 EQU $03
MAP_CELADON_CITY EQU $04
MAP_CELADON_DEPT_STORE_1F EQU $05
MAP_CELADON_DEPT_STORE_2F EQU $06
MAP_CELADON_DEPT_STORE_3F EQU $07
MAP_CELADON_DEPT_STORE_4F EQU $08
MAP_CELADON_DEPT_STORE_5F EQU $09
MAP_CELADON_DEPT_STORE_6F EQU $0a
MAP_CELADON_DEPT_STORE_ELEVATOR EQU $0b
MAP_CELADON_MANSION_1F EQU $0c
MAP_CELADON_MANSION_2F EQU $0d
MAP_CELADON_MANSION_3F EQU $0e
MAP_CELADON_MANSION_ROOF EQU $0f
MAP_CELADON_MANSION_ROOF_HOUSE EQU $10
MAP_CELADON_POKECENTER_1F EQU $11
MAP_CELADON_POKECENTER_2F_BETA EQU $12
MAP_CELADON_GAME_CORNER EQU $13
MAP_CELADON_GAME_CORNER_PRIZE_ROOM EQU $14
MAP_CELADON_GYM EQU $15
MAP_CELADON_CAFE EQU $16
MAP_ROUTE_16_FUCHSIA_SPEECH_HOUSE EQU $17
MAP_ROUTE_16_GATE EQU $18
MAP_ROUTE_7_SAFFRON_GATE EQU $19
MAP_ROUTE_17_18_GATE EQU $1a
MAP_ROUTE_40 EQU $01
MAP_ROUTE_41 EQU $02
MAP_CIANWOOD_CITY EQU $03
MAP_MANIAS_HOUSE EQU $04
MAP_CIANWOOD_GYM EQU $05
MAP_CIANWOOD_POKECENTER_1F EQU $06
MAP_CIANWOOD_PHARMACY EQU $07
MAP_CIANWOOD_CITY_PHOTO_STUDIO EQU $08
MAP_CIANWOOD_LUGIA_SPEECH_HOUSE EQU $09
MAP_POKE_SEERS_HOUSE EQU $0a
MAP_BATTLE_TOWER_1F EQU $0b
MAP_BATTLE_TOWER_BATTLE_ROOM EQU $0c
MAP_BATTLE_TOWER_ELEVATOR EQU $0d
MAP_BATTLE_TOWER_HALLWAY EQU $0e
MAP_ROUTE_40_BATTLE_TOWER_GATE EQU $0f
MAP_BATTLE_TOWER_OUTSIDE EQU $10
MAP_ROUTE_2 EQU $01
MAP_ROUTE_22 EQU $02
MAP_VIRIDIAN_CITY EQU $03
MAP_VIRIDIAN_GYM EQU $04
MAP_VIRIDIAN_NICKNAME_SPEECH_HOUSE EQU $05
MAP_TRAINER_HOUSE_1F EQU $06
MAP_TRAINER_HOUSE_B1F EQU $07
MAP_VIRIDIAN_MART EQU $08
MAP_VIRIDIAN_POKECENTER_1F EQU $09
MAP_VIRIDIAN_POKECENTER_2F_BETA EQU $0a
MAP_ROUTE_2_NUGGET_SPEECH_HOUSE EQU $0b
MAP_ROUTE_2_GATE EQU $0c
MAP_VICTORY_ROAD_GATE EQU $0d
MAP_ROUTE_26 EQU $01
MAP_ROUTE_27 EQU $02
MAP_ROUTE_29 EQU $03
MAP_NEW_BARK_TOWN EQU $04
MAP_ELMS_LAB EQU $05
MAP_KRISS_HOUSE_1F EQU $06
MAP_KRISS_HOUSE_2F EQU $07
MAP_KRISS_NEIGHBORS_HOUSE EQU $08
MAP_ELMS_HOUSE EQU $09
MAP_ROUTE_26_HEAL_SPEECH_HOUSE EQU $0a
MAP_ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE EQU $0b
MAP_ROUTE_27_SANDSTORM_HOUSE EQU $0c
MAP_ROUTE_29_46_GATE EQU $0d
MAP_ROUTE_5 EQU $01
MAP_SAFFRON_CITY EQU $02
MAP_FIGHTING_DOJO EQU $03
MAP_SAFFRON_GYM EQU $04
MAP_SAFFRON_MART EQU $05
MAP_SAFFRON_POKECENTER_1F EQU $06
MAP_SAFFRON_POKECENTER_2F_BETA EQU $07
MAP_MR_PSYCHICS_HOUSE EQU $08
MAP_SAFFRON_TRAIN_STATION EQU $09
MAP_SILPH_CO_1F EQU $0a
MAP_COPYCATS_HOUSE_1F EQU $0b
MAP_COPYCATS_HOUSE_2F EQU $0c
MAP_ROUTE_5_UNDERGROUND_ENTRANCE EQU $0d
MAP_ROUTE_5_SAFFRON_CITY_GATE EQU $0e
MAP_ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE EQU $0f
MAP_ROUTE_30 EQU $01
MAP_ROUTE_31 EQU $02
MAP_CHERRYGROVE_CITY EQU $03
MAP_CHERRYGROVE_MART EQU $04
MAP_CHERRYGROVE_POKECENTER_1F EQU $05
MAP_CHERRYGROVE_GYM_SPEECH_HOUSE EQU $06
MAP_GUIDE_GENTS_HOUSE EQU $07
MAP_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE EQU $08
MAP_ROUTE_30_BERRY_SPEECH_HOUSE EQU $09
MAP_MR_POKEMONS_HOUSE EQU $0a
MAP_ROUTE_31_VIOLET_GATE EQU $0b
Un mapa viene definido por su Map Header y su Secondary Map Header y debe tener una entrada en ambos para existir como tal.



Map Header

Gold (U) / Silver (U): 0x94121
Crystal (U): 0x94034
Longitud de cada entrada: 0x09 bytes


Estructura

[Bank del Secondary Map Header][Tileset][Permiso][Pointer a Secondary Map Header (2 bytes)]
[Localización en el Town Map][Música][Tiempo del día][Grupo de pesca]


Bank del Secondary Map Header
ROM bank en la que se encuentra el Secondary Map Header del mapa.

Tileset
Tileset usada por el mapa.

Permiso
Permisos ofrecidos por el mapa, tales como si es posible volar o montar en bicicleta.

01 - Ciudades y pueblos
02 - Rutas y exteriores
03 - Interiores
04 - Cuevas
06 - Portales
07 - Torres
Pointer a Secondary Map Header
Puntero de 2 bytes al Secondary Map Header del mapa (dentro de la ROM bank indicada por Bank del Secondary Map Header).

Localización en el Town Map
Localización del mapa en el Town Map visible en el Pokegear (ver la sección Localización en el Town Map para mas información).

Música
Música que suena al estar dentro del mapa.

MUSIC_NONE EQU 0
MUSIC_TITLE EQU 1
MUSIC_ROUTE_1 EQU 2
MUSIC_ROUTE_3 EQU 3
MUSIC_ROUTE_12 EQU 4
MUSIC_MAGNET_TRAIN EQU 5
MUSIC_KANTO_GYM_LEADER_BATTLE EQU 6
MUSIC_KANTO_TRAINER_BATTLE EQU 7
MUSIC_KANTO_WILD_BATTLE EQU 8
MUSIC_POKEMON_CENTER EQU 9
MUSIC_HIKER_ENCOUNTER EQU 10
MUSIC_LASS_ENCOUNTER EQU 11
MUSIC_OFFICER_ENCOUNTER EQU 12
MUSIC_HEAL EQU 13
MUSIC_LAVENDER_TOWN EQU 14
MUSIC_ROUTE_2 EQU 15
MUSIC_MT_MOON EQU 16
MUSIC_SHOW_ME_AROUND EQU 17
MUSIC_GAME_CORNER EQU 18
MUSIC_BICYCLE EQU 19
MUSIC_HALL_OF_FAME EQU 20
MUSIC_VIRIDIAN_CITY EQU 21
MUSIC_CELADON_CITY EQU 22
MUSIC_TRAINER_VICTORY EQU 23
MUSIC_WILD_VICTORY EQU 24
MUSIC_GYM_VICTORY EQU 25
MUSIC_MT_MOON_SQUARE EQU 26
MUSIC_GYM EQU 27
MUSIC_PALLET_TOWN EQU 28
MUSIC_POKEMON_TALK EQU 29
MUSIC_PROF_OAK EQU 30
MUSIC_RIVAL_ENCOUNTER EQU 31
MUSIC_RIVAL_AFTER EQU 32
MUSIC_SURF EQU 33
MUSIC_EVOLUTION EQU 34
MUSIC_NATIONAL_PARK EQU 35
MUSIC_CREDITS EQU 36
MUSIC_AZALEA_TOWN EQU 37
MUSIC_CHERRYGROVE_CITY EQU 38
MUSIC_KIMONO_ENCOUNTER EQU 39
MUSIC_UNION_CAVE EQU 40
MUSIC_JOHTO_WILD_BATTLE EQU 41
MUSIC_JOHTO_TRAINER_BATTLE EQU 42
MUSIC_ROUTE_30 EQU 43
MUSIC_ECRUTEAK_CITY EQU 44
MUSIC_VIOLET_CITY EQU 45
MUSIC_JOHTO_GYM_LEADER_BATTLE EQU 46
MUSIC_CHAMPION_BATTLE EQU 47
MUSIC_RIVAL_BATTLE EQU 48
MUSIC_ROCKET_BATTLE EQU 49
MUSIC_PROF_ELM EQU 50
MUSIC_DARK_CAVE EQU 51
MUSIC_ROUTE_29 EQU 52
MUSIC_ROUTE_36 EQU 53
MUSIC_SS_AQUA EQU 54
MUSIC_YOUNGSTER_ENCOUNTER EQU 55
MUSIC_BEAUTY_ENCOUNTER EQU 56
MUSIC_ROCKET_ENCOUNTER EQU 57
MUSIC_POKEMANIAC_ENCOUNTER EQU 58
MUSIC_SAGE_ENCOUNTER EQU 59
MUSIC_NEW_BARK_TOWN EQU 60
MUSIC_GOLDENROD_CITY EQU 61
MUSIC_VERMILION_CITY EQU 62
MUSIC_POKEMON_CHANNEL EQU 63
MUSIC_POKE_FLUTE_CHANNEL EQU 64
MUSIC_TIN_TOWER EQU 65
MUSIC_SPROUT_TOWER EQU 66
MUSIC_BURNED_TOWER EQU 67
MUSIC_LIGHTHOUSE EQU 68
MUSIC_LAKE_OF_RAGE EQU 69
MUSIC_INDIGO_PLATEAU EQU 70
MUSIC_ROUTE_37 EQU 71
MUSIC_ROCKET_HIDEOUT EQU 72
MUSIC_DRAGONS_DEN EQU 73
MUSIC_JOHTO_WILD_BATTLE_NIGHT EQU 74
MUSIC_RUINS_OF_ALPH_RADIO EQU 75
MUSIC_CAPTURE EQU 76
MUSIC_ROUTE_26 EQU 77
MUSIC_MOM EQU 78
MUSIC_VICTORY_ROAD EQU 79
MUSIC_POKEMON_LULLABY EQU 80
MUSIC_POKEMON_MARCH EQU 81
MUSIC_GS_OPENING EQU 82
MUSIC_GS_OPENING_2 EQU 83
MUSIC_MAIN_MENU EQU 84
MUSIC_RUINS_OF_ALPH_INTERIOR EQU 85
MUSIC_ROCKET_OVERTURE EQU 86
MUSIC_DANCING_HALL EQU 87
MUSIC_BUG_CATCHING_CONTEST_RANKING EQU 88
MUSIC_BUG_CATCHING_CONTEST EQU 89
MUSIC_LAKE_OF_RAGE_ROCKET_RADIO EQU 90
MUSIC_PRINTER EQU 91
MUSIC_POST_CREDITS EQU 92
MUSIC_CLAIR EQU 93
MUSIC_MOBILE_ADAPTER_MENU EQU 94
MUSIC_MOBILE_ADAPTER EQU 95
MUSIC_BUENAS_PASSWORD EQU 96
MUSIC_MYSTICALMAN_ENCOUNTER EQU 97
MUSIC_CRYSTAL_OPENING EQU 98
MUSIC_BATTLE_TOWER_THEME EQU 99
MUSIC_SUICUNE_BATTLE EQU 100
MUSIC_BATTLE_TOWER_LOBBY EQU 101
MUSIC_MOBILE_CENTER EQU 102
Tiempo del día
Paleta usada por el mapa según el tiempo del día.

XXXXX000 - Cambia según el tiempo del día
XXXXX001 - Paleta de día (usada por interiores)
XXXXX010 - Paleta de noche (usada por cuevas)
XXXXX011 - Paleta de mañana
XXXXX100 - No hay luz. Se cambia a paleta de noche tras usar Flash
XXXXX101 - Cambia según el tiempo del día
XXXXX110 - Cambia según el tiempo del día
XXXXX111 - Cambia según el tiempo del día
Grupo de pesca
Indica que tabla de pesca tiene asignada el mapa (ver la sección Añadiendo Pokemon Salvajes para mas información).



Secondary Map Header

Gold (U) / Silver (U): 0x95B6D
Crystal (U): 0x94DD8
Longitud de cada entrada: 0x0C + (0x0C * Nº Conexiones) bytes


Estructura

[Border Block][Altura][Anchura][Pointer a Block Data (3 bytes)][Bank del Script Header y del Event Header]
[Pointer a Script Header (2 bytes)][Pointer a Event Header (2 bytes)][Byte de conexión]


Por cada conexión:

[Identificador de grupo del mapa destino][Identificador de mapa del mapa destino][Strip Pointer (2 bytes)]
[Strip destination (2 bytes)][Longitud del Strip][Anchura del mapa destino][Alineación vertical]
[Alineación horizontal][Ventana (2 bytes)]


Border Block
Bloque de relleno mostrado en pantalla por defecto cuando el mapa no cubre toda el área de visión de la ventana y no hay datos de otro mapa adyacente que mostrar. El bloque se toma del tileset utilizado por el mapa en que nos encontramos.

Altura
Numero de bloques que tiene mapa en el eje Y.

Anchura
Numero de bloques que tiene mapa en el eje X.

Pointer a Block Data (3 bytes)
Puntero de 3 bytes al Block Data del mapa.

Bank del Script Header y del Event Header
ROM bank en la que se encuentan el Script Header y el Event Header del mapa.

Pointer a Script Header (2 bytes)
Puntero de 2 bytes al Script Header del mapa (dentro de la ROM bank indicada por Bank del Script Header y del Event Header).

Pointer a Event Header (2 bytes)
Puntero de 2 bytes al Event Header del mapa (dentro de la ROM bank indicada por Bank del Script Header y del Event Header).

Byte de conexión
Indica la cantidad y tipo de conexiones del mapa.

00 = Sin Conexiones
01 = Este
02 = Oeste
03 = Oeste + Este
04 = Sur
05 = Sur + Este
06 = Sur + Oeste
07 = Sur + Oeste + Este
08 = Norte
09 = Norte + Este
0A = Norte + Oeste
0B = Norte + Oeste + Este
0C = Norte + Sur
0D = Norte + Sur + Este
0E = Norte + Sur + Oeste
0F = Norte + Sur + Oeste + Este
Si hay mas de una conexión, estás deben ordenarse NORTE | SUR | OESTE | ESTE

(Ver la sección Conectando Mapas para mas información)

Identificador de grupo del mapa destino
Identificador de grupo del mapa al cual el mapa en en que nos encontramos se conecta.

Identificador de mapa del mapa destino
Identificador de mapa del mapa al cual el mapa en en que nos encontramos se conecta.

Strip Pointer (2 bytes)
Puntero del Strip en la ROM.

Strip destination (2 bytes)
Destino del Strip en la RAM.

Longitud del Strip
Número de bloques que cubre el Strip a lo largo.

Anchura del mapa destino
Numero de bloques que tiene el mapa en el eje X.

Alineación vertical
Posición relativa en el eje Y tras entrar en el mapa destino (en bloques).

Alineación horizontal
Posición relativa en el eje X tras entrar en el mapa destino (en bloques).

Ventana
Parte del mapa que se visualiza en la pantalla tras entrar en el mapa destino.



Localización en el Town Map

Esta sección es una ampliación a la entrada del Map Header Localización en el Town Map.

La posición de cada mapa individual en el mapa global (Town Map) mostrado en el Pokegear viene determinado por una tabla con la siguiente estructura y localización:

[Coordenada X][Coordenada Y][Pointer al nombre del mapa (2 bytes)]

Gold (U) / Silver (U): 0x92383
Crystal (U): 0x1CA8C3
Longitud de cada entrada: 0x04 bytes


El orden de los mapas en la tabla, que coincide con el orden según el cual nos desplazamos en el Pokegear, es el siguiente:

00 - Special
01 - New Bark Town
02 - Route 29
03 - Cherrygrove City
04 - Route 30
05 - Route 31
06 - Violet City
07 - Sprout Tower
08 - Route 32
09 - Ruins of Alph
0A - Union Cave
0B - Route 33
0C - Azalea Town
0D - Slowpoke Well
0E - Ilex Forest
0F - Route 34
10 - Goldenrod City
11 - Radio Tower
12 - Route 35
13 - National Park
14 - Route 36
15 - Route 37
16 - Ecruteak City
17 - Tin Tower
18 - Burned Tower
19 - Route 38
1A - Route 39
1B - Olivine City
1C - Lighthouse
1D - Route 40
1E - Whirl Islands
1F - Route 41
20 - Cianwood City
21 - Route 42
22 - Mt. Mortar
23 - Mahogany Town
24 - Route 43
25 - Lake of Rage
26 - Route 44
27 - Ice Path
28 - Blackthorn City
29 - Dragon's Den
2A - Route 45
2B - Dark Cave
2C - Route 46
2D - Silver Cave
2E - Pallet Town
2F - Route 1
30 - Viridian City
31 - Route 2
32 - Pewter City
33 - Route 3
34 - Mt. Moon
35 - Route 4
36 - Cerulean City
37 - Route 24
38 - Route 25
39 - Route 5
3A - Underground
3B - Route 6
3C - Vermilion City
3D - Diglett Cave
3E - Route 7
3F - Route 8
40 - Route 9
41 - Rock Tunnel
42 - Route 10
43 - Power Plant
44 - Lavender City
45 - Lav. Radio Tower
46 - Celadon City
47 - Saffron City
48 - Route 11
49 - Route 12
4A - Route 13
4B - Route 14
4C - Route 15
4D - Route 16
4E - Route 17
4F - Route 18
50 - Fuschia City
51 - Route 19
52 - Route 20
53 - Seafoam Islands
54 - Cinnabar Island
55 - Route 21
56 - Route 22
57 - Victory Road
58 - Route 23
59 - Indigo Plateau
5A - Route 26
5B - Route 27
5C - Tohjo Falls
5D - Route 28
5E - Fast Ship
00 - Special
01 - New Bark Town
02 - Route 29
03 - Cherrygrove City
04 - Route 30
05 - Route 31
06 - Violet City
07 - Sprout Tower
08 - Route 32
09 - Ruins of Alph
0A - Union Cave
0B - Route 33
0C - Azalea Town
0D - Slowpoke Well
0E - Ilex Forest
0F - Route 34
10 - Goldenrod City
11 - Radio Tower
12 - Route 35
13 - National Park
14 - Route 36
15 - Route 37
16 - Ecruteak City
17 - Tin Tower
18 - Burned Tower
19 - Route 38
1A - Route 39
1B - Olivine City
1C - Lighthouse
1D - Battle Tower
1E - Route 40
1F - Whirl Islands
20 - Route 41
21 - Cianwood City
22 - Route 42
23 - Mt. Mortar
24 - Mahogany Town
25 - Route 43
26 - Lake of Rage
27 - Route 44
28 - Ice Path
29 - Blackthorn City
2A - Dragon's Den
2B - Route 45
2C - Dark Cave
2D - Route 46
2E - Silver Cave
2F - Pallet Town
30 - Route 1
31 - Viridian City
32 - Route 2
33 - Pewter City
34 - Route 3
35 - Mt. Moon
36 - Route 4
37 - Cerulean City
38 - Route 24
39 - Route 25
3A - Route 5
3B - Underground
3C - Route 6
3D - Vermilion City
3E - Diglett Cave
3F - Route 7
40 - Route 8
41 - Route 9
42 - Rock Tunnel
43 - Route 10
44 - Power Plant
45 - Lavender City
46 - Lav. Radio Tower
47 - Celadon City
48 - Saffron City
49 - Route 11
4A - Route 12
4B - Route 13
4C - Route 14
4D - Route 15
4E - Route 16
4F - Route 17
50 - Route 18
51 - Fuschia City
52 - Route 19
53 - Route 20
54 - Seafoam Islands
55 - Cinnabar Island
56 - Route 21
57 - Route 22
58 - Victory Road
59 - Route 23
5A - Indigo Plateau
5B - Route 26
5C - Route 27
5D - Tohjo Falls
5E - Route 28
5F - Fast Ship
La diferencia entre Gold / Silver y Crystal es que Crystal contiene una entrada adicional entre Lighthouse y Route 40: Battle Tower.

La primera entrada ("SPECIAL") nos es irrelevante, por lo que utilizaremos como ejemplo la siguiente, que se corresponde con "NEW BARK TOWN". Si utilizamos Pokemon Gold / Silver como ROM base, veremos lo siguiente:

[0x94][0x74][0xFE][0x64]

0x94: Coordenada X en el Town Map
0x74: Coordenada Y en el Town Map
0xFE 0x64: Puntero de 2 bytes al nombre asignado a dichas coordenadas (es decir, la string con el nombre esta localizada en 0x924FE).

(Nota: Para modificar el aspecto del Town Map se recomienda utilizar la tool GSC Town Map Editor.)



Flypoints y Blackout Points

Los flypoints (posiciones de vuelo) y blackout points (posiciones de blackout) vienen determinados por una tabla con la siguiente estructura:

[Identificador de grupo del mapa][Identificador de mapa del mapa][Coordenada X][Coordenada Y]

donde las coordenadas X e Y se miden en half-blocks.

Su localización es:

Gold (U) / Silver (U): 0x15319
Crystal (U): 0x152AB
Longitud de cada entrada: 0x04 bytes


Esta tabla indica los mapas a los que se puede volar mediante en uso de la HM02 (Fly) con las coordenadas correspondientes en las que apareceremos en cada mapa, además de determinar los mapas y posiciones de blackout. En este último caso, se tomará la entrada de la tabla que contenga el mapa cuyo PC (Pokemon Center) se visitó por última vez.

La primera entrada de la tabla coincide con la posición de inicio del juego, y será, ademas, la entrada utilizada si ocurre un blackout cuando no se ha visitado ningún PC aún. La segunda entrada apunta al PC de Viridian City, pero en realidad nunca se usa. A partir de aquí tendremos una entrada para cada mapa con PC.

Cada uno de los mapas con entrada en la tabla posee una flag que indica si es posible volar a dicho mapa o no. Estas flags de vuelo pertenecen a la BitTable2 y están localizadas en el rango [0034,004B] para Gold / Silver, y en el rango [0035,004C] para Crystal. Si la flag asociada a un determinado mapa está activada, será posible volar a dicho mapa. Estas flags se activan inmediatamente al entrar a cada mapa en cuestión, mediante un Callback y la instrucción SetBit2 cuya estructura es [0x34][Flag (2 bytes)]. En otras palabras, es posible volar a un mapa una vez que éste haya sido visitado.

A continuación se muestra una lista con el formato Nº entrada en la tabla - Flag asociada - Nombre del mapa

00 - FFFF - Casa del jugador
01 - FFFF - Viridian City PC (No usada)
02 - 0034 - Pallet Town
03 - 0035 - Viridian City
04 - 0036 - Pewter City
05 - 0037 - Cerulean City
06 - 0038 - Rock Tunnel Outside
07 - 0039 - Vermilion City
08 - 003A - Lavender Town
09 - 003B - Saffron City
0A - 003C - Celadon City
0B - 003D - Fuchsia City
0C - 003E - Cinnibar Island
0D - 003F - Indigo Plateau
0E - 0040 - New Bark Town
0F - 0041 - Cherrygrove City
10 - 0042 - Violet City
11 - FFFF - Route 32
12 - 0043 - Azalea Town
13 - 0044 - Cianwood City
14 - 0045 - Goldenrod City
15 - 0046 - Olivine City
16 - 0047 - Ecruteak City
17 - 0048 - Mahogany Town
18 - 0049 - Lake of Rage
19 - 004A - Blackthorn City
1A - 004B - Silver Cave Outside
00 - FFFF - Casa del jugador
01 - FFFF - Viridian City PC (No usada)
02 - 0035 - Pallet Town
03 - 0036 - Viridian City
04 - 0037 - Pewter City
05 - 0038 - Cerulean City
06 - 0039 - Rock Tunnel Outside
07 - 003A - Vermilion City
08 - 003B - Lavender Town
09 - 003C - Saffron City
0A - 003D - Celadon City
0B - 003E - Fuchsia City
0C - 003F - Cinnibar Island
0D - 0040 - Indigo Plateau
0E - 0041 - New Bark Town
0F - 0042 - Cherrygrove City
10 - 0043 - Violet City
11 - FFFF - Route 32
12 - 0044 - Azalea Town
13 - 0045 - Cianwood City
14 - 0046 - Goldenrod City
15 - 0047 - Olivine City
16 - 0048 - Ecruteak City
17 - 0049 - Mahogany Town
18 - 004A - Lake of Rage
19 - 004B - Blackthorn City
1A - 004C - Silver Cave Outside
La tabla que vamos a ver a continuación relaciona las entradas correspondientes de la tabla vista en la sección Localización del Town Map (G/S: 0x92383 / C: 0x1CA8C3), con las entradas de la tabla vista recientemente en esta sección (G/S: 0x15319 / C: 0x152AB). Por tanto, es importante tener esta tabla en cuenta para que el Town Map mostrado al usar Fly se muestre consecuentemente a los cambios realizados en los flypoints.

Estructura:

[Nº entrada tabla 0x92383 / 0x1CA8C3][Nº entrada tabla 0x15319 / 0x152AB]

Localización:

Gold (U) / Silver (U): 0x91BCC
Crystal (U): 0x91C5E
Longitud de cada entrada: 0x02 bytes


Por ejemplo, la primera entrada de esta tabla es [0x01][0x0E]. Esta entrada implica que, en efecto, la posición en el Town Map correspondiente a New Bark Town (ver tabla G/S: 0x92383 / C: 0x1CA8C3) se corresponde con el flypoint de New Bark Town (ver tabla G/S: 0x15319 / C: 0x152AB). Del mismo modo, la segunda entrada de esta tabla, [0x03][0x0F], está relacionando las dos instancias de Cherrygrove City.

Ejemplo

Para este ejemplo tomaremos Pokemon Crystal como ROM base. Nótese que para aplicarlo a las versiones Gold / Silver tan solo tendríamos que ajustar el orden de las diferentes entradas de dichas tablas, y, por supuesto, usar los offsets indicados para Gold / Silver.

Vamos a suponer que queremos situar el flypoint / blackout point correspondiente a Cherrygrove City en Route 43. A primera vista esto no tiene mucho sentido, pero en caso de haber cambiado el aspecto de la región (o de haber creado una nueva región), es posible que hayamos convertido lo que originalmente era Route 43 en una ciudad o pueblo con PC.

Lo primero que debemos hacer es localizar la entrada de Cherrygrove City en la tabla 0x152AB. Para ello no tenemos mas que tener en cuenta la longitud de cada entrada. Como Cherrygrove City se encuentra en la entrada 0x0F y la primera entrada la hemos identificado como 0x00:

0x152AB + (0x0F - 0x00) * 0x04 = 0x152AB + 0x0F * 0x04 = 0x152E7

Esta entrada muestra lo siguiente:

[0x1A][0x03][0x1D][0x04]

Lo primero que hacemos es ajustar los bytes identificadores de mapa. Tomamos los identificadores correspondientes a Route 43, de manera que nos queda:

[0x09][0x05][0x1D][0x04]

También deberiamos ajustar las coordenadas X e Y a nuestro nuevo mapa. Si quisiesemos seguir con la tendencia del juego original, ajustaríamos las coordenadas al half-block situado delante de la puerta del PC. Un ejemplo podría ser:

[0x09][0x05][0x11][0x0B]

Por último debemos modificar la entrada correspondiente de la tabla 0x91C5E para que el Town Map se muestre acorde a los cambios realizados al usar Fly. Como ya hemos visto, la entrada correspondiente a Cherrygrove City se encuentra en la segunda posición de dicha tabla. Si tuviesemos que encontar una entrada N cualquiera, tan solo tendríamos que aplicar la misma lógica que usamos para la tabla anterior. Es decir, si tomamos como referencia que la primera entrada se corresponde con 0x01:

0x91C5E + (N - 0x01) * 0x02

Nuestro caso es muy sencillo:

0x91C5E + (0x02 - 0x01) * 0x02 = 0x91C60

Esta entrada contiene los siguientes bytes:

[0x03][0x0F]

El segundo byte no lo modificamos ya que hace referencia a la entrada 0x0F de la tabla 0x152AB que acabamos de ajustar.

Sin embargo, debemos modificar el primero para que haga referencia a Route 43 en vez de a Cherrygrove City. Para ello, no tenemos mas que buscar la posición de Route 43 en la tabla 0x1CA8C3 vista en Localización en el Town Map. Como su posición es 0x25, la entrada de la tabla 0x91C5E modificada quedaría de la siguiente manera:

[0x25][0x0F]



Conectando Mapas

A la hora de conectar dos mapas adyacentes debemos establecer una conexión en ambos mapas y debemos tener en cuenta, para las dos conexiones, los siguientes parámetros:
  • Identificador de grupo del mapa destino
  • Identificador de mapa del mapa destino
  • Strip Pointer
  • Srip Destination
  • Longitud del Strip
  • Anchura del mapa destino
  • Alineación vertical
  • Alineación horizontal
  • Ventana
En el caso de que los dos mapas esten conectados mediante un Warp, los siguientes parámetros son irrelevantes:
  • Alineación vertical
  • Alineación horizontal
  • Ventana
Si además el mapa destino no es visible desde ningún punto del mapa origen, todos los parámetros son irrelevantes y no es necesario definir la conexión en esa dirección.

(Nota: en esta subsección, todas las medidas de longitud se toman en bloques, y todos los calculos están realizados en numeración hexadecimal.)

Identificando el Strip

El Strip es una tira que cubre todo el rango de visión del mapa destino desde cualquier punto del mapa origen. Debido al tamaño de la ventana mostrada en pantalla, se tiene que tomas un margen de 3 bloques tanto a lo largo como a lo ancho siempre que sea necesario.

Strip Pointer

Puntero al bloque de menor offset del Strip.

Strip Destination

Se calcula de la siguiente manera, dependiendo del tipo de conexión:
  • Norte: C703 + X + V
  • Oeste: C700 + (w+6) * (Y+3) + V
  • Sur: C703 + (h+3) * (w+6) + X + V
  • Este: C6FD + (w+6) * (Y+4) + V
Donde:
  • h: Altura del mapa origen
  • w: Anchura del mapa origen
  • Y: Offset vertical
  • X: Offset horizontal
  • V: 0 para Pokemon Gold / Silver y 100 para Pokemon Crystal
Alineación vertical

Se calcula de la siguiente manera, dependiendo del tipo de conexión:
  • Norte: (h*2) - 1
  • Oeste: (-2) * Y
  • Sur: 0
  • Este: (-2) * Y
Donde:
  • h: Altura del mapa destino
  • w: Anchura del mapa destino
  • Y: Offset vertical
  • X: Offset horizontal
Alineación horizontal

Se calcula de la siguiente manera, dependiendo del tipo de conexión:
  • Norte: (-2) * X
  • Oeste: (2*w) - 1
  • Sur: (-2) * X
  • Este: 0
Donde:
  • h: Altura del mapa destino
  • w: Anchura del mapa destino
  • Y: Offset vertical
  • X: Offset horizontal
Ventana

Se calcula de la siguiente manera, dependiendo del tipo de conexión:
  • Norte: C701 + (h) * (w+6) + V
  • Oeste: C706 + (2*w) + V
  • Sur: C707 + w + V
  • Este: C707 + w + V
Donde:
  • h: Altura del mapa destino
  • w: Anchura del mapa destino
  • Y: Offset vertical
  • X: Offset horizontal
  • V: 0 para Pokemon Gold / Silver y 100 para Pokemon Crystal
Ejemplo

Vamos a ver un ejemplo para cada tipo de conexión, tomando Pokemon Crystal como ROM base:
  • Origen: Cherrygrove City - Destino: Este a Route 29
  • Origen: Route 29 - Destino: Oeste a Cherrygrove City
  • Origen: Cherrygrove City - Destino: Norte a Route 30
  • Origen: Route 30 - Destino: Sur a Cherrygrove City
Se recomienda tomar esta imagen como referencia:


Origen: Cherrygrove City - Destino: Este a Route 29 (1)

  • Strip y Longitud del Strip

    Identificamos el Strip como el área de Route 29 que puede verse desde Cherrygrove City, tomando como margen 3 bloques (Área 1). Su longitud es entonces el rango que cubre verticalmente, el cual coincide con la áltura de Route 29: 0x09.

  • Strip Pointer

    Bloque de menor offset del Strip (SP1). Este bloque tiene como offset 0xA92D5. Por tanto, el Strip Pointer es 0xD5 0x52.

  • Strip Destination

    En un editor de mapas podemos ver facilmente que la anchura de Cherrygrove City (w) es 0x14 y que su altura (h) es 0x09. Como el lado por el que se conectan los mapas tiene el mismo tamaño en ambos mapas, el offset será nulo.

    Aplicando la fórmula C6FD + (w+6) * (Y+4) + V:

    C6FD + (14+6) * (0+4) + 100 = C6FD + 1A * 4 + 100 = C865

    Por tanto, el Strip Destination es 0x65 0xC8.


  • Alineación vertical

    Hemos dicho ya que el offset Y es nulo. Por tanto, aplicando la fórmula (-2) * Y:

    (-2) * 0 = 0

    El byte de alineación vertical es 0x00.


  • Alineación horizontal

    Como veíamos antes, el byte de alineación horizontal es siempre 0x00 para conexiones dirección este.

  • Ventana

    Aplicamos la fórmula C707 + w + V, donde w es la anchura del mapa destino, es decir, Route 29. Por tanto, w es 0x1E.

    C707 + 1E + 100 = C825

    Invirtiendo los bytes del resultado obtenemos 0x25 0xC8.
Origen: Route 29 - Destino: Oeste a Cherrygrove City (2)


  • Strip y Longitud del Strip

    El Strip es el área indicada por (Área 2) en la imagen. Se puede ver facilmetne que su longitud coincide con la del caso anterior: 0x09.

  • Strip Pointer

    Bloque indicado en la imagen por (SP2). Su offset es 0xACE20. Por tanto, el Strip Pointer es 0x20 0x4E.

  • Strip Destination

    Tomando la altura (h=0x09) y anchura (w=0x1E) de Route 29, teniendo en cuenta que no hay offset, y aplicando la fórmula vista para la dirección oeste obtenemos:

    C700 + (1E+6) * (0+3) + 100= C86C

    Esto equivale a un Strip Destination de 0x6C 0xC8.


  • Alineación vertical

    (-2) * Y = (-2) * 0 = 0

    El byte de alineación vertical es 0x00.


  • Alineación horizontal

    Tomamos (w*2) - 1 con w = 0x14 (anchura de Cherrygrove City).

    El byte de alineación horizontal resultante es 0x27


  • Ventana

    Aplicamos la fórmula C706 + (2*w) + V, donde w es 0x14 y V lo consideramos 0x100 por tratarse de Pokemon Crystal.

    Invertimos el resultado y obtenemos 0x2E 0xC8.
Origen: Cherrygrove City - Destino: Norte a Route 30 (3)


  • Strip y Longitud del Strip

    La longitud del Strip (Área 3) coincide con el ancho de Route 30: 0x0A

  • Strip Pointer

    0xE7 0x60 (SP3).

  • Strip Destination

    La fórmula a aplicar es: C703 + X + V, donde X es el offset horizontal.

    Para calcular el offset en X tomamos el extremo izquierdo del mapa origen y el extremo izquierdo del Strip en el mapa destino, y contamos la cantidad de bloques que el segundo esta desplazado respecto del primero (ver imagen). En este caso, el número de "espacios tamaño bloque" es igual a 5.

    La fórmula queda por tanto C703 + 5 + 100, lo que da un Strip Destination de 0x08 0xC8.

    Si, por contra, tuviésemos una conexión de mapas horizontal, e hiciera falta calcular el offset en Y, tomaríamos los extremos de arriba como referencia.

    El resto de parámetros se calcularían de una forma similar a lo visto en los ejemplos anteriores, pero tomando las fórmulas correspondientes a dirección norte, y teniendo en cuenta que el offset horizontal tiene un valor de 5.

    (Nótese que el offset vertical nunca está presente en las fórmulas de Norte | Sur y viceversa.)

    Si cualquier fórmula diese un resultado negativo (menor que 0x00), se debe sumar 0x100 (256 en decimal) al resultado obtenido.


Origen: Route 30 - Destino: Sur a Cherrygrove City (4)



En este caso se van a detallar tan solo las diferencias significativas con respecto a los ejemplos anteriores.

A la hora de determinar el Strip, debemos tener en cuenta que estamos pasando verticalmente hacia un mapa mas ancho. Por tanto el Strip no solo debe cubrir el margen de 3 bloques vertical, sino que se deben añadir 3 bloques horizontalmente a ambos lados para cubrir todo el posible área de visión (ver imagen). Es facil de ver que la longitud del Strip sera entonces la anchura de Route 30 + 6, es decir, 0x10.

Para calcular el offset horizontal, al igual que en el ejemplo anterior, tomamos el extremo izquierdo del mapa origen y el extremo izquierdo del Strip en el mapa destino, y contamos la cantidad de bloques que el segundo esta desplazado respecto del primero (ver imagen). En este caso, el Strip del mapa destino (Cherrygrove City) comienza tres bloques mas a la izquierda ("antes") que el mapa origen (Route 30), lo que significa que tenemos que manejar un offset en X de -3.

Este offset de valor -3 nos sirve para calcular el Strip Destination, pero para calcular la alineacion horizontal, alineación vertical y ventana (parámetros que no están relacionados con el Strip), el offset horizontal es diferente. En este caso, no debemos tomar el extremo izquierdo del Strip, sino el extremo izquierdo del mapa completo, lo que nos da un offset de -5 (ver imagen). En el ejemplo (3) no existía diferencia entre el offset para el Strip Destination y el offset para los parámetros posteriores, ya que la posición en la que empezaba el Strip coincidía con la posición en la que empezaba el mapa (ver imagen).



Añadiendo Pokemon Salvajes

Pokemon salvajes "de suelo"

Aunque resulta muy sencillo editar este tipo Pokemon salvajes mediante una tool como el GSC Wild Pokemon Editor, resulta útil tener conocimientos sobre este tema para poder asignar datos de Pokemon salvajes a diferentes mapas.

(Nota: A partir de ahora en esta subsección se concreta el termino Pokemon Salvajes a tan solo los Pokemon "de suelo", es decir, Pokemon que aparecen en la hierba alta o en cuevas o torres.)

La estructura que siguen los datos de los Pokemon salvajes es la siguiente:

[Identificador de grupo][Identificador de mapa][Prob. encuentro mañana][Prob. encuentro día][Prob. encuentro noche][Datos de Pokemon]

donde la probabilidad de encuentro se calcula sobre 256. Los datos de Pokemon se organizan de la forma [Nivel][Pokemon], habiendo un total de 21 Pokemon (7 por cada tiempo del día). Por tanto, los datos de Pokemon salvajes de un mapa ocupan un total de 47 bytes de la memoria ROM. Las probabilidades de aparición de cada uno de los siete Pokemon en particular dependen del orden el que estén colocados, y son, aproximadamente las siguientes:

Pokemon 1 - 30%
Pokemon 2 - 30%
Pokemon 3 - 20%
Pokemon 4 - 10%
Pokemon 5 - 5%
Pokemon 6 - 4%
Pokemon 7 - 1%
Los datos de Pokemon salvajes son muy extensos y en gran medida no es necesario tener una tabla con las localizaciones de los Pokemon salvajes de cada mapa. Hay maneras sencillas de localizar los Pokemon salvajes de un determinado mapa en la ROM; conociendo los porcentajes de encuentro del mapa, no habría mas que buscar los 5 primeros bytes de la estructura dentro de la bank 0x0A. Por otra parte, el propio GSC Wild Pokemon Editor nos muestra los offsets donde se encuentran los Pokemon salvajes de un mapa sin mas que guardar cambios en ese mapa. Una vez localizada la entrada buscada, no hay mas que modificar los identificadores de mapa si quisiéramos asignar los datos de Pokemon salvajes de un mapa a otro.

Pokemon de Surf

Los Pokemon salvajes que se pueden encontrar al usar Surf siguen unas característican similares, pero ocupan mucho menos espacio:

[Identificador de grupo][Identificador de mapa][Prob. encuentro][Datos de Pokemon]

En este caso no se distingue en en función del tiempo del día, y, ademas solo hay 3 Pokemon asignados a cada mapa para un total de 9 bytes por entrada.
Los dos primeros Pokemon que introduzcamos aparecerán en el rango de niveles [L,L+4] y el tercer Pokemon podrá aparecer en el rango [L,L+1], donde L es el nivel introducido. Las doce posibilidades resultantes tienen una probabilidad similar de darse en un encuentro con un Pokemon salvaje de Surf.

La busqueda de los datos de Pokemon de Surf puede ser algo mas complicada, pero la tool GSC Wild Pokemon Editor también nos puede mostrar sus localizaciones si fuese necesario.

Pokemon de Headbutt y Rock Smash

Existen 12 tablas diferentes que contienen datos de Pokemon que aparecen al utilizar la TM Headbutt en uno de los árboles permitidos. Adicionalmente, existe una decimotercera tabla situada en la última posición que contiene los datos de Pokemon encontrados al usar Rock Smash en las rocas correspondientes. La localización de la primera tabla es:

Gold (U) / Silver (U): 0xBA47C
Crystal (U): 0xB82FA
Longitud de cada tabla: 0x13 bytes


Los punteros a cada una de las tablas se encuentran situadas justo antes de éstas.

[Porcentaje aparición acumulado][Pokemon][Nivel][...][0xFF]
WildTreeMonTable1:
db 50, SPEAROW, 10
db 15, SPEAROW, 10
db 15, SPEAROW, 10
db 10, AIPOM, 10
db 5, AIPOM, 10
db 5, AIPOM, 10
db $ff ; end

WildTreeMonTable2:
db 50, SPEAROW, 10
db 15, HERACROSS, 10
db 15, HERACROSS, 10
db 10, AIPOM, 10
db 5, AIPOM, 10
db 5, AIPOM, 10
db $ff ; end

WildTreeMonTable3:
db 50, SPEAROW, 10
db 15, EKANS, 10
db 15, SPEAROW, 10
db 10, AIPOM, 10
db 5, AIPOM, 10
db 5, AIPOM, 10
db $ff ; end

WildTreeMonTable4:
db 50, SPEAROW, 10
db 15, HERACROSS, 10
db 15, HERACROSS, 10
db 10, AIPOM, 10
db 5, AIPOM, 10
db 5, AIPOM, 10
db $ff ; end

WildTreeMonTable5:
db 50, HOOTHOOT, 10
db 15, SPINARAK, 10
db 15, LEDYBA, 10
db 10, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db $ff ; end

WildTreeMonTable6:
db 50, HOOTHOOT, 10
db 15, PINECO, 10
db 15, PINECO, 10
db 10, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db $ff ; end

WildTreeMonTable7:
db 50, HOOTHOOT, 10
db 15, EKANS, 10
db 15, HOOTHOOT, 10
db 10, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db $ff ; end

WildTreeMonTable8:
db 50, HOOTHOOT, 10
db 15, PINECO, 10
db 15, PINECO, 10
db 10, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db $ff ; end

WildTreeMonTable9:
db 50, HOOTHOOT, 10
db 15, VENONAT, 10
db 15, HOOTHOOT, 10
db 10, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db $ff ; end

WildTreeMonTable10:
db 50, HOOTHOOT, 10
db 15, PINECO, 10
db 15, PINECO, 10
db 10, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db 5, EXEGGCUTE, 10
db $ff ; end

WildTreeMonTable11:
db 50, HOOTHOOT, 10
db 15, PINECO, 10
db 15, PINECO, 10
db 10, NOCTOWL, 10
db 5, BUTTERFREE, 10
db 5, BEEDRILL, 10
db $ff ; end

WildTreeMonTable12:
db 50, HOOTHOOT, 10
db 15, CATERPIE, 10
db 15, WEEDLE, 10
db 10, HOOTHOOT, 10
db 5, METAPOD, 10
db 5, KAKUNA, 10
db $ff ; end

WildRockMonTable:
db 90, KRABBY, 15
db 10, SHUCKLE, 15
db $ff ; end
La tabla que asigna una tabla de Headbutt a cada mapa está localizada en el offset 0xBA3E6 en Pokemon Gold / Silver y en el offset 0xB825E en Pokemon Crystal. Para cada entrada, los dos primeros bytes identifican al mapa, y el tercero determina la tabla de Headbutt asignada a dicho mapa. Al final de esta tabla se puede encontrar una nueva tabla que, del mismo modo, indica que mapas tienen asignada la tabla correspondiente a los Pokemon de Rock Smash.

Dependiendo del tiempo del día determinados Pokemon caerán dormidos del árbol al usar Headbutt. La tabla que determina que Pokemon y cuando lo harán está situada en el offset 0x3E9F3 en las versiones Gold / Silver y en el offset 0x3EBB5 en la versión Crystal. La tabla posee la siguiente estructura:

[Pokemon dormidos noche][0xFF][Pokemon dormidos día][0xFF][Pokemon dormidos mañana][0xFF]

Pokemon de pesca

Como vimos al principio del tutorial, los Pokemon salvajes que aparecen al pescar dependen de la tabla que tenga asignada cada mapa en su Map Header. Existen un total de 12 tablas o grupos de pesca, e incluyen datos correspondientes a las tres cañas de pescar (Old Rod, Good Rod, y Super Rod).

La localización de la primera tabla es la siguiente:

Gold (U) / Silver (U): 0x92A52
Crystal (U): 0x924E3


Además de las 12 tablas de pesca existe una tabla adicional (TimeFishGroups) que contiene datos de Pokemon que tan solo aparecen en un determinado tiempo del día.

Si [Pokemon] =/= 0x00:
[Porcentaje aparición acumulado][Pokemon][Nivel]

Si [Pokemon] = 0x00:
[Porcentaje aparición acumulado][0x00][Entrada de TimeFishGroups]
[Pokemon de día][Nivel][Pokemon de noche][Nivel]
FishGroup1:
FishGroup1_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, KRABBY, 10
FishGroup1_Good:
db $59, MAGIKARP, 20
db $b2, KRABBY, 20
db $e6, KRABBY, 20
db $ff, $0, 0
FishGroup1_Super:
db $66, KRABBY, 40
db $b2, $0, 1
db $e6, KRABBY, 40
db $ff, KINGLER, 40

FishGroup2:
FishGroup2_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, TENTACOOL, 10
FishGroup2_Good:
db $59, MAGIKARP, 20
db $b2, TENTACOOL, 20
db $e6, CHINCHOU, 20
db $ff, $0, 2
FishGroup2_Super:
db $66, CHINCHOU, 40
db $b2, $0, 3
db $e6, TENTACRUEL, 40
db $ff, LANTURN, 40

FishGroup3:
FishGroup3_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, GOLDEEN, 10
FishGroup3_Good:
db $59, MAGIKARP, 20
db $b2, GOLDEEN, 20
db $e6, GOLDEEN, 20
db $ff, $0, 4
FishGroup3_Super:
db $66, GOLDEEN, 40
db $b2, $0, 5
db $e6, MAGIKARP, 40
db $ff, SEAKING, 40

FishGroup4:
FishGroup4_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, POLIWAG, 10
FishGroup4_Good:
db $59, MAGIKARP, 20
db $b2, POLIWAG, 20
db $e6, POLIWAG, 20
db $ff, $0, 6
FishGroup4_Super:
db $66, POLIWAG, 40
db $b2, $0, 7
db $e6, MAGIKARP, 40
db $ff, POLIWAG, 40

FishGroup5:
FishGroup5_Old: ;
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, MAGIKARP, 10
FishGroup5_Good:
db $59, MAGIKARP, 20
db $b2, MAGIKARP, 20
db $e6, MAGIKARP, 20
db $ff, $0, 8
FishGroup5_Super:
db $66, MAGIKARP, 40
db $b2, $0, 9
db $e6, MAGIKARP, 40
db $ff, DRAGONAIR, 40

FishGroup6:
FishGroup6_Old:
db $b3, MAGIKARP, 5
db $d9, MAGIKARP, 5
db $ff, QWILFISH, 5
FishGroup6_Good:
db $59, MAGIKARP, 20
db $b2, QWILFISH, 20
db $e6, QWILFISH, 20
db $ff, $0, 10
FishGroup6_Super:
db $66, QWILFISH, 40
db $b2, $0, 11
db $e6, QWILFISH, 40
db $ff, QWILFISH, 40

FishGroup7:
FishGroup7_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, REMORAID, 10
FishGroup7_Good:
db $59, MAGIKARP, 20
db $b2, REMORAID, 20
db $e6, REMORAID, 20
db $ff, $0, 12
FishGroup7_Super:
db $66, REMORAID, 40
db $b2, $0, 13
db $e6, REMORAID, 40
db $ff, REMORAID, 40

FishGroup8:
FishGroup8_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, MAGIKARP, 10
FishGroup8_Good:
db $59, MAGIKARP, 20
db $b2, MAGIKARP, 20
db $e6, MAGIKARP, 20
db $ff, $0, 14
FishGroup8_Super:
db $66, MAGIKARP, 40
db $b2, $0, 15
db $e6, MAGIKARP, 40
db $ff, MAGIKARP, 40

FishGroup9:
FishGroup9_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, MAGIKARP, 10
FishGroup9_Good:
db $59, MAGIKARP, 10
db $b2, MAGIKARP, 10
db $e6, MAGIKARP, 10
db $ff, $0, 16
FishGroup9_Super:
db $66, MAGIKARP, 10
db $b2, $0, 17
db $e6, MAGIKARP, 10
db $ff, DRAGONAIR, 10

FishGroup10:
FishGroup10_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, KRABBY, 10
FishGroup10_Good:
db $59, MAGIKARP, 20
db $b2, KRABBY, 20
db $e6, KRABBY, 20
db $ff, $0, 18
FishGroup10_Super:
db $66, KRABBY, 40
db $b2, $0, 19
db $e6, KINGLER, 40
db $ff, SEADRA, 40

FishGroup11:
FishGroup11_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, TENTACOOL, 10
FishGroup11_Good:
db $59, MAGIKARP, 20
db $b2, TENTACOOL, 20
db $e6, TENTACOOL, 20
db $ff, $0, 20
FishGroup11_Super:
db $66, TENTACOOL, 40
db $b2, $0, 21
db $e6, MAGIKARP, 40
db $ff, QWILFISH, 40

FishGroup12:
FishGroup12_Old:
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, POLIWAG, 10
FishGroup12_Good:
db $59, MAGIKARP, 20
db $b2, POLIWAG, 20
db $e6, POLIWAG, 20
db $ff, $0, 6
FishGroup12_Super:
db $66, POLIWAG, 40
db $b2, $0, 7
db $e6, MAGIKARP, 40
db $ff, REMORAID, 40
TimeFishGroups:
; 0
db CORSOLA, 20 ; nite
db STARYU, 20 ; day
; 1
db CORSOLA, 40 ; nite
db STARYU, 40 ; day
; 2
db SHELLDER, 20 ; nite
db SHELLDER, 20 ; day
; 3
db SHELLDER, 40 ; nite
db SHELLDER, 40 ; day
; 4
db GOLDEEN, 20 ; nite
db GOLDEEN, 20 ; day
; 5
db GOLDEEN, 40 ; nite
db GOLDEEN, 40 ; day
; 6
db POLIWAG, 20 ; nite
db POLIWAG, 20 ; day
; 7
db POLIWAG, 40 ; nite
db POLIWAG, 40 ; day
; 8
db DRATINI, 20 ; nite
db DRATINI, 20 ; day
; 9
db DRATINI, 40 ; nite
db DRATINI, 40 ; day
; 10
db QWILFISH, 20 ; nite
db QWILFISH, 20 ; day
; 11
db QWILFISH, 40 ; nite
db QWILFISH, 40 ; day
; 12
db REMORAID, 20 ; nite
db REMORAID, 20 ; day
; 13
db REMORAID, 40 ; nite
db REMORAID, 40 ; day
; 14
db GYARADOS, 20 ; nite
db GYARADOS, 20 ; day
; 15
db GYARADOS, 40 ; nite
db GYARADOS, 40 ; day
; 16
db DRATINI, 10 ; nite
db DRATINI, 10 ; day
; 17
db DRATINI, 10 ; nite
db DRATINI, 10 ; day
; 18
db HORSEA, 20 ; nite
db HORSEA, 20 ; day
; 19
db HORSEA, 40 ; nite
db HORSEA, 40 ; day
; 20
db TENTACOOL, 20 ; nite
db TENTACOOL, 20 ; day
; 21
db TENTACOOL, 40 ; nite
db TENTACOOL, 40 ; day
.
.
.
 
Última edición:

Pacodelopio

Entrenador Pkmn
Respuesta: [GBC] Guía completa a mapas y scripts (en progreso)

Uaaa cuanta información, se agradece mucho, si vas a hacer una guia de GBC es una gran noticia ya que no hay tanta informacion en castellano :D, la seguiré de cerca, y gracias por este primer tutorial, espero poder ver muchos mas!
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC] Guía completa a mapas y scripts (en progreso)

Muy buen tutorial el que estas armando!

Muchas cosas son faciles de enteneder, otras tantas no estaban bien explicadas en otras webs, pero veo que aqui si esta toda la informacion.

Me surgen algunas dudas que quizas puedas responder.

1.-Donde se encuentran los identificadores de grupo?
2.-Hace tiempo pense en modificar el numero de mapas que tiene cada grupo, pero hay algun riesgo si modifico esa informacion?
3.-En el byte de "permiso", supongo que el de los portales se refiere a las casetas que unen rutas y pueblos en donde puedes andar en bicicleta?
4.-No entendi muy bien lo de los grupos de pesca, si el byte del map header es igual a 0x00 entonces pertenece a un TimeFishGroups verdad?, pero como sabe a cual de todos los grupos pertenece?


Ansioso por las actualizaciones :D
 

Crystal_

Héroe de WaH
Respuesta: [GBC] Guía completa a mapas y scripts (en progreso)

1 -

Son equivalentes que el juego utiliza para "nombrar" a cada mapa. No es que exista una tabla o algo que relacione nombre con identificador, es solo que a lo que nosotros llamamos Olivine Pokecenter el lo reconoce como 0x01 0x01. El olivine pokecenter se distingue del ecruteak gym debido a los bloques utilizados para formar el mapa, el tamaño del mapa, los eventos etc., no debido a una tabla que relacione la forma en la que tu llamas al mapa con la forma que el juego reconoce dicho mapa.

2 -

Añadir un nuevo mapa supondria añadir una nueva entrada en los map headers y secondary map headers. Lo mas sencillo sería sobreescribir alguno de los mapas beta existentes como puede ser safari zone, aunque si piensas añadir muchos mapas entonces eso ya no será posible para todos ellos. Pero en realidad da igual que un mapa pertenezca a un grupo y a otro siempre y cuando lo identifiques correctamente.

3 - Si

4 -

FishGroup1_Good:
db $59, MAGIKARP, 20
db $b2, KRABBY, 20
db $e6, KRABBY, 20
db $ff, $0, 0

Primer caso: [Pokemon] = Magikarp
Entonces [%][Pokemon][Nivel]

Cuarto caso: [Pokemon] = $0 (= 0x00)
Entonces [%][0x00 (obviamente, ya que este byte es la condición señalada arriba)][Nº entrada TimeFishGroups]

En este caso la entrada tiene el valor 0, lo cual significa:
; 0
db CORSOLA, 20 ; nite (Noche: Corsola lv 20)
db STARYU, 20 ; day (Dia: Staryu lv 20)
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC] Guía completa a mapas y scripts (en progreso)

Esto se esta convirtiendo en una enciclopedia, deberias dar clases en la universidad pokemon jaja

Una informacion muy detallada sobre las conexiones de mapas que de seguro me seran de gran ayuda cuando haga la reconstruccion de Hoenn en pokemon GOLD.

Sobre la respuesta 2 de arriba, segun entiendo los mapas betas no tienen Secondary y Primary Map header no? solo son los bytes del mapa en si, o me equivoco y si puedo usarlos para nuevas rutas? De cualquier forma no es problema, por que siempre podremos tomar una casa y convertirla en algo mas sin que se note en el juego.
 

Crystal_

Héroe de WaH
Respuesta: [GBC] Guía completa a mapas y scripts (en progreso)

Te recomiendo que vayas a los map_headers y second_map_headers de pokecrystal y busques la palabra "beta". Verás que hay alrededor de 12-15 (no se el numero exacto) mapas beta con entrada ambos map headers. Sin embargo ninguno de ellos tiene conexiones, por lo que depende para lo que quieras los mapas tendrías que repointear algunos second_map_headers para hacer hueco a las conexiones. Ademas ten cuidado porque, si no me equivoco, el block data indicado ahí como el portal beta de safari zone es común para todos los portales verticales que existen, asi que, aunque si puedes suprimir la entrada en los headers del portal beta de safari zone, ten cuidado de no modificar el block data!

EDIT: Por cierto, la parte 1 no está finalizada del todo todavía. Ya avisaré cuando esté!
 
Última edición:

Crystal_

Héroe de WaH
Respuesta: [GBC] Guía Completa a Mapas, Eventos y Scripts; Parte 1: Mapas

Lamento en doble post pero es para actualizar el estado del tutorial y en concreto para avisar que la parte 1 correspondiente a mapas ya esta finalizada.

Como digo en la introducción este tutorial debería contener "toda la información necesaria a la hora de trabajar con mapas": " información sobre como modificar mapas existentes y crear nuevos mapas, como modificar el aspecto de la región y la localización de los mapas en ésta, y como conexionar mapas adyacentes corréctamente."

Pues bueno eso es todo, espero que os sirva de ayuda y que valga la pena el tiempo que me ha tomado, aunque es probable que llegue el dia que me sirva a mi de ayuda mas que a nadie! La verdad es que tener las ideas y conceptos ordenados a mi me viene muy bien, espero que a vosotros tambien!

Por cierto, no me pregunteis mucho sobre cuando tengo pensado hacer la parte 2, la verdad es que no lo he pensado todavía, pero ya llegará :p
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [GBC] Guía Completa a Mapas, Eventos y Scripts; Parte 1: Mapas

Ahora entiendo bastante bien el funcionamiento de los mapas, aunque todo es referente a cristal, vale para oro y plata (creo).

Por ser fundamental adhiero el tema a importantes :p
 

Crystal_

Héroe de WaH
Respuesta: [GBC] Guía Completa a Mapas, Eventos y Scripts; Parte 1: Mapas

aunque todo es referente a cristal, vale para oro y plata (creo).
Si que vale, me he preocupado de notar las diferencias así como los offsets que varian en función de la versión ;)
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC] Guía Completa a Mapas, Eventos y Scripts; Parte 1: Mapas

Pues bueno, felicidades por una guia tan completa.

Muy util la parte de los pokemon salvajes, justo lo que necesitaba desde que inicie en esto, ya que al no haber informacion al respecto no podia reemplazar pokemones acuaticos por no querer que me aparecieran pokemon de suelo surfeando.

De seguro me surgiran dudas cuando empieze a afinar los detalles de mi hack, hasta entonces estas libre de preguntas jaja

Saludos!
 
Última edición:

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC] Guía Completa a Mapas, Eventos y Scripts; Parte 1: Mapas

Pues bien, por fin heche mano a parte de la informacion expuesta aqui, especificamente tablas de pesca y Headbutt.

Note cosas un poco raras en las tablas de pesca con respecto a las de Crystal donde quizas me puedas apoyar @Crystal_. Revisando la asignacion de tablas a cada mapa, noto que las tablas mas usadas (en el caso de pokemon GOLD) son 3, la tabla 0x0, 0x1 y 0x2; se usa tambien mucho la tabla 0x5 pero comparte el mismo pointer que la 0x0, asi que no cuenta... En fin, siguiendo los pointers de dichas tablas me encuentro los datos siguientes:

Código:
List 00 ; BA47C
50, Venonat, 15
30, Venonat, 15
10, Abra, 15
5, Abra, 15
5, Venomoth, 15

List 01 ; BA49C
50, Caterpie, 10
15, Caerpie, 10
15, Metapod, 10
10, Exeggcute, 10
5, Exeggcute, 10
5, Buterfree, 10
ff

List 02 ; BA4C2
50, Spearow, 10
15, Spearow, 10
15, Spearow, 10
10, Aipom, 10
5, Aipom, 10
5, Aipom, 10
Como podras ver en ningun momento se habla de Heracroos ni Ekans en ellas, pokemon que segun Wikidex y Bulbapedia aparecen en los arboles. He ledio por ahi, que la gente tiene problemas para encontrar a Heracross en los arboles en pokemon gold. Entonces te pregunto, es posible que haya una rutina que cambie las tablas de los mapas para hacer posible la aparicion de mas pokemon?

Hay muchas diferencias entre las tablas de Gold y Crystal, principalmente por que tu documentas Lv 10 para todas las tablas y en Gold hay variaciones.
 
Última edición:

Crystal_

Héroe de WaH
Respuesta: [GBC] Guía Completa a Mapas, Eventos y Scripts; Parte 1: Mapas

Si bueno, pero a fin de cuentas, la estructura es la misma, aunque los pokemon que aparezcan sean distintos.

Al parecer tome mal el offset donde empiezan en gold/silver, gracias por el apunte.
 
Respuesta: GBC | Mapping | Todo lo necesario para modificar o crear el mapa de una región

Hola, alguien por favor me puede pasar el Crystal Map?, el que esta en el post esta muy desactualizado, y perdi el que tenia. Disculpen si esto cuenta como SPAM.
 
Arriba