diff --git a/soh/CMakeLists.txt b/soh/CMakeLists.txt index fbe597f16..a1ed18e7c 100644 --- a/soh/CMakeLists.txt +++ b/soh/CMakeLists.txt @@ -125,6 +125,7 @@ file(GLOB_RECURSE soh__ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "soh/*.c" "soh/*.cp # Add specific files that don't match the pattern list(APPEND soh__ ${CMAKE_CURRENT_SOURCE_DIR}/soh/Enhancements/randomizer/generated/regions.cpp) +list(APPEND soh__ ${CMAKE_CURRENT_SOURCE_DIR}/soh/Enhancements/randomizer/generated/regions.h) list(APPEND soh__ ${CMAKE_CURRENT_SOURCE_DIR}/soh/Enhancements/savestates_extern.inc) list(APPEND soh__ ${CMAKE_CURRENT_SOURCE_DIR}/soh/Enhancements/speechsynthesizer/DarwinSpeechSynthesizer.mm) @@ -216,6 +217,7 @@ source_group("src\\overlays\\misc" REGULAR_EXPRESSION "src/overlays/misc/*") find_package(Python3 COMPONENTS Interpreter) add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/soh/Enhancements/randomizer/generated/regions.cpp + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/soh/Enhancements/randomizer/generated/regions.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/compile_logic.py ${CMAKE_CURRENT_SOURCE_DIR}/soh/Enhancements/randomizer/logic/dungeons/bottom_of_the_well.s diff --git a/soh/compile_logic.py b/soh/compile_logic.py index 39a4a316b..18db38604 100755 --- a/soh/compile_logic.py +++ b/soh/compile_logic.py @@ -62,6 +62,14 @@ void RegionTable_Init_Generated() { with open(dirname + "/regions.cpp", "w", encoding="ascii") as f: for s in result: f.write(s) + with open(dirname + "/regions.h", "w", encoding="ascii") as f: + f.write("#pragma once\n") + f.write("typedef enum {\n") + f.write(f" RR_NONE,\n") + for rr in RRs: + f.write(f" {rr.name},\n") + f.write(f" RR_MAX,\n") + f.write("} RandomizerRegion;\n") def compile_rr(self, rr, ast): result = [] @@ -285,47 +293,51 @@ ctxFUNC = { def main(): RRs = [] - for root, dirs, files in os.walk(argv[2]): - for file in files: - active_rr = None - buf = "" - pcount = 0 - for line in open(os.path.join(root, file), "r", encoding="ascii"): - line = line.strip() - if line.startswith("def "): - if pcount != 0: - print("error parsing", line) - defline = line.split() - active_rr = RR(*defline[1:]) - RRs.append(active_rr) - buf = "" - pcount = 0 - continue - if active_rr and not active_rr.ui_name: - active_rr.ui_name = line - continue - if not active_rr or line.startswith("//"): - continue - pcount += line.count('(') - line.count(')') - buf += " " - buf += line + files = [] + for root, dirs, names in os.walk(argv[2]): + for name in names: + files.append(os.path.join(root, name)) + files.sort(key=lambda f: ((2 if "dungeons" in f else 1 if "overworld" in f else 0), f)) + for file in files: + active_rr = None + buf = "" + pcount = 0 + for line in open(file, "r", encoding="ascii"): + line = line.strip() + if line.startswith("def "): if pcount != 0: - continue - if not buf or buf.isspace(): - continue - try: - thing, code = buf.split(None, 1) - except: - print("failed to parse line", repr(buf)) - continue - if thing.startswith("RR_"): - active_rr.exits.append((thing, parse(code))) - elif thing.startswith("RC_"): - active_rr.checks.append((thing, parse(code))) - else: - LOGIC.add(thing) - active_rr.events.append((thing, parse(code))) + print("error parsing", line) + defline = line.split() + active_rr = RR(*defline[1:]) + RRs.append(active_rr) buf = "" + pcount = 0 + continue + if active_rr and not active_rr.ui_name: + active_rr.ui_name = line + continue + if not active_rr or line.startswith("//"): + continue + pcount += line.count('(') - line.count(')') + buf += " " + buf += line + if pcount != 0: + continue + if not buf or buf.isspace(): + continue + try: + thing, code = buf.split(None, 1) + except: + print("failed to parse line", repr(buf)) + continue + if thing.startswith("RR_"): + active_rr.exits.append((thing, parse(code))) + elif thing.startswith("RC_"): + active_rr.checks.append((thing, parse(code))) + else: + LOGIC.add(thing) + active_rr.events.append((thing, parse(code))) + buf = "" generator = { "cpp": Cpp }[argv[1]]() generator.generate_rr(argv[3], RRs) diff --git a/soh/soh/Enhancements/randomizer/3drando/fill.cpp b/soh/soh/Enhancements/randomizer/3drando/fill.cpp index 2ac5a3592..5de056f88 100644 --- a/soh/soh/Enhancements/randomizer/3drando/fill.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/fill.cpp @@ -685,9 +685,9 @@ void LookForExternalArea(Region* currentRegion, std::set& alreadyChecke void SetAreas() { auto ctx = Rando::Context::GetInstance(); - // RANDOTODO give entrances an enum like RandomizerCheck, the give them all areas here, + // RANDOTODO give entrances an enum like RandomizerCheck, then give them all areas here, // then use those areas to not need to recursivly find ItemLocation areas when an identifying entrance's area - for (int regionType = 0; regionType < RR_MARKER_AREAS_END; regionType++) { + for (int regionType = 0; regionType < RR_MAX; regionType++) { Region* region = &areaTable[regionType]; std::set areas = region->GetAllAreas(); std::set regionsToSet = { region }; diff --git a/soh/soh/Enhancements/randomizer/location_access.cpp b/soh/soh/Enhancements/randomizer/location_access.cpp index ad4f78547..fe68e1707 100644 --- a/soh/soh/Enhancements/randomizer/location_access.cpp +++ b/soh/soh/Enhancements/randomizer/location_access.cpp @@ -787,7 +787,7 @@ void RegionTable_Init() { RegionTable_Init_Generated(); // Set parent regions - for (uint32_t i = RR_ROOT; i <= RR_GANONS_CASTLE; i++) { + for (uint32_t i = RR_ROOT; i < RR_MAX; i++) { for (LocationAccess& locPair : areaTable[i].locations) { RandomizerCheck location = locPair.GetLocation(); Rando::Context::GetInstance()->GetItemLocation(location)->SetParentRegion((RandomizerRegion)i); diff --git a/soh/soh/Enhancements/randomizer/logic.h b/soh/soh/Enhancements/randomizer/logic.h index 2bfea75e9..1cb34bd42 100644 --- a/soh/soh/Enhancements/randomizer/logic.h +++ b/soh/soh/Enhancements/randomizer/logic.h @@ -28,8 +28,6 @@ enum class GlitchDifficulty { class Logic { public: - bool noVariable = false; - // Mask Quest bool CanBorrowMasks = false; bool BorrowSkullMask = false; diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index c2b9cbbdd..72aa39406 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -3,6 +3,8 @@ #include #include "z64item.h" +#include "./generated/regions.h" + #define MAX_TRICK_NAME_SIZE 50 #define TWO_ACTOR_PARAMS(a, b) ((((a)&0xFFFF) << 16) | ((b)&0xFFFF)) @@ -357,744 +359,6 @@ typedef enum { RCSHOW_SAVED, } RandomizerCheckStatus; -typedef enum { - RR_NONE, - RR_ROOT, - RR_ROOT_EXITS, - RR_CHILD_SPAWN, - RR_ADULT_SPAWN, - RR_MINUET_OF_FOREST_WARP, - RR_BOLERO_OF_FIRE_WARP, - RR_SERENADE_OF_WATER_WARP, - RR_REQUIEM_OF_SPIRIT_WARP, - RR_NOCTURNE_OF_SHADOW_WARP, - RR_PRELUDE_OF_LIGHT_WARP, - RR_KOKIRI_FOREST, - RR_KF_LINKS_HOUSE, - RR_KF_MIDOS_HOUSE, - RR_KF_SARIAS_HOUSE, - RR_KF_HOUSE_OF_TWINS, - RR_KF_KNOW_IT_ALL_HOUSE, - RR_KF_KOKIRI_SHOP, - RR_KF_OUTSIDE_DEKU_TREE, - RR_KF_STORMS_GROTTO, - RR_THE_LOST_WOODS, - RR_LW_BRIDGE_FROM_FOREST, - RR_LW_BRIDGE, - RR_LW_FOREST_EXIT, - RR_LW_BEYOND_MIDO, - RR_LW_NEAR_SHORTCUTS_GROTTO, - RR_DEKU_THEATER, - RR_LW_SCRUBS_GROTTO, - RR_SFM_ENTRYWAY, - RR_SACRED_FOREST_MEADOW, - RR_SFM_WOLFOS_GROTTO, - RR_SFM_FAIRY_GROTTO, - RR_SFM_STORMS_GROTTO, - RR_HYRULE_FIELD, - RR_HF_SOUTHEAST_GROTTO, - RR_HF_OPEN_GROTTO, - RR_HF_INSIDE_FENCE_GROTTO, - RR_HF_COW_GROTTO, - RR_HF_COW_GROTTO_BEHIND_WEBS, - RR_HF_NEAR_MARKET_GROTTO, - RR_HF_FAIRY_GROTTO, - RR_HF_NEAR_KAK_GROTTO, - RR_HF_TEKTITE_GROTTO, - RR_LAKE_HYLIA, - RR_LH_FROM_SHORTCUT, - RR_LH_FROM_WATER_TEMPLE, - RR_LH_FISHING_ISLAND, - RR_LH_OWL_FLIGHT, - RR_LH_LAB, - RR_LH_FISHING_POND, - RR_LH_GROTTO, - RR_GERUDO_VALLEY, - RR_GV_UPPER_STREAM, - RR_GV_LOWER_STREAM, - RR_GV_GROTTO_LEDGE, - RR_GV_CRATE_LEDGE, - RR_GV_OCTOROK_GROTTO, - RR_GV_FORTRESS_SIDE, - RR_GV_CARPENTER_TENT, - RR_GV_STORMS_GROTTO, - RR_GF_OUTSKIRTS, - RR_GF_NEAR_GROTTO, - RR_GF_OUTSIDE_GTG, - RR_GF_TO_GTG, - RR_GF_EXITING_GTG, - RR_GF_ABOVE_GTG, - RR_GF_BOTTOM_OF_LOWER_VINES, - RR_GF_TOP_OF_LOWER_VINES, - RR_GF_NEAR_GS, - RR_GF_SLOPED_ROOF, - RR_GF_BOTTOM_OF_UPPER_VINES, - RR_GF_TOP_OF_UPPER_VINES, - RR_GF_NEAR_CHEST, - RR_GF_LONG_ROOF, - RR_GF_BELOW_GS, - RR_GF_BELOW_CHEST, - RR_GF_HBA_RANGE, - RR_GF_ABOVE_JAIL, - RR_GF_JAIL_WINDOW, - RR_GF_OUTSIDE_GATE, - RR_GF_STORMS_GROTTO, - RR_TH_1_TORCH_CELL, - RR_TH_DOUBLE_CELL, - RR_TH_DEAD_END_CELL, - RR_TH_STEEP_SLOPE_CELL, - RR_TH_KITCHEN_CORRIDOR, - RR_TH_KITCHEN_MAIN, - RR_TH_KITCHEN_TOP, - RR_TH_BREAK_ROOM, - RR_TH_BREAK_ROOM_CORRIDOR, - RR_WASTELAND_NEAR_FORTRESS, - RR_HAUNTED_WASTELAND, - RR_WASTELAND_NEAR_COLOSSUS, - RR_DESERT_COLOSSUS, - RR_DESERT_COLOSSUS_OASIS, - RR_DESERT_COLOSSUS_OUTSIDE_TEMPLE, - RR_COLOSSUS_GREAT_FAIRY_FOUNTAIN, - RR_COLOSSUS_GROTTO, - RR_MARKET_ENTRANCE, - RR_THE_MARKET, - RR_MARKET_GUARD_HOUSE, - RR_MARKET_BAZAAR, - RR_MARKET_MASK_SHOP, - RR_MARKET_SHOOTING_GALLERY, - RR_MARKET_BOMBCHU_BOWLING, - RR_MARKET_TREASURE_CHEST_GAME, - RR_MARKET_POTION_SHOP, - RR_MARKET_BACK_ALLEY, - RR_MARKET_BOMBCHU_SHOP, - RR_MARKET_DOG_LADY_HOUSE, - RR_MARKET_MAN_IN_GREEN_HOUSE, - RR_TOT_ENTRANCE, - RR_TEMPLE_OF_TIME, - RR_TOT_BEYOND_DOOR_OF_TIME, - RR_CASTLE_GROUNDS, - RR_CASTLE_GROUNDS_FROM_GANONS_CASTLE, - RR_HYRULE_CASTLE_GROUNDS, - RR_HC_GARDEN, - RR_HC_GREAT_FAIRY_FOUNTAIN, - RR_HC_STORMS_GROTTO, - RR_HC_STORMS_GROTTO_BEHIND_WALLS, - RR_GANONS_CASTLE_GROUNDS, - RR_OGC_GREAT_FAIRY_FOUNTAIN, - RR_GANONS_CASTLE_LEDGE, - RR_KAKARIKO_VILLAGE, - RR_KAK_CARPENTER_BOSS_HOUSE, - RR_KAK_HOUSE_OF_SKULLTULA, - RR_KAK_IMPAS_HOUSE, - RR_KAK_IMPAS_LEDGE, - RR_KAK_IMPAS_HOUSE_BACK, - RR_KAK_WINDMILL, - RR_KAK_BAZAAR, - RR_KAK_SHOOTING_GALLERY, - RR_KAK_POTION_SHOP_FRONT, - RR_KAK_POTION_SHOP_BACK, - RR_KAK_WATCHTOWER, - RR_KAK_ROOFTOP, - RR_KAK_IMPAS_ROOFTOP, - RR_KAK_BEHIND_GATE, - RR_KAK_BACKYARD, - RR_KAK_WELL, - RR_KAK_ODD_POTION_BUILDING, - RR_KAK_REDEAD_GROTTO, - RR_KAK_OPEN_GROTTO, - RR_THE_GRAVEYARD, - RR_GRAVEYARD_DAMPES_GRAVE, - RR_GRAVEYARD_DAMPES_HOUSE, - RR_GRAVEYARD_SHIELD_GRAVE, - RR_GRAVEYARD_SHIELD_GRAVE_BACK, - RR_GRAVEYARD_COMPOSERS_GRAVE, - RR_GRAVEYARD_HEART_PIECE_GRAVE, - RR_GRAVEYARD_WARP_PAD_REGION, - RR_DEATH_MOUNTAIN_TRAIL, - RR_DEATH_MOUNTAIN_SUMMIT, - RR_DMT_OWL_FLIGHT, - RR_DMT_GREAT_FAIRY_FOUNTAIN, - RR_DMT_COW_GROTTO, - RR_DMT_STORMS_GROTTO, - RR_GORON_CITY, - RR_GC_MEDIGORON, - RR_GC_WOODS_WARP, - RR_GC_DARUNIAS_CHAMBER, - RR_GC_GROTTO_PLATFORM, - RR_GC_SHOP, - RR_GC_GROTTO, - RR_DMC_UPPER_LOCAL, - RR_DMC_CENTRAL_LOCAL, - RR_DMC_LOWER_LOCAL, - RR_DMC_LOWER_NEARBY, - RR_DMC_UPPER_NEARBY, - RR_DMC_CENTRAL_NEARBY, - RR_DMC_LADDER_AREA_NEARBY, - RR_DMC_UPPER_GROTTO, - RR_DMC_HAMMER_GROTTO, - RR_DMC_GREAT_FAIRY_FOUNTAIN, - RR_DMC_DISTANT_PLATFORM, - RR_ZR_FRONT, - RR_ZORAS_RIVER, - RR_ZR_FROM_SHORTCUT, - RR_ZR_BEHIND_WATERFALL, - RR_ZR_OPEN_GROTTO, - RR_ZR_FAIRY_GROTTO, - RR_ZR_STORMS_GROTTO, - RR_ZORAS_DOMAIN, - RR_ZORAS_DOMAIN_ISLAND, - RR_ZD_BEHIND_KING_ZORA, - RR_ZD_SHOP, - RR_ZD_STORMS_GROTTO, - RR_ZORAS_FOUNTAIN, - RR_ZF_ICEBERGS, - RR_ZF_LAKEBED, - RR_ZF_LEDGE, - RR_ZF_HIDDEN_CAVE, - RR_ZF_HIDDEN_LEDGE, - RR_ZF_ROCK, - RR_ZF_GREAT_FAIRY_FOUNTAIN, - RR_LON_LON_RANCH, - RR_LLR_TALONS_HOUSE, - RR_LLR_STABLES, - RR_LLR_TOWER, - RR_LLR_GROTTO, - - RR_DEKU_TREE_ENTRYWAY, - RR_DODONGOS_CAVERN_ENTRYWAY, - RR_JABU_JABUS_BELLY_ENTRYWAY, - RR_FOREST_TEMPLE_ENTRYWAY, - RR_FIRE_TEMPLE_ENTRYWAY, - RR_WATER_TEMPLE_ENTRYWAY, - RR_SPIRIT_TEMPLE_ENTRYWAY, - RR_SHADOW_TEMPLE_ENTRYWAY, - RR_BOTTOM_OF_THE_WELL_ENTRYWAY, - RR_ICE_CAVERN_ENTRYWAY, - RR_GERUDO_TRAINING_GROUND_ENTRYWAY, - RR_GANONS_CASTLE_ENTRYWAY, - - RR_DEKU_TREE_LOBBY, - RR_DEKU_TREE_2F_MIDDLE_ROOM, - RR_DEKU_TREE_SLINGSHOT_ROOM, - RR_DEKU_TREE_COMPASS_ROOM, - RR_DEKU_TREE_BASEMENT_LOWER, - RR_DEKU_TREE_BASEMENT_SCRUB_ROOM, - RR_DEKU_TREE_BASEMENT_WATER_ROOM_FRONT, - RR_DEKU_TREE_BASEMENT_WATER_ROOM_BACK, - RR_DEKU_TREE_BASEMENT_TORCH_ROOM, - RR_DEKU_TREE_BASEMENT_BACK_LOBBY, - RR_DEKU_TREE_BASEMENT_BACK_ROOM, - RR_DEKU_TREE_BASEMENT_UPPER, - RR_DEKU_TREE_OUTSIDE_BOSS_ROOM, - - RR_DEKU_TREE_MQ_1F, - RR_DEKU_TREE_MQ_2F, - RR_DEKU_TREE_MQ_3F, - RR_DEKU_TREE_MQ_EYE_TARGET_ROOM, - RR_DEKU_TREE_MQ_COMPASS_ROOM, - RR_DEKU_TREE_MQ_PAST_BOULDER_VINES, - RR_DEKU_TREE_MQ_BASEMENT, - RR_DEKU_TREE_MQ_BASEMENT_SOUTHEAST_ROOM, - RR_DEKU_TREE_MQ_BASEMENT_WATER_ROOM_FRONT, - RR_DEKU_TREE_MQ_BASEMENT_WATER_ROOM_BACK, - RR_DEKU_TREE_MQ_BASEMENT_SOUTHWEST_ROOM, - RR_DEKU_TREE_MQ_BASEMENT_GRAVE_ROOM, - RR_DEKU_TREE_MQ_BASEMENT_BACK_ROOM, - RR_DEKU_TREE_MQ_BASEMENT_LEDGE, - RR_DEKU_TREE_MQ_OUTSIDE_BOSS_ROOM, - - RR_DEKU_TREE_BOSS_ENTRYWAY, - RR_DEKU_TREE_BOSS_EXIT, - RR_DEKU_TREE_BOSS_ROOM, - - RR_DODONGOS_CAVERN_BEGINNING, - RR_DODONGOS_CAVERN_LOBBY, - RR_DODONGOS_CAVERN_LOBBY_SWITCH, - RR_DODONGOS_CAVERN_SE_CORRIDOR, - RR_DODONGOS_CAVERN_SE_ROOM, - RR_DODONGOS_CAVERN_NEAR_LOWER_LIZALFOS, - RR_DODONGOS_CAVERN_LOWER_LIZALFOS, - RR_DODONGOS_CAVERN_DODONGO_ROOM, - RR_DODONGOS_CAVERN_NEAR_DODONGO_ROOM, - RR_DODONGOS_CAVERN_STAIRS_LOWER, - RR_DODONGOS_CAVERN_STAIRS_UPPER, - RR_DODONGOS_CAVERN_COMPASS_ROOM, - RR_DODONGOS_CAVERN_ARMOS_ROOM, - RR_DODONGOS_CAVERN_BOMB_ROOM_LOWER, - RR_DODONGOS_CAVERN_2F_SIDE_ROOM, - RR_DODONGOS_CAVERN_FIRST_SLINGSHOT_ROOM, - RR_DODONGOS_CAVERN_UPPER_LIZALFOS, - RR_DODONGOS_CAVERN_SECOND_SLINGSHOT_ROOM, - RR_DODONGOS_CAVERN_BOMB_ROOM_UPPER, - RR_DODONGOS_CAVERN_FAR_BRIDGE, - RR_DODONGOS_CAVERN_BOSS_AREA, - RR_DODONGOS_CAVERN_BACK_ROOM, - - RR_DODONGOS_CAVERN_MQ_BEGINNING, - RR_DODONGOS_CAVERN_MQ_LOBBY, - RR_DODONGOS_CAVERN_MQ_GOSSIP_STONE, - RR_DODONGOS_CAVERN_MQ_MOUTH_SIDE_BRIDGE, - RR_DODONGOS_CAVERN_MQ_STAIRS_PAST_MUD_WALL, - RR_DODONGOS_CAVERN_MQ_STAIRS_LOWER, - RR_DODONGOS_CAVERN_MQ_STAIRS_UPPER, - RR_DODONGOS_CAVERN_MQ_STAIRS_PAST_BIG_SKULLTULAS, - RR_DODONGOS_CAVERN_MQ_DODONGO_ROOM, - RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER, - RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM, - RR_DODONGOS_CAVERN_MQ_LARVAE_ROOM, - RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, - RR_DODONGOS_CAVERN_MQ_TWO_FIRES_ROOM, - RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_UPPER, - RR_DODONGOS_CAVERN_MQ_LOWER_RIGHT_SIDE, - RR_DODONGOS_CAVERN_MQ_LOWER_LIZALFOS, - RR_DODONGOS_CAVERN_MQ_POES_ROOM, - RR_DODONGOS_CAVERN_MQ_MAD_SCRUB_ROOM, - RR_DODONGOS_CAVERN_MQ_BEHIND_MOUTH, - RR_DODONGOS_CAVERN_MQ_BACK_BEHIND_FIRE, - RR_DODONGOS_CAVERN_MQ_BACK_SWITCH_GRAVE, - - RR_DODONGOS_CAVERN_BOSS_ENTRYWAY, - RR_DODONGOS_CAVERN_BOSS_EXIT, - RR_DODONGOS_CAVERN_BOSS_ROOM, - - RR_JABU_JABUS_BELLY_BEGINNING, - RR_JABU_JABUS_BELLY_MAIN, - RR_JABU_JABUS_BELLY_B1_NORTH, - RR_JABU_JABUS_BELLY_WATER_SWITCH_ROOM_SOUTH, - RR_JABU_JABUS_BELLY_WATER_SWITCH_ROOM_LEDGE, - RR_JABU_JABUS_BELLY_COMPASS_ROOM, - RR_JABU_JABUS_BELLY_BLUE_TENTACLE, - RR_JABU_JABUS_BELLY_GREEN_TENTACLE, - RR_JABU_JABUS_BELLY_BIGOCTO_LEDGE, - RR_JABU_JABUS_BELLY_ABOVE_BIGOCTO, - RR_JABU_JABUS_BELLY_LIFT_UPPER, - RR_JABU_JABUS_BELLY_NEAR_BOSS_ROOM, - - RR_JABU_JABUS_BELLY_MQ_BEGINNING, - RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, - RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM_EAST_LEDGE, - RR_JABU_JABUS_BELLY_MQ_UNDERWATER_ALCOVE, - RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, - RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM, - RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, - RR_JABU_JABUS_BELLY_MQ_WEST_FORKED_ROOMS, - RR_JABU_JABUS_BELLY_MQ_INVISIBLE_KEESE_ROOM, - RR_JABU_JABUS_BELLY_MQ_PAST_OCTO, - RR_JABU_JABUS_BELLY_MQ_EAST_ROOM, - - RR_JABU_JABUS_BELLY_BOSS_ENTRYWAY, - RR_JABU_JABUS_BELLY_BOSS_EXIT, - RR_JABU_JABUS_BELLY_BOSS_ROOM, - - RR_FOREST_TEMPLE_FIRST_ROOM, - RR_FOREST_TEMPLE_SOUTH_CORRIDOR, - RR_FOREST_TEMPLE_LOBBY, - RR_FOREST_TEMPLE_NORTH_CORRIDOR, - RR_FOREST_TEMPLE_LOWER_STALFOS, - RR_FOREST_TEMPLE_NW_OUTDOORS_LOWER, - RR_FOREST_TEMPLE_NW_OUTDOORS_UPPER, - RR_FOREST_TEMPLE_NE_OUTDOORS_LOWER, - RR_FOREST_TEMPLE_NE_OUTDOORS_UPPER, - RR_FOREST_TEMPLE_MAP_ROOM, - RR_FOREST_TEMPLE_SEWER, - RR_FOREST_TEMPLE_BELOW_BOSS_KEY_CHEST, - RR_FOREST_TEMPLE_FLOORMASTER_ROOM, - RR_FOREST_TEMPLE_WEST_CORRIDOR, - RR_FOREST_TEMPLE_BLOCK_PUSH_ROOM, - RR_FOREST_TEMPLE_NW_CORRIDOR_TWISTED, - RR_FOREST_TEMPLE_NW_CORRIDOR_STRAIGHTENED, - RR_FOREST_TEMPLE_RED_POE_ROOM, - RR_FOREST_TEMPLE_UPPER_STALFOS, - RR_FOREST_TEMPLE_BLUE_POE_ROOM, - RR_FOREST_TEMPLE_NE_CORRIDOR_STRAIGHTENED, - RR_FOREST_TEMPLE_NE_CORRIDOR_TWISTED, - RR_FOREST_TEMPLE_FROZEN_EYE_ROOM, - RR_FOREST_TEMPLE_FALLING_ROOM, - RR_FOREST_TEMPLE_GREEN_POE_ROOM, - RR_FOREST_TEMPLE_EAST_CORRIDOR, - RR_FOREST_TEMPLE_BOSS_REGION, - - RR_FOREST_TEMPLE_MQ_LOBBY, - RR_FOREST_TEMPLE_MQ_CENTRAL_AREA, - RR_FOREST_TEMPLE_MQ_WOLFOS_ROOM, - RR_FOREST_TEMPLE_MQ_LOWER_BLOCK_PUZZLE, - RR_FOREST_TEMPLE_MQ_MIDDLE_BLOCK_PUZZLE, - RR_FOREST_TEMPLE_MQ_UPPER_BLOCK_PUZZLE, - RR_FOREST_TEMPLE_MQ_STRAIGHT_HALLWAY, - RR_FOREST_TEMPLE_MQ_FLOORMASTER_ROOM, - RR_FOREST_TEMPLE_MQ_OUTDOOR_LEDGE, - RR_FOREST_TEMPLE_MQ_NW_OUTDOORS, - RR_FOREST_TEMPLE_MQ_NE_OUTDOORS, - RR_FOREST_TEMPLE_MQ_OUTDOORS_TOP_LEDGES, - RR_FOREST_TEMPLE_MQ_NE_OUTDOORS_LEDGE, - RR_FOREST_TEMPLE_MQ_JOELLE_ROOM, - RR_FOREST_TEMPLE_MQ_3_STALFOS_ROOM, - RR_FOREST_TEMPLE_MQ_BETH_ROOM, - RR_FOREST_TEMPLE_MQ_TORCH_SHOT_ROOM, - RR_FOREST_TEMPLE_MQ_FALLING_ROOM, - RR_FOREST_TEMPLE_MQ_AMY_ROOM, - RR_FOREST_TEMPLE_MQ_BASEMENT, - RR_FOREST_TEMPLE_MQ_BASEMENT_POT_ROOM, - RR_FOREST_TEMPLE_MQ_BOSS_REGION, - - RR_FOREST_TEMPLE_BOSS_ENTRYWAY, - RR_FOREST_TEMPLE_BOSS_ROOM, - - RR_FIRE_TEMPLE_FIRST_ROOM, - RR_FIRE_TEMPLE_NEAR_BOSS_ROOM, - RR_FIRE_TEMPLE_LOOP_ENEMIES, - RR_FIRE_TEMPLE_LOOP_TILES, - RR_FIRE_TEMPLE_LOOP_FLARE_DANCER, - RR_FIRE_TEMPLE_LOOP_HAMMER_SWITCH, - RR_FIRE_TEMPLE_LOOP_GORON_ROOM, - RR_FIRE_TEMPLE_LOOP_EXIT, - RR_FIRE_TEMPLE_BIG_LAVA_ROOM, - RR_FIRE_TEMPLE_BIG_LAVA_ROOM_NORTH_GORON, - RR_FIRE_TEMPLE_BIG_LAVA_ROOM_NORTH_TILES, - RR_FIRE_TEMPLE_BIG_LAVA_ROOM_SOUTH_GORON, - RR_FIRE_TEMPLE_FIRE_PILLAR_ROOM, - RR_FIRE_TEMPLE_SHORTCUT_ROOM, - RR_FIRE_TEMPLE_SHORTCUT_CLIMB, - RR_FIRE_TEMPLE_BOULDER_MAZE_LOWER, - RR_FIRE_TEMPLE_BOULDER_MAZE_LOWER_SIDE_ROOM, - RR_FIRE_TEMPLE_EAST_CENTRAL_ROOM, - RR_FIRE_TEMPLE_FIRE_WALL_CHASE, - RR_FIRE_TEMPLE_MAP_AREA, - RR_FIRE_TEMPLE_BOULDER_MAZE_UPPER, - RR_FIRE_TEMPLE_SCARECROW_ROOM, - RR_FIRE_TEMPLE_EAST_PEAK, - RR_FIRE_TEMPLE_CORRIDOR, - RR_FIRE_TEMPLE_FIRE_MAZE_ROOM, - RR_FIRE_TEMPLE_FIRE_MAZE_UPPER, - RR_FIRE_TEMPLE_FIRE_MAZE_SIDE_ROOM, - RR_FIRE_TEMPLE_WEST_CENTRAL_LOWER, - RR_FIRE_TEMPLE_WEST_CENTRAL_UPPER, - RR_FIRE_TEMPLE_LATE_FIRE_MAZE, - RR_FIRE_TEMPLE_UPPER_FLARE_DANCER, - RR_FIRE_TEMPLE_WEST_CLIMB, - RR_FIRE_TEMPLE_WEST_PEAK, - RR_FIRE_TEMPLE_HAMMER_RETURN_PATH, - RR_FIRE_TEMPLE_ABOVE_FIRE_MAZE, - - RR_FIRE_TEMPLE_MQ_FIRST_ROOM_LOWER, - RR_FIRE_TEMPLE_MQ_FIRST_ROOM_UPPER, - RR_FIRE_TEMPLE_MQ_MAP_ROOM_SOUTH, - RR_FIRE_TEMPLE_MQ_STALFOS_ROOM, - RR_FIRE_TEMPLE_MQ_IRON_KNUCKLE_ROOM, - RR_FIRE_TEMPLE_MQ_LOWER_FLARE_DANCER, - RR_FIRE_TEMPLE_MQ_MAP_ROOM_NORTH, - RR_FIRE_TEMPLE_MQ_MAP_ROOM_CAGE, - RR_FIRE_TEMPLE_MQ_NEAR_BOSS_ROOM, - RR_FIRE_TEMPLE_MQ_NEAR_BOSS_ROOM_NORTH, - RR_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM, - RR_FIRE_TEMPLE_MQ_TORCH_FIREWALL_ROOM, - RR_FIRE_TEMPLE_MQ_ELEVATOR_ROOM, - RR_FIRE_TEMPLE_MQ_BIG_TORCH_ROOM, - RR_FIRE_TEMPLE_MQ_LOWER_MAZE, - RR_FIRE_TEMPLE_MQ_LOWER_MAZE_CRATE_CAGE, - RR_FIRE_TEMPLE_MQ_UPPER_MAZE, - RR_FIRE_TEMPLE_MQ_UPPER_MAZE_BOX_CAGE, - RR_FIRE_TEMPLE_MQ_MAZE_SHORTCUT, - RR_FIRE_TEMPLE_MQ_MAZE_SHORTCUT_CAGE, - RR_FIRE_TEMPLE_MQ_BURNING_BLOCK_CLIMB, - RR_FIRE_TEMPLE_MQ_NARROW_PATH_ROOM, - RR_FIRE_TEMPLE_MQ_HIGH_TORCH_ROOM, - RR_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE, - RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PLATFORMS, - RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE, - RR_FIRE_TEMPLE_MQ_WEST_FIRE_MAZE, - RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PAST_WALL, - RR_FIRE_TEMPLE_MQ_UPPER_FLARE_DANCER, - RR_FIRE_TEMPLE_MQ_SCARECROW_ROOM, - RR_FIRE_TEMPLE_MQ_COLLAPSED_STAIRS, - - RR_FIRE_TEMPLE_BOSS_ENTRYWAY, - RR_FIRE_TEMPLE_BOSS_ROOM, - - RR_WATER_TEMPLE_LOBBY, - RR_WATER_TEMPLE_EAST_LOWER, - RR_WATER_TEMPLE_MAP_ROOM, - RR_WATER_TEMPLE_CRACKED_WALL, - RR_WATER_TEMPLE_TORCH_ROOM, - RR_WATER_TEMPLE_NORTH_LOWER, - RR_WATER_TEMPLE_BOULDERS_LOWER, - RR_WATER_TEMPLE_BLOCK_ROOM, - RR_WATER_TEMPLE_JETS_ROOM, - RR_WATER_TEMPLE_BOULDERS_UPPER, - RR_WATER_TEMPLE_BOSS_KEY_ROOM, - RR_WATER_TEMPLE_SOUTH_LOWER, - RR_WATER_TEMPLE_WEST_LOWER, - RR_WATER_TEMPLE_DRAGON_ROOM, - RR_WATER_TEMPLE_CENTRAL_PILLAR_LOWER, - RR_WATER_TEMPLE_CENTRAL_PILLAR_UPPER, - RR_WATER_TEMPLE_CENTRAL_PILLAR_BASEMENT, - RR_WATER_TEMPLE_EAST_MIDDLE, - RR_WATER_TEMPLE_WEST_MIDDLE, - RR_WATER_TEMPLE_HIGH_WATER, - RR_WATER_TEMPLE_BLOCK_CORRIDOR, - RR_WATER_TEMPLE_FALLING_PLATFORM_ROOM, - RR_WATER_TEMPLE_DRAGON_PILLARS_ROOM, - RR_WATER_TEMPLE_DARK_LINK_ROOM, - RR_WATER_TEMPLE_LONGSHOT_ROOM, - RR_WATER_TEMPLE_RIVER, - RR_WATER_TEMPLE_PRE_BOSS_ROOM, - - RR_WATER_TEMPLE_MQ_3F_SOUTH_LEDGE, - RR_WATER_TEMPLE_MQ_MAIN, - RR_WATER_TEMPLE_MQ_3F_CENTRAL, - RR_WATER_TEMPLE_MQ_2F_CENTRAL, - RR_WATER_TEMPLE_MQ_2F_CENTRAL_HIGH, - RR_WATER_TEMPLE_MQ_HIGH_EMBLEM, - RR_WATER_TEMPLE_MQ_3F_NORTH_LEDGE, - RR_WATER_TEMPLE_MQ_BOSS_DOOR, - RR_WATER_TEMPLE_MQ_EAST_TOWER, - RR_WATER_TEMPLE_MQ_EAST_TOWER_1F_ROOM, - RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_1F, - RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_2F, - RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_HIGH, - RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_B1, - RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_B1_FINAL, - RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_2F, - RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_3F, - RR_WATER_TEMPLE_MQ_STORAGE_ROOM, - RR_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY, - RR_WATER_TEMPLE_MQ_LIZALFOS_CAGE, - RR_WATER_TEMPLE_MQ_3F_EAST_LEDGE, - RR_WATER_TEMPLE_MQ_WATERFALL, - RR_WATER_TEMPLE_MQ_STALFOS_PIT, - RR_WATER_TEMPLE_MQ_STALFOS_PIT_POTS, - RR_WATER_TEMPLE_MQ_STALFOS_PIT_UPPER, - RR_WATER_TEMPLE_MQ_AFTER_DARK_LINK, - RR_WATER_TEMPLE_MQ_RIVER_SKULL, - RR_WATER_TEMPLE_MQ_RIVER_POTS, - RR_WATER_TEMPLE_MQ_DRAGON_ROOM_DOOR, - RR_WATER_TEMPLE_MQ_DRAGON_ROOM_TUNNEL, - RR_WATER_TEMPLE_MQ_DRAGON_ROOM_ALCOVE, - RR_WATER_TEMPLE_MQ_BOSS_KEY_ROOM_SWITCH, - RR_WATER_TEMPLE_MQ_BOSS_KEY_ROOM_PIT, - RR_WATER_TEMPLE_MQ_BOSS_KEY_ROOM_CHEST, - RR_WATER_TEMPLE_MQ_B1_GATE_SWITCH, - RR_WATER_TEMPLE_MQ_TRIANGLE_TORCH_ROOM, - RR_WATER_TEMPLE_MQ_TRIANGLE_TORCH_CAGE, - RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM, - RR_WATER_TEMPLE_MQ_SINGLE_STALFOS_ROOM, - RR_WATER_TEMPLE_MQ_4_TORCH_ROOM, - RR_WATER_TEMPLE_MQ_DODONGO_ROOM, - RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_CAGE, - - RR_WATER_TEMPLE_BOSS_ENTRYWAY, - RR_WATER_TEMPLE_BOSS_ROOM, - - RR_SPIRIT_TEMPLE_LOBBY, - RR_SPIRIT_TEMPLE_CHILD, - RR_SPIRIT_TEMPLE_CHILD_CLIMB, - RR_SPIRIT_TEMPLE_EARLY_ADULT, - RR_SPIRIT_TEMPLE_CENTRAL_CHAMBER, - RR_SPIRIT_TEMPLE_OUTDOOR_HANDS, - RR_SPIRIT_TEMPLE_BEYOND_CENTRAL_LOCKED_DOOR, - RR_SPIRIT_TEMPLE_BEYOND_FINAL_LOCKED_DOOR, - RR_SPIRIT_TEMPLE_INSIDE_STATUE_HEAD, - - RR_SPIRIT_TEMPLE_MQ_LOBBY, - RR_SPIRIT_TEMPLE_MQ_1F_WEST, - RR_SPIRIT_TEMPLE_MQ_1F_GIBDO_ROOM_NORTH, - RR_SPIRIT_TEMPLE_MQ_1F_GIBDO_ROOM_SOUTH, - RR_SPIRIT_TEMPLE_MQ_TURNTABLE_ROOM, - RR_SPIRIT_TEMPLE_MQ_MAP_ROOM_NORTH, - RR_SPIRIT_TEMPLE_MQ_MAP_ROOM_SOUTH, - RR_SPIRIT_TEMPLE_MQ_WEST_1F_RUSTED_SWITCH, - RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE, - RR_SPIRIT_TEMPLE_MQ_BROKEN_WALL_ROOM, - RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, - RR_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM, - RR_SPIRIT_TEMPLE_MQ_WEST_IRON_KNUCKLE, - RR_SPIRIT_TEMPLE_MQ_SILVER_GAUNTLETS_HAND, - RR_SPIRIT_TEMPLE_MQ_BIG_BLOCK_ROOM_SOUTH, - RR_SPIRIT_TEMPLE_MQ_BIG_BLOCK_ROOM_NORTH, - RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM_EAST, - RR_SPIRIT_TEMPLE_MQ_THREE_SUNS_ROOM_2F, - RR_SPIRIT_TEMPLE_MQ_THREE_SUNS_ROOM_1F, - RR_SPIRIT_TEMPLE_MQ_1F_EAST, - RR_SPIRIT_TEMPLE_MQ_LEEVER_ROOM, - RR_SPIRIT_TEMPLE_MQ_SYMPHONY_ROOM, - RR_SPIRIT_TEMPLE_MQ_AFTER_SYMPHONY_ROOM, - RR_SPIRIT_TEMPLE_MQ_FOUR_BEAMOS_ROOM, - RR_SPIRIT_TEMPLE_MQ_SOT_SUN_ROOM, - RR_SPIRIT_TEMPLE_MQ_EAST_STAIRS_TO_HAND, - RR_SPIRIT_TEMPLE_MQ_EAST_IRON_KNUCKLE, - RR_SPIRIT_TEMPLE_MQ_MIRROR_SHIELD_HAND, - RR_SPIRIT_TEMPLE_MQ_3F_GIBDO_ROOM, - RR_SPIRIT_TEMPLE_MQ_BIG_WALL, - RR_SPIRIT_TEMPLE_MQ_4F_CENTRAL, - RR_SPIRIT_TEMPLE_MQ_NINE_CHAIRS_ROOM, - RR_SPIRIT_TEMPLE_MQ_BIG_MIRROR_ROOM, - RR_SPIRIT_TEMPLE_MQ_BIG_MIRROR_CAVE, - RR_SPIRIT_TEMPLE_MQ_INSIDE_STATUE_HEAD, - - RR_SPIRIT_TEMPLE_BOSS_ENTRYWAY, - RR_SPIRIT_TEMPLE_BOSS_ROOM, - - RR_SHADOW_TEMPLE_BEGINNING, - RR_SHADOW_TEMPLE_FIRST_BEAMOS, - RR_SHADOW_TEMPLE_HUGE_PIT, - RR_SHADOW_TEMPLE_WIND_TUNNEL, - RR_SHADOW_TEMPLE_BEYOND_BOAT, - - RR_SHADOW_TEMPLE_MQ_ENTRYWAY, - RR_SHADOW_TEMPLE_MQ_BEGINNING, - RR_SHADOW_TEMPLE_MQ_SPINNER_ROOM, - RR_SHADOW_TEMPLE_MQ_DEAD_HAND_AREA, - RR_SHADOW_TEMPLE_MQ_FIRST_BEAMOS, - RR_SHADOW_TEMPLE_MQ_B2_SPINNING_BLADE_ROOM, - RR_SHADOW_TEMPLE_MQ_SHORTCUT_PATH, - RR_SHADOW_TEMPLE_MQ_B2_TO_B3_CORRIDOR, - RR_SHADOW_TEMPLE_MQ_UPPER_HUGE_PIT, - RR_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_ROOM, - RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, - RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM, - RR_SHADOW_TEMPLE_MQ_UPPER_STONE_UMBRELLA, - RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM, - RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM, - RR_SHADOW_TEMPLE_MQ_WIND_TUNNEL, - RR_SHADOW_TEMPLE_MQ_WIND_HINT_ROOM, - RR_SHADOW_TEMPLE_MQ_B4_GIBDO_ROOM, - RR_SHADOW_TEMPLE_MQ_DOCK, - RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, - RR_SHADOW_TEMPLE_MQ_ACROSS_CHASM, - RR_SHADOW_TEMPLE_MQ_BOSS_DOOR, - RR_SHADOW_TEMPLE_MQ_INVISIBLE_MAZE, - RR_SHADOW_TEMPLE_MQ_SPIKE_WALLS_ROOM, - - RR_SHADOW_TEMPLE_BOSS_ENTRYWAY, - RR_SHADOW_TEMPLE_BOSS_ROOM, - - RR_BOTTOM_OF_THE_WELL_PERIMETER, - RR_BOTTOM_OF_THE_WELL_BEHIND_FAKE_WALLS, - RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM, - RR_BOTTOM_OF_THE_WELL_KEESE_BEAMOS_ROOM, - RR_BOTTOM_OF_THE_WELL_LIKE_LIKE_CAGE, - RR_BOTTOM_OF_THE_WELL_INNER_ROOMS, - RR_BOTTOM_OF_THE_WELL_COFFIN_ROOM, - RR_BOTTOM_OF_THE_WELL_DEAD_HAND_ROOM, - RR_BOTTOM_OF_THE_WELL_BASEMENT, - RR_BOTTOM_OF_THE_WELL_BASEMENT_USEFUL_BOMB_FLOWERS, - RR_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM, - - RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, - RR_BOTTOM_OF_THE_WELL_MQ_WEST_ROOM_SWITCH, - RR_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM, - RR_BOTTOM_OF_THE_WELL_MQ_LOCKED_CAGE, - RR_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_ROOM, - RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE, - RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT, - RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SWITCH_PLATFORM, - - RR_ICE_CAVERN_BEGINNING, - RR_ICE_CAVERN_MAIN, - - RR_ICE_CAVERN_MQ_BEGINNING, - RR_ICE_CAVERN_MQ_HUB, - RR_ICE_CAVERN_MQ_MAP_ROOM, - RR_ICE_CAVERN_MQ_SCARECROW_ROOM, - RR_ICE_CAVERN_MQ_STALFOS_ROOM, - RR_ICE_CAVERN_MQ_WEST_CORRIDOR, - RR_ICE_CAVERN_MQ_COMPASS_ROOM, - - RR_GERUDO_TRAINING_GROUND_LOBBY, - RR_GERUDO_TRAINING_GROUND_CENTRAL_MAZE, - RR_GERUDO_TRAINING_GROUND_CENTRAL_MAZE_RIGHT, - RR_GERUDO_TRAINING_GROUND_LAVA_ROOM, - RR_GERUDO_TRAINING_GROUND_HAMMER_ROOM, - RR_GERUDO_TRAINING_GROUND_EYE_STATUE_LOWER, - RR_GERUDO_TRAINING_GROUND_EYE_STATUE_UPPER, - RR_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_ROOM, - RR_GERUDO_TRAINING_GROUND_LIKE_LIKE_ROOM, - - RR_GERUDO_TRAINING_GROUND_MQ_LOBBY, - RR_GERUDO_TRAINING_GROUND_MQ_MAZE_HIDDEN_ROOM, - RR_GERUDO_TRAINING_GROUND_MQ_MAZE_FIRST_LOCK, - RR_GERUDO_TRAINING_GROUND_MQ_MAZE_CENTER, - RR_GERUDO_TRAINING_GROUND_MQ_SAND_ROOM, - RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE, - RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, - RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK, - RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE, - RR_GERUDO_TRAINING_GROUND_MQ_MAGENTA_FIRE_ROOM, - RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM, - RR_GERUDO_TRAINING_GROUND_MQ_TORCH_SLUG_ROOM, - RR_GERUDO_TRAINING_GROUND_MQ_SWITCH_LEDGE, - RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS, - RR_GERUDO_TRAINING_GROUND_MQ_FURTHEST_PLATFORM, - RR_GERUDO_TRAINING_GROUND_MQ_TORCH_SIDE_PLATFORMS, - RR_GERUDO_TRAINING_GROUND_MQ_PLATFORMS_UNLIT_TORCH, - RR_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_ROOM, - RR_GERUDO_TRAINING_GROUND_MQ_UNDERWATER, - RR_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT, - - RR_GANONS_CASTLE_LOBBY, - RR_GANONS_CASTLE_MAIN, - RR_GANONS_CASTLE_DEKU_SCRUBS, - RR_GANONS_CASTLE_FOREST_TRIAL, - RR_GANONS_CASTLE_FIRE_TRIAL, - RR_GANONS_CASTLE_WATER_TRIAL, - RR_GANONS_CASTLE_SHADOW_TRIAL, - RR_GANONS_CASTLE_SPIRIT_TRIAL, - RR_GANONS_CASTLE_LIGHT_TRIAL, - - RR_GANONS_CASTLE_MQ_LOBBY, - RR_GANONS_CASTLE_MQ_MAIN, - RR_GANONS_CASTLE_MQ_DEKU_SCRUBS, - RR_GANONS_CASTLE_MQ_FOREST_TRIAL_STALFOS_ROOM, - RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM, - RR_GANONS_CASTLE_MQ_FOREST_TRIAL_FINAL_ROOM, - RR_GANONS_CASTLE_MQ_FIRE_TRIAL_MAIN_ROOM, - RR_GANONS_CASTLE_MQ_FIRE_TRIAL_FINAL_ROOM, - RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM, - RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM, - RR_GANONS_CASTLE_MQ_WATER_TRIAL_FINAL_ROOM, - RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_STARTING_LEDGE, - RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_CHEST_PLATFORM, - RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_MOVING_PLATFORM, - RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_BEAMOS_TORCH, - RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_FAR_SIDE, - RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_FINAL_ROOM, - RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_CHAIRS_ROOM, - RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_BEFORE_SWITCH, - RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_AFTER_SWITCH, - RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_FINAL_ROOM, - RR_GANONS_CASTLE_MQ_LIGHT_TRIAL_DINOLFOS_ROOM, - RR_GANONS_CASTLE_MQ_LIGHT_TRIAL_TRIFORCE_ROOM, - RR_GANONS_CASTLE_MQ_LIGHT_TRIAL_BOULDER_ROOM_FRONT, - RR_GANONS_CASTLE_MQ_LIGHT_TRIAL_BOULDER_ROOM_BACK, - RR_GANONS_CASTLE_MQ_LIGHT_TRIAL_FINAL_ROOM, - - RR_GANONS_TOWER_ENTRYWAY, - RR_GANONS_TOWER_FLOOR_1, - RR_GANONS_TOWER_FLOOR_2, - RR_GANONS_TOWER_FLOOR_3, - RR_GANONS_TOWER_BEFORE_GANONDORF_LAIR, - RR_GANONS_TOWER_GANONDORF_LAIR, - RR_GANONS_CASTLE_ESCAPE, - RR_GANONS_CASTLE_GANON_ARENA, - - RR_MARKER_AREAS_END, // Used for area key count - - // DUNGEONS - RR_DEKU_TREE, - RR_DODONGOS_CAVERN, - RR_JABU_JABUS_BELLY, - RR_FOREST_TEMPLE, - RR_FIRE_TEMPLE, - RR_WATER_TEMPLE, - RR_SPIRIT_TEMPLE, - RR_SHADOW_TEMPLE, - RR_BOTTOM_OF_THE_WELL, - RR_ICE_CAVERN, - RR_GERUDO_TRAINING_GROUND, - RR_GANONS_CASTLE, - RR_MAX, -} RandomizerRegion; - typedef enum { RC_UNKNOWN_CHECK, RC_LINKS_POCKET,