Module pyboy.plugins.game_wrapper_pokemon_gen1_constants
Constants to use
Expand source code
#
# License: See LICENSE.md file
# GitHub: https://github.com/Baekalfen/PyBoy
#
"""
Constants to use
"""
# Constants found in disassembly: https://github.com/pret/pokered
PARTY_COUNT_ADDRESS = 0xD163
PARTY_SPECIES_ADDRESS = 0xD164
PARTY_MONS_ADDRESS = 0xD16B
PARTY_MON_SIZE = 0x2C
PARTY_LENGTH = 6
PARTY_SPECIES_SENTINEL = 0xFF
PLAYER_MONEY_ADDRESS = 0xD347
BAG_ITEM_COUNT_ADDRESS = 0xD31D
BAG_ITEMS_ADDRESS = 0xD31E
BAG_ITEM_CAPACITY = 20
ITEM_QUANTITY_MAX = 99
MAX_MONEY = 999999
NAME_LENGTH = 11
TEXT_TERMINATOR = 0x50
PLAYER_NAME_ADDRESS = 0xD158
PARTY_MON_OT_ADDRESS = 0xD273
PARTY_MON_NICKNAME_ADDRESS = 0xD2B5
DESTINATION_WARP_ID_ADDRESS = 0xD42F
STATUS_FLAGS3_ADDRESS = 0xD72D
WARP_DESTINATION_MAP_ADDRESS = 0xFF8B
BIT_WARP_FROM_CURRENT_SCRIPT = 3
CURRENT_OPPONENT_ADDRESS = 0xD059
BATTLE_TYPE_ADDRESS = 0xD05A
TRAINER_NUMBER_ADDRESS = 0xD05D
CURRENT_ENEMY_LEVEL_ADDRESS = 0xD127
OPPONENT_ID_OFFSET = 200
TRAINER_CLASS_COUNT = 0x2F
EVENT_FLAGS_ADDRESS = 0xD747
OBTAINED_BADGES_ADDRESS = 0xD356
BADGES = {
"boulder": 0,
"cascade": 1,
"thunder": 2,
"rainbow": 3,
"soul": 4,
"marsh": 5,
"volcano": 6,
"earth": 7,
}
"""Badge names mapped to their bit positions in the obtained-badges byte."""
ITEMS = {
"MASTER_BALL": 0x01,
"ULTRA_BALL": 0x02,
"GREAT_BALL": 0x03,
"POKE_BALL": 0x04,
"TOWN_MAP": 0x05,
"BICYCLE": 0x06,
"SURFBOARD": 0x07,
"SAFARI_BALL": 0x08,
"POKEDEX": 0x09,
"MOON_STONE": 0x0A,
"ANTIDOTE": 0x0B,
"BURN_HEAL": 0x0C,
"ICE_HEAL": 0x0D,
"AWAKENING": 0x0E,
"PARLYZ_HEAL": 0x0F,
"FULL_RESTORE": 0x10,
"MAX_POTION": 0x11,
"HYPER_POTION": 0x12,
"SUPER_POTION": 0x13,
"POTION": 0x14,
"BOULDERBADGE": 0x15,
"CASCADEBADGE": 0x16,
"THUNDERBADGE": 0x17,
"RAINBOWBADGE": 0x18,
"SOULBADGE": 0x19,
"MARSHBADGE": 0x1A,
"VOLCANOBADGE": 0x1B,
"EARTHBADGE": 0x1C,
"ESCAPE_ROPE": 0x1D,
"REPEL": 0x1E,
"OLD_AMBER": 0x1F,
"FIRE_STONE": 0x20,
"THUNDER_STONE": 0x21,
"WATER_STONE": 0x22,
"HP_UP": 0x23,
"PROTEIN": 0x24,
"IRON": 0x25,
"CARBOS": 0x26,
"CALCIUM": 0x27,
"RARE_CANDY": 0x28,
"DOME_FOSSIL": 0x29,
"HELIX_FOSSIL": 0x2A,
"SECRET_KEY": 0x2B,
"BIKE_VOUCHER": 0x2D,
"X_ACCURACY": 0x2E,
"LEAF_STONE": 0x2F,
"CARD_KEY": 0x30,
"NUGGET": 0x31,
"POKE_DOLL": 0x33,
"FULL_HEAL": 0x34,
"REVIVE": 0x35,
"MAX_REVIVE": 0x36,
"GUARD_SPEC": 0x37,
"SUPER_REPEL": 0x38,
"MAX_REPEL": 0x39,
"DIRE_HIT": 0x3A,
"COIN": 0x3B,
"FRESH_WATER": 0x3C,
"SODA_POP": 0x3D,
"LEMONADE": 0x3E,
"S_S_TICKET": 0x3F,
"GOLD_TEETH": 0x40,
"X_ATTACK": 0x41,
"X_DEFEND": 0x42,
"X_SPEED": 0x43,
"X_SPECIAL": 0x44,
"COIN_CASE": 0x45,
"OAKS_PARCEL": 0x46,
"ITEMFINDER": 0x47,
"SILPH_SCOPE": 0x48,
"POKE_FLUTE": 0x49,
"LIFT_KEY": 0x4A,
"EXP_ALL": 0x4B,
"OLD_ROD": 0x4C,
"GOOD_ROD": 0x4D,
"SUPER_ROD": 0x4E,
"PP_UP": 0x4F,
"ETHER": 0x50,
"MAX_ETHER": 0x51,
"ELIXER": 0x52,
"MAX_ELIXER": 0x53,
}
"""Pokémon Red/Blue item names mapped to their pokered item IDs."""
TRAINER_CLASSES = {
"NOBODY": 0x00,
"YOUNGSTER": 0x01,
"BUG_CATCHER": 0x02,
"LASS": 0x03,
"SAILOR": 0x04,
"JR_TRAINER_M": 0x05,
"JR_TRAINER_F": 0x06,
"POKEMANIAC": 0x07,
"SUPER_NERD": 0x08,
"HIKER": 0x09,
"BIKER": 0x0A,
"BURGLAR": 0x0B,
"ENGINEER": 0x0C,
"UNUSED_JUGGLER": 0x0D,
"FISHER": 0x0E,
"SWIMMER": 0x0F,
"CUE_BALL": 0x10,
"GAMBLER": 0x11,
"BEAUTY": 0x12,
"PSYCHIC_TR": 0x13,
"ROCKER": 0x14,
"JUGGLER": 0x15,
"TAMER": 0x16,
"BIRD_KEEPER": 0x17,
"BLACKBELT": 0x18,
"RIVAL1": 0x19,
"PROF_OAK": 0x1A,
"CHIEF": 0x1B,
"SCIENTIST": 0x1C,
"GIOVANNI": 0x1D,
"ROCKET": 0x1E,
"COOLTRAINER_M": 0x1F,
"COOLTRAINER_F": 0x20,
"BRUNO": 0x21,
"BROCK": 0x22,
"MISTY": 0x23,
"LT_SURGE": 0x24,
"ERIKA": 0x25,
"KOGA": 0x26,
"BLAINE": 0x27,
"SABRINA": 0x28,
"GENTLEMAN": 0x29,
"RIVAL2": 0x2A,
"RIVAL3": 0x2B,
"LORELEI": 0x2C,
"CHANNELER": 0x2D,
"AGATHA": 0x2E,
"LANCE": 0x2F,
}
"""Trainer class names mapped to their pokered class IDs."""
TRAINER_CLASS_NAMES = {trainer_class: name for name, trainer_class in TRAINER_CLASSES.items()}
"""Trainer class IDs mapped back to their names."""
TRAINER_SET_COUNTS = {
"NOBODY": 0,
"YOUNGSTER": 13,
"BUG_CATCHER": 14,
"LASS": 18,
"SAILOR": 8,
"JR_TRAINER_M": 9,
"JR_TRAINER_F": 24,
"POKEMANIAC": 7,
"SUPER_NERD": 12,
"HIKER": 14,
"BIKER": 15,
"BURGLAR": 9,
"ENGINEER": 3,
"UNUSED_JUGGLER": 0,
"FISHER": 11,
"SWIMMER": 15,
"CUE_BALL": 9,
"GAMBLER": 7,
"BEAUTY": 15,
"PSYCHIC_TR": 4,
"ROCKER": 2,
"JUGGLER": 8,
"TAMER": 6,
"BIRD_KEEPER": 17,
"BLACKBELT": 9,
"RIVAL1": 9,
"PROF_OAK": 3,
"CHIEF": 0,
"SCIENTIST": 13,
"GIOVANNI": 3,
"ROCKET": 41,
"COOLTRAINER_M": 10,
"COOLTRAINER_F": 8,
"BRUNO": 1,
"BROCK": 1,
"MISTY": 1,
"LT_SURGE": 1,
"ERIKA": 1,
"KOGA": 1,
"BLAINE": 1,
"SABRINA": 1,
"GENTLEMAN": 5,
"RIVAL2": 12,
"RIVAL3": 3,
"LORELEI": 1,
"CHANNELER": 24,
"AGATHA": 1,
"LANCE": 1,
}
"""Number of party sets available for each trainer class."""
MAPS = {
"pallet_town": 0x00,
"viridian_city": 0x01,
"pewter_city": 0x02,
"cerulean_city": 0x03,
"lavender_town": 0x04,
"vermilion_city": 0x05,
"celadon_city": 0x06,
"fuchsia_city": 0x07,
"cinnabar_island": 0x08,
"indigo_plateau": 0x09,
"saffron_city": 0x0A,
"unused_map_0b": 0x0B,
"route_1": 0x0C,
"route_2": 0x0D,
"route_3": 0x0E,
"route_4": 0x0F,
"route_5": 0x10,
"route_6": 0x11,
"route_7": 0x12,
"route_8": 0x13,
"route_9": 0x14,
"route_10": 0x15,
"route_11": 0x16,
"route_12": 0x17,
"route_13": 0x18,
"route_14": 0x19,
"route_15": 0x1A,
"route_16": 0x1B,
"route_17": 0x1C,
"route_18": 0x1D,
"route_19": 0x1E,
"route_20": 0x1F,
"route_21": 0x20,
"route_22": 0x21,
"route_23": 0x22,
"route_24": 0x23,
"route_25": 0x24,
"reds_house_1f": 0x25,
"reds_house_2f": 0x26,
"blues_house": 0x27,
"oaks_lab": 0x28,
"viridian_pokecenter": 0x29,
"viridian_mart": 0x2A,
"viridian_school_house": 0x2B,
"viridian_nickname_house": 0x2C,
"viridian_gym": 0x2D,
"digletts_cave_route_2": 0x2E,
"viridian_forest_north_gate": 0x2F,
"route_2_trade_house": 0x30,
"route_2_gate": 0x31,
"viridian_forest_south_gate": 0x32,
"viridian_forest": 0x33,
"museum_1f": 0x34,
"museum_2f": 0x35,
"pewter_gym": 0x36,
"pewter_nidoran_house": 0x37,
"pewter_mart": 0x38,
"pewter_speech_house": 0x39,
"pewter_pokecenter": 0x3A,
"mt_moon_1f": 0x3B,
"mt_moon_b1f": 0x3C,
"mt_moon_b2f": 0x3D,
"cerulean_trashed_house": 0x3E,
"cerulean_trade_house": 0x3F,
"cerulean_pokecenter": 0x40,
"cerulean_gym": 0x41,
"bike_shop": 0x42,
"cerulean_mart": 0x43,
"mt_moon_pokecenter": 0x44,
"cerulean_trashed_house_copy": 0x45,
"route_5_gate": 0x46,
"underground_path_route_5": 0x47,
"daycare": 0x48,
"route_6_gate": 0x49,
"underground_path_route_6": 0x4A,
"underground_path_route_6_copy": 0x4B,
"route_7_gate": 0x4C,
"underground_path_route_7": 0x4D,
"underground_path_route_7_copy": 0x4E,
"route_8_gate": 0x4F,
"underground_path_route_8": 0x50,
"rock_tunnel_pokecenter": 0x51,
"rock_tunnel_1f": 0x52,
"power_plant": 0x53,
"route_11_gate_1f": 0x54,
"digletts_cave_route_11": 0x55,
"route_11_gate_2f": 0x56,
"route_12_gate_1f": 0x57,
"bills_house": 0x58,
"vermilion_pokecenter": 0x59,
"pokemon_fan_club": 0x5A,
"vermilion_mart": 0x5B,
"vermilion_gym": 0x5C,
"vermilion_pidgey_house": 0x5D,
"vermilion_dock": 0x5E,
"ss_anne_1f": 0x5F,
"ss_anne_2f": 0x60,
"ss_anne_3f": 0x61,
"ss_anne_b1f": 0x62,
"ss_anne_bow": 0x63,
"ss_anne_kitchen": 0x64,
"ss_anne_captains_room": 0x65,
"ss_anne_1f_rooms": 0x66,
"ss_anne_2f_rooms": 0x67,
"ss_anne_b1f_rooms": 0x68,
"unused_map_69": 0x69,
"unused_map_6a": 0x6A,
"unused_map_6b": 0x6B,
"victory_road_1f": 0x6C,
"unused_map_6d": 0x6D,
"unused_map_6e": 0x6E,
"unused_map_6f": 0x6F,
"unused_map_70": 0x70,
"lances_room": 0x71,
"unused_map_72": 0x72,
"unused_map_73": 0x73,
"unused_map_74": 0x74,
"unused_map_75": 0x75,
"hall_of_fame": 0x76,
"underground_path_north_south": 0x77,
"champions_room": 0x78,
"underground_path_west_east": 0x79,
"celadon_mart_1f": 0x7A,
"celadon_mart_2f": 0x7B,
"celadon_mart_3f": 0x7C,
"celadon_mart_4f": 0x7D,
"celadon_mart_roof": 0x7E,
"celadon_mart_elevator": 0x7F,
"celadon_mansion_1f": 0x80,
"celadon_mansion_2f": 0x81,
"celadon_mansion_3f": 0x82,
"celadon_mansion_roof": 0x83,
"celadon_mansion_roof_house": 0x84,
"celadon_pokecenter": 0x85,
"celadon_gym": 0x86,
"game_corner": 0x87,
"celadon_mart_5f": 0x88,
"game_corner_prize_room": 0x89,
"celadon_diner": 0x8A,
"celadon_chief_house": 0x8B,
"celadon_hotel": 0x8C,
"lavender_pokecenter": 0x8D,
"pokemon_tower_1f": 0x8E,
"pokemon_tower_2f": 0x8F,
"pokemon_tower_3f": 0x90,
"pokemon_tower_4f": 0x91,
"pokemon_tower_5f": 0x92,
"pokemon_tower_6f": 0x93,
"pokemon_tower_7f": 0x94,
"mr_fujis_house": 0x95,
"lavender_mart": 0x96,
"lavender_cubone_house": 0x97,
"fuchsia_mart": 0x98,
"fuchsia_bills_grandpas_house": 0x99,
"fuchsia_pokecenter": 0x9A,
"wardens_house": 0x9B,
"safari_zone_gate": 0x9C,
"fuchsia_gym": 0x9D,
"fuchsia_meeting_room": 0x9E,
"seafoam_islands_b1f": 0x9F,
"seafoam_islands_b2f": 0xA0,
"seafoam_islands_b3f": 0xA1,
"seafoam_islands_b4f": 0xA2,
"vermilion_old_rod_house": 0xA3,
"fuchsia_good_rod_house": 0xA4,
"pokemon_mansion_1f": 0xA5,
"cinnabar_gym": 0xA6,
"cinnabar_lab": 0xA7,
"cinnabar_lab_trade_room": 0xA8,
"cinnabar_lab_metronome_room": 0xA9,
"cinnabar_lab_fossil_room": 0xAA,
"cinnabar_pokecenter": 0xAB,
"cinnabar_mart": 0xAC,
"cinnabar_mart_copy": 0xAD,
"indigo_plateau_lobby": 0xAE,
"copycats_house_1f": 0xAF,
"copycats_house_2f": 0xB0,
"fighting_dojo": 0xB1,
"saffron_gym": 0xB2,
"saffron_pidgey_house": 0xB3,
"saffron_mart": 0xB4,
"silph_co_1f": 0xB5,
"saffron_pokecenter": 0xB6,
"mr_psychics_house": 0xB7,
"route_15_gate_1f": 0xB8,
"route_15_gate_2f": 0xB9,
"route_16_gate_1f": 0xBA,
"route_16_gate_2f": 0xBB,
"route_16_fly_house": 0xBC,
"route_12_super_rod_house": 0xBD,
"route_18_gate_1f": 0xBE,
"route_18_gate_2f": 0xBF,
"seafoam_islands_1f": 0xC0,
"route_22_gate": 0xC1,
"victory_road_2f": 0xC2,
"route_12_gate_2f": 0xC3,
"vermilion_trade_house": 0xC4,
"digletts_cave": 0xC5,
"victory_road_3f": 0xC6,
"rocket_hideout_b1f": 0xC7,
"rocket_hideout_b2f": 0xC8,
"rocket_hideout_b3f": 0xC9,
"rocket_hideout_b4f": 0xCA,
"rocket_hideout_elevator": 0xCB,
"unused_map_cc": 0xCC,
"unused_map_cd": 0xCD,
"unused_map_ce": 0xCE,
"silph_co_2f": 0xCF,
"silph_co_3f": 0xD0,
"silph_co_4f": 0xD1,
"silph_co_5f": 0xD2,
"silph_co_6f": 0xD3,
"silph_co_7f": 0xD4,
"silph_co_8f": 0xD5,
"pokemon_mansion_2f": 0xD6,
"pokemon_mansion_3f": 0xD7,
"pokemon_mansion_b1f": 0xD8,
"safari_zone_east": 0xD9,
"safari_zone_north": 0xDA,
"safari_zone_west": 0xDB,
"safari_zone_center": 0xDC,
"safari_zone_center_rest_house": 0xDD,
"safari_zone_secret_house": 0xDE,
"safari_zone_west_rest_house": 0xDF,
"safari_zone_east_rest_house": 0xE0,
"safari_zone_north_rest_house": 0xE1,
"cerulean_cave_2f": 0xE2,
"cerulean_cave_b1f": 0xE3,
"cerulean_cave_1f": 0xE4,
"name_raters_house": 0xE5,
"cerulean_badge_house": 0xE6,
"unused_map_e7": 0xE7,
"rock_tunnel_b1f": 0xE8,
"silph_co_9f": 0xE9,
"silph_co_10f": 0xEA,
"silph_co_11f": 0xEB,
"silph_co_elevator": 0xEC,
"unused_map_ed": 0xED,
"unused_map_ee": 0xEE,
"trade_center": 0xEF,
"colosseum": 0xF0,
"unused_map_f1": 0xF1,
"unused_map_f2": 0xF2,
"unused_map_f3": 0xF3,
"unused_map_f4": 0xF4,
"loreleis_room": 0xF5,
"brunos_room": 0xF6,
"agathas_room": 0xF7,
}
"""Map names mapped to their pokered map IDs."""
EVENT_FLAGS = {
"followed_oak_into_lab": 0x000,
"hall_of_fame_dex_rating": 0x003,
"pallet_after_getting_pokeballs": 0x006,
"got_town_map": 0x018,
"entered_blues_house": 0x019,
"daisy_walking": 0x01A,
"followed_oak_into_lab_2": 0x020,
"oak_asked_to_choose_mon": 0x021,
"got_starter": 0x022,
"battled_rival_in_oaks_lab": 0x023,
"got_pokeballs_from_oak": 0x024,
"got_pokedex": 0x025,
"pallet_after_getting_pokeballs_2": 0x026,
"oak_appeared_in_pallet": 0x027,
"viridian_gym_open": 0x028,
"got_tm42": 0x029,
"oak_got_parcel": 0x038,
"got_oaks_parcel": 0x039,
"got_tm27": 0x050,
"beat_viridian_gym_giovanni": 0x051,
"beat_viridian_gym_trainer_0": 0x052,
"beat_viridian_gym_trainer_1": 0x053,
"beat_viridian_gym_trainer_2": 0x054,
"beat_viridian_gym_trainer_3": 0x055,
"beat_viridian_gym_trainer_4": 0x056,
"beat_viridian_gym_trainer_5": 0x057,
"beat_viridian_gym_trainer_6": 0x058,
"beat_viridian_gym_trainer_7": 0x059,
"bought_museum_ticket": 0x068,
"got_old_amber": 0x069,
"beat_pewter_gym_trainer_0": 0x072,
"got_tm34": 0x076,
"beat_brock": 0x077,
"beat_cerulean_rival": 0x098,
"beat_cerulean_rocket_thief": 0x0A7,
"beat_cerulean_gym_trainer_0": 0x0BA,
"beat_cerulean_gym_trainer_1": 0x0BB,
"got_tm11": 0x0BE,
"beat_misty": 0x0BF,
"got_bicycle": 0x0C0,
"pokemon_tower_rival_on_left": 0x0EE,
"beat_pokemon_tower_rival": 0x0EF,
"beat_pokemontower_3_trainer_0": 0x0F1,
"beat_pokemontower_3_trainer_1": 0x0F2,
"beat_pokemontower_3_trainer_2": 0x0F3,
"beat_pokemontower_4_trainer_0": 0x0F9,
"beat_pokemontower_4_trainer_1": 0x0FA,
"beat_pokemontower_4_trainer_2": 0x0FB,
"beat_pokemontower_5_trainer_0": 0x102,
"beat_pokemontower_5_trainer_1": 0x103,
"beat_pokemontower_5_trainer_2": 0x104,
"beat_pokemontower_5_trainer_3": 0x105,
"in_purified_zone": 0x107,
"beat_pokemontower_6_trainer_0": 0x109,
"beat_pokemontower_6_trainer_1": 0x10A,
"beat_pokemontower_6_trainer_2": 0x10B,
"beat_ghost_marowak": 0x10F,
"beat_pokemontower_7_trainer_0": 0x111,
"beat_pokemontower_7_trainer_1": 0x112,
"beat_pokemontower_7_trainer_2": 0x113,
"rescued_mr_fuji_2": 0x117,
"got_poke_flute": 0x128,
"got_bike_voucher": 0x151,
"seel_fan_boast": 0x156,
"pikachu_fan_boast": 0x157,
"2nd_lock_opened": 0x160,
"1st_lock_opened": 0x161,
"beat_vermilion_gym_trainer_0": 0x162,
"beat_vermilion_gym_trainer_1": 0x163,
"beat_vermilion_gym_trainer_2": 0x164,
"got_tm24": 0x166,
"beat_lt_surge": 0x167,
"got_tm41": 0x180,
"got_tm13": 0x18C,
"got_tm48": 0x18D,
"got_tm49": 0x18E,
"got_tm18": 0x18F,
"got_tm21": 0x1A8,
"beat_erika": 0x1A9,
"beat_celadon_gym_trainer_0": 0x1AA,
"beat_celadon_gym_trainer_1": 0x1AB,
"beat_celadon_gym_trainer_2": 0x1AC,
"beat_celadon_gym_trainer_3": 0x1AD,
"beat_celadon_gym_trainer_4": 0x1AE,
"beat_celadon_gym_trainer_5": 0x1AF,
"beat_celadon_gym_trainer_6": 0x1B0,
"1b8": 0x1B8,
"found_rocket_hideout": 0x1B9,
"got_10_coins": 0x1BA,
"got_20_coins": 0x1BB,
"got_20_coins_2": 0x1BC,
"1bf": 0x1BF,
"got_coin_case": 0x1E0,
"got_hm04": 0x238,
"gave_gold_teeth": 0x239,
"safari_game_over": 0x24E,
"in_safari_zone": 0x24F,
"got_tm06": 0x258,
"beat_koga": 0x259,
"beat_fuchsia_gym_trainer_0": 0x25A,
"beat_fuchsia_gym_trainer_1": 0x25B,
"beat_fuchsia_gym_trainer_2": 0x25C,
"beat_fuchsia_gym_trainer_3": 0x25D,
"beat_fuchsia_gym_trainer_4": 0x25E,
"beat_fuchsia_gym_trainer_5": 0x25F,
"mansion_switch_on": 0x278,
"beat_mansion_1_trainer_0": 0x289,
"got_tm38": 0x298,
"beat_blaine": 0x299,
"beat_cinnabar_gym_trainer_0": 0x29A,
"beat_cinnabar_gym_trainer_1": 0x29B,
"beat_cinnabar_gym_trainer_2": 0x29C,
"beat_cinnabar_gym_trainer_3": 0x29D,
"beat_cinnabar_gym_trainer_4": 0x29E,
"beat_cinnabar_gym_trainer_5": 0x29F,
"beat_cinnabar_gym_trainer_6": 0x2A0,
"2a7": 0x2A7,
"cinnabar_gym_gate0_unlocked": 0x2A8,
"cinnabar_gym_gate1_unlocked": 0x2A9,
"cinnabar_gym_gate2_unlocked": 0x2AA,
"cinnabar_gym_gate3_unlocked": 0x2AB,
"cinnabar_gym_gate4_unlocked": 0x2AC,
"cinnabar_gym_gate5_unlocked": 0x2AD,
"cinnabar_gym_gate6_unlocked": 0x2AE,
"got_tm35": 0x2D7,
"gave_fossil_to_lab": 0x2E0,
"lab_still_reviving_fossil": 0x2E1,
"lab_handing_over_fossil_mon": 0x2E2,
"got_tm31": 0x340,
"defeated_fighting_dojo": 0x350,
"beat_karate_master": 0x351,
"beat_fighting_dojo_trainer_0": 0x352,
"beat_fighting_dojo_trainer_1": 0x353,
"beat_fighting_dojo_trainer_2": 0x354,
"beat_fighting_dojo_trainer_3": 0x355,
"got_hitmonlee": 0x356,
"got_hitmonchan": 0x357,
"got_tm46": 0x360,
"beat_sabrina": 0x361,
"beat_saffron_gym_trainer_0": 0x362,
"beat_saffron_gym_trainer_1": 0x363,
"beat_saffron_gym_trainer_2": 0x364,
"beat_saffron_gym_trainer_3": 0x365,
"beat_saffron_gym_trainer_4": 0x366,
"beat_saffron_gym_trainer_5": 0x367,
"beat_saffron_gym_trainer_6": 0x368,
"silph_co_receptionist_at_desk": 0x397,
"got_tm29": 0x3B0,
"got_potion_sample": 0x3C0,
"got_hm05": 0x3D8,
"beat_route_3_trainer_0": 0x3E2,
"beat_route_3_trainer_1": 0x3E3,
"beat_route_3_trainer_2": 0x3E4,
"beat_route_3_trainer_3": 0x3E5,
"beat_route_3_trainer_4": 0x3E6,
"beat_route_3_trainer_5": 0x3E7,
"beat_route_3_trainer_6": 0x3E8,
"beat_route_3_trainer_7": 0x3E9,
"beat_route_4_trainer_0": 0x3F2,
"bought_magikarp": 0x3FF,
"beat_route_6_trainer_0": 0x411,
"beat_route_6_trainer_1": 0x412,
"beat_route_6_trainer_2": 0x413,
"beat_route_6_trainer_3": 0x414,
"beat_route_6_trainer_4": 0x415,
"beat_route_6_trainer_5": 0x416,
"beat_route_8_trainer_0": 0x431,
"beat_route_8_trainer_1": 0x432,
"beat_route_8_trainer_2": 0x433,
"beat_route_8_trainer_3": 0x434,
"beat_route_8_trainer_4": 0x435,
"beat_route_8_trainer_5": 0x436,
"beat_route_8_trainer_6": 0x437,
"beat_route_8_trainer_7": 0x438,
"beat_route_8_trainer_8": 0x439,
"beat_route_9_trainer_0": 0x441,
"beat_route_9_trainer_1": 0x442,
"beat_route_9_trainer_2": 0x443,
"beat_route_9_trainer_3": 0x444,
"beat_route_9_trainer_4": 0x445,
"beat_route_9_trainer_5": 0x446,
"beat_route_9_trainer_6": 0x447,
"beat_route_9_trainer_7": 0x448,
"beat_route_9_trainer_8": 0x449,
"beat_route_10_trainer_0": 0x451,
"beat_route_10_trainer_1": 0x452,
"beat_route_10_trainer_2": 0x453,
"beat_route_10_trainer_3": 0x454,
"beat_route_10_trainer_4": 0x455,
"beat_route_10_trainer_5": 0x456,
"beat_rock_tunnel_1_trainer_0": 0x459,
"beat_rock_tunnel_1_trainer_1": 0x45A,
"beat_rock_tunnel_1_trainer_2": 0x45B,
"beat_rock_tunnel_1_trainer_3": 0x45C,
"beat_rock_tunnel_1_trainer_4": 0x45D,
"beat_rock_tunnel_1_trainer_5": 0x45E,
"beat_rock_tunnel_1_trainer_6": 0x45F,
"beat_power_plant_voltorb_0": 0x461,
"beat_power_plant_voltorb_1": 0x462,
"beat_power_plant_voltorb_2": 0x463,
"beat_power_plant_voltorb_3": 0x464,
"beat_power_plant_voltorb_4": 0x465,
"beat_power_plant_voltorb_5": 0x466,
"beat_power_plant_voltorb_6": 0x467,
"beat_power_plant_voltorb_7": 0x468,
"beat_zapdos": 0x469,
"beat_route_11_trainer_0": 0x471,
"beat_route_11_trainer_1": 0x472,
"beat_route_11_trainer_2": 0x473,
"beat_route_11_trainer_3": 0x474,
"beat_route_11_trainer_4": 0x475,
"beat_route_11_trainer_5": 0x476,
"beat_route_11_trainer_6": 0x477,
"beat_route_11_trainer_7": 0x478,
"beat_route_11_trainer_8": 0x479,
"beat_route_11_trainer_9": 0x47A,
"got_itemfinder": 0x47F,
"got_tm39": 0x480,
"beat_route_12_trainer_0": 0x482,
"beat_route_12_trainer_1": 0x483,
"beat_route_12_trainer_2": 0x484,
"beat_route_12_trainer_3": 0x485,
"beat_route_12_trainer_4": 0x486,
"beat_route_12_trainer_5": 0x487,
"beat_route_12_trainer_6": 0x488,
"fight_route12_snorlax": 0x48E,
"beat_route12_snorlax": 0x48F,
"beat_route_13_trainer_0": 0x491,
"beat_route_13_trainer_1": 0x492,
"beat_route_13_trainer_2": 0x493,
"beat_route_13_trainer_3": 0x494,
"beat_route_13_trainer_4": 0x495,
"beat_route_13_trainer_5": 0x496,
"beat_route_13_trainer_6": 0x497,
"beat_route_13_trainer_7": 0x498,
"beat_route_13_trainer_8": 0x499,
"beat_route_13_trainer_9": 0x49A,
"beat_route_14_trainer_0": 0x4A1,
"beat_route_14_trainer_1": 0x4A2,
"beat_route_14_trainer_2": 0x4A3,
"beat_route_14_trainer_3": 0x4A4,
"beat_route_14_trainer_4": 0x4A5,
"beat_route_14_trainer_5": 0x4A6,
"beat_route_14_trainer_6": 0x4A7,
"beat_route_14_trainer_7": 0x4A8,
"beat_route_14_trainer_8": 0x4A9,
"beat_route_14_trainer_9": 0x4AA,
"got_exp_all": 0x4B0,
"beat_route_15_trainer_0": 0x4B1,
"beat_route_15_trainer_1": 0x4B2,
"beat_route_15_trainer_2": 0x4B3,
"beat_route_15_trainer_3": 0x4B4,
"beat_route_15_trainer_4": 0x4B5,
"beat_route_15_trainer_5": 0x4B6,
"beat_route_15_trainer_6": 0x4B7,
"beat_route_15_trainer_7": 0x4B8,
"beat_route_15_trainer_8": 0x4B9,
"beat_route_15_trainer_9": 0x4BA,
"beat_route_16_trainer_0": 0x4C1,
"beat_route_16_trainer_1": 0x4C2,
"beat_route_16_trainer_2": 0x4C3,
"beat_route_16_trainer_3": 0x4C4,
"beat_route_16_trainer_4": 0x4C5,
"beat_route_16_trainer_5": 0x4C6,
"fight_route16_snorlax": 0x4C8,
"beat_route16_snorlax": 0x4C9,
"got_hm02": 0x4CE,
"rescued_mr_fuji": 0x4CF,
"beat_route_17_trainer_0": 0x4D1,
"beat_route_17_trainer_1": 0x4D2,
"beat_route_17_trainer_2": 0x4D3,
"beat_route_17_trainer_3": 0x4D4,
"beat_route_17_trainer_4": 0x4D5,
"beat_route_17_trainer_5": 0x4D6,
"beat_route_17_trainer_6": 0x4D7,
"beat_route_17_trainer_7": 0x4D8,
"beat_route_17_trainer_8": 0x4D9,
"beat_route_17_trainer_9": 0x4DA,
"beat_route_18_trainer_0": 0x4E1,
"beat_route_18_trainer_1": 0x4E2,
"beat_route_18_trainer_2": 0x4E3,
"beat_route_19_trainer_0": 0x4F1,
"beat_route_19_trainer_1": 0x4F2,
"beat_route_19_trainer_2": 0x4F3,
"beat_route_19_trainer_3": 0x4F4,
"beat_route_19_trainer_4": 0x4F5,
"beat_route_19_trainer_5": 0x4F6,
"beat_route_19_trainer_6": 0x4F7,
"beat_route_19_trainer_7": 0x4F8,
"beat_route_19_trainer_8": 0x4F9,
"beat_route_19_trainer_9": 0x4FA,
"in_seafoam_islands": 0x500,
"beat_route_20_trainer_0": 0x501,
"beat_route_20_trainer_1": 0x502,
"beat_route_20_trainer_2": 0x503,
"beat_route_20_trainer_3": 0x504,
"beat_route_20_trainer_4": 0x505,
"beat_route_20_trainer_5": 0x506,
"beat_route_20_trainer_6": 0x507,
"beat_route_20_trainer_7": 0x508,
"beat_route_20_trainer_8": 0x509,
"beat_route_20_trainer_9": 0x50A,
"seafoam1_boulder1_down_hole": 0x50E,
"seafoam1_boulder2_down_hole": 0x50F,
"beat_route_21_trainer_0": 0x511,
"beat_route_21_trainer_1": 0x512,
"beat_route_21_trainer_2": 0x513,
"beat_route_21_trainer_3": 0x514,
"beat_route_21_trainer_4": 0x515,
"beat_route_21_trainer_5": 0x516,
"beat_route_21_trainer_6": 0x517,
"beat_route_21_trainer_7": 0x518,
"beat_route_21_trainer_8": 0x519,
"1st_route22_rival_battle": 0x520,
"2nd_route22_rival_battle": 0x521,
"beat_route22_rival_1st_battle": 0x525,
"beat_route22_rival_2nd_battle": 0x526,
"route22_rival_wants_battle": 0x527,
"passed_cascadebadge_check": 0x530,
"passed_thunderbadge_check": 0x531,
"passed_rainbowbadge_check": 0x532,
"passed_soulbadge_check": 0x533,
"passed_marshbadge_check": 0x534,
"passed_volcanobadge_check": 0x535,
"passed_earthbadge_check": 0x536,
"victory_road_2_boulder_on_switch1": 0x538,
"beat_victory_road_2_trainer_0": 0x539,
"beat_victory_road_2_trainer_1": 0x53A,
"beat_victory_road_2_trainer_2": 0x53B,
"beat_victory_road_2_trainer_3": 0x53C,
"beat_victory_road_2_trainer_4": 0x53D,
"beat_moltres": 0x53E,
"victory_road_2_boulder_on_switch2": 0x53F,
"got_nugget": 0x540,
"beat_route24_rocket": 0x541,
"beat_route_24_trainer_0": 0x542,
"beat_route_24_trainer_1": 0x543,
"beat_route_24_trainer_2": 0x544,
"beat_route_24_trainer_3": 0x545,
"beat_route_24_trainer_4": 0x546,
"beat_route_24_trainer_5": 0x547,
"nugget_reward_available": 0x549,
"met_bill": 0x550,
"beat_route_25_trainer_0": 0x551,
"beat_route_25_trainer_1": 0x552,
"beat_route_25_trainer_2": 0x553,
"beat_route_25_trainer_3": 0x554,
"beat_route_25_trainer_4": 0x555,
"beat_route_25_trainer_5": 0x556,
"beat_route_25_trainer_6": 0x557,
"beat_route_25_trainer_7": 0x558,
"beat_route_25_trainer_8": 0x559,
"used_cell_separator_on_bill": 0x55B,
"got_ss_ticket": 0x55C,
"met_bill_2": 0x55D,
"bill_said_use_cell_separator": 0x55E,
"left_bills_house_after_helping": 0x55F,
"beat_viridian_forest_trainer_0": 0x562,
"beat_viridian_forest_trainer_1": 0x563,
"beat_viridian_forest_trainer_2": 0x564,
"beat_mt_moon_1_trainer_0": 0x571,
"beat_mt_moon_1_trainer_1": 0x572,
"beat_mt_moon_1_trainer_2": 0x573,
"beat_mt_moon_1_trainer_3": 0x574,
"beat_mt_moon_1_trainer_4": 0x575,
"beat_mt_moon_1_trainer_5": 0x576,
"beat_mt_moon_1_trainer_6": 0x577,
"beat_mt_moon_exit_super_nerd": 0x579,
"beat_mt_moon_3_trainer_0": 0x57A,
"beat_mt_moon_3_trainer_1": 0x57B,
"beat_mt_moon_3_trainer_2": 0x57C,
"beat_mt_moon_3_trainer_3": 0x57D,
"got_dome_fossil": 0x57E,
"got_helix_fossil": 0x57F,
"beat_ss_anne_5_trainer_0": 0x5C4,
"beat_ss_anne_5_trainer_1": 0x5C5,
"got_hm01": 0x5E0,
"rubbed_captains_back": 0x5E1,
"ss_anne_left": 0x5E2,
"walked_past_guard_after_ss_anne_left": 0x5E3,
"started_walking_out_of_dock": 0x5E4,
"walked_out_of_dock": 0x5E5,
"beat_ss_anne_8_trainer_0": 0x5F1,
"beat_ss_anne_8_trainer_1": 0x5F2,
"beat_ss_anne_8_trainer_2": 0x5F3,
"beat_ss_anne_8_trainer_3": 0x5F4,
"beat_ss_anne_9_trainer_0": 0x601,
"beat_ss_anne_9_trainer_1": 0x602,
"beat_ss_anne_9_trainer_2": 0x603,
"beat_ss_anne_9_trainer_3": 0x604,
"beat_ss_anne_10_trainer_0": 0x611,
"beat_ss_anne_10_trainer_1": 0x612,
"beat_ss_anne_10_trainer_2": 0x613,
"beat_ss_anne_10_trainer_3": 0x614,
"beat_ss_anne_10_trainer_4": 0x615,
"beat_ss_anne_10_trainer_5": 0x616,
"victory_road_3_boulder_on_switch1": 0x660,
"beat_victory_road_3_trainer_0": 0x661,
"beat_victory_road_3_trainer_1": 0x662,
"beat_victory_road_3_trainer_2": 0x663,
"beat_victory_road_3_trainer_3": 0x664,
"victory_road_3_boulder_on_switch2": 0x666,
"beat_rocket_hideout_1_trainer_0": 0x671,
"beat_rocket_hideout_1_trainer_1": 0x672,
"beat_rocket_hideout_1_trainer_2": 0x673,
"beat_rocket_hideout_1_trainer_3": 0x674,
"beat_rocket_hideout_1_trainer_4": 0x675,
"entered_rocket_hideout": 0x677,
"67f": 0x67F,
"beat_rocket_hideout_2_trainer_0": 0x681,
"beat_rocket_hideout_3_trainer_0": 0x691,
"beat_rocket_hideout_3_trainer_1": 0x692,
"beat_rocket_hideout_4_trainer_0": 0x6A2,
"beat_rocket_hideout_4_trainer_1": 0x6A3,
"beat_rocket_hideout_4_trainer_2": 0x6A4,
"rocket_hideout_4_door_unlocked": 0x6A5,
"rocket_dropped_lift_key": 0x6A6,
"beat_rocket_hideout_giovanni": 0x6A7,
"beat_silph_co_2f_trainer_0": 0x6F2,
"beat_silph_co_2f_trainer_1": 0x6F3,
"beat_silph_co_2f_trainer_2": 0x6F4,
"beat_silph_co_2f_trainer_3": 0x6F5,
"silph_co_2_unlocked_door1": 0x6FD,
"silph_co_2_unlocked_door2": 0x6FE,
"got_tm36": 0x6FF,
"beat_silph_co_3f_trainer_0": 0x702,
"beat_silph_co_3f_trainer_1": 0x703,
"silph_co_3_unlocked_door1": 0x708,
"silph_co_3_unlocked_door2": 0x709,
"beat_silph_co_4f_trainer_0": 0x712,
"beat_silph_co_4f_trainer_1": 0x713,
"beat_silph_co_4f_trainer_2": 0x714,
"silph_co_4_unlocked_door1": 0x718,
"silph_co_4_unlocked_door2": 0x719,
"beat_silph_co_5f_trainer_0": 0x722,
"beat_silph_co_5f_trainer_1": 0x723,
"beat_silph_co_5f_trainer_2": 0x724,
"beat_silph_co_5f_trainer_3": 0x725,
"silph_co_5_unlocked_door1": 0x728,
"silph_co_5_unlocked_door2": 0x729,
"silph_co_5_unlocked_door3": 0x72A,
"beat_silph_co_6f_trainer_0": 0x736,
"beat_silph_co_6f_trainer_1": 0x737,
"beat_silph_co_6f_trainer_2": 0x738,
"silph_co_6_unlocked_door": 0x73F,
"beat_silph_co_rival": 0x740,
"beat_silph_co_7f_trainer_0": 0x745,
"beat_silph_co_7f_trainer_1": 0x746,
"beat_silph_co_7f_trainer_2": 0x747,
"beat_silph_co_7f_trainer_3": 0x748,
"silph_co_7_unlocked_door1": 0x74C,
"silph_co_7_unlocked_door2": 0x74D,
"silph_co_7_unlocked_door3": 0x74E,
"beat_silph_co_8f_trainer_0": 0x752,
"beat_silph_co_8f_trainer_1": 0x753,
"beat_silph_co_8f_trainer_2": 0x754,
"silph_co_8_unlocked_door": 0x758,
"beat_silph_co_9f_trainer_0": 0x762,
"beat_silph_co_9f_trainer_1": 0x763,
"beat_silph_co_9f_trainer_2": 0x764,
"silph_co_9_unlocked_door1": 0x768,
"silph_co_9_unlocked_door2": 0x769,
"silph_co_9_unlocked_door3": 0x76A,
"silph_co_9_unlocked_door4": 0x76B,
"beat_silph_co_10f_trainer_0": 0x771,
"beat_silph_co_10f_trainer_1": 0x772,
"silph_co_10_unlocked_door": 0x778,
"beat_silph_co_11f_trainer_0": 0x784,
"beat_silph_co_11f_trainer_1": 0x785,
"silph_co_11_unlocked_door": 0x788,
"got_master_ball": 0x78D,
"beat_silph_co_giovanni": 0x78F,
"beat_mansion_2_trainer_0": 0x801,
"beat_mansion_3_trainer_0": 0x811,
"beat_mansion_3_trainer_1": 0x812,
"beat_mansion_4_trainer_0": 0x821,
"beat_mansion_4_trainer_1": 0x822,
"got_hm03": 0x880,
"beat_mewtwo": 0x8C1,
"beat_loreleis_room_trainer_0": 0x8E1,
"autowalked_into_loreleis_room": 0x8E6,
"beat_brunos_room_trainer_0": 0x8E9,
"autowalked_into_brunos_room": 0x8EE,
"beat_agathas_room_trainer_0": 0x8F1,
"autowalked_into_agathas_room": 0x8F6,
"beat_lances_room_trainer_0": 0x8F9,
"beat_lance": 0x8FE,
"lances_room_lock_door": 0x8FF,
"beat_champion_rival": 0x901,
"beat_victory_road_1_trainer_0": 0x911,
"beat_victory_road_1_trainer_1": 0x912,
"victory_road_1_boulder_on_switch": 0x917,
"beat_rock_tunnel_2_trainer_0": 0x9B1,
"beat_rock_tunnel_2_trainer_1": 0x9B2,
"beat_rock_tunnel_2_trainer_2": 0x9B3,
"beat_rock_tunnel_2_trainer_3": 0x9B4,
"beat_rock_tunnel_2_trainer_4": 0x9B5,
"beat_rock_tunnel_2_trainer_5": 0x9B6,
"beat_rock_tunnel_2_trainer_6": 0x9B7,
"beat_rock_tunnel_2_trainer_7": 0x9B8,
"seafoam2_boulder1_down_hole": 0x9C0,
"seafoam2_boulder2_down_hole": 0x9C1,
"seafoam3_boulder1_down_hole": 0x9C8,
"seafoam3_boulder2_down_hole": 0x9C9,
"seafoam4_boulder1_down_hole": 0x9D0,
"seafoam4_boulder2_down_hole": 0x9D1,
"beat_articuno": 0x9DA,
}
"""Event flag names mapped to their pokered event IDs."""
POKEMON_TEXT_ENCODING = {
"<NULL>": 0x00,
"<PAGE>": 0x49,
"<PKMN>": 0x4A,
"<_CONT>": 0x4B,
"<SCROLL>": 0x4C,
"<NEXT>": 0x4E,
"<LINE>": 0x4F,
"@": 0x50,
"<PARA>": 0x51,
"<PLAYER>": 0x52,
"<RIVAL>": 0x53,
"#": 0x54,
"<CONT>": 0x55,
"<……>": 0x56,
"<DONE>": 0x57,
"<PROMPT>": 0x58,
"<TARGET>": 0x59,
"<USER>": 0x5A,
"<PC>": 0x5B,
"<TM>": 0x5C,
"<TRAINER>": 0x5D,
"<ROCKET>": 0x5E,
"<DEXEND>": 0x5F,
" ": 0x7F,
"(": 0x9A,
")": 0x9B,
":": 0x9C,
";": 0x9D,
"[": 0x9E,
"]": 0x9F,
"é": 0xBA,
"'d": 0xBB,
"'l": 0xBC,
"'s": 0xBD,
"'t": 0xBE,
"'v": 0xBF,
"'": 0xE0,
"<PK>": 0xE1,
"<MN>": 0xE2,
"-": 0xE3,
"'r": 0xE4,
"'m": 0xE5,
"?": 0xE6,
"!": 0xE7,
".": 0xE8,
"▷": 0xEC,
"▶": 0xED,
"▼": 0xEE,
"♂": 0xEF,
"¥": 0xF0,
"×": 0xF1,
"<DOT>": 0xF2,
"/": 0xF3,
",": 0xF4,
"♀": 0xF5,
**{chr(ord("A") + index): 0x80 + index for index in range(26)},
**{chr(ord("a") + index): 0xA0 + index for index in range(26)},
**{str(index): 0xF6 + index for index in range(10)},
}
"""Pokemon text characters and control tokens mapped to encoded bytes."""
POKEMON_TEXT_DECODING = {value: key for key, value in POKEMON_TEXT_ENCODING.items()}
"""Encoded Pokemon text bytes mapped back to characters and control tokens."""
POKEMON_TEXT_DECODING[383] = " " # Blank tile used as space in menus
POKEMON_SPECIES = {
"NO_MON": 0x00,
"RHYDON": 0x01,
"KANGASKHAN": 0x02,
"NIDORAN_M": 0x03,
"CLEFAIRY": 0x04,
"SPEAROW": 0x05,
"VOLTORB": 0x06,
"NIDOKING": 0x07,
"SLOWBRO": 0x08,
"IVYSAUR": 0x09,
"EXEGGUTOR": 0x0A,
"LICKITUNG": 0x0B,
"EXEGGCUTE": 0x0C,
"GRIMER": 0x0D,
"GENGAR": 0x0E,
"NIDORAN_F": 0x0F,
"NIDOQUEEN": 0x10,
"CUBONE": 0x11,
"RHYHORN": 0x12,
"LAPRAS": 0x13,
"ARCANINE": 0x14,
"MEW": 0x15,
"GYARADOS": 0x16,
"SHELLDER": 0x17,
"TENTACOOL": 0x18,
"GASTLY": 0x19,
"SCYTHER": 0x1A,
"STARYU": 0x1B,
"BLASTOISE": 0x1C,
"PINSIR": 0x1D,
"TANGELA": 0x1E,
"GROWLITHE": 0x21,
"ONIX": 0x22,
"FEAROW": 0x23,
"PIDGEY": 0x24,
"SLOWPOKE": 0x25,
"KADABRA": 0x26,
"GRAVELER": 0x27,
"CHANSEY": 0x28,
"MACHOKE": 0x29,
"MR_MIME": 0x2A,
"HITMONLEE": 0x2B,
"HITMONCHAN": 0x2C,
"ARBOK": 0x2D,
"PARASECT": 0x2E,
"PSYDUCK": 0x2F,
"DROWZEE": 0x30,
"GOLEM": 0x31,
"MAGMAR": 0x33,
"ELECTABUZZ": 0x35,
"MAGNETON": 0x36,
"KOFFING": 0x37,
"MANKEY": 0x39,
"SEEL": 0x3A,
"DIGLETT": 0x3B,
"TAUROS": 0x3C,
"FARFETCHD": 0x40,
"VENONAT": 0x41,
"DRAGONITE": 0x42,
"DODUO": 0x46,
"POLIWAG": 0x47,
"JYNX": 0x48,
"MOLTRES": 0x49,
"ARTICUNO": 0x4A,
"ZAPDOS": 0x4B,
"DITTO": 0x4C,
"MEOWTH": 0x4D,
"KRABBY": 0x4E,
"VULPIX": 0x52,
"NINETALES": 0x53,
"PIKACHU": 0x54,
"RAICHU": 0x55,
"DRATINI": 0x58,
"DRAGONAIR": 0x59,
"KABUTO": 0x5A,
"KABUTOPS": 0x5B,
"HORSEA": 0x5C,
"SEADRA": 0x5D,
"SANDSHREW": 0x60,
"SANDSLASH": 0x61,
"OMANYTE": 0x62,
"OMASTAR": 0x63,
"JIGGLYPUFF": 0x64,
"WIGGLYTUFF": 0x65,
"EEVEE": 0x66,
"FLAREON": 0x67,
"JOLTEON": 0x68,
"VAPOREON": 0x69,
"MACHOP": 0x6A,
"ZUBAT": 0x6B,
"EKANS": 0x6C,
"PARAS": 0x6D,
"POLIWHIRL": 0x6E,
"POLIWRATH": 0x6F,
"WEEDLE": 0x70,
"KAKUNA": 0x71,
"BEEDRILL": 0x72,
"DODRIO": 0x74,
"PRIMEAPE": 0x75,
"DUGTRIO": 0x76,
"VENOMOTH": 0x77,
"DEWGONG": 0x78,
"CATERPIE": 0x7B,
"METAPOD": 0x7C,
"BUTTERFREE": 0x7D,
"MACHAMP": 0x7E,
"GOLDUCK": 0x80,
"HYPNO": 0x81,
"GOLBAT": 0x82,
"MEWTWO": 0x83,
"SNORLAX": 0x84,
"MAGIKARP": 0x85,
"MUK": 0x88,
"KINGLER": 0x8A,
"CLOYSTER": 0x8B,
"ELECTRODE": 0x8D,
"CLEFABLE": 0x8E,
"WEEZING": 0x8F,
"PERSIAN": 0x90,
"MAROWAK": 0x91,
"HAUNTER": 0x93,
"ABRA": 0x94,
"ALAKAZAM": 0x95,
"PIDGEOTTO": 0x96,
"PIDGEOT": 0x97,
"STARMIE": 0x98,
"BULBASAUR": 0x99,
"VENUSAUR": 0x9A,
"TENTACRUEL": 0x9B,
"GOLDEEN": 0x9D,
"SEAKING": 0x9E,
"PONYTA": 0xA3,
"RAPIDASH": 0xA4,
"RATTATA": 0xA5,
"RATICATE": 0xA6,
"NIDORINO": 0xA7,
"NIDORINA": 0xA8,
"GEODUDE": 0xA9,
"PORYGON": 0xAA,
"AERODACTYL": 0xAB,
"MAGNEMITE": 0xAD,
"CHARMANDER": 0xB0,
"SQUIRTLE": 0xB1,
"CHARMELEON": 0xB2,
"WARTORTLE": 0xB3,
"CHARIZARD": 0xB4,
"FOSSIL_KABUTOPS": 0xB6,
"FOSSIL_AERODACTYL": 0xB7,
"MON_GHOST": 0xB8,
"ODDISH": 0xB9,
"GLOOM": 0xBA,
"VILEPLUME": 0xBB,
"BELLSPROUT": 0xBC,
"WEEPINBELL": 0xBD,
"VICTREEBEL": 0xBE,
}
"""Pokemon species names mapped to their pokered species IDs."""
POKEMON_SPECIES_NAMES = {species: name.replace("_", " ") for name, species in POKEMON_SPECIES.items() if species}
"""Pokemon species IDs mapped back to display names."""
_MOVE_NAMES = """
NO_MOVE POUND KARATE_CHOP DOUBLESLAP COMET_PUNCH MEGA_PUNCH PAY_DAY FIRE_PUNCH
ICE_PUNCH THUNDERPUNCH SCRATCH VICEGRIP GUILLOTINE RAZOR_WIND SWORDS_DANCE CUT
GUST WING_ATTACK WHIRLWIND FLY BIND SLAM VINE_WHIP STOMP DOUBLE_KICK MEGA_KICK
JUMP_KICK ROLLING_KICK SAND_ATTACK HEADBUTT HORN_ATTACK FURY_ATTACK HORN_DRILL
TACKLE BODY_SLAM WRAP TAKE_DOWN THRASH DOUBLE_EDGE TAIL_WHIP POISON_STING
TWINEEDLE PIN_MISSILE LEER BITE GROWL ROAR SING SUPERSONIC SONICBOOM DISABLE
ACID EMBER FLAMETHROWER MIST WATER_GUN HYDRO_PUMP SURF ICE_BEAM BLIZZARD PSYBEAM
BUBBLEBEAM AURORA_BEAM HYPER_BEAM PECK DRILL_PECK SUBMISSION LOW_KICK COUNTER
SEISMIC_TOSS STRENGTH ABSORB MEGA_DRAIN LEECH_SEED GROWTH RAZOR_LEAF SOLARBEAM
POISONPOWDER STUN_SPORE SLEEP_POWDER PETAL_DANCE STRING_SHOT DRAGON_RAGE FIRE_SPIN
THUNDERSHOCK THUNDERBOLT THUNDER_WAVE THUNDER ROCK_THROW EARTHQUAKE FISSURE DIG
TOXIC CONFUSION PSYCHIC_M HYPNOSIS MEDITATE AGILITY QUICK_ATTACK RAGE TELEPORT
NIGHT_SHADE MIMIC SCREECH DOUBLE_TEAM RECOVER HARDEN MINIMIZE SMOKESCREEN
CONFUSE_RAY WITHDRAW DEFENSE_CURL BARRIER LIGHT_SCREEN HAZE REFLECT FOCUS_ENERGY
BIDE METRONOME MIRROR_MOVE SELFDESTRUCT EGG_BOMB LICK SMOG SLUDGE BONE_CLUB
FIRE_BLAST WATERFALL CLAMP SWIFT SKULL_BASH SPIKE_CANNON CONSTRICT AMNESIA KINESIS
SOFTBOILED HI_JUMP_KICK GLARE DREAM_EATER POISON_GAS BARRAGE LEECH_LIFE LOVELY_KISS
SKY_ATTACK TRANSFORM BUBBLE DIZZY_PUNCH SPORE FLASH PSYWAVE SPLASH ACID_ARMOR
CRABHAMMER EXPLOSION FURY_SWIPES BONEMERANG REST ROCK_SLIDE HYPER_FANG SHARPEN
CONVERSION TRI_ATTACK SUPER_FANG SLASH SUBSTITUTE STRUGGLE
"""
POKEMON_MOVES = {name: index for index, name in enumerate(_MOVE_NAMES.split())}
"""Pokemon move names mapped to their pokered move IDs."""
Global variables
var BADGES-
Badge names mapped to their bit positions in the obtained-badges byte.
var ITEMS-
Pokémon Red/Blue item names mapped to their pokered item IDs.
var TRAINER_CLASSES-
Trainer class names mapped to their pokered class IDs.
var TRAINER_CLASS_NAMES-
Trainer class IDs mapped back to their names.
var TRAINER_SET_COUNTS-
Number of party sets available for each trainer class.
var MAPS-
Map names mapped to their pokered map IDs.
var EVENT_FLAGS-
Event flag names mapped to their pokered event IDs.
var POKEMON_TEXT_ENCODING-
Pokemon text characters and control tokens mapped to encoded bytes.
var POKEMON_TEXT_DECODING-
Encoded Pokemon text bytes mapped back to characters and control tokens.
var POKEMON_SPECIES-
Pokemon species names mapped to their pokered species IDs.
var POKEMON_SPECIES_NAMES-
Pokemon species IDs mapped back to display names.
var POKEMON_MOVES-
Pokemon move names mapped to their pokered move IDs.