From 508f8378ded6ec33ee48073e7f2af6cf5e00a9a6 Mon Sep 17 00:00:00 2001 From: Garrett Cox Date: Sun, 21 Jan 2024 06:01:53 +0000 Subject: [PATCH] Better map select (#85) * Add human readable name and entrance scene ID to scene table * Add better map select --- mm/2s2h/BenMenuBar.cpp | 1 + mm/2s2h/DeveloperTools/BetterMapSelect.c | 208 ++++++ mm/2s2h/DeveloperTools/BetterMapSelect.h | 11 + mm/CMakeLists.txt | 1 + mm/include/tables/scene_table.h | 206 +++--- mm/include/z64scene.h | 2 +- mm/src/code/z_parameter.c | 2 +- mm/src/code/z_scene_table.c | 2 +- mm/src/code/z_sram_NES.c | 2 +- .../overlays/gamestates/ovl_select/z_select.c | 611 +----------------- .../overlays/gamestates/ovl_select/z_select.h | 2 + 11 files changed, 343 insertions(+), 705 deletions(-) create mode 100644 mm/2s2h/DeveloperTools/BetterMapSelect.c create mode 100644 mm/2s2h/DeveloperTools/BetterMapSelect.h 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; @@ -1254,8 +806,6 @@ void MapSelect_PrintLoadingMessage(MapSelectState* this, GfxPrint* printer) { GfxPrint_Printf(printer, "%s", sLoadingMessages[randomMsg]); } -// Second column is unused -#ifdef Z_SELECT_JP // Second column is unused static const char* sFormLabel[][2] = { // "17 (Adult)" // 17 (Daitetsujin) @@ -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