From 6472f6832328c12492a73afb99d9f951b6d85ee8 Mon Sep 17 00:00:00 2001 From: engineer124 <47598039+engineer124@users.noreply.github.com> Date: Sat, 23 Jul 2022 15:30:19 -0400 Subject: [PATCH] Map Select: Docs and Cleanup (#962) * Add Map Select Docs * cleanup * brackets * Another typo --- include/variables.h | 2 +- include/z64save.h | 2 +- src/code/graph.c | 2 +- src/code/z_bgcheck.c | 2 +- src/code/z_common_data.c | 2 +- src/code/z_demo.c | 2 +- src/code/z_game_dlftbls.c | 2 +- src/code/z_scene.c | 25 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 8 +- .../ovl_En_Weather_Tag/z_en_weather_tag.c | 14 +- src/overlays/gamestates/ovl_select/z_select.c | 888 ++++++++++-------- src/overlays/gamestates/ovl_select/z_select.h | 14 +- tools/disasm/functions.txt | 26 +- tools/disasm/variables.txt | 2 +- tools/namefixer.py | 1 + 15 files changed, 572 insertions(+), 420 deletions(-) diff --git a/include/variables.h b/include/variables.h index c048750b8f..f46c1babfa 100644 --- a/include/variables.h +++ b/include/variables.h @@ -916,7 +916,7 @@ extern u8 kanfontOrdering[92]; // extern UNK_TYPE1 D_801BDBA0; // extern UNK_TYPE1 D_801BDBA4; // extern UNK_TYPE1 D_801BDBA8; -extern u8 D_801BDBB0; +extern u8 gWeatherMode; // extern UNK_TYPE1 D_801BDBB4; // extern UNK_TYPE1 D_801BDBB8; // extern UNK_TYPE1 D_801BDBBC; diff --git a/include/z64save.h b/include/z64save.h index d24b5a7c8d..cf2ce2f6c0 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -247,7 +247,7 @@ typedef struct SaveContext { /* 0x3F4E */ u16 nextDayTime; // "next_zelda_time" /* 0x3F50 */ u8 transFadeDuration; // "fade_speed" /* 0x3F51 */ u8 transWipeSpeed; // "wipe_speed" transition related - /* 0x3F52 */ u16 environmentTime; // "kankyo_time" + /* 0x3F52 */ u16 skyboxTime; // "kankyo_time" /* 0x3F54 */ u8 dogIsLost; // "dog_event_flag" /* 0x3F55 */ u8 nextTransitionType; // "next_wipe" /* 0x3F56 */ s16 worldMapArea; // "area_type" diff --git a/src/code/graph.c b/src/code/graph.c index 28327c35fa..f625cb7b61 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -67,7 +67,7 @@ GameStateOverlay* Graph_GetNextGameState(GameState* gameState) { if (gameStateInit == (GameStateFunc)TitleSetup_Init) { return &gGameStateOverlayTable[0]; } - if (gameStateInit == (GameStateFunc)Select_Init) { + if (gameStateInit == (GameStateFunc)MapSelect_Init) { return &gGameStateOverlayTable[1]; } if (gameStateInit == (GameStateFunc)Title_Init) { diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index 7aaae22bc0..812f68c0d3 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -1191,7 +1191,7 @@ void BgCheck_GetSubdivisionMinBounds(CollisionContext* colCtx, Vec3f* pos, s32* /** * Get positive bias subdivision indices - * increments indicies if `pos` is within BGCHECK_SUBDIV_OVERLAP units of the postive subdivision boundary + * increments indices if `pos` is within BGCHECK_SUBDIV_OVERLAP units of the positive subdivision boundary * `sx`, `sy`, `sz` returns the subdivision x, y, z indices */ void BgCheck_GetSubdivisionMaxBounds(CollisionContext* colCtx, Vec3f* pos, s32* sx, s32* sy, s32* sz) { diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 7c8b7cf991..955f548701 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -13,7 +13,7 @@ void SaveContext_Init(void) { gSaveContext.cutsceneTrigger = 0; gSaveContext.unk_3F4D = 0; gSaveContext.nextDayTime = 0xFFFF; - gSaveContext.environmentTime = 0; + gSaveContext.skyboxTime = 0; gSaveContext.dogIsLost = true; gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT; gSaveContext.unk_3F26 = 50; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 80e30e69c6..383f8928a7 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -554,7 +554,7 @@ void Cutscene_Command_SetTime(PlayState* play, CutsceneContext* csCtx, CsCmdDayT nextTime = hourAsMinutes + minutes; gSaveContext.save.time = nextTime; - gSaveContext.environmentTime = nextTime; + gSaveContext.skyboxTime = nextTime; } } diff --git a/src/code/z_game_dlftbls.c b/src/code/z_game_dlftbls.c index 26a17a84a0..2df62a054b 100644 --- a/src/code/z_game_dlftbls.c +++ b/src/code/z_game_dlftbls.c @@ -15,7 +15,7 @@ GameStateOverlay gGameStateOverlayTable[] = { GAMESTATE_OVERLAY_INTERNAL(TitleSetup_Init, TitleSetup_Destroy, sizeof(GameState)), - GAMESTATE_OVERLAY(select, Select_Init, Select_Destroy, sizeof(SelectContext)), + GAMESTATE_OVERLAY(select, MapSelect_Init, MapSelect_Destroy, sizeof(MapSelectState)), GAMESTATE_OVERLAY(title, Title_Init, Title_Destroy, sizeof(TitleContext)), GAMESTATE_OVERLAY_INTERNAL(Play_Init, Play_Fini, sizeof(PlayState)), GAMESTATE_OVERLAY(opening, Opening_Init, Opening_Destroy, sizeof(OpeningContext)), diff --git a/src/code/z_scene.c b/src/code/z_scene.c index c6e8964471..1d4217ee36 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -376,7 +376,7 @@ void Scene_HeaderCmdSkyboxDisables(PlayState* play, SceneCmd* cmd) { // SceneTableEntry Header Command 0x10: Time Settings void Scene_HeaderCmdTimeSettings(PlayState* play, SceneCmd* cmd) { if (cmd->timeSettings.hour != 0xFF && cmd->timeSettings.min != 0xFF) { - gSaveContext.environmentTime = gSaveContext.save.time = + gSaveContext.skyboxTime = gSaveContext.save.time = (u16)(((cmd->timeSettings.hour + (cmd->timeSettings.min / 60.0f)) * 60.0f) / 0.021972656f); } @@ -398,20 +398,17 @@ void Scene_HeaderCmdTimeSettings(PlayState* play, SceneCmd* cmd) { play->envCtx.unk_8 = (Math_CosS(((void)0, gSaveContext.save.time) - 0x8000) * 120.0f) * 25.0f; play->envCtx.unk_C = (Math_CosS(((void)0, gSaveContext.save.time) - 0x8000) * 20.0f) * 25.0f; - if (play->envCtx.timeIncrement == 0 && gSaveContext.save.cutscene < 0xFFF0) { - gSaveContext.environmentTime = gSaveContext.save.time; + if ((play->envCtx.timeIncrement == 0) && (gSaveContext.save.cutscene < 0xFFF0)) { + gSaveContext.skyboxTime = gSaveContext.save.time; - if (gSaveContext.environmentTime >= CLOCK_TIME(4, 0) && gSaveContext.environmentTime < CLOCK_TIME(6, 30)) { - gSaveContext.environmentTime = CLOCK_TIME(5, 0); - } else if (gSaveContext.environmentTime >= CLOCK_TIME(6, 30) && - gSaveContext.environmentTime < CLOCK_TIME(8, 0)) { - gSaveContext.environmentTime = CLOCK_TIME(8, 0); - } else if (gSaveContext.environmentTime >= CLOCK_TIME(16, 0) && - gSaveContext.environmentTime < CLOCK_TIME(17, 0)) { - gSaveContext.environmentTime = CLOCK_TIME(17, 0); - } else if (gSaveContext.environmentTime >= CLOCK_TIME(18, 0) && - gSaveContext.environmentTime < CLOCK_TIME(19, 0)) { - gSaveContext.environmentTime = CLOCK_TIME(19, 0); + if ((gSaveContext.skyboxTime >= CLOCK_TIME(4, 0)) && (gSaveContext.skyboxTime < CLOCK_TIME(6, 30))) { + gSaveContext.skyboxTime = CLOCK_TIME(5, 0); + } else if ((gSaveContext.skyboxTime >= CLOCK_TIME(6, 30)) && (gSaveContext.skyboxTime < CLOCK_TIME(8, 0))) { + gSaveContext.skyboxTime = CLOCK_TIME(8, 0); + } else if ((gSaveContext.skyboxTime >= CLOCK_TIME(16, 0)) && (gSaveContext.skyboxTime < CLOCK_TIME(17, 0))) { + gSaveContext.skyboxTime = CLOCK_TIME(17, 0); + } else if ((gSaveContext.skyboxTime >= CLOCK_TIME(18, 0)) && (gSaveContext.skyboxTime < CLOCK_TIME(19, 0))) { + gSaveContext.skyboxTime = CLOCK_TIME(19, 0); } } } diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 5311b35a6e..f180eec2cf 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -520,7 +520,7 @@ void func_80A430C8(EnTest4* this, PlayState* play) { (gSaveContext.save.time < CLOCK_TIME(17, 30)) && (play->envCtx.unk_F2[2] == 0)) { // rain? - D_801BDBB0 = 1; + gWeatherMode = 1; func_800FD78C(play); play->envCtx.unk_E3 = 1; play->envCtx.unk_F2[0] = 0x3C; @@ -535,7 +535,7 @@ void func_80A430C8(EnTest4* this, PlayState* play) { } } - if (D_801BDBB0 == 1) { + if (gWeatherMode == 1) { this->state = TEST4_STATE_1; } } @@ -544,11 +544,11 @@ void func_80A431C8(EnTest4* this, PlayState* play) { if (((gSaveContext.save.time >= CLOCK_TIME(17, 30)) && (gSaveContext.save.time < CLOCK_TIME(23, 0)) && (play->envCtx.unk_F2[0] != 0)) || (play->envCtx.unk_F2[2] != 0)) { - D_801BDBB0 = 0; + gWeatherMode = 0; play->envCtx.unk_E3 = 2; } - if (D_801BDBB0 == 0) { + if (gWeatherMode == 0) { this->state = TEST4_STATE_0; } } diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index b1a989045e..3969f9c6e9 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -125,8 +125,8 @@ u8 func_80966608(EnWeatherTag* this, PlayState* play, UNK_TYPE a3, UNK_TYPE a4, if (!(play->envCtx.unk_1E == 0) || ((play->envCtx.unk_1F != 1) && (play->envCtx.unk_21 == 0))) { D_801BDBB8 = 0; - if (D_801BDBB0 != weatherMode) { - D_801BDBB0 = weatherMode; + if (gWeatherMode != weatherMode) { + gWeatherMode = weatherMode; play->envCtx.unk_21 = 1; play->envCtx.unk_1F = new1F; play->envCtx.unk_20 = new20; @@ -153,7 +153,7 @@ u8 func_80966758(EnWeatherTag* this, PlayState* play, UNK_TYPE a3, UNK_TYPE a4, if (!(play->envCtx.unk_1E == 0) || ((play->envCtx.unk_1F != 1) && (play->envCtx.unk_21 == 0))) { D_801BDBB8 = 0; - D_801BDBB0 = 0; + gWeatherMode = 0; play->envCtx.unk_21 = 1; play->envCtx.unk_1F = new1F; play->envCtx.unk_20 = new20; @@ -230,7 +230,7 @@ void EnWeatherTag_Die(EnWeatherTag* this, PlayState* play) { // poisoned swamp: placed behind the water fall from ikana // this tag stops spawning after STT cleared? void func_80966B08(EnWeatherTag* this, PlayState* play) { - if (func_80966608(this, play, 0, 0, play->envCtx.unk_1F, 5, 100, 2) || D_801BDBB0 == 2) { + if (func_80966608(this, play, 0, 0, play->envCtx.unk_1F, 5, 100, 2) || (gWeatherMode == 2)) { play->skyboxId = 3; EnWeatherTag_SetupAction(this, func_80966D20); } else if (D_801F4E74 <= 0.01f) { @@ -298,7 +298,7 @@ void func_80966D20(EnWeatherTag* this, PlayState* play) { EnWeatherTag_SetupAction(this, func_80966B08); } - if (D_801BDBB0 != 2) { + if (gWeatherMode != 2) { EnWeatherTag_SetupAction(this, func_80966B08); } } @@ -452,7 +452,7 @@ void func_809674C8(EnWeatherTag* this, PlayState* play) { if ((gSaveContext.save.time >= CLOCK_TIME(7, 0)) && (gSaveContext.save.time < CLOCK_TIME(17, 30)) && (play->envCtx.unk_F2[2] == 0)) { - D_801BDBB0 = 1; + gWeatherMode = 1; func_800FD78C(play); play->envCtx.unk_F2[4] = 0x20; EnWeatherTag_SetupAction(this, func_80967608); @@ -471,7 +471,7 @@ void func_809674C8(EnWeatherTag* this, PlayState* play) { // WEATHERTAG_TYPE_LOCALDAY2RAIN 2 void func_80967608(EnWeatherTag* this, PlayState* play) { if ((WEATHER_TAG_RANGE100(this) + 10.0f) < Actor_XZDistanceBetweenActors(&GET_PLAYER(play)->actor, &this->actor)) { - D_801BDBB0 = 0; + gWeatherMode = 0; EnWeatherTag_SetupAction(this, func_809674C8); } } diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 4a62de6a23..e7925f4007 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -1,14 +1,14 @@ /* * File: z_select.c * Overlay: ovl_select - * Description: Debug map select + * Description: Debug Map Select Menu */ #include "z_select.h" #include "libc/alloca.h" #include "overlays/gamestates/ovl_title/z_title.h" -void Select_LoadTitle(SelectContext* this) { +void MapSelect_LoadTitle(MapSelectState* this) { { GameState* gameState = &this->state; gameState->running = false; @@ -17,7 +17,7 @@ void Select_LoadTitle(SelectContext* this) { SET_NEXT_GAMESTATE(&this->state, Title_Init, TitleContext); } -void Select_LoadGame(SelectContext* this, u32 entranceIndex, s32 opt) { +void MapSelect_LoadGame(MapSelectState* this, u32 entranceIndex, s32 opt) { if (gSaveContext.fileNum == 0xFF) { Sram_InitDebugSave(); } @@ -53,7 +53,7 @@ void Select_LoadGame(SelectContext* this, u32 entranceIndex, s32 opt) { gSaveContext.respawn[RESPAWN_MODE_ZORA].entranceIndex = 0xFF; gSaveContext.respawn[RESPAWN_MODE_DEKU].entranceIndex = 0xFF; gSaveContext.respawn[RESPAWN_MODE_HUMAN].entranceIndex = 0xFF; - D_801BDBB0 = 0; + gWeatherMode = 0; do { GameState* gameState = &this->state; @@ -62,300 +62,440 @@ void Select_LoadGame(SelectContext* this, u32 entranceIndex, s32 opt) { SET_NEXT_GAMESTATE(&this->state, Play_Init, PlayState); } -// "Translation" ("Actual name") +// "Translation" (Actual name) static SceneSelectEntry sScenes[] = { - // " 0: OP Woods for Cutscene Use" (" 0: Forest Opening Scene") - { " 0:OP\x8Cデモ\x8Dヨウ シンリン", Select_LoadGame, 0x1C00 }, - // " 0-0: Lost Woods" (" 0-0: Lost Woods") - { " 0-0:\x8Dマヨイ ノ モリ", Select_LoadGame, 0xC400 }, - // " 1: Town Outskirts" (" 1: Termina Field") - { " 1:\x8Cタウン \x8Dコウガイ", Select_LoadGame, 0x5400 }, - // " 1-0: Astral Observatory" (" 1-0: Astral Observatory") - { " 1-0:\x8Dテンモンカンソクジョ", Select_LoadGame, 0x4C00 }, - // " 1 - 1: Astral Observatory Telescope" (" 1 - 1: Astral Observatory - Telescope") - { " 1-1:\x8Dテンモンカンソクジョ デ ボウエンキョウ", Select_LoadGame, 0x54A0 }, - // " 1 - 2: Ikana Graveyard" (" 1 - 2: Ikana Canyon Graveyard") - { " 1-2:\x8Cイカーナ \x8Dノ ハカバ", Select_LoadGame, 0x8000 }, - // " 2: Romani Ranch" (" 2: Romani Ranch") - { " 2:\x8Cロマニー \x8Dボクジョウ", Select_LoadGame, 0x6400 }, - // " 3: Milk Road" (" 3: Milk Road") - { " 3:\x8Cミルクロード", Select_LoadGame, 0x3E00 }, - // " 4: Main Building" (" 4: Ranch House") - { " 4:\x8Dオモヤ", Select_LoadGame, 0x610 }, - // " 5: Cow Shed" (" 5: Cow Shed") - { " 5:\x8Dウシゴヤ", Select_LoadGame, 0x600 }, - // " 6: Cucco Shed" (" 6: Cucco Shed") - { " 6:\x8Cコッコ \x8Dゴヤ", Select_LoadGame, 0x7E00 }, - // " 7: Dog Racing Area" (" 7: Doggy Racetrack") - { " 7:\x8Cドッグレース\x8Dジョウ", Select_LoadGame, 0x7C00 }, - // " 8: Gorman Track" (" 8: Gorman Track") - { " 8:\x8Cゴーマン トラック", Select_LoadGame, 0xCE00 }, - // " 10: Mountain Village -Winter-" (" 10: Mountain Village - Winter") - { " 10:\x8Dヤマザト -フユ-", Select_LoadGame, 0x9A00 }, - // " 10 - 0: Mountain Village -Spring-" (" 10 - 0: Mountain Village - Spring") - { " 10-0:\x8Dヤマザト -ハル-", Select_LoadGame, 0xAE00 }, - // " 10 - 1: Mountain Village Blacksmith" (" 10 - 1: Mountain Smithy") - { " 10-1:\x8Dヤマザト ノ カジヤ", Select_LoadGame, 0x5200 }, - // " 11: Goron Village -Winter-" (" 11: Goron Village - Winter") - { " 11:\x8Cゴロン\x8D ノ サト -フユ-", Select_LoadGame, 0x9400 }, - // " 11-0: Goron Village -Spring-" (" 11-0: Goron Village - Spring") - { " 11-0:\x8Cゴロン\x8D ノ サト -ハル-", Select_LoadGame, 0x8A00 }, - // " 11-1: Goron Shrine" (" 11-1: Goron Shrine") - { " 11-1:\x8Cゴロン\x8D ノ ホコラ", Select_LoadGame, 0x5E00 }, - // " 11-2: Lone Peak Shrine" (" 11-2: Lone Peak Shrine") - { " 11-2:\x8Dハナレヤマ ノ ホコラ", Select_LoadGame, 0x1500 }, - // " 11-3: Goron Shop" (" 11-3: Goron Shop") - { " 11-3:\x8Cゴロン \x8Dノ ミセ", Select_LoadGame, 0x7400 }, - // " 12: Snowhead" (" 12: Snowhead") - { " 12:\x8Cスノーヘッド", Select_LoadGame, 0xB200 }, - // " 13: Blizzard Path" (" 13: Path to Goron Village - Part 1") - { " 13:\x8Dフブキ ノ ミチ", Select_LoadGame, 0x3200 }, - // " 14: Snowball Path" (" 14: Path to Goron Village - Part 2") - { " 14:\x8Dユキダマ ノ ミチ", Select_LoadGame, 0xB000 }, - // " 15: Goron Racetrack" (" 15: Goron Racetrack") - { " 15:\x8Cゴロンレース \x8Dジョウ", Select_LoadGame, 0xD000 }, - // " 16: Goron Grave" (" 16: Darmani's Grave") - { " 16:\x8Cゴロン \x8Dノ ハカ", Select_LoadGame, 0x9600 }, - // " 17: Snow Field Battle -Winter-" (" 17: Path to Goron Village - Winter") - { " 17:\x8Dセツゲン \x8Cバトル \x8D-フユ-", Select_LoadGame, 0xB400 }, - // " 17-0: Snow Field Battle -Spring-" (" 17-0: Path to Goron Village - Spring") - { " 17-0:\x8Dセツゲン \x8Cバトル \x8D-ハル-", Select_LoadGame, 0xB600 }, - // " 20: Swampland" (" 20: Southern Swamp") - { " 20:\x8Dヌマチ", Select_LoadGame, 0x8400 }, - // " 20-0: Swampland - Afterwards" (" 20-0: Southern Swamp - After Odolwa") - { " 20-0:\x8Dヌマチ ソノゴ", Select_LoadGame, 0xC00 }, - // " 20-1: Swamp Tourist Information" (" 20-1: Tourist Information") - { " 20-1:\x8Dヌマ ノ カンコウアンナイ", Select_LoadGame, 0xA800 }, - // " 20-2: Magic Hags' Potion Shop" (" 20-2: Magic Hags' Potion Shop") - { " 20-2:\x8Dマホウオババ ノ クスリヤ", Select_LoadGame, 0x400 }, - // " 21: Wood Mountain" (" 21: Woodfall") - { " 21:\x8Cウッドマウンテン", Select_LoadGame, 0x8600 }, - // " 21-0: Deku Princess's Prison" (" 21-0: Deku Princess's Prison [Cutscene: Tatl Apologizes]") - { " 21-0:\x8Cデク\x8Dヒメ ノ ロウヤ", Select_LoadGame, 0x3010 }, - // " 22: Deku Castle" (" 22: Deku Palace") - { " 22:\x8Cデクナッツ \x8Dノ シロ", Select_LoadGame, 0x5000 }, - // " 22-0: Boe Hole 0" (" 22-0: Deku Palace Grotto 0 - Deku Baba & Butterflies, Entrance 1") - { " 22-0:\x8Cクロスケ \x8Dノ アナ0", Select_LoadGame, 0x1460 }, - // " 22-1: Boe Hole 1" (" 22-1: Deku Palace Grotto 1 - Deku Baba & Butterflies, Entrance 2") - { " 22-1:\x8Cクロスケ \x8Dノ アナ1", Select_LoadGame, 0x14E0 }, - // " 22-2: Boe Hole 2" (" 22-2: Deku Palace Grotto 2 - Skullwalltula Wall, Lower Entrance") - { " 22-2:\x8Cクロスケ \x8Dノ アナ2", Select_LoadGame, 0x1480 }, - // " 22-3: Boe Hole 3" (" 22-3: Deku Palace Grotto 3 - Skullwalltula Wall, Upper Entrance") - { " 22-3:\x8Cクロスケ \x8Dノ アナ3", Select_LoadGame, 0x14F0 }, - // " 22-4: Boe Hole 4" (" 22-4: Deku Palace Grotto 4 - Bean Seller") - { " 22-4:\x8Cクロスケ \x8Dノ アナ4", Select_LoadGame, 0x14C0 }, - // " 24: Beast Path" (" 24: Road to Swamp") - { " 24:\x8Dケモノミチ", Select_LoadGame, 0x7A00 }, - // " 24-0: Forest Shooting Gallery" (" 24-0: Swamp Shooting Gallery") - { " 24-0:\x8Dモリ ノ シャテキジョウ", Select_LoadGame, 0x4200 }, - // " 25: Deku King's Chamber" (" 25: Deku Palace Throne Room") - { " 25:\x8Cデク\x8Dオウ ノ マ", Select_LoadGame, 0x7600 }, - // " 26: Woods of Mystery" (" 26: Woods of Mystery") - { " 26:\x8Dフシギ ノ モリ", Select_LoadGame, 0xC200 }, - // " 30: Great Bay Coast" (" 30: Great Bay Coast - Entrance Area") - { " 30:\x8Cグレートベイ\x8D ノ カイガン", Select_LoadGame, 0x6800 }, - // " 30-0: Ocean Laboratory" (" 30-0: Marine Research Lab") - { " 30-0:\x8Dカイヨウ ケンキュウジョ", Select_LoadGame, 0x5800 }, - // " 30-1: Fisherman's House" (" 30-1: Fisherman's Hut") - { " 30-1:\x8Dリョウシ ノ イエ", Select_LoadGame, 0x7200 }, - // " 30-2: Pointed Rock" (" 30-2: Twin Pillars") - { " 30-2:\x8Dトンガリ イワ", Select_LoadGame, 0x4400 }, - // " 31: Cape" (" 31: Great Bay Coast - River Area") - { " 31:\x8Dミサキ", Select_LoadGame, 0x6A00 }, - // " 32: Outside of Pirates' Fortress" (" 32: Pirates' Fortress - Exterior") - { " 32:\x8Dカイゾクノトリデマエ", Select_LoadGame, 0x7000 }, - // " 32-0: Pirates' Fortress" (" 32-0: Pirates' Fortress - Courtyard") - { " 32-0:\x8Dカイゾクノトリデ", Select_LoadGame, 0x2200 }, - // " 32-1: Pirates' Fortress - Telescope" (" 32-1: Pirates' Fortress - Secret Entrance (Looking Through - // Telescope)") - { " 32-1:\x8Dカイゾクノトリデ ボウエンキョウ", Select_LoadGame, 0x22A0 }, - // " 32-2: Pirates' Fortress - Interior 0" (" 32-2: Pirates' Fortress - Throne Room") - { " 32-2:\x8Dカイゾクノトリデナイブ0", Select_LoadGame, 0x4000 }, - // " 32-3: Pirates' Fortress - Interior 1" (" 32-3: Pirates' Fortress - View of Throne Room, Wasp Nest") - { " 32-3:\x8Dカイゾクノトリデナイブ1", Select_LoadGame, 0x4010 }, - // " 32-4: Pirates' Fortress - Interior 2" (" 32-4: Pirates' Fortress - Tempting Treasure Chest, Leading to 32-5") - { " 32-4:\x8Dカイゾクノトリデナイブ2", Select_LoadGame, 0x4020 }, - // " 32-5: Pirates' Fortress - Interior 3" (" 32-5: Pirates' Fortress - Zora Egg Room, One Shell Blade") - { " 32-5:\x8Dカイゾクノトリデナイブ3", Select_LoadGame, 0x4030 }, - // " 32-6: Pirates' Fortress - Interior 4" (" 32-6: Pirates' Fortress - Oil Drum Room, Leading to 32-7") - { " 32-6:\x8Dカイゾクノトリデナイブ4", Select_LoadGame, 0x4040 }, - // " 32-7: Pirates' Fortress - Interior 5" (" 32-7: Pirates' Fortress - Zora Egg Room, One Shell Blade") - { " 32-7:\x8Dカイゾクノトリデナイブ5", Select_LoadGame, 0x4050 }, - // " 32-8: Pirates' Fortress - Interior 6" (" 32-8: Pirates' Fortress - Fenced Indoor Walkway, Leading to 32-9") - { " 32-8:\x8Dカイゾクノトリデナイブ6", Select_LoadGame, 0x4060 }, - // " 32-9: Pirates' Fortress - Interior 7" (" 32-9: Pirates' Fortress - Zora Egg Room, One Desbreko & Treasure - // Chest") - { " 32-9:\x8Dカイゾクノトリデナイブ7", Select_LoadGame, 0x4070 }, - // " 32-10: Pirates' Fortress - Interior 8" (" 32-10: Pirates' Fortress - End of Secret Entrance (Telescope - // Room)") - { " 32-10:\x8Dカイゾクノトリデナイブ8", Select_LoadGame, 0x4080 }, - // " 32-11: Pirates' Fortress - Interior 9" (" 32-11: Pirates' Fortress - Start of Secret Entrance") - { " 32-11:\x8Dカイゾクノトリデナイブ9", Select_LoadGame, 0x4090 }, - // " 33: Zora Shrine" (" 33: Zora Hall") - { " 33:\x8Cゾーラ \x8Dノ ホコラ", Select_LoadGame, 0x6000 }, - // " 33-0: Zora Shop" (" 33-0: Zora Shop") - { " 33-0:\x8Cゾーラ \x8Dノ ミセ", Select_LoadGame, 0x9250 }, - // " 33-1: Zora Waiting Room" (" 33-1: Mikau & Tijo's Room") - { " 33-1:\x8Cゾーラ \x8Dノ ヒカエシツ", Select_LoadGame, 0x9200 }, - // " 34: Great Bay" (" 34: Great Bay [Cutscene: Pirates Approach Temple]") - { " 34:\x8Cグレートベイ", Select_LoadGame, 0xBE00 }, - // " 35: Mountain Stream Above Falls" (" 35: Waterfall Rapids") - { " 35:\x8Dタキウエ ノ ケイリュウ", Select_LoadGame, 0x8E00 }, - // " 40: Rock Building Shaft" (" 40: Stone Tower") - { " 40:\x8Cロックビル\x8D ノ タテアナ", Select_LoadGame, 0xAA00 }, - // " 40-0: Heaven & Earth Are Overturned" (" 40-0: Stone Tower [Cutscene: Tower is Flipped]") - { " 40-0:\x8Dテンチ ギャクテン", Select_LoadGame, 0xAC00 }, - // " 41: Road to Ikana" (" 41: Road to Ikana") - { " 41:\x8Cイカーナ \x8Dヘノ ミチ", Select_LoadGame, 0xA000 }, - // " 42: Ancient Castle of Ikana" (" 42: Ancient Castle of Ikana") - { " 42:\x8Cイカーナ\x8D コジョウ", Select_LoadGame, 0x3400 }, - // " 42-0: Ancient Castle of Ikana - Interior" (" 42-0: Ancient Castle of Ikana - Interior") - { " 42-0:\x8Cイカーナ\x8D ノ コジョウ ナイブ", Select_LoadGame, 0x3430 }, - // " 42-B: Ancient Castle of Ikana - Boss Room" (" 42-B: Ikana King's Throne") - { " 42-B:\x8Cイカーナ\x8D ノ コジョウ \x8Cボス\x8Dベヤ", Select_LoadGame, 0xA600 }, - // " 43: Ikana Canyon" (" 43: Ikana Canyon") - { " 43:\x8Cイカーナ \x8Dケイコク", Select_LoadGame, 0x2000 }, - // " 43-0: Ikana Canyon Cave" (" 43-0: Sharp's Cave") - { " 43-0:\x8Cイカーナ \x8Dケイコク ドウクツ", Select_LoadGame, 0x20E0 }, - // " 43-1: Secom's House" (" 43-1: Sakon's Hideout") - { " 43-1:\x8Cセコム \x8Dノ イエ", Select_LoadGame, 0x9800 }, - // " 43-2: Music Box House" (" 43-2: Music Box House") - { " 43-2:\x8Cオルゴール ハウス", Select_LoadGame, 0xA400 }, - // " 50: Clock Town -East-" (" 50: East Clock Town") - { " 50:\x8Cクロックタウン \x8D-ヒガシ-", Select_LoadGame, 0xD200 }, - // " 50-0: Town Target Range" (" 50-0: Shooting Gallery") - { " 50-0:\x8Dマチ ノ シャテキジョウ", Select_LoadGame, 0x3A00 }, - // " 50-1: Honey and Darling's Shop" (" 50-1: Honey & Darling's Shop") - { " 50-1:\x8Cハニー アンド ダーリン \x8Dノ ミセ", Select_LoadGame, 0x800 }, - // " 50-2: Treasure Chest Shop" (" 50-2: Treasure Chest Shop") - { " 50-2:\x8Dタカラバコヤ", Select_LoadGame, 0x2800 }, - // " 50-3: Pots 'n' Pans Inn" (" 50-3: Stockpot Inn") - { " 50-3:\x8Cナベ\x8Dカマ テイ", Select_LoadGame, 0xBC00 }, - // " 50-4: Mayor's House" (" 50-4: The Mayor's Residence") - { " 50-4:\x8Dチョウチョウ ノ イエ", Select_LoadGame, 0 }, - // " 50-5: Milk Bar" (" 50-5: Milk Bar") - { " 50-5:\x8Cミルクバー", Select_LoadGame, 0x2400 }, - // " 51: Clock Town -West-" (" 51: West Clock Town") - { " 51:\x8Cクロックタウン \x8D-ニシ-", Select_LoadGame, 0xD400 }, - // " 51-0: Bomb Shop" (" 51-0: Bomb Shop") - { " 51-0:\x8Dバクダン ヤ", Select_LoadGame, 0xCA00 }, - // " 51-1: Maniac Mart" (" 51-1: Curiosity Shop") - { " 51-1:\x8Cマニ\x8Dヤ", Select_LoadGame, 0xE00 }, - // " 51-2: General Store" (" 51-2: Trading Post") - { " 51-2:\x8Dザッカ ヤ", Select_LoadGame, 0x6200 }, - // " 51-3: Sword Dojo" (" 51-3: Swordsman's School") - { " 51-3:\x8Dケンドウジョウ", Select_LoadGame, 0xA200 }, - // " 51-4: Post House" (" 51-4: Post Office") - { " 51-4:\x8Dポストハウス", Select_LoadGame, 0x5600 }, - // " 51-5: Lottery Shop" (" 51-5: Lottery Shop") - { " 51-5:\x8Dタカラクジヤ", Select_LoadGame, 0x6C00 }, - // " 52: Clock Town -North-" (" 52: North Clock Town") - { " 52:\x8Cクロックタウン \x8D-キタ-", Select_LoadGame, 0xD600 }, - // " 53: Clocktown -South-" (" 53: South Clock Town") - { " 53:\x8Cクロックタウン \x8D-ミナミ-", Select_LoadGame, 0xD800 }, - // " 53-0: Clock Tower Interior" (" 53-0: Clock Tower Interior") - { " 53-0:\x8Dトケイトウナイブ", Select_LoadGame, 0xC000 }, - // " 54: Clock Tower Rooftop" (" 54: Clock Tower Rooftop") - { " 54:\x8Dトケイトウ オクジョウ", Select_LoadGame, 0x2C00 }, - // " 55: Laundry Area" (" 55: Laundry Pool") - { " 55:\x8Dセンタクジョウ", Select_LoadGame, 0xDA00 }, - // " 55-0: Maniac Mart - Rear Entrance" (" 55-0: Curiosity Shop - Back Room") - { " 55-0:\x8Cマニ\x8Dヤ ノ ウラグチ", Select_LoadGame, 0xE10 }, - // " 55-1: Maniac Mart - Peephole" (" 55-1: Curiosity Shop Back Room - Peephole") - { " 55-1:\x8Cマニ\x8Dヤ ノ ノゾキアナ", Select_LoadGame, 0xE20 }, - // "100: Wood Mountain Temple" ("100: Woodfall Temple") - { "100:\x8Cウッドマウンテン \x8Dノ シンデン", Select_LoadGame, 0x3000 }, - // "100-B: Wood Mountain Temple - Boss" ("100-B: Odolwa's Lair") - { "100-B:\x8Cウッドマウンテン \x8Dノ シンデン\x8C-ボス-", Select_LoadGame, 0x3800 }, - // "101: Snowhead Temple" ("101: Snowhead Temple") - { "101:\x8Cスノーヘッド \x8Dノ シンデン", Select_LoadGame, 0x3C00 }, - // "101-B: Snowhead Temple - Boss" ("101-B: Goht's Lair") - { "101-B:\x8Cスノーヘッド \x8Dノ シンデン\x8C-ボス-", Select_LoadGame, 0x8200 }, - // "102: Great Bay Temple" ("102: Great Bay Temple") - { "102:\x8Cグレートベイ \x8Dノ シンデン", Select_LoadGame, 0x8C00 }, - // "102-B: Great Bay Temple - Boss" ("102-B: Gyorg's Lair") - { "102-B:\x8Cグレートベイ \x8Dノ シンデン\x8C-ボス-", Select_LoadGame, 0xB800 }, - // "103: Rock Building Temple -Top Side-" ("103: Stone Tower Temple") - { "103:\x8Cロックビル \x8Dノ シンデン-オモテー", Select_LoadGame, 0x2600 }, - // "103-0: Rock Building Temple -Underside-" ("103-0: Stone Tower Temple - Flipped") - { "103-0:\x8Cロックビル \x8Dノ シンデン-ウラー", Select_LoadGame, 0x2A00 }, - // "103-B: Rock Building Temple - Boss" ("103-B: Twinmold's Lair") - { "103-B:\x8Cロックビル \x8Dノ シンデン\x8C-ボス-", Select_LoadGame, 0x6600 }, - // "104: Steppe" ("104: On the Moon") - { "104:\x8Cソウゲン", Select_LoadGame, 0xC800 }, - // "104-0: Last Deku Dungeon" ("104-0: Deku Trial") - { "104-0:\x8Cラスト デク ダンジョン", Select_LoadGame, 0x4E00 }, - // "104-1: Last Goron Dungeon" ("104-1: Goron Trial") - { "104-1:\x8Cラスト ゴロン ダンジョン", Select_LoadGame, 0x7800 }, - // "104-2: Last Zora Dungeon" ("104-2: Zora Trial") - { "104-2:\x8Cラスト ゾーラ ダンジョン", Select_LoadGame, 0x8800 }, - // "104-3: Last Link Dungeon" ("104-3: Link Trial") - { "104-3:\x8Cラスト リンク ダンジョン", Select_LoadGame, 0xC600 }, - // "104-B: Last Dungeon -Boss-" ("104-B: Majora's Lair") - { "104-B:\x8Cラストダンジョン -ボス-", Select_LoadGame, 0x200 }, - // "119: Deku Shrine" ("119: Deku Shrine") - { "119:\x8Cデクナッツ \x8Dノ ホコラ", Select_LoadGame, 0x9E00 }, - // "121: Secret Shrine" ("121: Secret Shrine") - { "121:\x8Dヒミツ ノ ホコラ", Select_LoadGame, 0xBA00 }, - // "122: Opening Dungeon" ("122: Pond Area [Cutscene: Falling of the Cliff]") - { "122:\x8Cオープニング ダンジョン", Select_LoadGame, 0x2E00 }, - // "123: Giants' Chamber" ("123: Giants' Chamber") - { "123:\x8Dキョジン ノ マ", Select_LoadGame, 0xCC00 }, - // "126: Deku Minigame" ("126: Deku Rupee Minigame") - { "126:\x8Cデクナッツ ミニゲーム", Select_LoadGame, 0x3600 }, - // "127-0: Fairy Fountain 0" ("127-0: Fairy Fountain - Clock Town") - { "127-0:\x8Dヨウセイ ノ イズミ 0", Select_LoadGame, 0x4600 }, - // "127-1: Fairy Fountain 1" ("127-1: Fairy Fountain - Woodfall") - { "127-1:\x8Dヨウセイ ノ イズミ 1", Select_LoadGame, 0x4610 }, - // "127-2: Fairy Fountain 2" ("127-2: Fairy Fountain - Snowhead") - { "127-2:\x8Dヨウセイ ノ イズミ 2", Select_LoadGame, 0x4620 }, - // "127-3: Fairy Fountain 3" ("127-3: Fairy Fountain - Great Bay Coast") - { "127-3:\x8Dヨウセイ ノ イズミ 3", Select_LoadGame, 0x4630 }, - // "127-4: Fairy Fountain 4" ("127-4: Fairy Fountain - Ikana Canyon") - { "127-4:\x8Dヨウセイ ノ イズミ 4", Select_LoadGame, 0x4640 }, - // "128: Swamp Spider Manor" ("128: Swamp Spider House") - { "128:\x8Dヌマ ノ クモヤカタ", Select_LoadGame, 0x4800 }, - // "129: Ocean Spider Manor" ("129: Oceanside Spider House") - { "129:\x8Dウミ ノ クモヤカタ", Select_LoadGame, 0x4A00 }, - // "130: Beneath the Graves - Dampe" ("130: Beneath the Graveyard") - { "130:\x8Dハカ ノ シタ-\x8Cダンペイ-", Select_LoadGame, 0x5A00 }, - // "131: Beneath the Well" ("131: Beneath the Well") - { "131:\x8Dイド ノ シタ", Select_LoadGame, 0x9000 }, - // "132: Ghost Hut" (" 132: Ghost Hut") - { "132:\x8Dユウレイゴヤ", Select_LoadGame, 0x9C00 }, - // "133-0: Beneath the Graves 0" ("133-0: Beneath the Graveyard - Part 1") - { "133-0:\x8Dハカ ノ シタ0", Select_LoadGame, 0xA00 }, - // "133-1: Beneath the Graves 1" ("133-1: Beneath the Graveyard - Part 2") - { "133-1:\x8Dハカ ノ シタ1", Select_LoadGame, 0xA10 }, - // "134-0: Secret Grotto 0" ("134-0: Secret Grotto - Four Gossip Stones") - { "134-0:\x8Dカクシアナ 0", Select_LoadGame, 0x1400 }, - // "134-1: Secret Grotto 1" ("134-1: Secret Grotto - Four Gossip Stones, Skulltula") - { "134-1:\x8Dカクシアナ 1", Select_LoadGame, 0x1410 }, - // "134-2: Secret Grotto 2" ("134-2: Secret Grotto - Four Gossip Stones, Water Puddles") - { "134-2:\x8Dカクシアナ 2", Select_LoadGame, 0x1420 }, - // "134-3: Secret Grotto 3" ("134-3: Secret Grotto - Four Gossip Stones, Water Puddle With Bugs") - { "134-3:\x8Dカクシアナ 3", Select_LoadGame, 0x1430 }, - // "134-4: Secret Grotto 4" ("134-4: Secret Grotto - Chest with Blue Rupee, Deku Babas") - { "134-4:\x8Dカクシアナ 4", Select_LoadGame, 0x1440 }, - // "134-5: Secret Grotto 5" ("134-5: Secret Grotto - Hot Spring, Deku Babas, Large Stones") - { "134-5:\x8Dカクシアナ5", Select_LoadGame, 0x1450 }, - // "134-7: Secret Grotto 7" ("134-7: Secret Grotto - Two Dondogos") - { "134-7:\x8Dカクシアナ 7", Select_LoadGame, 0x1470 }, - // "134-9: Secret Grotto 9" ("134-9: Secret Grotto - Tall Grass With Box, Pot, Bugs") - { "134-9:\x8Dカクシアナ 9", Select_LoadGame, 0x1490 }, - // "134-10: Secret Grotto 10" ("134-10: Secret Grotto - Two Cows Surrounded by Grass") - { "134-10:\x8Dカクシアナ10", Select_LoadGame, 0x14A0 }, - // "134-11: Secret Grotto 11" ("134-11: Secret Grotto - Watery Hole Filled with Underwater Babas, Fish") - { "134-11:\x8Dカクシアナ11", Select_LoadGame, 0x14B0 }, - // "134-13: Secret Grotto 13" ("134-13: Secret Grotto - Peahat in Center") - { "134-13:\x8Dカクシアナ13", Select_LoadGame, 0x14D0 }, - // "X 1: SPOT00" ("X 1: Opening [Cutscene: Opening Cutscene]") - { "X 1:SPOT00", Select_LoadGame, 0x1C00 }, - // "Title" ("Title Screen") - { "title", (void*)Select_LoadTitle, 0x0000 }, + // "0: OP Woods for Cutscene Use" (Forest Opening Scene) + { " 0:OP" GFXP_KATAKANA "デモ" GFXP_HIRAGANA "ヨウ シンリン", MapSelect_LoadGame, 0x1C00 }, + + // "0-0: Lost Woods" (Lost Woods) + { " 0-0:" GFXP_HIRAGANA "マヨイ ノ モリ", MapSelect_LoadGame, 0xC400 }, + + // "1: Town Outskirts" (Termina Field) + { " 1:" GFXP_KATAKANA "タウン " GFXP_HIRAGANA "コウガイ", MapSelect_LoadGame, 0x5400 }, + + // "1-0: Astral Observatory" (Astral Observatory) + { " 1-0:" GFXP_HIRAGANA "テンモンカンソクジョ", MapSelect_LoadGame, 0x4C00 }, + + // "1-1: Astral Observatory Telescope" (Astral Observatory - Telescope) + { " 1-1:" GFXP_HIRAGANA "テンモンカンソクジョ デ ボウエンキョウ", MapSelect_LoadGame, 0x54A0 }, + + // "1-2: Ikana Graveyard" (Ikana Canyon Graveyard) + { " 1-2:" GFXP_KATAKANA "イカーナ " GFXP_HIRAGANA "ノ ハカバ", MapSelect_LoadGame, 0x8000 }, + + // "2: Romani Ranch" (Romani Ranch) + { " 2:" GFXP_KATAKANA "ロマニー " GFXP_HIRAGANA "ボクジョウ", MapSelect_LoadGame, 0x6400 }, + + // "3: Milk Road" (Milk Road) + { " 3:" GFXP_KATAKANA "ミルクロード", MapSelect_LoadGame, 0x3E00 }, + + // "4: Main Building" ("Ranch House) + { " 4:" GFXP_HIRAGANA "オモヤ", MapSelect_LoadGame, 0x610 }, + + // "5: Cow Shed" (Cow Shed) + { " 5:" GFXP_HIRAGANA "ウシゴヤ", MapSelect_LoadGame, 0x600 }, + + // "6: Cucco Shed" (Cucco Shed) + { " 6:" GFXP_KATAKANA "コッコ " GFXP_HIRAGANA "ゴヤ", MapSelect_LoadGame, 0x7E00 }, + + // "7: Dog Racing Area" (Doggy Racetrack) + { " 7:" GFXP_KATAKANA "ドッグレース" GFXP_HIRAGANA "ジョウ", MapSelect_LoadGame, 0x7C00 }, + + // "8: Gorman Track" (Gorman Track) + { " 8:" GFXP_KATAKANA "ゴーマン トラック", MapSelect_LoadGame, 0xCE00 }, + + // "10: Mountain Village -Winter-" (Mountain Village - Winter) + { " 10:" GFXP_HIRAGANA "ヤマザト -フユ-", MapSelect_LoadGame, 0x9A00 }, + + // "10-0: Mountain Village -Spring-" (Mountain Village - Spring) + { " 10-0:" GFXP_HIRAGANA "ヤマザト -ハル-", MapSelect_LoadGame, 0xAE00 }, + + // "10-1: Mountain Village Blacksmith" (Mountain Smithy) + { " 10-1:" GFXP_HIRAGANA "ヤマザト ノ カジヤ", MapSelect_LoadGame, 0x5200 }, + + // "11: Goron Village -Winter-" (Goron Village - Winter) + { " 11:" GFXP_KATAKANA "ゴロン" GFXP_HIRAGANA " ノ サト -フユ-", MapSelect_LoadGame, 0x9400 }, + + // "11-0: Goron Village -Spring-" (Goron Village - Spring) + { " 11-0:" GFXP_KATAKANA "ゴロン" GFXP_HIRAGANA " ノ サト -ハル-", MapSelect_LoadGame, 0x8A00 }, + + // "11-1: Goron Shrine" (Goron Shrine) + { " 11-1:" GFXP_KATAKANA "ゴロン" GFXP_HIRAGANA " ノ ホコラ", MapSelect_LoadGame, 0x5E00 }, + + // "11-2: Lone Peak Shrine" (Lone Peak Shrine) + { " 11-2:" GFXP_HIRAGANA "ハナレヤマ ノ ホコラ", MapSelect_LoadGame, 0x1500 }, + + // "11-3: Goron Shop" (Goron Shop) + { " 11-3:" GFXP_KATAKANA "ゴロン " GFXP_HIRAGANA "ノ ミセ", MapSelect_LoadGame, 0x7400 }, + + // "12: Snowhead" (Snowhead) + { " 12:" GFXP_KATAKANA "スノーヘッド", MapSelect_LoadGame, 0xB200 }, + + // "13: Blizzard Path" (Path to Goron Village - Part 1) + { " 13:" GFXP_HIRAGANA "フブキ ノ ミチ", MapSelect_LoadGame, 0x3200 }, + + // "14: Snowball Path" (Path to Goron Village - Part 2) + { " 14:" GFXP_HIRAGANA "ユキダマ ノ ミチ", MapSelect_LoadGame, 0xB000 }, + + // "15: Goron Racetrack" (Goron Racetrack) + { " 15:" GFXP_KATAKANA "ゴロンレース " GFXP_HIRAGANA "ジョウ", MapSelect_LoadGame, 0xD000 }, + + // "16: Goron Grave" (Darmani's Grave) + { " 16:" GFXP_KATAKANA "ゴロン " GFXP_HIRAGANA "ノ ハカ", MapSelect_LoadGame, 0x9600 }, + + // "17: Snow Field Battle -Winter-" (Path to Goron Village - Winter) + { " 17:" GFXP_HIRAGANA "セツゲン " GFXP_KATAKANA "バトル " GFXP_HIRAGANA "-フユ-", MapSelect_LoadGame, 0xB400 }, + + // "17-0: Snow Field Battle -Spring-" (Path to Goron Village - Spring) + { " 17-0:" GFXP_HIRAGANA "セツゲン " GFXP_KATAKANA "バトル " GFXP_HIRAGANA "-ハル-", MapSelect_LoadGame, 0xB600 }, + + // "20: Swampland" (Southern Swamp) + { " 20:" GFXP_HIRAGANA "ヌマチ", MapSelect_LoadGame, 0x8400 }, + + // "20-0: Swampland - Afterwards" (Southern Swamp - After Odolwa) + { " 20-0:" GFXP_HIRAGANA "ヌマチ ソノゴ", MapSelect_LoadGame, 0xC00 }, + + // "20-1: Swamp Tourist Information" (Tourist Information) + { " 20-1:" GFXP_HIRAGANA "ヌマ ノ カンコウアンナイ", MapSelect_LoadGame, 0xA800 }, + + // "20-2: Magic Hags' Potion Shop" (Magic Hags' Potion Shop) + { " 20-2:" GFXP_HIRAGANA "マホウオババ ノ クスリヤ", MapSelect_LoadGame, 0x400 }, + + // "21: Wood Mountain" (Woodfall) + { " 21:" GFXP_KATAKANA "ウッドマウンテン", MapSelect_LoadGame, 0x8600 }, + + // "21-0: Deku Princess's Prison" (Deku Princess's Prison Cutscene: Tatl Apologizes) + { " 21-0:" GFXP_KATAKANA "デク" GFXP_HIRAGANA "ヒメ ノ ロウヤ", MapSelect_LoadGame, 0x3010 }, + + // "22: Deku Castle" (Deku Palace) + { " 22:" GFXP_KATAKANA "デクナッツ " GFXP_HIRAGANA "ノ シロ", MapSelect_LoadGame, 0x5000 }, + + // "22-0: Boe Hole 0" (Deku Palace Grotto 0 - Deku Baba & Butterflies, Entrance 1) + { " 22-0:" GFXP_KATAKANA "クロスケ " GFXP_HIRAGANA "ノ アナ0", MapSelect_LoadGame, 0x1460 }, + + // "22-1: Boe Hole 1" (Deku Palace Grotto 1 - Deku Baba & Butterflies, Entrance 2) + { " 22-1:" GFXP_KATAKANA "クロスケ " GFXP_HIRAGANA "ノ アナ1", MapSelect_LoadGame, 0x14E0 }, + + // "22-2: Boe Hole 2" (Deku Palace Grotto 2 - Skullwalltula Wall, Lower Entrance) + { " 22-2:" GFXP_KATAKANA "クロスケ " GFXP_HIRAGANA "ノ アナ2", MapSelect_LoadGame, 0x1480 }, + + // "22-3: Boe Hole 3" (Deku Palace Grotto 3 - Skullwalltula Wall, Upper Entrance) + { " 22-3:" GFXP_KATAKANA "クロスケ " GFXP_HIRAGANA "ノ アナ3", MapSelect_LoadGame, 0x14F0 }, + + // "22-4: Boe Hole 4" (Deku Palace Grotto 4 - Bean Seller) + { " 22-4:" GFXP_KATAKANA "クロスケ " GFXP_HIRAGANA "ノ アナ4", MapSelect_LoadGame, 0x14C0 }, + + // "24: Beast Path" (Road to Swamp) + { " 24:" GFXP_HIRAGANA "ケモノミチ", MapSelect_LoadGame, 0x7A00 }, + + // "24-0: Forest Shooting Gallery" (Swamp Shooting Gallery) + { " 24-0:" GFXP_HIRAGANA "モリ ノ シャテキジョウ", MapSelect_LoadGame, 0x4200 }, + + // "25: Deku King's Chamber" (Deku Palace Throne Room) + { " 25:" GFXP_KATAKANA "デク" GFXP_HIRAGANA "オウ ノ マ", MapSelect_LoadGame, 0x7600 }, + + // "26: Woods of Mystery" (Woods of Mystery) + { " 26:" GFXP_HIRAGANA "フシギ ノ モリ", MapSelect_LoadGame, 0xC200 }, + + // "30: Great Bay Coast" (Great Bay Coast - Entrance Area) + { " 30:" GFXP_KATAKANA "グレートベイ" GFXP_HIRAGANA " ノ カイガン", MapSelect_LoadGame, 0x6800 }, + + // "30-0: Ocean Laboratory" (Marine Research Lab) + { " 30-0:" GFXP_HIRAGANA "カイヨウ ケンキュウジョ", MapSelect_LoadGame, 0x5800 }, + + // "30-1: Fisherman's House" (Fisherman's Hut) + { " 30-1:" GFXP_HIRAGANA "リョウシ ノ イエ", MapSelect_LoadGame, 0x7200 }, + + // "30-2: Pointed Rock" (Twin Pillars) + { " 30-2:" GFXP_HIRAGANA "トンガリ イワ", MapSelect_LoadGame, 0x4400 }, + + // "31: Cape" (Great Bay Coast - River Area) + { " 31:" GFXP_HIRAGANA "ミサキ", MapSelect_LoadGame, 0x6A00 }, + + // "32: Outside of Pirates' Fortress" (Pirates' Fortress - Exterior) + { " 32:" GFXP_HIRAGANA "カイゾクノトリデマエ", MapSelect_LoadGame, 0x7000 }, + + // "32-0: Pirates' Fortress" (Pirates' Fortress - Courtyard) + { " 32-0:" GFXP_HIRAGANA "カイゾクノトリデ", MapSelect_LoadGame, 0x2200 }, + + // "32-1: Pirates' Fortress - Telescope" (Pirates' Fortress - Secret Entrance, Looking Through Telescope) + { " 32-1:" GFXP_HIRAGANA "カイゾクノトリデ ボウエンキョウ", MapSelect_LoadGame, 0x22A0 }, + + // "32-2: Pirates' Fortress - Interior 0" (Pirates' Fortress - Throne Room) + { " 32-2:" GFXP_HIRAGANA "カイゾクノトリデナイブ0", MapSelect_LoadGame, 0x4000 }, + + // "32-3: Pirates' Fortress - Interior 1" (Pirates' Fortress - View of Throne Room, Wasp Nest) + { " 32-3:" GFXP_HIRAGANA "カイゾクノトリデナイブ1", MapSelect_LoadGame, 0x4010 }, + + // "32-4: Pirates' Fortress - Interior 2" (Pirates' Fortress - Tempting Treasure Chest, Leading to 32-5) + { " 32-4:" GFXP_HIRAGANA "カイゾクノトリデナイブ2", MapSelect_LoadGame, 0x4020 }, + + // "32-5: Pirates' Fortress - Interior 3" (Pirates' Fortress - Zora Egg Room, One Shell Blade) + { " 32-5:" GFXP_HIRAGANA "カイゾクノトリデナイブ3", MapSelect_LoadGame, 0x4030 }, + + // "32-6: Pirates' Fortress - Interior 4" (Pirates' Fortress - Oil Drum Room, Leading to 32-7) + { " 32-6:" GFXP_HIRAGANA "カイゾクノトリデナイブ4", MapSelect_LoadGame, 0x4040 }, + + // "32-7: Pirates' Fortress - Interior 5" (Pirates' Fortress - Zora Egg Room, One Shell Blade) + { " 32-7:" GFXP_HIRAGANA "カイゾクノトリデナイブ5", MapSelect_LoadGame, 0x4050 }, + + // "32-8: Pirates' Fortress - Interior 6" (Pirates' Fortress - Fenced Indoor Walkway, Leading to 32-9) + { " 32-8:" GFXP_HIRAGANA "カイゾクノトリデナイブ6", MapSelect_LoadGame, 0x4060 }, + + // "32-9: Pirates' Fortress - Interior 7" (Pirates' Fortress - Zora Egg Room, One Desbreko & Treasure Chest) + { " 32-9:" GFXP_HIRAGANA "カイゾクノトリデナイブ7", MapSelect_LoadGame, 0x4070 }, + + // "32-10: Pirates' Fortress - Interior 8" (Pirates' Fortress - End of Secret Entrance: Telescope Room) + { " 32-10:" GFXP_HIRAGANA "カイゾクノトリデナイブ8", MapSelect_LoadGame, 0x4080 }, + + // "32-11: Pirates' Fortress - Interior 9" (Pirates' Fortress - Start of Secret Entrance) + { " 32-11:" GFXP_HIRAGANA "カイゾクノトリデナイブ9", MapSelect_LoadGame, 0x4090 }, + + // "33: Zora Shrine" (Zora Hall) + { " 33:" GFXP_KATAKANA "ゾーラ " GFXP_HIRAGANA "ノ ホコラ", MapSelect_LoadGame, 0x6000 }, + + // "33-0: Zora Shop" (Zora Shop) + { " 33-0:" GFXP_KATAKANA "ゾーラ " GFXP_HIRAGANA "ノ ミセ", MapSelect_LoadGame, 0x9250 }, + + // "33-1: Zora Waiting Room" (Mikau & Tijo's Room) + { " 33-1:" GFXP_KATAKANA "ゾーラ " GFXP_HIRAGANA "ノ ヒカエシツ", MapSelect_LoadGame, 0x9200 }, + + // "34: Great Bay" (Great Bay Cutscene: Pirates Approach Temple) + { " 34:" GFXP_KATAKANA "グレートベイ", MapSelect_LoadGame, 0xBE00 }, + + // "35: Mountain Stream Above Falls" (Waterfall Rapids) + { " 35:" GFXP_HIRAGANA "タキウエ ノ ケイリュウ", MapSelect_LoadGame, 0x8E00 }, + + // "40: Rock Building Shaft" (Stone Tower) + { " 40:" GFXP_KATAKANA "ロックビル" GFXP_HIRAGANA " ノ タテアナ", MapSelect_LoadGame, 0xAA00 }, + + // "40-0: Heaven & Earth Are Overturned" (Stone Tower Cutscene: Tower is Flipped) + { " 40-0:" GFXP_HIRAGANA "テンチ ギャクテン", MapSelect_LoadGame, 0xAC00 }, + + // "41: Road to Ikana" (Road to Ikana) + { " 41:" GFXP_KATAKANA "イカーナ " GFXP_HIRAGANA "ヘノ ミチ", MapSelect_LoadGame, 0xA000 }, + + // "42: Ancient Castle of Ikana" (Ancient Castle of Ikana) + { " 42:" GFXP_KATAKANA "イカーナ" GFXP_HIRAGANA " コジョウ", MapSelect_LoadGame, 0x3400 }, + + // "42-0: Ancient Castle of Ikana - Interior" (Ancient Castle of Ikana - Interior) + { " 42-0:" GFXP_KATAKANA "イカーナ" GFXP_HIRAGANA " ノ コジョウ ナイブ", MapSelect_LoadGame, 0x3430 }, + + // "42-B: Ancient Castle of Ikana - Boss Room" (Ikana King's Throne) + { " 42-B:" GFXP_KATAKANA "イカーナ" GFXP_HIRAGANA " ノ コジョウ " GFXP_KATAKANA "ボス" GFXP_HIRAGANA "ベヤ", + MapSelect_LoadGame, 0xA600 }, + + // "43: Ikana Canyon" (Ikana Canyon) + { " 43:" GFXP_KATAKANA "イカーナ " GFXP_HIRAGANA "ケイコク", MapSelect_LoadGame, 0x2000 }, + + // "43-0: Ikana Canyon Cave" (Sharp's Cave) + { " 43-0:" GFXP_KATAKANA "イカーナ " GFXP_HIRAGANA "ケイコク ドウクツ", MapSelect_LoadGame, 0x20E0 }, + + // "43-1: Secom's House" (Sakon's Hideout) + { " 43-1:" GFXP_KATAKANA "セコム " GFXP_HIRAGANA "ノ イエ", MapSelect_LoadGame, 0x9800 }, + + // "43-2: Music Box House" (Music Box House) + { " 43-2:" GFXP_KATAKANA "オルゴール ハウス", MapSelect_LoadGame, 0xA400 }, + + // "50: Clock Town -East-" (East Clock Town) + { " 50:" GFXP_KATAKANA "クロックタウン " GFXP_HIRAGANA "-ヒガシ-", MapSelect_LoadGame, 0xD200 }, + + // "50-0: Town Target Range" (Shooting Gallery) + { " 50-0:" GFXP_HIRAGANA "マチ ノ シャテキジョウ", MapSelect_LoadGame, 0x3A00 }, + + // "50-1: Honey and Darling's Shop" (Honey & Darling's Shop) + { " 50-1:" GFXP_KATAKANA "ハニー アンド ダーリン " GFXP_HIRAGANA "ノ ミセ", MapSelect_LoadGame, 0x800 }, + + // "50-2: Treasure Chest Shop" (Treasure Chest Shop) + { " 50-2:" GFXP_HIRAGANA "タカラバコヤ", MapSelect_LoadGame, 0x2800 }, + + // "50-3: Pots 'n' Pans Inn" (Stockpot Inn) + { " 50-3:" GFXP_KATAKANA "ナベ" GFXP_HIRAGANA "カマ テイ", MapSelect_LoadGame, 0xBC00 }, + + // "50-4: Mayor's House" (The Mayor's Residence) + { " 50-4:" GFXP_HIRAGANA "チョウチョウ ノ イエ", MapSelect_LoadGame, 0 }, + + // "50-5: Milk Bar" (Milk Bar) + { " 50-5:" GFXP_KATAKANA "ミルクバー", MapSelect_LoadGame, 0x2400 }, + + // "51: Clock Town -West-" (West Clock Town) + { " 51:" GFXP_KATAKANA "クロックタウン " GFXP_HIRAGANA "-ニシ-", MapSelect_LoadGame, 0xD400 }, + + // "51-0: Bomb Shop" (Bomb Shop) + { " 51-0:" GFXP_HIRAGANA "バクダン ヤ", MapSelect_LoadGame, 0xCA00 }, + + // "51-1: Maniac Mart" (Curiosity Shop) + { " 51-1:" GFXP_KATAKANA "マニ" GFXP_HIRAGANA "ヤ", MapSelect_LoadGame, 0xE00 }, + + // "51-2: General Store" (Trading Post) + { " 51-2:" GFXP_HIRAGANA "ザッカ ヤ", MapSelect_LoadGame, 0x6200 }, + + // "51-3: Sword Dojo" (Swordsman's School) + { " 51-3:" GFXP_HIRAGANA "ケンドウジョウ", MapSelect_LoadGame, 0xA200 }, + + // "51-4: Post House" (Post Office) + { " 51-4:" GFXP_HIRAGANA "ポストハウス", MapSelect_LoadGame, 0x5600 }, + + // "51-5: Lottery Shop" (Lottery Shop) + { " 51-5:" GFXP_HIRAGANA "タカラクジヤ", MapSelect_LoadGame, 0x6C00 }, + + // "52: Clock Town -North-" (North Clock Town) + { " 52:" GFXP_KATAKANA "クロックタウン " GFXP_HIRAGANA "-キタ-", MapSelect_LoadGame, 0xD600 }, + + // "53: Clocktown -South-" (South Clock Town) + { " 53:" GFXP_KATAKANA "クロックタウン " GFXP_HIRAGANA "-ミナミ-", MapSelect_LoadGame, 0xD800 }, + + // "53-0: Clock Tower Interior" (Clock Tower Interior) + { " 53-0:" GFXP_HIRAGANA "トケイトウナイブ", MapSelect_LoadGame, 0xC000 }, + + // "54: Clock Tower Rooftop" (Clock Tower Rooftop) + { " 54:" GFXP_HIRAGANA "トケイトウ オクジョウ", MapSelect_LoadGame, 0x2C00 }, + + // "55: Laundry Area" (Laundry Pool) + { " 55:" GFXP_HIRAGANA "センタクジョウ", MapSelect_LoadGame, 0xDA00 }, + + // "55-0: Maniac Mart - Rear Entrance" (Curiosity Shop - Back Room) + { " 55-0:" GFXP_KATAKANA "マニ" GFXP_HIRAGANA "ヤ ノ ウラグチ", MapSelect_LoadGame, 0xE10 }, + + // "55-1: Maniac Mart - Peephole" (Curiosity Shop Back Room - Peephole) + { " 55-1:" GFXP_KATAKANA "マニ" GFXP_HIRAGANA "ヤ ノ ノゾキアナ", MapSelect_LoadGame, 0xE20 }, + + // "100: Wood Mountain Temple" (Woodfall Temple) + { "100:" GFXP_KATAKANA "ウッドマウンテン " GFXP_HIRAGANA "ノ シンデン", MapSelect_LoadGame, 0x3000 }, + + // "100-B: Wood Mountain Temple - Boss" (Odolwa's Lair) + { "100-B:" GFXP_KATAKANA "ウッドマウンテン " GFXP_HIRAGANA "ノ シンデン" GFXP_KATAKANA "-ボス-", MapSelect_LoadGame, 0x3800 }, + + // "101: Snowhead Temple" (Snowhead Temple) + { "101:" GFXP_KATAKANA "スノーヘッド " GFXP_HIRAGANA "ノ シンデン", MapSelect_LoadGame, 0x3C00 }, + + // "101-B: Snowhead Temple - Boss" (Goht's Lair) + { "101-B:" GFXP_KATAKANA "スノーヘッド " GFXP_HIRAGANA "ノ シンデン" GFXP_KATAKANA "-ボス-", MapSelect_LoadGame, 0x8200 }, + + // "102: Great Bay Temple" (Great Bay Temple) + { "102:" GFXP_KATAKANA "グレートベイ " GFXP_HIRAGANA "ノ シンデン", MapSelect_LoadGame, 0x8C00 }, + + // "102-B: Great Bay Temple - Boss" (Gyorg's Lair) + { "102-B:" GFXP_KATAKANA "グレートベイ " GFXP_HIRAGANA "ノ シンデン" GFXP_KATAKANA "-ボス-", MapSelect_LoadGame, 0xB800 }, + + // "103: Rock Building Temple -Top Side-" (Stone Tower Temple) + { "103:" GFXP_KATAKANA "ロックビル " GFXP_HIRAGANA "ノ シンデン-オモテー", MapSelect_LoadGame, 0x2600 }, + + // "103-0: Rock Building Temple -Underside-" (Stone Tower Temple - Flipped) + { "103-0:" GFXP_KATAKANA "ロックビル " GFXP_HIRAGANA "ノ シンデン-ウラー", MapSelect_LoadGame, 0x2A00 }, + + // "103-B: Rock Building Temple - Boss" (Twinmold's Lair) + { "103-B:" GFXP_KATAKANA "ロックビル " GFXP_HIRAGANA "ノ シンデン" GFXP_KATAKANA "-ボス-", MapSelect_LoadGame, 0x6600 }, + + // "104: Steppe" (On the Moon) + { "104:" GFXP_KATAKANA "ソウゲン", MapSelect_LoadGame, 0xC800 }, + + // "104-0: Last Deku Dungeon" (Deku Trial) + { "104-0:" GFXP_KATAKANA "ラスト デク ダンジョン", MapSelect_LoadGame, 0x4E00 }, + + // "104-1: Last Goron Dungeon" (Goron Trial) + { "104-1:" GFXP_KATAKANA "ラスト ゴロン ダンジョン", MapSelect_LoadGame, 0x7800 }, + + // "104-2: Last Zora Dungeon" (Zora Trial) + { "104-2:" GFXP_KATAKANA "ラスト ゾーラ ダンジョン", MapSelect_LoadGame, 0x8800 }, + + // "104-3: Last Link Dungeon" (Link Trial) + { "104-3:" GFXP_KATAKANA "ラスト リンク ダンジョン", MapSelect_LoadGame, 0xC600 }, + + // "104-B: Last Dungeon -Boss-" (Majora's Lair) + { "104-B:" GFXP_KATAKANA "ラストダンジョン -ボス-", MapSelect_LoadGame, 0x200 }, + + // "119: Deku Shrine" (Deku Shrine) + { "119:" GFXP_KATAKANA "デクナッツ " GFXP_HIRAGANA "ノ ホコラ", MapSelect_LoadGame, 0x9E00 }, + + // "121: Secret Shrine" (Secret Shrine) + { "121:" GFXP_HIRAGANA "ヒミツ ノ ホコラ", MapSelect_LoadGame, 0xBA00 }, + + // "122: Opening Dungeon" (Pond Area Cutscene: Falling of the Cliff) + { "122:" GFXP_KATAKANA "オープニング ダンジョン", MapSelect_LoadGame, 0x2E00 }, + + // "123: Giants' Chamber" (Giants' Chamber) + { "123:" GFXP_HIRAGANA "キョジン ノ マ", MapSelect_LoadGame, 0xCC00 }, + + // "126: Deku Minigame" (Deku Rupee Minigame) + { "126:" GFXP_KATAKANA "デクナッツ ミニゲーム", MapSelect_LoadGame, 0x3600 }, + + // "127-0: Fairy Fountain 0" (Fairy Fountain - Clock Town) + { "127-0:" GFXP_HIRAGANA "ヨウセイ ノ イズミ 0", MapSelect_LoadGame, 0x4600 }, + + // "127-1: Fairy Fountain 1" (Fairy Fountain - Woodfall) + { "127-1:" GFXP_HIRAGANA "ヨウセイ ノ イズミ 1", MapSelect_LoadGame, 0x4610 }, + + // "127-2: Fairy Fountain 2" (Fairy Fountain - Snowhead) + { "127-2:" GFXP_HIRAGANA "ヨウセイ ノ イズミ 2", MapSelect_LoadGame, 0x4620 }, + + // "127-3: Fairy Fountain 3" (Fairy Fountain - Great Bay Coast) + { "127-3:" GFXP_HIRAGANA "ヨウセイ ノ イズミ 3", MapSelect_LoadGame, 0x4630 }, + + // "127-4: Fairy Fountain 4" (Fairy Fountain - Ikana Canyon) + { "127-4:" GFXP_HIRAGANA "ヨウセイ ノ イズミ 4", MapSelect_LoadGame, 0x4640 }, + + // "128: Swamp Spider Manor" (Swamp Spider House) + { "128:" GFXP_HIRAGANA "ヌマ ノ クモヤカタ", MapSelect_LoadGame, 0x4800 }, + + // "129: Ocean Spider Manor" (Oceanside Spider House) + { "129:" GFXP_HIRAGANA "ウミ ノ クモヤカタ", MapSelect_LoadGame, 0x4A00 }, + + // "130: Beneath the Graves - Dampe" (Beneath the Graveyard) + { "130:" GFXP_HIRAGANA "ハカ ノ シタ-" GFXP_KATAKANA "ダンペイ-", MapSelect_LoadGame, 0x5A00 }, + + // "131: Beneath the Well" (Beneath the Well) + { "131:" GFXP_HIRAGANA "イド ノ シタ", MapSelect_LoadGame, 0x9000 }, + + // "132: Ghost Hut" (Ghost Hut) + { "132:" GFXP_HIRAGANA "ユウレイゴヤ", MapSelect_LoadGame, 0x9C00 }, + + // "133-0: Beneath the Graves 0" (Beneath the Graveyard - Part 1) + { "133-0:" GFXP_HIRAGANA "ハカ ノ シタ0", MapSelect_LoadGame, 0xA00 }, + + // "133-1: Beneath the Graves 1" (Beneath the Graveyard - Part 2) + { "133-1:" GFXP_HIRAGANA "ハカ ノ シタ1", MapSelect_LoadGame, 0xA10 }, + + // "134-0: Secret Grotto 0" (Secret Grotto - Four Gossip Stones) + { "134-0:" GFXP_HIRAGANA "カクシアナ 0", MapSelect_LoadGame, 0x1400 }, + + // "134-1: Secret Grotto 1" (Secret Grotto - Four Gossip Stones, Skulltula) + { "134-1:" GFXP_HIRAGANA "カクシアナ 1", MapSelect_LoadGame, 0x1410 }, + + // "134-2: Secret Grotto 2" (Secret Grotto - Four Gossip Stones, Water Puddles) + { "134-2:" GFXP_HIRAGANA "カクシアナ 2", MapSelect_LoadGame, 0x1420 }, + + // "134-3: Secret Grotto 3" (Secret Grotto - Four Gossip Stones, Water Puddle With Bugs) + { "134-3:" GFXP_HIRAGANA "カクシアナ 3", MapSelect_LoadGame, 0x1430 }, + + // "134-4: Secret Grotto 4" (Secret Grotto - Chest with Blue Rupee, Deku Babas) + { "134-4:" GFXP_HIRAGANA "カクシアナ 4", MapSelect_LoadGame, 0x1440 }, + + // "134-5: Secret Grotto 5" (Secret Grotto - Hot Spring, Deku Babas, Large Stones) + { "134-5:" GFXP_HIRAGANA "カクシアナ5", MapSelect_LoadGame, 0x1450 }, + + // "134-7: Secret Grotto 7" (Secret Grotto - Two Dondogos) + { "134-7:" GFXP_HIRAGANA "カクシアナ 7", MapSelect_LoadGame, 0x1470 }, + + // "134-9: Secret Grotto 9" (Secret Grotto - Tall Grass With Box, Pot, Bugs) + { "134-9:" GFXP_HIRAGANA "カクシアナ 9", MapSelect_LoadGame, 0x1490 }, + + // "134-10: Secret Grotto 10" (Secret Grotto - Two Cows Surrounded by Grass) + { "134-10:" GFXP_HIRAGANA "カクシアナ10", MapSelect_LoadGame, 0x14A0 }, + + // "134-11: Secret Grotto 11" (Secret Grotto - Watery Hole Filled with Underwater Babas, Fish) + { "134-11:" GFXP_HIRAGANA "カクシアナ11", MapSelect_LoadGame, 0x14B0 }, + + // "134-13: Secret Grotto 13" (Secret Grotto - Peahat in Center) + { "134-13:" GFXP_HIRAGANA "カクシアナ13", MapSelect_LoadGame, 0x14D0 }, + + // "X 1: SPOT00" (Opening Cutscene) + { "X 1:SPOT00", MapSelect_LoadGame, 0x1C00 }, + + // "Title" (Title Screen) + { "title", (void*)MapSelect_LoadTitle, 0x0000 }, }; -void Select_UpdateMenu(SelectContext* this) { +void MapSelect_UpdateMenu(MapSelectState* this) { s32 playerForm; Input* controller1 = CONTROLLER1(&this->state); s32 stickY; @@ -544,7 +684,7 @@ void Select_UpdateMenu(SelectContext* this) { this->currentScene++; this->currentScene = (this->currentScene + this->count) % this->count; - if (this->currentScene == ((this->topDisplayedScene + 19 + this->count) % this->count)) { + if (this->currentScene == ((this->topDisplayedScene + this->count + 19) % this->count)) { this->topDisplayedScene++; this->topDisplayedScene = (this->topDisplayedScene + this->count) % this->count; } @@ -553,6 +693,7 @@ void Select_UpdateMenu(SelectContext* this) { if (this->verticalInputAccumulator > 7) { this->verticalInput = 0; this->verticalInputAccumulator = 0; + if (this->currentScene == this->topDisplayedScene) { this->topDisplayedScene -= 2; this->topDisplayedScene = (this->topDisplayedScene + this->count) % this->count; @@ -560,6 +701,7 @@ void Select_UpdateMenu(SelectContext* this) { this->currentScene--; this->currentScene = (this->currentScene + this->count) % this->count; + if (this->currentScene == ((this->topDisplayedScene + this->count) % this->count)) { this->topDisplayedScene--; this->topDisplayedScene = (this->topDisplayedScene + this->count) % this->count; @@ -576,6 +718,7 @@ void Select_UpdateMenu(SelectContext* this) { if (this->timerUp != 0) { this->timerUp--; } + if (this->timerUp == 0) { this->lockUp = false; } @@ -583,19 +726,20 @@ void Select_UpdateMenu(SelectContext* this) { if (this->timerDown != 0) { this->timerDown--; } + if (this->timerDown == 0) { this->lockDown = false; } } -void Select_PrintMenu(SelectContext* this, GfxPrint* printer) { +void MapSelect_PrintMenu(MapSelectState* this, GfxPrint* printer) { s32 i; GfxPrint_SetColor(printer, 255, 155, 150, 255); GfxPrint_SetPos(printer, 12, 2); GfxPrint_Printf(printer, "ZELDA MAP SELECT"); - GfxPrint_SetColor(printer, 255, 255, 255, 255); + for (i = 0; i < 20; i++) { s32 sceneIndex; char* sceneName; @@ -620,62 +764,58 @@ void Select_PrintMenu(SelectContext* this, GfxPrint* printer) { GfxPrint_Printf(printer, "OPT=%d", this->opt); } -// clang-format off static const char* sLoadingMessages[] = { - // "Please wait a minute", - "\x8Dシバラクオマチクダサイ", - // "Hold on a sec", - "\x8Dチョット マッテネ", - // "Wait a moment", - "\x8Cウェイト ア モーメント", - // "Loading", - "\x8Cロード\x8Dチュウ", - // "Now working", - "\x8Dナウ ワーキング", - // "Now creating", - "\x8Dイマ ツクッテマス", - // "It's not broken", - "\x8Dコショウジャナイヨ", - // "Coffee Break", - "\x8Cコーヒー ブレイク", - // "Please set B side", - "\x8C" "Bメンヲセットシテクダサイ", - // "Be patient, now", - "\x8Dジット\x8Cガマン\x8Dノ\x8Cコ\x8Dデアッタ", - // "Please wait just a minute", - "\x8Dイマシバラクオマチクダサイ", - // "Don't worry, don't worry. Take a break, take a break", - "\x8Dアワテナイアワテナイ。ヒトヤスミヒトヤスミ。", + // "Please wait a minute" + GFXP_HIRAGANA "シバラクオマチクダサイ", + // "Hold on a sec" + GFXP_HIRAGANA "チョット マッテネ", + // "Wait a moment" + GFXP_KATAKANA "ウェイト ア モーメント", + // "Loading" + GFXP_KATAKANA "ロード" GFXP_HIRAGANA "チュウ", + // "Now working" + GFXP_HIRAGANA "ナウ ワーキング", + // "Now creating" + GFXP_HIRAGANA "イマ ツクッテマス", + // "It's not broken" + GFXP_HIRAGANA "コショウジャナイヨ", + // "Coffee Break" + GFXP_KATAKANA "コーヒー ブレイク", + // "Please set B side" + GFXP_KATAKANA "Bメンヲセットシテクダサイ", + // "Be patient, now" + GFXP_HIRAGANA "ジット" GFXP_KATAKANA "ガマン" GFXP_HIRAGANA "ノ" GFXP_KATAKANA "コ" GFXP_HIRAGANA "デアッタ", + // "Please wait just a minute" + GFXP_HIRAGANA "イマシバラクオマチクダサイ", + // "Don't worry, don't worry. Take a break, take a break." + GFXP_HIRAGANA "アワテナイアワテナイ。ヒトヤスミヒトヤスミ。", }; -// clang-format on -void Select_PrintLoadingMessage(SelectContext* this, GfxPrint* printer) { - s32 index; +void MapSelect_PrintLoadingMessage(MapSelectState* this, GfxPrint* printer) { + s32 randomMsg; GfxPrint_SetPos(printer, 10, 15); GfxPrint_SetColor(printer, 255, 255, 255, 255); - index = Rand_ZeroOne() * ARRAY_COUNT(sLoadingMessages); - GfxPrint_Printf(printer, "%s", sLoadingMessages[index]); + randomMsg = Rand_ZeroOne() * ARRAY_COUNT(sLoadingMessages); + GfxPrint_Printf(printer, "%s", sLoadingMessages[randomMsg]); } -// clang-format off // Second column is unused static const char* sFormLabel[][2] = { // "17 (Adult)" // 17 (Daitetsujin) - {"\x8D""17(オトナ)", "\x8D""17(ダイテツジン)"}, + { GFXP_HIRAGANA "17(オトナ)", GFXP_HIRAGANA "17(ダイテツジン)" }, // "30 (Goron)" // 30 (Ice Cream -1) - {"\x8C""30(ゴロン)", "\x8C""30(アイスクリーム-1)"}, + { GFXP_KATAKANA "30(ゴロン)", GFXP_KATAKANA "30(アイスクリーム-1)" }, // "78 (Zora)" // 78 (Carmen +1) - {"\x8C""78(ゾーラ)", "\x8C""78(カルメン+1)"}, + { GFXP_KATAKANA "78(ゾーラ)", GFXP_KATAKANA "78(カルメン+1)" }, // "12 (Deku)" // 12 (Majestic) - {"\x8C""12(デクナッツ)", "\x8C""12(マジェスティック)"}, + { GFXP_KATAKANA "12(デクナッツ)", GFXP_KATAKANA "12(マジェスティック)" }, // "5 (Child)" // 5 (NTT Kodomo) - {"\x8D""5(コドモ)", "\x8C""5(NTTコドモ)"}, + { GFXP_HIRAGANA "5(コドモ)", GFXP_KATAKANA "5(NTTコドモ)" }, }; -// clang-format on -void Select_PrintAgeSetting(SelectContext* this, GfxPrint* printer, s32 playerForm) { +void MapSelect_PrintAgeSetting(MapSelectState* this, GfxPrint* printer, s32 playerForm) { s32 pad; const char* age; const char*(*ageTemp)[2]; @@ -706,12 +846,12 @@ void Select_PrintAgeSetting(SelectContext* this, GfxPrint* printer, s32 playerFo GfxPrint_Printf(printer, "Age:%s", age); } else { // clang-format off - GfxPrint_Printf(printer, "Age:" "???" "(%d)", playerForm); + GfxPrint_Printf(printer, "Age:???" "(%d)", playerForm); // clang-format on } } -void Select_PrintCutsceneSetting(SelectContext* this, GfxPrint* printer, u16 csIndex) { +void MapSelect_PrintCutsceneSetting(MapSelectState* this, GfxPrint* printer, u16 csIndex) { const char* stage; const char* day; @@ -723,21 +863,21 @@ void Select_PrintCutsceneSetting(SelectContext* this, GfxPrint* printer, u16 csI case 0: // clang-format off // "Afternoon-jara" - gSaveContext.save.time = CLOCK_TIME(12, 0); stage = "\x8Dオヒル\x8Cジャラ"; + gSaveContext.save.time = CLOCK_TIME(12, 0); stage = GFXP_HIRAGANA "オヒル" GFXP_KATAKANA "ジャラ"; // clang-format on break; case 0x8000: // clang-format off // "Morning-jara" - gSaveContext.save.time = CLOCK_TIME(6, 0) + 1; stage = "\x8Dアサ \x8Cジャラ"; + gSaveContext.save.time = CLOCK_TIME(6, 0) + 1; stage = GFXP_HIRAGANA "アサ " GFXP_KATAKANA "ジャラ"; // clang-format on break; case 0x8800: gSaveContext.save.time = CLOCK_TIME(18, 1); // "Night-jara" - stage = "\x8Dヨル \x8Cジャラ"; + stage = GFXP_HIRAGANA "ヨル " GFXP_KATAKANA "ジャラ"; break; case 0xFFF0: @@ -746,42 +886,52 @@ void Select_PrintCutsceneSetting(SelectContext* this, GfxPrint* printer, u16 csI gSaveContext.save.time = CLOCK_TIME(12, 0); stage = "デモ00"; // clang-format on break; + case 0xFFF1: // "Cutscene 01" stage = "デモ01"; break; + case 0xFFF2: // "Cutscene 02" stage = "デモ02"; break; + case 0xFFF3: // "Cutscene 03" stage = "デモ03"; break; + case 0xFFF4: // "Cutscene 04" stage = "デモ04"; break; + case 0xFFF5: // "Cutscene 05" stage = "デモ05"; break; + case 0xFFF6: // "Cutscene 06" stage = "デモ06"; break; + case 0xFFF7: // "Cutscene 07" stage = "デモ07"; break; + case 0xFFF8: // "Cutscene 08" stage = "デモ08"; break; + case 0xFFF9: // "Cutscene 09" stage = "デモ09"; break; + case 0xFFFA: // "Cutscene 0A" stage = "デモ0A"; @@ -791,8 +941,8 @@ void Select_PrintCutsceneSetting(SelectContext* this, GfxPrint* printer, u16 csI stage = "???"; break; } - gSaveContext.environmentTime = gSaveContext.save.time; - GfxPrint_Printf(printer, "Stage:\x8C%s", stage); + gSaveContext.skyboxTime = gSaveContext.save.time; + GfxPrint_Printf(printer, "Stage:" GFXP_KATAKANA "%s", stage); GfxPrint_SetPos(printer, 23, 25); GfxPrint_SetColor(printer, 255, 255, 55, 255); @@ -800,31 +950,35 @@ void Select_PrintCutsceneSetting(SelectContext* this, GfxPrint* printer, u16 csI switch (gSaveContext.save.day) { case 1: // "The First Day" - day = "\x8Dサイショノヒ"; + day = GFXP_HIRAGANA "サイショノヒ"; break; + case 2: // "The Next Day" - day = "\x8Dツギノヒ"; + day = GFXP_HIRAGANA "ツギノヒ"; break; + case 3: // "The Final Day" - day = "\x8Dサイゴノヒ"; + day = GFXP_HIRAGANA "サイゴノヒ"; break; + case 4: // "Clear Day" - day = "\x8Dクリアーノヒ"; + day = GFXP_HIRAGANA "クリアーノヒ"; break; + default: gSaveContext.save.day = 1; // "The First Day" - day = "\x8Dサイショノヒ"; + day = GFXP_HIRAGANA "サイショノヒ"; break; } - GfxPrint_Printf(printer, "Day:\x8D%s", day); + GfxPrint_Printf(printer, "Day:" GFXP_HIRAGANA "%s", day); } -void Select_DrawMenu(SelectContext* this) { +void MapSelect_DrawMenu(MapSelectState* this) { GraphicsContext* gfxCtx = this->state.gfxCtx; GfxPrint* printer; @@ -836,9 +990,9 @@ void Select_DrawMenu(SelectContext* this) { GfxPrint_Init(printer); GfxPrint_Open(printer, POLY_OPA_DISP); - Select_PrintMenu(this, printer); - Select_PrintAgeSetting(this, printer, ((void)0, gSaveContext.save.playerForm)); - Select_PrintCutsceneSetting(this, printer, ((void)0, gSaveContext.save.cutscene)); + MapSelect_PrintMenu(this, printer); + MapSelect_PrintAgeSetting(this, printer, ((void)0, gSaveContext.save.playerForm)); + MapSelect_PrintCutsceneSetting(this, printer, ((void)0, gSaveContext.save.cutscene)); POLY_OPA_DISP = GfxPrint_Close(printer); GfxPrint_Destroy(printer); @@ -846,7 +1000,7 @@ void Select_DrawMenu(SelectContext* this) { CLOSE_DISPS(gfxCtx); } -void Select_DrawLoadingScreen(SelectContext* this) { +void MapSelect_DrawLoadingScreen(MapSelectState* this) { GraphicsContext* gfxCtx = this->state.gfxCtx; GfxPrint printer; @@ -857,7 +1011,7 @@ void Select_DrawLoadingScreen(SelectContext* this) { GfxPrint_Init(&printer); GfxPrint_Open(&printer, POLY_OPA_DISP); - Select_PrintLoadingMessage(this, &printer); + MapSelect_PrintLoadingMessage(this, &printer); POLY_OPA_DISP = GfxPrint_Close(&printer); GfxPrint_Destroy(&printer); @@ -865,7 +1019,7 @@ void Select_DrawLoadingScreen(SelectContext* this) { CLOSE_DISPS(gfxCtx); } -void Select_Draw(SelectContext* this) { +void MapSelect_Draw(MapSelectState* this) { GraphicsContext* gfxCtx = this->state.gfxCtx; func_8012CF0C(gfxCtx, true, true, 0, 0, 0); @@ -873,28 +1027,28 @@ void Select_Draw(SelectContext* this) { SET_FULLSCREEN_VIEWPORT(&this->view); View_RenderView(&this->view, 0xF); if (!this->state.running) { - Select_DrawLoadingScreen(this); + MapSelect_DrawLoadingScreen(this); } else { - Select_DrawMenu(this); + MapSelect_DrawMenu(this); } } -void Select_Main(GameState* thisx) { - SelectContext* this = (SelectContext*)thisx; +void MapSelect_Main(GameState* thisx) { + MapSelectState* this = (MapSelectState*)thisx; - Select_UpdateMenu(this); - Select_Draw(this); + MapSelect_UpdateMenu(this); + MapSelect_Draw(this); } -void Select_Destroy(GameState* thisx) { +void MapSelect_Destroy(GameState* thisx) { ShrinkWindow_Destroy(); } -void Select_Init(GameState* thisx) { - SelectContext* this = (SelectContext*)thisx; +void MapSelect_Init(GameState* thisx) { + MapSelectState* this = (MapSelectState*)thisx; - this->state.main = Select_Main; - this->state.destroy = Select_Destroy; + this->state.main = MapSelect_Main; + this->state.destroy = MapSelect_Destroy; this->scenes = sScenes; this->topDisplayedScene = 0; diff --git a/src/overlays/gamestates/ovl_select/z_select.h b/src/overlays/gamestates/ovl_select/z_select.h index a454a098b5..4791a2427d 100644 --- a/src/overlays/gamestates/ovl_select/z_select.h +++ b/src/overlays/gamestates/ovl_select/z_select.h @@ -3,12 +3,9 @@ #include "global.h" -struct SelectContext; +struct MapSelectState; -void Select_Init(GameState* thisx); -void Select_Destroy(GameState* thisx); - -typedef void (*Select_LoadFunc)(struct SelectContext*, u32, s32); +typedef void (*Select_LoadFunc)(struct MapSelectState*, u32, s32); typedef struct { /* 0x00 */ char* name; @@ -16,7 +13,7 @@ typedef struct { /* 0x08 */ s32 entranceIndex; } SceneSelectEntry; // size = 0xC -typedef struct SelectContext { +typedef struct MapSelectState { /* 0x000 */ GameState state; /* 0x0A8 */ View view; /* 0x210 */ s32 count; @@ -36,6 +33,9 @@ typedef struct SelectContext { /* 0x270 */ s32 lockDown; /* 0x274 */ s32 unk_274; // unused /* 0x278 */ UNK_TYPE1 unk_278[0x08]; -} SelectContext; // size = 0x280 +} MapSelectState; // size = 0x280 + +void MapSelect_Init(GameState* thisx); +void MapSelect_Destroy(GameState* thisx); #endif diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 4dba5ceaba..43d445c237 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -4089,19 +4089,19 @@ 0x8080066C:("Title_Main",), 0x8080071C:("Title_Destroy",), 0x8080074C:("Title_Init",), - 0x80800910:("Select_LoadTitle",), - 0x80800930:("Select_LoadGame",), - 0x80800A44:("Select_UpdateMenu",), - 0x808013B8:("Select_PrintMenu",), - 0x80801594:("Select_PrintLoadingMessage",), - 0x80801620:("Select_PrintAgeSetting",), - 0x808016E8:("Select_PrintCutsceneSetting",), - 0x8080194C:("Select_DrawMenu",), - 0x808019FC:("Select_DrawLoadingScreen",), - 0x80801A64:("Select_Draw",), - 0x80801AFC:("Select_Main",), - 0x80801B28:("Select_Destroy",), - 0x80801B4C:("Select_Init",), + 0x80800910:("MapSelect_LoadTitle",), + 0x80800930:("MapSelect_LoadGame",), + 0x80800A44:("MapSelect_UpdateMenu",), + 0x808013B8:("MapSelect_PrintMenu",), + 0x80801594:("MapSelect_PrintLoadingMessage",), + 0x80801620:("MapSelect_PrintAgeSetting",), + 0x808016E8:("MapSelect_PrintCutsceneSetting",), + 0x8080194C:("MapSelect_DrawMenu",), + 0x808019FC:("MapSelect_DrawLoadingScreen",), + 0x80801A64:("MapSelect_Draw",), + 0x80801AFC:("MapSelect_Main",), + 0x80801B28:("MapSelect_Destroy",), + 0x80801B4C:("MapSelect_Init",), 0x80803DF0:("Opening_SetupForTitleCutscene",), 0x80803EA0:("func_80803EA0",), 0x80803EC0:("Opening_Main",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 65a0ee1586..46d666c522 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -970,7 +970,7 @@ 0x801BDBA0:("D_801BDBA0","UNK_TYPE1","",0x1), 0x801BDBA4:("D_801BDBA4","UNK_TYPE1","",0x1), 0x801BDBA8:("D_801BDBA8","UNK_TYPE1","",0x1), - 0x801BDBB0:("D_801BDBB0","u8","",0x1), + 0x801BDBB0:("gWeatherMode","u8","",0x1), 0x801BDBB4:("D_801BDBB4","UNK_TYPE1","",0x1), 0x801BDBB8:("D_801BDBB8","UNK_TYPE1","",0x1), 0x801BDBBC:("D_801BDBBC","UNK_TYPE1","",0x1), diff --git a/tools/namefixer.py b/tools/namefixer.py index d2cf4ba773..7df84da0b9 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -627,6 +627,7 @@ wordReplace = { "gSaveContext.playerForm": "gSaveContext.save.playerForm", "gSaveContext.day": "gSaveContext.save.day", "gSaveContext.isNight": "gSaveContext.save.isNight", + "gSaveContext.environmentTime": "gSaveContext.skyboxTime", "gSaveContext.naviTimer": "gSaveContext.save.playerData.tatlTimer", "gSaveContext.tatlTimer": "gSaveContext.save.playerData.tatlTimer", "gSaveContext.rupees": "gSaveContext.save.playerData.rupees",