summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarrett Cox <garrettjcox@gmail.com>2024-01-21 06:01:53 +0000
committerGarrett Cox <garrettjcox@gmail.com>2024-05-22 09:04:58 -0500
commit508f8378ded6ec33ee48073e7f2af6cf5e00a9a6 (patch)
tree48840209dfd5d1c644170db3e75b77bcd2ffce1c
parentb341e7bab015d9e3f54bb3a8cc645bc08979a241 (diff)
Better map select (#85)
* Add human readable name and entrance scene ID to scene table * Add better map select
-rw-r--r--mm/2s2h/BenMenuBar.cpp1
-rw-r--r--mm/2s2h/DeveloperTools/BetterMapSelect.c208
-rw-r--r--mm/2s2h/DeveloperTools/BetterMapSelect.h11
-rw-r--r--mm/CMakeLists.txt1
-rw-r--r--mm/include/tables/scene_table.h206
-rw-r--r--mm/include/z64scene.h2
-rw-r--r--mm/src/code/z_parameter.c2
-rw-r--r--mm/src/code/z_scene_table.c2
-rw-r--r--mm/src/code/z_sram_NES.c2
-rw-r--r--mm/src/overlays/gamestates/ovl_select/z_select.c611
-rw-r--r--mm/src/overlays/gamestates/ovl_select/z_select.h2
11 files changed, 343 insertions, 705 deletions
diff --git a/mm/2s2h/BenMenuBar.cpp b/mm/2s2h/BenMenuBar.cpp
index d24074ca9..52652e342 100644
--- a/mm/2s2h/BenMenuBar.cpp
+++ b/mm/2s2h/BenMenuBar.cpp
@@ -293,6 +293,7 @@ void DrawDeveloperToolsMenu() {
"Right, and open the debug menu with L on the pause screen"
});
UIWidgets::CVarCheckbox("No Clip", "gDeveloperTools.NoClip");
+ UIWidgets::CVarCheckbox("Better Map Select", "gDeveloperTools.BetterMapSelect.Enabled");
UIWidgets::CVarCheckbox("Moon Jump on L", "gDeveloperTools.MoonJumpOnL", {
.tooltip = "Holding L makes you float into the air"
});
diff --git a/mm/2s2h/DeveloperTools/BetterMapSelect.c b/mm/2s2h/DeveloperTools/BetterMapSelect.c
new file mode 100644
index 000000000..df194a5a1
--- /dev/null
+++ b/mm/2s2h/DeveloperTools/BetterMapSelect.c
@@ -0,0 +1,208 @@
+
+#include "BetterMapSelect.h"
+
+#include "overlays/gamestates/ovl_file_choose/z_file_select.h"
+#include "overlays/gamestates/ovl_select/z_select.h"
+#include "libultraship/libultraship.h"
+
+extern SceneSelectEntry sScenes[143];
+
+void MapSelect_LoadFileSelect(MapSelectState* mapSelectState) {
+ STOP_GAMESTATE(&mapSelectState->state);
+ SET_NEXT_GAMESTATE(&mapSelectState->state, FileSelect_Init, sizeof(FileSelectState));
+}
+
+#define DEFINE_SCENE(_name, _enumValue, _textId, _drawConfig, _restrictionFlags, _persistentCycleFlags, entranceSceneId, humanName) \
+ { humanName, MapSelect_LoadGame, ENTRANCE(entranceSceneId, 0) },
+#define DEFINE_SCENE_UNSET(_enumValue)
+
+static SceneSelectEntry sBetterScenes[] = {
+ #include "tables/scene_table.h"
+ { "File Select", MapSelect_LoadFileSelect, 0 },
+ { "Title Screen", MapSelect_LoadConsoleLogo, 0 },
+};
+
+#undef DEFINE_SCENE
+#undef DEFINE_SCENE_UNSET
+
+#define DEFINE_SCENE(_name, enumValue, _textId, _drawConfig, _restrictionFlags, _persistentCycleFlags, entranceSceneId, humanName) \
+ { enumValue },
+#define DEFINE_SCENE_UNSET(_enumValue)
+
+static uint32_t sBetterScenesEnums[] = {
+ #include "tables/scene_table.h"
+};
+
+#undef DEFINE_SCENE
+#undef DEFINE_SCENE_UNSET
+
+static bool isBetterMapSelect = false;
+
+void BetterMapSelect_Init(MapSelectState* mapSelectState) {
+ isBetterMapSelect = CVarGetInteger("gDeveloperTools.BetterMapSelect.Enabled", 0);
+ if (CVarGetInteger("gDeveloperTools.BetterMapSelect.Enabled", 0)) {
+ mapSelectState->scenes = sBetterScenes;
+ mapSelectState->count = ARRAY_COUNT(sBetterScenes);
+ mapSelectState->currentScene = CVarGetInteger("gDeveloperTools.BetterMapSelect.CurrentScene", 0);
+ mapSelectState->topDisplayedScene = CVarGetInteger("gDeveloperTools.BetterMapSelect.TopDisplayedScene", 0);
+ mapSelectState->pageDownIndex = CVarGetInteger("gDeveloperTools.BetterMapSelect.PageDownIndex", 0);
+ } else {
+ mapSelectState->scenes = sScenes;
+ mapSelectState->count = ARRAY_COUNT(sScenes);
+ mapSelectState->currentScene = 0;
+ mapSelectState->topDisplayedScene = 0;
+ mapSelectState->pageDownIndex = 0;
+ }
+}
+
+void BetterMapSelect_Update(MapSelectState* mapSelectState) {
+ if (isBetterMapSelect != CVarGetInteger("gDeveloperTools.BetterMapSelect.Enabled", 0)) {
+ BetterMapSelect_Init(mapSelectState);
+ }
+
+ if (CVarGetInteger("gDeveloperTools.BetterMapSelect.Enabled", 0)) {
+ if (mapSelectState->currentScene != CVarGetInteger("gDeveloperTools.BetterMapSelect.CurrentScene", 0)) {
+ CVarSetInteger("gDeveloperTools.BetterMapSelect.CurrentScene", mapSelectState->currentScene);
+ CVarSetInteger("gDeveloperTools.BetterMapSelect.TopDisplayedScene", mapSelectState->topDisplayedScene);
+ CVarSetInteger("gDeveloperTools.BetterMapSelect.PageDownIndex", mapSelectState->pageDownIndex);
+ }
+ }
+}
+
+static const char* betterFormLabels[] = {
+ "Deity",
+ "Goron",
+ "Zora",
+ "Deku",
+ "Child",
+};
+
+void BetterMapSelect_PrintMenu(MapSelectState* mapSelectState, GfxPrint* printer) {
+ s32 i;
+ s32 sceneIndex;
+ char* sceneName;
+ char* stageName;
+ char* dayName;
+
+ // Header
+ GfxPrint_SetColor(printer, 255, 255, 255, 255);
+ GfxPrint_SetPos(printer, 12, 2);
+ GfxPrint_Printf(printer, "Scene Selection");
+ GfxPrint_SetColor(printer, 255, 255, 255, 255);
+
+ // Scenes
+ for (i = 0; i < 20; i++) {
+ GfxPrint_SetPos(printer, 3, i + 4);
+
+ sceneIndex = (mapSelectState->topDisplayedScene + i + mapSelectState->count) % mapSelectState->count;
+ if (sceneIndex == mapSelectState->currentScene) {
+ GfxPrint_SetColor(printer, 255, 100, 100, 255);
+ } else {
+ GfxPrint_SetColor(printer, 175, 175, 175, 255);
+ }
+
+ sceneName = sBetterScenes[sceneIndex].name;
+ if (sceneIndex >= ARRAY_COUNT(sBetterScenesEnums)) {
+ GfxPrint_Printf(printer, " %s", sceneName);
+ } else {
+ GfxPrint_Printf(printer, "%3d %s", sBetterScenesEnums[sceneIndex], sceneName);
+ }
+ };
+
+ // Entrance
+ GfxPrint_SetColor(printer, 100, 100, 100, 255);
+ GfxPrint_SetPos(printer, 28, 26);
+ GfxPrint_Printf(printer, "Entrance:");
+ GfxPrint_SetColor(printer, 200, 200, 50, 255);
+ GfxPrint_Printf(printer, "%2d", mapSelectState->opt);
+
+ // Form
+ GfxPrint_SetPos(printer, 26, 25);
+ GfxPrint_SetColor(printer, 100, 100, 100, 255);
+ GfxPrint_Printf(printer, "(B)Form:");
+ GfxPrint_SetColor(printer, 55, 200, 50, 255);
+ GfxPrint_Printf(printer, "%s", betterFormLabels[GET_PLAYER_FORM]);
+
+ // Day
+ GfxPrint_SetPos(printer, 1, 25);
+ GfxPrint_SetColor(printer, 100, 100, 100, 255);
+ GfxPrint_Printf(printer, "Day:");
+ GfxPrint_SetColor(printer, 100, 100, 200, 255);
+ switch (gSaveContext.save.day) {
+ case 1:
+ dayName = "First Day";
+ break;
+ case 2:
+ dayName = "Second Day";
+ break;
+ case 3:
+ dayName = "Final Day";
+ break;
+ case 4:
+ dayName = "Clear Day";
+ break;
+ default:
+ gSaveContext.save.day = 1;
+ dayName = "First Day";
+ break;
+ }
+ GfxPrint_Printf(printer, "%s", dayName);
+
+ // Stage
+ GfxPrint_SetPos(printer, 1, 26);
+ GfxPrint_SetColor(printer, 100, 100, 100, 255);
+ GfxPrint_Printf(printer, "(Z/R)Stage:");
+ GfxPrint_SetColor(printer, 200, 100, 200, 255);
+ switch (gSaveContext.save.cutsceneIndex) {
+ case 0:
+ gSaveContext.save.time = CLOCK_TIME(12, 0);
+ stageName = "Afternoon";
+ break;
+ case 0x8000:
+ gSaveContext.save.time = CLOCK_TIME(6, 0) + 1;
+ stageName = "Morning";
+ break;
+ case 0x8800:
+ gSaveContext.save.time = CLOCK_TIME(18, 1);
+ stageName = "Night";
+ break;
+ case 0xFFF0:
+ gSaveContext.save.time = CLOCK_TIME(12, 0);
+ stageName = "0";
+ break;
+ case 0xFFF1:
+ stageName = "1";
+ break;
+ case 0xFFF2:
+ stageName = "2";
+ break;
+ case 0xFFF3:
+ stageName = "3";
+ break;
+ case 0xFFF4:
+ stageName = "4";
+ break;
+ case 0xFFF5:
+ stageName = "5";
+ break;
+ case 0xFFF6:
+ stageName = "6";
+ break;
+ case 0xFFF7:
+ stageName = "7";
+ break;
+ case 0xFFF8:
+ stageName = "8";
+ break;
+ case 0xFFF9:
+ stageName = "9";
+ break;
+ case 0xFFFA:
+ stageName = "A";
+ break;
+ default:
+ stageName = "???";
+ break;
+ }
+ GfxPrint_Printf(printer, "%s", stageName);
+};
diff --git a/mm/2s2h/DeveloperTools/BetterMapSelect.h b/mm/2s2h/DeveloperTools/BetterMapSelect.h
new file mode 100644
index 000000000..538d25fd7
--- /dev/null
+++ b/mm/2s2h/DeveloperTools/BetterMapSelect.h
@@ -0,0 +1,11 @@
+#ifndef BETTER_MAP_SELECT_H
+#define BETTER_MAP_SELECT_H
+
+#include "overlays/gamestates/ovl_select/z_select.h"
+#include "gfxprint.h"
+
+void BetterMapSelect_Init(MapSelectState* mapSelectState);
+void BetterMapSelect_PrintMenu(MapSelectState* mapSelectState, GfxPrint* printer);
+void BetterMapSelect_Update(MapSelectState* mapSelectState);
+
+#endif \ No newline at end of file
diff --git a/mm/CMakeLists.txt b/mm/CMakeLists.txt
index 55787a978..9559f4510 100644
--- a/mm/CMakeLists.txt
+++ b/mm/CMakeLists.txt
@@ -138,6 +138,7 @@ endif()
# 2s2h/DeveloperTools {{{
file(GLOB_RECURSE soh__DeveloperTools RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
"2s2h/DeveloperTools/*.h"
+ "2s2h/DeveloperTools/*.c"
"2s2h/DeveloperTools/*.cpp"
)
# }}}
diff --git a/mm/include/tables/scene_table.h b/mm/include/tables/scene_table.h
index ebd8cdb03..f748eddc6 100644
--- a/mm/include/tables/scene_table.h
+++ b/mm/include/tables/scene_table.h
@@ -8,12 +8,14 @@
* - Argument 3: Scene draw config index
* - Argument 4: Restriction flags. See `RESTRICTIONS_SET` on z_parameter.c
* - Argument 5: Persistent cycle flag set: bitwise flags which won't be turned off on a cycle reset (will persist between cycles)
+ * - Argument 6: EntranceSceneId
+ * - Argument 7: Human readable name
*
* DEFINE_SCENE_UNSET is needed to define empty entries from the original game
* - Argument 0: Enum value for this scene
*/
// Southern Swamp (Clear)
-/* 0x00 */ DEFINE_SCENE(Z2_20SICHITAI2, SCENE_20SICHITAI2, 0x116, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10) | (1 << 11), 0, 0, (1 << 30)))
+/* 0x00 */ DEFINE_SCENE(Z2_20SICHITAI2, SCENE_20SICHITAI2, 0x116, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10) | (1 << 11), 0, 0, (1 << 30)), SOUTHERN_SWAMP_CLEARED, "Southern Swamp (Clear)")
/* 0x01 */ DEFINE_SCENE_UNSET(SCENE_UNSET_01)
/* 0x02 */ DEFINE_SCENE_UNSET(SCENE_UNSET_02)
/* 0x03 */ DEFINE_SCENE_UNSET(SCENE_UNSET_03)
@@ -21,209 +23,209 @@
/* 0x05 */ DEFINE_SCENE_UNSET(SCENE_UNSET_05)
/* 0x06 */ DEFINE_SCENE_UNSET(SCENE_UNSET_06)
// Lone Peak Shrine & Grottos
-/* 0x07 */ DEFINE_SCENE(KAKUSIANA, SCENE_KAKUSIANA, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 2) | (1 << 10) | (1 << 11)))
+/* 0x07 */ DEFINE_SCENE(KAKUSIANA, SCENE_KAKUSIANA, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 2) | (1 << 10) | (1 << 11)), GROTTOS, "Lone Peak Shrine & Grottos")
// Cutscene Scene
-/* 0x08 */ DEFINE_SCENE(SPOT00, SCENE_SPOT00, 0, SCENE_DRAW_CFG_NOTHING, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x08 */ DEFINE_SCENE(SPOT00, SCENE_SPOT00, 0, SCENE_DRAW_CFG_NOTHING, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, CUTSCENE, "Cutscene Scene")
/* 0x09 */ DEFINE_SCENE_UNSET(SCENE_UNSET_09)
// Magic Hags' Potion Shop
-/* 0x0A */ DEFINE_SCENE(Z2_WITCH_SHOP, SCENE_WITCH_SHOP, 0x11A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x0A */ DEFINE_SCENE(Z2_WITCH_SHOP, SCENE_WITCH_SHOP, 0x11A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, MAGIC_HAGS_POTION_SHOP, "Magic Hags' Potion Shop")
// Majora's Lair
-/* 0x0B */ DEFINE_SCENE(Z2_LAST_BS, SCENE_LAST_BS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)))
+/* 0x0B */ DEFINE_SCENE(Z2_LAST_BS, SCENE_LAST_BS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)), MAJORAS_LAIR, "Majora's Lair")
// Beneath the Graveyard
-/* 0x0C */ DEFINE_SCENE(Z2_HAKASHITA, SCENE_HAKASHITA, 0x113, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)))
+/* 0x0C */ DEFINE_SCENE(Z2_HAKASHITA, SCENE_HAKASHITA, 0x113, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)), BENEATH_THE_GRAVERYARD, "Beneath the Graveyard")
// Curiosity Shop
-/* 0x0D */ DEFINE_SCENE(Z2_AYASHIISHOP, SCENE_AYASHIISHOP, 0x10E, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x0D */ DEFINE_SCENE(Z2_AYASHIISHOP, SCENE_AYASHIISHOP, 0x10E, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, CURIOSITY_SHOP, "Curiosity Shop")
/* 0x0E */ DEFINE_SCENE_UNSET(SCENE_UNSET_0E)
/* 0x0F */ DEFINE_SCENE_UNSET(SCENE_UNSET_0F)
// Mama's House (Ranch House in PAL) & Barn
-/* 0x10 */ DEFINE_SCENE(Z2_OMOYA, SCENE_OMOYA, 0x132, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x10 */ DEFINE_SCENE(Z2_OMOYA, SCENE_OMOYA, 0x132, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, RANCH_HOUSE, "Mama's House & Barn")
// Honey & Darling's Shop
-/* 0x11 */ DEFINE_SCENE(Z2_BOWLING, SCENE_BOWLING, 0x108, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x11 */ DEFINE_SCENE(Z2_BOWLING, SCENE_BOWLING, 0x108, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, HONEY_AND_DARLINGS_SHOP, "Honey & Darling's Shop")
// The Mayor's Residence
-/* 0x12 */ DEFINE_SCENE(Z2_SONCHONOIE, SCENE_SONCHONOIE, 0x10B, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x12 */ DEFINE_SCENE(Z2_SONCHONOIE, SCENE_SONCHONOIE, 0x10B, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, MAYORS_RESIDENCE, "The Mayor's Residence")
// Ikana Canyon
-/* 0x13 */ DEFINE_SCENE(Z2_IKANA, SCENE_IKANA, 0x141, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 1) | (1 << 30)))
+/* 0x13 */ DEFINE_SCENE(Z2_IKANA, SCENE_IKANA, 0x141, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 1) | (1 << 30)), IKANA_CANYON, "Ikana Canyon")
// Pirates' Fortress
-/* 0x14 */ DEFINE_SCENE(Z2_KAIZOKU, SCENE_KAIZOKU, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x14 */ DEFINE_SCENE(Z2_KAIZOKU, SCENE_KAIZOKU, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, PIRATES_FORTRESS, "Pirates' Fortress")
// Milk Bar
-/* 0x15 */ DEFINE_SCENE(Z2_MILK_BAR, SCENE_MILK_BAR, 0x10C, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x15 */ DEFINE_SCENE(Z2_MILK_BAR, SCENE_MILK_BAR, 0x10C, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, MILK_BAR, "Milk Bar")
// Stone Tower Temple
-/* 0x16 */ DEFINE_SCENE(Z2_INISIE_N, SCENE_INISIE_N, 0x144, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 26), 0, 0, 0))
+/* 0x16 */ DEFINE_SCENE(Z2_INISIE_N, SCENE_INISIE_N, 0x144, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 26), 0, 0, 0), STONE_TOWER_TEMPLE, "Stone Tower Temple")
// Treasure Chest Shop
-/* 0x17 */ DEFINE_SCENE(Z2_TAKARAYA, SCENE_TAKARAYA, 0x109, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_SET(2, 0, 0, 0))
+/* 0x17 */ DEFINE_SCENE(Z2_TAKARAYA, SCENE_TAKARAYA, 0x109, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_SET(2, 0, 0, 0), TREASURE_CHEST_SHOP, "Treasure Chest Shop")
// Inverted Stone Tower Temple
-/* 0x18 */ DEFINE_SCENE(Z2_INISIE_R, SCENE_INISIE_R, 0x144, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 26), 0, 0, 0))
+/* 0x18 */ DEFINE_SCENE(Z2_INISIE_R, SCENE_INISIE_R, 0x144, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 26), 0, 0, 0), STONE_TOWER_TEMPLE_INVERTED, "Inverted Stone Tower Temple")
// Clock Tower Rooftop
-/* 0x19 */ DEFINE_SCENE(Z2_OKUJOU, SCENE_OKUJOU, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x19 */ DEFINE_SCENE(Z2_OKUJOU, SCENE_OKUJOU, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, CLOCK_TOWER_ROOFTOP, "Clock Tower Rooftop")
// Before Clock Town
-/* 0x1A */ DEFINE_SCENE(Z2_OPENINGDAN, SCENE_OPENINGDAN, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3), 0, 0, 0))
+/* 0x1A */ DEFINE_SCENE(Z2_OPENINGDAN, SCENE_OPENINGDAN, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3), 0, 0, 0), OPENING_DUNGEON, "Before Clock Town")
// Woodfall Temple
-/* 0x1B */ DEFINE_SCENE(Z2_MITURIN, SCENE_MITURIN, 0x11F, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 12) | (1 << 13) | (1 << 15) | (1 << 20) | (1 << 21) | (1 << 22), 0, 0, 0))
+/* 0x1B */ DEFINE_SCENE(Z2_MITURIN, SCENE_MITURIN, 0x11F, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 12) | (1 << 13) | (1 << 15) | (1 << 20) | (1 << 21) | (1 << 22), 0, 0, 0), WOODFALL_TEMPLE, "Woodfall Temple")
// Path to Mountain Village
-/* 0x1C */ DEFINE_SCENE(Z2_13HUBUKINOMITI, SCENE_13HUBUKINOMITI, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x1C */ DEFINE_SCENE(Z2_13HUBUKINOMITI, SCENE_13HUBUKINOMITI, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, PATH_TO_MOUNTAIN_VILLAGE, "Path to Mountain Village")
// Ancient Castle of Ikana
-/* 0x1D */ DEFINE_SCENE(Z2_CASTLE, SCENE_CASTLE, 0x142, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, (1 << 31), 0, (1 << 10)))
+/* 0x1D */ DEFINE_SCENE(Z2_CASTLE, SCENE_CASTLE, 0x142, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, (1 << 31), 0, (1 << 10)), IKANA_CASTLE, "Ancient Castle of Ikana")
// Deku Scrub Playground
-/* 0x1E */ DEFINE_SCENE(Z2_DEKUTES, SCENE_DEKUTES, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x1E */ DEFINE_SCENE(Z2_DEKUTES, SCENE_DEKUTES, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE, DEKU_SCRUB_PLAYGROUND, "Deku Scrub Playground")
// Odolwa's Lair
-/* 0x1F */ DEFINE_SCENE(Z2_MITURIN_BS, SCENE_MITURIN_BS, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)))
+/* 0x1F */ DEFINE_SCENE(Z2_MITURIN_BS, SCENE_MITURIN_BS, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)), ODOLWAS_LAIR, "Odolwa's Lair")
// Town Shooting Gallery
-/* 0x20 */ DEFINE_SCENE(Z2_SYATEKI_MIZU, SCENE_SYATEKI_MIZU, 0x107, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x20 */ DEFINE_SCENE(Z2_SYATEKI_MIZU, SCENE_SYATEKI_MIZU, 0x107, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, TOWN_SHOOTING_GALLERY, "Town Shooting Gallery")
// Snowhead Temple
-/* 0x21 */ DEFINE_SCENE(Z2_HAKUGIN, SCENE_HAKUGIN, 0x12B, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 5) | (1 << 21) | (1 << 23) | (1 << 24), 0, 0, 0))
+/* 0x21 */ DEFINE_SCENE(Z2_HAKUGIN, SCENE_HAKUGIN, 0x12B, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 5) | (1 << 21) | (1 << 23) | (1 << 24), 0, 0, 0), SNOWHEAD_TEMPLE, "Snowhead Temple")
// Milk Road
-/* 0x22 */ DEFINE_SCENE(Z2_ROMANYMAE, SCENE_ROMANYMAE, 0x149, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0))
+/* 0x22 */ DEFINE_SCENE(Z2_ROMANYMAE, SCENE_ROMANYMAE, 0x149, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0), MILK_ROAD, "Milk Road")
// Pirates' Fortress Interior
-/* 0x23 */ DEFINE_SCENE(Z2_PIRATE, SCENE_PIRATE, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 12)))
+/* 0x23 */ DEFINE_SCENE(Z2_PIRATE, SCENE_PIRATE, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 12)), PIRATES_FORTRESS_INTERIOR, "Pirates' Fortress Interior")
// Swamp Shooting Gallery
-/* 0x24 */ DEFINE_SCENE(Z2_SYATEKI_MORI, SCENE_SYATEKI_MORI, 0x11B, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x24 */ DEFINE_SCENE(Z2_SYATEKI_MORI, SCENE_SYATEKI_MORI, 0x11B, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, SWAMP_SHOOTING_GALLERY, "Swamp Shooting Gallery")
// Pinnacle Rock
-/* 0x25 */ DEFINE_SCENE(Z2_SINKAI, SCENE_SINKAI, 0x135, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2))
+/* 0x25 */ DEFINE_SCENE(Z2_SINKAI, SCENE_SINKAI, 0x135, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2), PINNACLE_ROCK, "Pinnacle Rock")
// Fairy's Fountain
-/* 0x26 */ DEFINE_SCENE(Z2_YOUSEI_IZUMI, SCENE_YOUSEI_IZUMI, 0x13E, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0))
+/* 0x26 */ DEFINE_SCENE(Z2_YOUSEI_IZUMI, SCENE_YOUSEI_IZUMI, 0x13E, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0), FAIRY_FOUNTAIN, "Fairy's Fountain")
// Swamp Spider House
-/* 0x27 */ DEFINE_SCENE(Z2_KINSTA1, SCENE_KINSTA1, 0x11E, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x27 */ DEFINE_SCENE(Z2_KINSTA1, SCENE_KINSTA1, 0x11E, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE, SWAMP_SPIDER_HOUSE, "Swamp Spider House")
// Oceanside Spider House
-/* 0x28 */ DEFINE_SCENE(Z2_KINDAN2, SCENE_KINDAN2, 0x13F, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)))
+/* 0x28 */ DEFINE_SCENE(Z2_KINDAN2, SCENE_KINDAN2, 0x13F, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)), OCEANSIDE_SPIDER_HOUSE, "Oceanside Spider House")
// Astral Observatory
-/* 0x29 */ DEFINE_SCENE(Z2_TENMON_DAI, SCENE_TENMON_DAI, 0x114, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x29 */ DEFINE_SCENE(Z2_TENMON_DAI, SCENE_TENMON_DAI, 0x114, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, ASTRAL_OBSERVATORY, "Astral Observatory")
// Moon Deku Trial
-/* 0x2A */ DEFINE_SCENE(Z2_LAST_DEKU, SCENE_LAST_DEKU, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2))
+/* 0x2A */ DEFINE_SCENE(Z2_LAST_DEKU, SCENE_LAST_DEKU, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2), MOON_DEKU_TRIAL, "Moon Deku Trial")
// Deku Palace
-/* 0x2B */ DEFINE_SCENE(Z2_22DEKUCITY, SCENE_22DEKUCITY, 0x118, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30)))
+/* 0x2B */ DEFINE_SCENE(Z2_22DEKUCITY, SCENE_22DEKUCITY, 0x118, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30)), DEKU_PALACE, "Deku Palace")
// Mountain Smithy
-/* 0x2C */ DEFINE_SCENE(Z2_KAJIYA, SCENE_KAJIYA, 0x127, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x2C */ DEFINE_SCENE(Z2_KAJIYA, SCENE_KAJIYA, 0x127, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, MOUNTAIN_SMITHY, "Mountain Smithy")
// Termina Field
-/* 0x2D */ DEFINE_SCENE(Z2_00KEIKOKU, SCENE_00KEIKOKU, 0x100, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 4), 0, 0, 0))
+/* 0x2D */ DEFINE_SCENE(Z2_00KEIKOKU, SCENE_00KEIKOKU, 0x100, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 4), 0, 0, 0), TERMINA_FIELD, "Termina Field")
// Post Office
-/* 0x2E */ DEFINE_SCENE(Z2_POSTHOUSE, SCENE_POSTHOUSE, 0x111, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_SET(3, 0, 0, 0))
+/* 0x2E */ DEFINE_SCENE(Z2_POSTHOUSE, SCENE_POSTHOUSE, 0x111, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_SET(3, 0, 0, 0), POST_OFFICE, "Post Office")
// Marine Research Lab
-/* 0x2F */ DEFINE_SCENE(Z2_LABO, SCENE_LABO, 0x13A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x2F */ DEFINE_SCENE(Z2_LABO, SCENE_LABO, 0x13A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE, MARINE_RESEARCH_LAB, "Marine Research Lab")
// Beneath the Graveyard (Day 3) and Dampe's House
-/* 0x30 */ DEFINE_SCENE(Z2_DANPEI2TEST, SCENE_DANPEI2TEST, 0x113, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)))
+/* 0x30 */ DEFINE_SCENE(Z2_DANPEI2TEST, SCENE_DANPEI2TEST, 0x113, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)), DAMPES_HOUSE, "Beneath Graveyard and Dampe's House")
/* 0x31 */ DEFINE_SCENE_UNSET(SCENE_UNSET_31)
// Goron Shrine
-/* 0x32 */ DEFINE_SCENE(Z2_16GORON_HOUSE, SCENE_16GORON_HOUSE, 0x124, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x32 */ DEFINE_SCENE(Z2_16GORON_HOUSE, SCENE_16GORON_HOUSE, 0x124, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, GORON_SHRINE, "Goron Shrine")
// Zora Hall
-/* 0x33 */ DEFINE_SCENE(Z2_33ZORACITY, SCENE_33ZORACITY, 0x136, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x33 */ DEFINE_SCENE(Z2_33ZORACITY, SCENE_33ZORACITY, 0x136, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, ZORA_HALL, "Zora Hall")
// Trading Post
-/* 0x34 */ DEFINE_SCENE(Z2_8ITEMSHOP, SCENE_8ITEMSHOP, 0x10F, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x34 */ DEFINE_SCENE(Z2_8ITEMSHOP, SCENE_8ITEMSHOP, 0x10F, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE, TRADING_POST, "Trading Post")
// Romani Ranch
-/* 0x35 */ DEFINE_SCENE(Z2_F01, SCENE_F01, 0x12E, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x35 */ DEFINE_SCENE(Z2_F01, SCENE_F01, 0x12E, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, ROMANI_RANCH, "Romani Ranch")
// Twinmold's Lair
-/* 0x36 */ DEFINE_SCENE(Z2_INISIE_BS, SCENE_INISIE_BS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)))
+/* 0x36 */ DEFINE_SCENE(Z2_INISIE_BS, SCENE_INISIE_BS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)), TWINMOLDS_LAIR, "Twinmold's Lair")
// Great Bay Coast
-/* 0x37 */ DEFINE_SCENE(Z2_30GYOSON, SCENE_30GYOSON, 0x134, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10) | (1 << 20), 0, 0, (1 << 1) | (1 << 5)))
+/* 0x37 */ DEFINE_SCENE(Z2_30GYOSON, SCENE_30GYOSON, 0x134, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10) | (1 << 20), 0, 0, (1 << 1) | (1 << 5)), GREAT_BAY_COAST, "Great Bay Coast")
// Zora Cape
-/* 0x38 */ DEFINE_SCENE(Z2_31MISAKI, SCENE_31MISAKI, 0x134, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, (1 << 7)))
+/* 0x38 */ DEFINE_SCENE(Z2_31MISAKI, SCENE_31MISAKI, 0x134, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, (1 << 7)), ZORA_CAPE, "Zora Cape")
// Lottery Shop
-/* 0x39 */ DEFINE_SCENE(Z2_TAKARAKUJI, SCENE_TAKARAKUJI, 0x112, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x39 */ DEFINE_SCENE(Z2_TAKARAKUJI, SCENE_TAKARAKUJI, 0x112, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE, LOTTERY_SHOP, "Lottery Shop")
/* 0x3A */ DEFINE_SCENE_UNSET(SCENE_UNSET_3A)
// Pirates' Fortress Moat
-/* 0x3B */ DEFINE_SCENE(Z2_TORIDE, SCENE_TORIDE, 0x138, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0))
+/* 0x3B */ DEFINE_SCENE(Z2_TORIDE, SCENE_TORIDE, 0x138, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0), PIRATES_FORTRESS_EXTERIOR, "Pirates' Fortress Moat")
// Fisherman's Hut
-/* 0x3C */ DEFINE_SCENE(Z2_FISHERMAN, SCENE_FISHERMAN, 0x13B, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x3C */ DEFINE_SCENE(Z2_FISHERMAN, SCENE_FISHERMAN, 0x13B, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE, FISHERMANS_HUT, "Fisherman's Hut")
// Goron Shop
-/* 0x3D */ DEFINE_SCENE(Z2_GORONSHOP, SCENE_GORONSHOP, 0x129, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x3D */ DEFINE_SCENE(Z2_GORONSHOP, SCENE_GORONSHOP, 0x129, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, GORON_SHOP, "Goron Shop")
// Deku King's Chamber
-/* 0x3E */ DEFINE_SCENE(Z2_DEKU_KING, SCENE_DEKU_KING, 0x11C, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x3E */ DEFINE_SCENE(Z2_DEKU_KING, SCENE_DEKU_KING, 0x11C, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, DEKU_KINGS_CHAMBER, "Deku King's Chamber")
// Moon Goron Trial
-/* 0x3F */ DEFINE_SCENE(Z2_LAST_GORON, SCENE_LAST_GORON, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2))
+/* 0x3F */ DEFINE_SCENE(Z2_LAST_GORON, SCENE_LAST_GORON, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2), MOON_GORON_TRIAL, "Moon Goron Trial")
// Road to Southern Swamp
-/* 0x40 */ DEFINE_SCENE(Z2_24KEMONOMITI, SCENE_24KEMONOMITI, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 1) | (1 << 31)))
+/* 0x40 */ DEFINE_SCENE(Z2_24KEMONOMITI, SCENE_24KEMONOMITI, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 1) | (1 << 31)), ROAD_TO_SOUTHERN_SWAMP, "Road to Southern Swamp")
// Doggy Racetrack
-/* 0x41 */ DEFINE_SCENE(Z2_F01_B, SCENE_F01_B, 0x130, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x41 */ DEFINE_SCENE(Z2_F01_B, SCENE_F01_B, 0x130, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE, DOGGY_RACETRACK, "Doggy Racetrack")
// Cucco Shack
-/* 0x42 */ DEFINE_SCENE(Z2_F01C, SCENE_F01C, 0x12F, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x42 */ DEFINE_SCENE(Z2_F01C, SCENE_F01C, 0x12F, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE, CUCCO_SHACK, "Cucco Shack")
// Ikana Graveyard
-/* 0x43 */ DEFINE_SCENE(Z2_BOTI, SCENE_BOTI, 0x106, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x43 */ DEFINE_SCENE(Z2_BOTI, SCENE_BOTI, 0x106, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, IKANA_GRAVEYARD, "Ikana Graveyard")
// Goht's Lair
-/* 0x44 */ DEFINE_SCENE(Z2_HAKUGIN_BS, SCENE_HAKUGIN_BS, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)))
+/* 0x44 */ DEFINE_SCENE(Z2_HAKUGIN_BS, SCENE_HAKUGIN_BS, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)), GOHTS_LAIR, "Goht's Lair")
// Southern Swamp (poison)
-/* 0x45 */ DEFINE_SCENE(Z2_20SICHITAI, SCENE_20SICHITAI, 0x116, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10) | (1 << 11), 0, 0, (1 << 30)))
+/* 0x45 */ DEFINE_SCENE(Z2_20SICHITAI, SCENE_20SICHITAI, 0x116, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10) | (1 << 11), 0, 0, (1 << 30)), SOUTHERN_SWAMP_POISONED, "Southern Swamp (poison)")
// Woodfall
-/* 0x46 */ DEFINE_SCENE(Z2_21MITURINMAE, SCENE_21MITURINMAE, 0x117, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0x102, 0, 0, (1 << 10)))
+/* 0x46 */ DEFINE_SCENE(Z2_21MITURINMAE, SCENE_21MITURINMAE, 0x117, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0x102, 0, 0, (1 << 10)), WOODFALL, "Woodfall")
// Moon Zora Trial
-/* 0x47 */ DEFINE_SCENE(Z2_LAST_ZORA, SCENE_LAST_ZORA, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2))
+/* 0x47 */ DEFINE_SCENE(Z2_LAST_ZORA, SCENE_LAST_ZORA, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2), MOON_ZORA_TRIAL, "Moon Zora Trial")
// Goron Village (spring)
-/* 0x48 */ DEFINE_SCENE(Z2_11GORONNOSATO2, SCENE_11GORONNOSATO2, 0x123, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30)))
+/* 0x48 */ DEFINE_SCENE(Z2_11GORONNOSATO2, SCENE_11GORONNOSATO2, 0x123, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30)), GORON_VILLAGE_SPRING, "Goron Village (spring)")
// Great Bay Temple
-/* 0x49 */ DEFINE_SCENE(Z2_SEA, SCENE_SEA, 0x13D, SCENE_DRAW_CFG_GREAT_BAY_TEMPLE, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 4) | (1 << 5) | (1 << 6), 0, 0, 0))
+/* 0x49 */ DEFINE_SCENE(Z2_SEA, SCENE_SEA, 0x13D, SCENE_DRAW_CFG_GREAT_BAY_TEMPLE, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 4) | (1 << 5) | (1 << 6), 0, 0, 0), GREAT_BAY_TEMPLE, "Great Bay Temple")
// Waterfall Rapids
-/* 0x4A */ DEFINE_SCENE(Z2_35TAKI, SCENE_35TAKI, 0x137, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x4A */ DEFINE_SCENE(Z2_35TAKI, SCENE_35TAKI, 0x137, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, WATERFALL_RAPIDS, "Waterfall Rapids")
// Beneath the Well
-/* 0x4B */ DEFINE_SCENE(Z2_REDEAD, SCENE_REDEAD, 0x145, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x4B */ DEFINE_SCENE(Z2_REDEAD, SCENE_REDEAD, 0x145, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, BENEATH_THE_WELL, "Beneath the Well")
// Zora Hall Rooms
-/* 0x4C */ DEFINE_SCENE(Z2_BANDROOM, SCENE_BANDROOM, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30)))
+/* 0x4C */ DEFINE_SCENE(Z2_BANDROOM, SCENE_BANDROOM, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30)), ZORA_HALL_ROOMS, "Zora Hall Rooms")
// Goron Village (winter)
-/* 0x4D */ DEFINE_SCENE(Z2_11GORONNOSATO, SCENE_11GORONNOSATO, 0x123, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30)))
+/* 0x4D */ DEFINE_SCENE(Z2_11GORONNOSATO, SCENE_11GORONNOSATO, 0x123, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30)), GORON_VILLAGE_WINTER, "Goron Village (winter)")
// Goron Graveyard
-/* 0x4E */ DEFINE_SCENE(Z2_GORON_HAKA, SCENE_GORON_HAKA, 0x12A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x4E */ DEFINE_SCENE(Z2_GORON_HAKA, SCENE_GORON_HAKA, 0x12A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, GORON_GRAVERYARD, "Goron Graveyard")
// Sakon's Hideout
-/* 0x4F */ DEFINE_SCENE(Z2_SECOM, SCENE_SECOM, 0x143, SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x4F */ DEFINE_SCENE(Z2_SECOM, SCENE_SECOM, 0x143, SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, SAKONS_HIDEOUT, "Sakon's Hideout")
// Mountain Village (winter)
-/* 0x50 */ DEFINE_SCENE(Z2_10YUKIYAMANOMURA, SCENE_10YUKIYAMANOMURA, 0x122, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 31)))
+/* 0x50 */ DEFINE_SCENE(Z2_10YUKIYAMANOMURA, SCENE_10YUKIYAMANOMURA, 0x122, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 31)), MOUNTAIN_VILLAGE_WINTER, "Mountain Village (winter)")
// Ghost Hut
-/* 0x51 */ DEFINE_SCENE(Z2_TOUGITES, SCENE_TOUGITES, 0x146, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x51 */ DEFINE_SCENE(Z2_TOUGITES, SCENE_TOUGITES, 0x146, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, GHOST_HUT, "Ghost Hut")
// Deku Shrine
-/* 0x52 */ DEFINE_SCENE(Z2_DANPEI, SCENE_DANPEI, 0x120, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x52 */ DEFINE_SCENE(Z2_DANPEI, SCENE_DANPEI, 0x120, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE, DEKU_SHRINE, "Deku Shrine")
// Road to Ikana
-/* 0x53 */ DEFINE_SCENE(Z2_IKANAMAE, SCENE_IKANAMAE, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x53 */ DEFINE_SCENE(Z2_IKANAMAE, SCENE_IKANAMAE, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, ROAD_TO_IKANA, "Road to Ikana")
// Swordsman's School
-/* 0x54 */ DEFINE_SCENE(Z2_DOUJOU, SCENE_DOUJOU, 0x110, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x54 */ DEFINE_SCENE(Z2_DOUJOU, SCENE_DOUJOU, 0x110, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE, SWORDMANS_SCHOOL, "Swordsman's School")
// Music Box House
-/* 0x55 */ DEFINE_SCENE(Z2_MUSICHOUSE, SCENE_MUSICHOUSE, 0x147, SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x55 */ DEFINE_SCENE(Z2_MUSICHOUSE, SCENE_MUSICHOUSE, 0x147, SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, MUSIC_BOX_HOUSE, "Music Box House")
// Igos du Ikana's Lair
-/* 0x56 */ DEFINE_SCENE(Z2_IKNINSIDE, SCENE_IKNINSIDE, 0x142, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x56 */ DEFINE_SCENE(Z2_IKNINSIDE, SCENE_IKNINSIDE, 0x142, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE, IGOS_DU_IKANAS_LAIR, "Igos du Ikana's Lair")
// Tourist Information
-/* 0x57 */ DEFINE_SCENE(Z2_MAP_SHOP, SCENE_MAP_SHOP, 0x119, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x57 */ DEFINE_SCENE(Z2_MAP_SHOP, SCENE_MAP_SHOP, 0x119, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, TOURIST_INFORMATION, "Tourist Information")
// Stone Tower
-/* 0x58 */ DEFINE_SCENE(Z2_F40, SCENE_F40, 0x140, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0))
+/* 0x58 */ DEFINE_SCENE(Z2_F40, SCENE_F40, 0x140, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0), STONE_TOWER, "Stone Tower")
// Inverted Stone Tower
-/* 0x59 */ DEFINE_SCENE(Z2_F41, SCENE_F41, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0))
+/* 0x59 */ DEFINE_SCENE(Z2_F41, SCENE_F41, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0), STONE_TOWER_INVERTED, "Inverted Stone Tower")
// Mountain Village (spring)
-/* 0x5A */ DEFINE_SCENE(Z2_10YUKIYAMANOMURA2, SCENE_10YUKIYAMANOMURA2, 0x122, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 31)))
+/* 0x5A */ DEFINE_SCENE(Z2_10YUKIYAMANOMURA2, SCENE_10YUKIYAMANOMURA2, 0x122, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 31)), MOUNTAIN_VILLAGE_SPRING, "Mountain Village (spring)")
// Path to Snowhead
-/* 0x5B */ DEFINE_SCENE(Z2_14YUKIDAMANOMITI, SCENE_14YUKIDAMANOMITI, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 8)))
+/* 0x5B */ DEFINE_SCENE(Z2_14YUKIDAMANOMITI, SCENE_14YUKIDAMANOMITI, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 8)), PATH_TO_SNOWHEAD, "Path to Snowhead")
// Snowhead
-/* 0x5C */ DEFINE_SCENE(Z2_12HAKUGINMAE, SCENE_12HAKUGINMAE, 0x125, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0))
+/* 0x5C */ DEFINE_SCENE(Z2_12HAKUGINMAE, SCENE_12HAKUGINMAE, 0x125, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0), SNOWHEAD, "Snowhead")
// Path to Goron Village (winter)
-/* 0x5D */ DEFINE_SCENE(Z2_17SETUGEN, SCENE_17SETUGEN, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 7)))
+/* 0x5D */ DEFINE_SCENE(Z2_17SETUGEN, SCENE_17SETUGEN, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 7)), PATH_TO_GORON_VILLAGE_WINTER, "Path to Goron Village (winter)")
// Path to Goron Village (spring)
-/* 0x5E */ DEFINE_SCENE(Z2_17SETUGEN2, SCENE_17SETUGEN2, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 7)))
+/* 0x5E */ DEFINE_SCENE(Z2_17SETUGEN2, SCENE_17SETUGEN2, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 7)), PATH_TO_GORON_VILLAGE_SPRING, "Path to Goron Village (spring)")
// Gyorg's Lair
-/* 0x5F */ DEFINE_SCENE(Z2_SEA_BS, SCENE_SEA_BS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)))
+/* 0x5F */ DEFINE_SCENE(Z2_SEA_BS, SCENE_SEA_BS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31)), GYORGS_LAIR, "Gyorg's Lair")
// Secret Shrine
-/* 0x60 */ DEFINE_SCENE(Z2_RANDOM, SCENE_RANDOM, 0x12C, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 10)))
+/* 0x60 */ DEFINE_SCENE(Z2_RANDOM, SCENE_RANDOM, 0x12C, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 10)), SECRET_SHRINE, "Secret Shrine")
// Stock Pot Inn
-/* 0x61 */ DEFINE_SCENE(Z2_YADOYA, SCENE_YADOYA, 0x10A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x61 */ DEFINE_SCENE(Z2_YADOYA, SCENE_YADOYA, 0x10A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, STOCK_POT_INN, "Stock Pot Inn")
// Great Bay Cutscene
-/* 0x62 */ DEFINE_SCENE(Z2_KONPEKI_ENT, SCENE_KONPEKI_ENT, 0x139, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x62 */ DEFINE_SCENE(Z2_KONPEKI_ENT, SCENE_KONPEKI_ENT, 0x139, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, GREAT_BAY_CUTSCENE, "Great Bay Cutscene")
// Clock Tower Interior
-/* 0x63 */ DEFINE_SCENE(Z2_INSIDETOWER, SCENE_INSIDETOWER, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_SET(1 << 0, 0, 0, 0))
+/* 0x63 */ DEFINE_SCENE(Z2_INSIDETOWER, SCENE_INSIDETOWER, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_SET(1 << 0, 0, 0, 0), CLOCK_TOWER_INTERIOR, "Clock Tower Interior")
// Woods of Mystery
-/* 0x64 */ DEFINE_SCENE(Z2_26SARUNOMORI, SCENE_26SARUNOMORI, 0x11D, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x64 */ DEFINE_SCENE(Z2_26SARUNOMORI, SCENE_26SARUNOMORI, 0x11D, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE, WOODS_OF_MYSTERY, "Woods of Mystery")
// Lost Woods (Intro)
-/* 0x65 */ DEFINE_SCENE(Z2_LOST_WOODS, SCENE_LOST_WOODS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x65 */ DEFINE_SCENE(Z2_LOST_WOODS, SCENE_LOST_WOODS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, LOST_WOODS, "Lost Woods (Intro)")
// Moon Link Trial
-/* 0x66 */ DEFINE_SCENE(Z2_LAST_LINK, SCENE_LAST_LINK, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2))
+/* 0x66 */ DEFINE_SCENE(Z2_LAST_LINK, SCENE_LAST_LINK, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2), MOON_LINK_TRIAL, "Moon Link Trial")
// The Moon
-/* 0x67 */ DEFINE_SCENE(Z2_SOUGEN, SCENE_SOUGEN, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x67 */ DEFINE_SCENE(Z2_SOUGEN, SCENE_SOUGEN, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_NONE, THE_MOON, "The Moon")
// Bomb Shop
-/* 0x68 */ DEFINE_SCENE(Z2_BOMYA, SCENE_BOMYA, 0x10D, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x68 */ DEFINE_SCENE(Z2_BOMYA, SCENE_BOMYA, 0x10D, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE, BOMB_SHOP, "Bomb Shop")
// Giants' Chamber
-/* 0x69 */ DEFINE_SCENE(Z2_KYOJINNOMA, SCENE_KYOJINNOMA, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x69 */ DEFINE_SCENE(Z2_KYOJINNOMA, SCENE_KYOJINNOMA, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, GIANTS_CHAMBER, "Giants' Chamber")
// Gorman Track
-/* 0x6A */ DEFINE_SCENE(Z2_KOEPONARACE, SCENE_KOEPONARACE, 0x131, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x6A */ DEFINE_SCENE(Z2_KOEPONARACE, SCENE_KOEPONARACE, 0x131, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE, GORMAN_TRACK, "Gorman Track")
// Goron Racetrack
-/* 0x6B */ DEFINE_SCENE(Z2_GORONRACE, SCENE_GORONRACE, 0x126, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x6B */ DEFINE_SCENE(Z2_GORONRACE, SCENE_GORONRACE, 0x126, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, GORON_RACETRACK, "Goron Racetrack")
// East Clock Town
-/* 0x6C */ DEFINE_SCENE(Z2_TOWN, SCENE_TOWN, 0x101, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(1, 0, 0, 0))
+/* 0x6C */ DEFINE_SCENE(Z2_TOWN, SCENE_TOWN, 0x101, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(1, 0, 0, 0), EAST_CLOCK_TOWN, "East Clock Town")
// West Clock Town
-/* 0x6D */ DEFINE_SCENE(Z2_ICHIBA, SCENE_ICHIBA, 0x102, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE)
+/* 0x6D */ DEFINE_SCENE(Z2_ICHIBA, SCENE_ICHIBA, 0x102, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE, WEST_CLOCK_TOWN, "West Clock Town")
// North Clock Town
-/* 0x6E */ DEFINE_SCENE(Z2_BACKTOWN, SCENE_BACKTOWN, 0x103, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 10)))
+/* 0x6E */ DEFINE_SCENE(Z2_BACKTOWN, SCENE_BACKTOWN, 0x103, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 10)), NORTH_CLOCK_TOWN, "North Clock Town")
// South Clock Town
-/* 0x6F */ DEFINE_SCENE(Z2_CLOCKTOWER, SCENE_CLOCKTOWER, 0x104, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 10)))
+/* 0x6F */ DEFINE_SCENE(Z2_CLOCKTOWER, SCENE_CLOCKTOWER, 0x104, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 10)), SOUTH_CLOCK_TOWN, "South Clock Town")
// Laundry Pool
-/* 0x70 */ DEFINE_SCENE(Z2_ALLEY, SCENE_ALLEY, 0x105, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 1, 0))
+/* 0x70 */ DEFINE_SCENE(Z2_ALLEY, SCENE_ALLEY, 0x105, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 1, 0), LAUNDRY_POOL, "Laundry Pool")
diff --git a/mm/include/z64scene.h b/mm/include/z64scene.h
index 3fac5d349..462edfd24 100644
--- a/mm/include/z64scene.h
+++ b/mm/include/z64scene.h
@@ -620,7 +620,7 @@ typedef enum {
/* 6 */ TINGLE_MAP_MAX
} TingleMapId;
-#define DEFINE_SCENE(_name, enumValue, _textId, _drawConfig, _restrictionFlags, _persistentCycleFlags) enumValue,
+#define DEFINE_SCENE(_name, enumValue, _textId, _drawConfig, _restrictionFlags, _persistentCycleFlags, _entranceSceneId, _humanName) enumValue,
#define DEFINE_SCENE_UNSET(enumValue) enumValue,
typedef enum SceneId {
diff --git a/mm/src/code/z_parameter.c b/mm/src/code/z_parameter.c
index 590a6bcdf..ee40cc0ec 100644
--- a/mm/src/code/z_parameter.c
+++ b/mm/src/code/z_parameter.c
@@ -127,7 +127,7 @@ Input sPostmanTimerInput[MAXCONTROLLERS];
#define RESTRICTIONS_MOON RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0)
#define RESTRICTIONS_NO_DOUBLE_TIME RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0)
-#define DEFINE_SCENE(_name, enumValue, _textId, _drawConfig, restrictionFlags, _persistentCycleFlags) \
+#define DEFINE_SCENE(_name, enumValue, _textId, _drawConfig, restrictionFlags, _persistentCycleFlags, _entranceSceneId, _humanName) \
{ enumValue, restrictionFlags },
#define DEFINE_SCENE_UNSET(enumValue) { enumValue, RESTRICTIONS_NONE },
diff --git a/mm/src/code/z_scene_table.c b/mm/src/code/z_scene_table.c
index 33f6e862a..0d37621df 100644
--- a/mm/src/code/z_scene_table.c
+++ b/mm/src/code/z_scene_table.c
@@ -13,7 +13,7 @@
#endif
-#define DEFINE_SCENE(name, _enumValue, textId, drawConfig, _restrictionFlags, _persistentCycleFlags) \
+#define DEFINE_SCENE(name, _enumValue, textId, drawConfig, _restrictionFlags, _persistentCycleFlags, _entranceSceneId, _humanName) \
{ { 0, 0, #name }, textId, 0, drawConfig, 0, 0 },
#define DEFINE_SCENE_UNSET(_enumValue) { 0 },
diff --git a/mm/src/code/z_sram_NES.c b/mm/src/code/z_sram_NES.c
index 4e2cae8ac..ec24524a5 100644
--- a/mm/src/code/z_sram_NES.c
+++ b/mm/src/code/z_sram_NES.c
@@ -22,7 +22,7 @@ typedef struct PersistentCycleSceneFlags {
#define PERSISTENT_CYCLE_FLAGS_SET(switch0, switch1, chest, collectible) { switch0, switch1, chest, collectible },
#define PERSISTENT_CYCLE_FLAGS_NONE PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 0)
-#define DEFINE_SCENE(_name, _enumValue, _textId, _drawConfig, _restrictionFlags, persistentCycleFlags) \
+#define DEFINE_SCENE(_name, _enumValue, _textId, _drawConfig, _restrictionFlags, persistentCycleFlags, _entranceSceneId, _humanName) \
persistentCycleFlags
#define DEFINE_SCENE_UNSET(_enumValue) PERSISTENT_CYCLE_FLAGS_NONE
diff --git a/mm/src/overlays/gamestates/ovl_select/z_select.c b/mm/src/overlays/gamestates/ovl_select/z_select.c
index 3f4d2c9c8..44791a822 100644
--- a/mm/src/overlays/gamestates/ovl_select/z_select.c
+++ b/mm/src/overlays/gamestates/ovl_select/z_select.c
@@ -9,17 +9,12 @@
#include "z64view.h"
#include "libc/alloca.h"
#include "overlays/gamestates/ovl_title/z_title.h"
-#include "overlays/gamestates/ovl_file_choose/z_file_select.h"
+#include "libultraship/libultraship.h"
+#include "2s2h/DeveloperTools/BetterMapSelect.h"
void MapSelect_LoadConsoleLogo(MapSelectState* this) {
STOP_GAMESTATE(&this->state);
SET_NEXT_GAMESTATE(&this->state, ConsoleLogo_Init, sizeof(ConsoleLogoState));
-
-}
-
-void MapSelect_LoadFileSelect(MapSelectState* this) {
- STOP_GAMESTATE(&this->state);
- SET_NEXT_GAMESTATE(&this->state, FileSelect_Init, sizeof(FileSelectState));
}
void MapSelect_LoadGame(MapSelectState* this, u32 entrance, s32 spawn) {
@@ -65,8 +60,7 @@ void MapSelect_LoadGame(MapSelectState* this, u32 entrance, s32 spawn) {
}
// "Translation" (Actual name)
-#ifdef Z_SELECT_JP
-static SceneSelectEntry sScenes[] = {
+SceneSelectEntry sScenes[] = {
// "0: OP Woods for Cutscene Use" (Forest Opening Scene)
{ " 0:OP" GFXP_KATAKANA "デモ" GFXP_HIRAGANA "ヨウ シンリン", MapSelect_LoadGame, ENTRANCE(CUTSCENE, 0) },
@@ -506,448 +500,6 @@ static SceneSelectEntry sScenes[] = {
// "Title" (Title Screen)
{ "title", (void*)MapSelect_LoadConsoleLogo, 0 },
};
-#else
-static SceneSelectEntry sScenes[] = {
-
- // "55: Laundry Area" (Laundry Pool)
- { " 55: Laundry Pool", MapSelect_LoadGame, ENTRANCE(LAUNDRY_POOL, 0) },
- // "11-1: Goron Shrine" (Goron Shrine)
- { " 11-1: Goron Shrine", MapSelect_LoadGame, ENTRANCE(GORON_SHRINE, 0) },
- // "1-0: Astral Observatory" (Astral Observatory)
- { " 1-0: Astral Observatory", MapSelect_LoadGame, ENTRANCE(ASTRAL_OBSERVATORY, 0) },
- // "0: OP Woods for Cutscene Use" (Forest Opening Scene)
- { " 0:OP"
- "Forest Opening",
- MapSelect_LoadGame, ENTRANCE(CUTSCENE, 0) },
-
- // "0-0: Lost Woods" (Lost Woods)
- { " 0-0: Lost Woods", MapSelect_LoadGame, ENTRANCE(LOST_WOODS, 0) },
-
- // "1: Town Outskirts" (Termina Field)
- { " 1: Termina Field", MapSelect_LoadGame, ENTRANCE(TERMINA_FIELD, 0) },
-
- // "1-0: Astral Observatory" (Astral Observatory)
- { " 1-0: Astral Observatory", MapSelect_LoadGame, ENTRANCE(ASTRAL_OBSERVATORY, 0) },
-
- // "1-1: Astral Observatory Telescope" (Astral Observatory - Telescope)
- { " 1-1: Astral Observatory Telescope", MapSelect_LoadGame, ENTRANCE(TERMINA_FIELD, 10) },
-
- // "1-2: Ikana Graveyard" (Ikana Canyon Graveyard)
- { " 1-2: Ikana Graveyard", MapSelect_LoadGame, ENTRANCE(IKANA_GRAVEYARD, 0) },
-
- // "2: Romani Ranch" (Romani Ranch)
- { " 2: Romani Ranch", MapSelect_LoadGame, ENTRANCE(ROMANI_RANCH, 0) },
-
- // "3: Milk Road" (Milk Road)
- { " 3: Milk Road", MapSelect_LoadGame, ENTRANCE(MILK_ROAD, 0) },
-
- // "4: Main Building" ("Ranch House)
- { " 4: Ranch House", MapSelect_LoadGame, ENTRANCE(RANCH_HOUSE, 1) },
-
- // "5: Cow Shed" (Cow Shed)
- { " 5: Cow Shed", MapSelect_LoadGame, ENTRANCE(RANCH_HOUSE, 0) },
-
- // "6: Cucco Shed" (Cucco Shed)
- { " 6: Cucco Shed", MapSelect_LoadGame, ENTRANCE(CUCCO_SHACK, 0) },
-
- // "7: Dog Racing Area" (Doggy Racetrack)
- { " 7: Doggy Racetrack", MapSelect_LoadGame, ENTRANCE(DOGGY_RACETRACK, 0) },
-
- // "8: Gorman Track" (Gorman Track)
- { " 8: Gorman Track", MapSelect_LoadGame, ENTRANCE(GORMAN_TRACK, 0) },
-
- // "10: Mountain Village -Winter-" (Mountain Village - Winter)
- { " 10: Mountain Village (Winter)", MapSelect_LoadGame, ENTRANCE(MOUNTAIN_VILLAGE_WINTER, 0) },
-
- // "10-0: Mountain Village -Spring-" (Mountain Village - Spring)
- { " 10-0: Mountain Village (Spring)", MapSelect_LoadGame, ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 0) },
-
- // "10-1: Mountain Village Blacksmith" (Mountain Smithy)
- { " 10-1: Mountain Smithy", MapSelect_LoadGame, ENTRANCE(MOUNTAIN_SMITHY, 0) },
-
- // "11: Goron Village -Winter-" (Goron Village - Winter)
- { " 11: Goron Village (Winter)", MapSelect_LoadGame, ENTRANCE(GORON_VILLAGE_WINTER, 0) },
-
- // "11-0: Goron Village -Spring-" (Goron Village - Spring)
- { " 11-0: Goron Village (Spring)", MapSelect_LoadGame, ENTRANCE(GORON_VILLAGE_SPRING, 0) },
-
- // "11-1: Goron Shrine" (Goron Shrine)
- { " 11-1: Goron Shrine", MapSelect_LoadGame, ENTRANCE(GORON_SHRINE, 0) },
-
- // "11-2: Lone Peak Shrine" (Lone Peak Shrine)
- { " 11-2: Lone Peak Shrine", MapSelect_LoadGame, ENTRANCE(GROTTOS, 16) },
-
- // "11-3: Goron Shop" (Goron Shop)
- { " 11-3: Goron Shop", MapSelect_LoadGame, ENTRANCE(GORON_SHOP, 0) },
-
- // "12: Snowhead" (Snowhead)
- { " 12: Snowhead", MapSelect_LoadGame, ENTRANCE(SNOWHEAD, 0) },
-
- // "13: Blizzard Path" (Path to Goron Village - Part 1)
- { " 13: Blizzard Path", MapSelect_LoadGame, ENTRANCE(PATH_TO_MOUNTAIN_VILLAGE, 0) },
-
- // "14: Snowball Path" (Path to Goron Village - Part 2)
- { " 14: Snowball Path", MapSelect_LoadGame, ENTRANCE(PATH_TO_SNOWHEAD, 0) },
-
- // "15: Goron Racetrack" (Goron Racetrack)
- { " 15: Goron Racetrack", MapSelect_LoadGame, ENTRANCE(GORON_RACETRACK, 0) },
-
- // "16: Goron Grave" (Darmani's Grave)
- { " 16: Darmain's Grave", MapSelect_LoadGame, ENTRANCE(GORON_GRAVERYARD, 0) },
-
- // "17: Snow Field Battle -Winter-" (Path to Goron Village - Winter)
- { " 17: Path to Goron Village (Winter)", MapSelect_LoadGame, ENTRANCE(PATH_TO_GORON_VILLAGE_WINTER, 0) },
-
- // "17-0: Snow Field Battle -Spring-" (Path to Goron Village - Spring)
- { " 17-0: Path to Goron Village (Spring)", MapSelect_LoadGame, ENTRANCE(PATH_TO_GORON_VILLAGE_SPRING, 0) },
-
- // "20: Swampland" (Southern Swamp)
- { " 20: Southern Swamp", MapSelect_LoadGame, ENTRANCE(SOUTHERN_SWAMP_POISONED, 0) },
-
- // "20-0: Swampland - Afterwards" (Southern Swamp - After Odolwa)
- { " 20-0: Southern Swamp (Clear)", MapSelect_LoadGame, ENTRANCE(SOUTHERN_SWAMP_CLEARED, 0) },
-
- // "20-1: Swamp Tourist Information" (Tourist Information)
- { " 20-1: Swamp Tourist Information", MapSelect_LoadGame, ENTRANCE(TOURIST_INFORMATION, 0) },
-
- // "20-2: Magic Hags' Potion Shop" (Magic Hags' Potion Shop)
- { " 20-2: Magic Hag' Potion Shop", MapSelect_LoadGame, ENTRANCE(MAGIC_HAGS_POTION_SHOP, 0) },
-
- // "21: Wood Mountain" (Woodfall)
- { " 21: Woodfall", MapSelect_LoadGame, ENTRANCE(WOODFALL, 0) },
-
- // "21-0: Deku Princess's Prison" (Deku Princess's Prison Cutscene: Tatl Apologizes)
- { " 21-0: Deku Princess Prison", MapSelect_LoadGame, ENTRANCE(WOODFALL_TEMPLE, 1) },
-
- // "22: Deku Castle" (Deku Palace)
- { " 22: Deku Palace", MapSelect_LoadGame, ENTRANCE(DEKU_PALACE, 0) },
-
- // "22-0: Boe Hole 0" (Deku Palace Grotto 0 - Deku Baba & Butterflies, Entrance 1)
- { " 22-0: Deku Palace Grotto 0", MapSelect_LoadGame, ENTRANCE(GROTTOS, 6) },
-
- // "22-1: Boe Hole 1" (Deku Palace Grotto 1 - Deku Baba & Butterflies, Entrance 2)
- { " 22-1: Deku Palace Grotto 1", MapSelect_LoadGame, ENTRANCE(GROTTOS, 14) },
-
- // "22-2: Boe Hole 2" (Deku Palace Grotto 2 - Skullwalltula Wall, Lower Entrance)
- { " 22-2: Deku Palace Grotto 2", MapSelect_LoadGame, ENTRANCE(GROTTOS, 8) },
-
- // "22-3: Boe Hole 3" (Deku Palace Grotto 3 - Skullwalltula Wall, Upper Entrance)
- { " 22-3: Deku Palace Grotto 3", MapSelect_LoadGame, ENTRANCE(GROTTOS, 15) },
-
- // "22-4: Boe Hole 4" (Deku Palace Grotto 4 - Bean Seller)
- { " 22-4: Deku Palace Grotto 4", MapSelect_LoadGame, ENTRANCE(GROTTOS, 12) },
-
- // "24: Beast Path" (Road to Swamp)
- { " 24: Road to Swamp", MapSelect_LoadGame, ENTRANCE(ROAD_TO_SOUTHERN_SWAMP, 0) },
-
- // "24-0: Forest Shooting Gallery" (Swamp Shooting Gallery)
- { " 24-0: Swamp Shooting Gallery", MapSelect_LoadGame, ENTRANCE(SWAMP_SHOOTING_GALLERY, 0) },
-
- // "25: Deku King's Chamber" (Deku Palace Throne Room)
- { " 25: Deku Palace Throne Room", MapSelect_LoadGame, ENTRANCE(DEKU_KINGS_CHAMBER, 0) },
-
- // "26: Woods of Mystery" (Woods of Mystery)
- { " 26: Woods of Mystery", MapSelect_LoadGame, ENTRANCE(WOODS_OF_MYSTERY, 0) },
-
- // "30: Great Bay Coast" (Great Bay Coast - Entrance Area)
- { " 30: Great Bay Coast", MapSelect_LoadGame, ENTRANCE(GREAT_BAY_COAST, 0) },
-
- // "30-0: Ocean Laboratory" (Marine Research Lab)
- { " 30-0: Marine Research Lab", MapSelect_LoadGame, ENTRANCE(MARINE_RESEARCH_LAB, 0) },
-
- // "30-1: Fisherman's House" (Fisherman's Hut)
- { " 30-1: Fisherman's Hut", MapSelect_LoadGame, ENTRANCE(FISHERMANS_HUT, 0) },
-
- // "30-2: Pointed Rock" (Twin Pillars)
- { " 30-2: Twil Pillars", MapSelect_LoadGame, ENTRANCE(PINNACLE_ROCK, 0) },
-
- // "31: Cape" (Great Bay Coast - River Area)
- { " 31: Great Bay Coast Cape", MapSelect_LoadGame, ENTRANCE(ZORA_CAPE, 0) },
-
- // "32: Outside of Pirates' Fortress" (Pirates' Fortress - Exterior)
- { " 32: Pirates Fortress (Outside)", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_EXTERIOR, 0) },
-
- // "32-0: Pirates' Fortress" (Pirates' Fortress - Courtyard)
- { " 32-0: Pirates Fortress (Courtyard)", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS, 0) },
-
- // "32-1: Pirates' Fortress - Telescope" (Pirates' Fortress - Secret Entrance, Looking Through Telescope)
- { " 32-1: Pirates Fortress (Telescope)", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS, 10) },
-
- // "32-2: Pirates' Fortress - Interior 0" (Pirates' Fortress - Throne Room)
- { " 32-2: Pirates Fortres Interior 0", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 0) },
-
- // "32-3: Pirates' Fortress - Interior 1" (Pirates' Fortress - View of Throne Room, Wasp Nest)
- { " 32-3: Pirates Fortres Interior 1", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 1) },
-
- // "32-4: Pirates' Fortress - Interior 2" (Pirates' Fortress - Tempting Treasure Chest, Leading to 32-5)
- { " 32-4: Pirates Fortres Interior 2", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 2) },
-
- // "32-5: Pirates' Fortress - Interior 3" (Pirates' Fortress - Zora Egg Room, One Shell Blade)
- { " 32-5: Pirates Fortres Interior 3", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 3) },
-
- // "32-6: Pirates' Fortress - Interior 4" (Pirates' Fortress - Oil Drum Room, Leading to 32-7)
- { " 32-6: Pirates Fortres Interior 4", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 4) },
-
- // "32-7: Pirates' Fortress - Interior 5" (Pirates' Fortress - Zora Egg Room, One Shell Blade)
- { " 32-7: Pirates Fortres Interior 5", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 5) },
-
- // "32-8: Pirates' Fortress - Interior 6" (Pirates' Fortress - Fenced Indoor Walkway, Leading to 32-9)
- { " 32-8: Pirates Fortres Interior 6", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 6) },
-
- // "32-9: Pirates' Fortress - Interior 7" (Pirates' Fortress - Zora Egg Room, One Desbreko & Treasure Chest)
- { " 32-9: Pirates Fortres Interior 7", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 7) },
-
- // "32-10: Pirates' Fortress - Interior 8" (Pirates' Fortress - End of Secret Entrance: Telescope Room)
- { " 32-10: Pirates Fortres Interior 8", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 8) },
-
- // "32-11: Pirates' Fortress - Interior 9" (Pirates' Fortress - Start of Secret Entrance)
- { " 32-11: Pirates Fortres Interior 9", MapSelect_LoadGame, ENTRANCE(PIRATES_FORTRESS_INTERIOR, 9) },
-
- // "33: Zora Shrine" (Zora Hall)
- { " 33: Zora Hall", MapSelect_LoadGame, ENTRANCE(ZORA_HALL, 0) },
-
- // "33-0: Zora Shop" (Zora Shop)
- { " 33-0: Zora Shop", MapSelect_LoadGame, ENTRANCE(ZORA_HALL_ROOMS, 5) },
-
- // "33-1: Zora Waiting Room" (Mikau & Tijo's Room)
- { " 33-1: Mikau's Room", MapSelect_LoadGame, ENTRANCE(ZORA_HALL_ROOMS, 0) },
-
- // "34: Great Bay" (Great Bay Cutscene: Pirates Approach Temple)
- { " 34: Great Bay (Cutscene)", MapSelect_LoadGame, ENTRANCE(GREAT_BAY_CUTSCENE, 0) },
-
- // "35: Mountain Stream Above Falls" (Waterfall Rapids)
- { " 35: Waterfall Rapids", MapSelect_LoadGame, ENTRANCE(WATERFALL_RAPIDS, 0) },
-
- // "40: Rock Building Shaft" (Stone Tower)
- { " 40: Stone Tower", MapSelect_LoadGame, ENTRANCE(STONE_TOWER, 0) },
-
- // "40-0: Heaven & Earth Are Overturned" (Stone Tower Cutscene: Tower is Flipped)
- { " 40-0: Inverted Stone Tower", MapSelect_LoadGame, ENTRANCE(STONE_TOWER_INVERTED, 0) },
-
- // "41: Road to Ikana" (Road to Ikana)
- { " 41: Road to Ikana", MapSelect_LoadGame, ENTRANCE(ROAD_TO_IKANA, 0) },
-
- // "42: Ancient Castle of Ikana" (Ancient Castle of Ikana)
- { " 42: Ancient Castle of Ikana", MapSelect_LoadGame, ENTRANCE(IKANA_CASTLE, 0) },
-
- // "42-0: Ancient Castle of Ikana - Interior" (Ancient Castle of Ikana - Interior)
- { " 42-0: Ancient Castle of Ikana (Interior)", MapSelect_LoadGame, ENTRANCE(IKANA_CASTLE, 3) },
-
- // "42-B: Ancient Castle of Ikana - Boss Room" (Ikana King's Throne)
- { " 42-B: Ancient Castle of Ikana (Boss)", MapSelect_LoadGame, ENTRANCE(IGOS_DU_IKANAS_LAIR, 0) },
-
- // "43: Ikana Canyon" (Ikana Canyon)
- { " 43: Ikana Canyon", MapSelect_LoadGame, ENTRANCE(IKANA_CANYON, 0) },
-
- // "43-0: Ikana Canyon Cave" (Sharp's Cave)
- { " 43-0: Sharp's Cave", MapSelect_LoadGame, ENTRANCE(IKANA_CANYON, 14) },
-
- // "43-1: Secom's House" (Sakon's Hideout)
- { " 43-1: Sakon's Hideout", MapSelect_LoadGame, ENTRANCE(SAKONS_HIDEOUT, 0) },
-
- // "43-2: Music Box House" (Music Box House)
- { " 43-2: Music House", MapSelect_LoadGame, ENTRANCE(MUSIC_BOX_HOUSE, 0) },
-
- // "50: Clock Town -East-" (East Clock Town)
- { " 50: East Clock Town", MapSelect_LoadGame, ENTRANCE(EAST_CLOCK_TOWN, 0) },
-
- // "50-0: Town Target Range" (Shooting Gallery)
- { " 50-0: Shooting Gallery", MapSelect_LoadGame, ENTRANCE(TOWN_SHOOTING_GALLERY, 0) },
-
- // "50-1: Honey and Darling's Shop" (Honey & Darling's Shop)
- { " 50-1: Honey and Darling's Shop", MapSelect_LoadGame, ENTRANCE(HONEY_AND_DARLINGS_SHOP, 0) },
-
- // "50-2: Treasure Chest Shop" (Treasure Chest Shop)
- { " 50-2: Treasure Chest Shop", MapSelect_LoadGame, ENTRANCE(TREASURE_CHEST_SHOP, 0) },
-
- // "50-3: Pots 'n' Pans Inn" (Stockpot Inn)
- { " 50-3: Stockpot Inn", MapSelect_LoadGame, ENTRANCE(STOCK_POT_INN, 0) },
-
- // "50-4: Mayor's House" (The Mayor's Residence)
- { " 50-4: Mayor's Residence", MapSelect_LoadGame, ENTRANCE(MAYORS_RESIDENCE, 0) },
-
- // "50-5: Milk Bar" (Milk Bar)
- { " 50-5: Milk Bar", MapSelect_LoadGame, ENTRANCE(MILK_BAR, 0) },
-
- // "51: Clock Town -West-" (West Clock Town)
- { " 51: West Clock Town", MapSelect_LoadGame, ENTRANCE(WEST_CLOCK_TOWN, 0) },
-
- // "51-0: Bomb Shop" (Bomb Shop)
- { " 51-0: Bomb Shop", MapSelect_LoadGame, ENTRANCE(BOMB_SHOP, 0) },
-
- // "51-1: Maniac Mart" (Curiosity Shop)
- { " 51-1: Curiosity Shop", MapSelect_LoadGame, ENTRANCE(CURIOSITY_SHOP, 0) },
-
- // "51-2: General Store" (Trading Post)
- { " 51-2: Trading Post", MapSelect_LoadGame, ENTRANCE(TRADING_POST, 0) },
-
- // "51-3: Sword Dojo" (Swordsman's School)
- { " 51-3: Swordsman's School", MapSelect_LoadGame, ENTRANCE(SWORDMANS_SCHOOL, 0) },
-
- // "51-4: Post House" (Post Office)
- { " 51-4: Post Office", MapSelect_LoadGame, ENTRANCE(POST_OFFICE, 0) },
-
- // "51-5: Lottery Shop" (Lottery Shop)
- { " 51-5: Lottery Shop", MapSelect_LoadGame, ENTRANCE(LOTTERY_SHOP, 0) },
-
- // "52: Clock Town -North-" (North Clock Town)
- { " 52: North Clock Town", MapSelect_LoadGame, ENTRANCE(NORTH_CLOCK_TOWN, 0) },
-
- // "53: Clocktown -South-" (South Clock Town)
- { " 53: South Clock Town", MapSelect_LoadGame, ENTRANCE(SOUTH_CLOCK_TOWN, 0) },
-
- // "53-0: Clock Tower Interior" (Clock Tower Interior)
- { " 53-0: Clock Town Interoir", MapSelect_LoadGame, ENTRANCE(CLOCK_TOWER_INTERIOR, 0) },
-
- // "54: Clock Tower Rooftop" (Clock Tower Rooftop)
- { " 54: Clock Town Rooftop", MapSelect_LoadGame, ENTRANCE(CLOCK_TOWER_ROOFTOP, 0) },
-
- // "55: Laundry Area" (Laundry Pool)
- { " 55: Laundry Pool", MapSelect_LoadGame, ENTRANCE(LAUNDRY_POOL, 0) },
-
- // "55-0: Maniac Mart - Rear Entrance" (Curiosity Shop - Back Room)
- { " 55-0: Curiosity Shop (Back)", MapSelect_LoadGame, ENTRANCE(CURIOSITY_SHOP, 1) },
-
- // "55-1: Maniac Mart - Peephole" (Curiosity Shop Back Room - Peephole)
- { " 55-1: Curiosity Shop (Peephole)", MapSelect_LoadGame, ENTRANCE(CURIOSITY_SHOP, 2) },
-
- // "100: Wood Mountain Temple" (Woodfall Temple)
- { "100: Woodfall Temple", MapSelect_LoadGame, ENTRANCE(WOODFALL_TEMPLE, 0) },
-
- // "100-B: Wood Mountain Temple - Boss" (Odolwa's Lair)
- { "100-B: Woodfall Temple (Boss)", MapSelect_LoadGame, ENTRANCE(ODOLWAS_LAIR, 0) },
-
- // "101: Snowhead Temple" (Snowhead Temple)
- { "101: Snowhead Temple", MapSelect_LoadGame, ENTRANCE(SNOWHEAD_TEMPLE, 0) },
-
- // "101-B: Snowhead Temple - Boss" (Goht's Lair)
- { "101-B: Snowhead Temple (Boss)", MapSelect_LoadGame, ENTRANCE(GOHTS_LAIR, 0) },
-
- // "102: Great Bay Temple" (Great Bay Temple)
- { "102: Great Bay Temple", MapSelect_LoadGame, ENTRANCE(GREAT_BAY_TEMPLE, 0) },
-
- // "102-B: Great Bay Temple - Boss" (Gyorg's Lair)
- { "102-B: Great Bay Temple (Boss)", MapSelect_LoadGame, ENTRANCE(GYORGS_LAIR, 0) },
-
- // "103: Rock Building Temple -Top Side-" (Stone Tower Temple)
- { "103: Stone Tower Temple", MapSelect_LoadGame, ENTRANCE(STONE_TOWER_TEMPLE, 0) },
-
- // "103-0: Rock Building Temple -Underside-" (Stone Tower Temple - Flipped)
- { "103-0: Inverted Stone Tower Temple", MapSelect_LoadGame, ENTRANCE(STONE_TOWER_TEMPLE_INVERTED, 0) },
-
- // "103-B: Rock Building Temple - Boss" (Twinmold's Lair)
- { "103-B: Stone Tower Temple (Boss)", MapSelect_LoadGame, ENTRANCE(TWINMOLDS_LAIR, 0) },
-
- // "104: Steppe" (On the Moon)
- { "104: On The Moon", MapSelect_LoadGame, ENTRANCE(THE_MOON, 0) },
-
- // "104-0: Last Deku Dungeon" (Deku Trial)
- { "104-0: Deku Trial", MapSelect_LoadGame, ENTRANCE(MOON_DEKU_TRIAL, 0) },
-
- // "104-1: Last Goron Dungeon" (Goron Trial)
- { "104-1: Goron Trial", MapSelect_LoadGame, ENTRANCE(MOON_GORON_TRIAL, 0) },
-
- // "104-2: Last Zora Dungeon" (Zora Trial)
- { "104-2: Zora Trial", MapSelect_LoadGame, ENTRANCE(MOON_ZORA_TRIAL, 0) },
-
- // "104-3: Last Link Dungeon" (Link Trial)
- { "104-3: Link Trial", MapSelect_LoadGame, ENTRANCE(MOON_LINK_TRIAL, 0) },
-
- // "104-B: Last Dungeon -Boss-" (Majora's Lair)
- { "104-B: Majora's Lair", MapSelect_LoadGame, ENTRANCE(MAJORAS_LAIR, 0) },
-
- // "119: Deku Shrine" (Deku Shrine)
- { "119: Deku Shrine", MapSelect_LoadGame, ENTRANCE(DEKU_SHRINE, 0) },
-
- // "121: Secret Shrine" (Secret Shrine)
- { "121: Secret Shrine", MapSelect_LoadGame, ENTRANCE(SECRET_SHRINE, 0) },
-
- // "122: Opening Dungeon" (Pond Area Cutscene: Falling of the Cliff)
- { "122: Opening Dungeon", MapSelect_LoadGame, ENTRANCE(OPENING_DUNGEON, 0) },
-
- // "123: Giants' Chamber" (Giants' Chamber)
- { "123: Giants Chamber", MapSelect_LoadGame, ENTRANCE(GIANTS_CHAMBER, 0) },
-
- // "126: Deku Minigame" (Deku Rupee Minigame)
- { "126: Deku Playground", MapSelect_LoadGame, ENTRANCE(DEKU_SCRUB_PLAYGROUND, 0) },
-
- // "127-0: Fairy Fountain 0" (Fairy Fountain - Clock Town)
- { "127-0: Fairy Fountain (Clock Town)", MapSelect_LoadGame, ENTRANCE(FAIRY_FOUNTAIN, 0) },
-
- // "127-1: Fairy Fountain 1" (Fairy Fountain - Woodfall)
- { "127-1: Fairy Fountain (Woodfall)", MapSelect_LoadGame, ENTRANCE(FAIRY_FOUNTAIN, 1) },
-
- // "127-2: Fairy Fountain 2" (Fairy Fountain - Snowhead)
- { "127-2: Fairy Fountain (Snowhead)", MapSelect_LoadGame, ENTRANCE(FAIRY_FOUNTAIN, 2) },
-
- // "127-3: Fairy Fountain 3" (Fairy Fountain - Great Bay Coast)
- { "127-3: Fairy Fountain (Great Bay)", MapSelect_LoadGame, ENTRANCE(FAIRY_FOUNTAIN, 3) },
-
- // "127-4: Fairy Fountain 4" (Fairy Fountain - Ikana Canyon)
- { "127-4: Fairy Fountain (Ikana)", MapSelect_LoadGame, ENTRANCE(FAIRY_FOUNTAIN, 4) },
-
- // "128: Swamp Spider Manor" (Swamp Spider House)
- { "128: Swamp Spider House", MapSelect_LoadGame, ENTRANCE(SWAMP_SPIDER_HOUSE, 0) },
-
- // "129: Ocean Spider Manor" (Oceanside Spider House)
- { "129: Oceanside Spider House", MapSelect_LoadGame, ENTRANCE(OCEANSIDE_SPIDER_HOUSE, 0) },
-
- // "130: Beneath the Graves - Dampe" (Beneath the Graveyard)
- { "130: Dampe's Grave", MapSelect_LoadGame, ENTRANCE(DAMPES_HOUSE, 0) },
-
- // "131: Beneath the Well" (Beneath the Well)
- { "131: Beneath The Well", MapSelect_LoadGame, ENTRANCE(BENEATH_THE_WELL, 0) },
-
- // "132: Ghost Hut" (Ghost Hut)
- { "132: Ghost Hut", MapSelect_LoadGame, ENTRANCE(GHOST_HUT, 0) },
-
- // "133-0: Beneath the Graves 0" (Beneath the Graveyard - Part 1)
- { "133-0: Beneath The Graves 0", MapSelect_LoadGame, ENTRANCE(BENEATH_THE_GRAVERYARD, 0) },
-
- // "133-1: Beneath the Graves 1" (Beneath the Graveyard - Part 2)
- { "133-1: Beneath The Graves 1", MapSelect_LoadGame, ENTRANCE(BENEATH_THE_GRAVERYARD, 1) },
-
- // "134-0: Secret Grotto 0" (Secret Grotto - Four Gossip Stones)
- { "134-0: Secret Grotto 0", MapSelect_LoadGame, ENTRANCE(GROTTOS, 0) },
-
- // "134-1: Secret Grotto 1" (Secret Grotto - Four Gossip Stones, Skulltula)
- { "134-1: Secret Grotto 1", MapSelect_LoadGame, ENTRANCE(GROTTOS, 1) },
-
- // "134-2: Secret Grotto 2" (Secret Grotto - Four Gossip Stones, Water Puddles)
- { "134-2: Secret Grotto 2", MapSelect_LoadGame, ENTRANCE(GROTTOS, 2) },
-
- // "134-3: Secret Grotto 3" (Secret Grotto - Four Gossip Stones, Water Puddle With Bugs)
- { "134-3: Secret Grotto 3", MapSelect_LoadGame, ENTRANCE(GROTTOS, 3) },
-
- // "134-4: Secret Grotto 4" (Secret Grotto - Chest with Blue Rupee, Deku Babas)
- { "134-4: Secret Grotto 4", MapSelect_LoadGame, ENTRANCE(GROTTOS, 4) },
-
- // "134-5: Secret Grotto 5" (Secret Grotto - Hot Spring, Deku Babas, Large Stones)
- { "134-5: Secret Grotto 5", MapSelect_LoadGame, ENTRANCE(GROTTOS, 5) },
-
- // "134-7: Secret Grotto 7" (Secret Grotto - Two Dondogos)
- { "134-7: Secret Grotto 7", MapSelect_LoadGame, ENTRANCE(GROTTOS, 7) },
-
- // "134-9: Secret Grotto 9" (Secret Grotto - Tall Grass With Box, Pot, Bugs)
- { "134-9: Secret Grotto 9", MapSelect_LoadGame, ENTRANCE(GROTTOS, 9) },
-
- // "134-10: Secret Grotto 10" (Secret Grotto - Two Cows Surrounded by Grass)
- { "134-10: Secret Grotto 10", MapSelect_LoadGame, ENTRANCE(GROTTOS, 10) },
-
- // "134-11: Secret Grotto 11" (Secret Grotto - Watery Hole Filled with Underwater Babas, Fish)
- { "134-11: Secret Grotto 11", MapSelect_LoadGame, ENTRANCE(GROTTOS, 11) },
-
- // "134-13: Secret Grotto 13" (Secret Grotto - Peahat in Center)
- { "134-13: Secret Grotto 13", MapSelect_LoadGame, ENTRANCE(GROTTOS, 13) },
-
- // "X 1: SPOT00" (Opening Cutscene)
- { "X 1:SPOT00", MapSelect_LoadGame, ENTRANCE(CUTSCENE, 0) },
-
- // "Title" (Title Screen)
- { "title", (void*)MapSelect_LoadConsoleLogo, 0 },
- { "file select", (void*)MapSelect_LoadFileSelect, 0 },
-};
-#endif
void MapSelect_UpdateMenu(MapSelectState* this) {
s32 playerForm;
@@ -1255,8 +807,6 @@ void MapSelect_PrintLoadingMessage(MapSelectState* this, GfxPrint* printer) {
}
// Second column is unused
-#ifdef Z_SELECT_JP
-// Second column is unused
static const char* sFormLabel[][2] = {
// "17 (Adult)" // 17 (Daitetsujin)
{ GFXP_HIRAGANA "17(オトナ)", GFXP_HIRAGANA "17(ダイテツジン)" },
@@ -1269,20 +819,6 @@ static const char* sFormLabel[][2] = {
// "5 (Child)" // 5 (NTT Kodomo)
{ GFXP_HIRAGANA "5(コドモ)", GFXP_KATAKANA "5(NTTコドモ)" },
};
-#else
-static const char* sFormLabel[][2] = {
- // "17 (Adult)" // 17 (Daitetsujin)
- { "Adult", "17(ダイテツジン)" },
- // "30 (Goron)" // 30 (Ice Cream -1)
- { "Goron", GFXP_KATAKANA "30(アイスクリーム-1)" },
- // "78 (Zora)" // 78 (Carmen +1)
- { "Zora", GFXP_KATAKANA "78(カルメン+1)" },
- // "12 (Deku)" // 12 (Majestic)
- { "Deku", GFXP_KATAKANA "12(マジェスティック)" },
- // "5 (Child)" // 5 (NTT Kodomo)
- { "Child", GFXP_KATAKANA "5(NTTコドモ)" },
-};
-#endif
void MapSelect_PrintAgeSetting(MapSelectState* this, GfxPrint* printer, s32 playerForm) {
s32 pad;
@@ -1320,7 +856,6 @@ void MapSelect_PrintAgeSetting(MapSelectState* this, GfxPrint* printer, s32 play
}
}
-#ifdef Z_SELECT_JP
void MapSelect_PrintCutsceneSetting(MapSelectState* this, GfxPrint* printer, u16 csIndex) {
const char* stage;
const char* day;
@@ -1447,134 +982,6 @@ void MapSelect_PrintCutsceneSetting(MapSelectState* this, GfxPrint* printer, u16
GfxPrint_Printf(printer, "Day:" GFXP_HIRAGANA "%s", day);
}
-#else
-void MapSelect_PrintCutsceneSetting(MapSelectState* this, GfxPrint* printer, u16 csIndex) {
- const char* stage;
- const char* day;
-
- GfxPrint_SetPos(printer, 4, 25);
- GfxPrint_SetColor(printer, 255, 255, 55, 255);
-
- // "-jara" used in these strings is a Kokiri speech quirk word
- switch (csIndex) {
- case 0:
- // clang-format off
- // "Afternoon-jara"
- gSaveContext.save.time = CLOCK_TIME(12, 0); stage = "Afternoon";
- // clang-format on
- break;
-
- case 0x8000:
- // clang-format off
- // "Morning-jara"
- gSaveContext.save.time = CLOCK_TIME(6, 0) + 1; stage = "Morning";
- // clang-format on
- break;
-
- case 0x8800:
- gSaveContext.save.time = CLOCK_TIME(18, 1);
- // "Night-jara"
- stage = "Night";
- break;
-
- case 0xFFF0:
- // clang-format off
- // "Cutscene 00"
- gSaveContext.save.time = CLOCK_TIME(12, 0); stage = "CS00";
- // clang-format on
- break;
-
- case 0xFFF1:
- // "Cutscene 01"
- stage = "CS01";
- break;
-
- case 0xFFF2:
- // "Cutscene 02"
- stage = "CS02";
- break;
-
- case 0xFFF3:
- // "Cutscene 03"
- stage = "CS02";
- break;
-
- case 0xFFF4:
- // "Cutscene 04"
- stage = "CS04";
- break;
-
- case 0xFFF5:
- // "Cutscene 05"
- stage = "CS05";
- break;
-
- case 0xFFF6:
- // "Cutscene 06"
- stage = "CS06";
- break;
-
- case 0xFFF7:
- // "Cutscene 07"
- stage = "CS07";
- break;
-
- case 0xFFF8:
- // "Cutscene 08"
- stage = "CS08";
- break;
-
- case 0xFFF9:
- // "Cutscene 09"
- stage = "CS09";
- break;
-
- case 0xFFFA:
- // "Cutscene 0A"
- stage = "CS10";
- break;
-
- default:
- stage = "???";
- break;
- }
- gSaveContext.skyboxTime = gSaveContext.save.time;
- GfxPrint_Printf(printer, "Stage: %s", stage);
-
- GfxPrint_SetPos(printer, 23, 25);
- GfxPrint_SetColor(printer, 255, 255, 55, 255);
-
- switch (gSaveContext.save.day) {
- case 1:
- // "The First Day"
- day = "First Day";
- break;
-
- case 2:
- // "The Next Day"
- day = "Second Day";
- break;
-
- case 3:
- // "The Final Day"
- day = "Final Day";
- break;
-
- case 4:
- // "Clear Day"
- day = "New Day";
- break;
-
- default:
- gSaveContext.save.day = 1;
- // "The First Day"
- day = "First Day";
- break;
- }
-
- GfxPrint_Printf(printer, "Day: %s", day);
-}
-#endif
void MapSelect_DrawMenu(MapSelectState* this) {
GraphicsContext* gfxCtx = this->state.gfxCtx;
@@ -1587,9 +994,13 @@ void MapSelect_DrawMenu(MapSelectState* this) {
GfxPrint_Init(&printer);
GfxPrint_Open(&printer, POLY_OPA_DISP);
- MapSelect_PrintMenu(this, &printer);
- MapSelect_PrintAgeSetting(this, &printer, GET_PLAYER_FORM);
- MapSelect_PrintCutsceneSetting(this, &printer, ((void)0, gSaveContext.save.cutsceneIndex));
+ if (CVarGetInteger("gDeveloperTools.BetterMapSelect.Enabled", 0)) {
+ BetterMapSelect_PrintMenu(this, &printer);
+ } else {
+ MapSelect_PrintMenu(this, &printer);
+ MapSelect_PrintAgeSetting(this, &printer, GET_PLAYER_FORM);
+ MapSelect_PrintCutsceneSetting(this, &printer, ((void)0, gSaveContext.save.cutsceneIndex));
+ }
POLY_OPA_DISP = GfxPrint_Close(&printer);
GfxPrint_Destroy(&printer);
@@ -1634,6 +1045,7 @@ void MapSelect_Main(GameState* thisx) {
MapSelectState* this = (MapSelectState*)thisx;
MapSelect_UpdateMenu(this);
+ BetterMapSelect_Update(this);
MapSelect_Draw(this);
}
@@ -1682,4 +1094,5 @@ void MapSelect_Init(GameState* thisx) {
gSaveContext.save.cutsceneIndex = 0;
gSaveContext.save.playerForm = PLAYER_FORM_HUMAN;
gSaveContext.save.linkAge = 0;
+ BetterMapSelect_Init(this);
}
diff --git a/mm/src/overlays/gamestates/ovl_select/z_select.h b/mm/src/overlays/gamestates/ovl_select/z_select.h
index 876c9e3ff..bcb3bef2e 100644
--- a/mm/src/overlays/gamestates/ovl_select/z_select.h
+++ b/mm/src/overlays/gamestates/ovl_select/z_select.h
@@ -38,5 +38,7 @@ typedef struct MapSelectState {
void MapSelect_Init(GameState* thisx);
void MapSelect_Destroy(GameState* thisx);
+void MapSelect_LoadGame(MapSelectState* thisx, u32 entrance, s32 spawn);
+void MapSelect_LoadConsoleLogo(MapSelectState* thisx);
#endif