; toggleable objects for each map ToggleableObjectMapPointers: ; entries correspond to map ids table_width 2 FOR n, NUM_MAPS IF DEF(TOGGLEMAP{n}_NAME) ; defined by `toggle_consts_for` dw ToggleData_{TOGGLEMAP{n}_NAME} ELSE dw NoToggleData ENDC ENDR assert_table_length NUM_MAPS dw -1 ; end NoToggleData: db -1, -1, -1 ; end DEF toggles_ok = 1 MACRO? toggleable_objects_for DEF toggle_map_id = \1 ; map id ToggleData_\1: IF toggles_ok ASSERT DEF(TOGGLEMAP{toggle_map_id}_ID), \ "`toggleable_objects_for \1` is not defined" DEF toggles_ok &= DEF(TOGGLEMAP{toggle_map_id}_ID) IF toggles_ok assert_table_length TOGGLEMAP{toggle_map_id}_ID DEF toggles_ok &= TOGGLEMAP{toggle_map_id}_ID * 3 == @ - ToggleableObjectStates ENDC ENDC ENDM MACRO toggle_object_state db toggle_map_id ; from previous `toggleable_objects_for` db \1 ; object id db \2 ; OFF/ON ENDM ToggleableObjectStates: ; entries correspond to TOGGLE_* constants (see constants/toggle_constants.asm) table_width 3 toggleable_objects_for PALLET_TOWN toggle_object_state PALLETTOWN_OAK, OFF toggleable_objects_for VIRIDIAN_CITY toggle_object_state VIRIDIANCITY_OLD_MAN_SLEEPY, ON toggle_object_state VIRIDIANCITY_OLD_MAN, OFF toggleable_objects_for PEWTER_CITY toggle_object_state PEWTERCITY_SUPER_NERD1, ON toggle_object_state PEWTERCITY_YOUNGSTER, ON toggleable_objects_for CERULEAN_CITY toggle_object_state CERULEANCITY_RIVAL, OFF toggle_object_state CERULEANCITY_ROCKET, ON toggle_object_state CERULEANCITY_GUARD1, OFF toggle_object_state CERULEANCITY_SUPER_NERD3, ON toggle_object_state CERULEANCITY_GUARD2, ON toggleable_objects_for SAFFRON_CITY toggle_object_state SAFFRONCITY_ROCKET1, ON toggle_object_state SAFFRONCITY_ROCKET2, ON toggle_object_state SAFFRONCITY_ROCKET3, ON toggle_object_state SAFFRONCITY_ROCKET4, ON toggle_object_state SAFFRONCITY_ROCKET5, ON toggle_object_state SAFFRONCITY_ROCKET6, ON toggle_object_state SAFFRONCITY_ROCKET7, ON toggle_object_state SAFFRONCITY_SCIENTIST, OFF toggle_object_state SAFFRONCITY_SILPH_WORKER_M, OFF toggle_object_state SAFFRONCITY_SILPH_WORKER_F, OFF toggle_object_state SAFFRONCITY_GENTLEMAN, OFF toggle_object_state SAFFRONCITY_PIDGEOT, OFF toggle_object_state SAFFRONCITY_ROCKER, OFF toggle_object_state SAFFRONCITY_ROCKET8, ON toggle_object_state SAFFRONCITY_ROCKET9, OFF toggleable_objects_for ROUTE_2 toggle_object_state ROUTE2_MOON_STONE, ON toggle_object_state ROUTE2_HP_UP, ON toggleable_objects_for ROUTE_4 toggle_object_state ROUTE4_TM_WHIRLWIND, ON toggleable_objects_for ROUTE_9 toggle_object_state ROUTE9_TM_TELEPORT, ON toggleable_objects_for ROUTE_12 toggle_object_state ROUTE12_SNORLAX, ON toggle_object_state ROUTE12_TM_PAY_DAY, ON toggle_object_state ROUTE12_IRON, ON toggleable_objects_for ROUTE_15 toggle_object_state ROUTE15_TM_RAGE, ON toggleable_objects_for ROUTE_16 toggle_object_state ROUTE16_SNORLAX, ON toggleable_objects_for ROUTE_22 toggle_object_state ROUTE22_RIVAL1, OFF toggle_object_state ROUTE22_RIVAL2, OFF toggleable_objects_for ROUTE_24 toggle_object_state ROUTE24_COOLTRAINER_M1, ON toggle_object_state ROUTE24_TM_THUNDER_WAVE, ON toggleable_objects_for ROUTE_25 toggle_object_state ROUTE25_TM_SEISMIC_TOSS, ON toggleable_objects_for BLUES_HOUSE toggle_object_state BLUESHOUSE_DAISY1, ON toggle_object_state BLUESHOUSE_DAISY2, OFF toggle_object_state BLUESHOUSE_TOWN_MAP, ON toggleable_objects_for OAKS_LAB toggle_object_state OAKSLAB_RIVAL, ON toggle_object_state OAKSLAB_CHARMANDER_POKE_BALL, ON toggle_object_state OAKSLAB_SQUIRTLE_POKE_BALL, ON toggle_object_state OAKSLAB_BULBASAUR_POKE_BALL, ON toggle_object_state OAKSLAB_OAK1, OFF toggle_object_state OAKSLAB_POKEDEX1, ON toggle_object_state OAKSLAB_POKEDEX2, ON toggle_object_state OAKSLAB_OAK2, OFF toggleable_objects_for VIRIDIAN_GYM toggle_object_state VIRIDIANGYM_GIOVANNI, ON toggle_object_state VIRIDIANGYM_REVIVE, ON toggleable_objects_for MUSEUM_1F toggle_object_state MUSEUM1F_OLD_AMBER, ON toggleable_objects_for CERULEAN_CAVE_1F toggle_object_state CERULEANCAVE1F_FULL_RESTORE, ON toggle_object_state CERULEANCAVE1F_MAX_ELIXER, ON toggle_object_state CERULEANCAVE1F_NUGGET, ON toggleable_objects_for POKEMON_TOWER_2F toggle_object_state POKEMONTOWER2F_RIVAL, ON toggleable_objects_for POKEMON_TOWER_3F toggle_object_state POKEMONTOWER3F_ESCAPE_ROPE, ON toggleable_objects_for POKEMON_TOWER_4F toggle_object_state POKEMONTOWER4F_ELIXER, ON toggle_object_state POKEMONTOWER4F_AWAKENING, ON toggle_object_state POKEMONTOWER4F_HP_UP, ON toggleable_objects_for POKEMON_TOWER_5F toggle_object_state POKEMONTOWER5F_NUGGET, ON toggleable_objects_for POKEMON_TOWER_6F toggle_object_state POKEMONTOWER6F_RARE_CANDY, ON toggle_object_state POKEMONTOWER6F_X_ACCURACY, ON toggleable_objects_for POKEMON_TOWER_7F toggle_object_state POKEMONTOWER7F_ROCKET1, ON toggle_object_state POKEMONTOWER7F_ROCKET2, ON toggle_object_state POKEMONTOWER7F_ROCKET3, ON toggle_object_state POKEMONTOWER7F_MR_FUJI, ON toggleable_objects_for MR_FUJIS_HOUSE toggle_object_state MRFUJISHOUSE_MR_FUJI, OFF toggleable_objects_for CELADON_MANSION_ROOF_HOUSE toggle_object_state CELADONMANSION_ROOF_HOUSE_EEVEE_POKEBALL, ON toggleable_objects_for GAME_CORNER toggle_object_state GAMECORNER_ROCKET, ON toggleable_objects_for WARDENS_HOUSE toggle_object_state WARDENSHOUSE_RARE_CANDY, ON toggleable_objects_for POKEMON_MANSION_1F toggle_object_state POKEMONMANSION1F_ESCAPE_ROPE, ON toggle_object_state POKEMONMANSION1F_CARBOS, ON toggleable_objects_for FIGHTING_DOJO toggle_object_state FIGHTINGDOJO_HITMONLEE_POKE_BALL, ON toggle_object_state FIGHTINGDOJO_HITMONCHAN_POKE_BALL, ON toggleable_objects_for SILPH_CO_1F toggle_object_state SILPHCO1F_LINK_RECEPTIONIST, OFF toggleable_objects_for POWER_PLANT toggle_object_state POWERPLANT_VOLTORB1, ON toggle_object_state POWERPLANT_VOLTORB2, ON toggle_object_state POWERPLANT_VOLTORB3, ON toggle_object_state POWERPLANT_ELECTRODE1, ON toggle_object_state POWERPLANT_VOLTORB4, ON toggle_object_state POWERPLANT_VOLTORB5, ON toggle_object_state POWERPLANT_ELECTRODE2, ON toggle_object_state POWERPLANT_VOLTORB6, ON toggle_object_state POWERPLANT_ZAPDOS, ON toggle_object_state POWERPLANT_CARBOS, ON toggle_object_state POWERPLANT_HP_UP, ON toggle_object_state POWERPLANT_RARE_CANDY, ON toggle_object_state POWERPLANT_TM_THUNDER, ON toggle_object_state POWERPLANT_TM_REFLECT, ON toggleable_objects_for VICTORY_ROAD_2F toggle_object_state VICTORYROAD2F_MOLTRES, ON toggle_object_state VICTORYROAD2F_TM_SUBMISSION, ON toggle_object_state VICTORYROAD2F_FULL_HEAL, ON toggle_object_state VICTORYROAD2F_TM_MEGA_KICK, ON toggle_object_state VICTORYROAD2F_GUARD_SPEC, ON toggle_object_state VICTORYROAD2F_BOULDER3, ON toggleable_objects_for BILLS_HOUSE toggle_object_state BILLSHOUSE_BILL_POKEMON, ON toggle_object_state BILLSHOUSE_BILL1, OFF toggle_object_state BILLSHOUSE_BILL2, OFF toggleable_objects_for VIRIDIAN_FOREST toggle_object_state VIRIDIANFOREST_ANTIDOTE, ON toggle_object_state VIRIDIANFOREST_POTION, ON toggle_object_state VIRIDIANFOREST_POKE_BALL, ON toggleable_objects_for MT_MOON_1F toggle_object_state MTMOON1F_POTION1, ON toggle_object_state MTMOON1F_MOON_STONE, ON toggle_object_state MTMOON1F_RARE_CANDY, ON toggle_object_state MTMOON1F_ESCAPE_ROPE, ON toggle_object_state MTMOON1F_POTION2, ON toggle_object_state MTMOON1F_TM_WATER_GUN, ON toggleable_objects_for MT_MOON_B2F toggle_object_state MTMOONB2F_DOME_FOSSIL, ON toggle_object_state MTMOONB2F_HELIX_FOSSIL, ON toggle_object_state MTMOONB2F_HP_UP, ON toggle_object_state MTMOONB2F_TM_MEGA_PUNCH, ON toggleable_objects_for SS_ANNE_2F toggle_object_state SSANNE2F_RIVAL, OFF toggleable_objects_for SS_ANNE_1F_ROOMS toggle_object_state SSANNE1FROOMS_TM_BODY_SLAM, ON toggleable_objects_for SS_ANNE_2F_ROOMS toggle_object_state SSANNE2FROOMS_MAX_ETHER, ON toggle_object_state SSANNE2FROOMS_RARE_CANDY, ON toggleable_objects_for SS_ANNE_B1F_ROOMS toggle_object_state SSANNEB1FROOMS_ETHER, ON toggle_object_state SSANNEB1FROOMS_TM_REST, ON toggle_object_state SSANNEB1FROOMS_MAX_POTION, ON toggleable_objects_for VICTORY_ROAD_3F toggle_object_state VICTORYROAD3F_MAX_REVIVE, ON toggle_object_state VICTORYROAD3F_TM_EXPLOSION, ON toggle_object_state VICTORYROAD3F_BOULDER4, ON toggleable_objects_for ROCKET_HIDEOUT_B1F toggle_object_state ROCKETHIDEOUTB1F_ESCAPE_ROPE, ON toggle_object_state ROCKETHIDEOUTB1F_HYPER_POTION, ON toggleable_objects_for ROCKET_HIDEOUT_B2F toggle_object_state ROCKETHIDEOUTB2F_MOON_STONE, ON toggle_object_state ROCKETHIDEOUTB2F_NUGGET, ON toggle_object_state ROCKETHIDEOUTB2F_TM_HORN_DRILL, ON toggle_object_state ROCKETHIDEOUTB2F_SUPER_POTION, ON toggleable_objects_for ROCKET_HIDEOUT_B3F toggle_object_state ROCKETHIDEOUTB3F_TM_DOUBLE_EDGE, ON toggle_object_state ROCKETHIDEOUTB3F_RARE_CANDY, ON toggleable_objects_for ROCKET_HIDEOUT_B4F toggle_object_state ROCKETHIDEOUTB4F_GIOVANNI, ON toggle_object_state ROCKETHIDEOUTB4F_HP_UP, ON toggle_object_state ROCKETHIDEOUTB4F_TM_RAZOR_WIND, ON toggle_object_state ROCKETHIDEOUTB4F_IRON, ON toggle_object_state ROCKETHIDEOUTB4F_SILPH_SCOPE, OFF toggle_object_state ROCKETHIDEOUTB4F_LIFT_KEY, OFF toggleable_objects_for SILPH_CO_2F toggle_object_state SILPHCO2F_SILPH_WORKER_F, ON toggle_object_state SILPHCO2F_SCIENTIST1, ON toggle_object_state SILPHCO2F_SCIENTIST2, ON toggle_object_state SILPHCO2F_ROCKET1, ON toggle_object_state SILPHCO2F_ROCKET2, ON toggleable_objects_for SILPH_CO_3F toggle_object_state SILPHCO3F_ROCKET, ON toggle_object_state SILPHCO3F_SCIENTIST, ON toggle_object_state SILPHCO3F_HYPER_POTION, ON toggleable_objects_for SILPH_CO_4F toggle_object_state SILPHCO4F_ROCKET1, ON toggle_object_state SILPHCO4F_SCIENTIST, ON toggle_object_state SILPHCO4F_ROCKET2, ON toggle_object_state SILPHCO4F_FULL_HEAL, ON toggle_object_state SILPHCO4F_MAX_REVIVE, ON toggle_object_state SILPHCO4F_ESCAPE_ROPE, ON toggleable_objects_for SILPH_CO_5F toggle_object_state SILPHCO5F_ROCKET1, ON toggle_object_state SILPHCO5F_SCIENTIST, ON toggle_object_state SILPHCO5F_ROCKER, ON toggle_object_state SILPHCO5F_ROCKET2, ON toggle_object_state SILPHCO5F_TM_TAKE_DOWN, ON toggle_object_state SILPHCO5F_PROTEIN, ON toggle_object_state SILPHCO5F_CARD_KEY, ON toggleable_objects_for SILPH_CO_6F toggle_object_state SILPHCO6F_ROCKET1, ON toggle_object_state SILPHCO6F_SCIENTIST, ON toggle_object_state SILPHCO6F_ROCKET2, ON toggle_object_state SILPHCO6F_HP_UP, ON toggle_object_state SILPHCO6F_X_ACCURACY, ON toggleable_objects_for SILPH_CO_7F toggle_object_state SILPHCO7F_ROCKET1, ON toggle_object_state SILPHCO7F_SCIENTIST, ON toggle_object_state SILPHCO7F_ROCKET2, ON toggle_object_state SILPHCO7F_ROCKET3, ON toggle_object_state SILPHCO7F_RIVAL, ON toggle_object_state SILPHCO7F_CALCIUM, ON toggle_object_state SILPHCO7F_TM_SWORDS_DANCE, ON toggle_object_state SILPHCO7F_UNUSED, ON toggleable_objects_for SILPH_CO_8F toggle_object_state SILPHCO8F_ROCKET1, ON toggle_object_state SILPHCO8F_SCIENTIST, ON toggle_object_state SILPHCO8F_ROCKET2, ON toggleable_objects_for SILPH_CO_9F toggle_object_state SILPHCO9F_ROCKET1, ON toggle_object_state SILPHCO9F_SCIENTIST, ON toggle_object_state SILPHCO9F_ROCKET2, ON toggleable_objects_for SILPH_CO_10F toggle_object_state SILPHCO10F_ROCKET, ON toggle_object_state SILPHCO10F_SCIENTIST, ON toggle_object_state SILPHCO10F_SILPH_WORKER_F, ON toggle_object_state SILPHCO10F_TM_EARTHQUAKE, ON toggle_object_state SILPHCO10F_RARE_CANDY, ON toggle_object_state SILPHCO10F_CARBOS, ON toggleable_objects_for SILPH_CO_11F toggle_object_state SILPHCO11F_GIOVANNI, ON toggle_object_state SILPHCO11F_ROCKET1, ON toggle_object_state SILPHCO11F_ROCKET2, ON toggleable_objects_for UNUSED_MAP_F4 toggle_object_state $02, ON ; unused toggleable_objects_for POKEMON_MANSION_2F toggle_object_state POKEMONMANSION2F_CALCIUM, ON toggleable_objects_for POKEMON_MANSION_3F toggle_object_state POKEMONMANSION3F_MAX_POTION, ON toggle_object_state POKEMONMANSION3F_IRON, ON toggleable_objects_for POKEMON_MANSION_B1F toggle_object_state POKEMONMANSIONB1F_RARE_CANDY, ON toggle_object_state POKEMONMANSIONB1F_FULL_RESTORE, ON toggle_object_state POKEMONMANSIONB1F_TM_BLIZZARD, ON toggle_object_state POKEMONMANSIONB1F_TM_SOLARBEAM, ON toggle_object_state POKEMONMANSIONB1F_SECRET_KEY, ON toggleable_objects_for SAFARI_ZONE_EAST toggle_object_state SAFARIZONEEAST_FULL_RESTORE, ON toggle_object_state SAFARIZONEEAST_MAX_RESTORE, ON toggle_object_state SAFARIZONEEAST_CARBOS, ON toggle_object_state SAFARIZONEEAST_TM_EGG_BOMB, ON toggleable_objects_for SAFARI_ZONE_NORTH toggle_object_state SAFARIZONENORTH_PROTEIN, ON toggle_object_state SAFARIZONENORTH_TM_SKULL_BASH, ON toggleable_objects_for SAFARI_ZONE_WEST toggle_object_state SAFARIZONEWEST_MAX_POTION, ON toggle_object_state SAFARIZONEWEST_TM_DOUBLE_TEAM, ON toggle_object_state SAFARIZONEWEST_MAX_REVIVE, ON toggle_object_state SAFARIZONEWEST_GOLD_TEETH, ON toggleable_objects_for SAFARI_ZONE_CENTER toggle_object_state SAFARIZONECENTER_NUGGET, ON toggleable_objects_for CERULEAN_CAVE_2F toggle_object_state CERULEANCAVE2F_PP_UP, ON toggle_object_state CERULEANCAVE2F_ULTRA_BALL, ON toggle_object_state CERULEANCAVE2F_FULL_RESTORE, ON toggleable_objects_for CERULEAN_CAVE_B1F toggle_object_state CERULEANCAVEB1F_MEWTWO, ON toggle_object_state CERULEANCAVEB1F_ULTRA_BALL, ON toggle_object_state CERULEANCAVEB1F_MAX_REVIVE, ON toggleable_objects_for VICTORY_ROAD_1F toggle_object_state VICTORYROAD1F_TM_SKY_ATTACK, ON toggle_object_state VICTORYROAD1F_RARE_CANDY, ON toggleable_objects_for CHAMPIONS_ROOM toggle_object_state CHAMPIONSROOM_OAK, OFF toggleable_objects_for SEAFOAM_ISLANDS_1F toggle_object_state SEAFOAMISLANDS1F_BOULDER1, ON toggle_object_state SEAFOAMISLANDS1F_BOULDER2, ON toggleable_objects_for SEAFOAM_ISLANDS_B1F toggle_object_state SEAFOAMISLANDSB1F_BOULDER1, OFF toggle_object_state SEAFOAMISLANDSB1F_BOULDER2, OFF toggleable_objects_for SEAFOAM_ISLANDS_B2F toggle_object_state SEAFOAMISLANDSB2F_BOULDER1, OFF toggle_object_state SEAFOAMISLANDSB2F_BOULDER2, OFF toggleable_objects_for SEAFOAM_ISLANDS_B3F toggle_object_state SEAFOAMISLANDSB3F_BOULDER2, ON toggle_object_state SEAFOAMISLANDSB3F_BOULDER3, ON toggle_object_state SEAFOAMISLANDSB3F_BOULDER5, OFF toggle_object_state SEAFOAMISLANDSB3F_BOULDER6, OFF toggleable_objects_for SEAFOAM_ISLANDS_B4F toggle_object_state SEAFOAMISLANDSB4F_BOULDER1, OFF toggle_object_state SEAFOAMISLANDSB4F_BOULDER2, OFF toggle_object_state SEAFOAMISLANDSB4F_ARTICUNO, ON assert_table_length NUM_TOGGLEABLE_OBJECTS db -1, 1, ON ; end