From 2a92ae52789ce96d5e82ea986c615dc6ad1559b5 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Tue, 22 Mar 2022 22:00:02 -0700 Subject: [PATCH 01/28] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cc5fce64d..aebd5b71b 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,10 @@ The Ship does not include assets and as such requires a prior copy of the game t ## Quick Start 1) Download The Ship of Harkinian from Discord. -2) Get a ZRET OoT Debug ROM +2) Requires an `oot debug` rom (not Master Quest). ``` -Build date: `zelda@srd022j 03-02-21 00:49:18` +Build team: `zelda@srd022j` +Build date: `03-02-21 00:49:18` (year-month-day) sha1: cee6bc3c2a634b41728f2af8da54d9bf8cc14099 ``` 3) Use the OTRGui to generate an `oot.otr` archive file. From 2da6a2a78fe24626934ec4a3e8b71e7118ec63b1 Mon Sep 17 00:00:00 2001 From: MaikelChan Date: Thu, 24 Mar 2022 07:07:49 +0100 Subject: [PATCH 02/28] Improved window dragging. Fixed issues when dragging the window, like the window stopping its movement when moving the cursor too fast, or flickering all over the place. Also, the window position will be clamped to the area of the monitor/s to prevent it from going outside of them. Also, setting VSync instead of target FPS prevents possible stuttering and probably increased CPU usage. --- OTRGui/src/game/game.cpp | 135 ++++++++++++++++++++++++--------------- OTRGui/src/main.cpp | 2 +- 2 files changed, 85 insertions(+), 52 deletions(-) diff --git a/OTRGui/src/game/game.cpp b/OTRGui/src/game/game.cpp index 3fc6438a8..18226ae64 100644 --- a/OTRGui/src/game/game.cpp +++ b/OTRGui/src/game/game.cpp @@ -18,6 +18,7 @@ Shader shader = { 0 }; Light light = { 0 }; Vector3 lightPos = { -5.0f, 10.0f, 10.0f }; Vector2 dragOffset; +bool isDragging = false; std::string sohFolder = NULLSTR; bool extracting = false; bool rom_ready = false; @@ -95,69 +96,101 @@ void OTRGame::update(){ } void OTRGame::draw() { + Vector2 windowSize(GetScreenWidth(), GetScreenHeight()); + Rectangle titlebar = Rectangle(0, 0, windowSize.x - 50, 35); + Vector2 mousePos = GetMousePosition(); + Vector2 mouseDelta = GetMouseDelta(); + + if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && !isDragging && + mousePos.x >= titlebar.x && mousePos.y >= titlebar.y && mousePos.x <= titlebar.x + titlebar.width && mousePos.y <= titlebar.y + titlebar.height) { + isDragging = true; + dragOffset = mousePos; + } + else if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT) && isDragging) { + isDragging = false; + dragOffset = Vector2(0, 0); + } + + if (isDragging && (mouseDelta.x != 0.0f || mouseDelta.y != 0.0f)) { + Vector2 wndPos = GetWindowPosition(); + wndPos = Vector2(wndPos.x + (mousePos.x - dragOffset.x), wndPos.y + (mousePos.y - dragOffset.y)); + + // Calculate virtual screen total size in case there are multiple monitors + + int vsX1 = 0, vsY1 = 0, vsX2 = 0, vsY2 = 0; + int monitorCount = GetMonitorCount(); + + for (int m = 0; m < monitorCount; m++) { + Vector2 monitorPos = GetMonitorPosition(m); + Vector2 monitorSize = Vector2(GetMonitorWidth(m), GetMonitorHeight(m)); + + if (monitorPos.x < vsX1) vsX1 = monitorPos.x; + if (monitorPos.y < vsY1) vsY1 = monitorPos.y; + if (monitorPos.x + monitorSize.x > vsX2) vsX2 = monitorPos.x + monitorSize.x; + if (monitorPos.y + monitorSize.y > vsY2) vsY2 = monitorPos.y + monitorSize.y; + } + + // Clamp the window to the borders of the monitors + + if (wndPos.x < vsX1) wndPos.x = vsX1; + if (wndPos.y < vsY1) wndPos.y = vsY1; + if (wndPos.x + windowSize.x > vsX2) wndPos.x = vsX2 - windowSize.x; + if (wndPos.y + windowSize.y > vsY2) wndPos.y = vsY2 - windowSize.y; + + SetWindowPosition(wndPos.x, wndPos.y); + } + BeginDrawing(); - ClearBackground(Color(40, 40, 40, 255)); - Vector3 windowSize(GetScreenWidth(), GetScreenHeight()); - Rectangle titlebar = Rectangle(0, 0, windowSize.x - 50, 35); - Vector2 mousePos = Vector2(GetMouseX(), GetMouseY()); - bool hoveredTitlebar = mousePos.x >= titlebar.x && mousePos.y >= titlebar.y && mousePos.x <= titlebar.x + titlebar.width && mousePos.y <= titlebar.y + titlebar.height; + ClearBackground(Color(40, 40, 40, 255)); - if (hoveredTitlebar && IsMouseButtonDown(MOUSE_BUTTON_LEFT)) { - if (dragOffset.x == 0 && dragOffset.y == 0) dragOffset = mousePos; - Vector2 wndPos = GetWindowPosition(); + DrawTexture(Textures["Frame"], 0, 0, WHITE); - SetWindowPosition(wndPos.x + (mousePos.x - dragOffset.x), wndPos.y + (mousePos.y - dragOffset.y)); - } - else dragOffset = Vector2(0, 0); + Texture2D titleTex = Textures["Title"]; + DrawTexture(titleTex, windowSize.x / 2 - titleTex.width / 2, titlebar.height / 2 - titleTex.height / 2, WHITE); - DrawTexture(Textures["Frame"], 0, 0, WHITE); + if (UIUtils::GuiIcon("Exit", windowSize.x - 36, titlebar.height / 2 - 10) && (extracting && currentStep.find("Done") != std::string::npos || !extracting)) { + CloseWindow(); + } - Texture2D titleTex = Textures["Title"]; - DrawTexture(titleTex, windowSize.x / 2 - titleTex.width / 2, titlebar.height / 2 - titleTex.height / 2, WHITE); + BeginMode3D(camera); + DrawModelEx(Models["Ship"], Vector3Zero(), Vector3(.0f, 1.0f, .0f), this->ModelRotation, SCALE(1.0f), WHITE); + EndMode3D(); - if (UIUtils::GuiIcon("Exit", windowSize.x - 36, titlebar.height / 2 - 10) && (extracting && currentStep.find("Done") != std::string::npos || !extracting)) { - CloseWindow(); - } + constexpr float text_y = 125.f; + UIUtils::GuiShadowText(("Rom Type: " + version.version).c_str(), 32, text_y, 10, WHITE, BLACK); + UIUtils::GuiShadowText("Tool Version: 1.0", 32, text_y + 15, 10, WHITE, BLACK); + UIUtils::GuiShadowText("OTR Version: 1.0", 32, text_y + 30, 10, WHITE, BLACK); + UIUtils::GuiToggle(&single_thread, "Single Thread", 32, text_y + 40, currentStep != NULLSTR); - BeginMode3D(camera); - DrawModelEx(Models["Ship"] ,Vector3Zero(), Vector3(.0f, 1.0f, .0f), this->ModelRotation, SCALE(1.0f), WHITE); - EndMode3D(); + if (!hide_second_btn && UIUtils::GuiIconButton("Folder", "Open\nShip Folder", 109, 50, currentStep != NULLSTR, "Select your Ship of Harkinian Folder\n\nYou could use another folder\nfor development purposes")) { + const std::string path = NativeFS->LaunchFileExplorer(LaunchType::FOLDER); + sohFolder = path; + } - constexpr float text_y = 125.f; - UIUtils::GuiShadowText(("Rom Type: " + version.version).c_str(), 32, text_y, 10, WHITE, BLACK); - UIUtils::GuiShadowText("Tool Version: 1.0", 32, text_y + 15, 10, WHITE, BLACK); - UIUtils::GuiShadowText("OTR Version: 1.0", 32, text_y + 30, 10, WHITE, BLACK); - UIUtils::GuiToggle(&single_thread, "Single Thread", 32, text_y + 40, currentStep != NULLSTR); - - if(!hide_second_btn && UIUtils::GuiIconButton("Folder", "Open\nShip Folder", 109, 50, currentStep != NULLSTR, "Select your Ship of Harkinian Folder\n\nYou could use another folder\nfor development purposes")) { - const std::string path = NativeFS->LaunchFileExplorer(LaunchType::FOLDER); - sohFolder = path; - } - - if (UIUtils::GuiIconButton("Cartridge", "Open\nOoT Rom", 32, 50, currentStep != NULLSTR, "Select an Ocarina of Time\nMaster Quest or Vanilla Debug Rom\n\nYou can dump it or lend one from Nintendo")) { - const std::string path = NativeFS->LaunchFileExplorer(LaunchType::FILE); - if (path != NULLSTR) { - const std::string patched_n64 = std::string(patched_rom); - MoonUtils::rm(patched_n64); - version = GetVersion(fopen(path.c_str(), "r")); - if (version.version != NULLSTR) { - MoonUtils::copy(path, patched_n64); - rom_ready = true; - return; - } - fix_baserom(path.c_str(), patched_rom); - version = GetVersion(fopen(patched_rom, "r")); - if (version.version != NULLSTR) rom_ready = true; + if (UIUtils::GuiIconButton("Cartridge", "Open\nOoT Rom", 32, 50, currentStep != NULLSTR, "Select an Ocarina of Time\nMaster Quest or Vanilla Debug Rom\n\nYou can dump it or lend one from Nintendo")) { + const std::string path = NativeFS->LaunchFileExplorer(LaunchType::FILE); + if (path != NULLSTR) { + const std::string patched_n64 = std::string(patched_rom); + MoonUtils::rm(patched_n64); + version = GetVersion(fopen(path.c_str(), "r")); + if (version.version != NULLSTR) { + MoonUtils::copy(path, patched_n64); + rom_ready = true; + return; } + fix_baserom(path.c_str(), patched_rom); + version = GetVersion(fopen(patched_rom, "r")); + if (version.version != NULLSTR) rom_ready = true; } + } - if(currentStep != NULLSTR) { - DrawRectangle(0, 0, windowSize.x, windowSize.y, Color(0, 0, 0, 160)); - DrawTexture(Textures["Modal"], windowSize.x / 2 - Textures["Modal"].width / 2, windowSize.y / 2 - Textures["Modal"].height / 2, WHITE); - UIUtils::GuiShadowText(currentStep.c_str(), 0, windowSize.y / 2, 10, WHITE, BLACK, windowSize.x, true); - } + if (currentStep != NULLSTR) { + DrawRectangle(0, 0, windowSize.x, windowSize.y, Color(0, 0, 0, 160)); + DrawTexture(Textures["Modal"], windowSize.x / 2 - Textures["Modal"].width / 2, windowSize.y / 2 - Textures["Modal"].height / 2, WHITE); + UIUtils::GuiShadowText(currentStep.c_str(), 0, windowSize.y / 2, 10, WHITE, BLACK, windowSize.x, true); + } - EndDrawing(); + EndDrawing(); } void setCurrentStep(const std::string& step) { diff --git a/OTRGui/src/main.cpp b/OTRGui/src/main.cpp index 87c9d26ee..a866673c5 100644 --- a/OTRGui/src/main.cpp +++ b/OTRGui/src/main.cpp @@ -18,7 +18,7 @@ void UpdateDrawFrame(void) { int main() { constexpr Vector2 windowSize = Vector2(400, 200); - SetTargetFPS(144); + SetConfigFlags(FLAG_VSYNC_HINT); SetConfigFlags(FLAG_WINDOW_HIGHDPI); SetConfigFlags(FLAG_WINDOW_UNDECORATED); SetConfigFlags(FLAG_MSAA_4X_HINT); From 3ab0c45bdb7e38798e394004b41286bf0747eb51 Mon Sep 17 00:00:00 2001 From: MaikelChan Date: Thu, 24 Mar 2022 19:48:22 +0100 Subject: [PATCH 03/28] Fixed window not properly disposing raylib and OpenGL when closing. (#59) Closing the window with the X button will not close it immediately during the rendering of a frame, causing it to actually crash, but will set the engine in a pending state until it finishes the current frame. --- OTRGui/src/game/game.cpp | 2 +- OTRGui/src/game/game.h | 5 +++++ OTRGui/src/main.cpp | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/OTRGui/src/game/game.cpp b/OTRGui/src/game/game.cpp index 18226ae64..ff7e7a22b 100644 --- a/OTRGui/src/game/game.cpp +++ b/OTRGui/src/game/game.cpp @@ -149,7 +149,7 @@ void OTRGame::draw() { DrawTexture(titleTex, windowSize.x / 2 - titleTex.width / 2, titlebar.height / 2 - titleTex.height / 2, WHITE); if (UIUtils::GuiIcon("Exit", windowSize.x - 36, titlebar.height / 2 - 10) && (extracting && currentStep.find("Done") != std::string::npos || !extracting)) { - CloseWindow(); + closeRequested = true; } BeginMode3D(camera); diff --git a/OTRGui/src/game/game.h b/OTRGui/src/game/game.h index b284f857a..bd74b1c3f 100644 --- a/OTRGui/src/game/game.h +++ b/OTRGui/src/game/game.h @@ -19,6 +19,8 @@ public: void update(); void draw(); void exit(); + + inline bool CloseRequested() { return closeRequested; } protected: void LoadTexture(const std::string& name, const std::string& path) { const Image tmp = LoadImage(path.c_str()); @@ -32,6 +34,9 @@ protected: SetTextureFilter(font.texture, TEXTURE_FILTER_POINT); Fonts[name] = font; } + +private: + bool closeRequested = false; }; extern OTRGame* Game; diff --git a/OTRGui/src/main.cpp b/OTRGui/src/main.cpp index a866673c5..2b3e40a7c 100644 --- a/OTRGui/src/main.cpp +++ b/OTRGui/src/main.cpp @@ -17,7 +17,7 @@ void UpdateDrawFrame(void) { } int main() { - constexpr Vector2 windowSize = Vector2(400, 200); + constexpr Vector2 windowSize = Vector2(400, 200); SetConfigFlags(FLAG_VSYNC_HINT); SetConfigFlags(FLAG_WINDOW_HIGHDPI); SetConfigFlags(FLAG_WINDOW_UNDECORATED); @@ -32,7 +32,7 @@ int main() { Game = new OTRGame(); Game->preload(); Game->init(); - while(!WindowShouldClose()) { + while(!WindowShouldClose() && !Game->CloseRequested()) { UpdateDrawFrame(); } CloseWindow(); From d528160684b414bc5350237a7ca8c9401efa06ae Mon Sep 17 00:00:00 2001 From: Emil Lenngren Date: Sun, 27 Mar 2022 17:14:07 +0200 Subject: [PATCH 04/28] Fix triforce vertex count --- soh/assets/xml/objects/object_triforce_spot.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/assets/xml/objects/object_triforce_spot.xml b/soh/assets/xml/objects/object_triforce_spot.xml index a9d52dd96..87d449458 100644 --- a/soh/assets/xml/objects/object_triforce_spot.xml +++ b/soh/assets/xml/objects/object_triforce_spot.xml @@ -1,6 +1,6 @@ - + From a9b56e78e26a82c7c14082efff17d54a27556a00 Mon Sep 17 00:00:00 2001 From: Sirius902 <3645979-Sirius902@users.noreply.gitlab.com> Date: Mon, 28 Mar 2022 14:11:37 -0700 Subject: [PATCH 05/28] Fix aiming items --- soh/src/overlays/actors/ovl_player_actor/z_player.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index d02788a8e..91fcf81ad 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -2321,10 +2321,10 @@ s32 func_8083501C(Player* this, GlobalContext* globalCtx) { if ((!Player_HoldsHookshot(this) || func_80834FBC(this)) && !func_80834758(globalCtx, this) && !func_80834F2C(this, globalCtx)) { return 0; - } - else - { - this->unk_6AD = 2; // OTRTODO: THIS IS A BAD IDEA BUT IT FIXES THE HORSE FIRST PERSON? + } else { + if (this->rideActor != NULL) { + this->unk_6AD = 2; // OTRTODO: THIS IS A BAD IDEA BUT IT FIXES THE HORSE FIRST PERSON? + } } return 1; @@ -14806,4 +14806,4 @@ void func_80853148(GlobalContext* globalCtx, Actor* actor) { this->naviActor->flags |= ACTOR_FLAG_8; func_80835EA4(globalCtx, 0xB); } -} \ No newline at end of file +} From 4a24b5afb432cd24c36e85db8c6e6bf17dedd04a Mon Sep 17 00:00:00 2001 From: Sirius902 <3645979-Sirius902@users.noreply.gitlab.com> Date: Mon, 28 Mar 2022 22:57:32 -0700 Subject: [PATCH 06/28] Use else if --- soh/src/overlays/actors/ovl_player_actor/z_player.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index 91fcf81ad..8ce8f1ae0 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -2321,10 +2321,8 @@ s32 func_8083501C(Player* this, GlobalContext* globalCtx) { if ((!Player_HoldsHookshot(this) || func_80834FBC(this)) && !func_80834758(globalCtx, this) && !func_80834F2C(this, globalCtx)) { return 0; - } else { - if (this->rideActor != NULL) { - this->unk_6AD = 2; // OTRTODO: THIS IS A BAD IDEA BUT IT FIXES THE HORSE FIRST PERSON? - } + } else if (this->rideActor != NULL) { + this->unk_6AD = 2; // OTRTODO: THIS IS A BAD IDEA BUT IT FIXES THE HORSE FIRST PERSON? } return 1; From dae8035314225b8c49999648f25c578b6bc53cbd Mon Sep 17 00:00:00 2001 From: Sirius902 <3645979-Sirius902@users.noreply.gitlab.com> Date: Sun, 27 Mar 2022 18:47:53 -0700 Subject: [PATCH 07/28] Load controller db from file --- libultraship/libultraship/Window.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libultraship/libultraship/Window.cpp b/libultraship/libultraship/Window.cpp index 24fda1ade..665483b35 100644 --- a/libultraship/libultraship/Window.cpp +++ b/libultraship/libultraship/Window.cpp @@ -39,6 +39,14 @@ extern "C" { exit(EXIT_FAILURE); } + const char* controllerDb = "gamecontrollerdb.txt"; + int mappingsAdded = SDL_GameControllerAddMappingsFromFile(controllerDb); + if (mappingsAdded >= 0) { + SPDLOG_INFO("Added SDL game controllers from \"{}\" ({})", controllerDb, mappingsAdded); + } else { + SPDLOG_ERROR("Failed add SDL game controller mappings from \"{}\" ({})", controllerDb, SDL_GetError()); + } + // TODO: This for loop is debug. Burn it with fire. for (size_t i = 0; i < SDL_NumJoysticks(); i++) { if (SDL_IsGameController(i)) { From 25468cf7223e8343091e5e7e0a99fe8fb7c473ee Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 27 Mar 2022 21:18:05 -0400 Subject: [PATCH 08/28] Add cheats menu. --- libultraship/libultraship/GameSettings.cpp | 48 +++++++++++-- libultraship/libultraship/GameSettings.h | 16 ++++- libultraship/libultraship/SohImGuiImpl.cpp | 61 +++++++++++++--- soh/src/code/game.c | 69 +++++++++++++++++++ soh/src/code/z_bgcheck.c | 10 ++- soh/src/code/z_parameter.c | 4 +- soh/src/code/z_player_lib.c | 4 +- .../actors/ovl_player_actor/z_player.c | 12 ++-- 8 files changed, 200 insertions(+), 24 deletions(-) diff --git a/libultraship/libultraship/GameSettings.cpp b/libultraship/libultraship/GameSettings.cpp index 8599367a7..c638468af 100644 --- a/libultraship/libultraship/GameSettings.cpp +++ b/libultraship/libultraship/GameSettings.cpp @@ -27,6 +27,7 @@ namespace Game { const std::string AudioSection = AUDIO_SECTION; const std::string ControllerSection = CONTROLLER_SECTION; const std::string EnhancementSection = ENHANCEMENTS_SECTION; + const std::string CheatSection = CHEATS_SECTION; void UpdateAudio() { Audio_SetGameVolume(SEQ_BGM_MAIN, Settings.audio.music_main); @@ -57,9 +58,7 @@ namespace Game { Settings.enhancements.animated_pause_menu = stob(Conf[EnhancementSection]["animated_pause_menu"]); CVar_SetS32(const_cast("gPauseLiveLink"), Settings.enhancements.animated_pause_menu); - Settings.enhancements.debug_mode = stob(Conf[EnhancementSection]["debug_mode"]); - CVar_SetS32(const_cast("gDebugEnabled"), Settings.enhancements.debug_mode); - + // Audio Settings.audio.master = Ship::stof(Conf[AudioSection]["master"]); CVar_SetFloat(const_cast("gGameMasterVolume"), Settings.audio.master); @@ -75,6 +74,7 @@ namespace Game { Settings.audio.fanfare = Ship::stof(Conf[AudioSection]["fanfare"]); CVar_SetFloat(const_cast("gFanfareVolume"), Settings.audio.fanfare); + // Controllers Settings.controller.gyro_sensitivity = Ship::stof(Conf[ControllerSection]["gyro_sensitivity"]); CVar_SetFloat(const_cast("gGyroSensitivity"), Settings.controller.gyro_sensitivity); @@ -86,6 +86,34 @@ namespace Game { Settings.controller.input_enabled = stob(Conf[ControllerSection]["input_enabled"]); CVar_SetS32(const_cast("gInputEnabled"), Settings.controller.input_enabled); + + // Cheats + Settings.cheats.debug_mode = stob(Conf[CheatSection]["debug_mode"]); + CVar_SetS32(const_cast("gDebugEnabled"), Settings.cheats.debug_mode); + + Settings.cheats.infinite_money = stob(Conf[CheatSection]["infinite_money"]); + CVar_SetS32(const_cast("gInfiniteMoney"), Settings.cheats.infinite_money); + + Settings.cheats.infinite_health = stob(Conf[CheatSection]["infinite_health"]); + CVar_SetS32(const_cast("gInfiniteHealth"), Settings.cheats.infinite_health); + + Settings.cheats.infinite_ammo = stob(Conf[CheatSection]["infinite_ammo"]); + CVar_SetS32(const_cast("gInfiniteAmmo"), Settings.cheats.infinite_ammo); + + Settings.cheats.infinite_magic = stob(Conf[CheatSection]["infinite_magic"]); + CVar_SetS32(const_cast("gInfiniteMagic"), Settings.cheats.infinite_magic); + + Settings.cheats.no_clip = stob(Conf[CheatSection]["no_clip"]); + CVar_SetS32(const_cast("gNoClip"), Settings.cheats.no_clip); + + Settings.cheats.climb_everything = stob(Conf[CheatSection]["climb_everything"]); + CVar_SetS32(const_cast("gClimbEverything"), Settings.cheats.climb_everything); + + Settings.cheats.moon_jump_on_l = stob(Conf[CheatSection]["moon_jump_on_l"]); + CVar_SetS32(const_cast("gMoonJumpOnL"), Settings.cheats.moon_jump_on_l); + + Settings.cheats.super_tunic = stob(Conf[CheatSection]["super_tunic"]); + CVar_SetS32(const_cast("gSuperTunic"), Settings.cheats.super_tunic); UpdateAudio(); } @@ -111,13 +139,25 @@ namespace Game { Conf[EnhancementSection]["fast_text"] = std::to_string(Settings.enhancements.fast_text); Conf[EnhancementSection]["disable_lod"] = std::to_string(Settings.enhancements.disable_lod); Conf[EnhancementSection]["animated_pause_menu"] = std::to_string(Settings.enhancements.animated_pause_menu); - Conf[EnhancementSection]["debug_mode"] = std::to_string(Settings.enhancements.debug_mode); + + // Controllers Conf[ControllerSection]["gyro_sensitivity"] = std::to_string(Settings.controller.gyro_sensitivity); Conf[ControllerSection]["rumble_strength"] = std::to_string(Settings.controller.rumble_strength); Conf[ControllerSection]["input_scale"] = std::to_string(Settings.controller.input_scale); Conf[ControllerSection]["input_enabled"] = std::to_string(Settings.controller.input_enabled); + // Cheats + Conf[CheatSection]["debug_mode"] = std::to_string(Settings.cheats.debug_mode); + Conf[CheatSection]["infinite_money"] = std::to_string(Settings.cheats.infinite_money); + Conf[CheatSection]["infinite_health"] = std::to_string(Settings.cheats.infinite_health); + Conf[CheatSection]["infinite_ammo"] = std::to_string(Settings.cheats.infinite_ammo); + Conf[CheatSection]["infinite_magic"] = std::to_string(Settings.cheats.infinite_magic); + Conf[CheatSection]["no_clip"] = std::to_string(Settings.cheats.no_clip); + Conf[CheatSection]["climb_everything"] = std::to_string(Settings.cheats.climb_everything); + Conf[CheatSection]["moon_jump_on_l"] = std::to_string(Settings.cheats.moon_jump_on_l); + Conf[CheatSection]["super_tunic"] = std::to_string(Settings.cheats.super_tunic); + Conf.Save(); } diff --git a/libultraship/libultraship/GameSettings.h b/libultraship/libultraship/GameSettings.h index 35d948d89..8508baeae 100644 --- a/libultraship/libultraship/GameSettings.h +++ b/libultraship/libultraship/GameSettings.h @@ -23,15 +23,28 @@ struct SoHConfigType { bool fast_text = false; bool disable_lod = false; bool animated_pause_menu = false; - bool debug_mode = false; } enhancements; + // Controller struct { float gyro_sensitivity = 1.0f; float rumble_strength = 1.0f; float input_scale = 1.0f; bool input_enabled = false; } controller; + + // Cheats + struct { + bool debug_mode = false; + bool infinite_money = false; + bool infinite_health = false; + bool infinite_ammo = false; + bool infinite_magic = false; + bool no_clip = false; + bool climb_everything = false; + bool moon_jump_on_l = false; + bool super_tunic = false; + } cheats; }; enum SeqPlayers { @@ -46,6 +59,7 @@ enum SeqPlayers { #define AUDIO_SECTION "AUDIO SETTINGS" #define CONTROLLER_SECTION "CONTROLLER SECTION" #define ENHANCEMENTS_SECTION "ENHANCEMENT SETTINGS" +#define CHEATS_SECTION "CHEATS SETTINGS" namespace Game { extern SoHConfigType Settings; diff --git a/libultraship/libultraship/SohImGuiImpl.cpp b/libultraship/libultraship/SohImGuiImpl.cpp index 22b47f680..548b298ef 100644 --- a/libultraship/libultraship/SohImGuiImpl.cpp +++ b/libultraship/libultraship/SohImGuiImpl.cpp @@ -350,20 +350,65 @@ namespace SohImGui { needs_save = true; } - ImGui::Text("Debugging"); - ImGui::Separator(); - - if (ImGui::Checkbox("Debug Mode", &Game::Settings.enhancements.debug_mode)) { - CVar_SetS32(const_cast("gDebugEnabled"), Game::Settings.enhancements.debug_mode); - needs_save = true; - } - ImGui::EndMenu(); } if (ImGui::BeginMenu("Developer Tools")) { HOOK(ImGui::MenuItem("Stats", nullptr, &Game::Settings.debug.soh)); HOOK(ImGui::MenuItem("Console", nullptr, &console->opened)); + + ImGui::Text("Debug"); + ImGui::Separator(); + + if (ImGui::Checkbox("Debug Mode", &Game::Settings.cheats.debug_mode)) { + CVar_SetS32(const_cast("gDebugEnabled"), Game::Settings.cheats.debug_mode); + needs_save = true; + } + + ImGui::EndMenu(); + } + + if (ImGui::BeginMenu("Cheats")) { + if (ImGui::Checkbox("Infinite Money", &Game::Settings.cheats.infinite_money)) { + CVar_SetS32(const_cast("gInfiniteMoney"), Game::Settings.cheats.infinite_money); + needs_save = true; + } + + if (ImGui::Checkbox("Infinite Health", &Game::Settings.cheats.infinite_health)) { + CVar_SetS32(const_cast("gInfiniteHealth"), Game::Settings.cheats.infinite_health); + needs_save = true; + } + + if (ImGui::Checkbox("Infinite Ammo", &Game::Settings.cheats.infinite_ammo)) { + CVar_SetS32(const_cast("gInfiniteAmmo"), Game::Settings.cheats.infinite_ammo); + needs_save = true; + } + + if (ImGui::Checkbox("Infinite Magic", &Game::Settings.cheats.infinite_magic)) { + CVar_SetS32(const_cast("gInfiniteMagic"), Game::Settings.cheats.infinite_magic); + needs_save = true; + } + + if (ImGui::Checkbox("No Clip", &Game::Settings.cheats.no_clip)) { + CVar_SetS32(const_cast("gNoClip"), Game::Settings.cheats.no_clip); + needs_save = true; + } + + if (ImGui::Checkbox("Climb Everything", &Game::Settings.cheats.climb_everything)) { + CVar_SetS32(const_cast("gClimbEverything"), Game::Settings.cheats.climb_everything); + needs_save = true; + } + + if (ImGui::Checkbox("Moon Jump on L", &Game::Settings.cheats.moon_jump_on_l)) { + CVar_SetS32(const_cast("gMoonJumpOnL"), Game::Settings.cheats.moon_jump_on_l); + needs_save = true; + } + + if (ImGui::Checkbox("Super Tunic", &Game::Settings.cheats.super_tunic)) { + CVar_SetS32(const_cast("gSuperTunic"), Game::Settings.cheats.super_tunic); + needs_save = true; + } + ImGui::EndMenu(); } diff --git a/soh/src/code/game.c b/soh/src/code/game.c index ec8a0e9fa..9392cbc25 100644 --- a/soh/src/code/game.c +++ b/soh/src/code/game.c @@ -323,6 +323,75 @@ void GameState_Update(GameState* gameState) { GameState_Draw(gameState, gfxCtx); func_800C49F4(gfxCtx); } + + // ----------------------- + // Cheats hooks + // ----------------------- + + // Inf Money + if (CVar_GetS32("gInfiniteMoney", 0) != 0) { + if (gSaveContext.rupees < CUR_CAPACITY(UPG_WALLET)) { + gSaveContext.rupees = CUR_CAPACITY(UPG_WALLET); + } + } + + // Inf Health + if (CVar_GetS32("gInfiniteHealth", 0) != 0) { + if (gSaveContext.health < gSaveContext.healthCapacity) { + gSaveContext.health = gSaveContext.healthCapacity; + } + } + + // Inf Ammo + if (CVar_GetS32("gInfiniteAmmo", 0) != 0) { + // Deku Sticks + if (AMMO(ITEM_STICK) < CUR_CAPACITY(UPG_STICKS)) { + AMMO(ITEM_STICK) = CUR_CAPACITY(UPG_STICKS); + } + + // Deku Nuts + if (AMMO(ITEM_NUT) < CUR_CAPACITY(UPG_NUTS)) { + AMMO(ITEM_NUT) = CUR_CAPACITY(UPG_NUTS); + } + + // Bombs + if (AMMO(ITEM_BOMB) < CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + } + + // Fairy Bow (Ammo) + if (AMMO(ITEM_BOW) < CUR_CAPACITY(UPG_QUIVER)) { + AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); + } + + // Fairy Slingshot (Ammo) + if (AMMO(ITEM_SLINGSHOT) < CUR_CAPACITY(UPG_BULLET_BAG)) { + AMMO(ITEM_SLINGSHOT) = CUR_CAPACITY(UPG_BULLET_BAG); + } + + // Bombchus (max: 50, no upgrades) + if (AMMO(ITEM_BOMBCHU) < 50) { + AMMO(ITEM_BOMBCHU) = 50; + } + } + + // Inf Magic + if (CVar_GetS32("gInfiniteMagic", 0) != 0) { + if (gSaveContext.magicAcquired && gSaveContext.magic != (gSaveContext.doubleMagic + 1) * 0x30) { + gSaveContext.magic = (gSaveContext.doubleMagic + 1) * 0x30; + } + } + + // Moon Jump On L + if (CVar_GetS32("gMoonJumpOnL", 0) != 0) { + if (gGlobalCtx) { + Player* player = GET_PLAYER(gGlobalCtx); + + if (CHECK_BTN_ANY(gGlobalCtx->state.input[0].cur.button, BTN_L)) { + player->actor.velocity.y = 6.34375f; + } + } + } gameState->frames++; } diff --git a/soh/src/code/z_bgcheck.c b/soh/src/code/z_bgcheck.c index b736d0cf0..9ce139eed 100644 --- a/soh/src/code/z_bgcheck.c +++ b/soh/src/code/z_bgcheck.c @@ -1874,6 +1874,10 @@ s32 BgCheck_CheckWallImpl(CollisionContext* colCtx, u16 xpFlags, Vec3f* posResul s32 bgId2; f32 nx, ny, nz; // unit normal of polygon + if (CVar_GetS32("gNoClip", 0) != 0) { + return false; + } + result = false; *outBgId = BGCHECK_SCENE; *outPoly = NULL; @@ -3996,7 +4000,11 @@ u32 func_80041D94(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) { * SurfaceType Get Wall Flags */ s32 func_80041DB8(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) { - return D_80119D90[func_80041D94(colCtx, poly, bgId)]; + if (CVar_GetS32("gClimbEverything", 0) != 0) { + return (1 << 3) | D_80119D90[func_80041D94(colCtx, poly, bgId)]; + } else { + return D_80119D90[func_80041D94(colCtx, poly, bgId)]; + } } /** diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index 3219527a9..8bce65a7b 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -4078,11 +4078,11 @@ void Interface_Update(GlobalContext* globalCtx) { D_80125A58 = func_8008F2F8(globalCtx); if (D_80125A58 == 1) { - if (CUR_EQUIP_VALUE(EQUIP_TUNIC) == 2) { + if (CUR_EQUIP_VALUE(EQUIP_TUNIC) == 2 || CVar_GetS32("gSuperTunic", 0) != 0) { D_80125A58 = 0; } } else if ((func_8008F2F8(globalCtx) >= 2) && (func_8008F2F8(globalCtx) < 5)) { - if (CUR_EQUIP_VALUE(EQUIP_TUNIC) == 3) { + if (CUR_EQUIP_VALUE(EQUIP_TUNIC) == 3 || CVar_GetS32("gSuperTunic", 0) != 0) { D_80125A58 = 0; } } diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index e15cc81eb..82c1e42bf 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -631,9 +631,9 @@ s32 func_8008F2F8(GlobalContext* globalCtx) { if (0) {} if ((triggerEntry->flag != 0) && !(gSaveContext.textTriggerFlags & triggerEntry->flag) && - (((var == 0) && (this->currentTunic != PLAYER_TUNIC_GORON)) || + (((var == 0) && (this->currentTunic != PLAYER_TUNIC_GORON && CVar_GetS32("gSuperTunic", 0) == 0)) || (((var == 1) || (var == 3)) && (this->currentBoots == PLAYER_BOOTS_IRON) && - (this->currentTunic != PLAYER_TUNIC_ZORA)))) { + (this->currentTunic != PLAYER_TUNIC_ZORA && CVar_GetS32("gSuperTunic", 0) == 0)))) { Message_StartTextbox(globalCtx, triggerEntry->textId, NULL); gSaveContext.textTriggerFlags |= triggerEntry->flag; } diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index d02788a8e..4321ff3e0 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -3842,12 +3842,12 @@ s32 func_808382DC(Player* this, GlobalContext* globalCtx) { s32 sp48 = func_80838144(D_808535E4); if (((this->actor.wallPoly != NULL) && - SurfaceType_IsWallDamage(&globalCtx->colCtx, this->actor.wallPoly, this->actor.wallBgId)) || + SurfaceType_IsWallDamage(&globalCtx->colCtx, this->actor.wallPoly, this->actor.wallBgId)) || ((sp48 >= 0) && SurfaceType_IsWallDamage(&globalCtx->colCtx, this->actor.floorPoly, this->actor.floorBgId) && (this->unk_A79 >= D_808544F4[sp48])) || ((sp48 >= 0) && - ((this->currentTunic != PLAYER_TUNIC_GORON) || (this->unk_A79 >= D_808544F4[sp48])))) { + ((this->currentTunic != PLAYER_TUNIC_GORON && CVar_GetS32("gSuperTunic", 0) == 0) || (this->unk_A79 >= D_808544F4[sp48])))) { this->unk_A79 = 0; this->actor.colChkInfo.damage = 4; func_80837C0C(globalCtx, this, 0, 4.0f, 5.0f, this->actor.shape.rot.y, 20); @@ -4632,7 +4632,7 @@ s32 func_8083A6AC(Player* this, GlobalContext* globalCtx) { if (BgCheck_EntityLineTest1(&globalCtx->colCtx, &this->actor.world.pos, &sp74, &sp68, &sp84, true, false, false, true, &sp80) && - (ABS(sp84->normal.y) < 600)) { + ((ABS(sp84->normal.y) < 600) || (CVar_GetS32("gClimbEverything", 0) != 0))) { f32 nx = COLPOLY_GET_NORMAL(sp84->normal.x); f32 ny = COLPOLY_GET_NORMAL(sp84->normal.y); f32 nz = COLPOLY_GET_NORMAL(sp84->normal.z); @@ -8152,7 +8152,7 @@ static struct_80832924 D_808545F0[] = { }; void func_80843CEC(Player* this, GlobalContext* globalCtx) { - if (this->currentTunic != PLAYER_TUNIC_GORON) { + if (this->currentTunic != PLAYER_TUNIC_GORON && CVar_GetS32("gSuperTunic", 0) == 0) { if ((globalCtx->roomCtx.curRoom.unk_02 == 3) || (D_808535E4 == 9) || ((func_80838144(D_808535E4) >= 0) && !SurfaceType_IsWallDamage(&globalCtx->colCtx, this->actor.floorPoly, this->actor.floorBgId))) { @@ -9888,7 +9888,7 @@ void func_80847BA0(GlobalContext* globalCtx, Player* this) { if ((this->actor.bgCheckFlags & 0x200) && (D_80853608 < 0x3000)) { CollisionPoly* wallPoly = this->actor.wallPoly; - if (ABS(wallPoly->normal.y) < 600) { + if ((ABS(wallPoly->normal.y) < 600) || (CVar_GetS32("gClimbEverything", 0) != 0)) { f32 sp8C = COLPOLY_GET_NORMAL(wallPoly->normal.x); f32 sp88 = COLPOLY_GET_NORMAL(wallPoly->normal.y); f32 sp84 = COLPOLY_GET_NORMAL(wallPoly->normal.z); @@ -10188,7 +10188,7 @@ void func_80848C74(GlobalContext* globalCtx, Player* this) { s32 sp58; s32 sp54; - if (this->currentTunic == PLAYER_TUNIC_GORON) { + if (this->currentTunic == PLAYER_TUNIC_GORON || CVar_GetS32("gSuperTunic", 0) != 0) { sp54 = 20; } else { From f3fe43b912995cb593f18f041725d8de6dad2bf5 Mon Sep 17 00:00:00 2001 From: MaikelChan Date: Fri, 25 Mar 2022 04:00:59 +0100 Subject: [PATCH 09/28] Fixed Link's sword being cut in preview in pause menu. Apply the offset only when live Link is enabled. --- soh/src/code/z_player_lib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index 82c1e42bf..d7344d7c3 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -1590,7 +1590,7 @@ void func_80091A24(GlobalContext* globalCtx, void* seg04, void* seg06, SkelAnime sp12C[0] = sword; sp12C[1] = shield; - Matrix_SetTranslateRotateYXZ(pos->x - (LINK_AGE_IN_YEARS == YEARS_ADULT ? 25 : 0), + Matrix_SetTranslateRotateYXZ(pos->x - ((CVar_GetS32("gPauseLiveLink", 0) && LINK_AGE_IN_YEARS == YEARS_ADULT) ? 25 : 0), pos->y - (CVar_GetS32("gPauseTriforce", 0) ? 16 : 0), pos->z, rot); Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); From e1be01cb6d7cb5a8149fff6041e3082a5be78739 Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Tue, 29 Mar 2022 11:59:24 -0400 Subject: [PATCH 10/28] Fixed rupee drops from bushes during title screen --- soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c index 1b89b7b8d..620463b04 100644 --- a/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -300,7 +300,7 @@ void EnKusa_Main(EnKusa* this, GlobalContext* globalCtx) { if (Actor_HasParent(&this->actor, globalCtx)) { EnKusa_SetupLiftedUp(this); SoundSource_PlaySfxAtFixedWorldPos(globalCtx, &this->actor.world.pos, 20, NA_SE_PL_PULL_UP_PLANT); - } else if (this->collider.base.acFlags & AC_HIT) { + } else if (this->collider.base.acFlags & AC_HIT && gGlobalCtx->csCtx.state == 0) { this->collider.base.acFlags &= ~AC_HIT; EnKusa_SpawnFragments(this, globalCtx); EnKusa_DropCollectible(this, globalCtx); From 6aa88941253884213ed4638268ae3065b22f83c5 Mon Sep 17 00:00:00 2001 From: Torphedo <73564623+Torphedo@users.noreply.github.com> Date: Tue, 29 Mar 2022 22:21:53 -0400 Subject: [PATCH 11/28] Remove unnecessary warnings (#42) * Remove unnecessary warnings * Comment out error --- ZAPDTR/ZAPD/Main.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ZAPDTR/ZAPD/Main.cpp b/ZAPDTR/ZAPD/Main.cpp index 440f6d504..250704993 100644 --- a/ZAPDTR/ZAPD/Main.cpp +++ b/ZAPDTR/ZAPD/Main.cpp @@ -188,14 +188,16 @@ int main(int argc, char* argv[]) } else if (arg == "-eh") // Enable Error Handler { -#if !defined(_MSC_VER) && !defined(__CYGWIN__) + #if !defined(_MSC_VER) && !defined(__CYGWIN__) signal(SIGSEGV, ErrorHandler); signal(SIGABRT, ErrorHandler); #else - HANDLE_WARNING(WarningType::Always, - "tried to set error handler, but this ZAPD build lacks support for one", - ""); + // HANDLE_WARNING(WarningType::Always, + // "tried to set error handler, but this ZAPD build lacks support for one", + // ""); #endif + + } else if (arg == "-v") // Verbose { From 98ddacef010b40d3f7039a9767b168af9c56ec00 Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Tue, 29 Mar 2022 22:23:02 -0400 Subject: [PATCH 12/28] Fixed PS5 gyro & Added GUI calibration button (#78) * Fixed PS5 gyro & Added GUI calibration button * Change PS4/PS5 LED to the tunic color --- libultraship/libultraship/GameSettings.h | 4 +- libultraship/libultraship/SDLController.cpp | 48 +++++++++++---------- libultraship/libultraship/SohImGuiImpl.cpp | 8 ++++ soh/src/code/padmgr.c | 14 +++++- 4 files changed, 49 insertions(+), 25 deletions(-) diff --git a/libultraship/libultraship/GameSettings.h b/libultraship/libultraship/GameSettings.h index 8508baeae..be974fd80 100644 --- a/libultraship/libultraship/GameSettings.h +++ b/libultraship/libultraship/GameSettings.h @@ -30,7 +30,9 @@ struct SoHConfigType { float gyro_sensitivity = 1.0f; float rumble_strength = 1.0f; float input_scale = 1.0f; - bool input_enabled = false; + float gyroDriftX = 0.0f; + float gyroDriftY = 0.0f; + bool input_enabled = false; } controller; // Cheats diff --git a/libultraship/libultraship/SDLController.cpp b/libultraship/libultraship/SDLController.cpp index 3d6d6800d..d1315c3e4 100644 --- a/libultraship/libultraship/SDLController.cpp +++ b/libultraship/libultraship/SDLController.cpp @@ -7,12 +7,8 @@ #include "Window.h" extern "C" uint8_t __osMaxControllers; -float gyroDriftX; -float gyroDriftY; namespace Ship { - - SDLController::SDLController(int32_t dwControllerNumber) : Controller(dwControllerNumber), Cont(nullptr), guid(INVALID_SDL_CONTROLLER_GUID) { } @@ -186,31 +182,31 @@ namespace Ship { SDL_GameControllerGetSensorData(Cont, SDL_SENSOR_GYRO, gyroData, 3); const char* contName = SDL_GameControllerName(Cont); - const int isSpecialController = strcmp("PS5 Controller", contName); + const int isSpecialController = !strcmp("PS5 Controller", contName); const float gyroSensitivity = Game::Settings.controller.gyro_sensitivity; - if (gyroDriftX == 0) { - if (isSpecialController == 0) { - gyroDriftX = gyroData[2]; + if (Game::Settings.controller.gyroDriftX == 0) { + Game::Settings.controller.gyroDriftX = gyroData[0]; + } + + if (Game::Settings.controller.gyroDriftY == 0) { + if (isSpecialController == 1) { + Game::Settings.controller.gyroDriftY = gyroData[2]; } else { - gyroDriftX = gyroData[0]; + Game::Settings.controller.gyroDriftY = gyroData[1]; } } - if (gyroDriftY == 0) { - gyroDriftY = gyroData[1]; - } - - if (isSpecialController == 0) { - wGyroX = gyroData[2] - gyroDriftX; + if (isSpecialController == 1) { + wGyroX = gyroData[0] - Game::Settings.controller.gyroDriftX; + wGyroY = -gyroData[2] - Game::Settings.controller.gyroDriftY; } else { - wGyroX = gyroData[0] - gyroDriftX; + wGyroX = gyroData[0] - Game::Settings.controller.gyroDriftX; + wGyroY = gyroData[1] - Game::Settings.controller.gyroDriftY; } - wGyroY = gyroData[1] - gyroDriftY; - wGyroX *= gyroSensitivity; wGyroY *= gyroSensitivity; } @@ -340,11 +336,19 @@ namespace Ship { } if (SDL_GameControllerHasLED(Cont)) { - if (controller->ledColor == 1) { + switch (controller->ledColor) { + case 0: SDL_JoystickSetLED(SDL_GameControllerGetJoystick(Cont), 255, 0, 0); - } - else { - SDL_JoystickSetLED(SDL_GameControllerGetJoystick(Cont), 0, 255, 0); + break; + case 1: + SDL_JoystickSetLED(SDL_GameControllerGetJoystick(Cont), 0x1E, 0x69, 0x1B); + break; + case 2: + SDL_JoystickSetLED(SDL_GameControllerGetJoystick(Cont), 0x64, 0x14, 0x00); + break; + case 3: + SDL_JoystickSetLED(SDL_GameControllerGetJoystick(Cont), 0x00, 0x3C, 0x64); + break; } } } diff --git a/libultraship/libultraship/SohImGuiImpl.cpp b/libultraship/libultraship/SohImGuiImpl.cpp index 548b298ef..abc51a535 100644 --- a/libultraship/libultraship/SohImGuiImpl.cpp +++ b/libultraship/libultraship/SohImGuiImpl.cpp @@ -306,6 +306,14 @@ namespace SohImGui { if (ImGui::SliderFloat("##GYROSCOPE", &Game::Settings.controller.gyro_sensitivity, 0.0f, 1.0f, "")) { needs_save = true; } + + if (ImGui::Button("Recalibrate Gyro")) { + Game::Settings.controller.gyroDriftX = 0; + Game::Settings.controller.gyroDriftY = 0; + } + + ImGui::Separator(); + ImGui::Text("Rumble Strength: %d %%", static_cast(100 * Game::Settings.controller.rumble_strength)); if (ImGui::SliderFloat("##RUMBLE", &Game::Settings.controller.rumble_strength, 0.0f, 1.0f, "")) { needs_save = true; diff --git a/soh/src/code/padmgr.c b/soh/src/code/padmgr.c index fb4ceb8e6..973c2b446 100644 --- a/soh/src/code/padmgr.c +++ b/soh/src/code/padmgr.c @@ -272,9 +272,19 @@ void PadMgr_ProcessInputs(PadMgr* padMgr) { controllerCallback.rumble = padMgr->rumbleEnable[0] > 0 ? 1 : 0; if (HealthMeter_IsCritical()) { - controllerCallback.ledColor = 1; - } else { controllerCallback.ledColor = 0; + } else if (gGlobalCtx) { + switch (CUR_EQUIP_VALUE(EQUIP_TUNIC) - 1) { + case PLAYER_TUNIC_KOKIRI: + controllerCallback.ledColor = 1; + break; + case PLAYER_TUNIC_GORON: + controllerCallback.ledColor = 2; + break; + case PLAYER_TUNIC_ZORA: + controllerCallback.ledColor = 3; + break; + } } OTRControllerCallback(&controllerCallback); From 5505336a8a02e2f957a6748ccf1527d38038db75 Mon Sep 17 00:00:00 2001 From: kev4cards Date: Tue, 29 Mar 2022 22:23:40 -0400 Subject: [PATCH 13/28] Replace uAxisThreshold with appropriate constant for octagon clamping (#83) --- libultraship/libultraship/SDLController.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libultraship/libultraship/SDLController.cpp b/libultraship/libultraship/SDLController.cpp index d1315c3e4..47fb57441 100644 --- a/libultraship/libultraship/SDLController.cpp +++ b/libultraship/libultraship/SDLController.cpp @@ -143,8 +143,8 @@ namespace Ship { //bound diagonals to an octagonal range {-68 ... +68} if (ax != 0.0 && ay != 0.0) { auto slope = ay / ax; - auto edgex = copysign(85.0 / (abs(slope) + wAxisThreshold / 69.0), ax); - auto edgey = copysign(std::min(abs(edgex * slope), 85.0 / (1.0 / abs(slope) + wAxisThreshold / 69.0)), ay); + auto edgex = copysign(85.0 / (abs(slope) + 16.0 / 69.0), ax); + auto edgey = copysign(std::min(abs(edgex * slope), 85.0 / (1.0 / abs(slope) + 16.0 / 69.0)), ay); edgex = edgey / slope; auto scale = sqrt(edgex * edgex + edgey * edgey) / 85.0; @@ -410,4 +410,4 @@ namespace Ship { std::string SDLController::GetBindingConfSection() { return GetControllerType() + " CONTROLLER BINDING " + guid; } -} \ No newline at end of file +} From 5d967f8e8c822565cb755ef95446cf7daf2b0b63 Mon Sep 17 00:00:00 2001 From: Emil Lenngren Date: Thu, 31 Mar 2022 02:30:48 +0200 Subject: [PATCH 14/28] Don't crash if glClipControl is not available --- libultraship/libultraship/Lib/Fast3D/gfx_opengl.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libultraship/libultraship/Lib/Fast3D/gfx_opengl.cpp b/libultraship/libultraship/Lib/Fast3D/gfx_opengl.cpp index 52815bc1c..16e750d14 100644 --- a/libultraship/libultraship/Lib/Fast3D/gfx_opengl.cpp +++ b/libultraship/libultraship/Lib/Fast3D/gfx_opengl.cpp @@ -673,7 +673,11 @@ static void gfx_opengl_resize_framebuffer(int fb, uint32_t width, uint32_t heigh void gfx_opengl_set_framebuffer(int fb) { - glClipControl(GL_UPPER_LEFT, GL_NEGATIVE_ONE_TO_ONE); // Set origin to upper left corner, to match N64 and DX11 + if (GLEW_ARB_clip_control || GLEW_VERSION_4_5) { + // Set origin to upper left corner, to match N64 and DX11 + // If this function is not supported, the texture will be upside down :( + glClipControl(GL_UPPER_LEFT, GL_NEGATIVE_ONE_TO_ONE); + } glBindFramebuffer(GL_FRAMEBUFFER_EXT, fb); glDepthMask(GL_TRUE); @@ -687,7 +691,9 @@ void gfx_opengl_reset_framebuffer(void) glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_FRAMEBUFFER_EXT, framebuffer); - glClipControl(GL_LOWER_LEFT, GL_NEGATIVE_ONE_TO_ONE); + if (GLEW_ARB_clip_control || GLEW_VERSION_4_5) { + glClipControl(GL_LOWER_LEFT, GL_NEGATIVE_ONE_TO_ONE); + } } void gfx_opengl_select_texture_fb(int fbID) From 438fa8954c499fb4f65670873c37a51c7fbd7300 Mon Sep 17 00:00:00 2001 From: Kenix3 Date: Thu, 31 Mar 2022 17:39:12 -0400 Subject: [PATCH 15/28] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index aebd5b71b..ad6581078 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,7 @@ Official Discord: https://discord.com/invite/BtBmd55HVH Rrrrry123 | Speedbunner, encouragement, and community moderation Fierce deity | Encouragement and community moderation mzxrules | For his contributions to decomp + zel. | For his contributions to decomp Aloxado | Developer - General Programmer MegaMech | Developer - General Programmer Revo | Tester - GCC support and General Testing From 8bb9dd8aba29a025cd2f5f9f413ef0740247ac52 Mon Sep 17 00:00:00 2001 From: Kenix3 Date: Thu, 31 Mar 2022 17:39:47 -0400 Subject: [PATCH 16/28] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad6581078..5aac83267 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ Official Discord: https://discord.com/invite/BtBmd55HVH Rrrrry123 | Speedbunner, encouragement, and community moderation Fierce deity | Encouragement and community moderation mzxrules | For his contributions to decomp - zel. | For his contributions to decomp + zel. | For his contributions to decomp Aloxado | Developer - General Programmer MegaMech | Developer - General Programmer Revo | Tester - GCC support and General Testing From e7e80c2c956f5ab92a80982bd8ceb5e9c7c3a327 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Thu, 31 Mar 2022 15:40:25 -0600 Subject: [PATCH 17/28] Clarified compiliation step (#127) * Update README.md * Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5aac83267..a002eee8a 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Official Discord: https://discord.com/invite/BtBmd55HVH 2. Install [Visual Studio 2022 Community Edition](https://visualstudio.microsoft.com/vs/community/) 2b. In the Visual Studio Installer, install `MSVC v142 - VS 2019 C++`. 4. Clone the Ship of Harkinian repository. - 5. Put your 2020 OoT debug rom in the `soh` folder. + 5. Place `oot debug` rom (not Master Quest) in the `soh` folder named `baserom_original_non_mq`. 6. Launch `soh/fixbaserom.py`. 7. Launch `soh/extract_baserom.py`. 8. Copy the `baserom` folder from the `soh` folder into the `OTRExporter` folder. From 572e9fb9d0c6475f7bf9cf0801a50ff19c0567c5 Mon Sep 17 00:00:00 2001 From: Andrew Piper Date: Thu, 31 Mar 2022 18:32:32 -0400 Subject: [PATCH 18/28] Add an enhancement for a minimal ui. (#102) This removes the button backgrounds, hides the hearts when they are full and the magic when its not in use. It also hides the rupee / key counters. All this is still visible on the pause screen or when the minimap is visible. It also changes the minimap behavior to be hidden by default on a zone change. --- libultraship/libultraship/GameSettings.cpp | 5 +- libultraship/libultraship/GameSettings.h | 1 + libultraship/libultraship/SohImGuiImpl.cpp | 5 + soh/soh/Enhancements/bootcommands.c | 1 + soh/src/code/z_construct.c | 2 +- soh/src/code/z_parameter.c | 210 ++++++++++++--------- 6 files changed, 129 insertions(+), 95 deletions(-) diff --git a/libultraship/libultraship/GameSettings.cpp b/libultraship/libultraship/GameSettings.cpp index c638468af..1186fa27c 100644 --- a/libultraship/libultraship/GameSettings.cpp +++ b/libultraship/libultraship/GameSettings.cpp @@ -58,6 +58,9 @@ namespace Game { Settings.enhancements.animated_pause_menu = stob(Conf[EnhancementSection]["animated_pause_menu"]); CVar_SetS32(const_cast("gPauseLiveLink"), Settings.enhancements.animated_pause_menu); + Settings.enhancements.minimal_ui = stob(Conf[EnhancementSection]["minimal_ui"]); + CVar_SetS32(const_cast("gMinimalUI"), Settings.enhancements.minimal_ui); + // Audio Settings.audio.master = Ship::stof(Conf[AudioSection]["master"]); CVar_SetFloat(const_cast("gGameMasterVolume"), Settings.audio.master); @@ -139,7 +142,7 @@ namespace Game { Conf[EnhancementSection]["fast_text"] = std::to_string(Settings.enhancements.fast_text); Conf[EnhancementSection]["disable_lod"] = std::to_string(Settings.enhancements.disable_lod); Conf[EnhancementSection]["animated_pause_menu"] = std::to_string(Settings.enhancements.animated_pause_menu); - + Conf[EnhancementSection]["minimal_ui"] = std::to_string(Settings.enhancements.minimal_ui); // Controllers Conf[ControllerSection]["gyro_sensitivity"] = std::to_string(Settings.controller.gyro_sensitivity); diff --git a/libultraship/libultraship/GameSettings.h b/libultraship/libultraship/GameSettings.h index be974fd80..4f9bb4c99 100644 --- a/libultraship/libultraship/GameSettings.h +++ b/libultraship/libultraship/GameSettings.h @@ -23,6 +23,7 @@ struct SoHConfigType { bool fast_text = false; bool disable_lod = false; bool animated_pause_menu = false; + bool minimal_ui = false; } enhancements; // Controller diff --git a/libultraship/libultraship/SohImGuiImpl.cpp b/libultraship/libultraship/SohImGuiImpl.cpp index abc51a535..d95a27d08 100644 --- a/libultraship/libultraship/SohImGuiImpl.cpp +++ b/libultraship/libultraship/SohImGuiImpl.cpp @@ -341,6 +341,11 @@ namespace SohImGui { needs_save = true; } + if (ImGui::Checkbox("Minimal UI", &Game::Settings.enhancements.minimal_ui)) { + CVar_SetS32(const_cast("gMinimalUI"), Game::Settings.enhancements.minimal_ui); + needs_save = true; + } + ImGui::Text("Graphics"); ImGui::Separator(); diff --git a/soh/soh/Enhancements/bootcommands.c b/soh/soh/Enhancements/bootcommands.c index 6901c4644..685593179 100644 --- a/soh/soh/Enhancements/bootcommands.c +++ b/soh/soh/Enhancements/bootcommands.c @@ -24,6 +24,7 @@ void BootCommands_Init() CVar_RegisterS32("gDisableLOD", 0); CVar_RegisterS32("gDebugEnabled", 0); CVar_RegisterS32("gPauseLiveLink", 0); + CVar_RegisterS32("gMinimalUI", 0); } //void BootCommands_ParseBootArgs(char* str) diff --git a/soh/src/code/z_construct.c b/soh/src/code/z_construct.c index 2fd6d43ad..5149fd974 100644 --- a/soh/src/code/z_construct.c +++ b/soh/src/code/z_construct.c @@ -462,7 +462,7 @@ void func_80111070(void) { WREG(28) = 0; R_OW_MINIMAP_X = 238; R_OW_MINIMAP_Y = 164; - R_MINIMAP_DISABLED = false; + R_MINIMAP_DISABLED = CVar_GetS32("gMinimalUI", 0); WREG(32) = 122; WREG(33) = 60; WREG(35) = 0; diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index 8bce65a7b..1653cdaaf 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -3143,6 +3143,7 @@ void Interface_Draw(GlobalContext* globalCtx) { s16 svar4; s16 svar5; s16 svar6; + bool fullUi = !CVar_GetS32("gMinimalUI", 0) || !R_MINIMAP_DISABLED || globalCtx->pauseCtx.state != 0; OPEN_DISPS(globalCtx->state.gfxCtx, "../z_parameter.c", 3405); @@ -3158,111 +3159,123 @@ void Interface_Draw(GlobalContext* globalCtx) { if (pauseCtx->debugState == 0) { Interface_InitVertices(globalCtx); func_8008A994(interfaceCtx); - HealthMeter_Draw(globalCtx); + if (fullUi || gSaveContext.health != gSaveContext.healthCapacity) { + HealthMeter_Draw(globalCtx); + } func_80094520(globalCtx->state.gfxCtx); - // Rupee Icon - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 255, 100, interfaceCtx->magicAlpha); - gDPSetEnvColor(OVERLAY_DISP++, 0, 80, 0, 255); - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26), - 206, 16, 16, 1 << 10, 1 << 10); + if (fullUi) { + // Rupee Icon + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 255, 100, interfaceCtx->magicAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 80, 0, 255); + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26), + 206, 16, 16, 1 << 10, 1 << 10); - switch (globalCtx->sceneNum) { - case SCENE_BMORI1: - case SCENE_HIDAN: - case SCENE_MIZUSIN: - case SCENE_JYASINZOU: - case SCENE_HAKADAN: - case SCENE_HAKADANCH: - case SCENE_ICE_DOUKUTO: - case SCENE_GANON: - case SCENE_MEN: - case SCENE_GERUDOWAY: - case SCENE_GANONTIKA: - case SCENE_GANON_SONOGO: - case SCENE_GANONTIKA_SONOGO: - case SCENE_TAKARAYA: - if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) { - // Small Key Icon - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); - gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255); - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26), 190, 16, 16, - 1 << 10, 1 << 10); + switch (globalCtx->sceneNum) { + case SCENE_BMORI1: + case SCENE_HIDAN: + case SCENE_MIZUSIN: + case SCENE_JYASINZOU: + case SCENE_HAKADAN: + case SCENE_HAKADANCH: + case SCENE_ICE_DOUKUTO: + case SCENE_GANON: + case SCENE_MEN: + case SCENE_GERUDOWAY: + case SCENE_GANONTIKA: + case SCENE_GANON_SONOGO: + case SCENE_GANONTIKA_SONOGO: + case SCENE_TAKARAYA: + if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) { + // Small Key Icon + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255); + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26), 190, 16, 16, + 1 << 10, 1 << 10); - // Small Key Counter - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, - TEXEL0, 0, PRIMITIVE, 0); + // Small Key Counter + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, + TEXEL0, 0, PRIMITIVE, 0); - interfaceCtx->counterDigits[2] = 0; - interfaceCtx->counterDigits[3] = gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]; + interfaceCtx->counterDigits[2] = 0; + interfaceCtx->counterDigits[3] = gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]; - while (interfaceCtx->counterDigits[3] >= 10) { - interfaceCtx->counterDigits[2]++; - interfaceCtx->counterDigits[3] -= 10; + while (interfaceCtx->counterDigits[3] >= 10) { + interfaceCtx->counterDigits[2]++; + interfaceCtx->counterDigits[3] -= 10; + } + + svar3 = OTRGetRectDimensionFromLeftEdge(42); + + if (interfaceCtx->counterDigits[2] != 0) { + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)((u8*)digitTextures[interfaceCtx->counterDigits[2]])), 8, + 16, svar3, 190, 8, 16, 1 << 10, 1 << 10); + svar3 += 8; + } + + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, + ((u8*)digitTextures[interfaceCtx->counterDigits[3]]), 8, 16, + svar3, 190, 8, 16, 1 << 10, 1 << 10); } + break; + default: + break; + } - svar3 = OTRGetRectDimensionFromLeftEdge(42); + // Rupee Counter + gDPPipeSync(OVERLAY_DISP++); - if (interfaceCtx->counterDigits[2] != 0) { - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)((u8*)digitTextures[interfaceCtx->counterDigits[2]])), 8, - 16, svar3, 190, 8, 16, 1 << 10, 1 << 10); - svar3 += 8; - } + if (gSaveContext.rupees == CUR_CAPACITY(UPG_WALLET)) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha); + } else if (gSaveContext.rupees != 0) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha); + } - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, - ((u8*)digitTextures[interfaceCtx->counterDigits[3]]), 8, 16, - svar3, 190, 8, 16, 1 << 10, 1 << 10); - } - break; - default: - break; + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, + PRIMITIVE, 0); + + interfaceCtx->counterDigits[0] = interfaceCtx->counterDigits[1] = 0; + interfaceCtx->counterDigits[2] = gSaveContext.rupees; + + if ((interfaceCtx->counterDigits[2] > 9999) || (interfaceCtx->counterDigits[2] < 0)) { + interfaceCtx->counterDigits[2] &= 0xDDD; + } + + while (interfaceCtx->counterDigits[2] >= 100) { + interfaceCtx->counterDigits[0]++; + interfaceCtx->counterDigits[2] -= 100; + } + + while (interfaceCtx->counterDigits[2] >= 10) { + interfaceCtx->counterDigits[1]++; + interfaceCtx->counterDigits[2] -= 10; + } + + svar2 = rupeeDigitsFirst[CUR_UPG_VALUE(UPG_WALLET)]; + svar5 = rupeeDigitsCount[CUR_UPG_VALUE(UPG_WALLET)]; + + for (svar1 = 0, svar3 = 42; svar1 < svar5; svar1++, svar2++, svar3 += 8) { + OVERLAY_DISP = + Gfx_TextureI8(OVERLAY_DISP, ((u8*)digitTextures[interfaceCtx->counterDigits[svar2]]), 8, 16, + OTRGetRectDimensionFromLeftEdge(svar3), 206, 8, 16, 1 << 10, 1 << 10); + } + } + else { + // Make sure item counts have black backgrounds + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); } - // Rupee Counter - gDPPipeSync(OVERLAY_DISP++); - - if (gSaveContext.rupees == CUR_CAPACITY(UPG_WALLET)) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha); - } else if (gSaveContext.rupees != 0) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); - } else { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha); + if (fullUi || gSaveContext.unk_13F0 > 0) { + Interface_DrawMagicBar(globalCtx); } - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, - PRIMITIVE, 0); - - interfaceCtx->counterDigits[0] = interfaceCtx->counterDigits[1] = 0; - interfaceCtx->counterDigits[2] = gSaveContext.rupees; - - if ((interfaceCtx->counterDigits[2] > 9999) || (interfaceCtx->counterDigits[2] < 0)) { - interfaceCtx->counterDigits[2] &= 0xDDD; - } - - while (interfaceCtx->counterDigits[2] >= 100) { - interfaceCtx->counterDigits[0]++; - interfaceCtx->counterDigits[2] -= 100; - } - - while (interfaceCtx->counterDigits[2] >= 10) { - interfaceCtx->counterDigits[1]++; - interfaceCtx->counterDigits[2] -= 10; - } - - svar2 = rupeeDigitsFirst[CUR_UPG_VALUE(UPG_WALLET)]; - svar5 = rupeeDigitsCount[CUR_UPG_VALUE(UPG_WALLET)]; - - for (svar1 = 0, svar3 = 42; svar1 < svar5; svar1++, svar2++, svar3 += 8) { - OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)digitTextures[interfaceCtx->counterDigits[svar2]]), 8, 16, - OTRGetRectDimensionFromLeftEdge(svar3), 206, 8, 16, 1 << 10, 1 << 10); - } - - Interface_DrawMagicBar(globalCtx); Minimap_Draw(globalCtx); if ((R_PAUSE_MENU_MODE != 2) && (R_PAUSE_MENU_MODE != 3)) { @@ -3271,7 +3284,9 @@ void Interface_Draw(GlobalContext* globalCtx) { func_80094520(globalCtx->state.gfxCtx); - Interface_DrawItemButtons(globalCtx); + if (fullUi) { + Interface_DrawItemButtons(globalCtx); + } gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); @@ -3281,10 +3296,17 @@ void Interface_Draw(GlobalContext* globalCtx) { // B Button Icon & Ammo Count if (gSaveContext.equips.buttonItems[0] != ITEM_NONE) { - Interface_DrawItemIconTexture(globalCtx, gItemIcons[gSaveContext.equips.buttonItems[0]], 0); + if (fullUi) { + Interface_DrawItemIconTexture(globalCtx, gItemIcons[gSaveContext.equips.buttonItems[0]], 0); + } if ((player->stateFlags1 & 0x00800000) || (globalCtx->shootingGalleryStatus > 1) || ((globalCtx->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(globalCtx, 0x38))) { + + if (!fullUi) { + Interface_DrawItemIconTexture(globalCtx, gItemIcons[gSaveContext.equips.buttonItems[0]], 0); + } + gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); @@ -3357,7 +3379,9 @@ void Interface_Draw(GlobalContext* globalCtx) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_A_BTN_COLOR(0), R_A_BTN_COLOR(1), R_A_BTN_COLOR(2), interfaceCtx->aAlpha); - Interface_DrawActionButton(globalCtx, rABtnX, R_A_BTN_Y); + if (fullUi) { + Interface_DrawActionButton(globalCtx, rABtnX, R_A_BTN_Y); + } gDPPipeSync(OVERLAY_DISP++); const f32 rAIconX = OTRGetDimensionFromRightEdge(R_A_ICON_X); //func_8008A8B8(globalCtx, R_A_ICON_Y, R_A_ICON_Y + 45, rAIconX, rAIconX + 45); From c80f9fbd57d2ae90fa87a1e34d906a265de20e55 Mon Sep 17 00:00:00 2001 From: Nicholas Estelami Date: Thu, 31 Mar 2022 19:42:44 -0400 Subject: [PATCH 19/28] Added support for multiple game versions (#107) * WIP Multiversion support * GC PAL Non-MQ support complete * Updated OtrGui to handle different game versions * Added version file * Added new extract mode to ZAPD and optimized OTR gen time * Fixed bug causing crash * Further optimized OTRExporter, saving around ~20 seconds. * ZAPD is now multi-threaded. * Fixed merge issue * Fixed memory leak and fog issue on pause screen. * Additional fog fixes. Co-authored-by: Jack Walker <7463599+Jack-Walker@users.noreply.github.com> --- OTRExporter/.gitignore | 2 + OTRExporter/CFG/Config.xml | 2 +- OTRExporter/CFG/filelists/dbg.txt | 1532 ++++++++++++++++ OTRExporter/CFG/filelists/gamecube.txt | 1509 ++++++++++++++++ OTRExporter/CFG/filelists/gamecube_pal.txt | 1510 ++++++++++++++++ .../OTRExporter/DisplayListExporter.cpp | 128 +- OTRExporter/OTRExporter/Main.cpp | 36 +- OTRExporter/OTRExporter/Main.h | 3 +- OTRExporter/OTRExporter/OTRExporter.vcxproj | 18 + OTRExporter/OTRExporter/RoomExporter.cpp | 16 +- OTRExporter/OTRExporter/SkeletonExporter.cpp | 2 +- .../OTRExporter/SkeletonLimbExporter.cpp | 8 +- OTRExporter/extract_assets.py | 12 +- OTRExporter/extract_baserom_debug.py | 1608 +++++++++++++++++ OTRExporter/extract_baserom_gc.py | 1586 ++++++++++++++++ .../{Config.xml => Config_GC_MQ_D.xml} | 2 +- OTRGui/assets/extractor/Config_GC_NMQ_D.xml | 8 + .../assets/extractor/Config_GC_NMQ_PAL_F.xml | 8 + .../extractor/filelists/gamecube_pal.txt | 1510 ++++++++++++++++ OTRGui/src/game/game.cpp | 30 +- .../baserom_extractor/baserom_extractor.cpp | 25 +- .../baserom_extractor/baserom_extractor.h | 18 +- OTRGui/src/impl/extractor/extractor.cpp | 115 +- OTRGui/src/impl/extractor/extractor.h | 4 +- OTRGui/src/utils/mutils.cpp | 6 +- ZAPDTR/ZAPD/CRC32.h | 2 +- ZAPDTR/ZAPD/Declaration.cpp | 7 + ZAPDTR/ZAPD/Declaration.h | 6 + ZAPDTR/ZAPD/FileWorker.cpp | 0 ZAPDTR/ZAPD/FileWorker.h | 15 + ZAPDTR/ZAPD/Globals.cpp | 128 +- ZAPDTR/ZAPD/Globals.h | 24 +- ZAPDTR/ZAPD/Main.cpp | 188 +- ZAPDTR/ZAPD/OtherStructs/SkinLimbStructs.cpp | 11 +- ZAPDTR/ZAPD/OutputFormatter.cpp | 8 +- ZAPDTR/ZAPD/OutputFormatter.h | 2 +- ZAPDTR/ZAPD/Overlays/ZOverlay.cpp | 2 + ZAPDTR/ZAPD/Overlays/ZOverlay.h | 3 + ZAPDTR/ZAPD/ZAPD.vcxproj | 28 + ZAPDTR/ZAPD/ZAPD.vcxproj.filters | 30 + ZAPDTR/ZAPD/ZAnimation.cpp | 45 +- ZAPDTR/ZAPD/ZArray.cpp | 3 +- ZAPDTR/ZAPD/ZBackground.cpp | 7 +- ZAPDTR/ZAPD/ZCollision.cpp | 73 +- ZAPDTR/ZAPD/ZDisplayList.cpp | 67 +- ZAPDTR/ZAPD/ZFile.cpp | 38 +- ZAPDTR/ZAPD/ZFile.h | 7 +- ZAPDTR/ZAPD/ZLimb.cpp | 20 +- ZAPDTR/ZAPD/ZPath.cpp | 7 +- ZAPDTR/ZAPD/ZPlayerAnimationData.cpp | 4 + ZAPDTR/ZAPD/ZResource.cpp | 34 +- ZAPDTR/ZAPD/ZRom.cpp | 202 +++ ZAPDTR/ZAPD/ZRom.h | 27 + .../ZRoom/Commands/SetActorCutsceneList.cpp | 3 +- ZAPDTR/ZAPD/ZRoom/Commands/SetActorList.cpp | 3 +- .../ZRoom/Commands/SetAlternateHeaders.cpp | 6 +- .../Commands/SetAnimatedMaterialList.cpp | 3 +- .../ZRoom/Commands/SetCollisionHeader.cpp | 3 +- ZAPDTR/ZAPD/ZRoom/Commands/SetCsCamera.cpp | 5 +- ZAPDTR/ZAPD/ZRoom/Commands/SetCutscenes.cpp | 3 +- .../ZAPD/ZRoom/Commands/SetEntranceList.cpp | 3 +- ZAPDTR/ZAPD/ZRoom/Commands/SetExitList.cpp | 2 +- ZAPDTR/ZAPD/ZRoom/Commands/SetLightList.cpp | 3 +- .../ZRoom/Commands/SetLightingSettings.cpp | 3 +- ZAPDTR/ZAPD/ZRoom/Commands/SetMesh.cpp | 14 +- .../ZAPD/ZRoom/Commands/SetMinimapChests.cpp | 3 +- ZAPDTR/ZAPD/ZRoom/Commands/SetMinimapList.cpp | 6 +- ZAPDTR/ZAPD/ZRoom/Commands/SetObjectList.cpp | 2 +- ZAPDTR/ZAPD/ZRoom/Commands/SetPathways.cpp | 2 +- ZAPDTR/ZAPD/ZRoom/Commands/SetRoomList.cpp | 2 +- .../ZRoom/Commands/SetStartPositionList.cpp | 3 +- .../ZRoom/Commands/SetTransitionActorList.cpp | 3 +- ZAPDTR/ZAPD/ZSkeleton.cpp | 6 +- ZAPDTR/ZAPD/ZText.cpp | 9 +- ZAPDTR/ZAPD/ZTexture.cpp | 48 +- ZAPDTR/ZAPD/ZTextureAnimation.cpp | 20 +- ZAPDTR/ZAPD/ctpl_stl.h | 251 +++ ZAPDTR/ZAPD/yaz0/readwrite.h | 29 + ZAPDTR/ZAPD/yaz0/yaz0.cpp | 227 +++ ZAPDTR/ZAPD/yaz0/yaz0.h | 6 + ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj | 18 + ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj.filters | 16 +- ZAPDTR/lib/libgfxd/priv.h | 4 +- libultraship/libultraship/GameVersions.h | 20 + .../libultraship/Lib/Fast3D/gfx_pc.cpp | 12 +- libultraship/libultraship/Lib/Fast3D/gfx_pc.h | 2 +- libultraship/libultraship/ResourceMgr.cpp | 91 +- libultraship/libultraship/ResourceMgr.h | 3 + .../libultraship/libultraship.vcxproj | 25 + .../libultraship/libultraship.vcxproj.filters | 3 + .../xml/{ => GC_NMQ_D}/code/fbdemo_circle.xml | 0 .../{ => GC_NMQ_D}/code/fbdemo_triforce.xml | 0 .../xml/{ => GC_NMQ_D}/code/fbdemo_wipe1.xml | 0 .../{ => GC_NMQ_D}/misc/link_animetion.xml | 0 .../objects/gameplay_dangeon_keep.xml | 0 .../objects/gameplay_field_keep.xml | 0 .../{ => GC_NMQ_D}/objects/gameplay_keep.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_Bb.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ahg.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_am.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ane.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ani.xml | 0 .../{ => GC_NMQ_D}/objects/object_anubice.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_aob.xml | 0 .../{ => GC_NMQ_D}/objects/object_b_heart.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_bba.xml | 0 .../objects/object_bdan_objects.xml | 0 .../{ => GC_NMQ_D}/objects/object_bdoor.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_bg.xml | 0 .../objects/object_bigokuta.xml | 0 .../{ => GC_NMQ_D}/objects/object_bird.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_bji.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_bl.xml | 0 .../{ => GC_NMQ_D}/objects/object_blkobj.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_bob.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_boj.xml | 0 .../{ => GC_NMQ_D}/objects/object_bombf.xml | 0 .../{ => GC_NMQ_D}/objects/object_bombiwa.xml | 0 .../{ => GC_NMQ_D}/objects/object_bowl.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_box.xml | 0 .../{ => GC_NMQ_D}/objects/object_brob.xml | 0 .../{ => GC_NMQ_D}/objects/object_bubble.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_bv.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_bw.xml | 0 .../{ => GC_NMQ_D}/objects/object_bwall.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_bxa.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_cne.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_cob.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_cow.xml | 0 .../{ => GC_NMQ_D}/objects/object_crow.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_cs.xml | 0 .../objects/object_d_elevator.xml | 0 .../objects/object_d_hsblock.xml | 0 .../{ => GC_NMQ_D}/objects/object_d_lift.xml | 0 .../{ => GC_NMQ_D}/objects/object_daiku.xml | 0 .../objects/object_ddan_objects.xml | 0 .../objects/object_dekubaba.xml | 0 .../{ => GC_NMQ_D}/objects/object_dekujr.xml | 0 .../objects/object_dekunuts.xml | 0 .../{ => GC_NMQ_D}/objects/object_demo_6k.xml | 0 .../objects/object_demo_kekkai.xml | 0 .../objects/object_demo_tre_lgt.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_dh.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_dnk.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_dns.xml | 0 .../{ => GC_NMQ_D}/objects/object_dodojr.xml | 0 .../{ => GC_NMQ_D}/objects/object_dodongo.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_dog.xml | 0 .../objects/object_door_gerudo.xml | 0 .../objects/object_door_killer.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ds.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ds2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_du.xml | 0 .../{ => GC_NMQ_D}/objects/object_dy_obj.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ec.xml | 0 .../objects/object_efc_crystal_light.xml | 0 .../objects/object_efc_doughnut.xml | 0 .../objects/object_efc_erupc.xml | 0 .../objects/object_efc_fire_ball.xml | 0 .../objects/object_efc_flash.xml | 0 .../objects/object_efc_lgt_shower.xml | 0 .../objects/object_efc_star_field.xml | 0 .../{ => GC_NMQ_D}/objects/object_efc_tw.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ei.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_fa.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_fd.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_fd2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_fhg.xml | 0 .../{ => GC_NMQ_D}/objects/object_fire.xml | 0 .../{ => GC_NMQ_D}/objects/object_firefly.xml | 0 .../{ => GC_NMQ_D}/objects/object_fish.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_fr.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_fu.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_fw.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_fz.xml | 0 .../{ => GC_NMQ_D}/objects/object_ganon.xml | 0 .../{ => GC_NMQ_D}/objects/object_ganon2.xml | 0 .../objects/object_ganon_anime1.xml | 0 .../objects/object_ganon_anime2.xml | 0 .../objects/object_ganon_anime3.xml | 0 .../objects/object_ganon_objects.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ge1.xml | 0 .../{ => GC_NMQ_D}/objects/object_geff.xml | 0 .../{ => GC_NMQ_D}/objects/object_geldb.xml | 0 .../objects/object_gi_arrow.xml | 0 .../objects/object_gi_arrowcase.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_bean.xml | 0 .../objects/object_gi_bomb_1.xml | 0 .../objects/object_gi_bomb_2.xml | 0 .../objects/object_gi_bombpouch.xml | 0 .../objects/object_gi_boomerang.xml | 0 .../objects/object_gi_boots_2.xml | 0 .../objects/object_gi_bosskey.xml | 0 .../objects/object_gi_bottle.xml | 0 .../objects/object_gi_bottle_letter.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_bow.xml | 0 .../objects/object_gi_bracelet.xml | 0 .../objects/object_gi_brokensword.xml | 0 .../objects/object_gi_butterfly.xml | 0 .../objects/object_gi_clothes.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_coin.xml | 0 .../objects/object_gi_compass.xml | 0 .../objects/object_gi_dekupouch.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_egg.xml | 0 .../objects/object_gi_eye_lotion.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_fire.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_fish.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_frog.xml | 0 .../objects/object_gi_gerudo.xml | 0 .../objects/object_gi_gerudomask.xml | 0 .../objects/object_gi_ghost.xml | 0 .../objects/object_gi_glasses.xml | 0 .../objects/object_gi_gloves.xml | 0 .../objects/object_gi_goddess.xml | 0 .../objects/object_gi_golonmask.xml | 0 .../objects/object_gi_grass.xml | 0 .../objects/object_gi_hammer.xml | 0 .../objects/object_gi_heart.xml | 0 .../objects/object_gi_hearts.xml | 0 .../objects/object_gi_hookshot.xml | 0 .../objects/object_gi_hoverboots.xml | 0 .../objects/object_gi_insect.xml | 0 .../objects/object_gi_jewel.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_key.xml | 0 .../objects/object_gi_ki_tan_mask.xml | 0 .../objects/object_gi_letter.xml | 0 .../objects/object_gi_liquid.xml | 0 .../objects/object_gi_longsword.xml | 0 .../objects/object_gi_m_arrow.xml | 0 .../objects/object_gi_magicpot.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_map.xml | 0 .../objects/object_gi_medal.xml | 0 .../objects/object_gi_melody.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_milk.xml | 0 .../objects/object_gi_mushroom.xml | 0 .../objects/object_gi_niwatori.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_nuts.xml | 0 .../objects/object_gi_ocarina.xml | 0 .../objects/object_gi_ocarina_0.xml | 0 .../objects/object_gi_pachinko.xml | 0 .../objects/object_gi_powder.xml | 0 .../objects/object_gi_prescription.xml | 0 .../objects/object_gi_purse.xml | 0 .../objects/object_gi_rabit_mask.xml | 0 .../objects/object_gi_redead_mask.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_rupy.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_saw.xml | 0 .../objects/object_gi_scale.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_seed.xml | 0 .../objects/object_gi_shield_1.xml | 0 .../objects/object_gi_shield_2.xml | 0 .../objects/object_gi_shield_3.xml | 0 .../objects/object_gi_skj_mask.xml | 0 .../objects/object_gi_soldout.xml | 0 .../{ => GC_NMQ_D}/objects/object_gi_soul.xml | 0 .../objects/object_gi_stick.xml | 0 .../objects/object_gi_sutaru.xml | 0 .../objects/object_gi_sword_1.xml | 0 .../objects/object_gi_ticketstone.xml | 0 .../objects/object_gi_truth_mask.xml | 0 .../objects/object_gi_zoramask.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_gj.xml | 0 .../objects/object_gjyo_objects.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_gla.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_gm.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_gnd.xml | 0 .../objects/object_gnd_magic.xml | 0 .../{ => GC_NMQ_D}/objects/object_gndd.xml | 0 .../{ => GC_NMQ_D}/objects/object_god_lgt.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_gol.xml | 0 .../{ => GC_NMQ_D}/objects/object_goma.xml | 0 .../{ => GC_NMQ_D}/objects/object_goroiwa.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_gr.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_gs.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_gt.xml | 0 .../{ => GC_NMQ_D}/objects/object_haka.xml | 0 .../objects/object_haka_door.xml | 0 .../objects/object_haka_objects.xml | 0 .../objects/object_hakach_objects.xml | 0 .../{ => GC_NMQ_D}/objects/object_hata.xml | 0 .../objects/object_heavy_object.xml | 0 .../objects/object_hidan_objects.xml | 0 .../objects/object_hintnuts.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_hni.xml | 0 .../{ => GC_NMQ_D}/objects/object_horse.xml | 0 .../objects/object_horse_ganon.xml | 0 .../objects/object_horse_link_child.xml | 0 .../objects/object_horse_normal.xml | 0 .../objects/object_horse_zelda.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_hs.xml | 0 .../{ => GC_NMQ_D}/objects/object_human.xml | 0 .../objects/object_ice_objects.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ik.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_im.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_in.xml | 0 .../{ => GC_NMQ_D}/objects/object_ingate.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_jj.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_js.xml | 0 .../objects/object_jya_door.xml | 0 .../objects/object_jya_iron.xml | 0 .../{ => GC_NMQ_D}/objects/object_jya_obj.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ka.xml | 0 .../{ => GC_NMQ_D}/objects/object_kanban.xml | 0 .../{ => GC_NMQ_D}/objects/object_kibako2.xml | 0 .../objects/object_kingdodongo.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_km1.xml | 0 .../{ => GC_NMQ_D}/objects/object_kusa.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_kw1.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_kz.xml | 0 .../objects/object_light_ring.xml | 0 .../objects/object_lightbox.xml | 0 .../objects/object_lightswitch.xml | 0 .../objects/object_link_boy.xml | 0 .../objects/object_link_child.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ma1.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ma2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_mag.xml | 0 .../objects/object_mamenoki.xml | 0 .../objects/object_mastergolon.xml | 0 .../objects/object_masterkokiri.xml | 0 .../objects/object_masterkokirihead.xml | 0 .../objects/object_masterzoora.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_mb.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_md.xml | 0 .../{ => GC_NMQ_D}/objects/object_medal.xml | 0 .../objects/object_menkuri_objects.xml | 0 .../{ => GC_NMQ_D}/objects/object_mir_ray.xml | 0 .../objects/object_mizu_objects.xml | 0 .../{ => GC_NMQ_D}/objects/object_mjin.xml | 0 .../objects/object_mjin_dark.xml | 0 .../objects/object_mjin_flame.xml | 0 .../objects/object_mjin_flash.xml | 0 .../objects/object_mjin_ice.xml | 0 .../objects/object_mjin_oka.xml | 0 .../objects/object_mjin_soul.xml | 0 .../objects/object_mjin_wind.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_mk.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_mm.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_mo.xml | 0 .../objects/object_mori_hineri1.xml | 0 .../objects/object_mori_hineri1a.xml | 0 .../objects/object_mori_hineri2.xml | 0 .../objects/object_mori_hineri2a.xml | 0 .../objects/object_mori_objects.xml | 0 .../objects/object_mori_tex.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ms.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_mu.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_nb.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_niw.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_nwc.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ny.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oA1.xml | 0 .../{ => GC_NMQ_D}/objects/object_oA10.xml | 0 .../{ => GC_NMQ_D}/objects/object_oA11.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oA2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oA3.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oA4.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oA5.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oA6.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oA7.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oA8.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oA9.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oB1.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oB2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oB3.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oB4.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oE1.xml | 0 .../{ => GC_NMQ_D}/objects/object_oE10.xml | 0 .../{ => GC_NMQ_D}/objects/object_oE11.xml | 0 .../{ => GC_NMQ_D}/objects/object_oE12.xml | 0 .../{ => GC_NMQ_D}/objects/object_oE1s.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oE2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oE3.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oE4.xml | 0 .../{ => GC_NMQ_D}/objects/object_oE4s.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oE5.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oE6.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oE7.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oE8.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_oE9.xml | 0 .../objects/object_oE_anime.xml | 0 .../objects/object_oF1d_map.xml | 0 .../{ => GC_NMQ_D}/objects/object_oF1s.xml | 0 .../{ => GC_NMQ_D}/objects/object_o_anime.xml | 0 .../{ => GC_NMQ_D}/objects/object_okuta.xml | 0 .../objects/object_opening_demo1.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_os.xml | 0 .../objects/object_os_anime.xml | 0 .../{ => GC_NMQ_D}/objects/object_ossan.xml | 0 .../objects/object_ouke_haka.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_owl.xml | 0 .../{ => GC_NMQ_D}/objects/object_peehat.xml | 0 .../objects/object_po_composer.xml | 0 .../objects/object_po_field.xml | 0 .../objects/object_po_sisters.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_poh.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ps.xml | 0 .../{ => GC_NMQ_D}/objects/object_pu_box.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_rd.xml | 0 .../{ => GC_NMQ_D}/objects/object_reeba.xml | 0 .../objects/object_relay_objects.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_rl.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_rr.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_rs.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ru1.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ru2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_sa.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_sb.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_sd.xml | 0 .../objects/object_shop_dungen.xml | 0 .../objects/object_shopnuts.xml | 0 .../{ => GC_NMQ_D}/objects/object_siofuki.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_sk2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_skb.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_skj.xml | 0 .../objects/object_spot00_break.xml | 0 .../objects/object_spot00_objects.xml | 0 .../objects/object_spot01_matoya.xml | 0 .../objects/object_spot01_matoyab.xml | 0 .../objects/object_spot01_objects.xml | 0 .../objects/object_spot01_objects2.xml | 0 .../objects/object_spot02_objects.xml | 0 .../objects/object_spot03_object.xml | 0 .../objects/object_spot04_objects.xml | 0 .../objects/object_spot05_objects.xml | 0 .../objects/object_spot06_objects.xml | 0 .../objects/object_spot07_object.xml | 0 .../objects/object_spot08_obj.xml | 0 .../objects/object_spot09_obj.xml | 0 .../objects/object_spot11_obj.xml | 0 .../objects/object_spot12_obj.xml | 0 .../objects/object_spot15_obj.xml | 0 .../objects/object_spot16_obj.xml | 0 .../objects/object_spot17_obj.xml | 0 .../objects/object_spot18_obj.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ssh.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_sst.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_st.xml | 0 .../{ => GC_NMQ_D}/objects/object_stream.xml | 0 .../objects/object_syokudai.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ta.xml | 0 .../objects/object_timeblock.xml | 0 .../{ => GC_NMQ_D}/objects/object_tite.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_tk.xml | 0 .../objects/object_toki_objects.xml | 0 .../{ => GC_NMQ_D}/objects/object_torch2.xml | 0 .../{ => GC_NMQ_D}/objects/object_toryo.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_tp.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_tr.xml | 0 .../{ => GC_NMQ_D}/objects/object_trap.xml | 0 .../objects/object_triforce_spot.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_ts.xml | 0 .../{ => GC_NMQ_D}/objects/object_tsubo.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_tw.xml | 0 .../{ => GC_NMQ_D}/objects/object_umajump.xml | 0 .../{ => GC_NMQ_D}/objects/object_vali.xml | 0 .../{ => GC_NMQ_D}/objects/object_vase.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_vm.xml | 0 .../objects/object_wallmaster.xml | 0 .../{ => GC_NMQ_D}/objects/object_warp1.xml | 0 .../{ => GC_NMQ_D}/objects/object_warp2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_wf.xml | 0 .../{ => GC_NMQ_D}/objects/object_wood02.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_xc.xml | 0 .../objects/object_yabusame_point.xml | 0 .../objects/object_ydan_objects.xml | 0 .../objects/object_yukabyun.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_zf.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_zg.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_zl1.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_zl2.xml | 0 .../objects/object_zl2_anime1.xml | 0 .../objects/object_zl2_anime2.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_zl4.xml | 0 .../xml/{ => GC_NMQ_D}/objects/object_zo.xml | 0 .../overlays/ovl_Arrow_Fire.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_Arrow_Ice.xml | 0 .../overlays/ovl_Arrow_Light.xml | 0 .../overlays/ovl_Bg_Ganon_Otyuka.xml | 0 .../overlays/ovl_Bg_Jya_Cobra.xml | 0 .../overlays/ovl_Boss_Dodongo.xml | 0 .../overlays/ovl_Boss_Ganon.xml | 0 .../overlays/ovl_Boss_Ganon2.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_Boss_Sst.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_Demo_Shd.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_Elf_Msg.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_Elf_Msg2.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_En_Bili.xml | 0 .../overlays/ovl_En_Clear_Tag.xml | 0 .../overlays/ovl_En_Ganon_Mant.xml | 0 .../overlays/ovl_En_Ganon_Organ.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_En_Holl.xml | 0 .../overlays/ovl_En_Jsjutan.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_En_Kanban.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_En_Sda.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_En_Ssh.xml | 0 .../xml/{ => GC_NMQ_D}/overlays/ovl_En_St.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_En_Sth.xml | 0 .../{ => GC_NMQ_D}/overlays/ovl_End_Title.xml | 0 .../overlays/ovl_File_Choose.xml | 0 .../overlays/ovl_Magic_Dark.xml | 0 .../overlays/ovl_Magic_Fire.xml | 0 .../overlays/ovl_Magic_Wind.xml | 0 .../overlays/ovl_Oceff_Spot.xml | 0 .../overlays/ovl_Oceff_Storm.xml | 0 .../overlays/ovl_Oceff_Wipe.xml | 0 .../overlays/ovl_Oceff_Wipe2.xml | 0 .../overlays/ovl_Oceff_Wipe3.xml | 0 .../overlays/ovl_Oceff_Wipe4.xml | 0 .../{ => GC_NMQ_D}/scenes/dungeons/Bmori1.xml | 0 .../scenes/dungeons/FIRE_bs.xml | 0 .../scenes/dungeons/HAKAdan.xml | 0 .../scenes/dungeons/HAKAdanCH.xml | 0 .../scenes/dungeons/HAKAdan_bs.xml | 0 .../{ => GC_NMQ_D}/scenes/dungeons/HIDAN.xml | 0 .../scenes/dungeons/MIZUsin.xml | 0 .../scenes/dungeons/MIZUsin_bs.xml | 0 .../{ => GC_NMQ_D}/scenes/dungeons/bdan.xml | 0 .../scenes/dungeons/bdan_boss.xml | 0 .../{ => GC_NMQ_D}/scenes/dungeons/ddan.xml | 0 .../scenes/dungeons/ddan_boss.xml | 0 .../{ => GC_NMQ_D}/scenes/dungeons/ganon.xml | 0 .../scenes/dungeons/ganon_boss.xml | 0 .../scenes/dungeons/ganon_demo.xml | 0 .../scenes/dungeons/ganon_final.xml | 0 .../scenes/dungeons/ganon_sonogo.xml | 0 .../scenes/dungeons/ganon_tou.xml | 0 .../scenes/dungeons/ganontika.xml | 0 .../scenes/dungeons/ganontikasonogo.xml | 0 .../scenes/dungeons/gerudoway.xml | 0 .../scenes/dungeons/ice_doukutu.xml | 0 .../scenes/dungeons/jyasinboss.xml | 0 .../scenes/dungeons/jyasinzou.xml | 0 .../{ => GC_NMQ_D}/scenes/dungeons/men.xml | 0 .../scenes/dungeons/moribossroom.xml | 0 .../{ => GC_NMQ_D}/scenes/dungeons/ydan.xml | 0 .../scenes/dungeons/ydan_boss.xml | 0 .../{ => GC_NMQ_D}/scenes/indoors/bowling.xml | 0 .../scenes/indoors/daiyousei_izumi.xml | 0 .../scenes/indoors/hairal_niwa.xml | 0 .../scenes/indoors/hairal_niwa2.xml | 0 .../scenes/indoors/hairal_niwa_n.xml | 0 .../scenes/indoors/hakasitarelay.xml | 0 .../xml/{ => GC_NMQ_D}/scenes/indoors/hut.xml | 0 .../scenes/indoors/hylia_labo.xml | 0 .../{ => GC_NMQ_D}/scenes/indoors/impa.xml | 0 .../scenes/indoors/kakariko.xml | 0 .../scenes/indoors/kenjyanoma.xml | 0 .../scenes/indoors/kokiri_home.xml | 0 .../scenes/indoors/kokiri_home3.xml | 0 .../scenes/indoors/kokiri_home4.xml | 0 .../scenes/indoors/kokiri_home5.xml | 0 .../{ => GC_NMQ_D}/scenes/indoors/labo.xml | 0 .../scenes/indoors/link_home.xml | 0 .../{ => GC_NMQ_D}/scenes/indoors/mahouya.xml | 0 .../scenes/indoors/malon_stable.xml | 0 .../scenes/indoors/miharigoya.xml | 0 .../scenes/indoors/nakaniwa.xml | 0 .../scenes/indoors/syatekijyou.xml | 0 .../scenes/indoors/takaraya.xml | 0 .../{ => GC_NMQ_D}/scenes/indoors/tent.xml | 0 .../scenes/indoors/tokinoma.xml | 0 .../scenes/indoors/yousei_izumi_tate.xml | 0 .../scenes/indoors/yousei_izumi_yoko.xml | 0 .../xml/{ => GC_NMQ_D}/scenes/misc/enrui.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/entra_n.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/hakaana.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/hakaana2.xml | 0 .../scenes/misc/hakaana_ouke.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/hiral_demo.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/kakariko3.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/kakusiana.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/kinsuta.xml | 0 .../scenes/misc/market_alley.xml | 0 .../scenes/misc/market_alley_n.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/market_day.xml | 0 .../scenes/misc/market_night.xml | 0 .../scenes/misc/market_ruins.xml | 0 .../xml/{ => GC_NMQ_D}/scenes/misc/shrine.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/shrine_n.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/shrine_r.xml | 0 .../{ => GC_NMQ_D}/scenes/misc/turibori.xml | 0 .../{ => GC_NMQ_D}/scenes/overworld/entra.xml | 0 .../{ => GC_NMQ_D}/scenes/overworld/souko.xml | 0 .../scenes/overworld/spot00.xml | 0 .../scenes/overworld/spot01.xml | 0 .../scenes/overworld/spot02.xml | 0 .../scenes/overworld/spot03.xml | 0 .../scenes/overworld/spot04.xml | 0 .../scenes/overworld/spot05.xml | 0 .../scenes/overworld/spot06.xml | 0 .../scenes/overworld/spot07.xml | 0 .../scenes/overworld/spot08.xml | 0 .../scenes/overworld/spot09.xml | 0 .../scenes/overworld/spot10.xml | 0 .../scenes/overworld/spot11.xml | 0 .../scenes/overworld/spot12.xml | 0 .../scenes/overworld/spot13.xml | 0 .../scenes/overworld/spot15.xml | 0 .../scenes/overworld/spot16.xml | 0 .../scenes/overworld/spot17.xml | 0 .../scenes/overworld/spot18.xml | 0 .../scenes/overworld/spot20.xml | 0 .../scenes/shops/alley_shop.xml | 0 .../xml/{ => GC_NMQ_D}/scenes/shops/drag.xml | 0 .../{ => GC_NMQ_D}/scenes/shops/face_shop.xml | 0 .../xml/{ => GC_NMQ_D}/scenes/shops/golon.xml | 0 .../scenes/shops/kokiri_shop.xml | 0 .../scenes/shops/night_shop.xml | 0 .../xml/{ => GC_NMQ_D}/scenes/shops/shop1.xml | 0 .../xml/{ => GC_NMQ_D}/scenes/shops/zoora.xml | 0 .../scenes/test_levels/besitu.xml | 0 .../scenes/test_levels/depth_test.xml | 0 .../scenes/test_levels/sasatest.xml | 0 .../scenes/test_levels/sutaru.xml | 0 .../scenes/test_levels/syotes.xml | 0 .../scenes/test_levels/syotes2.xml | 0 .../scenes/test_levels/test01.xml | 0 .../scenes/test_levels/testroom.xml | 0 .../{ => GC_NMQ_D}/text/elf_message_field.xml | 0 .../{ => GC_NMQ_D}/text/elf_message_ydan.xml | 0 .../text/nes_message_data_static.xml | 0 .../text/staff_message_data_static.xml | 0 .../{ => GC_NMQ_D}/textures/backgrounds.xml | 0 .../textures/do_action_static.xml | 0 .../textures/icon_item_24_static.xml | 0 .../textures/icon_item_dungeon_static.xml | 0 .../textures/icon_item_field_static.xml | 0 .../textures/icon_item_fra_static.xml | 0 .../textures/icon_item_gameover_static.xml | 0 .../textures/icon_item_ger_static.xml | 0 .../textures/icon_item_nes_static.xml | 0 .../textures/icon_item_static.xml | 0 .../textures/item_name_static.xml | 0 .../textures/map_48x85_static.xml | 0 .../textures/map_grand_static.xml | 0 .../{ => GC_NMQ_D}/textures/map_i_static.xml | 0 .../textures/map_name_static.xml | 0 .../textures/message_static.xml | 0 .../textures/message_texture_static.xml | 0 .../textures/nes_font_static.xml | 0 .../textures/nintendo_rogo_static.xml | 0 .../textures/parameter_static.xml | 0 .../textures/place_title_cards.xml | 0 .../xml/{ => GC_NMQ_D}/textures/skyboxes.xml | 0 .../{ => GC_NMQ_D}/textures/title_static.xml | 0 .../xml/GC_NMQ_PAL_F/code/fbdemo_circle.xml | 14 + .../xml/GC_NMQ_PAL_F/code/fbdemo_triforce.xml | 8 + .../xml/GC_NMQ_PAL_F/code/fbdemo_wipe1.xml | 10 + .../xml/GC_NMQ_PAL_F/misc/link_animetion.xml | 577 ++++++ .../objects/gameplay_dangeon_keep.xml | 52 + .../objects/gameplay_field_keep.xml | 62 + .../GC_NMQ_PAL_F/objects/gameplay_keep.xml | 960 ++++++++++ .../xml/GC_NMQ_PAL_F/objects/object_Bb.xml | 37 + .../xml/GC_NMQ_PAL_F/objects/object_ahg.xml | 59 + .../xml/GC_NMQ_PAL_F/objects/object_am.xml | 9 + .../xml/GC_NMQ_PAL_F/objects/object_ane.xml | 59 + .../xml/GC_NMQ_PAL_F/objects/object_ani.xml | 66 + .../GC_NMQ_PAL_F/objects/object_anubice.xml | 20 + .../xml/GC_NMQ_PAL_F/objects/object_aob.xml | 59 + .../GC_NMQ_PAL_F/objects/object_b_heart.xml | 8 + .../xml/GC_NMQ_PAL_F/objects/object_bba.xml | 45 + .../objects/object_bdan_objects.xml | 61 + .../xml/GC_NMQ_PAL_F/objects/object_bdoor.xml | 15 + .../xml/GC_NMQ_PAL_F/objects/object_bg.xml | 50 + .../GC_NMQ_PAL_F/objects/object_bigokuta.xml | 58 + .../xml/GC_NMQ_PAL_F/objects/object_bird.xml | 30 + .../xml/GC_NMQ_PAL_F/objects/object_bji.xml | 56 + .../xml/GC_NMQ_PAL_F/objects/object_bl.xml | 32 + .../GC_NMQ_PAL_F/objects/object_blkobj.xml | 15 + .../xml/GC_NMQ_PAL_F/objects/object_bob.xml | 47 + .../xml/GC_NMQ_PAL_F/objects/object_boj.xml | 62 + .../xml/GC_NMQ_PAL_F/objects/object_bombf.xml | 14 + .../GC_NMQ_PAL_F/objects/object_bombiwa.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_bowl.xml | 18 + .../xml/GC_NMQ_PAL_F/objects/object_box.xml | 29 + .../xml/GC_NMQ_PAL_F/objects/object_brob.xml | 25 + .../GC_NMQ_PAL_F/objects/object_bubble.xml | 6 + .../xml/GC_NMQ_PAL_F/objects/object_bv.xml | 79 + .../xml/GC_NMQ_PAL_F/objects/object_bw.xml | 29 + .../xml/GC_NMQ_PAL_F/objects/object_bwall.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_bxa.xml | 13 + .../xml/GC_NMQ_PAL_F/objects/object_cne.xml | 51 + .../xml/GC_NMQ_PAL_F/objects/object_cob.xml | 41 + .../xml/GC_NMQ_PAL_F/objects/object_cow.xml | 55 + .../xml/GC_NMQ_PAL_F/objects/object_crow.xml | 11 + .../xml/GC_NMQ_PAL_F/objects/object_cs.xml | 60 + .../objects/object_d_elevator.xml | 7 + .../GC_NMQ_PAL_F/objects/object_d_hsblock.xml | 10 + .../GC_NMQ_PAL_F/objects/object_d_lift.xml | 8 + .../xml/GC_NMQ_PAL_F/objects/object_daiku.xml | 60 + .../objects/object_ddan_objects.xml | 32 + .../GC_NMQ_PAL_F/objects/object_dekubaba.xml | 38 + .../GC_NMQ_PAL_F/objects/object_dekujr.xml | 13 + .../GC_NMQ_PAL_F/objects/object_dekunuts.xml | 32 + .../GC_NMQ_PAL_F/objects/object_demo_6k.xml | 13 + .../objects/object_demo_kekkai.xml | 41 + .../objects/object_demo_tre_lgt.xml | 6 + .../xml/GC_NMQ_PAL_F/objects/object_dh.xml | 59 + .../xml/GC_NMQ_PAL_F/objects/object_dnk.xml | 30 + .../xml/GC_NMQ_PAL_F/objects/object_dns.xml | 35 + .../GC_NMQ_PAL_F/objects/object_dodojr.xml | 33 + .../GC_NMQ_PAL_F/objects/object_dodongo.xml | 41 + .../xml/GC_NMQ_PAL_F/objects/object_dog.xml | 41 + .../objects/object_door_gerudo.xml | 7 + .../objects/object_door_killer.xml | 17 + .../xml/GC_NMQ_PAL_F/objects/object_ds.xml | 38 + .../xml/GC_NMQ_PAL_F/objects/object_ds2.xml | 34 + .../xml/GC_NMQ_PAL_F/objects/object_du.xml | 81 + .../GC_NMQ_PAL_F/objects/object_dy_obj.xml | 121 ++ .../xml/GC_NMQ_PAL_F/objects/object_ec.xml | 26 + .../objects/object_efc_crystal_light.xml | 6 + .../objects/object_efc_doughnut.xml | 8 + .../GC_NMQ_PAL_F/objects/object_efc_erupc.xml | 12 + .../objects/object_efc_fire_ball.xml | 7 + .../GC_NMQ_PAL_F/objects/object_efc_flash.xml | 6 + .../objects/object_efc_lgt_shower.xml | 6 + .../objects/object_efc_star_field.xml | 8 + .../GC_NMQ_PAL_F/objects/object_efc_tw.xml | 13 + .../xml/GC_NMQ_PAL_F/objects/object_ei.xml | 56 + .../xml/GC_NMQ_PAL_F/objects/object_fa.xml | 15 + .../xml/GC_NMQ_PAL_F/objects/object_fd.xml | 76 + .../xml/GC_NMQ_PAL_F/objects/object_fd2.xml | 41 + .../xml/GC_NMQ_PAL_F/objects/object_fhg.xml | 34 + .../xml/GC_NMQ_PAL_F/objects/object_fire.xml | 14 + .../GC_NMQ_PAL_F/objects/object_firefly.xml | 21 + .../xml/GC_NMQ_PAL_F/objects/object_fish.xml | 180 ++ .../xml/GC_NMQ_PAL_F/objects/object_fr.xml | 65 + .../xml/GC_NMQ_PAL_F/objects/object_fu.xml | 55 + .../xml/GC_NMQ_PAL_F/objects/object_fw.xml | 105 ++ .../xml/GC_NMQ_PAL_F/objects/object_fz.xml | 12 + .../xml/GC_NMQ_PAL_F/objects/object_ganon.xml | 96 + .../GC_NMQ_PAL_F/objects/object_ganon2.xml | 158 ++ .../objects/object_ganon_anime1.xml | 29 + .../objects/object_ganon_anime2.xml | 21 + .../objects/object_ganon_anime3.xml | 13 + .../objects/object_ganon_objects.xml | 6 + .../xml/GC_NMQ_PAL_F/objects/object_ge1.xml | 78 + .../xml/GC_NMQ_PAL_F/objects/object_geff.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_geldb.xml | 28 + .../GC_NMQ_PAL_F/objects/object_gi_arrow.xml | 7 + .../objects/object_gi_arrowcase.xml | 12 + .../GC_NMQ_PAL_F/objects/object_gi_bean.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_bomb_1.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_bomb_2.xml | 5 + .../objects/object_gi_bombpouch.xml | 12 + .../objects/object_gi_boomerang.xml | 5 + .../objects/object_gi_boots_2.xml | 6 + .../objects/object_gi_bosskey.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_bottle.xml | 6 + .../objects/object_gi_bottle_letter.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_bow.xml | 5 + .../objects/object_gi_bracelet.xml | 5 + .../objects/object_gi_brokensword.xml | 5 + .../objects/object_gi_butterfly.xml | 6 + .../objects/object_gi_clothes.xml | 10 + .../GC_NMQ_PAL_F/objects/object_gi_coin.xml | 10 + .../objects/object_gi_compass.xml | 6 + .../objects/object_gi_dekupouch.xml | 11 + .../GC_NMQ_PAL_F/objects/object_gi_egg.xml | 6 + .../objects/object_gi_eye_lotion.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_fire.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_fish.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_frog.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_gerudo.xml | 5 + .../objects/object_gi_gerudomask.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_ghost.xml | 9 + .../objects/object_gi_glasses.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_gloves.xml | 10 + .../objects/object_gi_goddess.xml | 9 + .../objects/object_gi_golonmask.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_grass.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_hammer.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_heart.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_hearts.xml | 7 + .../objects/object_gi_hookshot.xml | 6 + .../objects/object_gi_hoverboots.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_insect.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_jewel.xml | 15 + .../GC_NMQ_PAL_F/objects/object_gi_key.xml | 5 + .../objects/object_gi_ki_tan_mask.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_letter.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_liquid.xml | 16 + .../objects/object_gi_longsword.xml | 5 + .../objects/object_gi_m_arrow.xml | 9 + .../objects/object_gi_magicpot.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_map.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_medal.xml | 11 + .../GC_NMQ_PAL_F/objects/object_gi_melody.xml | 11 + .../GC_NMQ_PAL_F/objects/object_gi_milk.xml | 6 + .../objects/object_gi_mushroom.xml | 5 + .../objects/object_gi_niwatori.xml | 8 + .../GC_NMQ_PAL_F/objects/object_gi_nuts.xml | 5 + .../objects/object_gi_ocarina.xml | 6 + .../objects/object_gi_ocarina_0.xml | 6 + .../objects/object_gi_pachinko.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_powder.xml | 5 + .../objects/object_gi_prescription.xml | 6 + .../GC_NMQ_PAL_F/objects/object_gi_purse.xml | 16 + .../objects/object_gi_rabit_mask.xml | 6 + .../objects/object_gi_redead_mask.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_rupy.xml | 16 + .../GC_NMQ_PAL_F/objects/object_gi_saw.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_scale.xml | 10 + .../GC_NMQ_PAL_F/objects/object_gi_seed.xml | 5 + .../objects/object_gi_shield_1.xml | 5 + .../objects/object_gi_shield_2.xml | 5 + .../objects/object_gi_shield_3.xml | 6 + .../objects/object_gi_skj_mask.xml | 5 + .../objects/object_gi_soldout.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_soul.xml | 7 + .../GC_NMQ_PAL_F/objects/object_gi_stick.xml | 5 + .../GC_NMQ_PAL_F/objects/object_gi_sutaru.xml | 6 + .../objects/object_gi_sword_1.xml | 5 + .../objects/object_gi_ticketstone.xml | 6 + .../objects/object_gi_truth_mask.xml | 6 + .../objects/object_gi_zoramask.xml | 5 + .../xml/GC_NMQ_PAL_F/objects/object_gj.xml | 35 + .../objects/object_gjyo_objects.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_gla.xml | 85 + .../xml/GC_NMQ_PAL_F/objects/object_gm.xml | 5 + .../xml/GC_NMQ_PAL_F/objects/object_gnd.xml | 86 + .../GC_NMQ_PAL_F/objects/object_gnd_magic.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_gndd.xml | 96 + .../GC_NMQ_PAL_F/objects/object_god_lgt.xml | 9 + .../xml/GC_NMQ_PAL_F/objects/object_gol.xml | 59 + .../xml/GC_NMQ_PAL_F/objects/object_goma.xml | 169 ++ .../GC_NMQ_PAL_F/objects/object_goroiwa.xml | 6 + .../xml/GC_NMQ_PAL_F/objects/object_gr.xml | 16 + .../xml/GC_NMQ_PAL_F/objects/object_gs.xml | 8 + .../xml/GC_NMQ_PAL_F/objects/object_gt.xml | 38 + .../xml/GC_NMQ_PAL_F/objects/object_haka.xml | 10 + .../GC_NMQ_PAL_F/objects/object_haka_door.xml | 12 + .../objects/object_haka_objects.xml | 85 + .../objects/object_hakach_objects.xml | 28 + .../xml/GC_NMQ_PAL_F/objects/object_hata.xml | 50 + .../objects/object_heavy_object.xml | 9 + .../objects/object_hidan_objects.xml | 89 + .../GC_NMQ_PAL_F/objects/object_hintnuts.xml | 23 + .../xml/GC_NMQ_PAL_F/objects/object_hni.xml | 51 + .../xml/GC_NMQ_PAL_F/objects/object_horse.xml | 67 + .../objects/object_horse_ganon.xml | 22 + .../objects/object_horse_link_child.xml | 21 + .../objects/object_horse_normal.xml | 26 + .../objects/object_horse_zelda.xml | 14 + .../xml/GC_NMQ_PAL_F/objects/object_hs.xml | 47 + .../xml/GC_NMQ_PAL_F/objects/object_human.xml | 213 +++ .../objects/object_ice_objects.xml | 26 + .../xml/GC_NMQ_PAL_F/objects/object_ik.xml | 104 ++ .../xml/GC_NMQ_PAL_F/objects/object_im.xml | 79 + .../xml/GC_NMQ_PAL_F/objects/object_in.xml | 142 ++ .../GC_NMQ_PAL_F/objects/object_ingate.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_jj.xml | 77 + .../xml/GC_NMQ_PAL_F/objects/object_js.xml | 55 + .../GC_NMQ_PAL_F/objects/object_jya_door.xml | 8 + .../GC_NMQ_PAL_F/objects/object_jya_iron.xml | 13 + .../GC_NMQ_PAL_F/objects/object_jya_obj.xml | 80 + .../xml/GC_NMQ_PAL_F/objects/object_ka.xml | 64 + .../GC_NMQ_PAL_F/objects/object_kanban.xml | 18 + .../GC_NMQ_PAL_F/objects/object_kibako2.xml | 19 + .../objects/object_kingdodongo.xml | 130 ++ .../xml/GC_NMQ_PAL_F/objects/object_km1.xml | 39 + .../xml/GC_NMQ_PAL_F/objects/object_kusa.xml | 6 + .../xml/GC_NMQ_PAL_F/objects/object_kw1.xml | 63 + .../xml/GC_NMQ_PAL_F/objects/object_kz.xml | 45 + .../objects/object_light_ring.xml | 6 + .../GC_NMQ_PAL_F/objects/object_lightbox.xml | 15 + .../objects/object_lightswitch.xml | 14 + .../GC_NMQ_PAL_F/objects/object_link_boy.xml | 271 +++ .../objects/object_link_child.xml | 225 +++ .../xml/GC_NMQ_PAL_F/objects/object_ma1.xml | 67 + .../xml/GC_NMQ_PAL_F/objects/object_ma2.xml | 75 + .../xml/GC_NMQ_PAL_F/objects/object_mag.xml | 21 + .../GC_NMQ_PAL_F/objects/object_mamenoki.xml | 15 + .../objects/object_mastergolon.xml | 5 + .../objects/object_masterkokiri.xml | 5 + .../objects/object_masterkokirihead.xml | 14 + .../objects/object_masterzoora.xml | 5 + .../xml/GC_NMQ_PAL_F/objects/object_mb.xml | 59 + .../xml/GC_NMQ_PAL_F/objects/object_md.xml | 87 + .../xml/GC_NMQ_PAL_F/objects/object_medal.xml | 17 + .../objects/object_menkuri_objects.xml | 18 + .../GC_NMQ_PAL_F/objects/object_mir_ray.xml | 13 + .../objects/object_mizu_objects.xml | 41 + .../xml/GC_NMQ_PAL_F/objects/object_mjin.xml | 8 + .../GC_NMQ_PAL_F/objects/object_mjin_dark.xml | 5 + .../objects/object_mjin_flame.xml | 5 + .../objects/object_mjin_flash.xml | 5 + .../GC_NMQ_PAL_F/objects/object_mjin_ice.xml | 5 + .../GC_NMQ_PAL_F/objects/object_mjin_oka.xml | 8 + .../GC_NMQ_PAL_F/objects/object_mjin_soul.xml | 5 + .../GC_NMQ_PAL_F/objects/object_mjin_wind.xml | 5 + .../xml/GC_NMQ_PAL_F/objects/object_mk.xml | 44 + .../xml/GC_NMQ_PAL_F/objects/object_mm.xml | 16 + .../xml/GC_NMQ_PAL_F/objects/object_mo.xml | 82 + .../objects/object_mori_hineri1.xml | 7 + .../objects/object_mori_hineri1a.xml | 7 + .../objects/object_mori_hineri2.xml | 7 + .../objects/object_mori_hineri2a.xml | 7 + .../objects/object_mori_objects.xml | 25 + .../GC_NMQ_PAL_F/objects/object_mori_tex.xml | 30 + .../xml/GC_NMQ_PAL_F/objects/object_ms.xml | 43 + .../xml/GC_NMQ_PAL_F/objects/object_mu.xml | 96 + .../xml/GC_NMQ_PAL_F/objects/object_nb.xml | 118 ++ .../xml/GC_NMQ_PAL_F/objects/object_niw.xml | 49 + .../xml/GC_NMQ_PAL_F/objects/object_nwc.xml | 15 + .../xml/GC_NMQ_PAL_F/objects/object_ny.xml | 10 + .../xml/GC_NMQ_PAL_F/objects/object_oA1.xml | 69 + .../xml/GC_NMQ_PAL_F/objects/object_oA10.xml | 66 + .../xml/GC_NMQ_PAL_F/objects/object_oA11.xml | 66 + .../xml/GC_NMQ_PAL_F/objects/object_oA2.xml | 58 + .../xml/GC_NMQ_PAL_F/objects/object_oA3.xml | 11 + .../xml/GC_NMQ_PAL_F/objects/object_oA4.xml | 64 + .../xml/GC_NMQ_PAL_F/objects/object_oA5.xml | 64 + .../xml/GC_NMQ_PAL_F/objects/object_oA6.xml | 64 + .../xml/GC_NMQ_PAL_F/objects/object_oA7.xml | 62 + .../xml/GC_NMQ_PAL_F/objects/object_oA8.xml | 61 + .../xml/GC_NMQ_PAL_F/objects/object_oA9.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_oB1.xml | 69 + .../xml/GC_NMQ_PAL_F/objects/object_oB2.xml | 76 + .../xml/GC_NMQ_PAL_F/objects/object_oB3.xml | 70 + .../xml/GC_NMQ_PAL_F/objects/object_oB4.xml | 64 + .../xml/GC_NMQ_PAL_F/objects/object_oE1.xml | 70 + .../xml/GC_NMQ_PAL_F/objects/object_oE10.xml | 15 + .../xml/GC_NMQ_PAL_F/objects/object_oE11.xml | 15 + .../xml/GC_NMQ_PAL_F/objects/object_oE12.xml | 15 + .../xml/GC_NMQ_PAL_F/objects/object_oE1s.xml | 50 + .../xml/GC_NMQ_PAL_F/objects/object_oE2.xml | 71 + .../xml/GC_NMQ_PAL_F/objects/object_oE3.xml | 73 + .../xml/GC_NMQ_PAL_F/objects/object_oE4.xml | 69 + .../xml/GC_NMQ_PAL_F/objects/object_oE4s.xml | 46 + .../xml/GC_NMQ_PAL_F/objects/object_oE5.xml | 64 + .../xml/GC_NMQ_PAL_F/objects/object_oE6.xml | 15 + .../xml/GC_NMQ_PAL_F/objects/object_oE7.xml | 14 + .../xml/GC_NMQ_PAL_F/objects/object_oE8.xml | 15 + .../xml/GC_NMQ_PAL_F/objects/object_oE9.xml | 15 + .../GC_NMQ_PAL_F/objects/object_oE_anime.xml | 10 + .../GC_NMQ_PAL_F/objects/object_oF1d_map.xml | 35 + .../xml/GC_NMQ_PAL_F/objects/object_oF1s.xml | 69 + .../GC_NMQ_PAL_F/objects/object_o_anime.xml | 11 + .../xml/GC_NMQ_PAL_F/objects/object_okuta.xml | 29 + .../objects/object_opening_demo1.xml | 11 + .../xml/GC_NMQ_PAL_F/objects/object_os.xml | 36 + .../GC_NMQ_PAL_F/objects/object_os_anime.xml | 69 + .../xml/GC_NMQ_PAL_F/objects/object_ossan.xml | 13 + .../GC_NMQ_PAL_F/objects/object_ouke_haka.xml | 6 + .../xml/GC_NMQ_PAL_F/objects/object_owl.xml | 65 + .../GC_NMQ_PAL_F/objects/object_peehat.xml | 53 + .../objects/object_po_composer.xml | 17 + .../GC_NMQ_PAL_F/objects/object_po_field.xml | 20 + .../objects/object_po_sisters.xml | 28 + .../xml/GC_NMQ_PAL_F/objects/object_poh.xml | 14 + .../xml/GC_NMQ_PAL_F/objects/object_ps.xml | 19 + .../GC_NMQ_PAL_F/objects/object_pu_box.xml | 13 + .../xml/GC_NMQ_PAL_F/objects/object_rd.xml | 106 ++ .../xml/GC_NMQ_PAL_F/objects/object_reeba.xml | 27 + .../objects/object_relay_objects.xml | 19 + .../xml/GC_NMQ_PAL_F/objects/object_rl.xml | 50 + .../xml/GC_NMQ_PAL_F/objects/object_rr.xml | 8 + .../xml/GC_NMQ_PAL_F/objects/object_rs.xml | 32 + .../xml/GC_NMQ_PAL_F/objects/object_ru1.xml | 83 + .../xml/GC_NMQ_PAL_F/objects/object_ru2.xml | 90 + .../xml/GC_NMQ_PAL_F/objects/object_sa.xml | 99 + .../xml/GC_NMQ_PAL_F/objects/object_sb.xml | 30 + .../xml/GC_NMQ_PAL_F/objects/object_sd.xml | 70 + .../objects/object_shop_dungen.xml | 10 + .../GC_NMQ_PAL_F/objects/object_shopnuts.xml | 67 + .../GC_NMQ_PAL_F/objects/object_siofuki.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_sk2.xml | 130 ++ .../xml/GC_NMQ_PAL_F/objects/object_skb.xml | 64 + .../xml/GC_NMQ_PAL_F/objects/object_skj.xml | 69 + .../objects/object_spot00_break.xml | 13 + .../objects/object_spot00_objects.xml | 14 + .../objects/object_spot01_matoya.xml | 30 + .../objects/object_spot01_matoyab.xml | 18 + .../objects/object_spot01_objects.xml | 16 + .../objects/object_spot01_objects2.xml | 6 + .../objects/object_spot02_objects.xml | 44 + .../objects/object_spot03_object.xml | 16 + .../objects/object_spot04_objects.xml | 10 + .../objects/object_spot05_objects.xml | 10 + .../objects/object_spot06_objects.xml | 24 + .../objects/object_spot07_object.xml | 23 + .../objects/object_spot08_obj.xml | 27 + .../objects/object_spot09_obj.xml | 14 + .../objects/object_spot11_obj.xml | 9 + .../objects/object_spot12_obj.xml | 13 + .../objects/object_spot15_obj.xml | 13 + .../objects/object_spot16_obj.xml | 11 + .../objects/object_spot17_obj.xml | 12 + .../objects/object_spot18_obj.xml | 36 + .../xml/GC_NMQ_PAL_F/objects/object_ssh.xml | 61 + .../xml/GC_NMQ_PAL_F/objects/object_sst.xml | 55 + .../xml/GC_NMQ_PAL_F/objects/object_st.xml | 71 + .../GC_NMQ_PAL_F/objects/object_stream.xml | 6 + .../GC_NMQ_PAL_F/objects/object_syokudai.xml | 13 + .../xml/GC_NMQ_PAL_F/objects/object_ta.xml | 72 + .../GC_NMQ_PAL_F/objects/object_timeblock.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_tite.xml | 55 + .../xml/GC_NMQ_PAL_F/objects/object_tk.xml | 18 + .../objects/object_toki_objects.xml | 25 + .../GC_NMQ_PAL_F/objects/object_torch2.xml | 11 + .../xml/GC_NMQ_PAL_F/objects/object_toryo.xml | 53 + .../xml/GC_NMQ_PAL_F/objects/object_tp.xml | 17 + .../xml/GC_NMQ_PAL_F/objects/object_tr.xml | 149 ++ .../xml/GC_NMQ_PAL_F/objects/object_trap.xml | 11 + .../objects/object_triforce_spot.xml | 14 + .../xml/GC_NMQ_PAL_F/objects/object_ts.xml | 34 + .../xml/GC_NMQ_PAL_F/objects/object_tsubo.xml | 9 + .../xml/GC_NMQ_PAL_F/objects/object_tw.xml | 332 ++++ .../GC_NMQ_PAL_F/objects/object_umajump.xml | 8 + .../xml/GC_NMQ_PAL_F/objects/object_vali.xml | 63 + .../xml/GC_NMQ_PAL_F/objects/object_vase.xml | 7 + .../xml/GC_NMQ_PAL_F/objects/object_vm.xml | 41 + .../objects/object_wallmaster.xml | 35 + .../xml/GC_NMQ_PAL_F/objects/object_warp1.xml | 39 + .../xml/GC_NMQ_PAL_F/objects/object_warp2.xml | 6 + .../xml/GC_NMQ_PAL_F/objects/object_wf.xml | 128 ++ .../GC_NMQ_PAL_F/objects/object_wood02.xml | 35 + .../xml/GC_NMQ_PAL_F/objects/object_xc.xml | 32 + .../objects/object_yabusame_point.xml | 8 + .../objects/object_ydan_objects.xml | 34 + .../GC_NMQ_PAL_F/objects/object_yukabyun.xml | 9 + .../xml/GC_NMQ_PAL_F/objects/object_zf.xml | 182 ++ .../xml/GC_NMQ_PAL_F/objects/object_zg.xml | 8 + .../xml/GC_NMQ_PAL_F/objects/object_zl1.xml | 114 ++ .../xml/GC_NMQ_PAL_F/objects/object_zl2.xml | 42 + .../objects/object_zl2_anime1.xml | 30 + .../objects/object_zl2_anime2.xml | 40 + .../xml/GC_NMQ_PAL_F/objects/object_zl4.xml | 60 + .../xml/GC_NMQ_PAL_F/objects/object_zo.xml | 88 + .../GC_NMQ_PAL_F/overlays/ovl_Arrow_Fire.xml | 11 + .../GC_NMQ_PAL_F/overlays/ovl_Arrow_Ice.xml | 11 + .../GC_NMQ_PAL_F/overlays/ovl_Arrow_Light.xml | 11 + .../overlays/ovl_Bg_Ganon_Otyuka.xml | 29 + .../overlays/ovl_Bg_Jya_Cobra.xml | 10 + .../overlays/ovl_Boss_Dodongo.xml | 6 + .../GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon.xml | 52 + .../GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon2.xml | 76 + .../GC_NMQ_PAL_F/overlays/ovl_Boss_Sst.xml | 8 + .../GC_NMQ_PAL_F/overlays/ovl_Demo_Shd.xml | 8 + .../xml/GC_NMQ_PAL_F/overlays/ovl_En_Bili.xml | 7 + .../overlays/ovl_En_Clear_Tag.xml | 14 + .../overlays/ovl_En_Ganon_Mant.xml | 22 + .../overlays/ovl_En_Ganon_Organ.xml | 19 + .../xml/GC_NMQ_PAL_F/overlays/ovl_En_Holl.xml | 8 + .../GC_NMQ_PAL_F/overlays/ovl_En_Jsjutan.xml | 38 + .../GC_NMQ_PAL_F/overlays/ovl_En_Kanban.xml | 8 + .../xml/GC_NMQ_PAL_F/overlays/ovl_En_Sda.xml | 9 + .../xml/GC_NMQ_PAL_F/overlays/ovl_En_Ssh.xml | 8 + .../xml/GC_NMQ_PAL_F/overlays/ovl_En_St.xml | 8 + .../xml/GC_NMQ_PAL_F/overlays/ovl_En_Sth.xml | 15 + .../GC_NMQ_PAL_F/overlays/ovl_End_Title.xml | 17 + .../GC_NMQ_PAL_F/overlays/ovl_File_Choose.xml | 28 + .../GC_NMQ_PAL_F/overlays/ovl_Magic_Dark.xml | 12 + .../GC_NMQ_PAL_F/overlays/ovl_Magic_Fire.xml | 10 + .../GC_NMQ_PAL_F/overlays/ovl_Magic_Wind.xml | 15 + .../GC_NMQ_PAL_F/overlays/ovl_Oceff_Spot.xml | 10 + .../GC_NMQ_PAL_F/overlays/ovl_Oceff_Storm.xml | 11 + .../GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe.xml | 10 + .../GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe2.xml | 11 + .../GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe3.xml | 10 + .../GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe4.xml | 11 + .../GC_NMQ_PAL_F/scenes/dungeons/Bmori1.xml | 76 + .../GC_NMQ_PAL_F/scenes/dungeons/FIRE_bs.xml | 11 + .../GC_NMQ_PAL_F/scenes/dungeons/HAKAdan.xml | 74 + .../scenes/dungeons/HAKAdanCH.xml | 26 + .../scenes/dungeons/HAKAdan_bs.xml | 11 + .../GC_NMQ_PAL_F/scenes/dungeons/HIDAN.xml | 87 + .../GC_NMQ_PAL_F/scenes/dungeons/MIZUsin.xml | 77 + .../scenes/dungeons/MIZUsin_bs.xml | 11 + .../xml/GC_NMQ_PAL_F/scenes/dungeons/bdan.xml | 54 + .../scenes/dungeons/bdan_boss.xml | 11 + .../xml/GC_NMQ_PAL_F/scenes/dungeons/ddan.xml | 70 + .../scenes/dungeons/ddan_boss.xml | 12 + .../GC_NMQ_PAL_F/scenes/dungeons/ganon.xml | 35 + .../scenes/dungeons/ganon_boss.xml | 8 + .../scenes/dungeons/ganon_demo.xml | 8 + .../scenes/dungeons/ganon_final.xml | 9 + .../scenes/dungeons/ganon_sonogo.xml | 21 + .../scenes/dungeons/ganon_tou.xml | 10 + .../scenes/dungeons/ganontika.xml | 82 + .../scenes/dungeons/ganontikasonogo.xml | 12 + .../scenes/dungeons/gerudoway.xml | 26 + .../scenes/dungeons/ice_doukutu.xml | 44 + .../scenes/dungeons/jyasinboss.xml | 19 + .../scenes/dungeons/jyasinzou.xml | 95 + .../xml/GC_NMQ_PAL_F/scenes/dungeons/men.xml | 43 + .../scenes/dungeons/moribossroom.xml | 11 + .../xml/GC_NMQ_PAL_F/scenes/dungeons/ydan.xml | 45 + .../scenes/dungeons/ydan_boss.xml | 11 + .../GC_NMQ_PAL_F/scenes/indoors/bowling.xml | 8 + .../scenes/indoors/daiyousei_izumi.xml | 11 + .../scenes/indoors/hairal_niwa.xml | 10 + .../scenes/indoors/hairal_niwa_n.xml | 8 + .../scenes/indoors/hakasitarelay.xml | 27 + .../xml/GC_NMQ_PAL_F/scenes/indoors/hut.xml | 8 + .../scenes/indoors/hylia_labo.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/indoors/impa.xml | 8 + .../GC_NMQ_PAL_F/scenes/indoors/kakariko.xml | 8 + .../scenes/indoors/kenjyanoma.xml | 8 + .../scenes/indoors/kokiri_home.xml | 8 + .../scenes/indoors/kokiri_home3.xml | 8 + .../scenes/indoors/kokiri_home4.xml | 8 + .../scenes/indoors/kokiri_home5.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/indoors/labo.xml | 8 + .../GC_NMQ_PAL_F/scenes/indoors/link_home.xml | 8 + .../GC_NMQ_PAL_F/scenes/indoors/mahouya.xml | 8 + .../scenes/indoors/malon_stable.xml | 8 + .../scenes/indoors/miharigoya.xml | 14 + .../GC_NMQ_PAL_F/scenes/indoors/nakaniwa.xml | 13 + .../scenes/indoors/syatekijyou.xml | 8 + .../GC_NMQ_PAL_F/scenes/indoors/takaraya.xml | 26 + .../xml/GC_NMQ_PAL_F/scenes/indoors/tent.xml | 8 + .../GC_NMQ_PAL_F/scenes/indoors/tokinoma.xml | 14 + .../scenes/indoors/yousei_izumi_tate.xml | 8 + .../scenes/indoors/yousei_izumi_yoko.xml | 11 + .../xml/GC_NMQ_PAL_F/scenes/misc/enrui.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/misc/entra_n.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/misc/hakaana.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/misc/hakaana2.xml | 8 + .../GC_NMQ_PAL_F/scenes/misc/hakaana_ouke.xml | 16 + .../GC_NMQ_PAL_F/scenes/misc/hiral_demo.xml | 8 + .../GC_NMQ_PAL_F/scenes/misc/kakariko3.xml | 8 + .../GC_NMQ_PAL_F/scenes/misc/kakusiana.xml | 47 + .../xml/GC_NMQ_PAL_F/scenes/misc/kinsuta.xml | 10 + .../GC_NMQ_PAL_F/scenes/misc/market_alley.xml | 8 + .../scenes/misc/market_alley_n.xml | 9 + .../GC_NMQ_PAL_F/scenes/misc/market_day.xml | 9 + .../GC_NMQ_PAL_F/scenes/misc/market_night.xml | 9 + .../GC_NMQ_PAL_F/scenes/misc/market_ruins.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/misc/shrine.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/misc/shrine_n.xml | 9 + .../xml/GC_NMQ_PAL_F/scenes/misc/shrine_r.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/misc/turibori.xml | 8 + .../GC_NMQ_PAL_F/scenes/overworld/entra.xml | 8 + .../GC_NMQ_PAL_F/scenes/overworld/souko.xml | 16 + .../GC_NMQ_PAL_F/scenes/overworld/spot00.xml | 18 + .../GC_NMQ_PAL_F/scenes/overworld/spot01.xml | 13 + .../GC_NMQ_PAL_F/scenes/overworld/spot02.xml | 17 + .../GC_NMQ_PAL_F/scenes/overworld/spot03.xml | 15 + .../GC_NMQ_PAL_F/scenes/overworld/spot04.xml | 21 + .../GC_NMQ_PAL_F/scenes/overworld/spot05.xml | 16 + .../GC_NMQ_PAL_F/scenes/overworld/spot06.xml | 15 + .../GC_NMQ_PAL_F/scenes/overworld/spot07.xml | 15 + .../GC_NMQ_PAL_F/scenes/overworld/spot08.xml | 9 + .../GC_NMQ_PAL_F/scenes/overworld/spot09.xml | 16 + .../GC_NMQ_PAL_F/scenes/overworld/spot10.xml | 36 + .../GC_NMQ_PAL_F/scenes/overworld/spot11.xml | 9 + .../GC_NMQ_PAL_F/scenes/overworld/spot12.xml | 15 + .../GC_NMQ_PAL_F/scenes/overworld/spot13.xml | 11 + .../GC_NMQ_PAL_F/scenes/overworld/spot15.xml | 9 + .../GC_NMQ_PAL_F/scenes/overworld/spot16.xml | 14 + .../GC_NMQ_PAL_F/scenes/overworld/spot17.xml | 13 + .../GC_NMQ_PAL_F/scenes/overworld/spot18.xml | 23 + .../GC_NMQ_PAL_F/scenes/overworld/spot20.xml | 14 + .../GC_NMQ_PAL_F/scenes/shops/alley_shop.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/shops/drag.xml | 8 + .../GC_NMQ_PAL_F/scenes/shops/face_shop.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/shops/golon.xml | 8 + .../GC_NMQ_PAL_F/scenes/shops/kokiri_shop.xml | 8 + .../GC_NMQ_PAL_F/scenes/shops/night_shop.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/shops/shop1.xml | 8 + .../xml/GC_NMQ_PAL_F/scenes/shops/zoora.xml | 8 + .../GC_NMQ_PAL_F/text/elf_message_field.xml | 5 + .../GC_NMQ_PAL_F/text/elf_message_ydan.xml | 5 + .../text/nes_message_data_static.xml | 5 + .../text/staff_message_data_static.xml | 5 + .../xml/GC_NMQ_PAL_F/textures/backgrounds.xml | 246 +++ .../textures/do_action_static.xml | 91 + .../textures/icon_item_24_static.xml | 24 + .../textures/icon_item_dungeon_static.xml | 23 + .../textures/icon_item_field_static.xml | 32 + .../textures/icon_item_fra_static.xml | 37 + .../textures/icon_item_gameover_static.xml | 11 + .../textures/icon_item_ger_static.xml | 36 + .../textures/icon_item_nes_static.xml | 35 + .../textures/icon_item_static.xml | 190 ++ .../textures/item_name_static.xml | 373 ++++ .../textures/map_48x85_static.xml | 72 + .../textures/map_grand_static.xml | 28 + .../GC_NMQ_PAL_F/textures/map_i_static.xml | 243 +++ .../GC_NMQ_PAL_F/textures/map_name_static.xml | 106 ++ .../GC_NMQ_PAL_F/textures/message_static.xml | 11 + .../textures/message_texture_static.xml | 6 + .../GC_NMQ_PAL_F/textures/nes_font_static.xml | 145 ++ .../textures/nintendo_rogo_static.xml | 8 + .../textures/parameter_static.xml | 60 + .../textures/place_title_cards.xml | 287 +++ .../xml/GC_NMQ_PAL_F/textures/skyboxes.xml | 113 ++ .../GC_NMQ_PAL_F/textures/title_static.xml | 194 ++ soh/build.c | 4 +- soh/soh.vcxproj | 2 +- soh/soh/OTRGlobals.cpp | 15 + soh/soh/OTRGlobals.h | 1 + soh/soh/z_play_otr.cpp | 10 + soh/src/code/z_play.c | 20 - soh/src/code/z_player_lib.c | 2 + soh/src/code/z_vr_box.c | 5 +- .../overlays/actors/ovl_Elf_Msg/z_elf_msg.c | 11 +- .../overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c | 4 + .../overlays/gamestates/ovl_title/z_title.c | 38 + .../ovl_kaleido_scope/z_kaleido_scope_PAL.c | 31 - 1203 files changed, 30620 insertions(+), 501 deletions(-) create mode 100644 OTRExporter/CFG/filelists/dbg.txt create mode 100644 OTRExporter/CFG/filelists/gamecube.txt create mode 100644 OTRExporter/CFG/filelists/gamecube_pal.txt create mode 100644 OTRExporter/extract_baserom_debug.py create mode 100644 OTRExporter/extract_baserom_gc.py rename OTRGui/assets/extractor/{Config.xml => Config_GC_MQ_D.xml} (83%) create mode 100644 OTRGui/assets/extractor/Config_GC_NMQ_D.xml create mode 100644 OTRGui/assets/extractor/Config_GC_NMQ_PAL_F.xml create mode 100644 OTRGui/assets/extractor/filelists/gamecube_pal.txt create mode 100644 ZAPDTR/ZAPD/FileWorker.cpp create mode 100644 ZAPDTR/ZAPD/FileWorker.h create mode 100644 ZAPDTR/ZAPD/ZRom.cpp create mode 100644 ZAPDTR/ZAPD/ZRom.h create mode 100644 ZAPDTR/ZAPD/ctpl_stl.h create mode 100644 ZAPDTR/ZAPD/yaz0/readwrite.h create mode 100644 ZAPDTR/ZAPD/yaz0/yaz0.cpp create mode 100644 ZAPDTR/ZAPD/yaz0/yaz0.h create mode 100644 libultraship/libultraship/GameVersions.h rename soh/assets/xml/{ => GC_NMQ_D}/code/fbdemo_circle.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/code/fbdemo_triforce.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/code/fbdemo_wipe1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/misc/link_animetion.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/gameplay_dangeon_keep.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/gameplay_field_keep.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/gameplay_keep.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_Bb.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ahg.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_am.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ane.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ani.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_anubice.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_aob.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_b_heart.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bba.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bdan_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bdoor.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bg.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bigokuta.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bird.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bji.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bl.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_blkobj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bob.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_boj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bombf.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bombiwa.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bowl.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_box.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_brob.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bubble.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bv.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bw.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bwall.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_bxa.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_cne.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_cob.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_cow.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_crow.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_cs.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_d_elevator.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_d_hsblock.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_d_lift.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_daiku.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ddan_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dekubaba.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dekujr.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dekunuts.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_demo_6k.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_demo_kekkai.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_demo_tre_lgt.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dh.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dnk.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dns.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dodojr.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dodongo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dog.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_door_gerudo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_door_killer.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ds.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ds2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_du.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_dy_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ec.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_efc_crystal_light.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_efc_doughnut.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_efc_erupc.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_efc_fire_ball.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_efc_flash.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_efc_lgt_shower.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_efc_star_field.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_efc_tw.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ei.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fa.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fd.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fd2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fhg.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fire.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_firefly.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fish.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fr.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fu.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fw.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_fz.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ganon.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ganon2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ganon_anime1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ganon_anime2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ganon_anime3.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ganon_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ge1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_geff.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_geldb.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_arrow.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_arrowcase.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_bean.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_bomb_1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_bomb_2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_bombpouch.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_boomerang.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_boots_2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_bosskey.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_bottle.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_bottle_letter.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_bow.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_bracelet.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_brokensword.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_butterfly.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_clothes.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_coin.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_compass.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_dekupouch.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_egg.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_eye_lotion.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_fire.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_fish.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_frog.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_gerudo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_gerudomask.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_ghost.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_glasses.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_gloves.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_goddess.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_golonmask.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_grass.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_hammer.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_heart.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_hearts.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_hookshot.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_hoverboots.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_insect.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_jewel.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_key.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_ki_tan_mask.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_letter.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_liquid.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_longsword.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_m_arrow.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_magicpot.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_map.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_medal.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_melody.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_milk.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_mushroom.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_niwatori.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_nuts.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_ocarina.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_ocarina_0.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_pachinko.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_powder.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_prescription.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_purse.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_rabit_mask.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_redead_mask.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_rupy.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_saw.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_scale.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_seed.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_shield_1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_shield_2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_shield_3.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_skj_mask.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_soldout.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_soul.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_stick.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_sutaru.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_sword_1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_ticketstone.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_truth_mask.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gi_zoramask.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gjyo_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gla.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gm.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gnd.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gnd_magic.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gndd.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_god_lgt.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gol.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_goma.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_goroiwa.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gr.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gs.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_gt.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_haka.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_haka_door.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_haka_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_hakach_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_hata.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_heavy_object.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_hidan_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_hintnuts.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_hni.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_horse.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_horse_ganon.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_horse_link_child.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_horse_normal.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_horse_zelda.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_hs.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_human.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ice_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ik.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_im.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_in.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ingate.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_jj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_js.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_jya_door.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_jya_iron.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_jya_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ka.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_kanban.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_kibako2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_kingdodongo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_km1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_kusa.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_kw1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_kz.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_light_ring.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_lightbox.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_lightswitch.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_link_boy.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_link_child.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ma1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ma2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mag.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mamenoki.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mastergolon.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_masterkokiri.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_masterkokirihead.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_masterzoora.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mb.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_md.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_medal.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_menkuri_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mir_ray.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mizu_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mjin.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mjin_dark.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mjin_flame.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mjin_flash.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mjin_ice.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mjin_oka.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mjin_soul.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mjin_wind.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mk.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mm.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mori_hineri1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mori_hineri1a.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mori_hineri2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mori_hineri2a.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mori_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mori_tex.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ms.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_mu.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_nb.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_niw.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_nwc.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ny.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA10.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA11.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA3.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA4.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA5.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA6.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA7.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA8.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oA9.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oB1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oB2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oB3.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oB4.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE10.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE11.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE12.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE1s.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE3.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE4.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE4s.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE5.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE6.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE7.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE8.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE9.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oE_anime.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oF1d_map.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_oF1s.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_o_anime.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_okuta.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_opening_demo1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_os.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_os_anime.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ossan.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ouke_haka.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_owl.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_peehat.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_po_composer.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_po_field.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_po_sisters.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_poh.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ps.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_pu_box.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_rd.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_reeba.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_relay_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_rl.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_rr.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_rs.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ru1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ru2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_sa.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_sb.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_sd.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_shop_dungen.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_shopnuts.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_siofuki.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_sk2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_skb.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_skj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot00_break.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot00_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot01_matoya.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot01_matoyab.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot01_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot01_objects2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot02_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot03_object.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot04_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot05_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot06_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot07_object.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot08_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot09_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot11_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot12_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot15_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot16_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot17_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_spot18_obj.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ssh.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_sst.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_st.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_stream.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_syokudai.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ta.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_timeblock.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_tite.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_tk.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_toki_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_torch2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_toryo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_tp.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_tr.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_trap.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_triforce_spot.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ts.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_tsubo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_tw.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_umajump.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_vali.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_vase.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_vm.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_wallmaster.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_warp1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_warp2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_wf.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_wood02.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_xc.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_yabusame_point.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_ydan_objects.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_yukabyun.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_zf.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_zg.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_zl1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_zl2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_zl2_anime1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_zl2_anime2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_zl4.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/objects/object_zo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Arrow_Fire.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Arrow_Ice.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Arrow_Light.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Bg_Ganon_Otyuka.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Bg_Jya_Cobra.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Boss_Dodongo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Boss_Ganon.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Boss_Ganon2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Boss_Sst.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Demo_Shd.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Elf_Msg.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Elf_Msg2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Bili.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Clear_Tag.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Ganon_Mant.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Ganon_Organ.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Holl.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Jsjutan.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Kanban.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Sda.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Ssh.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_St.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_En_Sth.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_End_Title.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_File_Choose.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Magic_Dark.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Magic_Fire.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Magic_Wind.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Oceff_Spot.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Oceff_Storm.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Oceff_Wipe.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Oceff_Wipe2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Oceff_Wipe3.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/overlays/ovl_Oceff_Wipe4.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/Bmori1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/FIRE_bs.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/HAKAdan.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/HAKAdanCH.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/HAKAdan_bs.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/HIDAN.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/MIZUsin.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/MIZUsin_bs.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/bdan.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/bdan_boss.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ddan.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ddan_boss.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ganon.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ganon_boss.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ganon_demo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ganon_final.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ganon_sonogo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ganon_tou.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ganontika.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ganontikasonogo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/gerudoway.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ice_doukutu.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/jyasinboss.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/jyasinzou.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/men.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/moribossroom.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ydan.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/dungeons/ydan_boss.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/bowling.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/daiyousei_izumi.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/hairal_niwa.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/hairal_niwa2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/hairal_niwa_n.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/hakasitarelay.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/hut.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/hylia_labo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/impa.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/kakariko.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/kenjyanoma.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/kokiri_home.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/kokiri_home3.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/kokiri_home4.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/kokiri_home5.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/labo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/link_home.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/mahouya.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/malon_stable.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/miharigoya.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/nakaniwa.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/syatekijyou.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/takaraya.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/tent.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/tokinoma.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/yousei_izumi_tate.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/indoors/yousei_izumi_yoko.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/enrui.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/entra_n.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/hakaana.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/hakaana2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/hakaana_ouke.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/hiral_demo.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/kakariko3.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/kakusiana.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/kinsuta.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/market_alley.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/market_alley_n.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/market_day.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/market_night.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/market_ruins.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/shrine.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/shrine_n.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/shrine_r.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/misc/turibori.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/entra.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/souko.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot00.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot01.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot02.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot03.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot04.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot05.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot06.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot07.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot08.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot09.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot10.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot11.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot12.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot13.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot15.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot16.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot17.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot18.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/overworld/spot20.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/shops/alley_shop.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/shops/drag.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/shops/face_shop.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/shops/golon.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/shops/kokiri_shop.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/shops/night_shop.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/shops/shop1.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/shops/zoora.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/test_levels/besitu.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/test_levels/depth_test.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/test_levels/sasatest.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/test_levels/sutaru.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/test_levels/syotes.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/test_levels/syotes2.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/test_levels/test01.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/scenes/test_levels/testroom.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/text/elf_message_field.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/text/elf_message_ydan.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/text/nes_message_data_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/text/staff_message_data_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/backgrounds.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/do_action_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/icon_item_24_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/icon_item_dungeon_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/icon_item_field_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/icon_item_fra_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/icon_item_gameover_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/icon_item_ger_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/icon_item_nes_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/icon_item_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/item_name_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/map_48x85_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/map_grand_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/map_i_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/map_name_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/message_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/message_texture_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/nes_font_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/nintendo_rogo_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/parameter_static.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/place_title_cards.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/skyboxes.xml (100%) rename soh/assets/xml/{ => GC_NMQ_D}/textures/title_static.xml (100%) create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_circle.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_triforce.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_wipe1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/misc/link_animetion.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_dangeon_keep.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_field_keep.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_keep.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_Bb.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ahg.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_am.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ane.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ani.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_anubice.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_aob.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_b_heart.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bba.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bdan_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bdoor.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bg.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bigokuta.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bird.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bji.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bl.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_blkobj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bob.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_boj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bombf.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bombiwa.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bowl.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_box.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_brob.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bubble.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bv.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bw.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bwall.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_bxa.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_cne.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_cob.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_cow.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_crow.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_cs.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_elevator.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_hsblock.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_lift.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_daiku.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ddan_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekubaba.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekujr.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekunuts.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_6k.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_kekkai.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_tre_lgt.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dh.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dnk.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dns.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dodojr.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dodongo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dog.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_door_gerudo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_door_killer.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ds.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ds2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_du.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_dy_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ec.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_crystal_light.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_doughnut.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_erupc.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_fire_ball.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_flash.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_lgt_shower.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_star_field.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_tw.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ei.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fa.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fd.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fd2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fhg.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fire.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_firefly.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fish.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fr.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fu.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fw.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_fz.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime3.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ge1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_geff.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_geldb.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_arrow.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_arrowcase.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bean.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bomb_1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bomb_2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bombpouch.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_boomerang.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_boots_2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bosskey.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bottle.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bottle_letter.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bow.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bracelet.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_brokensword.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_butterfly.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_clothes.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_coin.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_compass.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_dekupouch.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_egg.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_eye_lotion.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_fire.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_fish.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_frog.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gerudo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gerudomask.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ghost.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_glasses.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gloves.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_goddess.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_golonmask.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_grass.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hammer.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_heart.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hearts.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hookshot.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hoverboots.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_insect.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_jewel.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_key.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ki_tan_mask.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_letter.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_liquid.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_longsword.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_m_arrow.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_magicpot.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_map.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_medal.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_melody.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_milk.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_mushroom.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_niwatori.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_nuts.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ocarina.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ocarina_0.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_pachinko.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_powder.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_prescription.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_purse.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_rabit_mask.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_redead_mask.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_rupy.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_saw.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_scale.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_seed.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_3.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_skj_mask.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_soldout.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_soul.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_stick.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_sutaru.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_sword_1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ticketstone.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_truth_mask.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_zoramask.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gjyo_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gla.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gm.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gnd.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gnd_magic.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gndd.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_god_lgt.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gol.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_goma.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_goroiwa.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gr.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gs.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_gt.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka_door.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_hakach_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_hata.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_heavy_object.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_hidan_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_hintnuts.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_hni.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_ganon.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_link_child.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_normal.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_zelda.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_hs.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_human.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ice_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ik.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_im.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_in.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ingate.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_jj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_js.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_door.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_iron.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ka.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_kanban.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_kibako2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_kingdodongo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_km1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_kusa.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_kw1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_kz.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_light_ring.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_lightbox.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_lightswitch.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_link_boy.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_link_child.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ma1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ma2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mag.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mamenoki.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mastergolon.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterkokiri.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterkokirihead.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterzoora.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mb.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_md.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_medal.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_menkuri_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mir_ray.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mizu_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_dark.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_flame.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_flash.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_ice.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_oka.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_soul.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_wind.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mk.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mm.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri1a.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri2a.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_tex.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ms.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_mu.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_nb.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_niw.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_nwc.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ny.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA10.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA11.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA3.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA4.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA5.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA6.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA7.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA8.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA9.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB3.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB4.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE10.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE11.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE12.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE1s.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE3.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE4.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE4s.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE5.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE6.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE7.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE8.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE9.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE_anime.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oF1d_map.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_oF1s.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_o_anime.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_okuta.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_opening_demo1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_os.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_os_anime.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ossan.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ouke_haka.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_owl.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_peehat.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_composer.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_field.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_sisters.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_poh.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ps.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_pu_box.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_rd.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_reeba.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_relay_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_rl.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_rr.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_rs.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ru1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ru2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_sa.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_sb.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_sd.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_shop_dungen.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_shopnuts.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_siofuki.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_sk2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_skb.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_skj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot00_break.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot00_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_matoya.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_matoyab.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_objects2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot02_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot03_object.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot04_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot05_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot06_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot07_object.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot08_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot09_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot11_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot12_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot15_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot16_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot17_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot18_obj.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ssh.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_sst.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_st.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_stream.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_syokudai.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ta.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_timeblock.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_tite.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_tk.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_toki_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_torch2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_toryo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_tp.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_tr.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_trap.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_triforce_spot.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ts.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_tsubo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_tw.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_umajump.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_vali.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_vase.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_vm.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_wallmaster.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_warp1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_warp2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_wf.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_wood02.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_xc.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_yabusame_point.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_ydan_objects.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_yukabyun.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_zf.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_zg.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2_anime1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2_anime2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl4.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/objects/object_zo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Fire.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Ice.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Light.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Bg_Ganon_Otyuka.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Bg_Jya_Cobra.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Dodongo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Sst.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Demo_Shd.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Bili.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Clear_Tag.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ganon_Mant.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ganon_Organ.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Holl.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Jsjutan.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Kanban.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Sda.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ssh.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_St.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Sth.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_End_Title.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_File_Choose.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Dark.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Fire.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Wind.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Spot.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Storm.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe3.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe4.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/Bmori1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/FIRE_bs.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdan.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdanCH.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdan_bs.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HIDAN.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/MIZUsin.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/MIZUsin_bs.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/bdan.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/bdan_boss.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ddan.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ddan_boss.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_boss.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_demo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_final.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_sonogo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_tou.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganontika.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganontikasonogo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/gerudoway.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ice_doukutu.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/jyasinboss.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/jyasinzou.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/men.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/moribossroom.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ydan.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ydan_boss.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/bowling.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/daiyousei_izumi.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa_n.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hakasitarelay.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hut.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hylia_labo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/impa.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kakariko.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kenjyanoma.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home3.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home4.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home5.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/labo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/link_home.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/mahouya.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/malon_stable.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/miharigoya.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/nakaniwa.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/syatekijyou.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/takaraya.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/tent.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/tokinoma.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/yousei_izumi_tate.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/yousei_izumi_yoko.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/enrui.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/entra_n.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana2.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana_ouke.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hiral_demo.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kakariko3.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kakusiana.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kinsuta.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_alley.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_alley_n.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_day.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_night.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_ruins.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine_n.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine_r.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/turibori.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/entra.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/souko.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot00.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot01.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot02.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot03.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot04.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot05.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot06.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot07.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot08.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot09.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot10.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot11.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot12.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot13.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot15.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot16.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot17.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot18.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot20.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/alley_shop.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/drag.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/face_shop.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/golon.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/kokiri_shop.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/night_shop.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/shop1.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/zoora.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/text/elf_message_field.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/text/elf_message_ydan.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/backgrounds.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/do_action_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_24_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_dungeon_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_field_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_fra_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_gameover_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_ger_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_nes_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/item_name_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/map_48x85_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/map_grand_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/map_i_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/map_name_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/message_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/message_texture_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/nes_font_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/nintendo_rogo_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/parameter_static.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/place_title_cards.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/skyboxes.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/title_static.xml diff --git a/OTRExporter/.gitignore b/OTRExporter/.gitignore index 2372a0cba..005fe6b8c 100644 --- a/OTRExporter/.gitignore +++ b/OTRExporter/.gitignore @@ -345,6 +345,8 @@ baserom/ *.otr *.swp *.a +*.z64 +*.n64 Extract/ tmp.txt diff --git a/OTRExporter/CFG/Config.xml b/OTRExporter/CFG/Config.xml index d9c3782e1..adec174ca 100644 --- a/OTRExporter/CFG/Config.xml +++ b/OTRExporter/CFG/Config.xml @@ -2,7 +2,7 @@ - + diff --git a/OTRExporter/CFG/filelists/dbg.txt b/OTRExporter/CFG/filelists/dbg.txt new file mode 100644 index 000000000..68af5e557 --- /dev/null +++ b/OTRExporter/CFG/filelists/dbg.txt @@ -0,0 +1,1532 @@ +makerom +boot +dmadata +Audiobank +Audioseq +Audiotable +link_animetion +icon_item_static +icon_item_24_static +icon_item_field_static +icon_item_dungeon_static +icon_item_gameover_static +icon_item_nes_static +icon_item_ger_static +icon_item_fra_static +item_name_static +map_name_static +do_action_static +message_static +message_texture_static +nes_font_static +nes_message_data_static +ger_message_data_static +fra_message_data_static +staff_message_data_static +map_grand_static +map_i_static +map_48x85_static +code +ovl_title +ovl_select +ovl_opening +ovl_file_choose +ovl_kaleido_scope +ovl_player_actor +ovl_map_mark_data +ovl_En_Test +ovl_Arms_Hook +ovl_Arrow_Fire +ovl_Arrow_Ice +ovl_Arrow_Light +ovl_Bg_Bdan_Objects +ovl_Bg_Bdan_Switch +ovl_Bg_Bom_Guard +ovl_Bg_Bombwall +ovl_Bg_Bowl_Wall +ovl_Bg_Breakwall +ovl_Bg_Ddan_Jd +ovl_Bg_Ddan_Kd +ovl_Bg_Dodoago +ovl_Bg_Dy_Yoseizo +ovl_Bg_Ganon_Otyuka +ovl_Bg_Gate_Shutter +ovl_Bg_Gjyo_Bridge +ovl_Bg_Gnd_Darkmeiro +ovl_Bg_Gnd_Firemeiro +ovl_Bg_Gnd_Iceblock +ovl_Bg_Gnd_Nisekabe +ovl_Bg_Gnd_Soulmeiro +ovl_Bg_Haka +ovl_Bg_Haka_Gate +ovl_Bg_Haka_Huta +ovl_Bg_Haka_Megane +ovl_Bg_Haka_MeganeBG +ovl_Bg_Haka_Sgami +ovl_Bg_Haka_Ship +ovl_Bg_Haka_Trap +ovl_Bg_Haka_Tubo +ovl_Bg_Haka_Water +ovl_Bg_Haka_Zou +ovl_Bg_Heavy_Block +ovl_Bg_Hidan_Curtain +ovl_Bg_Hidan_Dalm +ovl_Bg_Hidan_Firewall +ovl_Bg_Hidan_Fslift +ovl_Bg_Hidan_Fwbig +ovl_Bg_Hidan_Hamstep +ovl_Bg_Hidan_Hrock +ovl_Bg_Hidan_Kousi +ovl_Bg_Hidan_Kowarerukabe +ovl_Bg_Hidan_Rock +ovl_Bg_Hidan_Rsekizou +ovl_Bg_Hidan_Sekizou +ovl_Bg_Hidan_Sima +ovl_Bg_Hidan_Syoku +ovl_Bg_Ice_Objects +ovl_Bg_Ice_Shelter +ovl_Bg_Ice_Shutter +ovl_Bg_Ice_Turara +ovl_Bg_Ingate +ovl_Bg_Jya_1flift +ovl_Bg_Jya_Amishutter +ovl_Bg_Jya_Bigmirror +ovl_Bg_Jya_Block +ovl_Bg_Jya_Bombchuiwa +ovl_Bg_Jya_Bombiwa +ovl_Bg_Jya_Cobra +ovl_Bg_Jya_Goroiwa +ovl_Bg_Jya_Haheniron +ovl_Bg_Jya_Ironobj +ovl_Bg_Jya_Kanaami +ovl_Bg_Jya_Lift +ovl_Bg_Jya_Megami +ovl_Bg_Jya_Zurerukabe +ovl_Bg_Menkuri_Eye +ovl_Bg_Menkuri_Kaiten +ovl_Bg_Menkuri_Nisekabe +ovl_Bg_Mizu_Bwall +ovl_Bg_Mizu_Movebg +ovl_Bg_Mizu_Shutter +ovl_Bg_Mizu_Uzu +ovl_Bg_Mizu_Water +ovl_Bg_Mjin +ovl_Bg_Mori_Bigst +ovl_Bg_Mori_Elevator +ovl_Bg_Mori_Hashigo +ovl_Bg_Mori_Hashira4 +ovl_Bg_Mori_Hineri +ovl_Bg_Mori_Idomizu +ovl_Bg_Mori_Kaitenkabe +ovl_Bg_Mori_Rakkatenjo +ovl_Bg_Po_Event +ovl_Bg_Po_Syokudai +ovl_Bg_Pushbox +ovl_Bg_Relay_Objects +ovl_Bg_Spot00_Break +ovl_Bg_Spot00_Hanebasi +ovl_Bg_Spot01_Fusya +ovl_Bg_Spot01_Idohashira +ovl_Bg_Spot01_Idomizu +ovl_Bg_Spot01_Idosoko +ovl_Bg_Spot01_Objects2 +ovl_Bg_Spot02_Objects +ovl_Bg_Spot03_Taki +ovl_Bg_Spot05_Soko +ovl_Bg_Spot06_Objects +ovl_Bg_Spot07_Taki +ovl_Bg_Spot08_Bakudankabe +ovl_Bg_Spot08_Iceblock +ovl_Bg_Spot09_Obj +ovl_Bg_Spot11_Bakudankabe +ovl_Bg_Spot11_Oasis +ovl_Bg_Spot12_Gate +ovl_Bg_Spot12_Saku +ovl_Bg_Spot15_Rrbox +ovl_Bg_Spot15_Saku +ovl_Bg_Spot16_Bombstone +ovl_Bg_Spot16_Doughnut +ovl_Bg_Spot17_Bakudankabe +ovl_Bg_Spot17_Funen +ovl_Bg_Spot18_Basket +ovl_Bg_Spot18_Futa +ovl_Bg_Spot18_Obj +ovl_Bg_Spot18_Shutter +ovl_Bg_Sst_Floor +ovl_Bg_Toki_Hikari +ovl_Bg_Toki_Swd +ovl_Bg_Treemouth +ovl_Bg_Umajump +ovl_Bg_Vb_Sima +ovl_Bg_Ydan_Hasi +ovl_Bg_Ydan_Maruta +ovl_Bg_Ydan_Sp +ovl_Bg_Zg +ovl_Boss_Dodongo +ovl_Boss_Fd +ovl_Boss_Fd2 +ovl_Boss_Ganon +ovl_Boss_Ganon2 +ovl_Boss_Ganondrof +ovl_Boss_Goma +ovl_Boss_Mo +ovl_Boss_Sst +ovl_Boss_Tw +ovl_Boss_Va +ovl_Demo_6K +ovl_Demo_Du +ovl_Demo_Ec +ovl_Demo_Effect +ovl_Demo_Ext +ovl_Demo_Geff +ovl_Demo_Gj +ovl_Demo_Go +ovl_Demo_Gt +ovl_Demo_Ik +ovl_Demo_Im +ovl_Demo_Kankyo +ovl_Demo_Kekkai +ovl_Demo_Sa +ovl_Demo_Shd +ovl_Demo_Tre_Lgt +ovl_Door_Ana +ovl_Door_Gerudo +ovl_Door_Killer +ovl_Door_Shutter +ovl_Door_Toki +ovl_Door_Warp1 +ovl_Efc_Erupc +ovl_Eff_Dust +ovl_Effect_Ss_Blast +ovl_Effect_Ss_Bomb +ovl_Effect_Ss_Bomb2 +ovl_Effect_Ss_Bubble +ovl_Effect_Ss_D_Fire +ovl_Effect_Ss_Dead_Db +ovl_Effect_Ss_Dead_Dd +ovl_Effect_Ss_Dead_Ds +ovl_Effect_Ss_Dead_Sound +ovl_Effect_Ss_Dt_Bubble +ovl_Effect_Ss_Dust +ovl_Effect_Ss_En_Fire +ovl_Effect_Ss_En_Ice +ovl_Effect_Ss_Extra +ovl_Effect_Ss_Fcircle +ovl_Effect_Ss_Fhg_Flash +ovl_Effect_Ss_Fire_Tail +ovl_Effect_Ss_G_Fire +ovl_Effect_Ss_G_Magma +ovl_Effect_Ss_G_Magma2 +ovl_Effect_Ss_G_Ripple +ovl_Effect_Ss_G_Spk +ovl_Effect_Ss_G_Splash +ovl_Effect_Ss_Hahen +ovl_Effect_Ss_HitMark +ovl_Effect_Ss_Ice_Piece +ovl_Effect_Ss_Ice_Smoke +ovl_Effect_Ss_K_Fire +ovl_Effect_Ss_Kakera +ovl_Effect_Ss_KiraKira +ovl_Effect_Ss_Lightning +ovl_Effect_Ss_Sibuki +ovl_Effect_Ss_Sibuki2 +ovl_Effect_Ss_Solder_Srch_Ball +ovl_Effect_Ss_Stick +ovl_Effect_Ss_Stone1 +ovl_Elf_Msg +ovl_Elf_Msg2 +ovl_En_Am +ovl_En_Ani +ovl_En_Anubice +ovl_En_Anubice_Fire +ovl_En_Anubice_Tag +ovl_En_Arow_Trap +ovl_En_Arrow +ovl_En_Attack_Niw +ovl_En_Ba +ovl_En_Bb +ovl_En_Bdfire +ovl_En_Bigokuta +ovl_En_Bili +ovl_En_Bird +ovl_En_Blkobj +ovl_En_Bom +ovl_En_Bom_Bowl_Man +ovl_En_Bom_Bowl_Pit +ovl_En_Bom_Chu +ovl_En_Bombf +ovl_En_Boom +ovl_En_Box +ovl_En_Brob +ovl_En_Bubble +ovl_En_Butte +ovl_En_Bw +ovl_En_Bx +ovl_En_Changer +ovl_En_Clear_Tag +ovl_En_Cow +ovl_En_Crow +ovl_En_Cs +ovl_En_Daiku +ovl_En_Daiku_Kakariko +ovl_En_Dekubaba +ovl_En_Dekunuts +ovl_En_Dh +ovl_En_Dha +ovl_En_Diving_Game +ovl_En_Dns +ovl_En_Dnt_Demo +ovl_En_Dnt_Jiji +ovl_En_Dnt_Nomal +ovl_En_Dodojr +ovl_En_Dodongo +ovl_En_Dog +ovl_En_Door +ovl_En_Ds +ovl_En_Du +ovl_En_Dy_Extra +ovl_En_Eg +ovl_En_Eiyer +ovl_En_Elf +ovl_En_Encount1 +ovl_En_Encount2 +ovl_En_Ex_Item +ovl_En_Ex_Ruppy +ovl_En_Fd +ovl_En_Fd_Fire +ovl_En_Fhg_Fire +ovl_En_Fire_Rock +ovl_En_Firefly +ovl_En_Fish +ovl_En_Floormas +ovl_En_Fr +ovl_En_Fu +ovl_En_Fw +ovl_En_Fz +ovl_En_G_Switch +ovl_En_Ganon_Mant +ovl_En_Ganon_Organ +ovl_En_Gb +ovl_En_Ge1 +ovl_En_Ge2 +ovl_En_Ge3 +ovl_En_GeldB +ovl_En_GirlA +ovl_En_Gm +ovl_En_Go +ovl_En_Go2 +ovl_En_Goma +ovl_En_Goroiwa +ovl_En_Gs +ovl_En_Guest +ovl_En_Hata +ovl_En_Heishi1 +ovl_En_Heishi2 +ovl_En_Heishi3 +ovl_En_Heishi4 +ovl_En_Hintnuts +ovl_En_Holl +ovl_En_Honotrap +ovl_En_Horse +ovl_En_Horse_Game_Check +ovl_En_Horse_Ganon +ovl_En_Horse_Link_Child +ovl_En_Horse_Normal +ovl_En_Horse_Zelda +ovl_En_Hs +ovl_En_Hs2 +ovl_En_Hy +ovl_En_Ice_Hono +ovl_En_Ik +ovl_En_In +ovl_En_Insect +ovl_En_Ishi +ovl_En_It +ovl_En_Jj +ovl_En_Js +ovl_En_Jsjutan +ovl_En_Kakasi +ovl_En_Kakasi2 +ovl_En_Kakasi3 +ovl_En_Kanban +ovl_En_Karebaba +ovl_En_Ko +ovl_En_Kusa +ovl_En_Kz +ovl_En_Light +ovl_En_Lightbox +ovl_En_M_Fire1 +ovl_En_M_Thunder +ovl_En_Ma1 +ovl_En_Ma2 +ovl_En_Ma3 +ovl_En_Mag +ovl_En_Mb +ovl_En_Md +ovl_En_Mk +ovl_En_Mm +ovl_En_Mm2 +ovl_En_Ms +ovl_En_Mu +ovl_En_Nb +ovl_En_Niw +ovl_En_Niw_Girl +ovl_En_Niw_Lady +ovl_En_Nutsball +ovl_En_Nwc +ovl_En_Ny +ovl_En_OE2 +ovl_En_Okarina_Effect +ovl_En_Okarina_Tag +ovl_En_Okuta +ovl_En_Ossan +ovl_En_Owl +ovl_En_Part +ovl_En_Peehat +ovl_En_Po_Desert +ovl_En_Po_Field +ovl_En_Po_Relay +ovl_En_Po_Sisters +ovl_En_Poh +ovl_En_Pu_box +ovl_En_Rd +ovl_En_Reeba +ovl_En_River_Sound +ovl_En_Rl +ovl_En_Rr +ovl_En_Ru1 +ovl_En_Ru2 +ovl_En_Sa +ovl_En_Sb +ovl_En_Scene_Change +ovl_En_Sda +ovl_En_Shopnuts +ovl_En_Si +ovl_En_Siofuki +ovl_En_Skb +ovl_En_Skj +ovl_En_Skjneedle +ovl_En_Ssh +ovl_En_St +ovl_En_Sth +ovl_En_Stream +ovl_En_Sw +ovl_En_Syateki_Itm +ovl_En_Syateki_Man +ovl_En_Syateki_Niw +ovl_En_Ta +ovl_En_Takara_Man +ovl_En_Tana +ovl_En_Tg +ovl_En_Tite +ovl_En_Tk +ovl_En_Torch +ovl_En_Torch2 +ovl_En_Toryo +ovl_En_Tp +ovl_En_Tr +ovl_En_Trap +ovl_En_Tubo_Trap +ovl_En_Vali +ovl_En_Vase +ovl_En_Vb_Ball +ovl_En_Viewer +ovl_En_Vm +ovl_En_Wall_Tubo +ovl_En_Wallmas +ovl_En_Weather_Tag +ovl_En_Weiyer +ovl_En_Wf +ovl_En_Wonder_Item +ovl_En_Wonder_Talk +ovl_En_Wonder_Talk2 +ovl_En_Wood02 +ovl_En_Xc +ovl_En_Yabusame_Mark +ovl_En_Yukabyun +ovl_En_Zf +ovl_En_Zl1 +ovl_En_Zl2 +ovl_En_Zl3 +ovl_En_Zl4 +ovl_En_Zo +ovl_En_fHG +ovl_End_Title +ovl_Fishing +ovl_Item_B_Heart +ovl_Item_Etcetera +ovl_Item_Inbox +ovl_Item_Ocarina +ovl_Item_Shield +ovl_Magic_Dark +ovl_Magic_Fire +ovl_Magic_Wind +ovl_Mir_Ray +ovl_Obj_Bean +ovl_Obj_Blockstop +ovl_Obj_Bombiwa +ovl_Obj_Comb +ovl_Obj_Dekujr +ovl_Obj_Elevator +ovl_Obj_Hamishi +ovl_Obj_Hana +ovl_Obj_Hsblock +ovl_Obj_Ice_Poly +ovl_Obj_Kibako +ovl_Obj_Kibako2 +ovl_Obj_Lift +ovl_Obj_Lightswitch +ovl_Obj_Makekinsuta +ovl_Obj_Makeoshihiki +ovl_Obj_Mure +ovl_Obj_Mure2 +ovl_Obj_Mure3 +ovl_Obj_Oshihiki +ovl_Obj_Roomtimer +ovl_Obj_Switch +ovl_Obj_Syokudai +ovl_Obj_Timeblock +ovl_Obj_Tsubo +ovl_Obj_Warp2block +ovl_Object_Kankyo +ovl_Oceff_Spot +ovl_Oceff_Storm +ovl_Oceff_Wipe +ovl_Oceff_Wipe2 +ovl_Oceff_Wipe3 +ovl_Oceff_Wipe4 +ovl_Shot_Sun +gameplay_keep +gameplay_field_keep +gameplay_dangeon_keep +gameplay_object_exchange_static +object_link_boy +object_link_child +object_box +object_human +object_okuta +object_poh +object_wallmaster +object_dy_obj +object_firefly +object_dodongo +object_fire +object_niw +object_tite +object_reeba +object_peehat +object_kingdodongo +object_horse +object_zf +object_goma +object_zl1 +object_gol +object_bubble +object_dodojr +object_torch2 +object_bl +object_tp +object_oA1 +object_st +object_bw +object_ei +object_horse_normal +object_oB1 +object_o_anime +object_spot04_objects +object_ddan_objects +object_hidan_objects +object_horse_ganon +object_oA2 +object_spot00_objects +object_mb +object_bombf +object_sk2 +object_oE1 +object_oE_anime +object_oE2 +object_ydan_objects +object_gnd +object_am +object_dekubaba +object_oA3 +object_oA4 +object_oA5 +object_oA6 +object_oA7 +object_jj +object_oA8 +object_oA9 +object_oB2 +object_oB3 +object_oB4 +object_horse_zelda +object_opening_demo1 +object_warp1 +object_b_heart +object_dekunuts +object_oE3 +object_oE4 +object_menkuri_objects +object_oE5 +object_oE6 +object_oE7 +object_oE8 +object_oE9 +object_oE10 +object_oE11 +object_oE12 +object_vali +object_oA10 +object_oA11 +object_mizu_objects +object_fhg +object_ossan +object_mori_hineri1 +object_Bb +object_toki_objects +object_yukabyun +object_zl2 +object_mjin +object_mjin_flash +object_mjin_dark +object_mjin_flame +object_mjin_ice +object_mjin_soul +object_mjin_wind +object_mjin_oka +object_haka_objects +object_spot06_objects +object_ice_objects +object_relay_objects +object_mori_hineri1a +object_mori_hineri2 +object_mori_hineri2a +object_mori_objects +object_mori_tex +object_spot08_obj +object_warp2 +object_hata +object_bird +object_wood02 +object_lightbox +object_pu_box +object_trap +object_vase +object_im +object_ta +object_tk +object_xc +object_vm +object_bv +object_hakach_objects +object_efc_crystal_light +object_efc_fire_ball +object_efc_flash +object_efc_lgt_shower +object_efc_star_field +object_god_lgt +object_light_ring +object_triforce_spot +object_medal +object_bdan_objects +object_sd +object_rd +object_po_sisters +object_heavy_object +object_gndd +object_fd +object_du +object_fw +object_horse_link_child +object_spot02_objects +object_haka +object_ru1 +object_syokudai +object_fd2 +object_dh +object_rl +object_efc_tw +object_demo_tre_lgt +object_gi_key +object_mir_ray +object_brob +object_gi_jewel +object_spot09_obj +object_spot18_obj +object_bdoor +object_spot17_obj +object_shop_dungen +object_nb +object_mo +object_sb +object_gi_melody +object_gi_heart +object_gi_compass +object_gi_bosskey +object_gi_medal +object_gi_nuts +object_sa +object_gi_hearts +object_gi_arrowcase +object_gi_bombpouch +object_in +object_tr +object_spot16_obj +object_oE1s +object_oE4s +object_os_anime +object_gi_bottle +object_gi_stick +object_gi_map +object_oF1d_map +object_ru2 +object_gi_shield_1 +object_dekujr +object_gi_magicpot +object_gi_bomb_1 +object_oF1s +object_ma2 +object_gi_purse +object_hni +object_tw +object_rr +object_bxa +object_anubice +object_gi_gerudo +object_gi_arrow +object_gi_bomb_2 +object_gi_egg +object_gi_scale +object_gi_shield_2 +object_gi_hookshot +object_gi_ocarina +object_gi_milk +object_ma1 +object_ganon +object_sst +object_ny +object_fr +object_gi_pachinko +object_gi_boomerang +object_gi_bow +object_gi_glasses +object_gi_liquid +object_ani +object_demo_6k +object_gi_shield_3 +object_gi_letter +object_spot15_obj +object_jya_obj +object_gi_clothes +object_gi_bean +object_gi_fish +object_gi_saw +object_gi_hammer +object_gi_grass +object_gi_longsword +object_spot01_objects +object_md +object_km1 +object_kw1 +object_zo +object_kz +object_umajump +object_masterkokiri +object_masterkokirihead +object_mastergolon +object_masterzoora +object_aob +object_ik +object_ahg +object_cne +object_gi_niwatori +object_skj +object_gi_bottle_letter +object_bji +object_bba +object_gi_ocarina_0 +object_ds +object_ane +object_boj +object_spot03_object +object_spot07_object +object_fz +object_bob +object_ge1 +object_yabusame_point +object_gi_boots_2 +object_gi_seed +object_gnd_magic +object_d_elevator +object_d_hsblock +object_d_lift +object_mamenoki +object_goroiwa +object_toryo +object_daiku +object_nwc +object_blkobj +object_gm +object_ms +object_hs +object_ingate +object_lightswitch +object_kusa +object_tsubo +object_gi_gloves +object_gi_coin +object_kanban +object_gjyo_objects +object_owl +object_mk +object_fu +object_gi_ki_tan_mask +object_gi_redead_mask +object_gi_skj_mask +object_gi_rabit_mask +object_gi_truth_mask +object_ganon_objects +object_siofuki +object_stream +object_mm +object_fa +object_os +object_gi_eye_lotion +object_gi_powder +object_gi_mushroom +object_gi_ticketstone +object_gi_brokensword +object_js +object_cs +object_gi_prescription +object_gi_bracelet +object_gi_soldout +object_gi_frog +object_mag +object_door_gerudo +object_gt +object_efc_erupc +object_zl2_anime1 +object_zl2_anime2 +object_gi_golonmask +object_gi_zoramask +object_gi_gerudomask +object_ganon2 +object_ka +object_ts +object_zg +object_gi_hoverboots +object_gi_m_arrow +object_ds2 +object_ec +object_fish +object_gi_sutaru +object_gi_goddess +object_ssh +object_bigokuta +object_bg +object_spot05_objects +object_spot12_obj +object_bombiwa +object_hintnuts +object_rs +object_spot00_break +object_gla +object_shopnuts +object_geldb +object_gr +object_dog +object_jya_iron +object_jya_door +object_spot01_objects2 +object_spot11_obj +object_kibako2 +object_dns +object_dnk +object_gi_fire +object_gi_insect +object_gi_butterfly +object_gi_ghost +object_gi_soul +object_bowl +object_po_field +object_demo_kekkai +object_efc_doughnut +object_gi_dekupouch +object_ganon_anime1 +object_ganon_anime2 +object_ganon_anime3 +object_gi_rupy +object_spot01_matoya +object_spot01_matoyab +object_po_composer +object_mu +object_wf +object_skb +object_gj +object_geff +object_haka_door +object_gs +object_ps +object_bwall +object_crow +object_cow +object_cob +object_gi_sword_1 +object_door_killer +object_ouke_haka +object_timeblock +object_zl4 +g_pn_01 +g_pn_02 +g_pn_03 +g_pn_04 +g_pn_05 +g_pn_06 +g_pn_07 +g_pn_08 +g_pn_09 +g_pn_10 +g_pn_11 +g_pn_12 +g_pn_13 +g_pn_14 +g_pn_15 +g_pn_16 +g_pn_17 +g_pn_18 +g_pn_19 +g_pn_20 +g_pn_21 +g_pn_22 +g_pn_23 +g_pn_24 +g_pn_25 +g_pn_26 +g_pn_27 +g_pn_28 +g_pn_29 +g_pn_30 +g_pn_31 +g_pn_32 +g_pn_33 +g_pn_34 +g_pn_35 +g_pn_36 +g_pn_37 +g_pn_38 +g_pn_39 +g_pn_40 +g_pn_41 +g_pn_42 +g_pn_43 +g_pn_44 +g_pn_45 +g_pn_46 +g_pn_47 +g_pn_48 +g_pn_49 +g_pn_50 +g_pn_51 +g_pn_52 +g_pn_53 +g_pn_54 +g_pn_55 +g_pn_56 +g_pn_57 +z_select_static +nintendo_rogo_static +title_static +parameter_static +vr_fine0_static +vr_fine0_pal_static +vr_fine1_static +vr_fine1_pal_static +vr_fine2_static +vr_fine2_pal_static +vr_fine3_static +vr_fine3_pal_static +vr_cloud0_static +vr_cloud0_pal_static +vr_cloud1_static +vr_cloud1_pal_static +vr_cloud2_static +vr_cloud2_pal_static +vr_cloud3_static +vr_cloud3_pal_static +vr_holy0_static +vr_holy0_pal_static +vr_holy1_static +vr_holy1_pal_static +vr_MDVR_static +vr_MDVR_pal_static +vr_MNVR_static +vr_MNVR_pal_static +vr_RUVR_static +vr_RUVR_pal_static +vr_LHVR_static +vr_LHVR_pal_static +vr_KHVR_static +vr_KHVR_pal_static +vr_K3VR_static +vr_K3VR_pal_static +vr_K4VR_static +vr_K4VR_pal_static +vr_K5VR_static +vr_K5VR_pal_static +vr_SP1a_static +vr_SP1a_pal_static +vr_MLVR_static +vr_MLVR_pal_static +vr_KKRVR_static +vr_KKRVR_pal_static +vr_KR3VR_static +vr_KR3VR_pal_static +vr_IPVR_static +vr_IPVR_pal_static +vr_KSVR_static +vr_KSVR_pal_static +vr_GLVR_static +vr_GLVR_pal_static +vr_ZRVR_static +vr_ZRVR_pal_static +vr_DGVR_static +vr_DGVR_pal_static +vr_ALVR_static +vr_ALVR_pal_static +vr_NSVR_static +vr_NSVR_pal_static +vr_LBVR_static +vr_LBVR_pal_static +vr_TTVR_static +vr_TTVR_pal_static +vr_FCVR_static +vr_FCVR_pal_static +elf_message_field +elf_message_ydan +syotes_scene +syotes_room_0 +syotes2_scene +syotes2_room_0 +depth_test_scene +depth_test_room_0 +spot00_scene +spot00_room_0 +spot01_scene +spot01_room_0 +spot02_scene +spot02_room_0 +spot02_room_1 +spot03_scene +spot03_room_0 +spot03_room_1 +spot04_scene +spot04_room_0 +spot04_room_1 +spot04_room_2 +spot05_scene +spot05_room_0 +spot06_scene +spot06_room_0 +spot07_scene +spot07_room_0 +spot07_room_1 +spot08_scene +spot08_room_0 +spot09_scene +spot09_room_0 +spot10_scene +spot10_room_0 +spot10_room_1 +spot10_room_2 +spot10_room_3 +spot10_room_4 +spot10_room_5 +spot10_room_6 +spot10_room_7 +spot10_room_8 +spot10_room_9 +spot11_scene +spot11_room_0 +spot12_scene +spot12_room_0 +spot12_room_1 +spot13_scene +spot13_room_0 +spot13_room_1 +spot15_scene +spot15_room_0 +spot16_scene +spot16_room_0 +spot17_scene +spot17_room_0 +spot17_room_1 +spot18_scene +spot18_room_0 +spot18_room_1 +spot18_room_2 +spot18_room_3 +ydan_scene +ydan_room_0 +ydan_room_1 +ydan_room_2 +ydan_room_3 +ydan_room_4 +ydan_room_5 +ydan_room_6 +ydan_room_7 +ydan_room_8 +ydan_room_9 +ydan_room_10 +ydan_room_11 +ddan_scene +ddan_room_0 +ddan_room_1 +ddan_room_2 +ddan_room_3 +ddan_room_4 +ddan_room_5 +ddan_room_6 +ddan_room_7 +ddan_room_8 +ddan_room_9 +ddan_room_10 +ddan_room_11 +ddan_room_12 +ddan_room_13 +ddan_room_14 +ddan_room_15 +ddan_room_16 +bdan_scene +bdan_room_0 +bdan_room_1 +bdan_room_2 +bdan_room_3 +bdan_room_4 +bdan_room_5 +bdan_room_6 +bdan_room_7 +bdan_room_8 +bdan_room_9 +bdan_room_10 +bdan_room_11 +bdan_room_12 +bdan_room_13 +bdan_room_14 +bdan_room_15 +Bmori1_scene +Bmori1_room_0 +Bmori1_room_1 +Bmori1_room_2 +Bmori1_room_3 +Bmori1_room_4 +Bmori1_room_5 +Bmori1_room_6 +Bmori1_room_7 +Bmori1_room_8 +Bmori1_room_9 +Bmori1_room_10 +Bmori1_room_11 +Bmori1_room_12 +Bmori1_room_13 +Bmori1_room_14 +Bmori1_room_15 +Bmori1_room_16 +Bmori1_room_17 +Bmori1_room_18 +Bmori1_room_19 +Bmori1_room_20 +Bmori1_room_21 +Bmori1_room_22 +HIDAN_scene +HIDAN_room_0 +HIDAN_room_1 +HIDAN_room_2 +HIDAN_room_3 +HIDAN_room_4 +HIDAN_room_5 +HIDAN_room_6 +HIDAN_room_7 +HIDAN_room_8 +HIDAN_room_9 +HIDAN_room_10 +HIDAN_room_11 +HIDAN_room_12 +HIDAN_room_13 +HIDAN_room_14 +HIDAN_room_15 +HIDAN_room_16 +HIDAN_room_17 +HIDAN_room_18 +HIDAN_room_19 +HIDAN_room_20 +HIDAN_room_21 +HIDAN_room_22 +HIDAN_room_23 +HIDAN_room_24 +HIDAN_room_25 +HIDAN_room_26 +MIZUsin_scene +MIZUsin_room_0 +MIZUsin_room_1 +MIZUsin_room_2 +MIZUsin_room_3 +MIZUsin_room_4 +MIZUsin_room_5 +MIZUsin_room_6 +MIZUsin_room_7 +MIZUsin_room_8 +MIZUsin_room_9 +MIZUsin_room_10 +MIZUsin_room_11 +MIZUsin_room_12 +MIZUsin_room_13 +MIZUsin_room_14 +MIZUsin_room_15 +MIZUsin_room_16 +MIZUsin_room_17 +MIZUsin_room_18 +MIZUsin_room_19 +MIZUsin_room_20 +MIZUsin_room_21 +MIZUsin_room_22 +jyasinzou_scene +jyasinzou_room_0 +jyasinzou_room_1 +jyasinzou_room_2 +jyasinzou_room_3 +jyasinzou_room_4 +jyasinzou_room_5 +jyasinzou_room_6 +jyasinzou_room_7 +jyasinzou_room_8 +jyasinzou_room_9 +jyasinzou_room_10 +jyasinzou_room_11 +jyasinzou_room_12 +jyasinzou_room_13 +jyasinzou_room_14 +jyasinzou_room_15 +jyasinzou_room_16 +jyasinzou_room_17 +jyasinzou_room_18 +jyasinzou_room_19 +jyasinzou_room_20 +jyasinzou_room_21 +jyasinzou_room_22 +jyasinzou_room_23 +jyasinzou_room_24 +jyasinzou_room_25 +jyasinzou_room_26 +jyasinzou_room_27 +jyasinzou_room_28 +HAKAdan_scene +HAKAdan_room_0 +HAKAdan_room_1 +HAKAdan_room_2 +HAKAdan_room_3 +HAKAdan_room_4 +HAKAdan_room_5 +HAKAdan_room_6 +HAKAdan_room_7 +HAKAdan_room_8 +HAKAdan_room_9 +HAKAdan_room_10 +HAKAdan_room_11 +HAKAdan_room_12 +HAKAdan_room_13 +HAKAdan_room_14 +HAKAdan_room_15 +HAKAdan_room_16 +HAKAdan_room_17 +HAKAdan_room_18 +HAKAdan_room_19 +HAKAdan_room_20 +HAKAdan_room_21 +HAKAdan_room_22 +HAKAdanCH_scene +HAKAdanCH_room_0 +HAKAdanCH_room_1 +HAKAdanCH_room_2 +HAKAdanCH_room_3 +HAKAdanCH_room_4 +HAKAdanCH_room_5 +HAKAdanCH_room_6 +ice_doukutu_scene +ice_doukutu_room_0 +ice_doukutu_room_1 +ice_doukutu_room_2 +ice_doukutu_room_3 +ice_doukutu_room_4 +ice_doukutu_room_5 +ice_doukutu_room_6 +ice_doukutu_room_7 +ice_doukutu_room_8 +ice_doukutu_room_9 +ice_doukutu_room_10 +ice_doukutu_room_11 +men_scene +men_room_0 +men_room_1 +men_room_2 +men_room_3 +men_room_4 +men_room_5 +men_room_6 +men_room_7 +men_room_8 +men_room_9 +men_room_10 +ganontika_scene +ganontika_room_0 +ganontika_room_1 +ganontika_room_2 +ganontika_room_3 +ganontika_room_4 +ganontika_room_5 +ganontika_room_6 +ganontika_room_7 +ganontika_room_8 +ganontika_room_9 +ganontika_room_10 +ganontika_room_11 +ganontika_room_12 +ganontika_room_13 +ganontika_room_14 +ganontika_room_15 +ganontika_room_16 +ganontika_room_17 +ganontika_room_18 +ganontika_room_19 +market_day_scene +market_day_room_0 +market_night_scene +market_night_room_0 +testroom_scene +testroom_room_0 +testroom_room_1 +testroom_room_2 +testroom_room_3 +testroom_room_4 +kenjyanoma_scene +kenjyanoma_room_0 +tokinoma_scene +tokinoma_room_0 +tokinoma_room_1 +sutaru_scene +sutaru_room_0 +link_home_scene +link_home_room_0 +kokiri_shop_scene +kokiri_shop_room_0 +kokiri_home_scene +kokiri_home_room_0 +kakusiana_scene +kakusiana_room_0 +kakusiana_room_1 +kakusiana_room_2 +kakusiana_room_3 +kakusiana_room_4 +kakusiana_room_5 +kakusiana_room_6 +kakusiana_room_7 +kakusiana_room_8 +kakusiana_room_9 +kakusiana_room_10 +kakusiana_room_11 +kakusiana_room_12 +kakusiana_room_13 +entra_scene +entra_room_0 +moribossroom_scene +moribossroom_room_0 +moribossroom_room_1 +syatekijyou_scene +syatekijyou_room_0 +shop1_scene +shop1_room_0 +hairal_niwa_scene +hairal_niwa_room_0 +ganon_tou_scene +ganon_tou_room_0 +sasatest_scene +sasatest_room_0 +market_alley_scene +market_alley_room_0 +spot20_scene +spot20_room_0 +market_ruins_scene +market_ruins_room_0 +entra_n_scene +entra_n_room_0 +enrui_scene +enrui_room_0 +market_alley_n_scene +market_alley_n_room_0 +hiral_demo_scene +hiral_demo_room_0 +kokiri_home3_scene +kokiri_home3_room_0 +malon_stable_scene +malon_stable_room_0 +kakariko_scene +kakariko_room_0 +bdan_boss_scene +bdan_boss_room_0 +bdan_boss_room_1 +FIRE_bs_scene +FIRE_bs_room_0 +FIRE_bs_room_1 +hut_scene +hut_room_0 +daiyousei_izumi_scene +daiyousei_izumi_room_0 +hakaana_scene +hakaana_room_0 +yousei_izumi_tate_scene +yousei_izumi_tate_room_0 +yousei_izumi_yoko_scene +yousei_izumi_yoko_room_0 +golon_scene +golon_room_0 +zoora_scene +zoora_room_0 +drag_scene +drag_room_0 +alley_shop_scene +alley_shop_room_0 +night_shop_scene +night_shop_room_0 +impa_scene +impa_room_0 +labo_scene +labo_room_0 +tent_scene +tent_room_0 +nakaniwa_scene +nakaniwa_room_0 +ddan_boss_scene +ddan_boss_room_0 +ddan_boss_room_1 +ydan_boss_scene +ydan_boss_room_0 +ydan_boss_room_1 +HAKAdan_bs_scene +HAKAdan_bs_room_0 +HAKAdan_bs_room_1 +MIZUsin_bs_scene +MIZUsin_bs_room_0 +MIZUsin_bs_room_1 +ganon_scene +ganon_room_0 +ganon_room_1 +ganon_room_2 +ganon_room_3 +ganon_room_4 +ganon_room_5 +ganon_room_6 +ganon_room_7 +ganon_room_8 +ganon_room_9 +ganon_boss_scene +ganon_boss_room_0 +jyasinboss_scene +jyasinboss_room_0 +jyasinboss_room_1 +jyasinboss_room_2 +jyasinboss_room_3 +kokiri_home4_scene +kokiri_home4_room_0 +kokiri_home5_scene +kokiri_home5_room_0 +ganon_final_scene +ganon_final_room_0 +kakariko3_scene +kakariko3_room_0 +hairal_niwa2_scene +hairal_niwa2_room_0 +hakasitarelay_scene +hakasitarelay_room_0 +hakasitarelay_room_1 +hakasitarelay_room_2 +hakasitarelay_room_3 +hakasitarelay_room_4 +hakasitarelay_room_5 +hakasitarelay_room_6 +shrine_scene +shrine_room_0 +turibori_scene +turibori_room_0 +shrine_n_scene +shrine_n_room_0 +shrine_r_scene +shrine_r_room_0 +hakaana2_scene +hakaana2_room_0 +gerudoway_scene +gerudoway_room_0 +gerudoway_room_1 +gerudoway_room_2 +gerudoway_room_3 +gerudoway_room_4 +gerudoway_room_5 +hairal_niwa_n_scene +hairal_niwa_n_room_0 +bowling_scene +bowling_room_0 +hakaana_ouke_scene +hakaana_ouke_room_0 +hakaana_ouke_room_1 +hakaana_ouke_room_2 +hylia_labo_scene +hylia_labo_room_0 +souko_scene +souko_room_0 +souko_room_1 +souko_room_2 +miharigoya_scene +miharigoya_room_0 +mahouya_scene +mahouya_room_0 +takaraya_scene +takaraya_room_0 +takaraya_room_1 +takaraya_room_2 +takaraya_room_3 +takaraya_room_4 +takaraya_room_5 +takaraya_room_6 +ganon_sonogo_scene +ganon_sonogo_room_0 +ganon_sonogo_room_1 +ganon_sonogo_room_2 +ganon_sonogo_room_3 +ganon_sonogo_room_4 +ganon_demo_scene +ganon_demo_room_0 +besitu_scene +besitu_room_0 +face_shop_scene +face_shop_room_0 +kinsuta_scene +kinsuta_room_0 +ganontikasonogo_scene +ganontikasonogo_room_0 +ganontikasonogo_room_1 +test01_scene +test01_room_0 +bump_texture_static +anime_model_1_static +anime_model_2_static +anime_model_3_static +anime_model_4_static +anime_model_5_static +anime_model_6_static +anime_texture_1_static +anime_texture_2_static +anime_texture_3_static +anime_texture_4_static +anime_texture_5_static +anime_texture_6_static +softsprite_matrix_static \ No newline at end of file diff --git a/OTRExporter/CFG/filelists/gamecube.txt b/OTRExporter/CFG/filelists/gamecube.txt new file mode 100644 index 000000000..23794e1f6 --- /dev/null +++ b/OTRExporter/CFG/filelists/gamecube.txt @@ -0,0 +1,1509 @@ +makerom +boot +dmadata +Audiobank +Audioseq +Audiotable +kanji +link_animetion +icon_item_static +icon_item_24_static +icon_item_field_static +icon_item_dungeon_static +icon_item_gameover_static +icon_item_jpn_static +icon_item_nes_static +item_name_static +map_name_static +do_action_static +message_static +message_texture_static +nes_font_static +jpn_message_data_static +nes_message_data_static +staff_message_data_static +map_grand_static +map_48x85_static +map_i_static +code +ovl_title +ovl_select +ovl_opening +ovl_file_choose +ovl_kaleido_scope +ovl_player_actor +ovl_map_mark_data +ovl_En_Test +ovl_Arms_Hook +ovl_Arrow_Fire +ovl_Arrow_Ice +ovl_Arrow_Light +ovl_Bg_Bdan_Objects +ovl_Bg_Bdan_Switch +ovl_Bg_Bom_Guard +ovl_Bg_Bombwall +ovl_Bg_Bowl_Wall +ovl_Bg_Breakwall +ovl_Bg_Ddan_Jd +ovl_Bg_Ddan_Kd +ovl_Bg_Dodoago +ovl_Bg_Dy_Yoseizo +ovl_Bg_Ganon_Otyuka +ovl_Bg_Gate_Shutter +ovl_Bg_Gjyo_Bridge +ovl_Bg_Gnd_Darkmeiro +ovl_Bg_Gnd_Firemeiro +ovl_Bg_Gnd_Iceblock +ovl_Bg_Gnd_Nisekabe +ovl_Bg_Gnd_Soulmeiro +ovl_Bg_Haka +ovl_Bg_Haka_Gate +ovl_Bg_Haka_Huta +ovl_Bg_Haka_Megane +ovl_Bg_Haka_MeganeBG +ovl_Bg_Haka_Sgami +ovl_Bg_Haka_Ship +ovl_Bg_Haka_Trap +ovl_Bg_Haka_Tubo +ovl_Bg_Haka_Water +ovl_Bg_Haka_Zou +ovl_Bg_Heavy_Block +ovl_Bg_Hidan_Curtain +ovl_Bg_Hidan_Dalm +ovl_Bg_Hidan_Firewall +ovl_Bg_Hidan_Fslift +ovl_Bg_Hidan_Fwbig +ovl_Bg_Hidan_Hamstep +ovl_Bg_Hidan_Hrock +ovl_Bg_Hidan_Kousi +ovl_Bg_Hidan_Kowarerukabe +ovl_Bg_Hidan_Rock +ovl_Bg_Hidan_Rsekizou +ovl_Bg_Hidan_Sekizou +ovl_Bg_Hidan_Sima +ovl_Bg_Hidan_Syoku +ovl_Bg_Ice_Objects +ovl_Bg_Ice_Shelter +ovl_Bg_Ice_Shutter +ovl_Bg_Ice_Turara +ovl_Bg_Ingate +ovl_Bg_Jya_1flift +ovl_Bg_Jya_Amishutter +ovl_Bg_Jya_Bigmirror +ovl_Bg_Jya_Block +ovl_Bg_Jya_Bombchuiwa +ovl_Bg_Jya_Bombiwa +ovl_Bg_Jya_Cobra +ovl_Bg_Jya_Goroiwa +ovl_Bg_Jya_Haheniron +ovl_Bg_Jya_Ironobj +ovl_Bg_Jya_Kanaami +ovl_Bg_Jya_Lift +ovl_Bg_Jya_Megami +ovl_Bg_Jya_Zurerukabe +ovl_Bg_Menkuri_Eye +ovl_Bg_Menkuri_Kaiten +ovl_Bg_Menkuri_Nisekabe +ovl_Bg_Mizu_Bwall +ovl_Bg_Mizu_Movebg +ovl_Bg_Mizu_Shutter +ovl_Bg_Mizu_Uzu +ovl_Bg_Mizu_Water +ovl_Bg_Mjin +ovl_Bg_Mori_Bigst +ovl_Bg_Mori_Elevator +ovl_Bg_Mori_Hashigo +ovl_Bg_Mori_Hashira4 +ovl_Bg_Mori_Hineri +ovl_Bg_Mori_Idomizu +ovl_Bg_Mori_Kaitenkabe +ovl_Bg_Mori_Rakkatenjo +ovl_Bg_Po_Event +ovl_Bg_Po_Syokudai +ovl_Bg_Pushbox +ovl_Bg_Relay_Objects +ovl_Bg_Spot00_Break +ovl_Bg_Spot00_Hanebasi +ovl_Bg_Spot01_Fusya +ovl_Bg_Spot01_Idohashira +ovl_Bg_Spot01_Idomizu +ovl_Bg_Spot01_Idosoko +ovl_Bg_Spot01_Objects2 +ovl_Bg_Spot02_Objects +ovl_Bg_Spot03_Taki +ovl_Bg_Spot05_Soko +ovl_Bg_Spot06_Objects +ovl_Bg_Spot07_Taki +ovl_Bg_Spot08_Bakudankabe +ovl_Bg_Spot08_Iceblock +ovl_Bg_Spot09_Obj +ovl_Bg_Spot11_Bakudankabe +ovl_Bg_Spot11_Oasis +ovl_Bg_Spot12_Gate +ovl_Bg_Spot12_Saku +ovl_Bg_Spot15_Rrbox +ovl_Bg_Spot15_Saku +ovl_Bg_Spot16_Bombstone +ovl_Bg_Spot16_Doughnut +ovl_Bg_Spot17_Bakudankabe +ovl_Bg_Spot17_Funen +ovl_Bg_Spot18_Basket +ovl_Bg_Spot18_Futa +ovl_Bg_Spot18_Obj +ovl_Bg_Spot18_Shutter +ovl_Bg_Sst_Floor +ovl_Bg_Toki_Hikari +ovl_Bg_Toki_Swd +ovl_Bg_Treemouth +ovl_Bg_Umajump +ovl_Bg_Vb_Sima +ovl_Bg_Ydan_Hasi +ovl_Bg_Ydan_Maruta +ovl_Bg_Ydan_Sp +ovl_Bg_Zg +ovl_Boss_Dodongo +ovl_Boss_Fd +ovl_Boss_Fd2 +ovl_Boss_Ganon +ovl_Boss_Ganon2 +ovl_Boss_Ganondrof +ovl_Boss_Goma +ovl_Boss_Mo +ovl_Boss_Sst +ovl_Boss_Tw +ovl_Boss_Va +ovl_Demo_6K +ovl_Demo_Du +ovl_Demo_Ec +ovl_Demo_Effect +ovl_Demo_Ext +ovl_Demo_Geff +ovl_Demo_Gj +ovl_Demo_Go +ovl_Demo_Gt +ovl_Demo_Ik +ovl_Demo_Im +ovl_Demo_Kankyo +ovl_Demo_Kekkai +ovl_Demo_Sa +ovl_Demo_Shd +ovl_Demo_Tre_Lgt +ovl_Door_Ana +ovl_Door_Gerudo +ovl_Door_Killer +ovl_Door_Shutter +ovl_Door_Toki +ovl_Door_Warp1 +ovl_Efc_Erupc +ovl_Eff_Dust +ovl_Effect_Ss_Blast +ovl_Effect_Ss_Bomb +ovl_Effect_Ss_Bomb2 +ovl_Effect_Ss_Bubble +ovl_Effect_Ss_D_Fire +ovl_Effect_Ss_Dead_Db +ovl_Effect_Ss_Dead_Dd +ovl_Effect_Ss_Dead_Ds +ovl_Effect_Ss_Dead_Sound +ovl_Effect_Ss_Dt_Bubble +ovl_Effect_Ss_Dust +ovl_Effect_Ss_En_Fire +ovl_Effect_Ss_En_Ice +ovl_Effect_Ss_Extra +ovl_Effect_Ss_Fcircle +ovl_Effect_Ss_Fhg_Flash +ovl_Effect_Ss_Fire_Tail +ovl_Effect_Ss_G_Fire +ovl_Effect_Ss_G_Magma +ovl_Effect_Ss_G_Magma2 +ovl_Effect_Ss_G_Ripple +ovl_Effect_Ss_G_Spk +ovl_Effect_Ss_G_Splash +ovl_Effect_Ss_Hahen +ovl_Effect_Ss_HitMark +ovl_Effect_Ss_Ice_Piece +ovl_Effect_Ss_Ice_Smoke +ovl_Effect_Ss_K_Fire +ovl_Effect_Ss_Kakera +ovl_Effect_Ss_KiraKira +ovl_Effect_Ss_Lightning +ovl_Effect_Ss_Sibuki +ovl_Effect_Ss_Sibuki2 +ovl_Effect_Ss_Solder_Srch_Ball +ovl_Effect_Ss_Stick +ovl_Effect_Ss_Stone1 +ovl_Elf_Msg +ovl_Elf_Msg2 +ovl_En_Am +ovl_En_Ani +ovl_En_Anubice +ovl_En_Anubice_Fire +ovl_En_Anubice_Tag +ovl_En_Arow_Trap +ovl_En_Arrow +ovl_En_Attack_Niw +ovl_En_Ba +ovl_En_Bb +ovl_En_Bdfire +ovl_En_Bigokuta +ovl_En_Bili +ovl_En_Bird +ovl_En_Blkobj +ovl_En_Bom +ovl_En_Bom_Bowl_Man +ovl_En_Bom_Bowl_Pit +ovl_En_Bom_Chu +ovl_En_Bombf +ovl_En_Boom +ovl_En_Box +ovl_En_Brob +ovl_En_Bubble +ovl_En_Butte +ovl_En_Bw +ovl_En_Bx +ovl_En_Changer +ovl_En_Clear_Tag +ovl_En_Cow +ovl_En_Crow +ovl_En_Cs +ovl_En_Daiku +ovl_En_Daiku_Kakariko +ovl_En_Dekubaba +ovl_En_Dekunuts +ovl_En_Dh +ovl_En_Dha +ovl_En_Diving_Game +ovl_En_Dns +ovl_En_Dnt_Demo +ovl_En_Dnt_Jiji +ovl_En_Dnt_Nomal +ovl_En_Dodojr +ovl_En_Dodongo +ovl_En_Dog +ovl_En_Door +ovl_En_Ds +ovl_En_Du +ovl_En_Dy_Extra +ovl_En_Eg +ovl_En_Eiyer +ovl_En_Elf +ovl_En_Encount1 +ovl_En_Encount2 +ovl_En_Ex_Item +ovl_En_Ex_Ruppy +ovl_En_Fd +ovl_En_Fd_Fire +ovl_En_Fhg_Fire +ovl_En_Fire_Rock +ovl_En_Firefly +ovl_En_Fish +ovl_En_Floormas +ovl_En_Fr +ovl_En_Fu +ovl_En_Fw +ovl_En_Fz +ovl_En_G_Switch +ovl_En_Ganon_Mant +ovl_En_Ganon_Organ +ovl_En_Gb +ovl_En_Ge1 +ovl_En_Ge2 +ovl_En_Ge3 +ovl_En_GeldB +ovl_En_GirlA +ovl_En_Gm +ovl_En_Go +ovl_En_Go2 +ovl_En_Goma +ovl_En_Goroiwa +ovl_En_Gs +ovl_En_Guest +ovl_En_Hata +ovl_En_Heishi1 +ovl_En_Heishi2 +ovl_En_Heishi3 +ovl_En_Heishi4 +ovl_En_Hintnuts +ovl_En_Holl +ovl_En_Honotrap +ovl_En_Horse +ovl_En_Horse_Game_Check +ovl_En_Horse_Ganon +ovl_En_Horse_Link_Child +ovl_En_Horse_Normal +ovl_En_Horse_Zelda +ovl_En_Hs +ovl_En_Hs2 +ovl_En_Hy +ovl_En_Ice_Hono +ovl_En_Ik +ovl_En_In +ovl_En_Insect +ovl_En_Ishi +ovl_En_It +ovl_En_Jj +ovl_En_Js +ovl_En_Jsjutan +ovl_En_Kakasi +ovl_En_Kakasi2 +ovl_En_Kakasi3 +ovl_En_Kanban +ovl_En_Karebaba +ovl_En_Ko +ovl_En_Kusa +ovl_En_Kz +ovl_En_Light +ovl_En_Lightbox +ovl_En_M_Fire1 +ovl_En_M_Thunder +ovl_En_Ma1 +ovl_En_Ma2 +ovl_En_Ma3 +ovl_En_Mag +ovl_En_Mb +ovl_En_Md +ovl_En_Mk +ovl_En_Mm +ovl_En_Mm2 +ovl_En_Ms +ovl_En_Mu +ovl_En_Nb +ovl_En_Niw +ovl_En_Niw_Girl +ovl_En_Niw_Lady +ovl_En_Nutsball +ovl_En_Nwc +ovl_En_Ny +ovl_En_OE2 +ovl_En_Okarina_Effect +ovl_En_Okarina_Tag +ovl_En_Okuta +ovl_En_Ossan +ovl_En_Owl +ovl_En_Part +ovl_En_Peehat +ovl_En_Po_Desert +ovl_En_Po_Field +ovl_En_Po_Relay +ovl_En_Po_Sisters +ovl_En_Poh +ovl_En_Pu_box +ovl_En_Rd +ovl_En_Reeba +ovl_En_River_Sound +ovl_En_Rl +ovl_En_Rr +ovl_En_Ru1 +ovl_En_Ru2 +ovl_En_Sa +ovl_En_Sb +ovl_En_Scene_Change +ovl_En_Sda +ovl_En_Shopnuts +ovl_En_Si +ovl_En_Siofuki +ovl_En_Skb +ovl_En_Skj +ovl_En_Skjneedle +ovl_En_Ssh +ovl_En_St +ovl_En_Sth +ovl_En_Stream +ovl_En_Sw +ovl_En_Syateki_Itm +ovl_En_Syateki_Man +ovl_En_Syateki_Niw +ovl_En_Ta +ovl_En_Takara_Man +ovl_En_Tana +ovl_En_Tg +ovl_En_Tite +ovl_En_Tk +ovl_En_Torch +ovl_En_Torch2 +ovl_En_Toryo +ovl_En_Tp +ovl_En_Tr +ovl_En_Trap +ovl_En_Tubo_Trap +ovl_En_Vali +ovl_En_Vase +ovl_En_Vb_Ball +ovl_En_Viewer +ovl_En_Vm +ovl_En_Wall_Tubo +ovl_En_Wallmas +ovl_En_Weather_Tag +ovl_En_Weiyer +ovl_En_Wf +ovl_En_Wonder_Item +ovl_En_Wonder_Talk +ovl_En_Wonder_Talk2 +ovl_En_Wood02 +ovl_En_Xc +ovl_En_Yabusame_Mark +ovl_En_Yukabyun +ovl_En_Zf +ovl_En_Zl1 +ovl_En_Zl2 +ovl_En_Zl3 +ovl_En_Zl4 +ovl_En_Zo +ovl_En_fHG +ovl_End_Title +ovl_Fishing +ovl_Item_B_Heart +ovl_Item_Etcetera +ovl_Item_Inbox +ovl_Item_Ocarina +ovl_Item_Shield +ovl_Magic_Dark +ovl_Magic_Fire +ovl_Magic_Wind +ovl_Mir_Ray +ovl_Obj_Bean +ovl_Obj_Blockstop +ovl_Obj_Bombiwa +ovl_Obj_Comb +ovl_Obj_Dekujr +ovl_Obj_Elevator +ovl_Obj_Hamishi +ovl_Obj_Hana +ovl_Obj_Hsblock +ovl_Obj_Ice_Poly +ovl_Obj_Kibako +ovl_Obj_Kibako2 +ovl_Obj_Lift +ovl_Obj_Lightswitch +ovl_Obj_Makekinsuta +ovl_Obj_Makeoshihiki +ovl_Obj_Mure +ovl_Obj_Mure2 +ovl_Obj_Mure3 +ovl_Obj_Oshihiki +ovl_Obj_Roomtimer +ovl_Obj_Switch +ovl_Obj_Syokudai +ovl_Obj_Timeblock +ovl_Obj_Tsubo +ovl_Obj_Warp2block +ovl_Object_Kankyo +ovl_Oceff_Spot +ovl_Oceff_Storm +ovl_Oceff_Wipe +ovl_Oceff_Wipe2 +ovl_Oceff_Wipe3 +ovl_Oceff_Wipe4 +ovl_Shot_Sun +gameplay_keep +gameplay_field_keep +gameplay_dangeon_keep +gameplay_object_exchange_static +object_link_boy +object_link_child +object_box +object_human +object_okuta +object_poh +object_wallmaster +object_dy_obj +object_firefly +object_dodongo +object_fire +object_niw +object_tite +object_reeba +object_peehat +object_kingdodongo +object_horse +object_zf +object_goma +object_zl1 +object_gol +object_bubble +object_dodojr +object_torch2 +object_bl +object_tp +object_oA1 +object_st +object_bw +object_ei +object_horse_normal +object_oB1 +object_o_anime +object_spot04_objects +object_ddan_objects +object_hidan_objects +object_horse_ganon +object_oA2 +object_spot00_objects +object_mb +object_bombf +object_sk2 +object_oE1 +object_oE_anime +object_oE2 +object_ydan_objects +object_gnd +object_am +object_dekubaba +object_oA3 +object_oA4 +object_oA5 +object_oA6 +object_oA7 +object_jj +object_oA8 +object_oA9 +object_oB2 +object_oB3 +object_oB4 +object_horse_zelda +object_opening_demo1 +object_warp1 +object_b_heart +object_dekunuts +object_oE3 +object_oE4 +object_menkuri_objects +object_oE5 +object_oE6 +object_oE7 +object_oE8 +object_oE9 +object_oE10 +object_oE11 +object_oE12 +object_vali +object_oA10 +object_oA11 +object_mizu_objects +object_fhg +object_ossan +object_mori_hineri1 +object_Bb +object_toki_objects +object_yukabyun +object_zl2 +object_mjin +object_mjin_flash +object_mjin_dark +object_mjin_flame +object_mjin_ice +object_mjin_soul +object_mjin_wind +object_mjin_oka +object_haka_objects +object_spot06_objects +object_ice_objects +object_relay_objects +object_mori_hineri1a +object_mori_hineri2 +object_mori_hineri2a +object_mori_objects +object_mori_tex +object_spot08_obj +object_warp2 +object_hata +object_bird +object_wood02 +object_lightbox +object_pu_box +object_trap +object_vase +object_im +object_ta +object_tk +object_xc +object_vm +object_bv +object_hakach_objects +object_efc_crystal_light +object_efc_fire_ball +object_efc_flash +object_efc_lgt_shower +object_efc_star_field +object_god_lgt +object_light_ring +object_triforce_spot +object_medal +object_bdan_objects +object_sd +object_rd +object_po_sisters +object_heavy_object +object_gndd +object_fd +object_du +object_fw +object_horse_link_child +object_spot02_objects +object_haka +object_ru1 +object_syokudai +object_fd2 +object_dh +object_rl +object_efc_tw +object_demo_tre_lgt +object_gi_key +object_mir_ray +object_brob +object_gi_jewel +object_spot09_obj +object_spot18_obj +object_bdoor +object_spot17_obj +object_shop_dungen +object_nb +object_mo +object_sb +object_gi_melody +object_gi_heart +object_gi_compass +object_gi_bosskey +object_gi_medal +object_gi_nuts +object_sa +object_gi_hearts +object_gi_arrowcase +object_gi_bombpouch +object_in +object_tr +object_spot16_obj +object_oE1s +object_oE4s +object_os_anime +object_gi_bottle +object_gi_stick +object_gi_map +object_oF1d_map +object_ru2 +object_gi_shield_1 +object_dekujr +object_gi_magicpot +object_gi_bomb_1 +object_oF1s +object_ma2 +object_gi_purse +object_hni +object_tw +object_rr +object_bxa +object_anubice +object_gi_gerudo +object_gi_arrow +object_gi_bomb_2 +object_gi_egg +object_gi_scale +object_gi_shield_2 +object_gi_hookshot +object_gi_ocarina +object_gi_milk +object_ma1 +object_ganon +object_sst +object_ny +object_fr +object_gi_pachinko +object_gi_boomerang +object_gi_bow +object_gi_glasses +object_gi_liquid +object_ani +object_demo_6k +object_gi_shield_3 +object_gi_letter +object_spot15_obj +object_jya_obj +object_gi_clothes +object_gi_bean +object_gi_fish +object_gi_saw +object_gi_hammer +object_gi_grass +object_gi_longsword +object_spot01_objects +object_md +object_km1 +object_kw1 +object_zo +object_kz +object_umajump +object_masterkokiri +object_masterkokirihead +object_mastergolon +object_masterzoora +object_aob +object_ik +object_ahg +object_cne +object_gi_niwatori +object_skj +object_gi_bottle_letter +object_bji +object_bba +object_gi_ocarina_0 +object_ds +object_ane +object_boj +object_spot03_object +object_spot07_object +object_fz +object_bob +object_ge1 +object_yabusame_point +object_gi_boots_2 +object_gi_seed +object_gnd_magic +object_d_elevator +object_d_hsblock +object_d_lift +object_mamenoki +object_goroiwa +object_toryo +object_daiku +object_nwc +object_blkobj +object_gm +object_ms +object_hs +object_ingate +object_lightswitch +object_kusa +object_tsubo +object_gi_gloves +object_gi_coin +object_kanban +object_gjyo_objects +object_owl +object_mk +object_fu +object_gi_ki_tan_mask +object_gi_redead_mask +object_gi_skj_mask +object_gi_rabit_mask +object_gi_truth_mask +object_ganon_objects +object_siofuki +object_stream +object_mm +object_fa +object_os +object_gi_eye_lotion +object_gi_powder +object_gi_mushroom +object_gi_ticketstone +object_gi_brokensword +object_js +object_cs +object_gi_prescription +object_gi_bracelet +object_gi_soldout +object_gi_frog +object_mag +object_door_gerudo +object_gt +object_efc_erupc +object_zl2_anime1 +object_zl2_anime2 +object_gi_golonmask +object_gi_zoramask +object_gi_gerudomask +object_ganon2 +object_ka +object_ts +object_zg +object_gi_hoverboots +object_gi_m_arrow +object_ds2 +object_ec +object_fish +object_gi_sutaru +object_gi_goddess +object_ssh +object_bigokuta +object_bg +object_spot05_objects +object_spot12_obj +object_bombiwa +object_hintnuts +object_rs +object_spot00_break +object_gla +object_shopnuts +object_geldb +object_gr +object_dog +object_jya_iron +object_jya_door +object_spot01_objects2 +object_spot11_obj +object_kibako2 +object_dns +object_dnk +object_gi_fire +object_gi_insect +object_gi_butterfly +object_gi_ghost +object_gi_soul +object_bowl +object_po_field +object_demo_kekkai +object_efc_doughnut +object_gi_dekupouch +object_ganon_anime1 +object_ganon_anime2 +object_ganon_anime3 +object_gi_rupy +object_spot01_matoya +object_spot01_matoyab +object_po_composer +object_mu +object_wf +object_skb +object_gj +object_geff +object_haka_door +object_gs +object_ps +object_bwall +object_crow +object_cow +object_cob +object_gi_sword_1 +object_door_killer +object_ouke_haka +object_timeblock +object_zl4 +g_pn_01 +g_pn_02 +g_pn_03 +g_pn_04 +g_pn_05 +g_pn_06 +g_pn_07 +g_pn_08 +g_pn_09 +g_pn_10 +g_pn_11 +g_pn_12 +g_pn_13 +g_pn_14 +g_pn_15 +g_pn_16 +g_pn_17 +g_pn_18 +g_pn_19 +g_pn_20 +g_pn_21 +g_pn_22 +g_pn_23 +g_pn_24 +g_pn_25 +g_pn_26 +g_pn_27 +g_pn_28 +g_pn_29 +g_pn_30 +g_pn_31 +g_pn_32 +g_pn_33 +g_pn_34 +g_pn_35 +g_pn_36 +g_pn_37 +g_pn_38 +g_pn_39 +g_pn_40 +g_pn_41 +g_pn_42 +g_pn_43 +g_pn_44 +g_pn_45 +g_pn_46 +g_pn_47 +g_pn_48 +g_pn_49 +g_pn_50 +g_pn_51 +g_pn_52 +g_pn_53 +g_pn_54 +g_pn_55 +g_pn_56 +g_pn_57 +z_select_static +nintendo_rogo_static +title_static +parameter_static +vr_fine0_static +vr_fine0_pal_static +vr_fine1_static +vr_fine1_pal_static +vr_fine2_static +vr_fine2_pal_static +vr_fine3_static +vr_fine3_pal_static +vr_cloud0_static +vr_cloud0_pal_static +vr_cloud1_static +vr_cloud1_pal_static +vr_cloud2_static +vr_cloud2_pal_static +vr_cloud3_static +vr_cloud3_pal_static +vr_holy0_static +vr_holy0_pal_static +vr_holy1_static +vr_holy1_pal_static +vr_MDVR_static +vr_MDVR_pal_static +vr_MNVR_static +vr_MNVR_pal_static +vr_RUVR_static +vr_RUVR_pal_static +vr_LHVR_static +vr_LHVR_pal_static +vr_KHVR_static +vr_KHVR_pal_static +vr_K3VR_static +vr_K3VR_pal_static +vr_K4VR_static +vr_K4VR_pal_static +vr_K5VR_static +vr_K5VR_pal_static +vr_SP1a_static +vr_SP1a_pal_static +vr_MLVR_static +vr_MLVR_pal_static +vr_KKRVR_static +vr_KKRVR_pal_static +vr_KR3VR_static +vr_KR3VR_pal_static +vr_IPVR_static +vr_IPVR_pal_static +vr_KSVR_static +vr_KSVR_pal_static +vr_GLVR_static +vr_GLVR_pal_static +vr_ZRVR_static +vr_ZRVR_pal_static +vr_DGVR_static +vr_DGVR_pal_static +vr_ALVR_static +vr_ALVR_pal_static +vr_NSVR_static +vr_NSVR_pal_static +vr_LBVR_static +vr_LBVR_pal_static +vr_TTVR_static +vr_TTVR_pal_static +vr_FCVR_static +vr_FCVR_pal_static +elf_message_field +elf_message_ydan +ydan_scene +ydan_room_0 +ydan_room_1 +ydan_room_2 +ydan_room_3 +ydan_room_4 +ydan_room_5 +ydan_room_6 +ydan_room_7 +ydan_room_8 +ydan_room_9 +ydan_room_10 +ydan_room_11 +ddan_scene +ddan_room_0 +ddan_room_1 +ddan_room_2 +ddan_room_3 +ddan_room_4 +ddan_room_5 +ddan_room_6 +ddan_room_7 +ddan_room_8 +ddan_room_9 +ddan_room_10 +ddan_room_11 +ddan_room_12 +ddan_room_13 +ddan_room_14 +ddan_room_15 +ddan_room_16 +bdan_scene +bdan_room_0 +bdan_room_1 +bdan_room_2 +bdan_room_3 +bdan_room_4 +bdan_room_5 +bdan_room_6 +bdan_room_7 +bdan_room_8 +bdan_room_9 +bdan_room_10 +bdan_room_11 +bdan_room_12 +bdan_room_13 +bdan_room_14 +bdan_room_15 +Bmori1_scene +Bmori1_room_0 +Bmori1_room_1 +Bmori1_room_2 +Bmori1_room_3 +Bmori1_room_4 +Bmori1_room_5 +Bmori1_room_6 +Bmori1_room_7 +Bmori1_room_8 +Bmori1_room_9 +Bmori1_room_10 +Bmori1_room_11 +Bmori1_room_12 +Bmori1_room_13 +Bmori1_room_14 +Bmori1_room_15 +Bmori1_room_16 +Bmori1_room_17 +Bmori1_room_18 +Bmori1_room_19 +Bmori1_room_20 +Bmori1_room_21 +Bmori1_room_22 +HIDAN_scene +HIDAN_room_0 +HIDAN_room_1 +HIDAN_room_2 +HIDAN_room_3 +HIDAN_room_4 +HIDAN_room_5 +HIDAN_room_6 +HIDAN_room_7 +HIDAN_room_8 +HIDAN_room_9 +HIDAN_room_10 +HIDAN_room_11 +HIDAN_room_12 +HIDAN_room_13 +HIDAN_room_14 +HIDAN_room_15 +HIDAN_room_16 +HIDAN_room_17 +HIDAN_room_18 +HIDAN_room_19 +HIDAN_room_20 +HIDAN_room_21 +HIDAN_room_22 +HIDAN_room_23 +HIDAN_room_24 +HIDAN_room_25 +HIDAN_room_26 +MIZUsin_scene +MIZUsin_room_0 +MIZUsin_room_1 +MIZUsin_room_2 +MIZUsin_room_3 +MIZUsin_room_4 +MIZUsin_room_5 +MIZUsin_room_6 +MIZUsin_room_7 +MIZUsin_room_8 +MIZUsin_room_9 +MIZUsin_room_10 +MIZUsin_room_11 +MIZUsin_room_12 +MIZUsin_room_13 +MIZUsin_room_14 +MIZUsin_room_15 +MIZUsin_room_16 +MIZUsin_room_17 +MIZUsin_room_18 +MIZUsin_room_19 +MIZUsin_room_20 +MIZUsin_room_21 +MIZUsin_room_22 +jyasinzou_scene +jyasinzou_room_0 +jyasinzou_room_1 +jyasinzou_room_2 +jyasinzou_room_3 +jyasinzou_room_4 +jyasinzou_room_5 +jyasinzou_room_6 +jyasinzou_room_7 +jyasinzou_room_8 +jyasinzou_room_9 +jyasinzou_room_10 +jyasinzou_room_11 +jyasinzou_room_12 +jyasinzou_room_13 +jyasinzou_room_14 +jyasinzou_room_15 +jyasinzou_room_16 +jyasinzou_room_17 +jyasinzou_room_18 +jyasinzou_room_19 +jyasinzou_room_20 +jyasinzou_room_21 +jyasinzou_room_22 +jyasinzou_room_23 +jyasinzou_room_24 +jyasinzou_room_25 +jyasinzou_room_26 +jyasinzou_room_27 +jyasinzou_room_28 +HAKAdan_scene +HAKAdan_room_0 +HAKAdan_room_1 +HAKAdan_room_2 +HAKAdan_room_3 +HAKAdan_room_4 +HAKAdan_room_5 +HAKAdan_room_6 +HAKAdan_room_7 +HAKAdan_room_8 +HAKAdan_room_9 +HAKAdan_room_10 +HAKAdan_room_11 +HAKAdan_room_12 +HAKAdan_room_13 +HAKAdan_room_14 +HAKAdan_room_15 +HAKAdan_room_16 +HAKAdan_room_17 +HAKAdan_room_18 +HAKAdan_room_19 +HAKAdan_room_20 +HAKAdan_room_21 +HAKAdan_room_22 +HAKAdanCH_scene +HAKAdanCH_room_0 +HAKAdanCH_room_1 +HAKAdanCH_room_2 +HAKAdanCH_room_3 +HAKAdanCH_room_4 +HAKAdanCH_room_5 +HAKAdanCH_room_6 +ice_doukutu_scene +ice_doukutu_room_0 +ice_doukutu_room_1 +ice_doukutu_room_2 +ice_doukutu_room_3 +ice_doukutu_room_4 +ice_doukutu_room_5 +ice_doukutu_room_6 +ice_doukutu_room_7 +ice_doukutu_room_8 +ice_doukutu_room_9 +ice_doukutu_room_10 +ice_doukutu_room_11 +men_scene +men_room_0 +men_room_1 +men_room_2 +men_room_3 +men_room_4 +men_room_5 +men_room_6 +men_room_7 +men_room_8 +men_room_9 +men_room_10 +ganontika_scene +ganontika_room_0 +ganontika_room_1 +ganontika_room_2 +ganontika_room_3 +ganontika_room_4 +ganontika_room_5 +ganontika_room_6 +ganontika_room_7 +ganontika_room_8 +ganontika_room_9 +ganontika_room_10 +ganontika_room_11 +ganontika_room_12 +ganontika_room_13 +ganontika_room_14 +ganontika_room_15 +ganontika_room_16 +ganontika_room_17 +ganontika_room_18 +ganontika_room_19 +spot00_scene +spot00_room_0 +spot01_scene +spot01_room_0 +spot02_scene +spot02_room_0 +spot02_room_1 +spot03_scene +spot03_room_0 +spot03_room_1 +spot04_scene +spot04_room_0 +spot04_room_1 +spot04_room_2 +spot05_scene +spot05_room_0 +spot06_scene +spot06_room_0 +spot07_scene +spot07_room_0 +spot07_room_1 +spot08_scene +spot08_room_0 +spot09_scene +spot09_room_0 +spot10_scene +spot10_room_0 +spot10_room_1 +spot10_room_2 +spot10_room_3 +spot10_room_4 +spot10_room_5 +spot10_room_6 +spot10_room_7 +spot10_room_8 +spot10_room_9 +spot11_scene +spot11_room_0 +spot12_scene +spot12_room_0 +spot12_room_1 +spot13_scene +spot13_room_0 +spot13_room_1 +spot15_scene +spot15_room_0 +spot16_scene +spot16_room_0 +spot17_scene +spot17_room_0 +spot17_room_1 +spot18_scene +spot18_room_0 +spot18_room_1 +spot18_room_2 +spot18_room_3 +market_day_scene +market_day_room_0 +market_night_scene +market_night_room_0 +kenjyanoma_scene +kenjyanoma_room_0 +tokinoma_scene +tokinoma_room_0 +tokinoma_room_1 +link_home_scene +link_home_room_0 +kokiri_shop_scene +kokiri_shop_room_0 +kokiri_home_scene +kokiri_home_room_0 +kakusiana_scene +kakusiana_room_0 +kakusiana_room_1 +kakusiana_room_2 +kakusiana_room_3 +kakusiana_room_4 +kakusiana_room_5 +kakusiana_room_6 +kakusiana_room_7 +kakusiana_room_8 +kakusiana_room_9 +kakusiana_room_10 +kakusiana_room_11 +kakusiana_room_12 +kakusiana_room_13 +entra_scene +entra_room_0 +moribossroom_scene +moribossroom_room_0 +moribossroom_room_1 +syatekijyou_scene +syatekijyou_room_0 +shop1_scene +shop1_room_0 +hairal_niwa_scene +hairal_niwa_room_0 +ganon_tou_scene +ganon_tou_room_0 +market_alley_scene +market_alley_room_0 +spot20_scene +spot20_room_0 +market_ruins_scene +market_ruins_room_0 +entra_n_scene +entra_n_room_0 +enrui_scene +enrui_room_0 +market_alley_n_scene +market_alley_n_room_0 +hiral_demo_scene +hiral_demo_room_0 +kokiri_home3_scene +kokiri_home3_room_0 +malon_stable_scene +malon_stable_room_0 +kakariko_scene +kakariko_room_0 +bdan_boss_scene +bdan_boss_room_0 +bdan_boss_room_1 +FIRE_bs_scene +FIRE_bs_room_0 +FIRE_bs_room_1 +hut_scene +hut_room_0 +daiyousei_izumi_scene +daiyousei_izumi_room_0 +hakaana_scene +hakaana_room_0 +yousei_izumi_tate_scene +yousei_izumi_tate_room_0 +yousei_izumi_yoko_scene +yousei_izumi_yoko_room_0 +golon_scene +golon_room_0 +zoora_scene +zoora_room_0 +drag_scene +drag_room_0 +alley_shop_scene +alley_shop_room_0 +night_shop_scene +night_shop_room_0 +impa_scene +impa_room_0 +labo_scene +labo_room_0 +tent_scene +tent_room_0 +nakaniwa_scene +nakaniwa_room_0 +ddan_boss_scene +ddan_boss_room_0 +ddan_boss_room_1 +ydan_boss_scene +ydan_boss_room_0 +ydan_boss_room_1 +HAKAdan_bs_scene +HAKAdan_bs_room_0 +HAKAdan_bs_room_1 +MIZUsin_bs_scene +MIZUsin_bs_room_0 +MIZUsin_bs_room_1 +ganon_scene +ganon_room_0 +ganon_room_1 +ganon_room_2 +ganon_room_3 +ganon_room_4 +ganon_room_5 +ganon_room_6 +ganon_room_7 +ganon_room_8 +ganon_room_9 +ganon_boss_scene +ganon_boss_room_0 +jyasinboss_scene +jyasinboss_room_0 +jyasinboss_room_1 +jyasinboss_room_2 +jyasinboss_room_3 +kokiri_home4_scene +kokiri_home4_room_0 +kokiri_home5_scene +kokiri_home5_room_0 +ganon_final_scene +ganon_final_room_0 +kakariko3_scene +kakariko3_room_0 +hakasitarelay_scene +hakasitarelay_room_0 +hakasitarelay_room_1 +hakasitarelay_room_2 +hakasitarelay_room_3 +hakasitarelay_room_4 +hakasitarelay_room_5 +hakasitarelay_room_6 +shrine_scene +shrine_room_0 +turibori_scene +turibori_room_0 +shrine_n_scene +shrine_n_room_0 +shrine_r_scene +shrine_r_room_0 +hakaana2_scene +hakaana2_room_0 +gerudoway_scene +gerudoway_room_0 +gerudoway_room_1 +gerudoway_room_2 +gerudoway_room_3 +gerudoway_room_4 +gerudoway_room_5 +hairal_niwa_n_scene +hairal_niwa_n_room_0 +bowling_scene +bowling_room_0 +hakaana_ouke_scene +hakaana_ouke_room_0 +hakaana_ouke_room_1 +hakaana_ouke_room_2 +hylia_labo_scene +hylia_labo_room_0 +souko_scene +souko_room_0 +souko_room_1 +souko_room_2 +miharigoya_scene +miharigoya_room_0 +mahouya_scene +mahouya_room_0 +takaraya_scene +takaraya_room_0 +takaraya_room_1 +takaraya_room_2 +takaraya_room_3 +takaraya_room_4 +takaraya_room_5 +takaraya_room_6 +ganon_sonogo_scene +ganon_sonogo_room_0 +ganon_sonogo_room_1 +ganon_sonogo_room_2 +ganon_sonogo_room_3 +ganon_sonogo_room_4 +ganon_demo_scene +ganon_demo_room_0 +face_shop_scene +face_shop_room_0 +kinsuta_scene +kinsuta_room_0 +ganontikasonogo_scene +ganontikasonogo_room_0 +ganontikasonogo_room_1 +bump_texture_static +anime_model_1_static +anime_model_2_static +anime_model_3_static +anime_model_4_static +anime_model_5_static +anime_model_6_static +anime_texture_1_static +anime_texture_2_static +anime_texture_3_static +anime_texture_4_static +anime_texture_5_static +anime_texture_6_static +softsprite_matrix_static \ No newline at end of file diff --git a/OTRExporter/CFG/filelists/gamecube_pal.txt b/OTRExporter/CFG/filelists/gamecube_pal.txt new file mode 100644 index 000000000..c9746c1da --- /dev/null +++ b/OTRExporter/CFG/filelists/gamecube_pal.txt @@ -0,0 +1,1510 @@ +makerom +boot +dmadata +Audiobank +Audioseq +Audiotable +link_animetion +icon_item_static +icon_item_24_static +icon_item_field_static +icon_item_dungeon_static +icon_item_gameover_static +icon_item_nes_static +icon_item_ger_static +icon_item_fra_static +item_name_static +map_name_static +do_action_static +message_static +message_texture_static +nes_font_static +nes_message_data_static +ger_message_data_static +fra_message_data_static +staff_message_data_static +map_grand_static +map_48x85_static +map_i_static +code +ovl_title +ovl_select +ovl_opening +ovl_file_choose +ovl_kaleido_scope +ovl_player_actor +ovl_map_mark_data +ovl_En_Test +ovl_Arms_Hook +ovl_Arrow_Fire +ovl_Arrow_Ice +ovl_Arrow_Light +ovl_Bg_Bdan_Objects +ovl_Bg_Bdan_Switch +ovl_Bg_Bom_Guard +ovl_Bg_Bombwall +ovl_Bg_Bowl_Wall +ovl_Bg_Breakwall +ovl_Bg_Ddan_Jd +ovl_Bg_Ddan_Kd +ovl_Bg_Dodoago +ovl_Bg_Dy_Yoseizo +ovl_Bg_Ganon_Otyuka +ovl_Bg_Gate_Shutter +ovl_Bg_Gjyo_Bridge +ovl_Bg_Gnd_Darkmeiro +ovl_Bg_Gnd_Firemeiro +ovl_Bg_Gnd_Iceblock +ovl_Bg_Gnd_Nisekabe +ovl_Bg_Gnd_Soulmeiro +ovl_Bg_Haka +ovl_Bg_Haka_Gate +ovl_Bg_Haka_Huta +ovl_Bg_Haka_Megane +ovl_Bg_Haka_MeganeBG +ovl_Bg_Haka_Sgami +ovl_Bg_Haka_Ship +ovl_Bg_Haka_Trap +ovl_Bg_Haka_Tubo +ovl_Bg_Haka_Water +ovl_Bg_Haka_Zou +ovl_Bg_Heavy_Block +ovl_Bg_Hidan_Curtain +ovl_Bg_Hidan_Dalm +ovl_Bg_Hidan_Firewall +ovl_Bg_Hidan_Fslift +ovl_Bg_Hidan_Fwbig +ovl_Bg_Hidan_Hamstep +ovl_Bg_Hidan_Hrock +ovl_Bg_Hidan_Kousi +ovl_Bg_Hidan_Kowarerukabe +ovl_Bg_Hidan_Rock +ovl_Bg_Hidan_Rsekizou +ovl_Bg_Hidan_Sekizou +ovl_Bg_Hidan_Sima +ovl_Bg_Hidan_Syoku +ovl_Bg_Ice_Objects +ovl_Bg_Ice_Shelter +ovl_Bg_Ice_Shutter +ovl_Bg_Ice_Turara +ovl_Bg_Ingate +ovl_Bg_Jya_1flift +ovl_Bg_Jya_Amishutter +ovl_Bg_Jya_Bigmirror +ovl_Bg_Jya_Block +ovl_Bg_Jya_Bombchuiwa +ovl_Bg_Jya_Bombiwa +ovl_Bg_Jya_Cobra +ovl_Bg_Jya_Goroiwa +ovl_Bg_Jya_Haheniron +ovl_Bg_Jya_Ironobj +ovl_Bg_Jya_Kanaami +ovl_Bg_Jya_Lift +ovl_Bg_Jya_Megami +ovl_Bg_Jya_Zurerukabe +ovl_Bg_Menkuri_Eye +ovl_Bg_Menkuri_Kaiten +ovl_Bg_Menkuri_Nisekabe +ovl_Bg_Mizu_Bwall +ovl_Bg_Mizu_Movebg +ovl_Bg_Mizu_Shutter +ovl_Bg_Mizu_Uzu +ovl_Bg_Mizu_Water +ovl_Bg_Mjin +ovl_Bg_Mori_Bigst +ovl_Bg_Mori_Elevator +ovl_Bg_Mori_Hashigo +ovl_Bg_Mori_Hashira4 +ovl_Bg_Mori_Hineri +ovl_Bg_Mori_Idomizu +ovl_Bg_Mori_Kaitenkabe +ovl_Bg_Mori_Rakkatenjo +ovl_Bg_Po_Event +ovl_Bg_Po_Syokudai +ovl_Bg_Pushbox +ovl_Bg_Relay_Objects +ovl_Bg_Spot00_Break +ovl_Bg_Spot00_Hanebasi +ovl_Bg_Spot01_Fusya +ovl_Bg_Spot01_Idohashira +ovl_Bg_Spot01_Idomizu +ovl_Bg_Spot01_Idosoko +ovl_Bg_Spot01_Objects2 +ovl_Bg_Spot02_Objects +ovl_Bg_Spot03_Taki +ovl_Bg_Spot05_Soko +ovl_Bg_Spot06_Objects +ovl_Bg_Spot07_Taki +ovl_Bg_Spot08_Bakudankabe +ovl_Bg_Spot08_Iceblock +ovl_Bg_Spot09_Obj +ovl_Bg_Spot11_Bakudankabe +ovl_Bg_Spot11_Oasis +ovl_Bg_Spot12_Gate +ovl_Bg_Spot12_Saku +ovl_Bg_Spot15_Rrbox +ovl_Bg_Spot15_Saku +ovl_Bg_Spot16_Bombstone +ovl_Bg_Spot16_Doughnut +ovl_Bg_Spot17_Bakudankabe +ovl_Bg_Spot17_Funen +ovl_Bg_Spot18_Basket +ovl_Bg_Spot18_Futa +ovl_Bg_Spot18_Obj +ovl_Bg_Spot18_Shutter +ovl_Bg_Sst_Floor +ovl_Bg_Toki_Hikari +ovl_Bg_Toki_Swd +ovl_Bg_Treemouth +ovl_Bg_Umajump +ovl_Bg_Vb_Sima +ovl_Bg_Ydan_Hasi +ovl_Bg_Ydan_Maruta +ovl_Bg_Ydan_Sp +ovl_Bg_Zg +ovl_Boss_Dodongo +ovl_Boss_Fd +ovl_Boss_Fd2 +ovl_Boss_Ganon +ovl_Boss_Ganon2 +ovl_Boss_Ganondrof +ovl_Boss_Goma +ovl_Boss_Mo +ovl_Boss_Sst +ovl_Boss_Tw +ovl_Boss_Va +ovl_Demo_6K +ovl_Demo_Du +ovl_Demo_Ec +ovl_Demo_Effect +ovl_Demo_Ext +ovl_Demo_Geff +ovl_Demo_Gj +ovl_Demo_Go +ovl_Demo_Gt +ovl_Demo_Ik +ovl_Demo_Im +ovl_Demo_Kankyo +ovl_Demo_Kekkai +ovl_Demo_Sa +ovl_Demo_Shd +ovl_Demo_Tre_Lgt +ovl_Door_Ana +ovl_Door_Gerudo +ovl_Door_Killer +ovl_Door_Shutter +ovl_Door_Toki +ovl_Door_Warp1 +ovl_Efc_Erupc +ovl_Eff_Dust +ovl_Effect_Ss_Blast +ovl_Effect_Ss_Bomb +ovl_Effect_Ss_Bomb2 +ovl_Effect_Ss_Bubble +ovl_Effect_Ss_D_Fire +ovl_Effect_Ss_Dead_Db +ovl_Effect_Ss_Dead_Dd +ovl_Effect_Ss_Dead_Ds +ovl_Effect_Ss_Dead_Sound +ovl_Effect_Ss_Dt_Bubble +ovl_Effect_Ss_Dust +ovl_Effect_Ss_En_Fire +ovl_Effect_Ss_En_Ice +ovl_Effect_Ss_Extra +ovl_Effect_Ss_Fcircle +ovl_Effect_Ss_Fhg_Flash +ovl_Effect_Ss_Fire_Tail +ovl_Effect_Ss_G_Fire +ovl_Effect_Ss_G_Magma +ovl_Effect_Ss_G_Magma2 +ovl_Effect_Ss_G_Ripple +ovl_Effect_Ss_G_Spk +ovl_Effect_Ss_G_Splash +ovl_Effect_Ss_Hahen +ovl_Effect_Ss_HitMark +ovl_Effect_Ss_Ice_Piece +ovl_Effect_Ss_Ice_Smoke +ovl_Effect_Ss_K_Fire +ovl_Effect_Ss_Kakera +ovl_Effect_Ss_KiraKira +ovl_Effect_Ss_Lightning +ovl_Effect_Ss_Sibuki +ovl_Effect_Ss_Sibuki2 +ovl_Effect_Ss_Solder_Srch_Ball +ovl_Effect_Ss_Stick +ovl_Effect_Ss_Stone1 +ovl_Elf_Msg +ovl_Elf_Msg2 +ovl_En_Am +ovl_En_Ani +ovl_En_Anubice +ovl_En_Anubice_Fire +ovl_En_Anubice_Tag +ovl_En_Arow_Trap +ovl_En_Arrow +ovl_En_Attack_Niw +ovl_En_Ba +ovl_En_Bb +ovl_En_Bdfire +ovl_En_Bigokuta +ovl_En_Bili +ovl_En_Bird +ovl_En_Blkobj +ovl_En_Bom +ovl_En_Bom_Bowl_Man +ovl_En_Bom_Bowl_Pit +ovl_En_Bom_Chu +ovl_En_Bombf +ovl_En_Boom +ovl_En_Box +ovl_En_Brob +ovl_En_Bubble +ovl_En_Butte +ovl_En_Bw +ovl_En_Bx +ovl_En_Changer +ovl_En_Clear_Tag +ovl_En_Cow +ovl_En_Crow +ovl_En_Cs +ovl_En_Daiku +ovl_En_Daiku_Kakariko +ovl_En_Dekubaba +ovl_En_Dekunuts +ovl_En_Dh +ovl_En_Dha +ovl_En_Diving_Game +ovl_En_Dns +ovl_En_Dnt_Demo +ovl_En_Dnt_Jiji +ovl_En_Dnt_Nomal +ovl_En_Dodojr +ovl_En_Dodongo +ovl_En_Dog +ovl_En_Door +ovl_En_Ds +ovl_En_Du +ovl_En_Dy_Extra +ovl_En_Eg +ovl_En_Eiyer +ovl_En_Elf +ovl_En_Encount1 +ovl_En_Encount2 +ovl_En_Ex_Item +ovl_En_Ex_Ruppy +ovl_En_Fd +ovl_En_Fd_Fire +ovl_En_Fhg_Fire +ovl_En_Fire_Rock +ovl_En_Firefly +ovl_En_Fish +ovl_En_Floormas +ovl_En_Fr +ovl_En_Fu +ovl_En_Fw +ovl_En_Fz +ovl_En_G_Switch +ovl_En_Ganon_Mant +ovl_En_Ganon_Organ +ovl_En_Gb +ovl_En_Ge1 +ovl_En_Ge2 +ovl_En_Ge3 +ovl_En_GeldB +ovl_En_GirlA +ovl_En_Gm +ovl_En_Go +ovl_En_Go2 +ovl_En_Goma +ovl_En_Goroiwa +ovl_En_Gs +ovl_En_Guest +ovl_En_Hata +ovl_En_Heishi1 +ovl_En_Heishi2 +ovl_En_Heishi3 +ovl_En_Heishi4 +ovl_En_Hintnuts +ovl_En_Holl +ovl_En_Honotrap +ovl_En_Horse +ovl_En_Horse_Game_Check +ovl_En_Horse_Ganon +ovl_En_Horse_Link_Child +ovl_En_Horse_Normal +ovl_En_Horse_Zelda +ovl_En_Hs +ovl_En_Hs2 +ovl_En_Hy +ovl_En_Ice_Hono +ovl_En_Ik +ovl_En_In +ovl_En_Insect +ovl_En_Ishi +ovl_En_It +ovl_En_Jj +ovl_En_Js +ovl_En_Jsjutan +ovl_En_Kakasi +ovl_En_Kakasi2 +ovl_En_Kakasi3 +ovl_En_Kanban +ovl_En_Karebaba +ovl_En_Ko +ovl_En_Kusa +ovl_En_Kz +ovl_En_Light +ovl_En_Lightbox +ovl_En_M_Fire1 +ovl_En_M_Thunder +ovl_En_Ma1 +ovl_En_Ma2 +ovl_En_Ma3 +ovl_En_Mag +ovl_En_Mb +ovl_En_Md +ovl_En_Mk +ovl_En_Mm +ovl_En_Mm2 +ovl_En_Ms +ovl_En_Mu +ovl_En_Nb +ovl_En_Niw +ovl_En_Niw_Girl +ovl_En_Niw_Lady +ovl_En_Nutsball +ovl_En_Nwc +ovl_En_Ny +ovl_En_OE2 +ovl_En_Okarina_Effect +ovl_En_Okarina_Tag +ovl_En_Okuta +ovl_En_Ossan +ovl_En_Owl +ovl_En_Part +ovl_En_Peehat +ovl_En_Po_Desert +ovl_En_Po_Field +ovl_En_Po_Relay +ovl_En_Po_Sisters +ovl_En_Poh +ovl_En_Pu_box +ovl_En_Rd +ovl_En_Reeba +ovl_En_River_Sound +ovl_En_Rl +ovl_En_Rr +ovl_En_Ru1 +ovl_En_Ru2 +ovl_En_Sa +ovl_En_Sb +ovl_En_Scene_Change +ovl_En_Sda +ovl_En_Shopnuts +ovl_En_Si +ovl_En_Siofuki +ovl_En_Skb +ovl_En_Skj +ovl_En_Skjneedle +ovl_En_Ssh +ovl_En_St +ovl_En_Sth +ovl_En_Stream +ovl_En_Sw +ovl_En_Syateki_Itm +ovl_En_Syateki_Man +ovl_En_Syateki_Niw +ovl_En_Ta +ovl_En_Takara_Man +ovl_En_Tana +ovl_En_Tg +ovl_En_Tite +ovl_En_Tk +ovl_En_Torch +ovl_En_Torch2 +ovl_En_Toryo +ovl_En_Tp +ovl_En_Tr +ovl_En_Trap +ovl_En_Tubo_Trap +ovl_En_Vali +ovl_En_Vase +ovl_En_Vb_Ball +ovl_En_Viewer +ovl_En_Vm +ovl_En_Wall_Tubo +ovl_En_Wallmas +ovl_En_Weather_Tag +ovl_En_Weiyer +ovl_En_Wf +ovl_En_Wonder_Item +ovl_En_Wonder_Talk +ovl_En_Wonder_Talk2 +ovl_En_Wood02 +ovl_En_Xc +ovl_En_Yabusame_Mark +ovl_En_Yukabyun +ovl_En_Zf +ovl_En_Zl1 +ovl_En_Zl2 +ovl_En_Zl3 +ovl_En_Zl4 +ovl_En_Zo +ovl_En_fHG +ovl_End_Title +ovl_Fishing +ovl_Item_B_Heart +ovl_Item_Etcetera +ovl_Item_Inbox +ovl_Item_Ocarina +ovl_Item_Shield +ovl_Magic_Dark +ovl_Magic_Fire +ovl_Magic_Wind +ovl_Mir_Ray +ovl_Obj_Bean +ovl_Obj_Blockstop +ovl_Obj_Bombiwa +ovl_Obj_Comb +ovl_Obj_Dekujr +ovl_Obj_Elevator +ovl_Obj_Hamishi +ovl_Obj_Hana +ovl_Obj_Hsblock +ovl_Obj_Ice_Poly +ovl_Obj_Kibako +ovl_Obj_Kibako2 +ovl_Obj_Lift +ovl_Obj_Lightswitch +ovl_Obj_Makekinsuta +ovl_Obj_Makeoshihiki +ovl_Obj_Mure +ovl_Obj_Mure2 +ovl_Obj_Mure3 +ovl_Obj_Oshihiki +ovl_Obj_Roomtimer +ovl_Obj_Switch +ovl_Obj_Syokudai +ovl_Obj_Timeblock +ovl_Obj_Tsubo +ovl_Obj_Warp2block +ovl_Object_Kankyo +ovl_Oceff_Spot +ovl_Oceff_Storm +ovl_Oceff_Wipe +ovl_Oceff_Wipe2 +ovl_Oceff_Wipe3 +ovl_Oceff_Wipe4 +ovl_Shot_Sun +gameplay_keep +gameplay_field_keep +gameplay_dangeon_keep +gameplay_object_exchange_static +object_link_boy +object_link_child +object_box +object_human +object_okuta +object_poh +object_wallmaster +object_dy_obj +object_firefly +object_dodongo +object_fire +object_niw +object_tite +object_reeba +object_peehat +object_kingdodongo +object_horse +object_zf +object_goma +object_zl1 +object_gol +object_bubble +object_dodojr +object_torch2 +object_bl +object_tp +object_oA1 +object_st +object_bw +object_ei +object_horse_normal +object_oB1 +object_o_anime +object_spot04_objects +object_ddan_objects +object_hidan_objects +object_horse_ganon +object_oA2 +object_spot00_objects +object_mb +object_bombf +object_sk2 +object_oE1 +object_oE_anime +object_oE2 +object_ydan_objects +object_gnd +object_am +object_dekubaba +object_oA3 +object_oA4 +object_oA5 +object_oA6 +object_oA7 +object_jj +object_oA8 +object_oA9 +object_oB2 +object_oB3 +object_oB4 +object_horse_zelda +object_opening_demo1 +object_warp1 +object_b_heart +object_dekunuts +object_oE3 +object_oE4 +object_menkuri_objects +object_oE5 +object_oE6 +object_oE7 +object_oE8 +object_oE9 +object_oE10 +object_oE11 +object_oE12 +object_vali +object_oA10 +object_oA11 +object_mizu_objects +object_fhg +object_ossan +object_mori_hineri1 +object_Bb +object_toki_objects +object_yukabyun +object_zl2 +object_mjin +object_mjin_flash +object_mjin_dark +object_mjin_flame +object_mjin_ice +object_mjin_soul +object_mjin_wind +object_mjin_oka +object_haka_objects +object_spot06_objects +object_ice_objects +object_relay_objects +object_mori_hineri1a +object_mori_hineri2 +object_mori_hineri2a +object_mori_objects +object_mori_tex +object_spot08_obj +object_warp2 +object_hata +object_bird +object_wood02 +object_lightbox +object_pu_box +object_trap +object_vase +object_im +object_ta +object_tk +object_xc +object_vm +object_bv +object_hakach_objects +object_efc_crystal_light +object_efc_fire_ball +object_efc_flash +object_efc_lgt_shower +object_efc_star_field +object_god_lgt +object_light_ring +object_triforce_spot +object_medal +object_bdan_objects +object_sd +object_rd +object_po_sisters +object_heavy_object +object_gndd +object_fd +object_du +object_fw +object_horse_link_child +object_spot02_objects +object_haka +object_ru1 +object_syokudai +object_fd2 +object_dh +object_rl +object_efc_tw +object_demo_tre_lgt +object_gi_key +object_mir_ray +object_brob +object_gi_jewel +object_spot09_obj +object_spot18_obj +object_bdoor +object_spot17_obj +object_shop_dungen +object_nb +object_mo +object_sb +object_gi_melody +object_gi_heart +object_gi_compass +object_gi_bosskey +object_gi_medal +object_gi_nuts +object_sa +object_gi_hearts +object_gi_arrowcase +object_gi_bombpouch +object_in +object_tr +object_spot16_obj +object_oE1s +object_oE4s +object_os_anime +object_gi_bottle +object_gi_stick +object_gi_map +object_oF1d_map +object_ru2 +object_gi_shield_1 +object_dekujr +object_gi_magicpot +object_gi_bomb_1 +object_oF1s +object_ma2 +object_gi_purse +object_hni +object_tw +object_rr +object_bxa +object_anubice +object_gi_gerudo +object_gi_arrow +object_gi_bomb_2 +object_gi_egg +object_gi_scale +object_gi_shield_2 +object_gi_hookshot +object_gi_ocarina +object_gi_milk +object_ma1 +object_ganon +object_sst +object_ny +object_fr +object_gi_pachinko +object_gi_boomerang +object_gi_bow +object_gi_glasses +object_gi_liquid +object_ani +object_demo_6k +object_gi_shield_3 +object_gi_letter +object_spot15_obj +object_jya_obj +object_gi_clothes +object_gi_bean +object_gi_fish +object_gi_saw +object_gi_hammer +object_gi_grass +object_gi_longsword +object_spot01_objects +object_md +object_km1 +object_kw1 +object_zo +object_kz +object_umajump +object_masterkokiri +object_masterkokirihead +object_mastergolon +object_masterzoora +object_aob +object_ik +object_ahg +object_cne +object_gi_niwatori +object_skj +object_gi_bottle_letter +object_bji +object_bba +object_gi_ocarina_0 +object_ds +object_ane +object_boj +object_spot03_object +object_spot07_object +object_fz +object_bob +object_ge1 +object_yabusame_point +object_gi_boots_2 +object_gi_seed +object_gnd_magic +object_d_elevator +object_d_hsblock +object_d_lift +object_mamenoki +object_goroiwa +object_toryo +object_daiku +object_nwc +object_blkobj +object_gm +object_ms +object_hs +object_ingate +object_lightswitch +object_kusa +object_tsubo +object_gi_gloves +object_gi_coin +object_kanban +object_gjyo_objects +object_owl +object_mk +object_fu +object_gi_ki_tan_mask +object_gi_redead_mask +object_gi_skj_mask +object_gi_rabit_mask +object_gi_truth_mask +object_ganon_objects +object_siofuki +object_stream +object_mm +object_fa +object_os +object_gi_eye_lotion +object_gi_powder +object_gi_mushroom +object_gi_ticketstone +object_gi_brokensword +object_js +object_cs +object_gi_prescription +object_gi_bracelet +object_gi_soldout +object_gi_frog +object_mag +object_door_gerudo +object_gt +object_efc_erupc +object_zl2_anime1 +object_zl2_anime2 +object_gi_golonmask +object_gi_zoramask +object_gi_gerudomask +object_ganon2 +object_ka +object_ts +object_zg +object_gi_hoverboots +object_gi_m_arrow +object_ds2 +object_ec +object_fish +object_gi_sutaru +object_gi_goddess +object_ssh +object_bigokuta +object_bg +object_spot05_objects +object_spot12_obj +object_bombiwa +object_hintnuts +object_rs +object_spot00_break +object_gla +object_shopnuts +object_geldb +object_gr +object_dog +object_jya_iron +object_jya_door +object_spot01_objects2 +object_spot11_obj +object_kibako2 +object_dns +object_dnk +object_gi_fire +object_gi_insect +object_gi_butterfly +object_gi_ghost +object_gi_soul +object_bowl +object_po_field +object_demo_kekkai +object_efc_doughnut +object_gi_dekupouch +object_ganon_anime1 +object_ganon_anime2 +object_ganon_anime3 +object_gi_rupy +object_spot01_matoya +object_spot01_matoyab +object_po_composer +object_mu +object_wf +object_skb +object_gj +object_geff +object_haka_door +object_gs +object_ps +object_bwall +object_crow +object_cow +object_cob +object_gi_sword_1 +object_door_killer +object_ouke_haka +object_timeblock +object_zl4 +g_pn_01 +g_pn_02 +g_pn_03 +g_pn_04 +g_pn_05 +g_pn_06 +g_pn_07 +g_pn_08 +g_pn_09 +g_pn_10 +g_pn_11 +g_pn_12 +g_pn_13 +g_pn_14 +g_pn_15 +g_pn_16 +g_pn_17 +g_pn_18 +g_pn_19 +g_pn_20 +g_pn_21 +g_pn_22 +g_pn_23 +g_pn_24 +g_pn_25 +g_pn_26 +g_pn_27 +g_pn_28 +g_pn_29 +g_pn_30 +g_pn_31 +g_pn_32 +g_pn_33 +g_pn_34 +g_pn_35 +g_pn_36 +g_pn_37 +g_pn_38 +g_pn_39 +g_pn_40 +g_pn_41 +g_pn_42 +g_pn_43 +g_pn_44 +g_pn_45 +g_pn_46 +g_pn_47 +g_pn_48 +g_pn_49 +g_pn_50 +g_pn_51 +g_pn_52 +g_pn_53 +g_pn_54 +g_pn_55 +g_pn_56 +g_pn_57 +z_select_static +nintendo_rogo_static +title_static +parameter_static +vr_fine0_static +vr_fine0_pal_static +vr_fine1_static +vr_fine1_pal_static +vr_fine2_static +vr_fine2_pal_static +vr_fine3_static +vr_fine3_pal_static +vr_cloud0_static +vr_cloud0_pal_static +vr_cloud1_static +vr_cloud1_pal_static +vr_cloud2_static +vr_cloud2_pal_static +vr_cloud3_static +vr_cloud3_pal_static +vr_holy0_static +vr_holy0_pal_static +vr_holy1_static +vr_holy1_pal_static +vr_MDVR_static +vr_MDVR_pal_static +vr_MNVR_static +vr_MNVR_pal_static +vr_RUVR_static +vr_RUVR_pal_static +vr_LHVR_static +vr_LHVR_pal_static +vr_KHVR_static +vr_KHVR_pal_static +vr_K3VR_static +vr_K3VR_pal_static +vr_K4VR_static +vr_K4VR_pal_static +vr_K5VR_static +vr_K5VR_pal_static +vr_SP1a_static +vr_SP1a_pal_static +vr_MLVR_static +vr_MLVR_pal_static +vr_KKRVR_static +vr_KKRVR_pal_static +vr_KR3VR_static +vr_KR3VR_pal_static +vr_IPVR_static +vr_IPVR_pal_static +vr_KSVR_static +vr_KSVR_pal_static +vr_GLVR_static +vr_GLVR_pal_static +vr_ZRVR_static +vr_ZRVR_pal_static +vr_DGVR_static +vr_DGVR_pal_static +vr_ALVR_static +vr_ALVR_pal_static +vr_NSVR_static +vr_NSVR_pal_static +vr_LBVR_static +vr_LBVR_pal_static +vr_TTVR_static +vr_TTVR_pal_static +vr_FCVR_static +vr_FCVR_pal_static +elf_message_field +elf_message_ydan +ydan_scene +ydan_room_0 +ydan_room_1 +ydan_room_2 +ydan_room_3 +ydan_room_4 +ydan_room_5 +ydan_room_6 +ydan_room_7 +ydan_room_8 +ydan_room_9 +ydan_room_10 +ydan_room_11 +ddan_scene +ddan_room_0 +ddan_room_1 +ddan_room_2 +ddan_room_3 +ddan_room_4 +ddan_room_5 +ddan_room_6 +ddan_room_7 +ddan_room_8 +ddan_room_9 +ddan_room_10 +ddan_room_11 +ddan_room_12 +ddan_room_13 +ddan_room_14 +ddan_room_15 +ddan_room_16 +bdan_scene +bdan_room_0 +bdan_room_1 +bdan_room_2 +bdan_room_3 +bdan_room_4 +bdan_room_5 +bdan_room_6 +bdan_room_7 +bdan_room_8 +bdan_room_9 +bdan_room_10 +bdan_room_11 +bdan_room_12 +bdan_room_13 +bdan_room_14 +bdan_room_15 +Bmori1_scene +Bmori1_room_0 +Bmori1_room_1 +Bmori1_room_2 +Bmori1_room_3 +Bmori1_room_4 +Bmori1_room_5 +Bmori1_room_6 +Bmori1_room_7 +Bmori1_room_8 +Bmori1_room_9 +Bmori1_room_10 +Bmori1_room_11 +Bmori1_room_12 +Bmori1_room_13 +Bmori1_room_14 +Bmori1_room_15 +Bmori1_room_16 +Bmori1_room_17 +Bmori1_room_18 +Bmori1_room_19 +Bmori1_room_20 +Bmori1_room_21 +Bmori1_room_22 +HIDAN_scene +HIDAN_room_0 +HIDAN_room_1 +HIDAN_room_2 +HIDAN_room_3 +HIDAN_room_4 +HIDAN_room_5 +HIDAN_room_6 +HIDAN_room_7 +HIDAN_room_8 +HIDAN_room_9 +HIDAN_room_10 +HIDAN_room_11 +HIDAN_room_12 +HIDAN_room_13 +HIDAN_room_14 +HIDAN_room_15 +HIDAN_room_16 +HIDAN_room_17 +HIDAN_room_18 +HIDAN_room_19 +HIDAN_room_20 +HIDAN_room_21 +HIDAN_room_22 +HIDAN_room_23 +HIDAN_room_24 +HIDAN_room_25 +HIDAN_room_26 +MIZUsin_scene +MIZUsin_room_0 +MIZUsin_room_1 +MIZUsin_room_2 +MIZUsin_room_3 +MIZUsin_room_4 +MIZUsin_room_5 +MIZUsin_room_6 +MIZUsin_room_7 +MIZUsin_room_8 +MIZUsin_room_9 +MIZUsin_room_10 +MIZUsin_room_11 +MIZUsin_room_12 +MIZUsin_room_13 +MIZUsin_room_14 +MIZUsin_room_15 +MIZUsin_room_16 +MIZUsin_room_17 +MIZUsin_room_18 +MIZUsin_room_19 +MIZUsin_room_20 +MIZUsin_room_21 +MIZUsin_room_22 +jyasinzou_scene +jyasinzou_room_0 +jyasinzou_room_1 +jyasinzou_room_2 +jyasinzou_room_3 +jyasinzou_room_4 +jyasinzou_room_5 +jyasinzou_room_6 +jyasinzou_room_7 +jyasinzou_room_8 +jyasinzou_room_9 +jyasinzou_room_10 +jyasinzou_room_11 +jyasinzou_room_12 +jyasinzou_room_13 +jyasinzou_room_14 +jyasinzou_room_15 +jyasinzou_room_16 +jyasinzou_room_17 +jyasinzou_room_18 +jyasinzou_room_19 +jyasinzou_room_20 +jyasinzou_room_21 +jyasinzou_room_22 +jyasinzou_room_23 +jyasinzou_room_24 +jyasinzou_room_25 +jyasinzou_room_26 +jyasinzou_room_27 +jyasinzou_room_28 +HAKAdan_scene +HAKAdan_room_0 +HAKAdan_room_1 +HAKAdan_room_2 +HAKAdan_room_3 +HAKAdan_room_4 +HAKAdan_room_5 +HAKAdan_room_6 +HAKAdan_room_7 +HAKAdan_room_8 +HAKAdan_room_9 +HAKAdan_room_10 +HAKAdan_room_11 +HAKAdan_room_12 +HAKAdan_room_13 +HAKAdan_room_14 +HAKAdan_room_15 +HAKAdan_room_16 +HAKAdan_room_17 +HAKAdan_room_18 +HAKAdan_room_19 +HAKAdan_room_20 +HAKAdan_room_21 +HAKAdan_room_22 +HAKAdanCH_scene +HAKAdanCH_room_0 +HAKAdanCH_room_1 +HAKAdanCH_room_2 +HAKAdanCH_room_3 +HAKAdanCH_room_4 +HAKAdanCH_room_5 +HAKAdanCH_room_6 +ice_doukutu_scene +ice_doukutu_room_0 +ice_doukutu_room_1 +ice_doukutu_room_2 +ice_doukutu_room_3 +ice_doukutu_room_4 +ice_doukutu_room_5 +ice_doukutu_room_6 +ice_doukutu_room_7 +ice_doukutu_room_8 +ice_doukutu_room_9 +ice_doukutu_room_10 +ice_doukutu_room_11 +men_scene +men_room_0 +men_room_1 +men_room_2 +men_room_3 +men_room_4 +men_room_5 +men_room_6 +men_room_7 +men_room_8 +men_room_9 +men_room_10 +ganontika_scene +ganontika_room_0 +ganontika_room_1 +ganontika_room_2 +ganontika_room_3 +ganontika_room_4 +ganontika_room_5 +ganontika_room_6 +ganontika_room_7 +ganontika_room_8 +ganontika_room_9 +ganontika_room_10 +ganontika_room_11 +ganontika_room_12 +ganontika_room_13 +ganontika_room_14 +ganontika_room_15 +ganontika_room_16 +ganontika_room_17 +ganontika_room_18 +ganontika_room_19 +spot00_scene +spot00_room_0 +spot01_scene +spot01_room_0 +spot02_scene +spot02_room_0 +spot02_room_1 +spot03_scene +spot03_room_0 +spot03_room_1 +spot04_scene +spot04_room_0 +spot04_room_1 +spot04_room_2 +spot05_scene +spot05_room_0 +spot06_scene +spot06_room_0 +spot07_scene +spot07_room_0 +spot07_room_1 +spot08_scene +spot08_room_0 +spot09_scene +spot09_room_0 +spot10_scene +spot10_room_0 +spot10_room_1 +spot10_room_2 +spot10_room_3 +spot10_room_4 +spot10_room_5 +spot10_room_6 +spot10_room_7 +spot10_room_8 +spot10_room_9 +spot11_scene +spot11_room_0 +spot12_scene +spot12_room_0 +spot12_room_1 +spot13_scene +spot13_room_0 +spot13_room_1 +spot15_scene +spot15_room_0 +spot16_scene +spot16_room_0 +spot17_scene +spot17_room_0 +spot17_room_1 +spot18_scene +spot18_room_0 +spot18_room_1 +spot18_room_2 +spot18_room_3 +market_day_scene +market_day_room_0 +market_night_scene +market_night_room_0 +kenjyanoma_scene +kenjyanoma_room_0 +tokinoma_scene +tokinoma_room_0 +tokinoma_room_1 +link_home_scene +link_home_room_0 +kokiri_shop_scene +kokiri_shop_room_0 +kokiri_home_scene +kokiri_home_room_0 +kakusiana_scene +kakusiana_room_0 +kakusiana_room_1 +kakusiana_room_2 +kakusiana_room_3 +kakusiana_room_4 +kakusiana_room_5 +kakusiana_room_6 +kakusiana_room_7 +kakusiana_room_8 +kakusiana_room_9 +kakusiana_room_10 +kakusiana_room_11 +kakusiana_room_12 +kakusiana_room_13 +entra_scene +entra_room_0 +moribossroom_scene +moribossroom_room_0 +moribossroom_room_1 +syatekijyou_scene +syatekijyou_room_0 +shop1_scene +shop1_room_0 +hairal_niwa_scene +hairal_niwa_room_0 +ganon_tou_scene +ganon_tou_room_0 +market_alley_scene +market_alley_room_0 +spot20_scene +spot20_room_0 +market_ruins_scene +market_ruins_room_0 +entra_n_scene +entra_n_room_0 +enrui_scene +enrui_room_0 +market_alley_n_scene +market_alley_n_room_0 +hiral_demo_scene +hiral_demo_room_0 +kokiri_home3_scene +kokiri_home3_room_0 +malon_stable_scene +malon_stable_room_0 +kakariko_scene +kakariko_room_0 +bdan_boss_scene +bdan_boss_room_0 +bdan_boss_room_1 +FIRE_bs_scene +FIRE_bs_room_0 +FIRE_bs_room_1 +hut_scene +hut_room_0 +daiyousei_izumi_scene +daiyousei_izumi_room_0 +hakaana_scene +hakaana_room_0 +yousei_izumi_tate_scene +yousei_izumi_tate_room_0 +yousei_izumi_yoko_scene +yousei_izumi_yoko_room_0 +golon_scene +golon_room_0 +zoora_scene +zoora_room_0 +drag_scene +drag_room_0 +alley_shop_scene +alley_shop_room_0 +night_shop_scene +night_shop_room_0 +impa_scene +impa_room_0 +labo_scene +labo_room_0 +tent_scene +tent_room_0 +nakaniwa_scene +nakaniwa_room_0 +ddan_boss_scene +ddan_boss_room_0 +ddan_boss_room_1 +ydan_boss_scene +ydan_boss_room_0 +ydan_boss_room_1 +HAKAdan_bs_scene +HAKAdan_bs_room_0 +HAKAdan_bs_room_1 +MIZUsin_bs_scene +MIZUsin_bs_room_0 +MIZUsin_bs_room_1 +ganon_scene +ganon_room_0 +ganon_room_1 +ganon_room_2 +ganon_room_3 +ganon_room_4 +ganon_room_5 +ganon_room_6 +ganon_room_7 +ganon_room_8 +ganon_room_9 +ganon_boss_scene +ganon_boss_room_0 +jyasinboss_scene +jyasinboss_room_0 +jyasinboss_room_1 +jyasinboss_room_2 +jyasinboss_room_3 +kokiri_home4_scene +kokiri_home4_room_0 +kokiri_home5_scene +kokiri_home5_room_0 +ganon_final_scene +ganon_final_room_0 +kakariko3_scene +kakariko3_room_0 +hakasitarelay_scene +hakasitarelay_room_0 +hakasitarelay_room_1 +hakasitarelay_room_2 +hakasitarelay_room_3 +hakasitarelay_room_4 +hakasitarelay_room_5 +hakasitarelay_room_6 +shrine_scene +shrine_room_0 +turibori_scene +turibori_room_0 +shrine_n_scene +shrine_n_room_0 +shrine_r_scene +shrine_r_room_0 +hakaana2_scene +hakaana2_room_0 +gerudoway_scene +gerudoway_room_0 +gerudoway_room_1 +gerudoway_room_2 +gerudoway_room_3 +gerudoway_room_4 +gerudoway_room_5 +hairal_niwa_n_scene +hairal_niwa_n_room_0 +bowling_scene +bowling_room_0 +hakaana_ouke_scene +hakaana_ouke_room_0 +hakaana_ouke_room_1 +hakaana_ouke_room_2 +hylia_labo_scene +hylia_labo_room_0 +souko_scene +souko_room_0 +souko_room_1 +souko_room_2 +miharigoya_scene +miharigoya_room_0 +mahouya_scene +mahouya_room_0 +takaraya_scene +takaraya_room_0 +takaraya_room_1 +takaraya_room_2 +takaraya_room_3 +takaraya_room_4 +takaraya_room_5 +takaraya_room_6 +ganon_sonogo_scene +ganon_sonogo_room_0 +ganon_sonogo_room_1 +ganon_sonogo_room_2 +ganon_sonogo_room_3 +ganon_sonogo_room_4 +ganon_demo_scene +ganon_demo_room_0 +face_shop_scene +face_shop_room_0 +kinsuta_scene +kinsuta_room_0 +ganontikasonogo_scene +ganontikasonogo_room_0 +ganontikasonogo_room_1 +bump_texture_static +anime_model_1_static +anime_model_2_static +anime_model_3_static +anime_model_4_static +anime_model_5_static +anime_model_6_static +anime_texture_1_static +anime_texture_2_static +anime_texture_3_static +anime_texture_4_static +anime_texture_5_static +anime_texture_6_static +softsprite_matrix_static \ No newline at end of file diff --git a/OTRExporter/OTRExporter/DisplayListExporter.cpp b/OTRExporter/OTRExporter/DisplayListExporter.cpp index 4d4f067b1..dafa8eb72 100644 --- a/OTRExporter/OTRExporter/DisplayListExporter.cpp +++ b/OTRExporter/OTRExporter/DisplayListExporter.cpp @@ -209,7 +209,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina break; case G_MTX: { - if ((!Globals::Instance->HasSegment(GETSEGNUM(data))) || ((data & 0xFFFFFFFF) == 0x07000000)) // En_Zf and En_Ny place a DL in segment 7 + if ((!Globals::Instance->HasSegment(GETSEGNUM(data), res->parent->workerID)) || ((data & 0xFFFFFFFF) == 0x07000000)) // En_Zf and En_Ny place a DL in segment 7 { uint32_t pp = (data & 0x000000FF00000000) >> 32; uint32_t mm = (data & 0x00000000FFFFFFFF); @@ -370,7 +370,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina //std::string fName = StringHelper::Sprintf("%s\\%s", GetParentFolderName(res).c_str(), dListDecl2->varName.c_str()); std::string fName = OTRExporter_DisplayList::GetPathToRes(res, dListDecl2->varName.c_str()); - if (!File::Exists("Extract\\" + fName)) + if (files.find(fName) == files.end() && !File::Exists("Extract\\" + fName)) { MemoryStream* dlStream = new MemoryStream(); BinaryWriter dlWriter = BinaryWriter(dlStream); @@ -382,7 +382,10 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina //otrArchive->RemoveFile(fName); #endif - File::WriteAllBytes("Extract\\" + fName, dlStream->ToVector()); + if (Globals::Instance->fileMode != ZFileMode::ExtractDirectory) + File::WriteAllBytes("Extract\\" + fName, dlStream->ToVector()); + else + files[fName] = dlStream->ToVector(); //otrArchive->AddFile(fName, (uintptr_t)dlStream->ToVector().data(), dlWriter.GetBaseAddress()); } @@ -401,7 +404,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina //case G_BRANCH_Z: case G_DL: { - if ((!Globals::Instance->HasSegment(GETSEGNUM(data)) && (int)opF3D != G_BRANCH_Z) + if ((!Globals::Instance->HasSegment(GETSEGNUM(data), res->parent->workerID) && (int)opF3D != G_BRANCH_Z) || ((data & 0xFFFFFFFF) == 0x07000000)) // En_Zf and En_Ny place a DL in segment 7 { int32_t pp = (data & 0x00FF000000000000) >> 56; @@ -464,14 +467,17 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina //std::string fName = StringHelper::Sprintf("%s\\%s", GetParentFolderName(res).c_str(), dListDecl2->varName.c_str()); std::string fName = OTRExporter_DisplayList::GetPathToRes(res, dListDecl2->varName.c_str()); - if (!File::Exists("Extract\\" + fName)) + if (files.find(fName) == files.end() && !File::Exists("Extract\\" + fName)) { MemoryStream* dlStream = new MemoryStream(); BinaryWriter dlWriter = BinaryWriter(dlStream); Save(dList->otherDLists[i], outPath, &dlWriter); - File::WriteAllBytes("Extract\\" + fName, dlStream->ToVector()); + if (Globals::Instance->fileMode != ZFileMode::ExtractDirectory) + File::WriteAllBytes("Extract\\" + fName, dlStream->ToVector()); + else + files[fName] = dlStream->ToVector(); } } else @@ -675,7 +681,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina uint32_t seg = data & 0xFFFFFFFF; int32_t texAddress = Seg2Filespace(data, dList->parent->baseAddress); - if (!Globals::Instance->HasSegment(GETSEGNUM(seg))) + if (!Globals::Instance->HasSegment(GETSEGNUM(seg), res->parent->workerID)) { int32_t __ = (data & 0x00FF000000000000) >> 48; int32_t www = (data & 0x00000FFF00000000) >> 32; @@ -693,7 +699,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina else { std::string texName = ""; - bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, dList->parent, "", texName); + bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, dList->parent, "", texName, res->parent->workerID); int32_t __ = (data & 0x00FF000000000000) >> 48; int32_t www = (data & 0x00000FFF00000000) >> 32; @@ -712,7 +718,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina if (foundDecl) { - ZFile* assocFile = Globals::Instance->GetSegment(GETSEGNUM(seg)); + ZFile* assocFile = Globals::Instance->GetSegment(GETSEGNUM(seg), res->parent->workerID); std::string assocFileName = assocFile->GetName(); std::string fName = ""; @@ -750,42 +756,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina word1 = value.words.w1 | 0xF0000000; } else - //if (dList->vertices.size() > 0) { - // Connect neighboring vertex arrays - std::vector>> vertsKeys(dList->vertices.begin(), - dList->vertices.end()); - - if (vertsKeys.size() > 0) - { - auto lastItem = vertsKeys[0]; - - for (size_t i = 1; i < vertsKeys.size(); i++) - { - auto curItem = vertsKeys[i]; - - int32_t sizeDiff = curItem.first - (lastItem.first + (lastItem.second.size() * 16)); - - // Make sure there isn't an unaccounted inbetween these two - if (sizeDiff == 0) - { - for (auto v : curItem.second) - { - dList->vertices[lastItem.first].push_back(v); - lastItem.second.push_back(v); - } - - dList->vertices.erase(curItem.first); - vertsKeys.erase(vertsKeys.begin() + i); - - i--; - continue; - } - - lastItem = curItem; - } - } - // Write CRC64 of vtx file name uint32_t addr = data & 0xFFFFFFFF; @@ -793,10 +764,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina addr -= dList->parent->baseAddress; auto segOffset = GETSEGOFFSET(addr); - //uint32_t seg = data & 0xFFFFFFFF; Declaration* vtxDecl = dList->parent->GetDeclarationRanged(segOffset); - //std::string vtxName = ""; - //bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, dList->parent, "", vtxName); int32_t aa = (data & 0x000000FF00000000ULL) >> 32; int32_t nn = (data & 0x000FF00000000000ULL) >> 44; @@ -822,9 +790,8 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina word0 = hash >> 32; word1 = hash & 0xFFFFFFFF; - if (!File::Exists("Extract\\" + fName)) + if (files.find(fName) == files.end() && !File::Exists("Extract\\" + fName)) { - //printf("Exporting VTX Data %s\n", fName.c_str()); // Write vertices to file MemoryStream* vtxStream = new MemoryStream(); BinaryWriter vtxWriter = BinaryWriter(vtxStream); @@ -847,44 +814,40 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina vtxWriter.Write((uint32_t)ZResourceType::Vertex); vtxWriter.Write((uint32_t)arrCnt); - size_t sz = dList->vertices[vtxDecl->address].size(); + auto start = std::chrono::steady_clock::now(); - //if (sz > 0) + // God dammit this is so dumb + for (size_t i = 0; i < split.size(); i++) { - auto start = std::chrono::steady_clock::now(); + std::string line = split[i]; - // God dammit this is so dumb - for (size_t i = 0; i < split.size(); i++) + if (StringHelper::Contains(line, "VTX(")) { - std::string line = split[i]; + auto split2 = StringHelper::Split(StringHelper::Split(StringHelper::Split(line, "VTX(")[1], ")")[0], ","); - if (StringHelper::Contains(line, "VTX(")) - { - auto split2 = StringHelper::Split(StringHelper::Split(StringHelper::Split(line, "VTX(")[1], ")")[0], ","); + vtxWriter.Write((int16_t)std::stoi(split2[0], nullptr, 10)); // v.x + vtxWriter.Write((int16_t)std::stoi(split2[1], nullptr, 10)); // v.y + vtxWriter.Write((int16_t)std::stoi(split2[2], nullptr, 10)); // v.z - vtxWriter.Write((int16_t)std::stoi(split2[0], nullptr, 10)); // v.x - vtxWriter.Write((int16_t)std::stoi(split2[1], nullptr, 10)); // v.y - vtxWriter.Write((int16_t)std::stoi(split2[2], nullptr, 10)); // v.z + vtxWriter.Write((int16_t)0); // v.flag - vtxWriter.Write((int16_t)0); // v.flag - - vtxWriter.Write((int16_t)std::stoi(split2[3], nullptr, 10)); // v.s - vtxWriter.Write((int16_t)std::stoi(split2[4], nullptr, 10)); // v.t - - vtxWriter.Write((uint8_t)std::stoi(split2[5], nullptr, 10)); // v.r - vtxWriter.Write((uint8_t)std::stoi(split2[6], nullptr, 10)); // v.g - vtxWriter.Write((uint8_t)std::stoi(split2[7], nullptr, 10)); // v.b - vtxWriter.Write((uint8_t)std::stoi(split2[8], nullptr, 10)); // v.a - } + vtxWriter.Write((int16_t)std::stoi(split2[3], nullptr, 10)); // v.s + vtxWriter.Write((int16_t)std::stoi(split2[4], nullptr, 10)); // v.t + + vtxWriter.Write((uint8_t)std::stoi(split2[5], nullptr, 10)); // v.r + vtxWriter.Write((uint8_t)std::stoi(split2[6], nullptr, 10)); // v.g + vtxWriter.Write((uint8_t)std::stoi(split2[7], nullptr, 10)); // v.b + vtxWriter.Write((uint8_t)std::stoi(split2[8], nullptr, 10)); // v.a } - - File::WriteAllBytes("Extract\\" + fName, vtxStream->ToVector()); - - auto end = std::chrono::steady_clock::now(); - size_t diff = std::chrono::duration_cast(end - start).count(); - - //printf("Exported VTX Array %s in %zums\n", fName.c_str(), diff); } + + if (Globals::Instance->fileMode != ZFileMode::ExtractDirectory) + File::WriteAllBytes("Extract\\" + fName, vtxStream->ToVector()); + else + files[fName] = vtxStream->ToVector(); + + auto end = std::chrono::steady_clock::now(); + size_t diff = std::chrono::duration_cast(end - start).count(); } } else @@ -892,15 +855,6 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina spdlog::error("vtxDecl == nullptr!"); } } - /*else - { - writer->Write(word0); - writer->Write(word1); - word0 = 0; - word1 = 0; - - spdlog::error("dList->vertices.size() <= 0!"); - }*/ } break; } diff --git a/OTRExporter/OTRExporter/Main.cpp b/OTRExporter/OTRExporter/Main.cpp index 24a156fe9..e62ed5ef4 100644 --- a/OTRExporter/OTRExporter/Main.cpp +++ b/OTRExporter/OTRExporter/Main.cpp @@ -25,6 +25,7 @@ std::string otrFileName = "oot.otr"; std::shared_ptr otrArchive; BinaryWriter* fileWriter; std::chrono::steady_clock::time_point fileStart, resStart; +std::map> files; void InitVersionInfo(); @@ -39,6 +40,8 @@ static void ExporterParseFileMode(const std::string& buildMode, ZFileMode& fileM { fileMode = (ZFileMode)ExporterFileMode::BuildOTR; + printf("BOTR: Generating OTR Archive...\n"); + if (File::Exists(otrFileName)) otrArchive = std::shared_ptr(new Ship::Archive(otrFileName, true)); else @@ -54,6 +57,31 @@ static void ExporterParseFileMode(const std::string& buildMode, ZFileMode& fileM } } +static void ExporterProgramEnd() +{ + if (Globals::Instance->fileMode == ZFileMode::ExtractDirectory) + { + printf("Generating OTR Archive...\n"); + otrArchive = Ship::Archive::CreateArchive(otrFileName, 65536 / 2); + + for (auto item : files) + { + auto fileData = item.second; + otrArchive->AddFile(item.first, (uintptr_t)fileData.data(), fileData.size()); + } + + // Add any additional files that need to be manually copied... + auto lst = Directory::ListFiles("Extract"); + + for (auto item : lst) + { + auto fileData = File::ReadAllBytes(item); + otrArchive->AddFile(StringHelper::Split(item, "Extract\\")[1], (uintptr_t)fileData.data(), fileData.size()); + } + } +} + + static void ExporterParseArgs(int argc, char* argv[], int& i) { std::string arg = argv[i]; @@ -85,6 +113,7 @@ static void ExporterFileBegin(ZFile* file) static void ExporterFileEnd(ZFile* file) { + int bp = 0; } static void ExporterResourceEnd(ZResource* res, BinaryWriter& writer) @@ -124,7 +153,10 @@ static void ExporterResourceEnd(ZResource* res, BinaryWriter& writer) else fName = StringHelper::Sprintf("%s\\%s", oName.c_str(), rName.c_str()); - File::WriteAllBytes("Extract\\" + fName, strem->ToVector()); + if (Globals::Instance->fileMode == ZFileMode::ExtractDirectory) + files[fName] = strem->ToVector(); + else + File::WriteAllBytes("Extract\\" + fName, strem->ToVector()); } auto end = std::chrono::steady_clock::now(); @@ -155,6 +187,8 @@ static void ImportExporters() exporterSet->beginXMLFunc = ExporterXMLBegin; exporterSet->endXMLFunc = ExporterXMLEnd; exporterSet->resSaveFunc = ExporterResourceEnd; + exporterSet->endProgramFunc = ExporterProgramEnd; + exporterSet->exporters[ZResourceType::Background] = new OTRExporter_Background(); exporterSet->exporters[ZResourceType::Texture] = new OTRExporter_Texture(); exporterSet->exporters[ZResourceType::Room] = new OTRExporter_Room(); diff --git a/OTRExporter/OTRExporter/Main.h b/OTRExporter/OTRExporter/Main.h index a29e21859..af4ada763 100644 --- a/OTRExporter/OTRExporter/Main.h +++ b/OTRExporter/OTRExporter/Main.h @@ -2,4 +2,5 @@ #include -extern std::shared_ptr otrArchive; \ No newline at end of file +extern std::shared_ptr otrArchive; +extern std::map> files; \ No newline at end of file diff --git a/OTRExporter/OTRExporter/OTRExporter.vcxproj b/OTRExporter/OTRExporter/OTRExporter.vcxproj index 96531304b..4ed7d72e1 100644 --- a/OTRExporter/OTRExporter/OTRExporter.vcxproj +++ b/OTRExporter/OTRExporter/OTRExporter.vcxproj @@ -63,6 +63,12 @@ + + + {02d10590-9542-3f55-aaf8-6055677e2a2a} + false + + 16.0 Win32Proj @@ -118,19 +124,31 @@ true $(SolutionDir)otrlib;$(SolutionDir)\ZAPD\ZAPD\;$(SolutionDir)\ZAPD\lib\tinyxml2;$(SolutionDir)\ZAPD\lib\libgfxd;$(SolutionDir)\ZAPD\lib\elfio;$(SolutionDir)\ZAPD\lib\assimp\include;$(SolutionDir)\ZAPD\lib\stb;$(ProjectDir);$(IncludePath) + MinimumRecommendedRules.ruleset + + false + MinimumRecommendedRules.ruleset + + true $(ProjectDir)..\..\ZAPDTR\ZAPD;$(ProjectDir)..\..\ZAPDTR\lib\tinyxml2;$(ProjectDir)..\..\ZAPDTR\lib\libgfxd;$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)..\..\libultraship\libultraship;$(ProjectDir)..\..\libultraship\libultraship\lib\spdlog\include;$(ProjectDir)..\..\libultraship\libultraship\Lib\Fast3D\U64;$(IncludePath) $(ProjectDir)..\..\libultraship\libultraship;$(LibraryPath) + MinimumRecommendedRules.ruleset + + false $(ProjectDir)..\..\ZAPDTR\ZAPD;$(ProjectDir)..\..\ZAPDTR\lib\tinyxml2;$(ProjectDir)..\..\ZAPDTR\lib\libgfxd;$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)..\..\libultraship\libultraship;$(ProjectDir)..\..\libultraship\libultraship\lib\spdlog\include;$(ProjectDir)..\..\libultraship\libultraship\Lib\Fast3D\U64;$(IncludePath) $(ProjectDir)..\..\libultraship\libultraship;$(LibraryPath) + MinimumRecommendedRules.ruleset + + diff --git a/OTRExporter/OTRExporter/RoomExporter.cpp b/OTRExporter/OTRExporter/RoomExporter.cpp index 622901aff..5b7ce4323 100644 --- a/OTRExporter/OTRExporter/RoomExporter.cpp +++ b/OTRExporter/OTRExporter/RoomExporter.cpp @@ -407,7 +407,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite { uint32_t seg = cmdHeaders->headers[i] & 0xFFFFFFFF; std::string headerName = ""; - bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, room->parent, "", headerName); + bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, room->parent, "", headerName, res->parent->workerID); if (headerName == "NULL") writer->Write(""); else @@ -443,7 +443,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite SetCutscenes* cmdSetCutscenes = (SetCutscenes*)cmd; std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdSetCutscenes->cmdArg2, room->parent, "CutsceneData", listName); + Globals::Instance->GetSegmentedPtrName(cmdSetCutscenes->cmdArg2, room->parent, "CutsceneData", listName, res->parent->workerID); std::string fName = OTRExporter_DisplayList::GetPathToRes(room, listName); //std::string fName = StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), listName.c_str()); writer->Write(fName); @@ -452,8 +452,11 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite BinaryWriter csWriter = BinaryWriter(csStream); OTRExporter_Cutscene cs; cs.Save(cmdSetCutscenes->cutscenes[0], "", &csWriter); - - File::WriteAllBytes("Extract\\" + fName, csStream->ToVector()); + + if (Globals::Instance->fileMode != ZFileMode::ExtractDirectory) + File::WriteAllBytes("Extract\\" + fName, csStream->ToVector()); + else + files[fName] = csStream->ToVector(); //std::string fName = OTRExporter_DisplayList::GetPathToRes(res, vtxDecl->varName); //otrArchive->AddFile(fName, (uintptr_t)csStream->ToVector().data(), csWriter.GetBaseAddress()); @@ -477,7 +480,10 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite OTRExporter_Path pathExp; pathExp.Save(&cmdSetPathways->pathwayList, outPath, &pathWriter); - File::WriteAllBytes("Extract\\" + path, pathStream->ToVector()); + if (Globals::Instance->fileMode != ZFileMode::ExtractDirectory) + File::WriteAllBytes("Extract\\" + path, pathStream->ToVector()); + else + files[path] = pathStream->ToVector(); //otrArchive->AddFile(path, (uintptr_t)pathStream->ToVector().data(), pathWriter.GetBaseAddress()); diff --git a/OTRExporter/OTRExporter/SkeletonExporter.cpp b/OTRExporter/OTRExporter/SkeletonExporter.cpp index cd9f7a8fd..3e0c58d06 100644 --- a/OTRExporter/OTRExporter/SkeletonExporter.cpp +++ b/OTRExporter/OTRExporter/SkeletonExporter.cpp @@ -23,7 +23,7 @@ void OTRExporter_Skeleton::Save(ZResource* res, const fs::path& outPath, BinaryW Declaration* skelDecl = skel->parent->GetDeclarationRanged(GETSEGOFFSET(skel->limbsTable.limbsAddresses[i])); std::string name; - bool foundDecl = Globals::Instance->GetSegmentedPtrName(skel->limbsTable.limbsAddresses[i], skel->parent, "", name); + bool foundDecl = Globals::Instance->GetSegmentedPtrName(skel->limbsTable.limbsAddresses[i], skel->parent, "", name, res->parent->workerID); if (foundDecl) { if (name.at(0) == '&') diff --git a/OTRExporter/OTRExporter/SkeletonLimbExporter.cpp b/OTRExporter/OTRExporter/SkeletonLimbExporter.cpp index d22c3d000..e29c9a425 100644 --- a/OTRExporter/OTRExporter/SkeletonLimbExporter.cpp +++ b/OTRExporter/OTRExporter/SkeletonLimbExporter.cpp @@ -86,7 +86,7 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin if (limb->childPtr != 0) { std::string name; - bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->childPtr, limb->parent, "", name); + bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->childPtr, limb->parent, "", name, res->parent->workerID); if (foundDecl) { if (name.at(0) == '&') @@ -107,7 +107,7 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin if (limb->siblingPtr != 0) { std::string name; - bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->siblingPtr, limb->parent, "", name); + bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->siblingPtr, limb->parent, "", name, res->parent->workerID); if (foundDecl) { if (name.at(0) == '&') @@ -128,7 +128,7 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin if (limb->dListPtr != 0) { std::string name; - bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dListPtr, limb->parent, "", name); + bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dListPtr, limb->parent, "", name, res->parent->workerID); if (foundDecl) { if (name.at(0) == '&') @@ -149,7 +149,7 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin if (limb->dList2Ptr != 0) { std::string name; - bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dList2Ptr, limb->parent, "", name); + bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dList2Ptr, limb->parent, "", name, res->parent->workerID); if (foundDecl) { if (name.at(0) == '&') diff --git a/OTRExporter/extract_assets.py b/OTRExporter/extract_assets.py index 404b49ced..2922bbf06 100755 --- a/OTRExporter/extract_assets.py +++ b/OTRExporter/extract_assets.py @@ -48,7 +48,7 @@ def ExtractFunc(fullPath): *pathList, xmlName = fullPath.split(os.sep) objectName = os.path.splitext(xmlName)[0] - outPath = os.path.join("..\\soh\\assets\\", *pathList[4:], objectName) + outPath = os.path.join("..\\soh\\assets\\", *pathList[5:], objectName) os.makedirs(outPath, exist_ok=True) outSourcePath = outPath @@ -64,6 +64,7 @@ def main(): parser.add_argument("-s", "--single", help="asset path relative to assets/, e.g. objects/gameplay_keep") parser.add_argument("-f", "--force", help="Force the extraction of every xml instead of checking the touched ones.", action="store_true") parser.add_argument("-u", "--unaccounted", help="Enables ZAPD unaccounted detector warning system.", action="store_true") + parser.add_argument("-v", "--version", help="Sets game version.") args = parser.parse_args() global mainAbort @@ -73,6 +74,13 @@ def main(): extractedAssetsTracker = manager.dict() + xmlVer = "GC_NMQ_D" + + if (args.version == "gc_pal_nmpq"): + xmlVer = "GC_NMQ_PAL_F" + elif (args.version == "dbg_mq"): + xmlVer = "GC_MQ_D" + asset_path = args.single if asset_path is not None: fullPath = os.path.join("..\\soh\\assets", "xml", asset_path + ".xml") @@ -90,7 +98,7 @@ def main(): extract_staff_text_path = None xmlFiles = [] - for currentPath, _, files in os.walk(os.path.join("..\\soh\\assets", "xml")): + for currentPath, _, files in os.walk(os.path.join("..\\soh\\assets\\xml\\", xmlVer)): for file in files: fullPath = os.path.join(currentPath, file) if file.endswith(".xml"): diff --git a/OTRExporter/extract_baserom_debug.py b/OTRExporter/extract_baserom_debug.py new file mode 100644 index 000000000..a3eb83a8f --- /dev/null +++ b/OTRExporter/extract_baserom_debug.py @@ -0,0 +1,1608 @@ +#!/usr/bin/python3 + +import os +import sys +import struct +from multiprocessing import Pool, cpu_count + + +ROM_FILE_NAME = 'baserom_non_mq.z64' +FILE_TABLE_OFFSET = 0x12F70 + +FILE_NAMES = [ + 'makerom', + 'boot', + 'dmadata', + 'Audiobank', + 'Audioseq', + 'Audiotable', + 'link_animetion', + 'icon_item_static', + 'icon_item_24_static', + 'icon_item_field_static', + 'icon_item_dungeon_static', + 'icon_item_gameover_static', + 'icon_item_nes_static', + 'icon_item_ger_static', + 'icon_item_fra_static', + 'item_name_static', + 'map_name_static', + 'do_action_static', + 'message_static', + 'message_texture_static', + 'nes_font_static', + 'nes_message_data_static', + 'ger_message_data_static', + 'fra_message_data_static', + 'staff_message_data_static', + 'map_grand_static', + 'map_i_static', + 'map_48x85_static', + 'code', + 'ovl_title', + 'ovl_select', + 'ovl_opening', + 'ovl_file_choose', + 'ovl_kaleido_scope', + 'ovl_player_actor', + 'ovl_map_mark_data', + 'ovl_En_Test', + 'ovl_Arms_Hook', + 'ovl_Arrow_Fire', + 'ovl_Arrow_Ice', + 'ovl_Arrow_Light', + 'ovl_Bg_Bdan_Objects', + 'ovl_Bg_Bdan_Switch', + 'ovl_Bg_Bom_Guard', + 'ovl_Bg_Bombwall', + 'ovl_Bg_Bowl_Wall', + 'ovl_Bg_Breakwall', + 'ovl_Bg_Ddan_Jd', + 'ovl_Bg_Ddan_Kd', + 'ovl_Bg_Dodoago', + 'ovl_Bg_Dy_Yoseizo', + 'ovl_Bg_Ganon_Otyuka', + 'ovl_Bg_Gate_Shutter', + 'ovl_Bg_Gjyo_Bridge', + 'ovl_Bg_Gnd_Darkmeiro', + 'ovl_Bg_Gnd_Firemeiro', + 'ovl_Bg_Gnd_Iceblock', + 'ovl_Bg_Gnd_Nisekabe', + 'ovl_Bg_Gnd_Soulmeiro', + 'ovl_Bg_Haka', + 'ovl_Bg_Haka_Gate', + 'ovl_Bg_Haka_Huta', + 'ovl_Bg_Haka_Megane', + 'ovl_Bg_Haka_MeganeBG', + 'ovl_Bg_Haka_Sgami', + 'ovl_Bg_Haka_Ship', + 'ovl_Bg_Haka_Trap', + 'ovl_Bg_Haka_Tubo', + 'ovl_Bg_Haka_Water', + 'ovl_Bg_Haka_Zou', + 'ovl_Bg_Heavy_Block', + 'ovl_Bg_Hidan_Curtain', + 'ovl_Bg_Hidan_Dalm', + 'ovl_Bg_Hidan_Firewall', + 'ovl_Bg_Hidan_Fslift', + 'ovl_Bg_Hidan_Fwbig', + 'ovl_Bg_Hidan_Hamstep', + 'ovl_Bg_Hidan_Hrock', + 'ovl_Bg_Hidan_Kousi', + 'ovl_Bg_Hidan_Kowarerukabe', + 'ovl_Bg_Hidan_Rock', + 'ovl_Bg_Hidan_Rsekizou', + 'ovl_Bg_Hidan_Sekizou', + 'ovl_Bg_Hidan_Sima', + 'ovl_Bg_Hidan_Syoku', + 'ovl_Bg_Ice_Objects', + 'ovl_Bg_Ice_Shelter', + 'ovl_Bg_Ice_Shutter', + 'ovl_Bg_Ice_Turara', + 'ovl_Bg_Ingate', + 'ovl_Bg_Jya_1flift', + 'ovl_Bg_Jya_Amishutter', + 'ovl_Bg_Jya_Bigmirror', + 'ovl_Bg_Jya_Block', + 'ovl_Bg_Jya_Bombchuiwa', + 'ovl_Bg_Jya_Bombiwa', + 'ovl_Bg_Jya_Cobra', + 'ovl_Bg_Jya_Goroiwa', + 'ovl_Bg_Jya_Haheniron', + 'ovl_Bg_Jya_Ironobj', + 'ovl_Bg_Jya_Kanaami', + 'ovl_Bg_Jya_Lift', + 'ovl_Bg_Jya_Megami', + 'ovl_Bg_Jya_Zurerukabe', + 'ovl_Bg_Menkuri_Eye', + 'ovl_Bg_Menkuri_Kaiten', + 'ovl_Bg_Menkuri_Nisekabe', + 'ovl_Bg_Mizu_Bwall', + 'ovl_Bg_Mizu_Movebg', + 'ovl_Bg_Mizu_Shutter', + 'ovl_Bg_Mizu_Uzu', + 'ovl_Bg_Mizu_Water', + 'ovl_Bg_Mjin', + 'ovl_Bg_Mori_Bigst', + 'ovl_Bg_Mori_Elevator', + 'ovl_Bg_Mori_Hashigo', + 'ovl_Bg_Mori_Hashira4', + 'ovl_Bg_Mori_Hineri', + 'ovl_Bg_Mori_Idomizu', + 'ovl_Bg_Mori_Kaitenkabe', + 'ovl_Bg_Mori_Rakkatenjo', + 'ovl_Bg_Po_Event', + 'ovl_Bg_Po_Syokudai', + 'ovl_Bg_Pushbox', + 'ovl_Bg_Relay_Objects', + 'ovl_Bg_Spot00_Break', + 'ovl_Bg_Spot00_Hanebasi', + 'ovl_Bg_Spot01_Fusya', + 'ovl_Bg_Spot01_Idohashira', + 'ovl_Bg_Spot01_Idomizu', + 'ovl_Bg_Spot01_Idosoko', + 'ovl_Bg_Spot01_Objects2', + 'ovl_Bg_Spot02_Objects', + 'ovl_Bg_Spot03_Taki', + 'ovl_Bg_Spot05_Soko', + 'ovl_Bg_Spot06_Objects', + 'ovl_Bg_Spot07_Taki', + 'ovl_Bg_Spot08_Bakudankabe', + 'ovl_Bg_Spot08_Iceblock', + 'ovl_Bg_Spot09_Obj', + 'ovl_Bg_Spot11_Bakudankabe', + 'ovl_Bg_Spot11_Oasis', + 'ovl_Bg_Spot12_Gate', + 'ovl_Bg_Spot12_Saku', + 'ovl_Bg_Spot15_Rrbox', + 'ovl_Bg_Spot15_Saku', + 'ovl_Bg_Spot16_Bombstone', + 'ovl_Bg_Spot16_Doughnut', + 'ovl_Bg_Spot17_Bakudankabe', + 'ovl_Bg_Spot17_Funen', + 'ovl_Bg_Spot18_Basket', + 'ovl_Bg_Spot18_Futa', + 'ovl_Bg_Spot18_Obj', + 'ovl_Bg_Spot18_Shutter', + 'ovl_Bg_Sst_Floor', + 'ovl_Bg_Toki_Hikari', + 'ovl_Bg_Toki_Swd', + 'ovl_Bg_Treemouth', + 'ovl_Bg_Umajump', + 'ovl_Bg_Vb_Sima', + 'ovl_Bg_Ydan_Hasi', + 'ovl_Bg_Ydan_Maruta', + 'ovl_Bg_Ydan_Sp', + 'ovl_Bg_Zg', + 'ovl_Boss_Dodongo', + 'ovl_Boss_Fd', + 'ovl_Boss_Fd2', + 'ovl_Boss_Ganon', + 'ovl_Boss_Ganon2', + 'ovl_Boss_Ganondrof', + 'ovl_Boss_Goma', + 'ovl_Boss_Mo', + 'ovl_Boss_Sst', + 'ovl_Boss_Tw', + 'ovl_Boss_Va', + 'ovl_Demo_6K', + 'ovl_Demo_Du', + 'ovl_Demo_Ec', + 'ovl_Demo_Effect', + 'ovl_Demo_Ext', + 'ovl_Demo_Geff', + 'ovl_Demo_Gj', + 'ovl_Demo_Go', + 'ovl_Demo_Gt', + 'ovl_Demo_Ik', + 'ovl_Demo_Im', + 'ovl_Demo_Kankyo', + 'ovl_Demo_Kekkai', + 'ovl_Demo_Sa', + 'ovl_Demo_Shd', + 'ovl_Demo_Tre_Lgt', + 'ovl_Door_Ana', + 'ovl_Door_Gerudo', + 'ovl_Door_Killer', + 'ovl_Door_Shutter', + 'ovl_Door_Toki', + 'ovl_Door_Warp1', + 'ovl_Efc_Erupc', + 'ovl_Eff_Dust', + 'ovl_Effect_Ss_Blast', + 'ovl_Effect_Ss_Bomb', + 'ovl_Effect_Ss_Bomb2', + 'ovl_Effect_Ss_Bubble', + 'ovl_Effect_Ss_D_Fire', + 'ovl_Effect_Ss_Dead_Db', + 'ovl_Effect_Ss_Dead_Dd', + 'ovl_Effect_Ss_Dead_Ds', + 'ovl_Effect_Ss_Dead_Sound', + 'ovl_Effect_Ss_Dt_Bubble', + 'ovl_Effect_Ss_Dust', + 'ovl_Effect_Ss_En_Fire', + 'ovl_Effect_Ss_En_Ice', + 'ovl_Effect_Ss_Extra', + 'ovl_Effect_Ss_Fcircle', + 'ovl_Effect_Ss_Fhg_Flash', + 'ovl_Effect_Ss_Fire_Tail', + 'ovl_Effect_Ss_G_Fire', + 'ovl_Effect_Ss_G_Magma', + 'ovl_Effect_Ss_G_Magma2', + 'ovl_Effect_Ss_G_Ripple', + 'ovl_Effect_Ss_G_Spk', + 'ovl_Effect_Ss_G_Splash', + 'ovl_Effect_Ss_Hahen', + 'ovl_Effect_Ss_HitMark', + 'ovl_Effect_Ss_Ice_Piece', + 'ovl_Effect_Ss_Ice_Smoke', + 'ovl_Effect_Ss_K_Fire', + 'ovl_Effect_Ss_Kakera', + 'ovl_Effect_Ss_KiraKira', + 'ovl_Effect_Ss_Lightning', + 'ovl_Effect_Ss_Sibuki', + 'ovl_Effect_Ss_Sibuki2', + 'ovl_Effect_Ss_Solder_Srch_Ball', + 'ovl_Effect_Ss_Stick', + 'ovl_Effect_Ss_Stone1', + 'ovl_Elf_Msg', + 'ovl_Elf_Msg2', + 'ovl_En_Am', + 'ovl_En_Ani', + 'ovl_En_Anubice', + 'ovl_En_Anubice_Fire', + 'ovl_En_Anubice_Tag', + 'ovl_En_Arow_Trap', + 'ovl_En_Arrow', + 'ovl_En_Attack_Niw', + 'ovl_En_Ba', + 'ovl_En_Bb', + 'ovl_En_Bdfire', + 'ovl_En_Bigokuta', + 'ovl_En_Bili', + 'ovl_En_Bird', + 'ovl_En_Blkobj', + 'ovl_En_Bom', + 'ovl_En_Bom_Bowl_Man', + 'ovl_En_Bom_Bowl_Pit', + 'ovl_En_Bom_Chu', + 'ovl_En_Bombf', + 'ovl_En_Boom', + 'ovl_En_Box', + 'ovl_En_Brob', + 'ovl_En_Bubble', + 'ovl_En_Butte', + 'ovl_En_Bw', + 'ovl_En_Bx', + 'ovl_En_Changer', + 'ovl_En_Clear_Tag', + 'ovl_En_Cow', + 'ovl_En_Crow', + 'ovl_En_Cs', + 'ovl_En_Daiku', + 'ovl_En_Daiku_Kakariko', + 'ovl_En_Dekubaba', + 'ovl_En_Dekunuts', + 'ovl_En_Dh', + 'ovl_En_Dha', + 'ovl_En_Diving_Game', + 'ovl_En_Dns', + 'ovl_En_Dnt_Demo', + 'ovl_En_Dnt_Jiji', + 'ovl_En_Dnt_Nomal', + 'ovl_En_Dodojr', + 'ovl_En_Dodongo', + 'ovl_En_Dog', + 'ovl_En_Door', + 'ovl_En_Ds', + 'ovl_En_Du', + 'ovl_En_Dy_Extra', + 'ovl_En_Eg', + 'ovl_En_Eiyer', + 'ovl_En_Elf', + 'ovl_En_Encount1', + 'ovl_En_Encount2', + 'ovl_En_Ex_Item', + 'ovl_En_Ex_Ruppy', + 'ovl_En_Fd', + 'ovl_En_Fd_Fire', + 'ovl_En_Fhg_Fire', + 'ovl_En_Fire_Rock', + 'ovl_En_Firefly', + 'ovl_En_Fish', + 'ovl_En_Floormas', + 'ovl_En_Fr', + 'ovl_En_Fu', + 'ovl_En_Fw', + 'ovl_En_Fz', + 'ovl_En_G_Switch', + 'ovl_En_Ganon_Mant', + 'ovl_En_Ganon_Organ', + 'ovl_En_Gb', + 'ovl_En_Ge1', + 'ovl_En_Ge2', + 'ovl_En_Ge3', + 'ovl_En_GeldB', + 'ovl_En_GirlA', + 'ovl_En_Gm', + 'ovl_En_Go', + 'ovl_En_Go2', + 'ovl_En_Goma', + 'ovl_En_Goroiwa', + 'ovl_En_Gs', + 'ovl_En_Guest', + 'ovl_En_Hata', + 'ovl_En_Heishi1', + 'ovl_En_Heishi2', + 'ovl_En_Heishi3', + 'ovl_En_Heishi4', + 'ovl_En_Hintnuts', + 'ovl_En_Holl', + 'ovl_En_Honotrap', + 'ovl_En_Horse', + 'ovl_En_Horse_Game_Check', + 'ovl_En_Horse_Ganon', + 'ovl_En_Horse_Link_Child', + 'ovl_En_Horse_Normal', + 'ovl_En_Horse_Zelda', + 'ovl_En_Hs', + 'ovl_En_Hs2', + 'ovl_En_Hy', + 'ovl_En_Ice_Hono', + 'ovl_En_Ik', + 'ovl_En_In', + 'ovl_En_Insect', + 'ovl_En_Ishi', + 'ovl_En_It', + 'ovl_En_Jj', + 'ovl_En_Js', + 'ovl_En_Jsjutan', + 'ovl_En_Kakasi', + 'ovl_En_Kakasi2', + 'ovl_En_Kakasi3', + 'ovl_En_Kanban', + 'ovl_En_Karebaba', + 'ovl_En_Ko', + 'ovl_En_Kusa', + 'ovl_En_Kz', + 'ovl_En_Light', + 'ovl_En_Lightbox', + 'ovl_En_M_Fire1', + 'ovl_En_M_Thunder', + 'ovl_En_Ma1', + 'ovl_En_Ma2', + 'ovl_En_Ma3', + 'ovl_En_Mag', + 'ovl_En_Mb', + 'ovl_En_Md', + 'ovl_En_Mk', + 'ovl_En_Mm', + 'ovl_En_Mm2', + 'ovl_En_Ms', + 'ovl_En_Mu', + 'ovl_En_Nb', + 'ovl_En_Niw', + 'ovl_En_Niw_Girl', + 'ovl_En_Niw_Lady', + 'ovl_En_Nutsball', + 'ovl_En_Nwc', + 'ovl_En_Ny', + 'ovl_En_OE2', + 'ovl_En_Okarina_Effect', + 'ovl_En_Okarina_Tag', + 'ovl_En_Okuta', + 'ovl_En_Ossan', + 'ovl_En_Owl', + 'ovl_En_Part', + 'ovl_En_Peehat', + 'ovl_En_Po_Desert', + 'ovl_En_Po_Field', + 'ovl_En_Po_Relay', + 'ovl_En_Po_Sisters', + 'ovl_En_Poh', + 'ovl_En_Pu_box', + 'ovl_En_Rd', + 'ovl_En_Reeba', + 'ovl_En_River_Sound', + 'ovl_En_Rl', + 'ovl_En_Rr', + 'ovl_En_Ru1', + 'ovl_En_Ru2', + 'ovl_En_Sa', + 'ovl_En_Sb', + 'ovl_En_Scene_Change', + 'ovl_En_Sda', + 'ovl_En_Shopnuts', + 'ovl_En_Si', + 'ovl_En_Siofuki', + 'ovl_En_Skb', + 'ovl_En_Skj', + 'ovl_En_Skjneedle', + 'ovl_En_Ssh', + 'ovl_En_St', + 'ovl_En_Sth', + 'ovl_En_Stream', + 'ovl_En_Sw', + 'ovl_En_Syateki_Itm', + 'ovl_En_Syateki_Man', + 'ovl_En_Syateki_Niw', + 'ovl_En_Ta', + 'ovl_En_Takara_Man', + 'ovl_En_Tana', + 'ovl_En_Tg', + 'ovl_En_Tite', + 'ovl_En_Tk', + 'ovl_En_Torch', + 'ovl_En_Torch2', + 'ovl_En_Toryo', + 'ovl_En_Tp', + 'ovl_En_Tr', + 'ovl_En_Trap', + 'ovl_En_Tubo_Trap', + 'ovl_En_Vali', + 'ovl_En_Vase', + 'ovl_En_Vb_Ball', + 'ovl_En_Viewer', + 'ovl_En_Vm', + 'ovl_En_Wall_Tubo', + 'ovl_En_Wallmas', + 'ovl_En_Weather_Tag', + 'ovl_En_Weiyer', + 'ovl_En_Wf', + 'ovl_En_Wonder_Item', + 'ovl_En_Wonder_Talk', + 'ovl_En_Wonder_Talk2', + 'ovl_En_Wood02', + 'ovl_En_Xc', + 'ovl_En_Yabusame_Mark', + 'ovl_En_Yukabyun', + 'ovl_En_Zf', + 'ovl_En_Zl1', + 'ovl_En_Zl2', + 'ovl_En_Zl3', + 'ovl_En_Zl4', + 'ovl_En_Zo', + 'ovl_En_fHG', + 'ovl_End_Title', + 'ovl_Fishing', + 'ovl_Item_B_Heart', + 'ovl_Item_Etcetera', + 'ovl_Item_Inbox', + 'ovl_Item_Ocarina', + 'ovl_Item_Shield', + 'ovl_Magic_Dark', + 'ovl_Magic_Fire', + 'ovl_Magic_Wind', + 'ovl_Mir_Ray', + 'ovl_Obj_Bean', + 'ovl_Obj_Blockstop', + 'ovl_Obj_Bombiwa', + 'ovl_Obj_Comb', + 'ovl_Obj_Dekujr', + 'ovl_Obj_Elevator', + 'ovl_Obj_Hamishi', + 'ovl_Obj_Hana', + 'ovl_Obj_Hsblock', + 'ovl_Obj_Ice_Poly', + 'ovl_Obj_Kibako', + 'ovl_Obj_Kibako2', + 'ovl_Obj_Lift', + 'ovl_Obj_Lightswitch', + 'ovl_Obj_Makekinsuta', + 'ovl_Obj_Makeoshihiki', + 'ovl_Obj_Mure', + 'ovl_Obj_Mure2', + 'ovl_Obj_Mure3', + 'ovl_Obj_Oshihiki', + 'ovl_Obj_Roomtimer', + 'ovl_Obj_Switch', + 'ovl_Obj_Syokudai', + 'ovl_Obj_Timeblock', + 'ovl_Obj_Tsubo', + 'ovl_Obj_Warp2block', + 'ovl_Object_Kankyo', + 'ovl_Oceff_Spot', + 'ovl_Oceff_Storm', + 'ovl_Oceff_Wipe', + 'ovl_Oceff_Wipe2', + 'ovl_Oceff_Wipe3', + 'ovl_Oceff_Wipe4', + 'ovl_Shot_Sun', + 'gameplay_keep', + 'gameplay_field_keep', + 'gameplay_dangeon_keep', + 'gameplay_object_exchange_static', + 'object_link_boy', + 'object_link_child', + 'object_box', + 'object_human', + 'object_okuta', + 'object_poh', + 'object_wallmaster', + 'object_dy_obj', + 'object_firefly', + 'object_dodongo', + 'object_fire', + 'object_niw', + 'object_tite', + 'object_reeba', + 'object_peehat', + 'object_kingdodongo', + 'object_horse', + 'object_zf', + 'object_goma', + 'object_zl1', + 'object_gol', + 'object_bubble', + 'object_dodojr', + 'object_torch2', + 'object_bl', + 'object_tp', + 'object_oA1', + 'object_st', + 'object_bw', + 'object_ei', + 'object_horse_normal', + 'object_oB1', + 'object_o_anime', + 'object_spot04_objects', + 'object_ddan_objects', + 'object_hidan_objects', + 'object_horse_ganon', + 'object_oA2', + 'object_spot00_objects', + 'object_mb', + 'object_bombf', + 'object_sk2', + 'object_oE1', + 'object_oE_anime', + 'object_oE2', + 'object_ydan_objects', + 'object_gnd', + 'object_am', + 'object_dekubaba', + 'object_oA3', + 'object_oA4', + 'object_oA5', + 'object_oA6', + 'object_oA7', + 'object_jj', + 'object_oA8', + 'object_oA9', + 'object_oB2', + 'object_oB3', + 'object_oB4', + 'object_horse_zelda', + 'object_opening_demo1', + 'object_warp1', + 'object_b_heart', + 'object_dekunuts', + 'object_oE3', + 'object_oE4', + 'object_menkuri_objects', + 'object_oE5', + 'object_oE6', + 'object_oE7', + 'object_oE8', + 'object_oE9', + 'object_oE10', + 'object_oE11', + 'object_oE12', + 'object_vali', + 'object_oA10', + 'object_oA11', + 'object_mizu_objects', + 'object_fhg', + 'object_ossan', + 'object_mori_hineri1', + 'object_Bb', + 'object_toki_objects', + 'object_yukabyun', + 'object_zl2', + 'object_mjin', + 'object_mjin_flash', + 'object_mjin_dark', + 'object_mjin_flame', + 'object_mjin_ice', + 'object_mjin_soul', + 'object_mjin_wind', + 'object_mjin_oka', + 'object_haka_objects', + 'object_spot06_objects', + 'object_ice_objects', + 'object_relay_objects', + 'object_mori_hineri1a', + 'object_mori_hineri2', + 'object_mori_hineri2a', + 'object_mori_objects', + 'object_mori_tex', + 'object_spot08_obj', + 'object_warp2', + 'object_hata', + 'object_bird', + 'object_wood02', + 'object_lightbox', + 'object_pu_box', + 'object_trap', + 'object_vase', + 'object_im', + 'object_ta', + 'object_tk', + 'object_xc', + 'object_vm', + 'object_bv', + 'object_hakach_objects', + 'object_efc_crystal_light', + 'object_efc_fire_ball', + 'object_efc_flash', + 'object_efc_lgt_shower', + 'object_efc_star_field', + 'object_god_lgt', + 'object_light_ring', + 'object_triforce_spot', + 'object_medal', + 'object_bdan_objects', + 'object_sd', + 'object_rd', + 'object_po_sisters', + 'object_heavy_object', + 'object_gndd', + 'object_fd', + 'object_du', + 'object_fw', + 'object_horse_link_child', + 'object_spot02_objects', + 'object_haka', + 'object_ru1', + 'object_syokudai', + 'object_fd2', + 'object_dh', + 'object_rl', + 'object_efc_tw', + 'object_demo_tre_lgt', + 'object_gi_key', + 'object_mir_ray', + 'object_brob', + 'object_gi_jewel', + 'object_spot09_obj', + 'object_spot18_obj', + 'object_bdoor', + 'object_spot17_obj', + 'object_shop_dungen', + 'object_nb', + 'object_mo', + 'object_sb', + 'object_gi_melody', + 'object_gi_heart', + 'object_gi_compass', + 'object_gi_bosskey', + 'object_gi_medal', + 'object_gi_nuts', + 'object_sa', + 'object_gi_hearts', + 'object_gi_arrowcase', + 'object_gi_bombpouch', + 'object_in', + 'object_tr', + 'object_spot16_obj', + 'object_oE1s', + 'object_oE4s', + 'object_os_anime', + 'object_gi_bottle', + 'object_gi_stick', + 'object_gi_map', + 'object_oF1d_map', + 'object_ru2', + 'object_gi_shield_1', + 'object_dekujr', + 'object_gi_magicpot', + 'object_gi_bomb_1', + 'object_oF1s', + 'object_ma2', + 'object_gi_purse', + 'object_hni', + 'object_tw', + 'object_rr', + 'object_bxa', + 'object_anubice', + 'object_gi_gerudo', + 'object_gi_arrow', + 'object_gi_bomb_2', + 'object_gi_egg', + 'object_gi_scale', + 'object_gi_shield_2', + 'object_gi_hookshot', + 'object_gi_ocarina', + 'object_gi_milk', + 'object_ma1', + 'object_ganon', + 'object_sst', + 'object_ny', + 'object_fr', + 'object_gi_pachinko', + 'object_gi_boomerang', + 'object_gi_bow', + 'object_gi_glasses', + 'object_gi_liquid', + 'object_ani', + 'object_demo_6k', + 'object_gi_shield_3', + 'object_gi_letter', + 'object_spot15_obj', + 'object_jya_obj', + 'object_gi_clothes', + 'object_gi_bean', + 'object_gi_fish', + 'object_gi_saw', + 'object_gi_hammer', + 'object_gi_grass', + 'object_gi_longsword', + 'object_spot01_objects', + 'object_md', + 'object_km1', + 'object_kw1', + 'object_zo', + 'object_kz', + 'object_umajump', + 'object_masterkokiri', + 'object_masterkokirihead', + 'object_mastergolon', + 'object_masterzoora', + 'object_aob', + 'object_ik', + 'object_ahg', + 'object_cne', + 'object_gi_niwatori', + 'object_skj', + 'object_gi_bottle_letter', + 'object_bji', + 'object_bba', + 'object_gi_ocarina_0', + 'object_ds', + 'object_ane', + 'object_boj', + 'object_spot03_object', + 'object_spot07_object', + 'object_fz', + 'object_bob', + 'object_ge1', + 'object_yabusame_point', + 'object_gi_boots_2', + 'object_gi_seed', + 'object_gnd_magic', + 'object_d_elevator', + 'object_d_hsblock', + 'object_d_lift', + 'object_mamenoki', + 'object_goroiwa', + 'object_toryo', + 'object_daiku', + 'object_nwc', + 'object_blkobj', + 'object_gm', + 'object_ms', + 'object_hs', + 'object_ingate', + 'object_lightswitch', + 'object_kusa', + 'object_tsubo', + 'object_gi_gloves', + 'object_gi_coin', + 'object_kanban', + 'object_gjyo_objects', + 'object_owl', + 'object_mk', + 'object_fu', + 'object_gi_ki_tan_mask', + 'object_gi_redead_mask', + 'object_gi_skj_mask', + 'object_gi_rabit_mask', + 'object_gi_truth_mask', + 'object_ganon_objects', + 'object_siofuki', + 'object_stream', + 'object_mm', + 'object_fa', + 'object_os', + 'object_gi_eye_lotion', + 'object_gi_powder', + 'object_gi_mushroom', + 'object_gi_ticketstone', + 'object_gi_brokensword', + 'object_js', + 'object_cs', + 'object_gi_prescription', + 'object_gi_bracelet', + 'object_gi_soldout', + 'object_gi_frog', + 'object_mag', + 'object_door_gerudo', + 'object_gt', + 'object_efc_erupc', + 'object_zl2_anime1', + 'object_zl2_anime2', + 'object_gi_golonmask', + 'object_gi_zoramask', + 'object_gi_gerudomask', + 'object_ganon2', + 'object_ka', + 'object_ts', + 'object_zg', + 'object_gi_hoverboots', + 'object_gi_m_arrow', + 'object_ds2', + 'object_ec', + 'object_fish', + 'object_gi_sutaru', + 'object_gi_goddess', + 'object_ssh', + 'object_bigokuta', + 'object_bg', + 'object_spot05_objects', + 'object_spot12_obj', + 'object_bombiwa', + 'object_hintnuts', + 'object_rs', + 'object_spot00_break', + 'object_gla', + 'object_shopnuts', + 'object_geldb', + 'object_gr', + 'object_dog', + 'object_jya_iron', + 'object_jya_door', + 'object_spot01_objects2', + 'object_spot11_obj', + 'object_kibako2', + 'object_dns', + 'object_dnk', + 'object_gi_fire', + 'object_gi_insect', + 'object_gi_butterfly', + 'object_gi_ghost', + 'object_gi_soul', + 'object_bowl', + 'object_po_field', + 'object_demo_kekkai', + 'object_efc_doughnut', + 'object_gi_dekupouch', + 'object_ganon_anime1', + 'object_ganon_anime2', + 'object_ganon_anime3', + 'object_gi_rupy', + 'object_spot01_matoya', + 'object_spot01_matoyab', + 'object_po_composer', + 'object_mu', + 'object_wf', + 'object_skb', + 'object_gj', + 'object_geff', + 'object_haka_door', + 'object_gs', + 'object_ps', + 'object_bwall', + 'object_crow', + 'object_cow', + 'object_cob', + 'object_gi_sword_1', + 'object_door_killer', + 'object_ouke_haka', + 'object_timeblock', + 'object_zl4', + 'g_pn_01', + 'g_pn_02', + 'g_pn_03', + 'g_pn_04', + 'g_pn_05', + 'g_pn_06', + 'g_pn_07', + 'g_pn_08', + 'g_pn_09', + 'g_pn_10', + 'g_pn_11', + 'g_pn_12', + 'g_pn_13', + 'g_pn_14', + 'g_pn_15', + 'g_pn_16', + 'g_pn_17', + 'g_pn_18', + 'g_pn_19', + 'g_pn_20', + 'g_pn_21', + 'g_pn_22', + 'g_pn_23', + 'g_pn_24', + 'g_pn_25', + 'g_pn_26', + 'g_pn_27', + 'g_pn_28', + 'g_pn_29', + 'g_pn_30', + 'g_pn_31', + 'g_pn_32', + 'g_pn_33', + 'g_pn_34', + 'g_pn_35', + 'g_pn_36', + 'g_pn_37', + 'g_pn_38', + 'g_pn_39', + 'g_pn_40', + 'g_pn_41', + 'g_pn_42', + 'g_pn_43', + 'g_pn_44', + 'g_pn_45', + 'g_pn_46', + 'g_pn_47', + 'g_pn_48', + 'g_pn_49', + 'g_pn_50', + 'g_pn_51', + 'g_pn_52', + 'g_pn_53', + 'g_pn_54', + 'g_pn_55', + 'g_pn_56', + 'g_pn_57', + 'z_select_static', + 'nintendo_rogo_static', + 'title_static', + 'parameter_static', + 'vr_fine0_static', + 'vr_fine0_pal_static', + 'vr_fine1_static', + 'vr_fine1_pal_static', + 'vr_fine2_static', + 'vr_fine2_pal_static', + 'vr_fine3_static', + 'vr_fine3_pal_static', + 'vr_cloud0_static', + 'vr_cloud0_pal_static', + 'vr_cloud1_static', + 'vr_cloud1_pal_static', + 'vr_cloud2_static', + 'vr_cloud2_pal_static', + 'vr_cloud3_static', + 'vr_cloud3_pal_static', + 'vr_holy0_static', + 'vr_holy0_pal_static', + 'vr_holy1_static', + 'vr_holy1_pal_static', + 'vr_MDVR_static', + 'vr_MDVR_pal_static', + 'vr_MNVR_static', + 'vr_MNVR_pal_static', + 'vr_RUVR_static', + 'vr_RUVR_pal_static', + 'vr_LHVR_static', + 'vr_LHVR_pal_static', + 'vr_KHVR_static', + 'vr_KHVR_pal_static', + 'vr_K3VR_static', + 'vr_K3VR_pal_static', + 'vr_K4VR_static', + 'vr_K4VR_pal_static', + 'vr_K5VR_static', + 'vr_K5VR_pal_static', + 'vr_SP1a_static', + 'vr_SP1a_pal_static', + 'vr_MLVR_static', + 'vr_MLVR_pal_static', + 'vr_KKRVR_static', + 'vr_KKRVR_pal_static', + 'vr_KR3VR_static', + 'vr_KR3VR_pal_static', + 'vr_IPVR_static', + 'vr_IPVR_pal_static', + 'vr_KSVR_static', + 'vr_KSVR_pal_static', + 'vr_GLVR_static', + 'vr_GLVR_pal_static', + 'vr_ZRVR_static', + 'vr_ZRVR_pal_static', + 'vr_DGVR_static', + 'vr_DGVR_pal_static', + 'vr_ALVR_static', + 'vr_ALVR_pal_static', + 'vr_NSVR_static', + 'vr_NSVR_pal_static', + 'vr_LBVR_static', + 'vr_LBVR_pal_static', + 'vr_TTVR_static', + 'vr_TTVR_pal_static', + 'vr_FCVR_static', + 'vr_FCVR_pal_static', + 'elf_message_field', + 'elf_message_ydan', + 'syotes_scene', + 'syotes_room_0', + 'syotes2_scene', + 'syotes2_room_0', + 'depth_test_scene', + 'depth_test_room_0', + 'spot00_scene', + 'spot00_room_0', + 'spot01_scene', + 'spot01_room_0', + 'spot02_scene', + 'spot02_room_0', + 'spot02_room_1', + 'spot03_scene', + 'spot03_room_0', + 'spot03_room_1', + 'spot04_scene', + 'spot04_room_0', + 'spot04_room_1', + 'spot04_room_2', + 'spot05_scene', + 'spot05_room_0', + 'spot06_scene', + 'spot06_room_0', + 'spot07_scene', + 'spot07_room_0', + 'spot07_room_1', + 'spot08_scene', + 'spot08_room_0', + 'spot09_scene', + 'spot09_room_0', + 'spot10_scene', + 'spot10_room_0', + 'spot10_room_1', + 'spot10_room_2', + 'spot10_room_3', + 'spot10_room_4', + 'spot10_room_5', + 'spot10_room_6', + 'spot10_room_7', + 'spot10_room_8', + 'spot10_room_9', + 'spot11_scene', + 'spot11_room_0', + 'spot12_scene', + 'spot12_room_0', + 'spot12_room_1', + 'spot13_scene', + 'spot13_room_0', + 'spot13_room_1', + 'spot15_scene', + 'spot15_room_0', + 'spot16_scene', + 'spot16_room_0', + 'spot17_scene', + 'spot17_room_0', + 'spot17_room_1', + 'spot18_scene', + 'spot18_room_0', + 'spot18_room_1', + 'spot18_room_2', + 'spot18_room_3', + 'ydan_scene', + 'ydan_room_0', + 'ydan_room_1', + 'ydan_room_2', + 'ydan_room_3', + 'ydan_room_4', + 'ydan_room_5', + 'ydan_room_6', + 'ydan_room_7', + 'ydan_room_8', + 'ydan_room_9', + 'ydan_room_10', + 'ydan_room_11', + 'ddan_scene', + 'ddan_room_0', + 'ddan_room_1', + 'ddan_room_2', + 'ddan_room_3', + 'ddan_room_4', + 'ddan_room_5', + 'ddan_room_6', + 'ddan_room_7', + 'ddan_room_8', + 'ddan_room_9', + 'ddan_room_10', + 'ddan_room_11', + 'ddan_room_12', + 'ddan_room_13', + 'ddan_room_14', + 'ddan_room_15', + 'ddan_room_16', + 'bdan_scene', + 'bdan_room_0', + 'bdan_room_1', + 'bdan_room_2', + 'bdan_room_3', + 'bdan_room_4', + 'bdan_room_5', + 'bdan_room_6', + 'bdan_room_7', + 'bdan_room_8', + 'bdan_room_9', + 'bdan_room_10', + 'bdan_room_11', + 'bdan_room_12', + 'bdan_room_13', + 'bdan_room_14', + 'bdan_room_15', + 'Bmori1_scene', + 'Bmori1_room_0', + 'Bmori1_room_1', + 'Bmori1_room_2', + 'Bmori1_room_3', + 'Bmori1_room_4', + 'Bmori1_room_5', + 'Bmori1_room_6', + 'Bmori1_room_7', + 'Bmori1_room_8', + 'Bmori1_room_9', + 'Bmori1_room_10', + 'Bmori1_room_11', + 'Bmori1_room_12', + 'Bmori1_room_13', + 'Bmori1_room_14', + 'Bmori1_room_15', + 'Bmori1_room_16', + 'Bmori1_room_17', + 'Bmori1_room_18', + 'Bmori1_room_19', + 'Bmori1_room_20', + 'Bmori1_room_21', + 'Bmori1_room_22', + 'HIDAN_scene', + 'HIDAN_room_0', + 'HIDAN_room_1', + 'HIDAN_room_2', + 'HIDAN_room_3', + 'HIDAN_room_4', + 'HIDAN_room_5', + 'HIDAN_room_6', + 'HIDAN_room_7', + 'HIDAN_room_8', + 'HIDAN_room_9', + 'HIDAN_room_10', + 'HIDAN_room_11', + 'HIDAN_room_12', + 'HIDAN_room_13', + 'HIDAN_room_14', + 'HIDAN_room_15', + 'HIDAN_room_16', + 'HIDAN_room_17', + 'HIDAN_room_18', + 'HIDAN_room_19', + 'HIDAN_room_20', + 'HIDAN_room_21', + 'HIDAN_room_22', + 'HIDAN_room_23', + 'HIDAN_room_24', + 'HIDAN_room_25', + 'HIDAN_room_26', + 'MIZUsin_scene', + 'MIZUsin_room_0', + 'MIZUsin_room_1', + 'MIZUsin_room_2', + 'MIZUsin_room_3', + 'MIZUsin_room_4', + 'MIZUsin_room_5', + 'MIZUsin_room_6', + 'MIZUsin_room_7', + 'MIZUsin_room_8', + 'MIZUsin_room_9', + 'MIZUsin_room_10', + 'MIZUsin_room_11', + 'MIZUsin_room_12', + 'MIZUsin_room_13', + 'MIZUsin_room_14', + 'MIZUsin_room_15', + 'MIZUsin_room_16', + 'MIZUsin_room_17', + 'MIZUsin_room_18', + 'MIZUsin_room_19', + 'MIZUsin_room_20', + 'MIZUsin_room_21', + 'MIZUsin_room_22', + 'jyasinzou_scene', + 'jyasinzou_room_0', + 'jyasinzou_room_1', + 'jyasinzou_room_2', + 'jyasinzou_room_3', + 'jyasinzou_room_4', + 'jyasinzou_room_5', + 'jyasinzou_room_6', + 'jyasinzou_room_7', + 'jyasinzou_room_8', + 'jyasinzou_room_9', + 'jyasinzou_room_10', + 'jyasinzou_room_11', + 'jyasinzou_room_12', + 'jyasinzou_room_13', + 'jyasinzou_room_14', + 'jyasinzou_room_15', + 'jyasinzou_room_16', + 'jyasinzou_room_17', + 'jyasinzou_room_18', + 'jyasinzou_room_19', + 'jyasinzou_room_20', + 'jyasinzou_room_21', + 'jyasinzou_room_22', + 'jyasinzou_room_23', + 'jyasinzou_room_24', + 'jyasinzou_room_25', + 'jyasinzou_room_26', + 'jyasinzou_room_27', + 'jyasinzou_room_28', + 'HAKAdan_scene', + 'HAKAdan_room_0', + 'HAKAdan_room_1', + 'HAKAdan_room_2', + 'HAKAdan_room_3', + 'HAKAdan_room_4', + 'HAKAdan_room_5', + 'HAKAdan_room_6', + 'HAKAdan_room_7', + 'HAKAdan_room_8', + 'HAKAdan_room_9', + 'HAKAdan_room_10', + 'HAKAdan_room_11', + 'HAKAdan_room_12', + 'HAKAdan_room_13', + 'HAKAdan_room_14', + 'HAKAdan_room_15', + 'HAKAdan_room_16', + 'HAKAdan_room_17', + 'HAKAdan_room_18', + 'HAKAdan_room_19', + 'HAKAdan_room_20', + 'HAKAdan_room_21', + 'HAKAdan_room_22', + 'HAKAdanCH_scene', + 'HAKAdanCH_room_0', + 'HAKAdanCH_room_1', + 'HAKAdanCH_room_2', + 'HAKAdanCH_room_3', + 'HAKAdanCH_room_4', + 'HAKAdanCH_room_5', + 'HAKAdanCH_room_6', + 'ice_doukutu_scene', + 'ice_doukutu_room_0', + 'ice_doukutu_room_1', + 'ice_doukutu_room_2', + 'ice_doukutu_room_3', + 'ice_doukutu_room_4', + 'ice_doukutu_room_5', + 'ice_doukutu_room_6', + 'ice_doukutu_room_7', + 'ice_doukutu_room_8', + 'ice_doukutu_room_9', + 'ice_doukutu_room_10', + 'ice_doukutu_room_11', + 'men_scene', + 'men_room_0', + 'men_room_1', + 'men_room_2', + 'men_room_3', + 'men_room_4', + 'men_room_5', + 'men_room_6', + 'men_room_7', + 'men_room_8', + 'men_room_9', + 'men_room_10', + 'ganontika_scene', + 'ganontika_room_0', + 'ganontika_room_1', + 'ganontika_room_2', + 'ganontika_room_3', + 'ganontika_room_4', + 'ganontika_room_5', + 'ganontika_room_6', + 'ganontika_room_7', + 'ganontika_room_8', + 'ganontika_room_9', + 'ganontika_room_10', + 'ganontika_room_11', + 'ganontika_room_12', + 'ganontika_room_13', + 'ganontika_room_14', + 'ganontika_room_15', + 'ganontika_room_16', + 'ganontika_room_17', + 'ganontika_room_18', + 'ganontika_room_19', + 'market_day_scene', + 'market_day_room_0', + 'market_night_scene', + 'market_night_room_0', + 'testroom_scene', + 'testroom_room_0', + 'testroom_room_1', + 'testroom_room_2', + 'testroom_room_3', + 'testroom_room_4', + 'kenjyanoma_scene', + 'kenjyanoma_room_0', + 'tokinoma_scene', + 'tokinoma_room_0', + 'tokinoma_room_1', + 'sutaru_scene', + 'sutaru_room_0', + 'link_home_scene', + 'link_home_room_0', + 'kokiri_shop_scene', + 'kokiri_shop_room_0', + 'kokiri_home_scene', + 'kokiri_home_room_0', + 'kakusiana_scene', + 'kakusiana_room_0', + 'kakusiana_room_1', + 'kakusiana_room_2', + 'kakusiana_room_3', + 'kakusiana_room_4', + 'kakusiana_room_5', + 'kakusiana_room_6', + 'kakusiana_room_7', + 'kakusiana_room_8', + 'kakusiana_room_9', + 'kakusiana_room_10', + 'kakusiana_room_11', + 'kakusiana_room_12', + 'kakusiana_room_13', + 'entra_scene', + 'entra_room_0', + 'moribossroom_scene', + 'moribossroom_room_0', + 'moribossroom_room_1', + 'syatekijyou_scene', + 'syatekijyou_room_0', + 'shop1_scene', + 'shop1_room_0', + 'hairal_niwa_scene', + 'hairal_niwa_room_0', + 'ganon_tou_scene', + 'ganon_tou_room_0', + 'sasatest_scene', + 'sasatest_room_0', + 'market_alley_scene', + 'market_alley_room_0', + 'spot20_scene', + 'spot20_room_0', + 'market_ruins_scene', + 'market_ruins_room_0', + 'entra_n_scene', + 'entra_n_room_0', + 'enrui_scene', + 'enrui_room_0', + 'market_alley_n_scene', + 'market_alley_n_room_0', + 'hiral_demo_scene', + 'hiral_demo_room_0', + 'kokiri_home3_scene', + 'kokiri_home3_room_0', + 'malon_stable_scene', + 'malon_stable_room_0', + 'kakariko_scene', + 'kakariko_room_0', + 'bdan_boss_scene', + 'bdan_boss_room_0', + 'bdan_boss_room_1', + 'FIRE_bs_scene', + 'FIRE_bs_room_0', + 'FIRE_bs_room_1', + 'hut_scene', + 'hut_room_0', + 'daiyousei_izumi_scene', + 'daiyousei_izumi_room_0', + 'hakaana_scene', + 'hakaana_room_0', + 'yousei_izumi_tate_scene', + 'yousei_izumi_tate_room_0', + 'yousei_izumi_yoko_scene', + 'yousei_izumi_yoko_room_0', + 'golon_scene', + 'golon_room_0', + 'zoora_scene', + 'zoora_room_0', + 'drag_scene', + 'drag_room_0', + 'alley_shop_scene', + 'alley_shop_room_0', + 'night_shop_scene', + 'night_shop_room_0', + 'impa_scene', + 'impa_room_0', + 'labo_scene', + 'labo_room_0', + 'tent_scene', + 'tent_room_0', + 'nakaniwa_scene', + 'nakaniwa_room_0', + 'ddan_boss_scene', + 'ddan_boss_room_0', + 'ddan_boss_room_1', + 'ydan_boss_scene', + 'ydan_boss_room_0', + 'ydan_boss_room_1', + 'HAKAdan_bs_scene', + 'HAKAdan_bs_room_0', + 'HAKAdan_bs_room_1', + 'MIZUsin_bs_scene', + 'MIZUsin_bs_room_0', + 'MIZUsin_bs_room_1', + 'ganon_scene', + 'ganon_room_0', + 'ganon_room_1', + 'ganon_room_2', + 'ganon_room_3', + 'ganon_room_4', + 'ganon_room_5', + 'ganon_room_6', + 'ganon_room_7', + 'ganon_room_8', + 'ganon_room_9', + 'ganon_boss_scene', + 'ganon_boss_room_0', + 'jyasinboss_scene', + 'jyasinboss_room_0', + 'jyasinboss_room_1', + 'jyasinboss_room_2', + 'jyasinboss_room_3', + 'kokiri_home4_scene', + 'kokiri_home4_room_0', + 'kokiri_home5_scene', + 'kokiri_home5_room_0', + 'ganon_final_scene', + 'ganon_final_room_0', + 'kakariko3_scene', + 'kakariko3_room_0', + 'hairal_niwa2_scene', + 'hairal_niwa2_room_0', + 'hakasitarelay_scene', + 'hakasitarelay_room_0', + 'hakasitarelay_room_1', + 'hakasitarelay_room_2', + 'hakasitarelay_room_3', + 'hakasitarelay_room_4', + 'hakasitarelay_room_5', + 'hakasitarelay_room_6', + 'shrine_scene', + 'shrine_room_0', + 'turibori_scene', + 'turibori_room_0', + 'shrine_n_scene', + 'shrine_n_room_0', + 'shrine_r_scene', + 'shrine_r_room_0', + 'hakaana2_scene', + 'hakaana2_room_0', + 'gerudoway_scene', + 'gerudoway_room_0', + 'gerudoway_room_1', + 'gerudoway_room_2', + 'gerudoway_room_3', + 'gerudoway_room_4', + 'gerudoway_room_5', + 'hairal_niwa_n_scene', + 'hairal_niwa_n_room_0', + 'bowling_scene', + 'bowling_room_0', + 'hakaana_ouke_scene', + 'hakaana_ouke_room_0', + 'hakaana_ouke_room_1', + 'hakaana_ouke_room_2', + 'hylia_labo_scene', + 'hylia_labo_room_0', + 'souko_scene', + 'souko_room_0', + 'souko_room_1', + 'souko_room_2', + 'miharigoya_scene', + 'miharigoya_room_0', + 'mahouya_scene', + 'mahouya_room_0', + 'takaraya_scene', + 'takaraya_room_0', + 'takaraya_room_1', + 'takaraya_room_2', + 'takaraya_room_3', + 'takaraya_room_4', + 'takaraya_room_5', + 'takaraya_room_6', + 'ganon_sonogo_scene', + 'ganon_sonogo_room_0', + 'ganon_sonogo_room_1', + 'ganon_sonogo_room_2', + 'ganon_sonogo_room_3', + 'ganon_sonogo_room_4', + 'ganon_demo_scene', + 'ganon_demo_room_0', + 'besitu_scene', + 'besitu_room_0', + 'face_shop_scene', + 'face_shop_room_0', + 'kinsuta_scene', + 'kinsuta_room_0', + 'ganontikasonogo_scene', + 'ganontikasonogo_room_0', + 'ganontikasonogo_room_1', + 'test01_scene', + 'test01_room_0', + 'bump_texture_static', + 'anime_model_1_static', + 'anime_model_2_static', + 'anime_model_3_static', + 'anime_model_4_static', + 'anime_model_5_static', + 'anime_model_6_static', + 'anime_texture_1_static', + 'anime_texture_2_static', + 'anime_texture_3_static', + 'anime_texture_4_static', + 'anime_texture_5_static', + 'anime_texture_6_static', + 'softsprite_matrix_static', +] + +romData = None + + +def initialize_worker(rom_data): + global romData + romData = rom_data + +def read_uint32_be(offset): + return struct.unpack('>I', romData[offset:offset+4])[0] + +def write_output_file(name, offset, size): + try: + with open(name, 'wb') as f: + f.write(romData[offset:offset+size]) + except IOError: + print('failed to write file ' + name) + +def ExtractFunc(i): + filename = 'baserom/' + FILE_NAMES[i] + entryOffset = FILE_TABLE_OFFSET + 16 * i + + virtStart = read_uint32_be(entryOffset + 0) + virtEnd = read_uint32_be(entryOffset + 4) + physStart = read_uint32_be(entryOffset + 8) + physEnd = read_uint32_be(entryOffset + 12) + + if physEnd == 0: # uncompressed + compressed = False + size = virtEnd - virtStart + else: # compressed + compressed = True + size = physEnd - physStart + + print('extracting ' + filename + " (0x%08X, 0x%08X)" % (virtStart, virtEnd)) + write_output_file(filename, physStart, size) + if compressed: + os.system('tools/yaz0 -d ' + filename + ' ' + filename) + +##################################################################### + +def main(): + try: + os.mkdir('baserom') + except: + pass + + # read baserom data + try: + with open(ROM_FILE_NAME, 'rb') as f: + rom_data = f.read() + except IOError: + print('failed to read ' + ROM_FILE_NAME) + sys.exit(1) + + # extract files + num_cores = cpu_count() + print("Extracting baserom with " + str(num_cores) + " CPU cores.") + with Pool(num_cores, initialize_worker, (rom_data,)) as p: + p.map(ExtractFunc, range(len(FILE_NAMES))) + +if __name__ == "__main__": + main() diff --git a/OTRExporter/extract_baserom_gc.py b/OTRExporter/extract_baserom_gc.py new file mode 100644 index 000000000..0bc324f81 --- /dev/null +++ b/OTRExporter/extract_baserom_gc.py @@ -0,0 +1,1586 @@ +#!/usr/bin/python3 + +import os +import sys +import struct +from multiprocessing import Pool, cpu_count + + +ROM_FILE_NAME = 'zlp_f.n64' +FILE_TABLE_OFFSET = 0x7170 + +FILE_NAMES = [ + 'makerom', + 'boot', + 'dmadata', + 'Audiobank', + 'Audioseq', + 'Audiotable', + 'link_animetion', + 'icon_item_static', + 'icon_item_24_static', + 'icon_item_field_static', + 'icon_item_dungeon_static', + 'icon_item_gameover_static', + 'icon_item_nes_static', + 'icon_item_ger_static', + 'icon_item_fra_static', + 'item_name_static', + 'map_name_static', + 'do_action_static', + 'message_static', + 'message_texture_static', + 'nes_font_static', + 'nes_message_data_static', + 'ger_message_data_static', + 'fra_message_data_static', + 'staff_message_data_static', + 'map_grand_static', + 'map_48x85_static', + 'map_i_static', + 'code', + 'ovl_title', + 'ovl_select', + 'ovl_opening', + 'ovl_file_choose', + 'ovl_kaleido_scope', + 'ovl_player_actor', + 'ovl_map_mark_data', + 'ovl_En_Test', + 'ovl_Arms_Hook', + 'ovl_Arrow_Fire', + 'ovl_Arrow_Ice', + 'ovl_Arrow_Light', + 'ovl_Bg_Bdan_Objects', + 'ovl_Bg_Bdan_Switch', + 'ovl_Bg_Bom_Guard', + 'ovl_Bg_Bombwall', + 'ovl_Bg_Bowl_Wall', + 'ovl_Bg_Breakwall', + 'ovl_Bg_Ddan_Jd', + 'ovl_Bg_Ddan_Kd', + 'ovl_Bg_Dodoago', + 'ovl_Bg_Dy_Yoseizo', + 'ovl_Bg_Ganon_Otyuka', + 'ovl_Bg_Gate_Shutter', + 'ovl_Bg_Gjyo_Bridge', + 'ovl_Bg_Gnd_Darkmeiro', + 'ovl_Bg_Gnd_Firemeiro', + 'ovl_Bg_Gnd_Iceblock', + 'ovl_Bg_Gnd_Nisekabe', + 'ovl_Bg_Gnd_Soulmeiro', + 'ovl_Bg_Haka', + 'ovl_Bg_Haka_Gate', + 'ovl_Bg_Haka_Huta', + 'ovl_Bg_Haka_Megane', + 'ovl_Bg_Haka_MeganeBG', + 'ovl_Bg_Haka_Sgami', + 'ovl_Bg_Haka_Ship', + 'ovl_Bg_Haka_Trap', + 'ovl_Bg_Haka_Tubo', + 'ovl_Bg_Haka_Water', + 'ovl_Bg_Haka_Zou', + 'ovl_Bg_Heavy_Block', + 'ovl_Bg_Hidan_Curtain', + 'ovl_Bg_Hidan_Dalm', + 'ovl_Bg_Hidan_Firewall', + 'ovl_Bg_Hidan_Fslift', + 'ovl_Bg_Hidan_Fwbig', + 'ovl_Bg_Hidan_Hamstep', + 'ovl_Bg_Hidan_Hrock', + 'ovl_Bg_Hidan_Kousi', + 'ovl_Bg_Hidan_Kowarerukabe', + 'ovl_Bg_Hidan_Rock', + 'ovl_Bg_Hidan_Rsekizou', + 'ovl_Bg_Hidan_Sekizou', + 'ovl_Bg_Hidan_Sima', + 'ovl_Bg_Hidan_Syoku', + 'ovl_Bg_Ice_Objects', + 'ovl_Bg_Ice_Shelter', + 'ovl_Bg_Ice_Shutter', + 'ovl_Bg_Ice_Turara', + 'ovl_Bg_Ingate', + 'ovl_Bg_Jya_1flift', + 'ovl_Bg_Jya_Amishutter', + 'ovl_Bg_Jya_Bigmirror', + 'ovl_Bg_Jya_Block', + 'ovl_Bg_Jya_Bombchuiwa', + 'ovl_Bg_Jya_Bombiwa', + 'ovl_Bg_Jya_Cobra', + 'ovl_Bg_Jya_Goroiwa', + 'ovl_Bg_Jya_Haheniron', + 'ovl_Bg_Jya_Ironobj', + 'ovl_Bg_Jya_Kanaami', + 'ovl_Bg_Jya_Lift', + 'ovl_Bg_Jya_Megami', + 'ovl_Bg_Jya_Zurerukabe', + 'ovl_Bg_Menkuri_Eye', + 'ovl_Bg_Menkuri_Kaiten', + 'ovl_Bg_Menkuri_Nisekabe', + 'ovl_Bg_Mizu_Bwall', + 'ovl_Bg_Mizu_Movebg', + 'ovl_Bg_Mizu_Shutter', + 'ovl_Bg_Mizu_Uzu', + 'ovl_Bg_Mizu_Water', + 'ovl_Bg_Mjin', + 'ovl_Bg_Mori_Bigst', + 'ovl_Bg_Mori_Elevator', + 'ovl_Bg_Mori_Hashigo', + 'ovl_Bg_Mori_Hashira4', + 'ovl_Bg_Mori_Hineri', + 'ovl_Bg_Mori_Idomizu', + 'ovl_Bg_Mori_Kaitenkabe', + 'ovl_Bg_Mori_Rakkatenjo', + 'ovl_Bg_Po_Event', + 'ovl_Bg_Po_Syokudai', + 'ovl_Bg_Pushbox', + 'ovl_Bg_Relay_Objects', + 'ovl_Bg_Spot00_Break', + 'ovl_Bg_Spot00_Hanebasi', + 'ovl_Bg_Spot01_Fusya', + 'ovl_Bg_Spot01_Idohashira', + 'ovl_Bg_Spot01_Idomizu', + 'ovl_Bg_Spot01_Idosoko', + 'ovl_Bg_Spot01_Objects2', + 'ovl_Bg_Spot02_Objects', + 'ovl_Bg_Spot03_Taki', + 'ovl_Bg_Spot05_Soko', + 'ovl_Bg_Spot06_Objects', + 'ovl_Bg_Spot07_Taki', + 'ovl_Bg_Spot08_Bakudankabe', + 'ovl_Bg_Spot08_Iceblock', + 'ovl_Bg_Spot09_Obj', + 'ovl_Bg_Spot11_Bakudankabe', + 'ovl_Bg_Spot11_Oasis', + 'ovl_Bg_Spot12_Gate', + 'ovl_Bg_Spot12_Saku', + 'ovl_Bg_Spot15_Rrbox', + 'ovl_Bg_Spot15_Saku', + 'ovl_Bg_Spot16_Bombstone', + 'ovl_Bg_Spot16_Doughnut', + 'ovl_Bg_Spot17_Bakudankabe', + 'ovl_Bg_Spot17_Funen', + 'ovl_Bg_Spot18_Basket', + 'ovl_Bg_Spot18_Futa', + 'ovl_Bg_Spot18_Obj', + 'ovl_Bg_Spot18_Shutter', + 'ovl_Bg_Sst_Floor', + 'ovl_Bg_Toki_Hikari', + 'ovl_Bg_Toki_Swd', + 'ovl_Bg_Treemouth', + 'ovl_Bg_Umajump', + 'ovl_Bg_Vb_Sima', + 'ovl_Bg_Ydan_Hasi', + 'ovl_Bg_Ydan_Maruta', + 'ovl_Bg_Ydan_Sp', + 'ovl_Bg_Zg', + 'ovl_Boss_Dodongo', + 'ovl_Boss_Fd', + 'ovl_Boss_Fd2', + 'ovl_Boss_Ganon', + 'ovl_Boss_Ganon2', + 'ovl_Boss_Ganondrof', + 'ovl_Boss_Goma', + 'ovl_Boss_Mo', + 'ovl_Boss_Sst', + 'ovl_Boss_Tw', + 'ovl_Boss_Va', + 'ovl_Demo_6K', + 'ovl_Demo_Du', + 'ovl_Demo_Ec', + 'ovl_Demo_Effect', + 'ovl_Demo_Ext', + 'ovl_Demo_Geff', + 'ovl_Demo_Gj', + 'ovl_Demo_Go', + 'ovl_Demo_Gt', + 'ovl_Demo_Ik', + 'ovl_Demo_Im', + 'ovl_Demo_Kankyo', + 'ovl_Demo_Kekkai', + 'ovl_Demo_Sa', + 'ovl_Demo_Shd', + 'ovl_Demo_Tre_Lgt', + 'ovl_Door_Ana', + 'ovl_Door_Gerudo', + 'ovl_Door_Killer', + 'ovl_Door_Shutter', + 'ovl_Door_Toki', + 'ovl_Door_Warp1', + 'ovl_Efc_Erupc', + 'ovl_Eff_Dust', + 'ovl_Effect_Ss_Blast', + 'ovl_Effect_Ss_Bomb', + 'ovl_Effect_Ss_Bomb2', + 'ovl_Effect_Ss_Bubble', + 'ovl_Effect_Ss_D_Fire', + 'ovl_Effect_Ss_Dead_Db', + 'ovl_Effect_Ss_Dead_Dd', + 'ovl_Effect_Ss_Dead_Ds', + 'ovl_Effect_Ss_Dead_Sound', + 'ovl_Effect_Ss_Dt_Bubble', + 'ovl_Effect_Ss_Dust', + 'ovl_Effect_Ss_En_Fire', + 'ovl_Effect_Ss_En_Ice', + 'ovl_Effect_Ss_Extra', + 'ovl_Effect_Ss_Fcircle', + 'ovl_Effect_Ss_Fhg_Flash', + 'ovl_Effect_Ss_Fire_Tail', + 'ovl_Effect_Ss_G_Fire', + 'ovl_Effect_Ss_G_Magma', + 'ovl_Effect_Ss_G_Magma2', + 'ovl_Effect_Ss_G_Ripple', + 'ovl_Effect_Ss_G_Spk', + 'ovl_Effect_Ss_G_Splash', + 'ovl_Effect_Ss_Hahen', + 'ovl_Effect_Ss_HitMark', + 'ovl_Effect_Ss_Ice_Piece', + 'ovl_Effect_Ss_Ice_Smoke', + 'ovl_Effect_Ss_K_Fire', + 'ovl_Effect_Ss_Kakera', + 'ovl_Effect_Ss_KiraKira', + 'ovl_Effect_Ss_Lightning', + 'ovl_Effect_Ss_Sibuki', + 'ovl_Effect_Ss_Sibuki2', + 'ovl_Effect_Ss_Solder_Srch_Ball', + 'ovl_Effect_Ss_Stick', + 'ovl_Effect_Ss_Stone1', + 'ovl_Elf_Msg', + 'ovl_Elf_Msg2', + 'ovl_En_Am', + 'ovl_En_Ani', + 'ovl_En_Anubice', + 'ovl_En_Anubice_Fire', + 'ovl_En_Anubice_Tag', + 'ovl_En_Arow_Trap', + 'ovl_En_Arrow', + 'ovl_En_Attack_Niw', + 'ovl_En_Ba', + 'ovl_En_Bb', + 'ovl_En_Bdfire', + 'ovl_En_Bigokuta', + 'ovl_En_Bili', + 'ovl_En_Bird', + 'ovl_En_Blkobj', + 'ovl_En_Bom', + 'ovl_En_Bom_Bowl_Man', + 'ovl_En_Bom_Bowl_Pit', + 'ovl_En_Bom_Chu', + 'ovl_En_Bombf', + 'ovl_En_Boom', + 'ovl_En_Box', + 'ovl_En_Brob', + 'ovl_En_Bubble', + 'ovl_En_Butte', + 'ovl_En_Bw', + 'ovl_En_Bx', + 'ovl_En_Changer', + 'ovl_En_Clear_Tag', + 'ovl_En_Cow', + 'ovl_En_Crow', + 'ovl_En_Cs', + 'ovl_En_Daiku', + 'ovl_En_Daiku_Kakariko', + 'ovl_En_Dekubaba', + 'ovl_En_Dekunuts', + 'ovl_En_Dh', + 'ovl_En_Dha', + 'ovl_En_Diving_Game', + 'ovl_En_Dns', + 'ovl_En_Dnt_Demo', + 'ovl_En_Dnt_Jiji', + 'ovl_En_Dnt_Nomal', + 'ovl_En_Dodojr', + 'ovl_En_Dodongo', + 'ovl_En_Dog', + 'ovl_En_Door', + 'ovl_En_Ds', + 'ovl_En_Du', + 'ovl_En_Dy_Extra', + 'ovl_En_Eg', + 'ovl_En_Eiyer', + 'ovl_En_Elf', + 'ovl_En_Encount1', + 'ovl_En_Encount2', + 'ovl_En_Ex_Item', + 'ovl_En_Ex_Ruppy', + 'ovl_En_Fd', + 'ovl_En_Fd_Fire', + 'ovl_En_Fhg_Fire', + 'ovl_En_Fire_Rock', + 'ovl_En_Firefly', + 'ovl_En_Fish', + 'ovl_En_Floormas', + 'ovl_En_Fr', + 'ovl_En_Fu', + 'ovl_En_Fw', + 'ovl_En_Fz', + 'ovl_En_G_Switch', + 'ovl_En_Ganon_Mant', + 'ovl_En_Ganon_Organ', + 'ovl_En_Gb', + 'ovl_En_Ge1', + 'ovl_En_Ge2', + 'ovl_En_Ge3', + 'ovl_En_GeldB', + 'ovl_En_GirlA', + 'ovl_En_Gm', + 'ovl_En_Go', + 'ovl_En_Go2', + 'ovl_En_Goma', + 'ovl_En_Goroiwa', + 'ovl_En_Gs', + 'ovl_En_Guest', + 'ovl_En_Hata', + 'ovl_En_Heishi1', + 'ovl_En_Heishi2', + 'ovl_En_Heishi3', + 'ovl_En_Heishi4', + 'ovl_En_Hintnuts', + 'ovl_En_Holl', + 'ovl_En_Honotrap', + 'ovl_En_Horse', + 'ovl_En_Horse_Game_Check', + 'ovl_En_Horse_Ganon', + 'ovl_En_Horse_Link_Child', + 'ovl_En_Horse_Normal', + 'ovl_En_Horse_Zelda', + 'ovl_En_Hs', + 'ovl_En_Hs2', + 'ovl_En_Hy', + 'ovl_En_Ice_Hono', + 'ovl_En_Ik', + 'ovl_En_In', + 'ovl_En_Insect', + 'ovl_En_Ishi', + 'ovl_En_It', + 'ovl_En_Jj', + 'ovl_En_Js', + 'ovl_En_Jsjutan', + 'ovl_En_Kakasi', + 'ovl_En_Kakasi2', + 'ovl_En_Kakasi3', + 'ovl_En_Kanban', + 'ovl_En_Karebaba', + 'ovl_En_Ko', + 'ovl_En_Kusa', + 'ovl_En_Kz', + 'ovl_En_Light', + 'ovl_En_Lightbox', + 'ovl_En_M_Fire1', + 'ovl_En_M_Thunder', + 'ovl_En_Ma1', + 'ovl_En_Ma2', + 'ovl_En_Ma3', + 'ovl_En_Mag', + 'ovl_En_Mb', + 'ovl_En_Md', + 'ovl_En_Mk', + 'ovl_En_Mm', + 'ovl_En_Mm2', + 'ovl_En_Ms', + 'ovl_En_Mu', + 'ovl_En_Nb', + 'ovl_En_Niw', + 'ovl_En_Niw_Girl', + 'ovl_En_Niw_Lady', + 'ovl_En_Nutsball', + 'ovl_En_Nwc', + 'ovl_En_Ny', + 'ovl_En_OE2', + 'ovl_En_Okarina_Effect', + 'ovl_En_Okarina_Tag', + 'ovl_En_Okuta', + 'ovl_En_Ossan', + 'ovl_En_Owl', + 'ovl_En_Part', + 'ovl_En_Peehat', + 'ovl_En_Po_Desert', + 'ovl_En_Po_Field', + 'ovl_En_Po_Relay', + 'ovl_En_Po_Sisters', + 'ovl_En_Poh', + 'ovl_En_Pu_box', + 'ovl_En_Rd', + 'ovl_En_Reeba', + 'ovl_En_River_Sound', + 'ovl_En_Rl', + 'ovl_En_Rr', + 'ovl_En_Ru1', + 'ovl_En_Ru2', + 'ovl_En_Sa', + 'ovl_En_Sb', + 'ovl_En_Scene_Change', + 'ovl_En_Sda', + 'ovl_En_Shopnuts', + 'ovl_En_Si', + 'ovl_En_Siofuki', + 'ovl_En_Skb', + 'ovl_En_Skj', + 'ovl_En_Skjneedle', + 'ovl_En_Ssh', + 'ovl_En_St', + 'ovl_En_Sth', + 'ovl_En_Stream', + 'ovl_En_Sw', + 'ovl_En_Syateki_Itm', + 'ovl_En_Syateki_Man', + 'ovl_En_Syateki_Niw', + 'ovl_En_Ta', + 'ovl_En_Takara_Man', + 'ovl_En_Tana', + 'ovl_En_Tg', + 'ovl_En_Tite', + 'ovl_En_Tk', + 'ovl_En_Torch', + 'ovl_En_Torch2', + 'ovl_En_Toryo', + 'ovl_En_Tp', + 'ovl_En_Tr', + 'ovl_En_Trap', + 'ovl_En_Tubo_Trap', + 'ovl_En_Vali', + 'ovl_En_Vase', + 'ovl_En_Vb_Ball', + 'ovl_En_Viewer', + 'ovl_En_Vm', + 'ovl_En_Wall_Tubo', + 'ovl_En_Wallmas', + 'ovl_En_Weather_Tag', + 'ovl_En_Weiyer', + 'ovl_En_Wf', + 'ovl_En_Wonder_Item', + 'ovl_En_Wonder_Talk', + 'ovl_En_Wonder_Talk2', + 'ovl_En_Wood02', + 'ovl_En_Xc', + 'ovl_En_Yabusame_Mark', + 'ovl_En_Yukabyun', + 'ovl_En_Zf', + 'ovl_En_Zl1', + 'ovl_En_Zl2', + 'ovl_En_Zl3', + 'ovl_En_Zl4', + 'ovl_En_Zo', + 'ovl_En_fHG', + 'ovl_End_Title', + 'ovl_Fishing', + 'ovl_Item_B_Heart', + 'ovl_Item_Etcetera', + 'ovl_Item_Inbox', + 'ovl_Item_Ocarina', + 'ovl_Item_Shield', + 'ovl_Magic_Dark', + 'ovl_Magic_Fire', + 'ovl_Magic_Wind', + 'ovl_Mir_Ray', + 'ovl_Obj_Bean', + 'ovl_Obj_Blockstop', + 'ovl_Obj_Bombiwa', + 'ovl_Obj_Comb', + 'ovl_Obj_Dekujr', + 'ovl_Obj_Elevator', + 'ovl_Obj_Hamishi', + 'ovl_Obj_Hana', + 'ovl_Obj_Hsblock', + 'ovl_Obj_Ice_Poly', + 'ovl_Obj_Kibako', + 'ovl_Obj_Kibako2', + 'ovl_Obj_Lift', + 'ovl_Obj_Lightswitch', + 'ovl_Obj_Makekinsuta', + 'ovl_Obj_Makeoshihiki', + 'ovl_Obj_Mure', + 'ovl_Obj_Mure2', + 'ovl_Obj_Mure3', + 'ovl_Obj_Oshihiki', + 'ovl_Obj_Roomtimer', + 'ovl_Obj_Switch', + 'ovl_Obj_Syokudai', + 'ovl_Obj_Timeblock', + 'ovl_Obj_Tsubo', + 'ovl_Obj_Warp2block', + 'ovl_Object_Kankyo', + 'ovl_Oceff_Spot', + 'ovl_Oceff_Storm', + 'ovl_Oceff_Wipe', + 'ovl_Oceff_Wipe2', + 'ovl_Oceff_Wipe3', + 'ovl_Oceff_Wipe4', + 'ovl_Shot_Sun', + 'gameplay_keep', + 'gameplay_field_keep', + 'gameplay_dangeon_keep', + 'gameplay_object_exchange_static', + 'object_link_boy', + 'object_link_child', + 'object_box', + 'object_human', + 'object_okuta', + 'object_poh', + 'object_wallmaster', + 'object_dy_obj', + 'object_firefly', + 'object_dodongo', + 'object_fire', + 'object_niw', + 'object_tite', + 'object_reeba', + 'object_peehat', + 'object_kingdodongo', + 'object_horse', + 'object_zf', + 'object_goma', + 'object_zl1', + 'object_gol', + 'object_bubble', + 'object_dodojr', + 'object_torch2', + 'object_bl', + 'object_tp', + 'object_oA1', + 'object_st', + 'object_bw', + 'object_ei', + 'object_horse_normal', + 'object_oB1', + 'object_o_anime', + 'object_spot04_objects', + 'object_ddan_objects', + 'object_hidan_objects', + 'object_horse_ganon', + 'object_oA2', + 'object_spot00_objects', + 'object_mb', + 'object_bombf', + 'object_sk2', + 'object_oE1', + 'object_oE_anime', + 'object_oE2', + 'object_ydan_objects', + 'object_gnd', + 'object_am', + 'object_dekubaba', + 'object_oA3', + 'object_oA4', + 'object_oA5', + 'object_oA6', + 'object_oA7', + 'object_jj', + 'object_oA8', + 'object_oA9', + 'object_oB2', + 'object_oB3', + 'object_oB4', + 'object_horse_zelda', + 'object_opening_demo1', + 'object_warp1', + 'object_b_heart', + 'object_dekunuts', + 'object_oE3', + 'object_oE4', + 'object_menkuri_objects', + 'object_oE5', + 'object_oE6', + 'object_oE7', + 'object_oE8', + 'object_oE9', + 'object_oE10', + 'object_oE11', + 'object_oE12', + 'object_vali', + 'object_oA10', + 'object_oA11', + 'object_mizu_objects', + 'object_fhg', + 'object_ossan', + 'object_mori_hineri1', + 'object_Bb', + 'object_toki_objects', + 'object_yukabyun', + 'object_zl2', + 'object_mjin', + 'object_mjin_flash', + 'object_mjin_dark', + 'object_mjin_flame', + 'object_mjin_ice', + 'object_mjin_soul', + 'object_mjin_wind', + 'object_mjin_oka', + 'object_haka_objects', + 'object_spot06_objects', + 'object_ice_objects', + 'object_relay_objects', + 'object_mori_hineri1a', + 'object_mori_hineri2', + 'object_mori_hineri2a', + 'object_mori_objects', + 'object_mori_tex', + 'object_spot08_obj', + 'object_warp2', + 'object_hata', + 'object_bird', + 'object_wood02', + 'object_lightbox', + 'object_pu_box', + 'object_trap', + 'object_vase', + 'object_im', + 'object_ta', + 'object_tk', + 'object_xc', + 'object_vm', + 'object_bv', + 'object_hakach_objects', + 'object_efc_crystal_light', + 'object_efc_fire_ball', + 'object_efc_flash', + 'object_efc_lgt_shower', + 'object_efc_star_field', + 'object_god_lgt', + 'object_light_ring', + 'object_triforce_spot', + 'object_medal', + 'object_bdan_objects', + 'object_sd', + 'object_rd', + 'object_po_sisters', + 'object_heavy_object', + 'object_gndd', + 'object_fd', + 'object_du', + 'object_fw', + 'object_horse_link_child', + 'object_spot02_objects', + 'object_haka', + 'object_ru1', + 'object_syokudai', + 'object_fd2', + 'object_dh', + 'object_rl', + 'object_efc_tw', + 'object_demo_tre_lgt', + 'object_gi_key', + 'object_mir_ray', + 'object_brob', + 'object_gi_jewel', + 'object_spot09_obj', + 'object_spot18_obj', + 'object_bdoor', + 'object_spot17_obj', + 'object_shop_dungen', + 'object_nb', + 'object_mo', + 'object_sb', + 'object_gi_melody', + 'object_gi_heart', + 'object_gi_compass', + 'object_gi_bosskey', + 'object_gi_medal', + 'object_gi_nuts', + 'object_sa', + 'object_gi_hearts', + 'object_gi_arrowcase', + 'object_gi_bombpouch', + 'object_in', + 'object_tr', + 'object_spot16_obj', + 'object_oE1s', + 'object_oE4s', + 'object_os_anime', + 'object_gi_bottle', + 'object_gi_stick', + 'object_gi_map', + 'object_oF1d_map', + 'object_ru2', + 'object_gi_shield_1', + 'object_dekujr', + 'object_gi_magicpot', + 'object_gi_bomb_1', + 'object_oF1s', + 'object_ma2', + 'object_gi_purse', + 'object_hni', + 'object_tw', + 'object_rr', + 'object_bxa', + 'object_anubice', + 'object_gi_gerudo', + 'object_gi_arrow', + 'object_gi_bomb_2', + 'object_gi_egg', + 'object_gi_scale', + 'object_gi_shield_2', + 'object_gi_hookshot', + 'object_gi_ocarina', + 'object_gi_milk', + 'object_ma1', + 'object_ganon', + 'object_sst', + 'object_ny', + 'object_fr', + 'object_gi_pachinko', + 'object_gi_boomerang', + 'object_gi_bow', + 'object_gi_glasses', + 'object_gi_liquid', + 'object_ani', + 'object_demo_6k', + 'object_gi_shield_3', + 'object_gi_letter', + 'object_spot15_obj', + 'object_jya_obj', + 'object_gi_clothes', + 'object_gi_bean', + 'object_gi_fish', + 'object_gi_saw', + 'object_gi_hammer', + 'object_gi_grass', + 'object_gi_longsword', + 'object_spot01_objects', + 'object_md', + 'object_km1', + 'object_kw1', + 'object_zo', + 'object_kz', + 'object_umajump', + 'object_masterkokiri', + 'object_masterkokirihead', + 'object_mastergolon', + 'object_masterzoora', + 'object_aob', + 'object_ik', + 'object_ahg', + 'object_cne', + 'object_gi_niwatori', + 'object_skj', + 'object_gi_bottle_letter', + 'object_bji', + 'object_bba', + 'object_gi_ocarina_0', + 'object_ds', + 'object_ane', + 'object_boj', + 'object_spot03_object', + 'object_spot07_object', + 'object_fz', + 'object_bob', + 'object_ge1', + 'object_yabusame_point', + 'object_gi_boots_2', + 'object_gi_seed', + 'object_gnd_magic', + 'object_d_elevator', + 'object_d_hsblock', + 'object_d_lift', + 'object_mamenoki', + 'object_goroiwa', + 'object_toryo', + 'object_daiku', + 'object_nwc', + 'object_blkobj', + 'object_gm', + 'object_ms', + 'object_hs', + 'object_ingate', + 'object_lightswitch', + 'object_kusa', + 'object_tsubo', + 'object_gi_gloves', + 'object_gi_coin', + 'object_kanban', + 'object_gjyo_objects', + 'object_owl', + 'object_mk', + 'object_fu', + 'object_gi_ki_tan_mask', + 'object_gi_redead_mask', + 'object_gi_skj_mask', + 'object_gi_rabit_mask', + 'object_gi_truth_mask', + 'object_ganon_objects', + 'object_siofuki', + 'object_stream', + 'object_mm', + 'object_fa', + 'object_os', + 'object_gi_eye_lotion', + 'object_gi_powder', + 'object_gi_mushroom', + 'object_gi_ticketstone', + 'object_gi_brokensword', + 'object_js', + 'object_cs', + 'object_gi_prescription', + 'object_gi_bracelet', + 'object_gi_soldout', + 'object_gi_frog', + 'object_mag', + 'object_door_gerudo', + 'object_gt', + 'object_efc_erupc', + 'object_zl2_anime1', + 'object_zl2_anime2', + 'object_gi_golonmask', + 'object_gi_zoramask', + 'object_gi_gerudomask', + 'object_ganon2', + 'object_ka', + 'object_ts', + 'object_zg', + 'object_gi_hoverboots', + 'object_gi_m_arrow', + 'object_ds2', + 'object_ec', + 'object_fish', + 'object_gi_sutaru', + 'object_gi_goddess', + 'object_ssh', + 'object_bigokuta', + 'object_bg', + 'object_spot05_objects', + 'object_spot12_obj', + 'object_bombiwa', + 'object_hintnuts', + 'object_rs', + 'object_spot00_break', + 'object_gla', + 'object_shopnuts', + 'object_geldb', + 'object_gr', + 'object_dog', + 'object_jya_iron', + 'object_jya_door', + 'object_spot01_objects2', + 'object_spot11_obj', + 'object_kibako2', + 'object_dns', + 'object_dnk', + 'object_gi_fire', + 'object_gi_insect', + 'object_gi_butterfly', + 'object_gi_ghost', + 'object_gi_soul', + 'object_bowl', + 'object_po_field', + 'object_demo_kekkai', + 'object_efc_doughnut', + 'object_gi_dekupouch', + 'object_ganon_anime1', + 'object_ganon_anime2', + 'object_ganon_anime3', + 'object_gi_rupy', + 'object_spot01_matoya', + 'object_spot01_matoyab', + 'object_po_composer', + 'object_mu', + 'object_wf', + 'object_skb', + 'object_gj', + 'object_geff', + 'object_haka_door', + 'object_gs', + 'object_ps', + 'object_bwall', + 'object_crow', + 'object_cow', + 'object_cob', + 'object_gi_sword_1', + 'object_door_killer', + 'object_ouke_haka', + 'object_timeblock', + 'object_zl4', + 'g_pn_01', + 'g_pn_02', + 'g_pn_03', + 'g_pn_04', + 'g_pn_05', + 'g_pn_06', + 'g_pn_07', + 'g_pn_08', + 'g_pn_09', + 'g_pn_10', + 'g_pn_11', + 'g_pn_12', + 'g_pn_13', + 'g_pn_14', + 'g_pn_15', + 'g_pn_16', + 'g_pn_17', + 'g_pn_18', + 'g_pn_19', + 'g_pn_20', + 'g_pn_21', + 'g_pn_22', + 'g_pn_23', + 'g_pn_24', + 'g_pn_25', + 'g_pn_26', + 'g_pn_27', + 'g_pn_28', + 'g_pn_29', + 'g_pn_30', + 'g_pn_31', + 'g_pn_32', + 'g_pn_33', + 'g_pn_34', + 'g_pn_35', + 'g_pn_36', + 'g_pn_37', + 'g_pn_38', + 'g_pn_39', + 'g_pn_40', + 'g_pn_41', + 'g_pn_42', + 'g_pn_43', + 'g_pn_44', + 'g_pn_45', + 'g_pn_46', + 'g_pn_47', + 'g_pn_48', + 'g_pn_49', + 'g_pn_50', + 'g_pn_51', + 'g_pn_52', + 'g_pn_53', + 'g_pn_54', + 'g_pn_55', + 'g_pn_56', + 'g_pn_57', + 'z_select_static', + 'nintendo_rogo_static', + 'title_static', + 'parameter_static', + 'vr_fine0_static', + 'vr_fine0_pal_static', + 'vr_fine1_static', + 'vr_fine1_pal_static', + 'vr_fine2_static', + 'vr_fine2_pal_static', + 'vr_fine3_static', + 'vr_fine3_pal_static', + 'vr_cloud0_static', + 'vr_cloud0_pal_static', + 'vr_cloud1_static', + 'vr_cloud1_pal_static', + 'vr_cloud2_static', + 'vr_cloud2_pal_static', + 'vr_cloud3_static', + 'vr_cloud3_pal_static', + 'vr_holy0_static', + 'vr_holy0_pal_static', + 'vr_holy1_static', + 'vr_holy1_pal_static', + 'vr_MDVR_static', + 'vr_MDVR_pal_static', + 'vr_MNVR_static', + 'vr_MNVR_pal_static', + 'vr_RUVR_static', + 'vr_RUVR_pal_static', + 'vr_LHVR_static', + 'vr_LHVR_pal_static', + 'vr_KHVR_static', + 'vr_KHVR_pal_static', + 'vr_K3VR_static', + 'vr_K3VR_pal_static', + 'vr_K4VR_static', + 'vr_K4VR_pal_static', + 'vr_K5VR_static', + 'vr_K5VR_pal_static', + 'vr_SP1a_static', + 'vr_SP1a_pal_static', + 'vr_MLVR_static', + 'vr_MLVR_pal_static', + 'vr_KKRVR_static', + 'vr_KKRVR_pal_static', + 'vr_KR3VR_static', + 'vr_KR3VR_pal_static', + 'vr_IPVR_static', + 'vr_IPVR_pal_static', + 'vr_KSVR_static', + 'vr_KSVR_pal_static', + 'vr_GLVR_static', + 'vr_GLVR_pal_static', + 'vr_ZRVR_static', + 'vr_ZRVR_pal_static', + 'vr_DGVR_static', + 'vr_DGVR_pal_static', + 'vr_ALVR_static', + 'vr_ALVR_pal_static', + 'vr_NSVR_static', + 'vr_NSVR_pal_static', + 'vr_LBVR_static', + 'vr_LBVR_pal_static', + 'vr_TTVR_static', + 'vr_TTVR_pal_static', + 'vr_FCVR_static', + 'vr_FCVR_pal_static', + 'elf_message_field', + 'elf_message_ydan', + 'ydan_scene', +'ydan_room_0', +'ydan_room_1', +'ydan_room_2', +'ydan_room_3', +'ydan_room_4', +'ydan_room_5', +'ydan_room_6', +'ydan_room_7', +'ydan_room_8', +'ydan_room_9', +'ydan_room_10', +'ydan_room_11', +'ddan_scene', +'ddan_room_0', +'ddan_room_1', +'ddan_room_2', +'ddan_room_3', +'ddan_room_4', +'ddan_room_5', +'ddan_room_6', +'ddan_room_7', +'ddan_room_8', +'ddan_room_9', +'ddan_room_10', +'ddan_room_11', +'ddan_room_12', +'ddan_room_13', +'ddan_room_14', +'ddan_room_15', +'ddan_room_16', +'bdan_scene', +'bdan_room_0', +'bdan_room_1', +'bdan_room_2', +'bdan_room_3', +'bdan_room_4', +'bdan_room_5', +'bdan_room_6', +'bdan_room_7', +'bdan_room_8', +'bdan_room_9', +'bdan_room_10', +'bdan_room_11', +'bdan_room_12', +'bdan_room_13', +'bdan_room_14', +'bdan_room_15', +'Bmori1_scene', +'Bmori1_room_0', +'Bmori1_room_1', +'Bmori1_room_2', +'Bmori1_room_3', +'Bmori1_room_4', +'Bmori1_room_5', +'Bmori1_room_6', +'Bmori1_room_7', +'Bmori1_room_8', +'Bmori1_room_9', +'Bmori1_room_10', +'Bmori1_room_11', +'Bmori1_room_12', +'Bmori1_room_13', +'Bmori1_room_14', +'Bmori1_room_15', +'Bmori1_room_16', +'Bmori1_room_17', +'Bmori1_room_18', +'Bmori1_room_19', +'Bmori1_room_20', +'Bmori1_room_21', +'Bmori1_room_22', +'HIDAN_scene', +'HIDAN_room_0', +'HIDAN_room_1', +'HIDAN_room_2', +'HIDAN_room_3', +'HIDAN_room_4', +'HIDAN_room_5', +'HIDAN_room_6', +'HIDAN_room_7', +'HIDAN_room_8', +'HIDAN_room_9', +'HIDAN_room_10', +'HIDAN_room_11', +'HIDAN_room_12', +'HIDAN_room_13', +'HIDAN_room_14', +'HIDAN_room_15', +'HIDAN_room_16', +'HIDAN_room_17', +'HIDAN_room_18', +'HIDAN_room_19', +'HIDAN_room_20', +'HIDAN_room_21', +'HIDAN_room_22', +'HIDAN_room_23', +'HIDAN_room_24', +'HIDAN_room_25', +'HIDAN_room_26', +'MIZUsin_scene', +'MIZUsin_room_0', +'MIZUsin_room_1', +'MIZUsin_room_2', +'MIZUsin_room_3', +'MIZUsin_room_4', +'MIZUsin_room_5', +'MIZUsin_room_6', +'MIZUsin_room_7', +'MIZUsin_room_8', +'MIZUsin_room_9', +'MIZUsin_room_10', +'MIZUsin_room_11', +'MIZUsin_room_12', +'MIZUsin_room_13', +'MIZUsin_room_14', +'MIZUsin_room_15', +'MIZUsin_room_16', +'MIZUsin_room_17', +'MIZUsin_room_18', +'MIZUsin_room_19', +'MIZUsin_room_20', +'MIZUsin_room_21', +'MIZUsin_room_22', +'jyasinzou_scene', +'jyasinzou_room_0', +'jyasinzou_room_1', +'jyasinzou_room_2', +'jyasinzou_room_3', +'jyasinzou_room_4', +'jyasinzou_room_5', +'jyasinzou_room_6', +'jyasinzou_room_7', +'jyasinzou_room_8', +'jyasinzou_room_9', +'jyasinzou_room_10', +'jyasinzou_room_11', +'jyasinzou_room_12', +'jyasinzou_room_13', +'jyasinzou_room_14', +'jyasinzou_room_15', +'jyasinzou_room_16', +'jyasinzou_room_17', +'jyasinzou_room_18', +'jyasinzou_room_19', +'jyasinzou_room_20', +'jyasinzou_room_21', +'jyasinzou_room_22', +'jyasinzou_room_23', +'jyasinzou_room_24', +'jyasinzou_room_25', +'jyasinzou_room_26', +'jyasinzou_room_27', +'jyasinzou_room_28', +'HAKAdan_scene', +'HAKAdan_room_0', +'HAKAdan_room_1', +'HAKAdan_room_2', +'HAKAdan_room_3', +'HAKAdan_room_4', +'HAKAdan_room_5', +'HAKAdan_room_6', +'HAKAdan_room_7', +'HAKAdan_room_8', +'HAKAdan_room_9', +'HAKAdan_room_10', +'HAKAdan_room_11', +'HAKAdan_room_12', +'HAKAdan_room_13', +'HAKAdan_room_14', +'HAKAdan_room_15', +'HAKAdan_room_16', +'HAKAdan_room_17', +'HAKAdan_room_18', +'HAKAdan_room_19', +'HAKAdan_room_20', +'HAKAdan_room_21', +'HAKAdan_room_22', +'HAKAdanCH_scene', +'HAKAdanCH_room_0', +'HAKAdanCH_room_1', +'HAKAdanCH_room_2', +'HAKAdanCH_room_3', +'HAKAdanCH_room_4', +'HAKAdanCH_room_5', +'HAKAdanCH_room_6', +'ice_doukutu_scene', +'ice_doukutu_room_0', +'ice_doukutu_room_1', +'ice_doukutu_room_2', +'ice_doukutu_room_3', +'ice_doukutu_room_4', +'ice_doukutu_room_5', +'ice_doukutu_room_6', +'ice_doukutu_room_7', +'ice_doukutu_room_8', +'ice_doukutu_room_9', +'ice_doukutu_room_10', +'ice_doukutu_room_11', +'men_scene', +'men_room_0', +'men_room_1', +'men_room_2', +'men_room_3', +'men_room_4', +'men_room_5', +'men_room_6', +'men_room_7', +'men_room_8', +'men_room_9', +'men_room_10', +'ganontika_scene', +'ganontika_room_0', +'ganontika_room_1', +'ganontika_room_2', +'ganontika_room_3', +'ganontika_room_4', +'ganontika_room_5', +'ganontika_room_6', +'ganontika_room_7', +'ganontika_room_8', +'ganontika_room_9', +'ganontika_room_10', +'ganontika_room_11', +'ganontika_room_12', +'ganontika_room_13', +'ganontika_room_14', +'ganontika_room_15', +'ganontika_room_16', +'ganontika_room_17', +'ganontika_room_18', +'ganontika_room_19', +'spot00_scene', +'spot00_room_0', +'spot01_scene', +'spot01_room_0', +'spot02_scene', +'spot02_room_0', +'spot02_room_1', +'spot03_scene', +'spot03_room_0', +'spot03_room_1', +'spot04_scene', +'spot04_room_0', +'spot04_room_1', +'spot04_room_2', +'spot05_scene', +'spot05_room_0', +'spot06_scene', +'spot06_room_0', +'spot07_scene', +'spot07_room_0', +'spot07_room_1', +'spot08_scene', +'spot08_room_0', +'spot09_scene', +'spot09_room_0', +'spot10_scene', +'spot10_room_0', +'spot10_room_1', +'spot10_room_2', +'spot10_room_3', +'spot10_room_4', +'spot10_room_5', +'spot10_room_6', +'spot10_room_7', +'spot10_room_8', +'spot10_room_9', +'spot11_scene', +'spot11_room_0', +'spot12_scene', +'spot12_room_0', +'spot12_room_1', +'spot13_scene', +'spot13_room_0', +'spot13_room_1', +'spot15_scene', +'spot15_room_0', +'spot16_scene', +'spot16_room_0', +'spot17_scene', +'spot17_room_0', +'spot17_room_1', +'spot18_scene', +'spot18_room_0', +'spot18_room_1', +'spot18_room_2', +'spot18_room_3', +'market_day_scene', +'market_day_room_0', +'market_night_scene', +'market_night_room_0', +'kenjyanoma_scene', +'kenjyanoma_room_0', +'tokinoma_scene', +'tokinoma_room_0', +'tokinoma_room_1', +'link_home_scene', +'link_home_room_0', +'kokiri_shop_scene', +'kokiri_shop_room_0', +'kokiri_home_scene', +'kokiri_home_room_0', +'kakusiana_scene', +'kakusiana_room_0', +'kakusiana_room_1', +'kakusiana_room_2', +'kakusiana_room_3', +'kakusiana_room_4', +'kakusiana_room_5', +'kakusiana_room_6', +'kakusiana_room_7', +'kakusiana_room_8', +'kakusiana_room_9', +'kakusiana_room_10', +'kakusiana_room_11', +'kakusiana_room_12', +'kakusiana_room_13', +'entra_scene', +'entra_room_0', +'moribossroom_scene', +'moribossroom_room_0', +'moribossroom_room_1', +'syatekijyou_scene', +'syatekijyou_room_0', +'shop1_scene', +'shop1_room_0', +'hairal_niwa_scene', +'hairal_niwa_room_0', +'ganon_tou_scene', +'ganon_tou_room_0', +'market_alley_scene', +'market_alley_room_0', +'spot20_scene', +'spot20_room_0', +'market_ruins_scene', +'market_ruins_room_0', +'entra_n_scene', +'entra_n_room_0', +'enrui_scene', +'enrui_room_0', +'market_alley_n_scene', +'market_alley_n_room_0', +'hiral_demo_scene', +'hiral_demo_room_0', +'kokiri_home3_scene', +'kokiri_home3_room_0', +'malon_stable_scene', +'malon_stable_room_0', +'kakariko_scene', +'kakariko_room_0', +'bdan_boss_scene', +'bdan_boss_room_0', +'bdan_boss_room_1', +'FIRE_bs_scene', +'FIRE_bs_room_0', +'FIRE_bs_room_1', +'hut_scene', +'hut_room_0', +'daiyousei_izumi_scene', +'daiyousei_izumi_room_0', +'hakaana_scene', +'hakaana_room_0', +'yousei_izumi_tate_scene', +'yousei_izumi_tate_room_0', +'yousei_izumi_yoko_scene', +'yousei_izumi_yoko_room_0', +'golon_scene', +'golon_room_0', +'zoora_scene', +'zoora_room_0', +'drag_scene', +'drag_room_0', +'alley_shop_scene', +'alley_shop_room_0', +'night_shop_scene', +'night_shop_room_0', +'impa_scene', +'impa_room_0', +'labo_scene', +'labo_room_0', +'tent_scene', +'tent_room_0', +'nakaniwa_scene', +'nakaniwa_room_0', +'ddan_boss_scene', +'ddan_boss_room_0', +'ddan_boss_room_1', +'ydan_boss_scene', +'ydan_boss_room_0', +'ydan_boss_room_1', +'HAKAdan_bs_scene', +'HAKAdan_bs_room_0', +'HAKAdan_bs_room_1', +'MIZUsin_bs_scene', +'MIZUsin_bs_room_0', +'MIZUsin_bs_room_1', +'ganon_scene', +'ganon_room_0', +'ganon_room_1', +'ganon_room_2', +'ganon_room_3', +'ganon_room_4', +'ganon_room_5', +'ganon_room_6', +'ganon_room_7', +'ganon_room_8', +'ganon_room_9', +'ganon_boss_scene', +'ganon_boss_room_0', +'jyasinboss_scene', +'jyasinboss_room_0', +'jyasinboss_room_1', +'jyasinboss_room_2', +'jyasinboss_room_3', +'kokiri_home4_scene', +'kokiri_home4_room_0', +'kokiri_home5_scene', +'kokiri_home5_room_0', +'ganon_final_scene', +'ganon_final_room_0', +'kakariko3_scene', +'kakariko3_room_0', +'hakasitarelay_scene', +'hakasitarelay_room_0', +'hakasitarelay_room_1', +'hakasitarelay_room_2', +'hakasitarelay_room_3', +'hakasitarelay_room_4', +'hakasitarelay_room_5', +'hakasitarelay_room_6', +'shrine_scene', +'shrine_room_0', +'turibori_scene', +'turibori_room_0', +'shrine_n_scene', +'shrine_n_room_0', +'shrine_r_scene', +'shrine_r_room_0', +'hakaana2_scene', +'hakaana2_room_0', +'gerudoway_scene', +'gerudoway_room_0', +'gerudoway_room_1', +'gerudoway_room_2', +'gerudoway_room_3', +'gerudoway_room_4', +'gerudoway_room_5', +'hairal_niwa_n_scene', +'hairal_niwa_n_room_0', +'bowling_scene', +'bowling_room_0', +'hakaana_ouke_scene', +'hakaana_ouke_room_0', +'hakaana_ouke_room_1', +'hakaana_ouke_room_2', +'hylia_labo_scene', +'hylia_labo_room_0', +'souko_scene', +'souko_room_0', +'souko_room_1', +'souko_room_2', +'miharigoya_scene', +'miharigoya_room_0', +'mahouya_scene', +'mahouya_room_0', +'takaraya_scene', +'takaraya_room_0', +'takaraya_room_1', +'takaraya_room_2', +'takaraya_room_3', +'takaraya_room_4', +'takaraya_room_5', +'takaraya_room_6', +'ganon_sonogo_scene', +'ganon_sonogo_room_0', +'ganon_sonogo_room_1', +'ganon_sonogo_room_2', +'ganon_sonogo_room_3', +'ganon_sonogo_room_4', +'ganon_demo_scene', +'ganon_demo_room_0', +'face_shop_scene', +'face_shop_room_0', +'kinsuta_scene', +'kinsuta_room_0', +'ganontikasonogo_scene', +'ganontikasonogo_room_0', +'ganontikasonogo_room_1', + 'bump_texture_static', + 'anime_model_1_static', + 'anime_model_2_static', + 'anime_model_3_static', + 'anime_model_4_static', + 'anime_model_5_static', + 'anime_model_6_static', + 'anime_texture_1_static', + 'anime_texture_2_static', + 'anime_texture_3_static', + 'anime_texture_4_static', + 'anime_texture_5_static', + 'anime_texture_6_static', + 'softsprite_matrix_static', +] + +romData = None + + +def initialize_worker(rom_data): + global romData + romData = rom_data + +def read_uint32_be(offset): + return struct.unpack('>I', romData[offset:offset+4])[0] + +def write_output_file(name, offset, size): + try: + with open(name, 'wb') as f: + f.write(romData[offset:offset+size]) + except IOError: + print('failed to write file ' + name) + +def ExtractFunc(i): + filename = 'baserom/' + FILE_NAMES[i] + entryOffset = FILE_TABLE_OFFSET + 16 * i + + virtStart = read_uint32_be(entryOffset + 0) + virtEnd = read_uint32_be(entryOffset + 4) + physStart = read_uint32_be(entryOffset + 8) + physEnd = read_uint32_be(entryOffset + 12) + + if physEnd == 0: # uncompressed + compressed = False + size = virtEnd - virtStart + else: # compressed + compressed = True + size = physEnd - physStart + + print('extracting ' + filename + " (0x%08X, 0x%08X)" % (virtStart, virtEnd)) + write_output_file(filename, physStart, size) + if compressed: + os.system('tools/yaz0 -d ' + filename + ' ' + filename) + +##################################################################### + +def main(): + try: + os.mkdir('baserom') + except: + pass + + # read baserom data + try: + with open(ROM_FILE_NAME, 'rb') as f: + rom_data = f.read() + except IOError: + print('failed to read ' + ROM_FILE_NAME) + sys.exit(1) + + # extract files + num_cores = cpu_count() + print("Extracting baserom with " + str(num_cores) + " CPU cores.") + with Pool(num_cores, initialize_worker, (rom_data,)) as p: + p.map(ExtractFunc, range(len(FILE_NAMES))) + +if __name__ == "__main__": + main() diff --git a/OTRGui/assets/extractor/Config.xml b/OTRGui/assets/extractor/Config_GC_MQ_D.xml similarity index 83% rename from OTRGui/assets/extractor/Config.xml rename to OTRGui/assets/extractor/Config_GC_MQ_D.xml index 6e86fa8d8..51e536292 100644 --- a/OTRGui/assets/extractor/Config.xml +++ b/OTRGui/assets/extractor/Config_GC_MQ_D.xml @@ -2,7 +2,7 @@ - + diff --git a/OTRGui/assets/extractor/Config_GC_NMQ_D.xml b/OTRGui/assets/extractor/Config_GC_NMQ_D.xml new file mode 100644 index 000000000..7cc11ac18 --- /dev/null +++ b/OTRGui/assets/extractor/Config_GC_NMQ_D.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/OTRGui/assets/extractor/Config_GC_NMQ_PAL_F.xml b/OTRGui/assets/extractor/Config_GC_NMQ_PAL_F.xml new file mode 100644 index 000000000..b98acfb00 --- /dev/null +++ b/OTRGui/assets/extractor/Config_GC_NMQ_PAL_F.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/OTRGui/assets/extractor/filelists/gamecube_pal.txt b/OTRGui/assets/extractor/filelists/gamecube_pal.txt new file mode 100644 index 000000000..c9746c1da --- /dev/null +++ b/OTRGui/assets/extractor/filelists/gamecube_pal.txt @@ -0,0 +1,1510 @@ +makerom +boot +dmadata +Audiobank +Audioseq +Audiotable +link_animetion +icon_item_static +icon_item_24_static +icon_item_field_static +icon_item_dungeon_static +icon_item_gameover_static +icon_item_nes_static +icon_item_ger_static +icon_item_fra_static +item_name_static +map_name_static +do_action_static +message_static +message_texture_static +nes_font_static +nes_message_data_static +ger_message_data_static +fra_message_data_static +staff_message_data_static +map_grand_static +map_48x85_static +map_i_static +code +ovl_title +ovl_select +ovl_opening +ovl_file_choose +ovl_kaleido_scope +ovl_player_actor +ovl_map_mark_data +ovl_En_Test +ovl_Arms_Hook +ovl_Arrow_Fire +ovl_Arrow_Ice +ovl_Arrow_Light +ovl_Bg_Bdan_Objects +ovl_Bg_Bdan_Switch +ovl_Bg_Bom_Guard +ovl_Bg_Bombwall +ovl_Bg_Bowl_Wall +ovl_Bg_Breakwall +ovl_Bg_Ddan_Jd +ovl_Bg_Ddan_Kd +ovl_Bg_Dodoago +ovl_Bg_Dy_Yoseizo +ovl_Bg_Ganon_Otyuka +ovl_Bg_Gate_Shutter +ovl_Bg_Gjyo_Bridge +ovl_Bg_Gnd_Darkmeiro +ovl_Bg_Gnd_Firemeiro +ovl_Bg_Gnd_Iceblock +ovl_Bg_Gnd_Nisekabe +ovl_Bg_Gnd_Soulmeiro +ovl_Bg_Haka +ovl_Bg_Haka_Gate +ovl_Bg_Haka_Huta +ovl_Bg_Haka_Megane +ovl_Bg_Haka_MeganeBG +ovl_Bg_Haka_Sgami +ovl_Bg_Haka_Ship +ovl_Bg_Haka_Trap +ovl_Bg_Haka_Tubo +ovl_Bg_Haka_Water +ovl_Bg_Haka_Zou +ovl_Bg_Heavy_Block +ovl_Bg_Hidan_Curtain +ovl_Bg_Hidan_Dalm +ovl_Bg_Hidan_Firewall +ovl_Bg_Hidan_Fslift +ovl_Bg_Hidan_Fwbig +ovl_Bg_Hidan_Hamstep +ovl_Bg_Hidan_Hrock +ovl_Bg_Hidan_Kousi +ovl_Bg_Hidan_Kowarerukabe +ovl_Bg_Hidan_Rock +ovl_Bg_Hidan_Rsekizou +ovl_Bg_Hidan_Sekizou +ovl_Bg_Hidan_Sima +ovl_Bg_Hidan_Syoku +ovl_Bg_Ice_Objects +ovl_Bg_Ice_Shelter +ovl_Bg_Ice_Shutter +ovl_Bg_Ice_Turara +ovl_Bg_Ingate +ovl_Bg_Jya_1flift +ovl_Bg_Jya_Amishutter +ovl_Bg_Jya_Bigmirror +ovl_Bg_Jya_Block +ovl_Bg_Jya_Bombchuiwa +ovl_Bg_Jya_Bombiwa +ovl_Bg_Jya_Cobra +ovl_Bg_Jya_Goroiwa +ovl_Bg_Jya_Haheniron +ovl_Bg_Jya_Ironobj +ovl_Bg_Jya_Kanaami +ovl_Bg_Jya_Lift +ovl_Bg_Jya_Megami +ovl_Bg_Jya_Zurerukabe +ovl_Bg_Menkuri_Eye +ovl_Bg_Menkuri_Kaiten +ovl_Bg_Menkuri_Nisekabe +ovl_Bg_Mizu_Bwall +ovl_Bg_Mizu_Movebg +ovl_Bg_Mizu_Shutter +ovl_Bg_Mizu_Uzu +ovl_Bg_Mizu_Water +ovl_Bg_Mjin +ovl_Bg_Mori_Bigst +ovl_Bg_Mori_Elevator +ovl_Bg_Mori_Hashigo +ovl_Bg_Mori_Hashira4 +ovl_Bg_Mori_Hineri +ovl_Bg_Mori_Idomizu +ovl_Bg_Mori_Kaitenkabe +ovl_Bg_Mori_Rakkatenjo +ovl_Bg_Po_Event +ovl_Bg_Po_Syokudai +ovl_Bg_Pushbox +ovl_Bg_Relay_Objects +ovl_Bg_Spot00_Break +ovl_Bg_Spot00_Hanebasi +ovl_Bg_Spot01_Fusya +ovl_Bg_Spot01_Idohashira +ovl_Bg_Spot01_Idomizu +ovl_Bg_Spot01_Idosoko +ovl_Bg_Spot01_Objects2 +ovl_Bg_Spot02_Objects +ovl_Bg_Spot03_Taki +ovl_Bg_Spot05_Soko +ovl_Bg_Spot06_Objects +ovl_Bg_Spot07_Taki +ovl_Bg_Spot08_Bakudankabe +ovl_Bg_Spot08_Iceblock +ovl_Bg_Spot09_Obj +ovl_Bg_Spot11_Bakudankabe +ovl_Bg_Spot11_Oasis +ovl_Bg_Spot12_Gate +ovl_Bg_Spot12_Saku +ovl_Bg_Spot15_Rrbox +ovl_Bg_Spot15_Saku +ovl_Bg_Spot16_Bombstone +ovl_Bg_Spot16_Doughnut +ovl_Bg_Spot17_Bakudankabe +ovl_Bg_Spot17_Funen +ovl_Bg_Spot18_Basket +ovl_Bg_Spot18_Futa +ovl_Bg_Spot18_Obj +ovl_Bg_Spot18_Shutter +ovl_Bg_Sst_Floor +ovl_Bg_Toki_Hikari +ovl_Bg_Toki_Swd +ovl_Bg_Treemouth +ovl_Bg_Umajump +ovl_Bg_Vb_Sima +ovl_Bg_Ydan_Hasi +ovl_Bg_Ydan_Maruta +ovl_Bg_Ydan_Sp +ovl_Bg_Zg +ovl_Boss_Dodongo +ovl_Boss_Fd +ovl_Boss_Fd2 +ovl_Boss_Ganon +ovl_Boss_Ganon2 +ovl_Boss_Ganondrof +ovl_Boss_Goma +ovl_Boss_Mo +ovl_Boss_Sst +ovl_Boss_Tw +ovl_Boss_Va +ovl_Demo_6K +ovl_Demo_Du +ovl_Demo_Ec +ovl_Demo_Effect +ovl_Demo_Ext +ovl_Demo_Geff +ovl_Demo_Gj +ovl_Demo_Go +ovl_Demo_Gt +ovl_Demo_Ik +ovl_Demo_Im +ovl_Demo_Kankyo +ovl_Demo_Kekkai +ovl_Demo_Sa +ovl_Demo_Shd +ovl_Demo_Tre_Lgt +ovl_Door_Ana +ovl_Door_Gerudo +ovl_Door_Killer +ovl_Door_Shutter +ovl_Door_Toki +ovl_Door_Warp1 +ovl_Efc_Erupc +ovl_Eff_Dust +ovl_Effect_Ss_Blast +ovl_Effect_Ss_Bomb +ovl_Effect_Ss_Bomb2 +ovl_Effect_Ss_Bubble +ovl_Effect_Ss_D_Fire +ovl_Effect_Ss_Dead_Db +ovl_Effect_Ss_Dead_Dd +ovl_Effect_Ss_Dead_Ds +ovl_Effect_Ss_Dead_Sound +ovl_Effect_Ss_Dt_Bubble +ovl_Effect_Ss_Dust +ovl_Effect_Ss_En_Fire +ovl_Effect_Ss_En_Ice +ovl_Effect_Ss_Extra +ovl_Effect_Ss_Fcircle +ovl_Effect_Ss_Fhg_Flash +ovl_Effect_Ss_Fire_Tail +ovl_Effect_Ss_G_Fire +ovl_Effect_Ss_G_Magma +ovl_Effect_Ss_G_Magma2 +ovl_Effect_Ss_G_Ripple +ovl_Effect_Ss_G_Spk +ovl_Effect_Ss_G_Splash +ovl_Effect_Ss_Hahen +ovl_Effect_Ss_HitMark +ovl_Effect_Ss_Ice_Piece +ovl_Effect_Ss_Ice_Smoke +ovl_Effect_Ss_K_Fire +ovl_Effect_Ss_Kakera +ovl_Effect_Ss_KiraKira +ovl_Effect_Ss_Lightning +ovl_Effect_Ss_Sibuki +ovl_Effect_Ss_Sibuki2 +ovl_Effect_Ss_Solder_Srch_Ball +ovl_Effect_Ss_Stick +ovl_Effect_Ss_Stone1 +ovl_Elf_Msg +ovl_Elf_Msg2 +ovl_En_Am +ovl_En_Ani +ovl_En_Anubice +ovl_En_Anubice_Fire +ovl_En_Anubice_Tag +ovl_En_Arow_Trap +ovl_En_Arrow +ovl_En_Attack_Niw +ovl_En_Ba +ovl_En_Bb +ovl_En_Bdfire +ovl_En_Bigokuta +ovl_En_Bili +ovl_En_Bird +ovl_En_Blkobj +ovl_En_Bom +ovl_En_Bom_Bowl_Man +ovl_En_Bom_Bowl_Pit +ovl_En_Bom_Chu +ovl_En_Bombf +ovl_En_Boom +ovl_En_Box +ovl_En_Brob +ovl_En_Bubble +ovl_En_Butte +ovl_En_Bw +ovl_En_Bx +ovl_En_Changer +ovl_En_Clear_Tag +ovl_En_Cow +ovl_En_Crow +ovl_En_Cs +ovl_En_Daiku +ovl_En_Daiku_Kakariko +ovl_En_Dekubaba +ovl_En_Dekunuts +ovl_En_Dh +ovl_En_Dha +ovl_En_Diving_Game +ovl_En_Dns +ovl_En_Dnt_Demo +ovl_En_Dnt_Jiji +ovl_En_Dnt_Nomal +ovl_En_Dodojr +ovl_En_Dodongo +ovl_En_Dog +ovl_En_Door +ovl_En_Ds +ovl_En_Du +ovl_En_Dy_Extra +ovl_En_Eg +ovl_En_Eiyer +ovl_En_Elf +ovl_En_Encount1 +ovl_En_Encount2 +ovl_En_Ex_Item +ovl_En_Ex_Ruppy +ovl_En_Fd +ovl_En_Fd_Fire +ovl_En_Fhg_Fire +ovl_En_Fire_Rock +ovl_En_Firefly +ovl_En_Fish +ovl_En_Floormas +ovl_En_Fr +ovl_En_Fu +ovl_En_Fw +ovl_En_Fz +ovl_En_G_Switch +ovl_En_Ganon_Mant +ovl_En_Ganon_Organ +ovl_En_Gb +ovl_En_Ge1 +ovl_En_Ge2 +ovl_En_Ge3 +ovl_En_GeldB +ovl_En_GirlA +ovl_En_Gm +ovl_En_Go +ovl_En_Go2 +ovl_En_Goma +ovl_En_Goroiwa +ovl_En_Gs +ovl_En_Guest +ovl_En_Hata +ovl_En_Heishi1 +ovl_En_Heishi2 +ovl_En_Heishi3 +ovl_En_Heishi4 +ovl_En_Hintnuts +ovl_En_Holl +ovl_En_Honotrap +ovl_En_Horse +ovl_En_Horse_Game_Check +ovl_En_Horse_Ganon +ovl_En_Horse_Link_Child +ovl_En_Horse_Normal +ovl_En_Horse_Zelda +ovl_En_Hs +ovl_En_Hs2 +ovl_En_Hy +ovl_En_Ice_Hono +ovl_En_Ik +ovl_En_In +ovl_En_Insect +ovl_En_Ishi +ovl_En_It +ovl_En_Jj +ovl_En_Js +ovl_En_Jsjutan +ovl_En_Kakasi +ovl_En_Kakasi2 +ovl_En_Kakasi3 +ovl_En_Kanban +ovl_En_Karebaba +ovl_En_Ko +ovl_En_Kusa +ovl_En_Kz +ovl_En_Light +ovl_En_Lightbox +ovl_En_M_Fire1 +ovl_En_M_Thunder +ovl_En_Ma1 +ovl_En_Ma2 +ovl_En_Ma3 +ovl_En_Mag +ovl_En_Mb +ovl_En_Md +ovl_En_Mk +ovl_En_Mm +ovl_En_Mm2 +ovl_En_Ms +ovl_En_Mu +ovl_En_Nb +ovl_En_Niw +ovl_En_Niw_Girl +ovl_En_Niw_Lady +ovl_En_Nutsball +ovl_En_Nwc +ovl_En_Ny +ovl_En_OE2 +ovl_En_Okarina_Effect +ovl_En_Okarina_Tag +ovl_En_Okuta +ovl_En_Ossan +ovl_En_Owl +ovl_En_Part +ovl_En_Peehat +ovl_En_Po_Desert +ovl_En_Po_Field +ovl_En_Po_Relay +ovl_En_Po_Sisters +ovl_En_Poh +ovl_En_Pu_box +ovl_En_Rd +ovl_En_Reeba +ovl_En_River_Sound +ovl_En_Rl +ovl_En_Rr +ovl_En_Ru1 +ovl_En_Ru2 +ovl_En_Sa +ovl_En_Sb +ovl_En_Scene_Change +ovl_En_Sda +ovl_En_Shopnuts +ovl_En_Si +ovl_En_Siofuki +ovl_En_Skb +ovl_En_Skj +ovl_En_Skjneedle +ovl_En_Ssh +ovl_En_St +ovl_En_Sth +ovl_En_Stream +ovl_En_Sw +ovl_En_Syateki_Itm +ovl_En_Syateki_Man +ovl_En_Syateki_Niw +ovl_En_Ta +ovl_En_Takara_Man +ovl_En_Tana +ovl_En_Tg +ovl_En_Tite +ovl_En_Tk +ovl_En_Torch +ovl_En_Torch2 +ovl_En_Toryo +ovl_En_Tp +ovl_En_Tr +ovl_En_Trap +ovl_En_Tubo_Trap +ovl_En_Vali +ovl_En_Vase +ovl_En_Vb_Ball +ovl_En_Viewer +ovl_En_Vm +ovl_En_Wall_Tubo +ovl_En_Wallmas +ovl_En_Weather_Tag +ovl_En_Weiyer +ovl_En_Wf +ovl_En_Wonder_Item +ovl_En_Wonder_Talk +ovl_En_Wonder_Talk2 +ovl_En_Wood02 +ovl_En_Xc +ovl_En_Yabusame_Mark +ovl_En_Yukabyun +ovl_En_Zf +ovl_En_Zl1 +ovl_En_Zl2 +ovl_En_Zl3 +ovl_En_Zl4 +ovl_En_Zo +ovl_En_fHG +ovl_End_Title +ovl_Fishing +ovl_Item_B_Heart +ovl_Item_Etcetera +ovl_Item_Inbox +ovl_Item_Ocarina +ovl_Item_Shield +ovl_Magic_Dark +ovl_Magic_Fire +ovl_Magic_Wind +ovl_Mir_Ray +ovl_Obj_Bean +ovl_Obj_Blockstop +ovl_Obj_Bombiwa +ovl_Obj_Comb +ovl_Obj_Dekujr +ovl_Obj_Elevator +ovl_Obj_Hamishi +ovl_Obj_Hana +ovl_Obj_Hsblock +ovl_Obj_Ice_Poly +ovl_Obj_Kibako +ovl_Obj_Kibako2 +ovl_Obj_Lift +ovl_Obj_Lightswitch +ovl_Obj_Makekinsuta +ovl_Obj_Makeoshihiki +ovl_Obj_Mure +ovl_Obj_Mure2 +ovl_Obj_Mure3 +ovl_Obj_Oshihiki +ovl_Obj_Roomtimer +ovl_Obj_Switch +ovl_Obj_Syokudai +ovl_Obj_Timeblock +ovl_Obj_Tsubo +ovl_Obj_Warp2block +ovl_Object_Kankyo +ovl_Oceff_Spot +ovl_Oceff_Storm +ovl_Oceff_Wipe +ovl_Oceff_Wipe2 +ovl_Oceff_Wipe3 +ovl_Oceff_Wipe4 +ovl_Shot_Sun +gameplay_keep +gameplay_field_keep +gameplay_dangeon_keep +gameplay_object_exchange_static +object_link_boy +object_link_child +object_box +object_human +object_okuta +object_poh +object_wallmaster +object_dy_obj +object_firefly +object_dodongo +object_fire +object_niw +object_tite +object_reeba +object_peehat +object_kingdodongo +object_horse +object_zf +object_goma +object_zl1 +object_gol +object_bubble +object_dodojr +object_torch2 +object_bl +object_tp +object_oA1 +object_st +object_bw +object_ei +object_horse_normal +object_oB1 +object_o_anime +object_spot04_objects +object_ddan_objects +object_hidan_objects +object_horse_ganon +object_oA2 +object_spot00_objects +object_mb +object_bombf +object_sk2 +object_oE1 +object_oE_anime +object_oE2 +object_ydan_objects +object_gnd +object_am +object_dekubaba +object_oA3 +object_oA4 +object_oA5 +object_oA6 +object_oA7 +object_jj +object_oA8 +object_oA9 +object_oB2 +object_oB3 +object_oB4 +object_horse_zelda +object_opening_demo1 +object_warp1 +object_b_heart +object_dekunuts +object_oE3 +object_oE4 +object_menkuri_objects +object_oE5 +object_oE6 +object_oE7 +object_oE8 +object_oE9 +object_oE10 +object_oE11 +object_oE12 +object_vali +object_oA10 +object_oA11 +object_mizu_objects +object_fhg +object_ossan +object_mori_hineri1 +object_Bb +object_toki_objects +object_yukabyun +object_zl2 +object_mjin +object_mjin_flash +object_mjin_dark +object_mjin_flame +object_mjin_ice +object_mjin_soul +object_mjin_wind +object_mjin_oka +object_haka_objects +object_spot06_objects +object_ice_objects +object_relay_objects +object_mori_hineri1a +object_mori_hineri2 +object_mori_hineri2a +object_mori_objects +object_mori_tex +object_spot08_obj +object_warp2 +object_hata +object_bird +object_wood02 +object_lightbox +object_pu_box +object_trap +object_vase +object_im +object_ta +object_tk +object_xc +object_vm +object_bv +object_hakach_objects +object_efc_crystal_light +object_efc_fire_ball +object_efc_flash +object_efc_lgt_shower +object_efc_star_field +object_god_lgt +object_light_ring +object_triforce_spot +object_medal +object_bdan_objects +object_sd +object_rd +object_po_sisters +object_heavy_object +object_gndd +object_fd +object_du +object_fw +object_horse_link_child +object_spot02_objects +object_haka +object_ru1 +object_syokudai +object_fd2 +object_dh +object_rl +object_efc_tw +object_demo_tre_lgt +object_gi_key +object_mir_ray +object_brob +object_gi_jewel +object_spot09_obj +object_spot18_obj +object_bdoor +object_spot17_obj +object_shop_dungen +object_nb +object_mo +object_sb +object_gi_melody +object_gi_heart +object_gi_compass +object_gi_bosskey +object_gi_medal +object_gi_nuts +object_sa +object_gi_hearts +object_gi_arrowcase +object_gi_bombpouch +object_in +object_tr +object_spot16_obj +object_oE1s +object_oE4s +object_os_anime +object_gi_bottle +object_gi_stick +object_gi_map +object_oF1d_map +object_ru2 +object_gi_shield_1 +object_dekujr +object_gi_magicpot +object_gi_bomb_1 +object_oF1s +object_ma2 +object_gi_purse +object_hni +object_tw +object_rr +object_bxa +object_anubice +object_gi_gerudo +object_gi_arrow +object_gi_bomb_2 +object_gi_egg +object_gi_scale +object_gi_shield_2 +object_gi_hookshot +object_gi_ocarina +object_gi_milk +object_ma1 +object_ganon +object_sst +object_ny +object_fr +object_gi_pachinko +object_gi_boomerang +object_gi_bow +object_gi_glasses +object_gi_liquid +object_ani +object_demo_6k +object_gi_shield_3 +object_gi_letter +object_spot15_obj +object_jya_obj +object_gi_clothes +object_gi_bean +object_gi_fish +object_gi_saw +object_gi_hammer +object_gi_grass +object_gi_longsword +object_spot01_objects +object_md +object_km1 +object_kw1 +object_zo +object_kz +object_umajump +object_masterkokiri +object_masterkokirihead +object_mastergolon +object_masterzoora +object_aob +object_ik +object_ahg +object_cne +object_gi_niwatori +object_skj +object_gi_bottle_letter +object_bji +object_bba +object_gi_ocarina_0 +object_ds +object_ane +object_boj +object_spot03_object +object_spot07_object +object_fz +object_bob +object_ge1 +object_yabusame_point +object_gi_boots_2 +object_gi_seed +object_gnd_magic +object_d_elevator +object_d_hsblock +object_d_lift +object_mamenoki +object_goroiwa +object_toryo +object_daiku +object_nwc +object_blkobj +object_gm +object_ms +object_hs +object_ingate +object_lightswitch +object_kusa +object_tsubo +object_gi_gloves +object_gi_coin +object_kanban +object_gjyo_objects +object_owl +object_mk +object_fu +object_gi_ki_tan_mask +object_gi_redead_mask +object_gi_skj_mask +object_gi_rabit_mask +object_gi_truth_mask +object_ganon_objects +object_siofuki +object_stream +object_mm +object_fa +object_os +object_gi_eye_lotion +object_gi_powder +object_gi_mushroom +object_gi_ticketstone +object_gi_brokensword +object_js +object_cs +object_gi_prescription +object_gi_bracelet +object_gi_soldout +object_gi_frog +object_mag +object_door_gerudo +object_gt +object_efc_erupc +object_zl2_anime1 +object_zl2_anime2 +object_gi_golonmask +object_gi_zoramask +object_gi_gerudomask +object_ganon2 +object_ka +object_ts +object_zg +object_gi_hoverboots +object_gi_m_arrow +object_ds2 +object_ec +object_fish +object_gi_sutaru +object_gi_goddess +object_ssh +object_bigokuta +object_bg +object_spot05_objects +object_spot12_obj +object_bombiwa +object_hintnuts +object_rs +object_spot00_break +object_gla +object_shopnuts +object_geldb +object_gr +object_dog +object_jya_iron +object_jya_door +object_spot01_objects2 +object_spot11_obj +object_kibako2 +object_dns +object_dnk +object_gi_fire +object_gi_insect +object_gi_butterfly +object_gi_ghost +object_gi_soul +object_bowl +object_po_field +object_demo_kekkai +object_efc_doughnut +object_gi_dekupouch +object_ganon_anime1 +object_ganon_anime2 +object_ganon_anime3 +object_gi_rupy +object_spot01_matoya +object_spot01_matoyab +object_po_composer +object_mu +object_wf +object_skb +object_gj +object_geff +object_haka_door +object_gs +object_ps +object_bwall +object_crow +object_cow +object_cob +object_gi_sword_1 +object_door_killer +object_ouke_haka +object_timeblock +object_zl4 +g_pn_01 +g_pn_02 +g_pn_03 +g_pn_04 +g_pn_05 +g_pn_06 +g_pn_07 +g_pn_08 +g_pn_09 +g_pn_10 +g_pn_11 +g_pn_12 +g_pn_13 +g_pn_14 +g_pn_15 +g_pn_16 +g_pn_17 +g_pn_18 +g_pn_19 +g_pn_20 +g_pn_21 +g_pn_22 +g_pn_23 +g_pn_24 +g_pn_25 +g_pn_26 +g_pn_27 +g_pn_28 +g_pn_29 +g_pn_30 +g_pn_31 +g_pn_32 +g_pn_33 +g_pn_34 +g_pn_35 +g_pn_36 +g_pn_37 +g_pn_38 +g_pn_39 +g_pn_40 +g_pn_41 +g_pn_42 +g_pn_43 +g_pn_44 +g_pn_45 +g_pn_46 +g_pn_47 +g_pn_48 +g_pn_49 +g_pn_50 +g_pn_51 +g_pn_52 +g_pn_53 +g_pn_54 +g_pn_55 +g_pn_56 +g_pn_57 +z_select_static +nintendo_rogo_static +title_static +parameter_static +vr_fine0_static +vr_fine0_pal_static +vr_fine1_static +vr_fine1_pal_static +vr_fine2_static +vr_fine2_pal_static +vr_fine3_static +vr_fine3_pal_static +vr_cloud0_static +vr_cloud0_pal_static +vr_cloud1_static +vr_cloud1_pal_static +vr_cloud2_static +vr_cloud2_pal_static +vr_cloud3_static +vr_cloud3_pal_static +vr_holy0_static +vr_holy0_pal_static +vr_holy1_static +vr_holy1_pal_static +vr_MDVR_static +vr_MDVR_pal_static +vr_MNVR_static +vr_MNVR_pal_static +vr_RUVR_static +vr_RUVR_pal_static +vr_LHVR_static +vr_LHVR_pal_static +vr_KHVR_static +vr_KHVR_pal_static +vr_K3VR_static +vr_K3VR_pal_static +vr_K4VR_static +vr_K4VR_pal_static +vr_K5VR_static +vr_K5VR_pal_static +vr_SP1a_static +vr_SP1a_pal_static +vr_MLVR_static +vr_MLVR_pal_static +vr_KKRVR_static +vr_KKRVR_pal_static +vr_KR3VR_static +vr_KR3VR_pal_static +vr_IPVR_static +vr_IPVR_pal_static +vr_KSVR_static +vr_KSVR_pal_static +vr_GLVR_static +vr_GLVR_pal_static +vr_ZRVR_static +vr_ZRVR_pal_static +vr_DGVR_static +vr_DGVR_pal_static +vr_ALVR_static +vr_ALVR_pal_static +vr_NSVR_static +vr_NSVR_pal_static +vr_LBVR_static +vr_LBVR_pal_static +vr_TTVR_static +vr_TTVR_pal_static +vr_FCVR_static +vr_FCVR_pal_static +elf_message_field +elf_message_ydan +ydan_scene +ydan_room_0 +ydan_room_1 +ydan_room_2 +ydan_room_3 +ydan_room_4 +ydan_room_5 +ydan_room_6 +ydan_room_7 +ydan_room_8 +ydan_room_9 +ydan_room_10 +ydan_room_11 +ddan_scene +ddan_room_0 +ddan_room_1 +ddan_room_2 +ddan_room_3 +ddan_room_4 +ddan_room_5 +ddan_room_6 +ddan_room_7 +ddan_room_8 +ddan_room_9 +ddan_room_10 +ddan_room_11 +ddan_room_12 +ddan_room_13 +ddan_room_14 +ddan_room_15 +ddan_room_16 +bdan_scene +bdan_room_0 +bdan_room_1 +bdan_room_2 +bdan_room_3 +bdan_room_4 +bdan_room_5 +bdan_room_6 +bdan_room_7 +bdan_room_8 +bdan_room_9 +bdan_room_10 +bdan_room_11 +bdan_room_12 +bdan_room_13 +bdan_room_14 +bdan_room_15 +Bmori1_scene +Bmori1_room_0 +Bmori1_room_1 +Bmori1_room_2 +Bmori1_room_3 +Bmori1_room_4 +Bmori1_room_5 +Bmori1_room_6 +Bmori1_room_7 +Bmori1_room_8 +Bmori1_room_9 +Bmori1_room_10 +Bmori1_room_11 +Bmori1_room_12 +Bmori1_room_13 +Bmori1_room_14 +Bmori1_room_15 +Bmori1_room_16 +Bmori1_room_17 +Bmori1_room_18 +Bmori1_room_19 +Bmori1_room_20 +Bmori1_room_21 +Bmori1_room_22 +HIDAN_scene +HIDAN_room_0 +HIDAN_room_1 +HIDAN_room_2 +HIDAN_room_3 +HIDAN_room_4 +HIDAN_room_5 +HIDAN_room_6 +HIDAN_room_7 +HIDAN_room_8 +HIDAN_room_9 +HIDAN_room_10 +HIDAN_room_11 +HIDAN_room_12 +HIDAN_room_13 +HIDAN_room_14 +HIDAN_room_15 +HIDAN_room_16 +HIDAN_room_17 +HIDAN_room_18 +HIDAN_room_19 +HIDAN_room_20 +HIDAN_room_21 +HIDAN_room_22 +HIDAN_room_23 +HIDAN_room_24 +HIDAN_room_25 +HIDAN_room_26 +MIZUsin_scene +MIZUsin_room_0 +MIZUsin_room_1 +MIZUsin_room_2 +MIZUsin_room_3 +MIZUsin_room_4 +MIZUsin_room_5 +MIZUsin_room_6 +MIZUsin_room_7 +MIZUsin_room_8 +MIZUsin_room_9 +MIZUsin_room_10 +MIZUsin_room_11 +MIZUsin_room_12 +MIZUsin_room_13 +MIZUsin_room_14 +MIZUsin_room_15 +MIZUsin_room_16 +MIZUsin_room_17 +MIZUsin_room_18 +MIZUsin_room_19 +MIZUsin_room_20 +MIZUsin_room_21 +MIZUsin_room_22 +jyasinzou_scene +jyasinzou_room_0 +jyasinzou_room_1 +jyasinzou_room_2 +jyasinzou_room_3 +jyasinzou_room_4 +jyasinzou_room_5 +jyasinzou_room_6 +jyasinzou_room_7 +jyasinzou_room_8 +jyasinzou_room_9 +jyasinzou_room_10 +jyasinzou_room_11 +jyasinzou_room_12 +jyasinzou_room_13 +jyasinzou_room_14 +jyasinzou_room_15 +jyasinzou_room_16 +jyasinzou_room_17 +jyasinzou_room_18 +jyasinzou_room_19 +jyasinzou_room_20 +jyasinzou_room_21 +jyasinzou_room_22 +jyasinzou_room_23 +jyasinzou_room_24 +jyasinzou_room_25 +jyasinzou_room_26 +jyasinzou_room_27 +jyasinzou_room_28 +HAKAdan_scene +HAKAdan_room_0 +HAKAdan_room_1 +HAKAdan_room_2 +HAKAdan_room_3 +HAKAdan_room_4 +HAKAdan_room_5 +HAKAdan_room_6 +HAKAdan_room_7 +HAKAdan_room_8 +HAKAdan_room_9 +HAKAdan_room_10 +HAKAdan_room_11 +HAKAdan_room_12 +HAKAdan_room_13 +HAKAdan_room_14 +HAKAdan_room_15 +HAKAdan_room_16 +HAKAdan_room_17 +HAKAdan_room_18 +HAKAdan_room_19 +HAKAdan_room_20 +HAKAdan_room_21 +HAKAdan_room_22 +HAKAdanCH_scene +HAKAdanCH_room_0 +HAKAdanCH_room_1 +HAKAdanCH_room_2 +HAKAdanCH_room_3 +HAKAdanCH_room_4 +HAKAdanCH_room_5 +HAKAdanCH_room_6 +ice_doukutu_scene +ice_doukutu_room_0 +ice_doukutu_room_1 +ice_doukutu_room_2 +ice_doukutu_room_3 +ice_doukutu_room_4 +ice_doukutu_room_5 +ice_doukutu_room_6 +ice_doukutu_room_7 +ice_doukutu_room_8 +ice_doukutu_room_9 +ice_doukutu_room_10 +ice_doukutu_room_11 +men_scene +men_room_0 +men_room_1 +men_room_2 +men_room_3 +men_room_4 +men_room_5 +men_room_6 +men_room_7 +men_room_8 +men_room_9 +men_room_10 +ganontika_scene +ganontika_room_0 +ganontika_room_1 +ganontika_room_2 +ganontika_room_3 +ganontika_room_4 +ganontika_room_5 +ganontika_room_6 +ganontika_room_7 +ganontika_room_8 +ganontika_room_9 +ganontika_room_10 +ganontika_room_11 +ganontika_room_12 +ganontika_room_13 +ganontika_room_14 +ganontika_room_15 +ganontika_room_16 +ganontika_room_17 +ganontika_room_18 +ganontika_room_19 +spot00_scene +spot00_room_0 +spot01_scene +spot01_room_0 +spot02_scene +spot02_room_0 +spot02_room_1 +spot03_scene +spot03_room_0 +spot03_room_1 +spot04_scene +spot04_room_0 +spot04_room_1 +spot04_room_2 +spot05_scene +spot05_room_0 +spot06_scene +spot06_room_0 +spot07_scene +spot07_room_0 +spot07_room_1 +spot08_scene +spot08_room_0 +spot09_scene +spot09_room_0 +spot10_scene +spot10_room_0 +spot10_room_1 +spot10_room_2 +spot10_room_3 +spot10_room_4 +spot10_room_5 +spot10_room_6 +spot10_room_7 +spot10_room_8 +spot10_room_9 +spot11_scene +spot11_room_0 +spot12_scene +spot12_room_0 +spot12_room_1 +spot13_scene +spot13_room_0 +spot13_room_1 +spot15_scene +spot15_room_0 +spot16_scene +spot16_room_0 +spot17_scene +spot17_room_0 +spot17_room_1 +spot18_scene +spot18_room_0 +spot18_room_1 +spot18_room_2 +spot18_room_3 +market_day_scene +market_day_room_0 +market_night_scene +market_night_room_0 +kenjyanoma_scene +kenjyanoma_room_0 +tokinoma_scene +tokinoma_room_0 +tokinoma_room_1 +link_home_scene +link_home_room_0 +kokiri_shop_scene +kokiri_shop_room_0 +kokiri_home_scene +kokiri_home_room_0 +kakusiana_scene +kakusiana_room_0 +kakusiana_room_1 +kakusiana_room_2 +kakusiana_room_3 +kakusiana_room_4 +kakusiana_room_5 +kakusiana_room_6 +kakusiana_room_7 +kakusiana_room_8 +kakusiana_room_9 +kakusiana_room_10 +kakusiana_room_11 +kakusiana_room_12 +kakusiana_room_13 +entra_scene +entra_room_0 +moribossroom_scene +moribossroom_room_0 +moribossroom_room_1 +syatekijyou_scene +syatekijyou_room_0 +shop1_scene +shop1_room_0 +hairal_niwa_scene +hairal_niwa_room_0 +ganon_tou_scene +ganon_tou_room_0 +market_alley_scene +market_alley_room_0 +spot20_scene +spot20_room_0 +market_ruins_scene +market_ruins_room_0 +entra_n_scene +entra_n_room_0 +enrui_scene +enrui_room_0 +market_alley_n_scene +market_alley_n_room_0 +hiral_demo_scene +hiral_demo_room_0 +kokiri_home3_scene +kokiri_home3_room_0 +malon_stable_scene +malon_stable_room_0 +kakariko_scene +kakariko_room_0 +bdan_boss_scene +bdan_boss_room_0 +bdan_boss_room_1 +FIRE_bs_scene +FIRE_bs_room_0 +FIRE_bs_room_1 +hut_scene +hut_room_0 +daiyousei_izumi_scene +daiyousei_izumi_room_0 +hakaana_scene +hakaana_room_0 +yousei_izumi_tate_scene +yousei_izumi_tate_room_0 +yousei_izumi_yoko_scene +yousei_izumi_yoko_room_0 +golon_scene +golon_room_0 +zoora_scene +zoora_room_0 +drag_scene +drag_room_0 +alley_shop_scene +alley_shop_room_0 +night_shop_scene +night_shop_room_0 +impa_scene +impa_room_0 +labo_scene +labo_room_0 +tent_scene +tent_room_0 +nakaniwa_scene +nakaniwa_room_0 +ddan_boss_scene +ddan_boss_room_0 +ddan_boss_room_1 +ydan_boss_scene +ydan_boss_room_0 +ydan_boss_room_1 +HAKAdan_bs_scene +HAKAdan_bs_room_0 +HAKAdan_bs_room_1 +MIZUsin_bs_scene +MIZUsin_bs_room_0 +MIZUsin_bs_room_1 +ganon_scene +ganon_room_0 +ganon_room_1 +ganon_room_2 +ganon_room_3 +ganon_room_4 +ganon_room_5 +ganon_room_6 +ganon_room_7 +ganon_room_8 +ganon_room_9 +ganon_boss_scene +ganon_boss_room_0 +jyasinboss_scene +jyasinboss_room_0 +jyasinboss_room_1 +jyasinboss_room_2 +jyasinboss_room_3 +kokiri_home4_scene +kokiri_home4_room_0 +kokiri_home5_scene +kokiri_home5_room_0 +ganon_final_scene +ganon_final_room_0 +kakariko3_scene +kakariko3_room_0 +hakasitarelay_scene +hakasitarelay_room_0 +hakasitarelay_room_1 +hakasitarelay_room_2 +hakasitarelay_room_3 +hakasitarelay_room_4 +hakasitarelay_room_5 +hakasitarelay_room_6 +shrine_scene +shrine_room_0 +turibori_scene +turibori_room_0 +shrine_n_scene +shrine_n_room_0 +shrine_r_scene +shrine_r_room_0 +hakaana2_scene +hakaana2_room_0 +gerudoway_scene +gerudoway_room_0 +gerudoway_room_1 +gerudoway_room_2 +gerudoway_room_3 +gerudoway_room_4 +gerudoway_room_5 +hairal_niwa_n_scene +hairal_niwa_n_room_0 +bowling_scene +bowling_room_0 +hakaana_ouke_scene +hakaana_ouke_room_0 +hakaana_ouke_room_1 +hakaana_ouke_room_2 +hylia_labo_scene +hylia_labo_room_0 +souko_scene +souko_room_0 +souko_room_1 +souko_room_2 +miharigoya_scene +miharigoya_room_0 +mahouya_scene +mahouya_room_0 +takaraya_scene +takaraya_room_0 +takaraya_room_1 +takaraya_room_2 +takaraya_room_3 +takaraya_room_4 +takaraya_room_5 +takaraya_room_6 +ganon_sonogo_scene +ganon_sonogo_room_0 +ganon_sonogo_room_1 +ganon_sonogo_room_2 +ganon_sonogo_room_3 +ganon_sonogo_room_4 +ganon_demo_scene +ganon_demo_room_0 +face_shop_scene +face_shop_room_0 +kinsuta_scene +kinsuta_room_0 +ganontikasonogo_scene +ganontikasonogo_room_0 +ganontikasonogo_room_1 +bump_texture_static +anime_model_1_static +anime_model_2_static +anime_model_3_static +anime_model_4_static +anime_model_5_static +anime_model_6_static +anime_texture_1_static +anime_texture_2_static +anime_texture_3_static +anime_texture_4_static +anime_texture_5_static +anime_texture_6_static +softsprite_matrix_static \ No newline at end of file diff --git a/OTRGui/src/game/game.cpp b/OTRGui/src/game/game.cpp index ff7e7a22b..2f5512385 100644 --- a/OTRGui/src/game/game.cpp +++ b/OTRGui/src/game/game.cpp @@ -26,6 +26,7 @@ bool single_thread = false; bool hide_second_btn = false; RomVersion version; const char* patched_rom = "tmp/rom.z64"; +extern bool oldExtractMode; static std::string currentStep = "None"; @@ -72,11 +73,28 @@ void OTRGame::init(){ } } -void ExtractRom() { - const WriteResult result = ExtractBaserom(patched_rom); +void ExtractRom() +{ + WriteResult result; + + if (oldExtractMode) + ExtractBaserom(patched_rom); + else + result.error = NULLSTR; + if (result.error == NULLSTR) { if (MoonUtils::exists("oot.otr")) MoonUtils::rm("oot.otr"); - startWorker(); + if (MoonUtils::exists("Extract")) MoonUtils::rm("Extract"); + + MoonUtils::mkdir("Extract"); + MoonUtils::copy("tmp/baserom/Audiobank", "Extract/Audiobank"); + MoonUtils::copy("tmp/baserom/Audioseq", "Extract/Audioseq"); + MoonUtils::copy("tmp/baserom/Audiotable", "Extract/Audiotable"); + MoonUtils::copy("tmp/baserom/version", "Extract/version"); + + MoonUtils::copy("assets/game/", "Extract/assets/"); + + startWorker(version); extracting = true; } } @@ -131,7 +149,7 @@ void OTRGame::draw() { } // Clamp the window to the borders of the monitors - + if (wndPos.x < vsX1) wndPos.x = vsX1; if (wndPos.x < vsX1) wndPos.x = vsX1; if (wndPos.y < vsY1) wndPos.y = vsY1; if (wndPos.x + windowSize.x > vsX2) wndPos.x = vsX2 - windowSize.x; @@ -160,7 +178,9 @@ void OTRGame::draw() { UIUtils::GuiShadowText(("Rom Type: " + version.version).c_str(), 32, text_y, 10, WHITE, BLACK); UIUtils::GuiShadowText("Tool Version: 1.0", 32, text_y + 15, 10, WHITE, BLACK); UIUtils::GuiShadowText("OTR Version: 1.0", 32, text_y + 30, 10, WHITE, BLACK); - UIUtils::GuiToggle(&single_thread, "Single Thread", 32, text_y + 40, currentStep != NULLSTR); + + if (oldExtractMode) + UIUtils::GuiToggle(&single_thread, "Single Thread", 32, text_y + 40, currentStep != NULLSTR); if (!hide_second_btn && UIUtils::GuiIconButton("Folder", "Open\nShip Folder", 109, 50, currentStep != NULLSTR, "Select your Ship of Harkinian Folder\n\nYou could use another folder\nfor development purposes")) { const std::string path = NativeFS->LaunchFileExplorer(LaunchType::FOLDER); diff --git a/OTRGui/src/impl/baserom_extractor/baserom_extractor.cpp b/OTRGui/src/impl/baserom_extractor/baserom_extractor.cpp index 86be26f6c..bd2fc42ea 100644 --- a/OTRGui/src/impl/baserom_extractor/baserom_extractor.cpp +++ b/OTRGui/src/impl/baserom_extractor/baserom_extractor.cpp @@ -83,37 +83,37 @@ RomVersion GetVersion(FILE* rom) { break; case OOT_NTSC_JP_GC: version.version = "JP GameCube (MQ Disk)"; - version.listPath = "gamecube_mq.txt"; + version.listPath = "gamecube.txt"; version.offset = OOT_OFF_JP_GC; break; case OOT_NTSC_JP_GC_CE: version.version = "GameCube (Collectors Edition Disk)"; - version.listPath = "gamecube_mq.txt"; + version.listPath = "gamecube.txt"; version.offset = OOT_OFF_JP_GC_CE; break; case OOT_NTSC_JP_MQ: version.version = "JP Master Quest"; - version.listPath = "gamecube_mq.txt"; + version.listPath = "gamecube.txt"; version.offset = OOT_OFF_JP_MQ; break; case OOT_NTSC_US_MQ: version.version = "NTSC Master Quest"; - version.listPath = "gamecube_mq.txt"; + version.listPath = "gamecube.txt"; version.offset = OOT_OFF_JP_MQ; break; case OOT_NTSC_US_GC: version.version = "NTSC GameCube"; - version.listPath = "gamecube_mq.txt"; + version.listPath = "gamecube.txt"; version.offset = OOT_OFF_US_MQ; break; case OOT_PAL_GC: version.version = "PAL GameCube"; - version.listPath = "gamecube_mq.txt"; + version.listPath = "gamecube_pal.txt"; version.offset = OOT_OFF_PAL_GC; break; case OOT_PAL_MQ: version.version = "PAL Master Quest"; - version.listPath = "pal_mq.txt"; + version.listPath = "gamecube_pal.txt"; version.offset = OOT_OFF_PAL_MQ; break; case OOT_PAL_GC_DBG1: @@ -179,6 +179,8 @@ WriteResult ExtractBaserom(const char* romPath) { const std::vector lines = MoonUtils::split(read(MoonUtils::join("assets/extractor/filelists", version.listPath)), '\n'); + std::vector decompressedData(1); + for (int i = 0; i < lines.size(); i++) { FILE* outFile = fopen(MoonUtils::join("tmp/baserom", lines[i]).c_str(), "wb"); const int romOffset = version.offset + (DMA_ENTRY_SIZE * i); @@ -196,10 +198,13 @@ WriteResult ExtractBaserom(const char* romPath) { auto outData = new uint8_t[size]; memcpy(outData, romData + physStart, size); + if (compressed) { - std::vector compressedData = yaz0_encode(outData, size); - outData = compressedData.data(); - size = compressedData.size(); + int decSize = virtEnd - virtStart; + decompressedData = std::vector(decSize); + yaz0_decode(outData, decompressedData.data(), decSize); + outData = decompressedData.data(); + size = decSize; } fwrite(outData, sizeof(char), size, outFile); diff --git a/OTRGui/src/impl/baserom_extractor/baserom_extractor.h b/OTRGui/src/impl/baserom_extractor/baserom_extractor.h index 8548f4eca..9538c87f6 100644 --- a/OTRGui/src/impl/baserom_extractor/baserom_extractor.h +++ b/OTRGui/src/impl/baserom_extractor/baserom_extractor.h @@ -1,23 +1,7 @@ #ifndef EXTRACT_BASEROM_H_ #define EXTRACT_BASEROM_H_ -#define OOT_NTSC_10 0xEC7011B7 -#define OOT_NTSC_11 0xD43DA81F -#define OOT_NTSC_12 0x693BA2AE -#define OOT_PAL_10 0xB044B569 -#define OOT_PAL_11 0xB2055FBD -#define OOT_NTSC_JP_GC_CE 0xF7F52DB8 -#define OOT_NTSC_JP_GC 0xF611F4BA -#define OOT_NTSC_US_GC 0xF3DD35BA -#define OOT_PAL_GC 0x09465AC3 -#define OOT_NTSC_JP_MQ 0xF43B45BA -#define OOT_NTSC_US_MQ 0xF034001A -#define OOT_PAL_MQ 0x1D4136F3 -#define OOT_PAL_GC_DBG1 0x871E1C92 // 03-21-2002 build -#define OOT_PAL_GC_DBG2 0x87121EFE // 03-13-2002 build -#define OOT_PAL_GC_MQ_DBG 0x917D18F6 -#define OOT_IQUE_TW 0x3D81FB3E -#define OOT_IQUE_CN 0xB1E1E07B +#include "../../libultraship/libultraship/GameVersions.h" #include #include diff --git a/OTRGui/src/impl/extractor/extractor.cpp b/OTRGui/src/impl/extractor/extractor.cpp index ec435a9e4..e28fa5513 100644 --- a/OTRGui/src/impl/extractor/extractor.cpp +++ b/OTRGui/src/impl/extractor/extractor.cpp @@ -5,6 +5,7 @@ #include "utils/mutils.h" #include "ctpl/ctpl_stl.h" #include +#include #ifdef _WIN32 #define PLATFORM Platforms::WINDOWS @@ -13,6 +14,7 @@ #endif namespace Util = MoonUtils; +bool oldExtractMode = false; static int maxResources = 0; static int extractedResources = 0; bool buildingOtr = false; @@ -22,19 +24,29 @@ bool isWindows() { return (PLATFORM == Platforms::WINDOWS); } -void BuildOTR(const std::string output) { - Util::copy("tmp/baserom/Audiobank", "Extract/Audiobank"); - Util::copy("tmp/baserom/Audioseq", "Extract/Audioseq"); - Util::copy("tmp/baserom/Audiotable", "Extract/Audiotable"); - - Util::copy("assets/game/", "Extract/assets/"); - - std::string execStr = Util::format("assets/extractor/%s", isWindows() ? "ZAPD.exe" : "ZAPD.out") + " botr -se OTR"; - ProcessResult result = NativeFS->LaunchProcess(execStr); - if(result.exitCode != 0) { - std::cout << "\nError when building the OTR file with error code: " << result.exitCode << " !" << std::endl; - std::cout << "Aborting...\n" << std::endl; +std::string GetXMLVersion(RomVersion version) +{ + switch (version.crc) + { + case OOT_PAL_GC_DBG1: return "GC_NMQ_D"; + case OOT_PAL_GC_DBG2: return "GC_MQ_D"; + case OOT_PAL_GC: return "GC_NMQ_PAL_F"; } + + return "ERROR"; +} + +void BuildOTR(const std::string output) { + if (oldExtractMode) + { + std::string execStr = Util::format("assets/extractor/%s", isWindows() ? "ZAPD.exe" : "ZAPD.out") + " botr -se OTR"; + ProcessResult result = NativeFS->LaunchProcess(execStr); + if (result.exitCode != 0) { + std::cout << "\nError when building the OTR file with error code: " << result.exitCode << " !" << std::endl; + std::cout << "Aborting...\n" << std::endl; + } + } + setCurrentStep("Done!"); if (output == ".") return; @@ -44,9 +56,9 @@ void BuildOTR(const std::string output) { MoonUtils::copy("oot.otr", outputPath); } -void ExtractFile(std::string xmlPath, std::string outPath, std::string outSrcPath) { +void ExtractFile(std::string xmlPath, std::string outPath, std::string outSrcPath, RomVersion version) { std::string execStr = Util::format("assets/extractor/%s", isWindows() ? "ZAPD.exe" : "ZAPD.out"); - std::string args = Util::format(" e -eh -i %s -b tmp/baserom/ -o %s -osf %s -gsf 1 -rconf assets/extractor/Config.xml -se OTR %s", xmlPath.c_str(), outPath.c_str(), outSrcPath.c_str(), xmlPath.find("overlays") != std::string::npos ? "--static" : ""); + std::string args = Util::format(" e -eh -i %s -b tmp/baserom/ -o %s -osf %s -gsf 1 -rconf assets/extractor/Config_%s.xml -se OTR %s", xmlPath.c_str(), outPath.c_str(), outSrcPath.c_str(), GetXMLVersion(version).c_str(), xmlPath.find("overlays") != std::string::npos ? "--static" : ""); ProcessResult result = NativeFS->LaunchProcess(execStr + args); if (result.exitCode != 0) { @@ -55,49 +67,78 @@ void ExtractFile(std::string xmlPath, std::string outPath, std::string outSrcPat } } -void ExtractFunc(std::string fullPath) { +void ExtractFunc(std::string fullPath, RomVersion version) { std::vector path = Util::split(fullPath, Util::pathSeparator()); std::string outPath = Util::join(Util::join("assets/extractor/xmls/output", path[4]), Util::basename(fullPath)); Util::mkdir(outPath); - ExtractFile(fullPath, outPath, outPath); + ExtractFile(fullPath, outPath, outPath, version); setCurrentStep("Extracting: " + Util::basename(fullPath)); extractedResources++; } -void startWorker() { - std::string path = "assets/extractor/xmls"; - std::vector files; - Util::dirscan(path, files); - std::vector xmlFiles; +void startWorker(RomVersion version) { + std::string path = "assets/extractor/xmls/"; - const int num_threads = std::thread::hardware_concurrency(); - ctpl::thread_pool pool(num_threads / 2); - for(auto &file : files) { - if (file.find(".xml") != std::string::npos) xmlFiles.push_back(file); - } + path += GetXMLVersion(version); - for (auto& file : xmlFiles) { - if(single_thread) { - ExtractFunc(file); - } else { - pool.push([file](int) { - ExtractFunc(file); - }); + Util::write("tmp/baserom/version", (char*)&version.crc, sizeof(version.crc)); + + + if (oldExtractMode) + { + std::vector files; + Util::dirscan(path, files); + std::vector xmlFiles; + + const int num_threads = std::thread::hardware_concurrency(); + ctpl::thread_pool pool(num_threads / 2); + for (auto& file : files) { + if (file.find(".xml") != std::string::npos) xmlFiles.push_back(file); } - } - maxResources = xmlFiles.size(); + for (auto& file : xmlFiles) { + if (single_thread) { + ExtractFunc(file, version); + } + else { + pool.push([file, version](int) { + ExtractFunc(file, version); + }); + } + } + + maxResources = xmlFiles.size(); + } + else + { + std::string execStr = Util::format("assets/extractor/%s", isWindows() ? "ZAPD.exe" : "ZAPD.out"); + std::string args = Util::format(" ed -eh -i %s -b tmp/rom.z64 -fl assets/extractor/filelists -o %s -osf %s -gsf 1 -rconf assets/extractor/Config_%s.xml -se OTR %s", path.c_str(), path + "../", path + "../", GetXMLVersion(version).c_str(), ""); + ProcessResult result = NativeFS->LaunchProcess(execStr + args); + + if (result.exitCode != 0) { + std::cout << "\nError when extracting the ROM with error code: " << result.exitCode << " !" << std::endl; + std::cout << "Aborting...\n" << std::endl; + } + else + { + printf("All done?\n"); + } + + maxResources = 1; + } } void updateWorker(const std::string& output) { - if (maxResources > 0 && !buildingOtr && extractedResources >= maxResources) { + if (maxResources > 0 && !buildingOtr && (extractedResources >= maxResources || !oldExtractMode)) + { setCurrentStep("Building OTR..."); if (skipFrames < 3) { skipFrames++; return; } buildingOtr = true; - if (single_thread){ + + if (single_thread || !oldExtractMode){ BuildOTR(output); return; } diff --git a/OTRGui/src/impl/extractor/extractor.h b/OTRGui/src/impl/extractor/extractor.h index 98dea147a..de48d7574 100644 --- a/OTRGui/src/impl/extractor/extractor.h +++ b/OTRGui/src/impl/extractor/extractor.h @@ -5,5 +5,7 @@ enum Platforms { WINDOWS, LINUX }; -void startWorker(); +struct RomVersion; + +void startWorker(RomVersion version); void updateWorker(const std::string& output); \ No newline at end of file diff --git a/OTRGui/src/utils/mutils.cpp b/OTRGui/src/utils/mutils.cpp index 770df8423..2a649452e 100644 --- a/OTRGui/src/utils/mutils.cpp +++ b/OTRGui/src/utils/mutils.cpp @@ -72,7 +72,11 @@ namespace MoonUtils { vector result; stringstream ss (s); string item; - while (getline(ss, item, delim)) { + while (getline(ss, item, delim)) + { + if (item.at(item.size() - 1) == '\r') + item = item.substr(0, item.size() - 1); + result.push_back (item); } return result; diff --git a/ZAPDTR/ZAPD/CRC32.h b/ZAPDTR/ZAPD/CRC32.h index 4158a5528..1f82c75c5 100644 --- a/ZAPDTR/ZAPD/CRC32.h +++ b/ZAPDTR/ZAPD/CRC32.h @@ -1,6 +1,6 @@ #pragma once -static uint32_t CRC32B(unsigned char* message, int32_t size) +static uint32_t CRC32B(const unsigned char* message, int32_t size) { int32_t byte, crc; int32_t mask; diff --git a/ZAPDTR/ZAPD/Declaration.cpp b/ZAPDTR/ZAPD/Declaration.cpp index eeb988db7..27494b866 100644 --- a/ZAPDTR/ZAPD/Declaration.cpp +++ b/ZAPDTR/ZAPD/Declaration.cpp @@ -1,6 +1,7 @@ #include "Declaration.h" #include "Globals.h" +#include "ZVtx.h" #include "Utils/StringHelper.h" Declaration::Declaration(offset_t nAddress, DeclarationAlignment nAlignment, size_t nSize, @@ -61,6 +62,12 @@ Declaration::Declaration(offset_t nAddress, const std::string& nIncludePath, siz varName = nVarName; } +Declaration::~Declaration() +{ + //for (auto item : vertexHack) + //delete item; +} + bool Declaration::IsStatic() const { switch (staticConf) diff --git a/ZAPDTR/ZAPD/Declaration.h b/ZAPDTR/ZAPD/Declaration.h index 4a743b50f..45d36f49e 100644 --- a/ZAPDTR/ZAPD/Declaration.h +++ b/ZAPDTR/ZAPD/Declaration.h @@ -22,6 +22,8 @@ enum class StaticConfig On }; +class ZVtx; + class Declaration { public: @@ -38,6 +40,8 @@ public: std::string varName; std::string includePath; + std::vector vertexHack; + bool isExternal = false; bool isArray = false; bool forceArrayCnt = false; @@ -65,6 +69,8 @@ public: Declaration(offset_t nAddress, const std::string& nIncludePath, size_t nSize, const std::string& nVarType, const std::string& nVarName); + ~Declaration(); + bool IsStatic() const; std::string GetNormalDeclarationStr() const; diff --git a/ZAPDTR/ZAPD/FileWorker.cpp b/ZAPDTR/ZAPD/FileWorker.cpp new file mode 100644 index 000000000..e69de29bb diff --git a/ZAPDTR/ZAPD/FileWorker.h b/ZAPDTR/ZAPD/FileWorker.h new file mode 100644 index 000000000..6ceae8076 --- /dev/null +++ b/ZAPDTR/ZAPD/FileWorker.h @@ -0,0 +1,15 @@ +#pragma once + +#include +#include +#include +#include "ZFile.h" + +class FileWorker +{ +public: + std::vector files; + std::vector externalFiles; + std::vector segments; + std::map> segmentRefFiles; +}; \ No newline at end of file diff --git a/ZAPDTR/ZAPD/Globals.cpp b/ZAPDTR/ZAPD/Globals.cpp index 0902b2c9e..f0df0e547 100644 --- a/ZAPDTR/ZAPD/Globals.cpp +++ b/ZAPDTR/ZAPD/Globals.cpp @@ -34,30 +34,88 @@ Globals::~Globals() } } -void Globals::AddSegment(int32_t segment, ZFile* file) +void Globals::AddSegment(int32_t segment, ZFile* file, int workerID) { - if (std::find(segments.begin(), segments.end(), segment) == segments.end()) - segments.push_back(segment); - if (cfg.segmentRefFiles.find(segment) == cfg.segmentRefFiles.end()) - cfg.segmentRefFiles[segment] = std::vector(); - - cfg.segmentRefFiles[segment].push_back(file); -} - -bool Globals::HasSegment(int32_t segment) -{ - return std::find(segments.begin(), segments.end(), segment) != segments.end(); -} - -ZFile* Globals::GetSegment(int32_t segment) -{ - if (HasSegment(segment)) + if (!Globals::Instance->singleThreaded) { - int idx = std::find(segments.begin(), segments.end(), segment) - segments.begin(); - return files[idx]; + auto worker = workerData[workerID]; + + if (std::find(worker->segments.begin(), worker->segments.end(), segment) == + worker->segments.end()) + worker->segments.push_back(segment); + if (worker->segmentRefFiles.find(segment) == worker->segmentRefFiles.end()) + worker->segmentRefFiles[segment] = std::vector(); + + worker->segmentRefFiles[segment].push_back(file); } else - return nullptr; + { + if (std::find(segments.begin(), segments.end(), segment) == segments.end()) + segments.push_back(segment); + if (cfg.segmentRefFiles.find(segment) == cfg.segmentRefFiles.end()) + cfg.segmentRefFiles[segment] = std::vector(); + + cfg.segmentRefFiles[segment].push_back(file); + } +} + +bool Globals::HasSegment(int32_t segment, int workerID) +{ + if (!Globals::Instance->singleThreaded) + return std::find(workerData[workerID]->segments.begin(), + workerData[workerID]->segments.end(), segment) != workerData[workerID]->segments.end(); + else + return std::find(segments.begin(), segments.end(), segment) != segments.end(); +} + +ZFile* Globals::GetSegment(int32_t segment, int workerID) +{ + if (!Globals::Instance->singleThreaded) + { + if (HasSegment(segment, workerID)) + { + int idx = std::find(workerData[workerID]->segments.begin(), + workerData[workerID]->segments.end(), segment) - + workerData[workerID]->segments.begin(); + return workerData[workerID]->files[idx]; + } + else + return nullptr; + } + else + { + if (HasSegment(segment, workerID)) + { + int idx = std::find(segments.begin(), segments.end(), segment) - segments.begin(); + return files[idx]; + } + else + return nullptr; + } +} + +std::map> Globals::GetSegmentRefFiles(int workerID) +{ + if (!Globals::Instance->singleThreaded) + return workerData[workerID]->segmentRefFiles; + else + return cfg.segmentRefFiles; +} + +void Globals::AddFile(ZFile* file, int workerID) +{ + if (singleThreaded) + files.push_back(file); + else + workerData[workerID]->files.push_back(file); +} + +void Globals::AddExternalFile(ZFile* file, int workerID) +{ + if (singleThreaded) + externalFiles.push_back(file); + else + workerData[workerID]->externalFiles.push_back(file); } std::map& Globals::GetExporterMap() @@ -93,8 +151,22 @@ ExporterSet* Globals::GetExporterSet() return nullptr; } +std::vector Globals::GetBaseromFile(std::string fileName) +{ + if (fileMode == ZFileMode::ExtractDirectory) + { + if (StringHelper::Contains(fileName, "baserom/")) + fileName = StringHelper::Split(fileName, "baserom/")[1]; + + return rom->GetFile(fileName); + + } + else + return File::ReadAllBytes(fileName); +} + bool Globals::GetSegmentedPtrName(segptr_t segAddress, ZFile* currentFile, - const std::string& expectedType, std::string& declName) + const std::string& expectedType, std::string& declName, int workerID) { if (segAddress == 0) { @@ -130,9 +202,11 @@ bool Globals::GetSegmentedPtrName(segptr_t segAddress, ZFile* currentFile, if (currentFile->GetDeclarationPtrName(segAddress, expectedType, declName)) return true; } - else if (HasSegment(segment)) + else if (HasSegment(segment, workerID)) { - for (auto file : cfg.segmentRefFiles[segment]) + // OTRTODO: Multithreading + auto segs = GetSegmentRefFiles(workerID); + for (auto file : segs[segment]) { offset = Seg2Filespace(segAddress, file->baseAddress); @@ -176,7 +250,7 @@ bool Globals::GetSegmentedPtrName(segptr_t segAddress, ZFile* currentFile, bool Globals::GetSegmentedArrayIndexedName(segptr_t segAddress, size_t elementSize, ZFile* currentFile, const std::string& expectedType, - std::string& declName) + std::string& declName, int workerID) { if (segAddress == 0) { @@ -193,9 +267,11 @@ bool Globals::GetSegmentedArrayIndexedName(segptr_t segAddress, size_t elementSi if (addressFound) return true; } - else if (HasSegment(segment)) + else if (HasSegment(segment, workerID)) { - for (auto file : cfg.segmentRefFiles[segment]) + // OTRTODO: Multithreading + auto segs = GetSegmentRefFiles(workerID); + for (auto file : segs[segment]) { if (file->IsSegmentedInFilespaceRange(segAddress)) { diff --git a/ZAPDTR/ZAPD/Globals.h b/ZAPDTR/ZAPD/Globals.h index 140de1f24..683fd6fcd 100644 --- a/ZAPDTR/ZAPD/Globals.h +++ b/ZAPDTR/ZAPD/Globals.h @@ -5,6 +5,8 @@ #include #include "GameConfig.h" #include "ZFile.h" +#include +#include class ZRoom; @@ -36,6 +38,7 @@ public: ExporterSetFuncVoid3 beginXMLFunc = nullptr; ExporterSetFuncVoid3 endXMLFunc = nullptr; ExporterSetResSave resSaveFunc = nullptr; + ExporterSetFuncVoid3 endProgramFunc = nullptr; }; class Globals @@ -49,9 +52,10 @@ public: bool outputCrc = false; bool profile; // Measure performance of certain operations bool useLegacyZDList; + bool singleThreaded; VerbosityLevel verbosity; // ZAPD outputs additional information ZFileMode fileMode; - fs::path baseRomPath, inputPath, outputPath, sourceOutputPath, cfgPath; + fs::path baseRomPath, inputPath, outputPath, sourceOutputPath, cfgPath, fileListPath; TextureType texType; ZGame game; GameConfig cfg; @@ -61,10 +65,13 @@ public: bool forceUnaccountedStatic = false; bool otrMode = true; + ZRom* rom; std::vector files; std::vector externalFiles; std::vector segments; + std::map workerData; + std::string currentExporter; static std::map& GetExporterMap(); static void AddExporter(std::string exporterName, ExporterSet* exporterSet); @@ -72,13 +79,18 @@ public: Globals(); ~Globals(); - void AddSegment(int32_t segment, ZFile* file); - bool HasSegment(int32_t segment); - ZFile* GetSegment(int32_t segment); + void AddSegment(int32_t segment, ZFile* file, int workerID); + bool HasSegment(int32_t segment, int workerID); + ZFile* GetSegment(int32_t segment, int workerID); + std::map> GetSegmentRefFiles(int workerID); + void AddFile(ZFile* file, int workerID); + void AddExternalFile(ZFile* file, int workerID); ZResourceExporter* GetExporter(ZResourceType resType); ExporterSet* GetExporterSet(); + std::vector GetBaseromFile(std::string fileName); + /** * Search in every file (and the symbol map) for the `segAddress` passed as parameter. * If the segment of `currentFile` is the same segment of `segAddress`, then that file will be @@ -88,8 +100,8 @@ public: * in which case `declName` will be set to the address formatted as a pointer. */ bool GetSegmentedPtrName(segptr_t segAddress, ZFile* currentFile, - const std::string& expectedType, std::string& declName); + const std::string& expectedType, std::string& declName, int workerID); bool GetSegmentedArrayIndexedName(segptr_t segAddress, size_t elementSize, ZFile* currentFile, - const std::string& expectedType, std::string& declName); + const std::string& expectedType, std::string& declName, int workerID); }; diff --git a/ZAPDTR/ZAPD/Main.cpp b/ZAPDTR/ZAPD/Main.cpp index 250704993..1a99d346a 100644 --- a/ZAPDTR/ZAPD/Main.cpp +++ b/ZAPDTR/ZAPD/Main.cpp @@ -23,16 +23,20 @@ #include #include #include "tinyxml2.h" +#include //extern const char gBuildHash[]; const char gBuildHash[] = ""; bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path& outPath, - ZFileMode fileMode); + ZFileMode fileMode, int workerID); void BuildAssetTexture(const fs::path& pngFilePath, TextureType texType, const fs::path& outPath); void BuildAssetBackground(const fs::path& imageFilePath, const fs::path& outPath); void BuildAssetBlob(const fs::path& blobFilePath, const fs::path& outPath); +int ExtractFunc(int workerID, int fileListSize, std::string fileListItem, ZFileMode fileMode); + +volatile int numWorkersLeft = 0; #if !defined(_MSC_VER) && !defined(__CYGWIN__) #define ARRAY_COUNT(arr) (sizeof(arr) / sizeof(arr[0])) @@ -182,6 +186,10 @@ int main(int argc, char* argv[]) { Globals::Instance->cfgPath = argv[++i]; } + else if (arg == "-fl") // Set baserom filelist path + { + Globals::Instance->fileListPath = argv[++i]; + } else if (arg == "-rconf") // Read Config File { Globals::Instance->cfg.ReadConfigFile(argv[++i]); @@ -242,6 +250,8 @@ int main(int argc, char* argv[]) fileMode = ZFileMode::BuildBlob; else if (buildMode == "e") fileMode = ZFileMode::Extract; + else if (buildMode == "ed") + fileMode = ZFileMode::ExtractDirectory; else if (exporterSet != nullptr && exporterSet->parseFileModeFunc != nullptr) exporterSet->parseFileModeFunc(buildMode, fileMode); @@ -251,6 +261,11 @@ int main(int argc, char* argv[]) return 1; } + Globals::Instance->fileMode = fileMode; + + if (fileMode == ZFileMode::ExtractDirectory) + Globals::Instance->rom = new ZRom(Globals::Instance->baseRomPath.string()); + // We've parsed through our commands once. If an exporter exists, it's been set by now. // Now we'll parse through them again but pass them on to our exporter if one is available. @@ -269,7 +284,7 @@ int main(int argc, char* argv[]) } // TODO: switch - if (fileMode == ZFileMode::Extract || fileMode == ZFileMode::BuildSourceFile) + if (fileMode == ZFileMode::Extract || fileMode == ZFileMode::BuildSourceFile || fileMode == ZFileMode::ExtractDirectory) { bool procFileModeSuccess = false; @@ -278,30 +293,85 @@ int main(int argc, char* argv[]) if (!procFileModeSuccess) { - bool parseSuccessful; - - for (auto& extFile : Globals::Instance->cfg.externalFiles) + if (fileMode == ZFileMode::ExtractDirectory) { - fs::path externalXmlFilePath = - Globals::Instance->cfg.externalXmlFolder / extFile.xmlPath; + std::vector fileList = + Directory::ListFiles(Globals::Instance->inputPath.string()); - if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_INFO) + const int num_threads = std::thread::hardware_concurrency(); + ctpl::thread_pool pool(num_threads / 2); + + bool parseSuccessful; + + auto start = std::chrono::steady_clock::now(); + int fileListSize = fileList.size(); + Globals::Instance->singleThreaded = false; + + for (int i = 0; i < fileListSize; i++) + Globals::Instance->workerData[i] = new FileWorker(); + + numWorkersLeft = fileListSize; + + for (int i = 0; i < fileListSize; i++) { - printf("Parsing external file from config: '%s'\n", - externalXmlFilePath.c_str()); + if (Globals::Instance->singleThreaded) + { + ExtractFunc(i, fileList.size(), fileList[i], fileMode); + } + else + { + std::string fileListItem = fileList[i]; + pool.push([i, fileListSize, fileListItem, fileMode](int) { + ExtractFunc(i, fileListSize, fileListItem, fileMode); + }); + } } - parseSuccessful = Parse(externalXmlFilePath, Globals::Instance->baseRomPath, - extFile.outPath, ZFileMode::ExternalFile); + if (!Globals::Instance->singleThreaded) + { + while (true) + { + if (numWorkersLeft <= 0) + break; + std::this_thread::sleep_for(std::chrono::milliseconds(250)); + } + } + + auto end = std::chrono::steady_clock::now(); + auto diff = + std::chrono::duration_cast(end - start).count(); + + printf("Generated OTR File Data in %i seconds\n", diff); + } + else + { + bool parseSuccessful; + + for (auto& extFile : Globals::Instance->cfg.externalFiles) + { + fs::path externalXmlFilePath = + Globals::Instance->cfg.externalXmlFolder / extFile.xmlPath; + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_INFO) + { + printf("Parsing external file from config: '%s'\n", + externalXmlFilePath.c_str()); + } + + parseSuccessful = Parse(externalXmlFilePath, Globals::Instance->baseRomPath, + extFile.outPath, ZFileMode::ExternalFile, 0); + + if (!parseSuccessful) + return 1; + } + + parseSuccessful = + Parse(Globals::Instance->inputPath, Globals::Instance->baseRomPath, + Globals::Instance->outputPath, fileMode, 0); if (!parseSuccessful) return 1; } - - parseSuccessful = Parse(Globals::Instance->inputPath, Globals::Instance->baseRomPath, - Globals::Instance->outputPath, fileMode); - if (!parseSuccessful) - return 1; } } else if (fileMode == ZFileMode::BuildTexture) @@ -317,6 +387,7 @@ int main(int argc, char* argv[]) { BuildAssetBlob(Globals::Instance->inputPath, Globals::Instance->outputPath); } + /* else if (fileMode == ZFileMode::BuildOverlay) { ZOverlay* overlay = @@ -327,13 +398,77 @@ int main(int argc, char* argv[]) File::WriteAllText(Globals::Instance->outputPath.string(), overlay->GetSourceOutputCode("")); } + */ + + if (exporterSet != nullptr && exporterSet->endProgramFunc != nullptr) + exporterSet->endProgramFunc(); delete g; return 0; } +int ExtractFunc(int workerID, int fileListSize, std::string fileListItem, ZFileMode fileMode) +{ + bool parseSuccessful; + + printf("(%i / %i): %s\n", (workerID + 1), fileListSize, fileListItem.c_str()); + + for (auto& extFile : Globals::Instance->cfg.externalFiles) + { + fs::path externalXmlFilePath = Globals::Instance->cfg.externalXmlFolder / extFile.xmlPath; + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_INFO) + { + printf("Parsing external file from config: '%s'\n", externalXmlFilePath.c_str()); + } + + parseSuccessful = Parse(externalXmlFilePath, Globals::Instance->baseRomPath, + extFile.outPath, ZFileMode::ExternalFile, workerID); + + if (!parseSuccessful) + return 1; + } + + parseSuccessful = Parse(fileListItem, Globals::Instance->baseRomPath, + Globals::Instance->outputPath, fileMode, workerID); + + if (!parseSuccessful) + return 1; + + if (Globals::Instance->singleThreaded) + { + for (int i = 0; i < Globals::Instance->files.size(); i++) + { + delete Globals::Instance->files[i]; + Globals::Instance->files.erase(Globals::Instance->files.begin() + i); + i--; + } + + Globals::Instance->externalFiles.clear(); + Globals::Instance->segments.clear(); + Globals::Instance->cfg.segmentRefFiles.clear(); + } + else + { + for (int i = 0; i < Globals::Instance->workerData[workerID]->files.size(); i++) + { + delete Globals::Instance->workerData[workerID]->files[i]; + Globals::Instance->workerData[workerID]->files.erase( + Globals::Instance->workerData[workerID]->files.begin() + + i); + i--; + } + + Globals::Instance->workerData[workerID]->externalFiles.clear(); + Globals::Instance->workerData[workerID]->segments.clear(); + Globals::Instance->workerData[workerID]->segmentRefFiles.clear(); + + numWorkersLeft--; + } +} + bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path& outPath, - ZFileMode fileMode) + ZFileMode fileMode, int workerID) { tinyxml2::XMLDocument doc; tinyxml2::XMLError eResult = doc.LoadFile(xmlFilePath.string().c_str()); @@ -361,11 +496,11 @@ bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path { if (std::string_view(child->Name()) == "File") { - ZFile* file = new ZFile(fileMode, child, basePath, outPath, "", xmlFilePath); - Globals::Instance->files.push_back(file); + ZFile* file = new ZFile(fileMode, child, basePath, outPath, "", xmlFilePath, workerID); + Globals::Instance->AddFile(file, workerID); if (fileMode == ZFileMode::ExternalFile) { - Globals::Instance->externalFiles.push_back(file); + Globals::Instance->AddExternalFile(file, workerID); file->isExternalFile = true; } } @@ -398,7 +533,7 @@ bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path } // Recursion. What can go wrong? - Parse(externalXmlFilePath, basePath, externalOutFilePath, ZFileMode::ExternalFile); + Parse(externalXmlFilePath, basePath, externalOutFilePath, ZFileMode::ExternalFile, workerID); } else { @@ -417,7 +552,14 @@ bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path if (exporterSet != nullptr && exporterSet->beginXMLFunc != nullptr) exporterSet->beginXMLFunc(); - for (ZFile* file : Globals::Instance->files) + std::vector files; + + if (Globals::Instance->singleThreaded) + files = Globals::Instance->files; + else + files = Globals::Instance->workerData[workerID]->files; + + for (ZFile* file : files) { if (fileMode == ZFileMode::BuildSourceFile) file->BuildSourceFile(); diff --git a/ZAPDTR/ZAPD/OtherStructs/SkinLimbStructs.cpp b/ZAPDTR/ZAPD/OtherStructs/SkinLimbStructs.cpp index 8ce215c97..c9a537ced 100644 --- a/ZAPDTR/ZAPD/OtherStructs/SkinLimbStructs.cpp +++ b/ZAPDTR/ZAPD/OtherStructs/SkinLimbStructs.cpp @@ -199,8 +199,10 @@ std::string Struct_800A598C::GetBodySourceCode() const { std::string unk_8_Str; std::string unk_C_Str; - Globals::Instance->GetSegmentedPtrName(unk_8, parent, "Struct_800A57C0", unk_8_Str); - Globals::Instance->GetSegmentedPtrName(unk_C, parent, "Struct_800A598C_2", unk_C_Str); + Globals::Instance->GetSegmentedPtrName(unk_8, parent, "Struct_800A57C0", unk_8_Str, + parent->workerID); + Globals::Instance->GetSegmentedPtrName(unk_C, parent, "Struct_800A598C_2", unk_C_Str, + parent->workerID); std::string entryStr = StringHelper::Sprintf("\n\t\tARRAY_COUNTU(%s), ARRAY_COUNTU(%s),\n", unk_8_Str.c_str(), unk_C_Str.c_str()); @@ -316,8 +318,9 @@ std::string Struct_800A5E28::GetBodySourceCode() const { std::string unk_4_Str; std::string unk_8_Str; - Globals::Instance->GetSegmentedPtrName(unk_4, parent, "Struct_800A598C", unk_4_Str); - Globals::Instance->GetSegmentedPtrName(unk_8, parent, "Gfx", unk_8_Str); + Globals::Instance->GetSegmentedPtrName(unk_4, parent, "Struct_800A598C", unk_4_Str, + parent->workerID); + Globals::Instance->GetSegmentedPtrName(unk_8, parent, "Gfx", unk_8_Str, parent->workerID); std::string entryStr = "\n"; entryStr += StringHelper::Sprintf("\t%i, ARRAY_COUNTU(%s),\n", unk_0, unk_4_Str.c_str()); diff --git a/ZAPDTR/ZAPD/OutputFormatter.cpp b/ZAPDTR/ZAPD/OutputFormatter.cpp index dbb8692c0..7fac434b2 100644 --- a/ZAPDTR/ZAPD/OutputFormatter.cpp +++ b/ZAPDTR/ZAPD/OutputFormatter.cpp @@ -3,7 +3,7 @@ void OutputFormatter::Flush() { - //if (!Globals::Instance->otrMode) + //if (!Globals::Instance->otrMode) // OTRTODO: MULTITHREADING { if (col > lineLimit && !Globals::Instance->otrMode) { @@ -31,6 +31,10 @@ void OutputFormatter::Flush() int OutputFormatter::Write(const char* buf, int count) { + // OTRTODO + //if (!Globals::Instance->singleThreaded) + //return 0; + for (int i = 0; i < count; i++) { char c = buf[i]; @@ -92,7 +96,7 @@ int OutputFormatter::Write(const std::string& buf) return Write(buf.data(), buf.size()); } -OutputFormatter* OutputFormatter::Instance; +__declspec(thread) OutputFormatter* OutputFormatter::Instance; int OutputFormatter::WriteStatic(const char* buf, int count) { diff --git a/ZAPDTR/ZAPD/OutputFormatter.h b/ZAPDTR/ZAPD/OutputFormatter.h index 28955b1cd..f008df2cb 100644 --- a/ZAPDTR/ZAPD/OutputFormatter.h +++ b/ZAPDTR/ZAPD/OutputFormatter.h @@ -25,7 +25,7 @@ private: void Flush(); - static OutputFormatter* Instance; + static __declspec(thread) OutputFormatter* Instance; static int WriteStatic(const char* buf, int count); public: diff --git a/ZAPDTR/ZAPD/Overlays/ZOverlay.cpp b/ZAPDTR/ZAPD/Overlays/ZOverlay.cpp index 113c4ef33..c3e7c68c7 100644 --- a/ZAPDTR/ZAPD/Overlays/ZOverlay.cpp +++ b/ZAPDTR/ZAPD/Overlays/ZOverlay.cpp @@ -1,3 +1,4 @@ +#if 0 #include "ZOverlay.h" #include @@ -350,3 +351,4 @@ ELFIO::Elf_Half ZOverlay::FindSymbolInSection(const std::string& curSymName, } return SHN_UNDEF; } +#endif \ No newline at end of file diff --git a/ZAPDTR/ZAPD/Overlays/ZOverlay.h b/ZAPDTR/ZAPD/Overlays/ZOverlay.h index 98ead9013..c1fadddca 100644 --- a/ZAPDTR/ZAPD/Overlays/ZOverlay.h +++ b/ZAPDTR/ZAPD/Overlays/ZOverlay.h @@ -1,5 +1,7 @@ #pragma once +#if 0 + #include "Utils/Directory.h" #include "ZResource.h" #include "elfio/elfio.hpp" @@ -73,3 +75,4 @@ private: ELFIO::Elf_Half FindSymbolInSection(const std::string& curSymName, ELFIO::section* sectionData, ELFIO::elfio& reader, size_t readerId); }; +#endif \ No newline at end of file diff --git a/ZAPDTR/ZAPD/ZAPD.vcxproj b/ZAPDTR/ZAPD/ZAPD.vcxproj index 95e89d8ff..91ff515a2 100644 --- a/ZAPDTR/ZAPD/ZAPD.vcxproj +++ b/ZAPDTR/ZAPD/ZAPD.vcxproj @@ -74,15 +74,29 @@ $(OutDir);$(ProjectDir)..\lib\libgfxd;$(ProjectDir)..\..\OTRExporter\packages\libpng-v142.1.6.37.2\build\native\lib\x64\v142\Debug\;$(ProjectDir)..\..\libultraship\libultraship\;$(LibraryPath) $(ProjectDir)..\ZAPDUtils;$(ProjectDir)..\lib\tinyxml2;$(ProjectDir)..\lib\libgfxd;$(ProjectDir)..\lib\elfio;$(ProjectDir)..\lib\stb;$(ProjectDir);$(IncludePath) + MinimumRecommendedRules.ruleset + + $(ProjectDir)..\ZAPDUtils;$(ProjectDir)..\lib\tinyxml2;$(ProjectDir)..\lib\libgfxd;$(ProjectDir)..\lib\elfio;$(ProjectDir)..\lib\stb;$(ProjectDir);$(IncludePath) $(OutDir);$(ProjectDir)..\lib\libgfxd;$(ProjectDir)..\..\OTRExporter\packages\libpng-v142.1.6.37.2\build\native\lib\x64\v142\Debug\;$(ProjectDir)..\..\libultraship\libultraship\;$(LibraryPath) false + MinimumRecommendedRules.ruleset + + $(SolutionDir)ZAPD\lib\tinyxml2;$(SolutionDir)ZAPD\lib\libgfxd;$(SolutionDir)ZAPD\lib\elfio;$(SolutionDir)ZAPD\lib\stb;$(ProjectDir);$(IncludePath) $(SolutionDir)ZAPD\lib\libgfxd;$(SolutionDir)x64\Debug;$(SolutionDir)packages\libpng.1.6.28.1\build\native\lib\x64\v140\dynamic\Debug;$(LibraryPath) + MinimumRecommendedRules.ruleset + + + + + MinimumRecommendedRules.ruleset + + @@ -170,6 +184,7 @@ + @@ -178,6 +193,7 @@ + @@ -185,6 +201,7 @@ + @@ -257,7 +274,9 @@ + + @@ -265,6 +284,8 @@ + + @@ -278,6 +299,7 @@ + @@ -334,6 +356,12 @@ + + + {02d10590-9542-3f55-aaf8-6055677e2a2a} + false + + diff --git a/ZAPDTR/ZAPD/ZAPD.vcxproj.filters b/ZAPDTR/ZAPD/ZAPD.vcxproj.filters index 2a004bf9d..c122b7e56 100644 --- a/ZAPDTR/ZAPD/ZAPD.vcxproj.filters +++ b/ZAPDTR/ZAPD/ZAPD.vcxproj.filters @@ -58,6 +58,12 @@ {730beb67-6d59-4849-9d9b-702c4a565fc0} + + {b26457d2-cdb8-4c92-9ed7-a55bf6d3619e} + + + {9651a041-1019-4486-9e90-1dccfa9471e9} + @@ -282,6 +288,15 @@ Source Files\Z64 + + Source Files\Z64 + + + Source Files\Yaz0 + + + Source Files + @@ -539,6 +554,21 @@ Header Files\Z64 + + Header Files\Z64 + + + Header Files\Yaz0 + + + Header Files\Yaz0 + + + Header Files + + + Header Files\Libraries + diff --git a/ZAPDTR/ZAPD/ZAnimation.cpp b/ZAPDTR/ZAPD/ZAnimation.cpp index dced31aff..ef4735e09 100644 --- a/ZAPDTR/ZAPD/ZAnimation.cpp +++ b/ZAPDTR/ZAPD/ZAnimation.cpp @@ -112,12 +112,15 @@ void ZNormalAnimation::DeclareReferences(const std::string& prefix) const uint8_t lineLength = 14; const uint8_t offset = 0; - for (size_t i = 0; i < rotationValues.size(); i++) + if (!Globals::Instance->otrMode) { - valuesStr += StringHelper::Sprintf("0x%04X, ", rotationValues[i]); + for (size_t i = 0; i < rotationValues.size(); i++) + { + valuesStr += StringHelper::Sprintf("0x%04X, ", rotationValues[i]); - if ((i - offset + 1) % lineLength == 0) - valuesStr += "\n "; + if ((i - offset + 1) % lineLength == 0) + valuesStr += "\n "; + } } parent->AddDeclarationArray(rotationValuesOffset, DeclarationAlignment::Align4, @@ -125,13 +128,17 @@ void ZNormalAnimation::DeclareReferences(const std::string& prefix) StringHelper::Sprintf("%sFrameData", defaultPrefix.c_str()), rotationValues.size(), valuesStr); - for (size_t i = 0; i < rotationIndices.size(); i++) + if (!Globals::Instance->otrMode) { - indicesStr += StringHelper::Sprintf(" { 0x%04X, 0x%04X, 0x%04X },", rotationIndices[i].x, - rotationIndices[i].y, rotationIndices[i].z); + for (size_t i = 0; i < rotationIndices.size(); i++) + { + indicesStr += + StringHelper::Sprintf(" { 0x%04X, 0x%04X, 0x%04X },", rotationIndices[i].x, + rotationIndices[i].y, rotationIndices[i].z); - if (i != (rotationIndices.size() - 1)) - indicesStr += "\n"; + if (i != (rotationIndices.size() - 1)) + indicesStr += "\n"; + } } parent->AddDeclarationArray(rotationIndicesOffset, DeclarationAlignment::Align4, @@ -143,10 +150,11 @@ void ZNormalAnimation::DeclareReferences(const std::string& prefix) std::string ZNormalAnimation::GetBodySourceCode() const { std::string frameDataName; - Globals::Instance->GetSegmentedPtrName(rotationValuesSeg, parent, "s16", frameDataName); + Globals::Instance->GetSegmentedPtrName(rotationValuesSeg, parent, "s16", frameDataName, + parent->workerID); std::string jointIndicesName; Globals::Instance->GetSegmentedPtrName(rotationIndicesSeg, parent, "JointIndex", - jointIndicesName); + jointIndicesName, parent->workerID); std::string headerStr = StringHelper::Sprintf("\n\t{ %i }, %s,\n", frameCount, frameDataName.c_str()); @@ -183,7 +191,7 @@ void ZLinkAnimation::ParseRawData() std::string ZLinkAnimation::GetBodySourceCode() const { std::string segSymbol; - Globals::Instance->GetSegmentedPtrName(segmentAddress, parent, "", segSymbol); + Globals::Instance->GetSegmentedPtrName(segmentAddress, parent, "", segSymbol, parent->workerID); return StringHelper::Sprintf("\n\t{ %i }, %s\n", frameCount, segSymbol.c_str()); } @@ -383,12 +391,13 @@ void ZCurveAnimation::DeclareReferences(const std::string& prefix) std::string ZCurveAnimation::GetBodySourceCode() const { std::string refIndexStr; - Globals::Instance->GetSegmentedPtrName(refIndex, parent, "u8", refIndexStr); + Globals::Instance->GetSegmentedPtrName(refIndex, parent, "u8", refIndexStr, parent->workerID); std::string transformDataStr; Globals::Instance->GetSegmentedPtrName(transformData, parent, "TransformData", - transformDataStr); + transformDataStr, parent->workerID); std::string copyValuesStr; - Globals::Instance->GetSegmentedPtrName(copyValues, parent, "s16", copyValuesStr); + Globals::Instance->GetSegmentedPtrName(copyValues, parent, "s16", copyValuesStr, + parent->workerID); return StringHelper::Sprintf("\n\t%s,\n\t%s,\n\t%s,\n\t%i, %i\n", refIndexStr.c_str(), transformDataStr.c_str(), copyValuesStr.c_str(), unk_0C, unk_10); @@ -510,8 +519,10 @@ std::string ZLegacyAnimation::GetBodySourceCode() const std::string frameDataName; std::string jointKeyName; - Globals::Instance->GetSegmentedPtrName(frameData, parent, "s16", frameDataName); - Globals::Instance->GetSegmentedPtrName(jointKey, parent, "JointKey", jointKeyName); + Globals::Instance->GetSegmentedPtrName(frameData, parent, "s16", frameDataName, + parent->workerID); + Globals::Instance->GetSegmentedPtrName(jointKey, parent, "JointKey", jointKeyName, + parent->workerID); body += StringHelper::Sprintf("\t%i, %i,\n", frameCount, limbCount); body += StringHelper::Sprintf("\t%s,\n", frameDataName.c_str()); diff --git a/ZAPDTR/ZAPD/ZArray.cpp b/ZAPDTR/ZAPD/ZArray.cpp index 341ade1cf..86d73e1e6 100644 --- a/ZAPDTR/ZAPD/ZArray.cpp +++ b/ZAPDTR/ZAPD/ZArray.cpp @@ -102,8 +102,7 @@ std::string ZArray::GetBodySourceCode() const const auto& res = resList[i]; output += "\t"; - if (res->GetResourceType() == ZResourceType::Scalar || - res->GetResourceType() == ZResourceType::Vertex) + if (res->GetResourceType() == ZResourceType::Scalar || res->GetResourceType() == ZResourceType::Vertex) output += resList.at(i)->GetBodySourceCode(); else output += StringHelper::Sprintf("{ %s }", resList.at(i)->GetBodySourceCode().c_str()); diff --git a/ZAPDTR/ZAPD/ZBackground.cpp b/ZAPDTR/ZAPD/ZBackground.cpp index 0ed1eb747..94efe06e9 100644 --- a/ZAPDTR/ZAPD/ZBackground.cpp +++ b/ZAPDTR/ZAPD/ZBackground.cpp @@ -150,8 +150,11 @@ std::string ZBackground::GetExternalExtension() const void ZBackground::Save(const fs::path& outFolder) { - fs::path filepath = outFolder / (outName + "." + GetExternalExtension()); - File::WriteAllBytes(filepath.string(), data); + if (!Globals::Instance->otrMode) + { + fs::path filepath = outFolder / (outName + "." + GetExternalExtension()); + File::WriteAllBytes(filepath.string(), data); + } } std::string ZBackground::GetBodySourceCode() const diff --git a/ZAPDTR/ZAPD/ZCollision.cpp b/ZAPDTR/ZAPD/ZCollision.cpp index 11efd47e8..2a282cf2f 100644 --- a/ZAPDTR/ZAPD/ZCollision.cpp +++ b/ZAPDTR/ZAPD/ZCollision.cpp @@ -97,12 +97,15 @@ void ZCollisionHeader::DeclareReferences(const std::string& prefix) if (waterBoxes.size() > 0) { - for (size_t i = 0; i < waterBoxes.size(); i++) + if (!Globals::Instance->otrMode) { - declaration += - StringHelper::Sprintf("\t{ %s },", waterBoxes[i].GetBodySourceCode().c_str()); - if (i + 1 < waterBoxes.size()) - declaration += "\n"; + for (size_t i = 0; i < waterBoxes.size(); i++) + { + declaration += + StringHelper::Sprintf("\t{ %s },", waterBoxes[i].GetBodySourceCode().c_str()); + if (i + 1 < waterBoxes.size()) + declaration += "\n"; + } } parent->AddDeclarationArray( @@ -115,14 +118,17 @@ void ZCollisionHeader::DeclareReferences(const std::string& prefix) { declaration.clear(); - for (size_t i = 0; i < polygons.size(); i++) + if (!Globals::Instance->otrMode) { - declaration += StringHelper::Sprintf( - "\t{ 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X },", - polygons[i].type, polygons[i].vtxA, polygons[i].vtxB, polygons[i].vtxC, - polygons[i].a, polygons[i].b, polygons[i].c, polygons[i].d); - if (i + 1 < polygons.size()) - declaration += "\n"; + for (size_t i = 0; i < polygons.size(); i++) + { + declaration += StringHelper::Sprintf( + "\t{ 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X },", + polygons[i].type, polygons[i].vtxA, polygons[i].vtxB, polygons[i].vtxC, + polygons[i].a, polygons[i].b, polygons[i].c, polygons[i].d); + if (i + 1 < polygons.size()) + declaration += "\n"; + } } parent->AddDeclarationArray( @@ -132,13 +138,16 @@ void ZCollisionHeader::DeclareReferences(const std::string& prefix) } declaration.clear(); - for (size_t i = 0; i < polygonTypes.size(); i++) + if (!Globals::Instance->otrMode) { - declaration += StringHelper::Sprintf("\t{ 0x%08lX, 0x%08lX },", polygonTypes[i] >> 32, - polygonTypes[i] & 0xFFFFFFFF); + for (size_t i = 0; i < polygonTypes.size(); i++) + { + declaration += StringHelper::Sprintf("\t{ 0x%08lX, 0x%08lX },", polygonTypes[i] >> 32, + polygonTypes[i] & 0xFFFFFFFF); - if (i < polygonTypes.size() - 1) - declaration += "\n"; + if (i < polygonTypes.size() - 1) + declaration += "\n"; + } } if (polyTypeDefAddress != 0) @@ -154,13 +163,16 @@ void ZCollisionHeader::DeclareReferences(const std::string& prefix) { declaration.clear(); - for (size_t i = 0; i < vertices.size(); i++) + if (!Globals::Instance->otrMode) { - declaration += - StringHelper::Sprintf("\t{ %s },", vertices[i].GetBodySourceCode().c_str()); + for (size_t i = 0; i < vertices.size(); i++) + { + declaration += + StringHelper::Sprintf("\t{ %s },", vertices[i].GetBodySourceCode().c_str()); - if (i < vertices.size() - 1) - declaration += "\n"; + if (i < vertices.size() - 1) + declaration += "\n"; + } } const auto& first = vertices.front(); @@ -177,29 +189,36 @@ std::string ZCollisionHeader::GetBodySourceCode() const { std::string declaration = ""; + if (Globals::Instance->otrMode) + return declaration; + declaration += "\n"; declaration += StringHelper::Sprintf("\t{ %i, %i, %i },\n", absMinX, absMinY, absMinZ); declaration += StringHelper::Sprintf("\t{ %i, %i, %i },\n", absMaxX, absMaxY, absMaxZ); std::string vtxName; - Globals::Instance->GetSegmentedPtrName(vtxAddress, parent, "Vec3s", vtxName); + Globals::Instance->GetSegmentedPtrName(vtxAddress, parent, "Vec3s", vtxName, parent->workerID); declaration += StringHelper::Sprintf("\t%i,\n\t%s,\n", numVerts, vtxName.c_str()); std::string polyName; - Globals::Instance->GetSegmentedPtrName(polyAddress, parent, "CollisionPoly", polyName); + Globals::Instance->GetSegmentedPtrName(polyAddress, parent, "CollisionPoly", polyName, + parent->workerID); declaration += StringHelper::Sprintf("\t%i,\n\t%s,\n", numPolygons, polyName.c_str()); std::string surfaceName; - Globals::Instance->GetSegmentedPtrName(polyTypeDefAddress, parent, "SurfaceType", surfaceName); + Globals::Instance->GetSegmentedPtrName(polyTypeDefAddress, parent, "SurfaceType", surfaceName, + parent->workerID); declaration += StringHelper::Sprintf("\t%s,\n", surfaceName.c_str()); std::string camName; - Globals::Instance->GetSegmentedPtrName(camDataAddress, parent, "CamData", camName); + Globals::Instance->GetSegmentedPtrName(camDataAddress, parent, "CamData", camName, + parent->workerID); declaration += StringHelper::Sprintf("\t%s,\n", camName.c_str()); std::string waterBoxName; - Globals::Instance->GetSegmentedPtrName(waterBoxAddress, parent, "WaterBox", waterBoxName); + Globals::Instance->GetSegmentedPtrName(waterBoxAddress, parent, "WaterBox", waterBoxName, + parent->workerID); declaration += StringHelper::Sprintf("\t%i,\n\t%s\n", numWaterBoxes, waterBoxName.c_str()); return declaration; diff --git a/ZAPDTR/ZAPD/ZDisplayList.cpp b/ZAPDTR/ZAPD/ZDisplayList.cpp index 4c7dd7c17..93269b65e 100644 --- a/ZAPDTR/ZAPD/ZDisplayList.cpp +++ b/ZAPDTR/ZAPD/ZDisplayList.cpp @@ -553,7 +553,8 @@ int32_t ZDisplayList::OptimizationCheck_LoadTextureBlock(int32_t startIndex, std lastTexSeg = segmentNumber; - Globals::Instance->GetSegmentedPtrName(data & 0xFFFFFFFF, parent, "", texStr); + Globals::Instance->GetSegmentedPtrName(data & 0xFFFFFFFF, parent, "", texStr, + parent->workerID); } // gsDPSetTile @@ -705,7 +706,7 @@ void ZDisplayList::Opcode_G_DL(uint64_t data, const std::string& prefix, char* l if (pp != 0) { - if (!Globals::Instance->HasSegment(segNum)) + if (!Globals::Instance->HasSegment(segNum, parent->workerID)) sprintf(line, "gsSPBranchList(0x%08" PRIX64 "),", data & 0xFFFFFFFF); else if (dListDecl != nullptr) sprintf(line, "gsSPBranchList(%s),", dListDecl->varName.c_str()); @@ -715,7 +716,7 @@ void ZDisplayList::Opcode_G_DL(uint64_t data, const std::string& prefix, char* l } else { - if (!Globals::Instance->HasSegment(segNum)) + if (!Globals::Instance->HasSegment(segNum, parent->workerID)) sprintf(line, "gsSPDisplayList(0x%08" PRIX64 "),", data & 0xFFFFFFFF); else if (dListDecl != nullptr) sprintf(line, "gsSPDisplayList(%s),", dListDecl->varName.c_str()); @@ -726,7 +727,7 @@ void ZDisplayList::Opcode_G_DL(uint64_t data, const std::string& prefix, char* l // if (segNum == 8 || segNum == 9 || segNum == 10 || segNum == 11 || segNum == 12 || segNum == // 13) // Used for runtime-generated display lists - if (!Globals::Instance->HasSegment(segNum)) + if (!Globals::Instance->HasSegment(segNum, parent->workerID)) { if (pp != 0) sprintf(line, "gsSPBranchList(0x%08" PRIX64 "),", data & 0xFFFFFFFF); @@ -847,7 +848,7 @@ void ZDisplayList::Opcode_G_VTX(uint64_t data, char* line) } // Hack: Don't extract vertices from a unknown segment. - if (!Globals::Instance->HasSegment(GETSEGNUM(data))) + if (!Globals::Instance->HasSegment(GETSEGNUM(data), parent->workerID)) { segptr_t segmented = data & 0xFFFFFFFF; references.push_back(segmented); @@ -951,7 +952,7 @@ void ZDisplayList::Opcode_G_SETTIMG(uint64_t data, const std::string& prefix, ch if (parent != nullptr) { - if (Globals::Instance->HasSegment(segmentNumber)) + if (Globals::Instance->HasSegment(segmentNumber, parent->workerID)) texDecl = parent->GetDeclaration(texAddress); else texDecl = parent->GetDeclaration(data); @@ -959,7 +960,7 @@ void ZDisplayList::Opcode_G_SETTIMG(uint64_t data, const std::string& prefix, ch if (texDecl != nullptr) sprintf(texStr, "%s", texDecl->varName.c_str()); - else if (data != 0 && Globals::Instance->HasSegment(segmentNumber)) + else if (data != 0 && Globals::Instance->HasSegment(segmentNumber, parent->workerID)) sprintf(texStr, "%sTex_%06X", prefix.c_str(), texAddress); else { @@ -972,7 +973,7 @@ void ZDisplayList::Opcode_G_SETTIMG(uint64_t data, const std::string& prefix, ch else { std::string texName; - Globals::Instance->GetSegmentedPtrName(data, parent, "", texName); + Globals::Instance->GetSegmentedPtrName(data, parent, "", texName, parent->workerID); sprintf(line, "gsDPSetTextureImage(%s, %s, %i, %s),", fmtTbl[fmt], sizTbl[siz], www + 1, texName.c_str()); } @@ -1647,7 +1648,9 @@ static int32_t GfxdCallback_Vtx(uint32_t seg, int32_t count) } self->references.push_back(seg); - gfxd_puts("@r"); + + if (!Globals::Instance->otrMode) + gfxd_puts("@r"); return 1; } @@ -1670,7 +1673,7 @@ static int32_t GfxdCallback_Texture(segptr_t seg, int32_t fmt, int32_t siz, int3 self->TextureGenCheck(); std::string texName; - Globals::Instance->GetSegmentedPtrName(seg, self->parent, "", texName); + Globals::Instance->GetSegmentedPtrName(seg, self->parent, "", texName, self->parent->workerID); gfxd_puts(texName.c_str()); @@ -1694,7 +1697,7 @@ static int32_t GfxdCallback_Palette(uint32_t seg, [[maybe_unused]] int32_t idx, self->TextureGenCheck(); std::string palName; - Globals::Instance->GetSegmentedPtrName(seg, self->parent, "", palName); + Globals::Instance->GetSegmentedPtrName(seg, self->parent, "", palName, self->parent->workerID); gfxd_puts(palName.c_str()); @@ -1708,7 +1711,8 @@ static int32_t GfxdCallback_DisplayList(uint32_t seg) uint32_t dListSegNum = GETSEGNUM(seg); std::string dListName = ""; - bool addressFound = Globals::Instance->GetSegmentedPtrName(seg, self->parent, "Gfx", dListName); + bool addressFound = Globals::Instance->GetSegmentedPtrName(seg, self->parent, "Gfx", dListName, + self->parent->workerID); if (!addressFound && self->parent->segment == dListSegNum) { @@ -1731,7 +1735,8 @@ static int32_t GfxdCallback_Matrix(uint32_t seg) std::string mtxName; ZDisplayList* self = static_cast(gfxd_udata_get()); - bool addressFound = Globals::Instance->GetSegmentedPtrName(seg, self->parent, "Mtx", mtxName); + bool addressFound = Globals::Instance->GetSegmentedPtrName(seg, self->parent, "Mtx", mtxName, + self->parent->workerID); if (!addressFound && GETSEGNUM(seg) == self->parent->segment) { Declaration* decl = @@ -1805,6 +1810,23 @@ void ZDisplayList::DeclareReferences(const std::string& prefix) curAddr, firstVtx.GetDeclarationAlignment(), item.second.size() * firstVtx.GetRawDataSize(), firstVtx.GetSourceTypeName(), firstVtx.GetDefaultName(name), item.second.size(), declaration); + + /*for (auto vtx : item.second) + { + ZVtx* nVtx = new ZVtx(vtx.parent); + nVtx->x = vtx.x; + nVtx->y = vtx.y; + nVtx->z = vtx.z; + nVtx->flag = vtx.flag; + nVtx->s = vtx.s; + nVtx->t = vtx.t; + nVtx->r = vtx.r; + nVtx->g = vtx.g; + nVtx->b = vtx.b; + nVtx->a = vtx.a; + decl->vertexHack.push_back(nVtx); + }*/ + decl->isExternal = true; } } @@ -1850,15 +1872,15 @@ void ZDisplayList::DeclareReferences(const std::string& prefix) { auto& item = vertices[vtxKeys[i]]; - std::string declaration; + //std::string declaration; - for (auto& vtx : item) - declaration += StringHelper::Sprintf("\t%s,\n", vtx.GetBodySourceCode().c_str()); + //for (auto& vtx : item) + //declaration += StringHelper::Sprintf("\t%s,\n", vtx.GetBodySourceCode().c_str()); // Ensure there's always a trailing line feed to prevent dumb warnings. // Please don't remove this line, unless you somehow made a way to prevent // that warning when building the OoT repo. - declaration += "\n"; + //declaration += "\n"; if (parent != nullptr) { @@ -1870,12 +1892,6 @@ void ZDisplayList::DeclareReferences(const std::string& prefix) else vtxName = StringHelper::Sprintf("%sVtx_%06X", prefix.c_str(), vtxKeys[i]); - - if (StringHelper::Contains(vtxName, "4B18")) - { - int bp = 0; - } - auto filepath = Globals::Instance->outputPath / vtxName; std::string incStr = StringHelper::Sprintf("%s.%s.inc", filepath.string().c_str(), "vtx"); @@ -1991,7 +2007,7 @@ bool ZDisplayList::TextureGenCheck(int32_t texWidth, int32_t texHeight, uint32_t texWidth, texHeight, texIsPalette, texAddr); if ((texSeg != 0 || texAddr != 0) && texWidth > 0 && texHeight > 0 && texLoaded && - Globals::Instance->HasSegment(segmentNumber)) + Globals::Instance->HasSegment(segmentNumber, self->parent->workerID)) { ZFile* auxParent = nullptr; if (segmentNumber == self->parent->segment) @@ -2002,7 +2018,8 @@ bool ZDisplayList::TextureGenCheck(int32_t texWidth, int32_t texHeight, uint32_t { // Try to find a non-external file (i.e., one we are actually extracting) // which has the same segment number we are looking for. - for (auto& otherFile : Globals::Instance->cfg.segmentRefFiles[segmentNumber]) + auto segs = Globals::Instance->GetSegmentRefFiles(self->parent->workerID); + for (auto& otherFile : segs[segmentNumber]) { if (!otherFile->isExternalFile) { diff --git a/ZAPDTR/ZAPD/ZFile.cpp b/ZAPDTR/ZAPD/ZFile.cpp index 13ab961f8..b706c1914 100644 --- a/ZAPDTR/ZAPD/ZFile.cpp +++ b/ZAPDTR/ZAPD/ZFile.cpp @@ -41,6 +41,7 @@ ZFile::ZFile() baseAddress = 0; rangeStart = 0x000000000; rangeEnd = 0xFFFFFFFF; + workerID = 0; } ZFile::ZFile(const fs::path& nOutPath, const std::string& nName) : ZFile() @@ -51,7 +52,7 @@ ZFile::ZFile(const fs::path& nOutPath, const std::string& nName) : ZFile() } ZFile::ZFile(ZFileMode nMode, tinyxml2::XMLElement* reader, const fs::path& nBasePath, - const fs::path& nOutPath, const std::string& filename, const fs::path& nXmlFilePath) + const fs::path& nOutPath, const std::string& filename, const fs::path& nXmlFilePath, int nWorkerID) : ZFile() { xmlFilePath = nXmlFilePath; @@ -66,6 +67,7 @@ ZFile::ZFile(ZFileMode nMode, tinyxml2::XMLElement* reader, const fs::path& nBas outputPath = nOutPath; mode = nMode; + workerID = nWorkerID; ParseXML(reader, filename); if (mode != ZFileMode::ExternalFile) @@ -167,7 +169,7 @@ void ZFile::ParseXML(tinyxml2::XMLElement* reader, const std::string& filename) } } } - Globals::Instance->AddSegment(segment, this); + Globals::Instance->AddSegment(segment, this, workerID); if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_INFO) { @@ -181,16 +183,22 @@ void ZFile::ParseXML(tinyxml2::XMLElement* reader, const std::string& filename) } } - if (mode == ZFileMode::Extract || mode == ZFileMode::ExternalFile) + if (mode == ZFileMode::Extract || mode == ZFileMode::ExternalFile || mode == ZFileMode::ExtractDirectory) { - if (!File::Exists((basePath / name).string())) + if (Globals::Instance->fileMode != ZFileMode::ExtractDirectory) { - std::string errorHeader = StringHelper::Sprintf("binary file '%s' does not exist.", - (basePath / name).c_str()); - HANDLE_ERROR_PROCESS(WarningType::Always, errorHeader, ""); + if (!File::Exists((basePath / name).string())) + { + std::string errorHeader = StringHelper::Sprintf("binary file '%s' does not exist.", + (basePath / name).c_str()); + HANDLE_ERROR_PROCESS(WarningType::Always, errorHeader, ""); + } } - rawData = File::ReadAllBytes((basePath / name).string()); + if (Globals::Instance->fileMode == ZFileMode::ExtractDirectory) + rawData = Globals::Instance->GetBaseromFile(name); + else + rawData = Globals::Instance->GetBaseromFile((basePath / name).string()); if (reader->Attribute("RangeEnd") == nullptr) rangeEnd = rawData.size(); @@ -260,7 +268,7 @@ void ZFile::ParseXML(tinyxml2::XMLElement* reader, const std::string& filename) { ZResource* nRes = nodeMap[nodeName](this); - if (mode == ZFileMode::Extract || mode == ZFileMode::ExternalFile) + if (mode == ZFileMode::Extract || mode == ZFileMode::ExternalFile || mode == ZFileMode::ExtractDirectory) nRes->ExtractFromXML(child, rawDataIndex); switch (nRes->GetResourceType()) @@ -813,7 +821,8 @@ void ZFile::GenerateSourceHeaderFiles() if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_INFO) printf("Writing H file: %s\n", headerFilename.c_str()); - File::WriteAllText(headerFilename, formatter.GetOutput()); + if (Globals::Instance->fileMode != ZFileMode::ExtractDirectory) + File::WriteAllText(headerFilename, formatter.GetOutput()); } std::string ZFile::GetHeaderInclude() const @@ -999,6 +1008,10 @@ std::string ZFile::ProcessDeclarations() lastItem.second->size += curItem.second->size; lastItem.second->arrayItemCnt += curItem.second->arrayItemCnt; lastItem.second->text += "\n" + curItem.second->text; + + for (auto vtx : curItem.second->vertexHack) + lastItem.second->vertexHack.push_back(vtx); + declarations.erase(curItem.first); declarationKeys.erase(declarationKeys.begin() + i); delete curItem.second; @@ -1087,7 +1100,7 @@ void ZFile::ProcessDeclarationText(Declaration* decl) { std::string vtxName; Globals::Instance->GetSegmentedArrayIndexedName(decl->references[refIndex], 0x10, this, - "Vtx", vtxName); + "Vtx", vtxName, workerID); decl->text.replace(i, 2, vtxName); refIndex++; @@ -1190,6 +1203,9 @@ void ZFile::HandleUnaccountedData() uint32_t lastSize = 0; std::vector declsAddresses; + if (Globals::Instance->otrMode) + return; + for (const auto& item : declarations) { declsAddresses.push_back(item.first); diff --git a/ZAPDTR/ZAPD/ZFile.h b/ZAPDTR/ZAPD/ZFile.h index ac4062d5b..7860aa4d3 100644 --- a/ZAPDTR/ZAPD/ZFile.h +++ b/ZAPDTR/ZAPD/ZFile.h @@ -16,6 +16,7 @@ enum class ZFileMode BuildBackground, Extract, ExternalFile, + ExtractDirectory, Invalid, Custom = 1000, // Used for exporter file modes }; @@ -34,6 +35,8 @@ public: std::string defines; std::vector resources; + int workerID; + // Default to using virtual addresses uint32_t segment = 0x80; uint32_t baseAddress, rangeStart, rangeEnd; @@ -41,7 +44,7 @@ public: ZFile(const fs::path& nOutPath, const std::string& nName); ZFile(ZFileMode nMode, tinyxml2::XMLElement* reader, const fs::path& nBasePath, - const fs::path& nOutPath, const std::string& filename, const fs::path& nXmlFilePath); + const fs::path& nOutPath, const std::string& filename, const fs::path& nXmlFilePath, int nWorkerID); ~ZFile(); std::string GetName() const; @@ -107,12 +110,12 @@ public: static void RegisterNode(std::string nodeName, ZResourceFactoryFunc* nodeFunc); protected: - std::vector rawData; std::string name; fs::path outName = ""; fs::path basePath; fs::path outputPath; fs::path xmlFilePath; + std::vector rawData; // Keep track of every texture of this ZFile. // The pointers declared here are "borrowed" (somebody else is the owner), diff --git a/ZAPDTR/ZAPD/ZLimb.cpp b/ZAPDTR/ZAPD/ZLimb.cpp index 330fbaf7c..9eb7eac8d 100644 --- a/ZAPDTR/ZAPD/ZLimb.cpp +++ b/ZAPDTR/ZAPD/ZLimb.cpp @@ -218,18 +218,25 @@ size_t ZLimb::GetRawDataSize() const std::string ZLimb::GetBodySourceCode() const { + if (Globals::Instance->otrMode) + return ""; + std::string dListStr; std::string dListStr2; - Globals::Instance->GetSegmentedArrayIndexedName(dListPtr, 8, parent, "Gfx", dListStr); - Globals::Instance->GetSegmentedArrayIndexedName(dList2Ptr, 8, parent, "Gfx", dListStr2); + Globals::Instance->GetSegmentedArrayIndexedName(dListPtr, 8, parent, "Gfx", dListStr, + parent->workerID); + Globals::Instance->GetSegmentedArrayIndexedName(dList2Ptr, 8, parent, "Gfx", dListStr2, + parent->workerID); std::string entryStr = "\n\t"; if (type == ZLimbType::Legacy) { std::string childName; std::string siblingName; - Globals::Instance->GetSegmentedPtrName(childPtr, parent, "LegacyLimb", childName); - Globals::Instance->GetSegmentedPtrName(siblingPtr, parent, "LegacyLimb", siblingName); + Globals::Instance->GetSegmentedPtrName(childPtr, parent, "LegacyLimb", childName, + parent->workerID); + Globals::Instance->GetSegmentedPtrName(siblingPtr, parent, "LegacyLimb", siblingName, + parent->workerID); entryStr += StringHelper::Sprintf("%s,\n", dListStr.c_str()); entryStr += @@ -261,7 +268,8 @@ std::string ZLimb::GetBodySourceCode() const case ZLimbType::Skin: { std::string skinSegmentStr; - Globals::Instance->GetSegmentedPtrName(skinSegment, parent, "", skinSegmentStr); + Globals::Instance->GetSegmentedPtrName(skinSegment, parent, "", skinSegmentStr, + parent->workerID); entryStr += StringHelper::Sprintf("\t0x%02X, %s\n", skinSegmentType, skinSegmentStr.c_str()); } @@ -367,7 +375,7 @@ void ZLimb::DeclareDList(segptr_t dListSegmentedPtr, const std::string& prefix, std::string dlistName; bool declFound = Globals::Instance->GetSegmentedArrayIndexedName(dListSegmentedPtr, 8, parent, - "Gfx", dlistName); + "Gfx", dlistName, parent->workerID); if (declFound) return; diff --git a/ZAPDTR/ZAPD/ZPath.cpp b/ZAPDTR/ZAPD/ZPath.cpp index e19513db3..660821ce8 100644 --- a/ZAPDTR/ZAPD/ZPath.cpp +++ b/ZAPDTR/ZAPD/ZPath.cpp @@ -142,8 +142,8 @@ void PathwayEntry::DeclareReferences(const std::string& prefix) return; std::string pointsName; - bool addressFound = - Globals::Instance->GetSegmentedPtrName(listSegmentAddress, parent, "Vec3s", pointsName); + bool addressFound = Globals::Instance->GetSegmentedPtrName(listSegmentAddress, parent, "Vec3s", + pointsName, parent->workerID); if (addressFound) return; @@ -177,7 +177,8 @@ std::string PathwayEntry::GetBodySourceCode() const { std::string declaration; std::string listName; - Globals::Instance->GetSegmentedPtrName(listSegmentAddress, parent, "Vec3s", listName); + Globals::Instance->GetSegmentedPtrName(listSegmentAddress, parent, "Vec3s", listName, + parent->workerID); if (Globals::Instance->game == ZGame::MM_RETAIL) declaration += diff --git a/ZAPDTR/ZAPD/ZPlayerAnimationData.cpp b/ZAPDTR/ZAPD/ZPlayerAnimationData.cpp index a96604fda..ab633c129 100644 --- a/ZAPDTR/ZAPD/ZPlayerAnimationData.cpp +++ b/ZAPDTR/ZAPD/ZPlayerAnimationData.cpp @@ -3,6 +3,7 @@ #include "Utils/BitConverter.h" #include "Utils/StringHelper.h" #include "ZFile.h" +#include REGISTER_ZFILENODE(PlayerAnimationData, ZPlayerAnimationData); @@ -54,6 +55,9 @@ std::string ZPlayerAnimationData::GetBodySourceCode() const { std::string declaration = ""; + if (Globals::Instance->otrMode) + return ""; + size_t index = 0; for (const auto& entry : limbRotData) { diff --git a/ZAPDTR/ZAPD/ZResource.cpp b/ZAPDTR/ZAPD/ZResource.cpp index a5ad4cf21..c6efef073 100644 --- a/ZAPDTR/ZAPD/ZResource.cpp +++ b/ZAPDTR/ZAPD/ZResource.cpp @@ -8,6 +8,7 @@ #include "ZFile.h" #include #include +#include ZResource::ZResource(ZFile* nParent) { @@ -18,6 +19,7 @@ ZResource::ZResource(ZFile* nParent) sourceOutput = ""; rawDataIndex = 0; outputDeclaration = true; + hash = 0; RegisterRequiredAttribute("Name"); RegisterOptionalAttribute("OutName"); @@ -119,14 +121,21 @@ void ZResource::ParseXML(tinyxml2::XMLElement* reader) name = registeredAttributes.at("Name").value; - static std::regex r("[a-zA-Z_]+[a-zA-Z0-9_]*", std::regex::icase | std::regex::optimize); - if (!isInner || (isInner && name != "")) + // Disable this check for OTR file generation for now since it takes up a considerable amount of CPU time + if (!Globals::Instance->otrMode) { - if (!std::regex_match(name, r)) + static std::regex r("[a-zA-Z_]+[a-zA-Z0-9_]*", + std::regex::icase | std::regex::optimize); + + if (!isInner || (isInner && name != "")) { - HANDLE_ERROR_RESOURCE(WarningType::InvalidAttributeValue, parent, this, - rawDataIndex, "invalid value found for 'Name' attribute", ""); + if (!std::regex_match(name, r)) + { + HANDLE_ERROR_RESOURCE(WarningType::InvalidAttributeValue, parent, this, + rawDataIndex, "invalid value found for 'Name' attribute", + ""); + } } } @@ -273,6 +282,21 @@ void ZResource::GetSourceOutputCode([[maybe_unused]] const std::string& prefix) else decl->text = bodyStr; + // OTRTODO: This is a hack and we need something more elegant in the future... + if (GetResourceType() == ZResourceType::Array) + { + ZArray* arr = (ZArray*)this; + if (arr->resList[0]->GetResourceType() == ZResourceType::Vertex) + { + for (int i = 0; i < arr->resList.size(); i++) + { + ZVtx* vtx = (ZVtx*)arr->resList[i]; + decl->vertexHack.push_back(vtx); + + } + } + } + if (decl != nullptr) decl->staticConf = staticConf; } diff --git a/ZAPDTR/ZAPD/ZRom.cpp b/ZAPDTR/ZAPD/ZRom.cpp new file mode 100644 index 000000000..2a1d3c8a1 --- /dev/null +++ b/ZAPDTR/ZAPD/ZRom.cpp @@ -0,0 +1,202 @@ +#include "ZRom.h" +#include "Utils/BitConverter.h" +#include "Utils/File.h" +#include "Utils/Directory.h" +#include "yaz0/yaz0.h" + +#ifndef _MSC_VER +#include +#endif +#include + +namespace fs = std::filesystem; + +#define DMA_ENTRY_SIZE 16 + +#if defined(_MSC_VER) +#define __bswap_32 _byteswap_ulong +#define bswap_32 _byteswap_ulong +#endif + +// ROM DMA Table Start +#define OOT_OFF_NTSC_10_RC 0x7430 +#define OOT_OFF_NTSC_10 0x7430 +#define OOT_OFF_NTSC_11 0x7430 +#define OOT_OFF_PAL_10 0x7950 +#define OOT_OFF_NTSC_12 0x7960 +#define OOT_OFF_PAL_11 0x7950 +#define OOT_OFF_JP_GC 0x7170 +#define OOT_OFF_JP_MQ 0x7170 +#define OOT_OFF_US_GC 0x7170 +#define OOT_OFF_US_MQ 0x7170 +#define OOT_OFF_PAL_GC_DBG1 0x12F70 +#define OOT_OFF_PAL_MQ_DBG 0x12F70 +#define OOT_OFF_PAL_GC_DBG2 0x12F70 +#define OOT_OFF_PAL_GC 0x7170 +#define OOT_OFF_PAL_MQ 0x7170 +#define OOT_OFF_JP_GC_CE 007170 +#define OOT_OFF_CN_IQUE 0xB7A0 +#define OOT_OFF_TW_IQUE 0xB240 + +#define MM_OFF_US_10 0x1A500 +#define MM_OFF_JP_10 0x1C110 +#define MM_OFF_JP_11 0x1C050 +#define MM_OFF_DBG 0x24F60 + +#define OOT_NTSC_10 0xEC7011B7 +#define OOT_NTSC_11 0xD43DA81F +#define OOT_NTSC_12 0x693BA2AE +#define OOT_PAL_10 0xB044B569 +#define OOT_PAL_11 0xB2055FBD +#define OOT_NTSC_JP_GC_CE 0xF7F52DB8 +#define OOT_NTSC_JP_GC 0xF611F4BA +#define OOT_NTSC_US_GC 0xF3DD35BA +#define OOT_PAL_GC 0x09465AC3 +#define OOT_NTSC_JP_MQ 0xF43B45BA +#define OOT_NTSC_US_MQ 0xF034001A +#define OOT_PAL_MQ 0x1D4136F3 +#define OOT_PAL_GC_DBG1 0x871E1C92 // 03-21-2002 build +#define OOT_PAL_GC_DBG2 0x87121EFE // 03-13-2002 build +#define OOT_PAL_GC_MQ_DBG 0x917D18F6 +#define OOT_IQUE_TW 0x3D81FB3E +#define OOT_IQUE_CN 0xB1E1E07B +#define OOT_UNKNOWN 0xFFFFFFFF + +ZRom::ZRom(std::string romPath) +{ + RomVersion version; + romData = File::ReadAllBytes(romPath); + + version.crc = BitConverter::ToInt32BE(romData, 0x10); + + switch (version.crc) + { + case OOT_NTSC_10: + version.version = "N64 NTSC 1.0"; + version.listPath = "ntsc_oot.txt"; + version.offset = OOT_OFF_NTSC_10; + break; + case OOT_NTSC_11: + version.version = "N64 NTSC 1.1"; + version.listPath = "ntsc_oot.txt"; + version.offset = OOT_OFF_NTSC_11; + break; + case OOT_NTSC_12: + version.version = "N64 NTSC 1.2"; + version.listPath = "ntsc_oot.txt"; + version.offset = OOT_OFF_NTSC_12; + break; + case OOT_PAL_10: + version.version = "N64 PAL 1.0"; + version.listPath = "pal_oot.txt"; + version.offset = OOT_OFF_PAL_10; + break; + case OOT_PAL_11: + version.version = "N64 PAL 1.1"; + version.listPath = "pal_oot.txt"; + version.offset = OOT_OFF_PAL_11; + break; + case OOT_NTSC_JP_GC: + version.version = "JP GameCube (MQ Disk)"; + version.listPath = "gamecube.txt"; + version.offset = OOT_OFF_JP_GC; + break; + case OOT_NTSC_JP_GC_CE: + version.version = "GameCube (Collectors Edition Disk)"; + version.listPath = "gamecube.txt"; + version.offset = OOT_OFF_JP_GC_CE; + break; + case OOT_NTSC_JP_MQ: + version.version = "JP Master Quest"; + version.listPath = "gamecube.txt"; + version.offset = OOT_OFF_JP_MQ; + break; + case OOT_NTSC_US_MQ: + version.version = "NTSC Master Quest"; + version.listPath = "gamecube.txt"; + version.offset = OOT_OFF_JP_MQ; + break; + case OOT_NTSC_US_GC: + version.version = "NTSC GameCube"; + version.listPath = "gamecube.txt"; + version.offset = OOT_OFF_US_MQ; + break; + case OOT_PAL_GC: + version.version = "PAL GameCube"; + version.listPath = "gamecube_pal.txt"; + version.offset = OOT_OFF_PAL_GC; + break; + case OOT_PAL_MQ: + version.version = "PAL Master Quest"; + version.listPath = "gamecube_pal.txt"; + version.offset = OOT_OFF_PAL_MQ; + break; + case OOT_PAL_GC_DBG1: + version.version = "GameCube Debug 1.0"; + version.listPath = "dbg.txt"; + version.offset = OOT_OFF_PAL_GC_DBG1; + break; + case OOT_PAL_GC_DBG2: + version.version = "GameCube Debug 2.0"; + version.listPath = "dbg.txt"; + version.offset = OOT_OFF_PAL_GC_DBG2; + break; + case OOT_PAL_GC_MQ_DBG: + version.version = "GameCube MQ-Debug"; + version.listPath = "dbg.txt"; + version.offset = OOT_OFF_PAL_MQ_DBG; + break; + case OOT_IQUE_CN: + version.version = "OoT IQue"; + version.listPath = "ique.txt"; + version.offset = OOT_OFF_CN_IQUE; + break; + case OOT_IQUE_TW: + version.version = "TW IQue"; + version.listPath = "ique.txt"; + version.offset = OOT_OFF_TW_IQUE; + break; + } + + auto path = StringHelper::Sprintf("%s/%s", Globals::Instance->fileListPath.string().c_str(), version.listPath.c_str()); + auto txt = File::ReadAllText(path); + std::vector lines = StringHelper::Split(txt, "\n"); + + std::vector decompressedData(1); + + for (int i = 0; i < lines.size(); i++) + { + lines[i] = StringHelper::Strip(lines[i], "\r"); + const int romOffset = version.offset + (DMA_ENTRY_SIZE * i); + + const int virtStart = BitConverter::ToInt32BE(romData, romOffset + 0); + const int virtEnd = BitConverter::ToInt32BE(romData, romOffset + 4); + const int physStart = BitConverter::ToInt32BE(romData, romOffset + 8); + const int physEnd = BitConverter::ToInt32BE(romData, romOffset + 12); + + const bool compressed = physEnd != 0; + int size = compressed ? physEnd - physStart : virtEnd - virtStart; + + auto outData = std::vector(); + outData.resize(size); + memcpy(outData.data(), romData.data() + physStart, size); + + if (compressed) + { + int decSize = virtEnd - virtStart; + decompressedData = std::vector(); + decompressedData.resize(decSize); + yaz0_decode(outData.data(), decompressedData.data(), decSize); + files[lines[i]] = decompressedData; + } + else + files[lines[i]] = outData; + } + + int bp = 0; +} + +std::vector ZRom::GetFile(std::string fileName) +{ + return files[fileName]; +} diff --git a/ZAPDTR/ZAPD/ZRom.h b/ZAPDTR/ZAPD/ZRom.h new file mode 100644 index 000000000..ae3cac156 --- /dev/null +++ b/ZAPDTR/ZAPD/ZRom.h @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include +#include + +class ZRom +{ +public: + ZRom(std::string romPath); + + std::vector GetFile(std::string fileName); + +protected: + std::vector romData; + std::map> files; +}; + +struct RomVersion +{ + std::string version = "None"; + std::string error = "None"; + std::string listPath = "None"; + int offset; + uint32_t crc; +}; \ No newline at end of file diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetActorCutsceneList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetActorCutsceneList.cpp index 60391a9d1..4c9e8fb5f 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetActorCutsceneList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetActorCutsceneList.cpp @@ -54,7 +54,8 @@ void SetActorCutsceneList::DeclareReferences(const std::string& prefix) std::string SetActorCutsceneList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "ActorCutscene", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "ActorCutscene", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_ACTOR_CUTSCENE_LIST(%i, %s)", cutscenes.size(), listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetActorList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetActorList.cpp index 919d86f57..1cda3c2c6 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetActorList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetActorList.cpp @@ -81,7 +81,8 @@ void SetActorList::DeclareReferencesLate(const std::string& prefix) std::string SetActorList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "ActorEntry", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "ActorEntry", listName, + parent->workerID); if (numActors != actors.size()) { printf("%s: numActors(%i) ~ actors(%li)\n", parent->GetName().c_str(), numActors, diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetAlternateHeaders.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetAlternateHeaders.cpp index 629d4a0b0..a89c2b74d 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetAlternateHeaders.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetAlternateHeaders.cpp @@ -48,7 +48,8 @@ void SetAlternateHeaders::DeclareReferencesLate(const std::string& prefix) for (size_t i = 0; i < headers.size(); i++) { std::string altHeaderName; - Globals::Instance->GetSegmentedPtrName(headers.at(i), parent, "", altHeaderName); + Globals::Instance->GetSegmentedPtrName(headers.at(i), parent, "", altHeaderName, + parent->workerID); declaration += StringHelper::Sprintf("\t%s,", altHeaderName.c_str()); @@ -66,7 +67,8 @@ void SetAlternateHeaders::DeclareReferencesLate(const std::string& prefix) std::string SetAlternateHeaders::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "SceneCmd*", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "SceneCmd*", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_ALTERNATE_HEADER_LIST(%s)", listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.cpp index 0b9a67e0e..73f72136c 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.cpp @@ -33,7 +33,8 @@ void SetAnimatedMaterialList::DeclareReferences(const std::string& prefix) std::string SetAnimatedMaterialList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "AnimatedMaterial", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "AnimatedMaterial", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_ANIMATED_MATERIAL_LIST(%s)", listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetCollisionHeader.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetCollisionHeader.cpp index 03aaa4bbb..4aafb7c70 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetCollisionHeader.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetCollisionHeader.cpp @@ -29,7 +29,8 @@ void SetCollisionHeader::DeclareReferences(const std::string& prefix) std::string SetCollisionHeader::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "CollisionHeader", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "CollisionHeader", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_COL_HEADER(%s)", listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetCsCamera.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetCsCamera.cpp index 5cf0a3d03..577a89cd1 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetCsCamera.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetCsCamera.cpp @@ -71,7 +71,7 @@ void SetCsCamera::DeclareReferences(const std::string& prefix) { std::string camPointsName; Globals::Instance->GetSegmentedPtrName(cameras.at(0).GetCamAddress(), parent, "Vec3s", - camPointsName); + camPointsName, parent->workerID); std::string declaration; size_t index = 0; @@ -103,7 +103,8 @@ void SetCsCamera::DeclareReferences(const std::string& prefix) std::string SetCsCamera::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "CsCameraEntry", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "CsCameraEntry", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_ACTOR_CUTSCENE_CAM_LIST(%i, %s)", cameras.size(), listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetCutscenes.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetCutscenes.cpp index e51e550b0..106f6f680 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetCutscenes.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetCutscenes.cpp @@ -86,7 +86,8 @@ void SetCutscenes::ParseRawData() std::string SetCutscenes::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "CutsceneData", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "CutsceneData", listName, + parent->workerID); if (Globals::Instance->game == ZGame::MM_RETAIL) return StringHelper::Sprintf("SCENE_CMD_CUTSCENE_LIST(%i, %s)", numCutscenes, diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetEntranceList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetEntranceList.cpp index 8099bacf1..aa20102ff 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetEntranceList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetEntranceList.cpp @@ -63,7 +63,8 @@ void SetEntranceList::DeclareReferencesLate([[maybe_unused]] const std::string& std::string SetEntranceList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "EntranceEntry", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "EntranceEntry", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_ENTRANCE_LIST(%s)", listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetExitList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetExitList.cpp index ddc4c5d43..34d2a6e56 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetExitList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetExitList.cpp @@ -58,7 +58,7 @@ void SetExitList::DeclareReferencesLate([[maybe_unused]] const std::string& pref std::string SetExitList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "u16", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "u16", listName, parent->workerID); return StringHelper::Sprintf("SCENE_CMD_EXIT_LIST(%s)", listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetLightList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetLightList.cpp index 2e023ff20..060fce0a2 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetLightList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetLightList.cpp @@ -52,7 +52,8 @@ void SetLightList::DeclareReferences(const std::string& prefix) std::string SetLightList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "LightInfo", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "LightInfo", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_LIGHT_LIST(%i, %s)", numLights, listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetLightingSettings.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetLightingSettings.cpp index 08cd83d14..4824f3f61 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetLightingSettings.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetLightingSettings.cpp @@ -44,7 +44,8 @@ void SetLightingSettings::DeclareReferences(const std::string& prefix) std::string SetLightingSettings::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "LightSettings", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "LightSettings", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_ENV_LIGHT_SETTINGS(%i, %s)", settings.size(), listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetMesh.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetMesh.cpp index ba0bbe2c2..0723fcf14 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetMesh.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetMesh.cpp @@ -78,7 +78,7 @@ std::string SetMesh::GenDListExterns(ZDisplayList* dList) std::string SetMesh::GetBodySourceCode() const { std::string list; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "", list); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "", list, parent->workerID); return StringHelper::Sprintf("SCENE_CMD_MESH(%s)", list.c_str()); } @@ -129,8 +129,8 @@ std::string PolygonDlist::GetBodySourceCode() const std::string bodyStr; std::string opaStr; std::string xluStr; - Globals::Instance->GetSegmentedPtrName(opa, parent, "Gfx", opaStr); - Globals::Instance->GetSegmentedPtrName(xlu, parent, "Gfx", xluStr); + Globals::Instance->GetSegmentedPtrName(opa, parent, "Gfx", opaStr, parent->workerID); + Globals::Instance->GetSegmentedPtrName(xlu, parent, "Gfx", xluStr, parent->workerID); if (polyType == 2) { @@ -294,7 +294,7 @@ std::string BgImage::GetBodySourceCode() const } std::string backgroundName; - Globals::Instance->GetSegmentedPtrName(source, parent, "", backgroundName); + Globals::Instance->GetSegmentedPtrName(source, parent, "", backgroundName, parent->workerID); bodyStr += StringHelper::Sprintf("%s, ", backgroundName.c_str()); bodyStr += "\n "; if (!isSubStruct) @@ -493,7 +493,7 @@ std::string PolygonType1::GetBodySourceCode() const bodyStr += StringHelper::Sprintf("%i, %i, ", type, format); std::string dlistStr; - Globals::Instance->GetSegmentedPtrName(dlist, parent, "", dlistStr); + Globals::Instance->GetSegmentedPtrName(dlist, parent, "", dlistStr, parent->workerID); bodyStr += StringHelper::Sprintf("%s, ", dlistStr.c_str()); bodyStr += "}, \n"; @@ -505,7 +505,7 @@ std::string PolygonType1::GetBodySourceCode() const bodyStr += single.GetBodySourceCode(); break; case 2: - Globals::Instance->GetSegmentedPtrName(list, parent, "BgImage", listStr); + Globals::Instance->GetSegmentedPtrName(list, parent, "BgImage", listStr, parent->workerID); bodyStr += StringHelper::Sprintf(" %i, %s, \n", count, listStr.c_str()); break; @@ -592,7 +592,7 @@ void PolygonType2::DeclareReferences(const std::string& prefix) std::string PolygonType2::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(start, parent, "", listName); + Globals::Instance->GetSegmentedPtrName(start, parent, "", listName, parent->workerID); std::string body = StringHelper::Sprintf("\n %i, %i,\n", type, polyDLists.size()); body += StringHelper::Sprintf(" %s,\n", listName.c_str()); diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetMinimapChests.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetMinimapChests.cpp index ec432b7d9..3e6c72a11 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetMinimapChests.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetMinimapChests.cpp @@ -50,7 +50,8 @@ void SetMinimapChests::DeclareReferences(const std::string& prefix) std::string SetMinimapChests::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "MinimapChest", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "MinimapChest", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_MINIMAP_COMPASS_ICON_INFO(0x%02X, %s)", chests.size(), listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetMinimapList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetMinimapList.cpp index be5d8f15d..255bd4e3a 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetMinimapList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetMinimapList.cpp @@ -52,7 +52,8 @@ void SetMinimapList::DeclareReferences(const std::string& prefix) { std::string listName; - Globals::Instance->GetSegmentedPtrName(listSegmentAddr, parent, "MinimapEntry", listName); + Globals::Instance->GetSegmentedPtrName(listSegmentAddr, parent, "MinimapEntry", listName, + parent->workerID); std::string declaration = StringHelper::Sprintf("\n\t%s, 0x%08X\n", listName.c_str(), unk4); parent->AddDeclaration( @@ -65,7 +66,8 @@ void SetMinimapList::DeclareReferences(const std::string& prefix) std::string SetMinimapList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "MinimapList", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "MinimapList", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_MINIMAP_INFO(%s)", listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetObjectList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetObjectList.cpp index fdd41e6cb..29519d3ce 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetObjectList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetObjectList.cpp @@ -51,7 +51,7 @@ void SetObjectList::DeclareReferences(const std::string& prefix) std::string SetObjectList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "s16", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "s16", listName, parent->workerID); return StringHelper::Sprintf("SCENE_CMD_OBJECT_LIST(%i, %s)", objects.size(), listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetPathways.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetPathways.cpp index 468aad822..f3bdb0872 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetPathways.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetPathways.cpp @@ -50,7 +50,7 @@ void SetPathways::DeclareReferencesLate(const std::string& prefix) std::string SetPathways::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "Path", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "Path", listName, parent->workerID); return StringHelper::Sprintf("SCENE_CMD_PATH_LIST(%s)", listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetRoomList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetRoomList.cpp index 7027fa1f9..a63dd8772 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetRoomList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetRoomList.cpp @@ -34,7 +34,7 @@ void SetRoomList::DeclareReferences(const std::string& prefix) std::string SetRoomList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "RomFile", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "RomFile", listName, parent->workerID); return StringHelper::Sprintf("SCENE_CMD_ROOM_LIST(%i, %s)", romfile->rooms.size(), listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetStartPositionList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetStartPositionList.cpp index f75b5e0d5..32a2b7000 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetStartPositionList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetStartPositionList.cpp @@ -51,7 +51,8 @@ void SetStartPositionList::DeclareReferences(const std::string& prefix) std::string SetStartPositionList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "ActorEntry", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "ActorEntry", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_SPAWN_LIST(%i, %s)", actors.size(), listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZRoom/Commands/SetTransitionActorList.cpp b/ZAPDTR/ZAPD/ZRoom/Commands/SetTransitionActorList.cpp index a33d1c6e1..2414f0d2f 100644 --- a/ZAPDTR/ZAPD/ZRoom/Commands/SetTransitionActorList.cpp +++ b/ZAPDTR/ZAPD/ZRoom/Commands/SetTransitionActorList.cpp @@ -52,7 +52,8 @@ void SetTransitionActorList::DeclareReferences(const std::string& prefix) std::string SetTransitionActorList::GetBodySourceCode() const { std::string listName; - Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "TransitionActorEntry", listName); + Globals::Instance->GetSegmentedPtrName(cmdArg2, parent, "TransitionActorEntry", listName, + parent->workerID); return StringHelper::Sprintf("SCENE_CMD_TRANSITION_ACTOR_LIST(%i, %s)", transitionActors.size(), listName.c_str()); } diff --git a/ZAPDTR/ZAPD/ZSkeleton.cpp b/ZAPDTR/ZAPD/ZSkeleton.cpp index bab1f9111..bff4b8263 100644 --- a/ZAPDTR/ZAPD/ZSkeleton.cpp +++ b/ZAPDTR/ZAPD/ZSkeleton.cpp @@ -89,7 +89,8 @@ void ZSkeleton::DeclareReferences(const std::string& prefix) std::string ZSkeleton::GetBodySourceCode() const { std::string limbArrayName; - Globals::Instance->GetSegmentedPtrName(limbsArrayAddress, parent, "", limbArrayName); + Globals::Instance->GetSegmentedPtrName(limbsArrayAddress, parent, "", limbArrayName, + parent->workerID); switch (type) { @@ -245,7 +246,8 @@ std::string ZLimbTable::GetBodySourceCode() const for (size_t i = 0; i < count; i++) { std::string limbName; - Globals::Instance->GetSegmentedPtrName(limbsAddresses[i], parent, "", limbName); + Globals::Instance->GetSegmentedPtrName(limbsAddresses[i], parent, "", limbName, + parent->workerID); body += StringHelper::Sprintf("\t%s,", limbName.c_str()); if (i + 1 < count) diff --git a/ZAPDTR/ZAPD/ZText.cpp b/ZAPDTR/ZAPD/ZText.cpp index 926761784..58af61bc9 100644 --- a/ZAPDTR/ZAPD/ZText.cpp +++ b/ZAPDTR/ZAPD/ZText.cpp @@ -21,11 +21,12 @@ void ZText::ParseRawData() const auto& rawData = parent->GetRawData(); uint32_t currentPtr = StringHelper::StrToL(registeredAttributes.at("CodeOffset").value, 16); - std::vector codeData = File::ReadAllBytes(Globals::Instance->baseRomPath.string() + "\\code"); + std::vector codeData; - // In some cases with the multi-process extractor it seems that it fails to read the code file if something else is reading from it at the same time. - while (codeData.size() == 0) - codeData = File::ReadAllBytes(Globals::Instance->baseRomPath.string() + "\\code"); + if (Globals::Instance->fileMode == ZFileMode::ExtractDirectory) + codeData = Globals::Instance->GetBaseromFile("code"); + else + codeData = Globals::Instance->GetBaseromFile(Globals::Instance->baseRomPath.string() + "code"); while (true) { diff --git a/ZAPDTR/ZAPD/ZTexture.cpp b/ZAPDTR/ZAPD/ZTexture.cpp index 46d7ce334..24f12702b 100644 --- a/ZAPDTR/ZAPD/ZTexture.cpp +++ b/ZAPDTR/ZAPD/ZTexture.cpp @@ -807,25 +807,30 @@ Declaration* ZTexture::DeclareVar(const std::string& prefix, std::string ZTexture::GetBodySourceCode() const { std::string sourceOutput; - size_t texSizeInc = (dWordAligned) ? 8 : 4; - for (size_t i = 0; i < textureDataRaw.size(); i += texSizeInc) - { - if (i % 32 == 0) - sourceOutput += " "; - if (dWordAligned) - sourceOutput += - StringHelper::Sprintf("0x%016llX, ", BitConverter::ToUInt64BE(textureDataRaw, i)); - else - sourceOutput += - StringHelper::Sprintf("0x%08llX, ", BitConverter::ToUInt32BE(textureDataRaw, i)); - if (i % 32 == 24) - sourceOutput += StringHelper::Sprintf(" // 0x%06X \n", rawDataIndex + ((i / 32) * 32)); - } - // Ensure there's always a trailing line feed to prevent dumb warnings. - // Please don't remove this line, unless you somehow made a way to prevent - // that warning when building the OoT repo. - sourceOutput += "\n"; + if (!Globals::Instance->otrMode) + { + size_t texSizeInc = (dWordAligned) ? 8 : 4; + for (size_t i = 0; i < textureDataRaw.size(); i += texSizeInc) + { + if (i % 32 == 0) + sourceOutput += " "; + if (dWordAligned) + sourceOutput += StringHelper::Sprintf("0x%016llX, ", + BitConverter::ToUInt64BE(textureDataRaw, i)); + else + sourceOutput += StringHelper::Sprintf("0x%08llX, ", + BitConverter::ToUInt32BE(textureDataRaw, i)); + if (i % 32 == 24) + sourceOutput += + StringHelper::Sprintf(" // 0x%06X \n", rawDataIndex + ((i / 32) * 32)); + } + + // Ensure there's always a trailing line feed to prevent dumb warnings. + // Please don't remove this line, unless you somehow made a way to prevent + // that warning when building the OoT repo. + sourceOutput += "\n"; + } return sourceOutput; } @@ -847,8 +852,11 @@ std::string ZTexture::GetSourceTypeName() const void ZTexture::CalcHash() { - auto parentRawData = parent->GetRawData(); - hash = CRC32B(parentRawData.data() + rawDataIndex, GetRawDataSize()); + //if (hash == 0) + { + const auto& parentRawData = parent->GetRawData(); + hash = CRC32B(parentRawData.data() + rawDataIndex, GetRawDataSize()); + } } std::string ZTexture::GetExternalExtension() const diff --git a/ZAPDTR/ZAPD/ZTextureAnimation.cpp b/ZAPDTR/ZAPD/ZTextureAnimation.cpp index 698054fa8..233a54dbb 100644 --- a/ZAPDTR/ZAPD/ZTextureAnimation.cpp +++ b/ZAPDTR/ZAPD/ZTextureAnimation.cpp @@ -349,9 +349,12 @@ std::string TextureColorChangingParams::GetBodySourceCode() const std::string envColorListName; std::string frameDataListName; - Globals::Instance->GetSegmentedPtrName(primColorListAddress, parent, "", primColorListName); - Globals::Instance->GetSegmentedPtrName(envColorListAddress, parent, "", envColorListName); - Globals::Instance->GetSegmentedPtrName(frameDataListAddress, parent, "", frameDataListName); + Globals::Instance->GetSegmentedPtrName(primColorListAddress, parent, "", primColorListName, + parent->workerID); + Globals::Instance->GetSegmentedPtrName(envColorListAddress, parent, "", envColorListName, + parent->workerID); + Globals::Instance->GetSegmentedPtrName(frameDataListAddress, parent, "", frameDataListName, + parent->workerID); std::string bodyStr = StringHelper::Sprintf( "\n %d, %d, %s, %s, %s,\n", animLength, colorListCount, primColorListName.c_str(), @@ -423,7 +426,8 @@ void TextureCyclingParams::DeclareReferences([[maybe_unused]] const std::string& for (const auto& tex : textureList) { - bool texFound = Globals::Instance->GetSegmentedPtrName(tex, parent, "", texName); + bool texFound = + Globals::Instance->GetSegmentedPtrName(tex, parent, "", texName, parent->workerID); // texName is a raw segmented pointer. This occurs if the texture is not declared // separately since we cannot read the format. In theory we could scan DLists for the @@ -477,9 +481,10 @@ std::string TextureCyclingParams::GetBodySourceCode() const std::string textureListName; std::string textureIndexListName; - Globals::Instance->GetSegmentedPtrName(textureListAddress, parent, "", textureListName); + Globals::Instance->GetSegmentedPtrName(textureListAddress, parent, "", textureListName, + parent->workerID); Globals::Instance->GetSegmentedPtrName(textureIndexListAddress, parent, "", - textureIndexListName); + textureIndexListName, parent->workerID); std::string bodyStr = StringHelper::Sprintf( "\n %d, %s, %s,\n", cycleLength, textureListName.c_str(), textureIndexListName.c_str()); @@ -652,7 +657,8 @@ std::string ZTextureAnimation::GetBodySourceCode() const for (const auto& entry : entries) { std::string paramName; - Globals::Instance->GetSegmentedPtrName(entry.paramsPtr, parent, "", paramName); + Globals::Instance->GetSegmentedPtrName(entry.paramsPtr, parent, "", paramName, + parent->workerID); bodyStr += StringHelper::Sprintf("\t{ %d, %d, %s },\n", entry.segment, entry.type, paramName.c_str()); diff --git a/ZAPDTR/ZAPD/ctpl_stl.h b/ZAPDTR/ZAPD/ctpl_stl.h new file mode 100644 index 000000000..8e2d9c908 --- /dev/null +++ b/ZAPDTR/ZAPD/ctpl_stl.h @@ -0,0 +1,251 @@ +/********************************************************* +* +* Copyright (C) 2014 by Vitaliy Vitsentiy +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*********************************************************/ + + +#ifndef __ctpl_stl_thread_pool_H__ +#define __ctpl_stl_thread_pool_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +// thread pool to run user's functors with signature +// ret func(int id, other_params) +// where id is the index of the thread that runs the functor +// ret is some return type + + +namespace ctpl { + + namespace detail { + template + class Queue { + public: + bool push(T const & value) { + std::unique_lock lock(this->mutex); + this->q.push(value); + return true; + } + // deletes the retrieved element, do not use for non integral types + bool pop(T & v) { + std::unique_lock lock(this->mutex); + if (this->q.empty()) + return false; + v = this->q.front(); + this->q.pop(); + return true; + } + bool empty() { + std::unique_lock lock(this->mutex); + return this->q.empty(); + } + private: + std::queue q; + std::mutex mutex; + }; + } + + class thread_pool { + + public: + + thread_pool() { this->init(); } + thread_pool(int nThreads) { this->init(); this->resize(nThreads); } + + // the destructor waits for all the functions in the queue to be finished + ~thread_pool() { + this->stop(true); + } + + // get the number of running threads in the pool + int size() { return static_cast(this->threads.size()); } + + // number of idle threads + int n_idle() { return this->nWaiting; } + std::thread & get_thread(int i) { return *this->threads[i]; } + + // change the number of threads in the pool + // should be called from one thread, otherwise be careful to not interleave, also with this->stop() + // nThreads must be >= 0 + void resize(int nThreads) { + if (!this->isStop && !this->isDone) { + int oldNThreads = static_cast(this->threads.size()); + if (oldNThreads <= nThreads) { // if the number of threads is increased + this->threads.resize(nThreads); + this->flags.resize(nThreads); + + for (int i = oldNThreads; i < nThreads; ++i) { + this->flags[i] = std::make_shared>(false); + this->set_thread(i); + } + } + else { // the number of threads is decreased + for (int i = oldNThreads - 1; i >= nThreads; --i) { + *this->flags[i] = true; // this thread will finish + this->threads[i]->detach(); + } + { + // stop the detached threads that were waiting + std::unique_lock lock(this->mutex); + this->cv.notify_all(); + } + this->threads.resize(nThreads); // safe to delete because the threads are detached + this->flags.resize(nThreads); // safe to delete because the threads have copies of shared_ptr of the flags, not originals + } + } + } + + // empty the queue + void clear_queue() { + std::function * _f; + while (this->q.pop(_f)) + delete _f; // empty the queue + } + + // pops a functional wrapper to the original function + std::function pop() { + std::function * _f = nullptr; + this->q.pop(_f); + std::unique_ptr> func(_f); // at return, delete the function even if an exception occurred + std::function f; + if (_f) + f = *_f; + return f; + } + + // wait for all computing threads to finish and stop all threads + // may be called asynchronously to not pause the calling thread while waiting + // if isWait == true, all the functions in the queue are run, otherwise the queue is cleared without running the functions + void stop(bool isWait = false) { + if (!isWait) { + if (this->isStop) + return; + this->isStop = true; + for (int i = 0, n = this->size(); i < n; ++i) { + *this->flags[i] = true; // command the threads to stop + } + this->clear_queue(); // empty the queue + } + else { + if (this->isDone || this->isStop) + return; + this->isDone = true; // give the waiting threads a command to finish + } + { + std::unique_lock lock(this->mutex); + this->cv.notify_all(); // stop all waiting threads + } + for (int i = 0; i < static_cast(this->threads.size()); ++i) { // wait for the computing threads to finish + if (this->threads[i]->joinable()) + this->threads[i]->join(); + } + // if there were no threads in the pool but some functors in the queue, the functors are not deleted by the threads + // therefore delete them here + this->clear_queue(); + this->threads.clear(); + this->flags.clear(); + } + + template + auto push(F && f, Rest&&... rest) ->std::future { + auto pck = std::make_shared>( + std::bind(std::forward(f), std::placeholders::_1, std::forward(rest)...) + ); + auto _f = new std::function([pck](int id) { + (*pck)(id); + }); + this->q.push(_f); + std::unique_lock lock(this->mutex); + this->cv.notify_one(); + return pck->get_future(); + } + + // run the user's function that excepts argument int - id of the running thread. returned value is templatized + // operator returns std::future, where the user can get the result and rethrow the catched exceptins + template + auto push(F && f) ->std::future { + auto pck = std::make_shared>(std::forward(f)); + auto _f = new std::function([pck](int id) { + (*pck)(id); + }); + this->q.push(_f); + std::unique_lock lock(this->mutex); + this->cv.notify_one(); + return pck->get_future(); + } + + + private: + + // deleted + thread_pool(const thread_pool &);// = delete; + thread_pool(thread_pool &&);// = delete; + thread_pool & operator=(const thread_pool &);// = delete; + thread_pool & operator=(thread_pool &&);// = delete; + + void set_thread(int i) { + std::shared_ptr> flag(this->flags[i]); // a copy of the shared ptr to the flag + auto f = [this, i, flag/* a copy of the shared ptr to the flag */]() { + std::atomic & _flag = *flag; + std::function * _f; + bool isPop = this->q.pop(_f); + while (true) { + while (isPop) { // if there is anything in the queue + std::unique_ptr> func(_f); // at return, delete the function even if an exception occurred + (*_f)(i); + if (_flag) + return; // the thread is wanted to stop, return even if the queue is not empty yet + else + isPop = this->q.pop(_f); + } + // the queue is empty here, wait for the next command + std::unique_lock lock(this->mutex); + ++this->nWaiting; + this->cv.wait(lock, [this, &_f, &isPop, &_flag](){ isPop = this->q.pop(_f); return isPop || this->isDone || _flag; }); + --this->nWaiting; + if (!isPop) + return; // if the queue is empty and this->isDone == true or *flag then return + } + }; + this->threads[i].reset(new std::thread(f)); // compiler may not support std::make_unique() + } + + void init() { this->nWaiting = 0; this->isStop = false; this->isDone = false; } + + std::vector> threads; + std::vector>> flags; + detail::Queue *> q; + std::atomic isDone; + std::atomic isStop; + std::atomic nWaiting; // how many threads are waiting + + std::mutex mutex; + std::condition_variable cv; + }; + +} + +#endif // __ctpl_stl_thread_pool_H__ \ No newline at end of file diff --git a/ZAPDTR/ZAPD/yaz0/readwrite.h b/ZAPDTR/ZAPD/yaz0/readwrite.h new file mode 100644 index 000000000..af3471590 --- /dev/null +++ b/ZAPDTR/ZAPD/yaz0/readwrite.h @@ -0,0 +1,29 @@ +#ifndef __READWRITE_H__ +#define __READWRITE_H__ + +#include + +/* variables */ +union { + uint32_t u; + float f; +} __u32_f32_union__; + +#define U32(x) \ + ((uint32_t)((((uint8_t*)(x))[0] << 24) | (((uint8_t*)(x))[1] << 16) | \ + (((uint8_t*)(x))[2] << 8) | ((uint8_t*)(x))[3])) +#define U16(x) ((uint16_t)(((*((uint8_t*)(x))) << 8) | ((uint8_t*)(x))[1])) +#define U8(x) ((uint8_t)((uint8_t*)(x))[0]) +#define S32(x) ((int32_t)(U32(x))) +#define S16(x) ((int16_t)(U16(x))) +#define F32(x) (((__u32_f32_union__.u = U32(x)) & 0) + __u32_f32_union__.f) + +#define W32(x, v) \ + { \ + *((uint8_t*)x + 3) = ((v)&0xFF); \ + *((uint8_t*)x + 2) = (((v) >> 8) & 0xFF); \ + *((uint8_t*)x + 1) = (((v) >> 16) & 0xFF); \ + *((uint8_t*)x + 0) = (((v) >> 24) & 0xFF); \ + } + +#endif \ No newline at end of file diff --git a/ZAPDTR/ZAPD/yaz0/yaz0.cpp b/ZAPDTR/ZAPD/yaz0/yaz0.cpp new file mode 100644 index 000000000..885f41d1d --- /dev/null +++ b/ZAPDTR/ZAPD/yaz0/yaz0.cpp @@ -0,0 +1,227 @@ +#include +#include +#include +#include +#include +#include "readwrite.h" + +#include "yaz0.h" + +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; + +/* internal declarations */ +int yaz0_encode_internal(const u8* src, int srcSize, u8* Data); + +int yaz0_get_size(u8* src) { return U32(src + 0x4); } + +u32 toDWORD(u32 d) { + u8 w1 = d & 0xFF; + u8 w2 = (d >> 8) & 0xFF; + u8 w3 = (d >> 16) & 0xFF; + u8 w4 = d >> 24; + return (w1 << 24) | (w2 << 16) | (w3 << 8) | w4; +} + +// simple and straight encoding scheme for Yaz0 +u32 longest_match_brute(const u8* src, int size, int pos, u32* pMatchPos) { + int startPos = pos - 0x1000; + int max_match_size = size - pos; + u32 best_match_size = 0; + u32 best_match_pos = 0; + + if (max_match_size < 3) return 0; + + if (startPos < 0) startPos = 0; + + if (max_match_size > 0x111) max_match_size = 0x111; + + for (int i = startPos; i < pos; i++) { + int current_size; + for (current_size = 0; current_size < max_match_size; current_size++) { + if (src[i + current_size] != src[pos + current_size]) { + break; + } + } + if (current_size > best_match_size) { + best_match_size = current_size; + best_match_pos = i; + if (best_match_size == 0x111) break; + } + } + *pMatchPos = best_match_pos; + return best_match_size; +} + +u32 longest_match_rabinkarp(const u8* src, int size, int pos, u32* match_pos) { + int startPos = pos - 0x1000; + int max_match_size = size - pos; + u32 best_match_size = 0; + u32 best_match_pos = 0; + + if (max_match_size < 3) return 0; + + if (startPos < 0) startPos = 0; + + if (max_match_size > 0x111) max_match_size = 0x111; + + int find_hash = src[pos] << 16 | src[pos + 1] << 8 | src[pos + 2]; + int current_hash = src[startPos] << 16 | src[startPos + 1] << 8 | src[startPos + 2]; + + for (int i = startPos; i < pos; i++) { + if(current_hash == find_hash) { + int current_size; + for (current_size = 3; current_size < max_match_size; current_size++) { + if (src[i + current_size] != src[pos + current_size]) { + break; + } + } + if (current_size > best_match_size) { + best_match_size = current_size; + best_match_pos = i; + if (best_match_size == 0x111) break; + } + } + current_hash = (current_hash << 8 | src[i + 3]) & 0xFFFFFF; + } + *match_pos = best_match_pos; + + return best_match_size; +} + +int yaz0_encode_internal(const u8* src, int srcSize, u8* Data) { + int srcPos = 0; + + int bitmask = 0x80; + u8 currCodeByte = 0; + int currCodeBytePos = 0; + int pos = currCodeBytePos + 1; + + while (srcPos < srcSize) { + u32 numBytes; + u32 matchPos; + + numBytes = longest_match_rabinkarp(src, srcSize, srcPos, &matchPos); + //fprintf(stderr, "pos %x len %x pos %x\n", srcPos, (int)numBytes, (int)matchPos); + if (numBytes < 3) { + //fprintf(stderr, "single byte %02x\n", src[srcPos]); + Data[pos++] = src[srcPos++]; + currCodeByte |= bitmask; + } else { + // RLE part + u32 dist = srcPos - matchPos - 1; + + if (numBytes >= 0x12) // 3 byte encoding + { + Data[pos++] = dist >> 8; // 0R + Data[pos++] = dist & 0xFF; // FF + if (numBytes > 0xFF + 0x12) numBytes = 0xFF + 0x12; + Data[pos++] = numBytes - 0x12; + } else // 2 byte encoding + { + Data[pos++] = ((numBytes - 2) << 4) | (dist >> 8); + Data[pos++] = dist & 0xFF; + } + srcPos += numBytes; + } + bitmask >>= 1; + // write eight codes + if (!bitmask) { + Data[currCodeBytePos] = currCodeByte; + currCodeBytePos = pos++; + + currCodeByte = 0; + bitmask = 0x80; + } + } + if (bitmask) { + Data[currCodeBytePos] = currCodeByte; + } + + return pos; +} + +std::vector yaz0_encode_fast(const u8* src, int src_size) { + std::vector buffer; + std::vector> lut; + lut.resize(0x1000000); + + for (int i = 0; i < src_size - 3; ++i) { + lut[src[i + 0] << 16 | src[i + 1] << 8 | src[i + 2]].push_back(i); + } + + return buffer; +} + +std::vector yaz0_encode(const u8* src, int src_size) { + std::vector buffer(src_size * 10 / 8 + 16); + u8* dst = buffer.data(); + + // write 4 bytes yaz0 header + memcpy(dst, "Yaz0", 4); + + // write 4 bytes uncompressed size + W32(dst + 4, src_size); + + // encode + int dst_size = yaz0_encode_internal(src, src_size, dst + 16); + int aligned_size = (dst_size + 31) & -16; + buffer.resize(aligned_size); + +#if 0 + std::vector decompressed(src_size); + yaz0_decode(buffer.data(), decompressed.data(), src_size); + if(memcmp(src, decompressed.data(), src_size)) { + fprintf(stderr, "Decompressed buffer is different from original\n"); + } +#endif + + return buffer; +} + +void yaz0_decode(const uint8_t* source, uint8_t* decomp, int32_t decompSize) { + uint32_t srcPlace = 0, dstPlace = 0; + uint32_t i, dist, copyPlace, numBytes; + uint8_t codeByte, byte1, byte2; + uint8_t bitCount = 0; + + source += 0x10; + while (dstPlace < decompSize) { + /* If there are no more bits to test, get a new byte */ + if (!bitCount) { + codeByte = source[srcPlace++]; + bitCount = 8; + } + + /* If bit 7 is a 1, just copy 1 byte from source to destination */ + /* Else do some decoding */ + if (codeByte & 0x80) { + decomp[dstPlace++] = source[srcPlace++]; + } else { + /* Get 2 bytes from source */ + byte1 = source[srcPlace++]; + byte2 = source[srcPlace++]; + + /* Calculate distance to move in destination */ + /* And the number of bytes to copy */ + dist = ((byte1 & 0xF) << 8) | byte2; + copyPlace = dstPlace - (dist + 1); + numBytes = byte1 >> 4; + + /* Do more calculations on the number of bytes to copy */ + if (!numBytes) + numBytes = source[srcPlace++] + 0x12; + else + numBytes += 2; + + /* Copy data from a previous point in destination */ + /* to current point in destination */ + for (i = 0; i < numBytes; i++) decomp[dstPlace++] = decomp[copyPlace++]; + } + + /* Set up for the next read cycle */ + codeByte = codeByte << 1; + bitCount--; + } +} \ No newline at end of file diff --git a/ZAPDTR/ZAPD/yaz0/yaz0.h b/ZAPDTR/ZAPD/yaz0/yaz0.h new file mode 100644 index 000000000..0d5cc3cfd --- /dev/null +++ b/ZAPDTR/ZAPD/yaz0/yaz0.h @@ -0,0 +1,6 @@ +#pragma once + +#include + +void yaz0_decode(const uint8_t* src, uint8_t* dest, int32_t destsize); +std::vector yaz0_encode(const uint8_t* src, int src_size); \ No newline at end of file diff --git a/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj b/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj index dd49779dc..b74fe75f9 100644 --- a/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj +++ b/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj @@ -72,15 +72,27 @@ true + MinimumRecommendedRules.ruleset + + false + MinimumRecommendedRules.ruleset + + true + MinimumRecommendedRules.ruleset + + false + MinimumRecommendedRules.ruleset + + @@ -174,6 +186,12 @@ + + + {02d10590-9542-3f55-aaf8-6055677e2a2a} + false + + diff --git a/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj.filters b/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj.filters index 218084e6d..3c46d19fe 100644 --- a/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj.filters +++ b/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj.filters @@ -12,14 +12,14 @@ {d8c2c1e7-b065-4b0f-86a2-46ab46eedc0b} - + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - + {e047919d-7186-49ca-b115-e48fbb5c8743} - + {3de9dd46-0dfd-4d48-9f20-9f24e5b80fe0} @@ -69,19 +69,19 @@ - Header Files\Source Files\Utils + Source Files\Utils - Header Files\Source Files\Utils + Source Files\Utils - Header Files\Source Files\Utils + Source Files\Utils - Header Files\Source Files\Libraries + Source Files\Libraries - Header Files\Source Files\Utils + Source Files\Utils \ No newline at end of file diff --git a/ZAPDTR/lib/libgfxd/priv.h b/ZAPDTR/lib/libgfxd/priv.h index 37cb66b68..34d96f675 100644 --- a/ZAPDTR/lib/libgfxd/priv.h +++ b/ZAPDTR/lib/libgfxd/priv.h @@ -2,6 +2,8 @@ #define GFXD_PRIV_H #include "gfxd.h" +#define CONFIG_MT + #ifdef CONFIG_MT # ifdef _MSC_VER # define TLOCAL __declspec(thread) @@ -9,7 +11,7 @@ # define TLOCAL _Thread_local # endif #else -# define TLOCAL +#define TLOCAL #endif #define UCFUNC static inline diff --git a/libultraship/libultraship/GameVersions.h b/libultraship/libultraship/GameVersions.h new file mode 100644 index 000000000..a25463bf4 --- /dev/null +++ b/libultraship/libultraship/GameVersions.h @@ -0,0 +1,20 @@ +#pragma once + +#define OOT_NTSC_10 0xEC7011B7 +#define OOT_NTSC_11 0xD43DA81F +#define OOT_NTSC_12 0x693BA2AE +#define OOT_PAL_10 0xB044B569 +#define OOT_PAL_11 0xB2055FBD +#define OOT_NTSC_JP_GC_CE 0xF7F52DB8 +#define OOT_NTSC_JP_GC 0xF611F4BA +#define OOT_NTSC_US_GC 0xF3DD35BA +#define OOT_PAL_GC 0x09465AC3 +#define OOT_NTSC_JP_MQ 0xF43B45BA +#define OOT_NTSC_US_MQ 0xF034001A +#define OOT_PAL_MQ 0x1D4136F3 +#define OOT_PAL_GC_DBG1 0x871E1C92 // 03-21-2002 build +#define OOT_PAL_GC_DBG2 0x87121EFE // 03-13-2002 build +#define OOT_PAL_GC_MQ_DBG 0x917D18F6 +#define OOT_IQUE_TW 0x3D81FB3E +#define OOT_IQUE_CN 0xB1E1E07B +#define OOT_UNKNOWN 0xFFFFFFFF \ No newline at end of file diff --git a/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp b/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp index 3f7bd7f9b..5739774ee 100644 --- a/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp +++ b/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp @@ -2381,12 +2381,14 @@ static void gfx_run_dl(Gfx* cmd) { cmd++; uint64_t hash = ((uint64_t)cmd->words.w0 << 32) + (uint64_t)cmd->words.w1; ResourceMgr_GetNameByCRC(hash, fileName); + + +#if _DEBUG && 0 char* tex = ResourceMgr_LoadTexByCRC(hash); - - -#if _DEBUG - //ResourceMgr_GetNameByCRC(hash, fileName); - //printf("G_SETTIMG_OTR: %s, %08X\n", fileName, hash); + ResourceMgr_GetNameByCRC(hash, fileName); + printf("G_SETTIMG_OTR: %s, %08X\n", fileName, hash); +#else + char* tex = NULL; #endif if (addr != NULL) diff --git a/libultraship/libultraship/Lib/Fast3D/gfx_pc.h b/libultraship/libultraship/Lib/Fast3D/gfx_pc.h index 2e6a5a2a0..b3b8d9082 100644 --- a/libultraship/libultraship/Lib/Fast3D/gfx_pc.h +++ b/libultraship/libultraship/Lib/Fast3D/gfx_pc.h @@ -21,7 +21,7 @@ struct TextureCacheKey { uint8_t palette_index; bool operator==(const TextureCacheKey&) const noexcept = default; - + struct Hasher { size_t operator()(const TextureCacheKey& key) const noexcept { uintptr_t addr = (uintptr_t)key.texture_addr; diff --git a/libultraship/libultraship/ResourceMgr.cpp b/libultraship/libultraship/ResourceMgr.cpp index 6c8b1a10c..e6f3c8a0a 100644 --- a/libultraship/libultraship/ResourceMgr.cpp +++ b/libultraship/libultraship/ResourceMgr.cpp @@ -3,6 +3,7 @@ #include "spdlog/spdlog.h" #include "File.h" #include "Archive.h" +#include "GameVersions.h" #include #include "Lib/StormLib/StormLib.h" @@ -11,6 +12,8 @@ namespace Ship { ResourceMgr::ResourceMgr(std::shared_ptr Context, std::string MainPath, std::string PatchesPath) : Context(Context), bIsRunning(false), FileLoadThread(nullptr) { OTR = std::make_shared(MainPath, PatchesPath, false); + gameVersion = OOT_UNKNOWN; + if (OTR->IsMainMPQValid()) Start(); } @@ -86,7 +89,10 @@ namespace Ship { OTR->LoadFile(ToLoad->path, true, ToLoad); //Lock.lock(); - FileCache[ToLoad->path] = ToLoad->bIsLoaded && !ToLoad->bHasLoadError ? ToLoad : nullptr; + + if (!ToLoad->bHasLoadError) + FileCache[ToLoad->path] = ToLoad->bIsLoaded && !ToLoad->bHasLoadError ? ToLoad : nullptr; + //Lock.unlock(); SPDLOG_DEBUG("Loaded File {} on ResourceMgr thread", ToLoad->path); @@ -124,44 +130,62 @@ namespace Ship { } } - auto UnmanagedRes = ResourceLoader::LoadResource(ToLoad->File); - - if (UnmanagedRes != nullptr) + if (!ToLoad->File->bHasLoadError) { - UnmanagedRes->resMgr = this; - auto Res = std::shared_ptr(UnmanagedRes); + auto UnmanagedRes = ResourceLoader::LoadResource(ToLoad->File); - if (Res != nullptr) { - std::unique_lock Lock(ToLoad->ResourceLoadMutex); + if (UnmanagedRes != nullptr) + { + UnmanagedRes->resMgr = this; + auto Res = std::shared_ptr(UnmanagedRes); - ToLoad->bHasResourceLoaded = true; - ToLoad->Resource = Res; - ResourceCache[Res->file->path] = Res; + if (Res != nullptr) { + std::unique_lock Lock(ToLoad->ResourceLoadMutex); - SPDLOG_DEBUG("Loaded Resource {} on ResourceMgr thread", ToLoad->File->path); + ToLoad->bHasResourceLoaded = true; + ToLoad->Resource = Res; + ResourceCache[Res->file->path] = Res; - // Disabled for now because it can cause random crashes - //FileCache[Res->File->path] = nullptr; - //FileCache.erase(FileCache.find(Res->File->path)); - Res->file = nullptr; + SPDLOG_DEBUG("Loaded Resource {} on ResourceMgr thread", ToLoad->File->path); + + // Disabled for now because it can cause random crashes + //FileCache[Res->File->path] = nullptr; + //FileCache.erase(FileCache.find(Res->File->path)); + Res->file = nullptr; + } + else { + ToLoad->bHasResourceLoaded = false; + ToLoad->Resource = nullptr; + + SPDLOG_ERROR("Resource load FAILED {} on ResourceMgr thread", ToLoad->File->path); + } + + //ResLock.lock(); + //ResLock.unlock(); } - else { - ToLoad->bHasResourceLoaded = false; - ToLoad->Resource = nullptr; - - SPDLOG_ERROR("Resource load FAILED {} on ResourceMgr thread", ToLoad->File->path); - } - - //ResLock.lock(); - //ResLock.unlock(); - - ToLoad->ResourceLoadNotifier.notify_all(); } + else + { + ToLoad->bHasResourceLoaded = false; + ToLoad->Resource = nullptr; + } + + ToLoad->ResourceLoadNotifier.notify_all(); } SPDLOG_INFO("Resource Manager LoadResourceThread ended"); } + uint32_t ResourceMgr::GetGameVersion() + { + return gameVersion; + } + + void ResourceMgr::SetGameVersion(uint32_t newGameVersion) + { + gameVersion = newGameVersion; + } + std::shared_ptr ResourceMgr::LoadFileAsync(std::string FilePath) { const std::lock_guard Lock(FileLoadMutex); // File NOT already loaded...? @@ -232,9 +256,16 @@ namespace Ship { std::shared_ptr FileData = LoadFile(FilePath); Promise->File = FileData; - Promise->bHasResourceLoaded = false; - ResourceLoadQueue.push(Promise); - ResourceLoadNotifier.notify_all(); + if (Promise->File->bHasLoadError) + { + Promise->bHasResourceLoaded = true; + } + else + { + Promise->bHasResourceLoaded = false; + ResourceLoadQueue.push(Promise); + ResourceLoadNotifier.notify_all(); + } } else { Promise->bHasResourceLoaded = true; Promise->Resource = resCacheFind->second; diff --git a/libultraship/libultraship/ResourceMgr.h b/libultraship/libultraship/ResourceMgr.h index 86e0cc268..5eae61abe 100644 --- a/libultraship/libultraship/ResourceMgr.h +++ b/libultraship/libultraship/ResourceMgr.h @@ -29,6 +29,8 @@ namespace Ship void InvalidateResourceCache(); + uint32_t GetGameVersion(); + void SetGameVersion(uint32_t newGameVersion); std::shared_ptr LoadFileAsync(std::string FilePath); std::shared_ptr LoadFile(std::string FilePath); std::shared_ptr GetCachedFile(std::string FilePath); @@ -58,5 +60,6 @@ namespace Ship std::condition_variable FileLoadNotifier; std::condition_variable ResourceLoadNotifier; volatile bool bIsRunning; + uint32_t gameVersion; }; } \ No newline at end of file diff --git a/libultraship/libultraship/libultraship.vcxproj b/libultraship/libultraship/libultraship.vcxproj index 8443b6b11..3bf81a67d 100644 --- a/libultraship/libultraship/libultraship.vcxproj +++ b/libultraship/libultraship/libultraship.vcxproj @@ -101,31 +101,49 @@ true $(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\libjpeg\include;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath) $(ProjectDir)Lib\SDL\lib\x86;$(LibraryPath) + MinimumRecommendedRules.ruleset + + true $(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\libjpeg\include;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath) $(ProjectDir)Lib\SDL\lib\x86;$(LibraryPath) + MinimumRecommendedRules.ruleset + + false $(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath) $(ProjectDir)Lib\SDL\lib\x86;$(LibraryPath) + MinimumRecommendedRules.ruleset + + true $(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath) $(ProjectDir)Lib\SDL\lib\x64;$(LibraryPath) + MinimumRecommendedRules.ruleset + + true $(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath) $(ProjectDir)Lib\SDL\lib\x64;$(LibraryPath) + MinimumRecommendedRules.ruleset + + false $(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath) $(ProjectDir)Lib\SDL\lib\x64;$(LibraryPath) + MinimumRecommendedRules.ruleset + + @@ -326,6 +344,7 @@ + @@ -416,6 +435,12 @@ + + + {02d10590-9542-3f55-aaf8-6055677e2a2a} + false + + diff --git a/libultraship/libultraship/libultraship.vcxproj.filters b/libultraship/libultraship/libultraship.vcxproj.filters index deed867c8..5079d826e 100644 --- a/libultraship/libultraship/libultraship.vcxproj.filters +++ b/libultraship/libultraship/libultraship.vcxproj.filters @@ -626,5 +626,8 @@ Source Files\CustomImpl + + Source Files\Resources + \ No newline at end of file diff --git a/soh/assets/xml/code/fbdemo_circle.xml b/soh/assets/xml/GC_NMQ_D/code/fbdemo_circle.xml similarity index 100% rename from soh/assets/xml/code/fbdemo_circle.xml rename to soh/assets/xml/GC_NMQ_D/code/fbdemo_circle.xml diff --git a/soh/assets/xml/code/fbdemo_triforce.xml b/soh/assets/xml/GC_NMQ_D/code/fbdemo_triforce.xml similarity index 100% rename from soh/assets/xml/code/fbdemo_triforce.xml rename to soh/assets/xml/GC_NMQ_D/code/fbdemo_triforce.xml diff --git a/soh/assets/xml/code/fbdemo_wipe1.xml b/soh/assets/xml/GC_NMQ_D/code/fbdemo_wipe1.xml similarity index 100% rename from soh/assets/xml/code/fbdemo_wipe1.xml rename to soh/assets/xml/GC_NMQ_D/code/fbdemo_wipe1.xml diff --git a/soh/assets/xml/misc/link_animetion.xml b/soh/assets/xml/GC_NMQ_D/misc/link_animetion.xml similarity index 100% rename from soh/assets/xml/misc/link_animetion.xml rename to soh/assets/xml/GC_NMQ_D/misc/link_animetion.xml diff --git a/soh/assets/xml/objects/gameplay_dangeon_keep.xml b/soh/assets/xml/GC_NMQ_D/objects/gameplay_dangeon_keep.xml similarity index 100% rename from soh/assets/xml/objects/gameplay_dangeon_keep.xml rename to soh/assets/xml/GC_NMQ_D/objects/gameplay_dangeon_keep.xml diff --git a/soh/assets/xml/objects/gameplay_field_keep.xml b/soh/assets/xml/GC_NMQ_D/objects/gameplay_field_keep.xml similarity index 100% rename from soh/assets/xml/objects/gameplay_field_keep.xml rename to soh/assets/xml/GC_NMQ_D/objects/gameplay_field_keep.xml diff --git a/soh/assets/xml/objects/gameplay_keep.xml b/soh/assets/xml/GC_NMQ_D/objects/gameplay_keep.xml similarity index 100% rename from soh/assets/xml/objects/gameplay_keep.xml rename to soh/assets/xml/GC_NMQ_D/objects/gameplay_keep.xml diff --git a/soh/assets/xml/objects/object_Bb.xml b/soh/assets/xml/GC_NMQ_D/objects/object_Bb.xml similarity index 100% rename from soh/assets/xml/objects/object_Bb.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_Bb.xml diff --git a/soh/assets/xml/objects/object_ahg.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ahg.xml similarity index 100% rename from soh/assets/xml/objects/object_ahg.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ahg.xml diff --git a/soh/assets/xml/objects/object_am.xml b/soh/assets/xml/GC_NMQ_D/objects/object_am.xml similarity index 100% rename from soh/assets/xml/objects/object_am.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_am.xml diff --git a/soh/assets/xml/objects/object_ane.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ane.xml similarity index 100% rename from soh/assets/xml/objects/object_ane.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ane.xml diff --git a/soh/assets/xml/objects/object_ani.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ani.xml similarity index 100% rename from soh/assets/xml/objects/object_ani.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ani.xml diff --git a/soh/assets/xml/objects/object_anubice.xml b/soh/assets/xml/GC_NMQ_D/objects/object_anubice.xml similarity index 100% rename from soh/assets/xml/objects/object_anubice.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_anubice.xml diff --git a/soh/assets/xml/objects/object_aob.xml b/soh/assets/xml/GC_NMQ_D/objects/object_aob.xml similarity index 100% rename from soh/assets/xml/objects/object_aob.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_aob.xml diff --git a/soh/assets/xml/objects/object_b_heart.xml b/soh/assets/xml/GC_NMQ_D/objects/object_b_heart.xml similarity index 100% rename from soh/assets/xml/objects/object_b_heart.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_b_heart.xml diff --git a/soh/assets/xml/objects/object_bba.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bba.xml similarity index 100% rename from soh/assets/xml/objects/object_bba.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bba.xml diff --git a/soh/assets/xml/objects/object_bdan_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bdan_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_bdan_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bdan_objects.xml diff --git a/soh/assets/xml/objects/object_bdoor.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bdoor.xml similarity index 100% rename from soh/assets/xml/objects/object_bdoor.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bdoor.xml diff --git a/soh/assets/xml/objects/object_bg.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bg.xml similarity index 100% rename from soh/assets/xml/objects/object_bg.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bg.xml diff --git a/soh/assets/xml/objects/object_bigokuta.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bigokuta.xml similarity index 100% rename from soh/assets/xml/objects/object_bigokuta.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bigokuta.xml diff --git a/soh/assets/xml/objects/object_bird.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bird.xml similarity index 100% rename from soh/assets/xml/objects/object_bird.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bird.xml diff --git a/soh/assets/xml/objects/object_bji.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bji.xml similarity index 100% rename from soh/assets/xml/objects/object_bji.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bji.xml diff --git a/soh/assets/xml/objects/object_bl.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bl.xml similarity index 100% rename from soh/assets/xml/objects/object_bl.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bl.xml diff --git a/soh/assets/xml/objects/object_blkobj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_blkobj.xml similarity index 100% rename from soh/assets/xml/objects/object_blkobj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_blkobj.xml diff --git a/soh/assets/xml/objects/object_bob.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bob.xml similarity index 100% rename from soh/assets/xml/objects/object_bob.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bob.xml diff --git a/soh/assets/xml/objects/object_boj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_boj.xml similarity index 100% rename from soh/assets/xml/objects/object_boj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_boj.xml diff --git a/soh/assets/xml/objects/object_bombf.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bombf.xml similarity index 100% rename from soh/assets/xml/objects/object_bombf.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bombf.xml diff --git a/soh/assets/xml/objects/object_bombiwa.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bombiwa.xml similarity index 100% rename from soh/assets/xml/objects/object_bombiwa.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bombiwa.xml diff --git a/soh/assets/xml/objects/object_bowl.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bowl.xml similarity index 100% rename from soh/assets/xml/objects/object_bowl.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bowl.xml diff --git a/soh/assets/xml/objects/object_box.xml b/soh/assets/xml/GC_NMQ_D/objects/object_box.xml similarity index 100% rename from soh/assets/xml/objects/object_box.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_box.xml diff --git a/soh/assets/xml/objects/object_brob.xml b/soh/assets/xml/GC_NMQ_D/objects/object_brob.xml similarity index 100% rename from soh/assets/xml/objects/object_brob.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_brob.xml diff --git a/soh/assets/xml/objects/object_bubble.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bubble.xml similarity index 100% rename from soh/assets/xml/objects/object_bubble.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bubble.xml diff --git a/soh/assets/xml/objects/object_bv.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bv.xml similarity index 100% rename from soh/assets/xml/objects/object_bv.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bv.xml diff --git a/soh/assets/xml/objects/object_bw.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bw.xml similarity index 100% rename from soh/assets/xml/objects/object_bw.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bw.xml diff --git a/soh/assets/xml/objects/object_bwall.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bwall.xml similarity index 100% rename from soh/assets/xml/objects/object_bwall.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bwall.xml diff --git a/soh/assets/xml/objects/object_bxa.xml b/soh/assets/xml/GC_NMQ_D/objects/object_bxa.xml similarity index 100% rename from soh/assets/xml/objects/object_bxa.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_bxa.xml diff --git a/soh/assets/xml/objects/object_cne.xml b/soh/assets/xml/GC_NMQ_D/objects/object_cne.xml similarity index 100% rename from soh/assets/xml/objects/object_cne.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_cne.xml diff --git a/soh/assets/xml/objects/object_cob.xml b/soh/assets/xml/GC_NMQ_D/objects/object_cob.xml similarity index 100% rename from soh/assets/xml/objects/object_cob.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_cob.xml diff --git a/soh/assets/xml/objects/object_cow.xml b/soh/assets/xml/GC_NMQ_D/objects/object_cow.xml similarity index 100% rename from soh/assets/xml/objects/object_cow.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_cow.xml diff --git a/soh/assets/xml/objects/object_crow.xml b/soh/assets/xml/GC_NMQ_D/objects/object_crow.xml similarity index 100% rename from soh/assets/xml/objects/object_crow.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_crow.xml diff --git a/soh/assets/xml/objects/object_cs.xml b/soh/assets/xml/GC_NMQ_D/objects/object_cs.xml similarity index 100% rename from soh/assets/xml/objects/object_cs.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_cs.xml diff --git a/soh/assets/xml/objects/object_d_elevator.xml b/soh/assets/xml/GC_NMQ_D/objects/object_d_elevator.xml similarity index 100% rename from soh/assets/xml/objects/object_d_elevator.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_d_elevator.xml diff --git a/soh/assets/xml/objects/object_d_hsblock.xml b/soh/assets/xml/GC_NMQ_D/objects/object_d_hsblock.xml similarity index 100% rename from soh/assets/xml/objects/object_d_hsblock.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_d_hsblock.xml diff --git a/soh/assets/xml/objects/object_d_lift.xml b/soh/assets/xml/GC_NMQ_D/objects/object_d_lift.xml similarity index 100% rename from soh/assets/xml/objects/object_d_lift.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_d_lift.xml diff --git a/soh/assets/xml/objects/object_daiku.xml b/soh/assets/xml/GC_NMQ_D/objects/object_daiku.xml similarity index 100% rename from soh/assets/xml/objects/object_daiku.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_daiku.xml diff --git a/soh/assets/xml/objects/object_ddan_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ddan_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_ddan_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ddan_objects.xml diff --git a/soh/assets/xml/objects/object_dekubaba.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dekubaba.xml similarity index 100% rename from soh/assets/xml/objects/object_dekubaba.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dekubaba.xml diff --git a/soh/assets/xml/objects/object_dekujr.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dekujr.xml similarity index 100% rename from soh/assets/xml/objects/object_dekujr.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dekujr.xml diff --git a/soh/assets/xml/objects/object_dekunuts.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dekunuts.xml similarity index 100% rename from soh/assets/xml/objects/object_dekunuts.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dekunuts.xml diff --git a/soh/assets/xml/objects/object_demo_6k.xml b/soh/assets/xml/GC_NMQ_D/objects/object_demo_6k.xml similarity index 100% rename from soh/assets/xml/objects/object_demo_6k.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_demo_6k.xml diff --git a/soh/assets/xml/objects/object_demo_kekkai.xml b/soh/assets/xml/GC_NMQ_D/objects/object_demo_kekkai.xml similarity index 100% rename from soh/assets/xml/objects/object_demo_kekkai.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_demo_kekkai.xml diff --git a/soh/assets/xml/objects/object_demo_tre_lgt.xml b/soh/assets/xml/GC_NMQ_D/objects/object_demo_tre_lgt.xml similarity index 100% rename from soh/assets/xml/objects/object_demo_tre_lgt.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_demo_tre_lgt.xml diff --git a/soh/assets/xml/objects/object_dh.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dh.xml similarity index 100% rename from soh/assets/xml/objects/object_dh.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dh.xml diff --git a/soh/assets/xml/objects/object_dnk.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dnk.xml similarity index 100% rename from soh/assets/xml/objects/object_dnk.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dnk.xml diff --git a/soh/assets/xml/objects/object_dns.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dns.xml similarity index 100% rename from soh/assets/xml/objects/object_dns.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dns.xml diff --git a/soh/assets/xml/objects/object_dodojr.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dodojr.xml similarity index 100% rename from soh/assets/xml/objects/object_dodojr.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dodojr.xml diff --git a/soh/assets/xml/objects/object_dodongo.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dodongo.xml similarity index 100% rename from soh/assets/xml/objects/object_dodongo.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dodongo.xml diff --git a/soh/assets/xml/objects/object_dog.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dog.xml similarity index 100% rename from soh/assets/xml/objects/object_dog.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dog.xml diff --git a/soh/assets/xml/objects/object_door_gerudo.xml b/soh/assets/xml/GC_NMQ_D/objects/object_door_gerudo.xml similarity index 100% rename from soh/assets/xml/objects/object_door_gerudo.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_door_gerudo.xml diff --git a/soh/assets/xml/objects/object_door_killer.xml b/soh/assets/xml/GC_NMQ_D/objects/object_door_killer.xml similarity index 100% rename from soh/assets/xml/objects/object_door_killer.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_door_killer.xml diff --git a/soh/assets/xml/objects/object_ds.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ds.xml similarity index 100% rename from soh/assets/xml/objects/object_ds.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ds.xml diff --git a/soh/assets/xml/objects/object_ds2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ds2.xml similarity index 100% rename from soh/assets/xml/objects/object_ds2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ds2.xml diff --git a/soh/assets/xml/objects/object_du.xml b/soh/assets/xml/GC_NMQ_D/objects/object_du.xml similarity index 100% rename from soh/assets/xml/objects/object_du.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_du.xml diff --git a/soh/assets/xml/objects/object_dy_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_dy_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_dy_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_dy_obj.xml diff --git a/soh/assets/xml/objects/object_ec.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ec.xml similarity index 100% rename from soh/assets/xml/objects/object_ec.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ec.xml diff --git a/soh/assets/xml/objects/object_efc_crystal_light.xml b/soh/assets/xml/GC_NMQ_D/objects/object_efc_crystal_light.xml similarity index 100% rename from soh/assets/xml/objects/object_efc_crystal_light.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_efc_crystal_light.xml diff --git a/soh/assets/xml/objects/object_efc_doughnut.xml b/soh/assets/xml/GC_NMQ_D/objects/object_efc_doughnut.xml similarity index 100% rename from soh/assets/xml/objects/object_efc_doughnut.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_efc_doughnut.xml diff --git a/soh/assets/xml/objects/object_efc_erupc.xml b/soh/assets/xml/GC_NMQ_D/objects/object_efc_erupc.xml similarity index 100% rename from soh/assets/xml/objects/object_efc_erupc.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_efc_erupc.xml diff --git a/soh/assets/xml/objects/object_efc_fire_ball.xml b/soh/assets/xml/GC_NMQ_D/objects/object_efc_fire_ball.xml similarity index 100% rename from soh/assets/xml/objects/object_efc_fire_ball.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_efc_fire_ball.xml diff --git a/soh/assets/xml/objects/object_efc_flash.xml b/soh/assets/xml/GC_NMQ_D/objects/object_efc_flash.xml similarity index 100% rename from soh/assets/xml/objects/object_efc_flash.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_efc_flash.xml diff --git a/soh/assets/xml/objects/object_efc_lgt_shower.xml b/soh/assets/xml/GC_NMQ_D/objects/object_efc_lgt_shower.xml similarity index 100% rename from soh/assets/xml/objects/object_efc_lgt_shower.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_efc_lgt_shower.xml diff --git a/soh/assets/xml/objects/object_efc_star_field.xml b/soh/assets/xml/GC_NMQ_D/objects/object_efc_star_field.xml similarity index 100% rename from soh/assets/xml/objects/object_efc_star_field.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_efc_star_field.xml diff --git a/soh/assets/xml/objects/object_efc_tw.xml b/soh/assets/xml/GC_NMQ_D/objects/object_efc_tw.xml similarity index 100% rename from soh/assets/xml/objects/object_efc_tw.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_efc_tw.xml diff --git a/soh/assets/xml/objects/object_ei.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ei.xml similarity index 100% rename from soh/assets/xml/objects/object_ei.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ei.xml diff --git a/soh/assets/xml/objects/object_fa.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fa.xml similarity index 100% rename from soh/assets/xml/objects/object_fa.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fa.xml diff --git a/soh/assets/xml/objects/object_fd.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fd.xml similarity index 100% rename from soh/assets/xml/objects/object_fd.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fd.xml diff --git a/soh/assets/xml/objects/object_fd2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fd2.xml similarity index 100% rename from soh/assets/xml/objects/object_fd2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fd2.xml diff --git a/soh/assets/xml/objects/object_fhg.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fhg.xml similarity index 100% rename from soh/assets/xml/objects/object_fhg.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fhg.xml diff --git a/soh/assets/xml/objects/object_fire.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fire.xml similarity index 100% rename from soh/assets/xml/objects/object_fire.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fire.xml diff --git a/soh/assets/xml/objects/object_firefly.xml b/soh/assets/xml/GC_NMQ_D/objects/object_firefly.xml similarity index 100% rename from soh/assets/xml/objects/object_firefly.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_firefly.xml diff --git a/soh/assets/xml/objects/object_fish.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fish.xml similarity index 100% rename from soh/assets/xml/objects/object_fish.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fish.xml diff --git a/soh/assets/xml/objects/object_fr.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fr.xml similarity index 100% rename from soh/assets/xml/objects/object_fr.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fr.xml diff --git a/soh/assets/xml/objects/object_fu.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fu.xml similarity index 100% rename from soh/assets/xml/objects/object_fu.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fu.xml diff --git a/soh/assets/xml/objects/object_fw.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fw.xml similarity index 100% rename from soh/assets/xml/objects/object_fw.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fw.xml diff --git a/soh/assets/xml/objects/object_fz.xml b/soh/assets/xml/GC_NMQ_D/objects/object_fz.xml similarity index 100% rename from soh/assets/xml/objects/object_fz.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_fz.xml diff --git a/soh/assets/xml/objects/object_ganon.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ganon.xml similarity index 100% rename from soh/assets/xml/objects/object_ganon.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ganon.xml diff --git a/soh/assets/xml/objects/object_ganon2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ganon2.xml similarity index 100% rename from soh/assets/xml/objects/object_ganon2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ganon2.xml diff --git a/soh/assets/xml/objects/object_ganon_anime1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ganon_anime1.xml similarity index 100% rename from soh/assets/xml/objects/object_ganon_anime1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ganon_anime1.xml diff --git a/soh/assets/xml/objects/object_ganon_anime2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ganon_anime2.xml similarity index 100% rename from soh/assets/xml/objects/object_ganon_anime2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ganon_anime2.xml diff --git a/soh/assets/xml/objects/object_ganon_anime3.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ganon_anime3.xml similarity index 100% rename from soh/assets/xml/objects/object_ganon_anime3.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ganon_anime3.xml diff --git a/soh/assets/xml/objects/object_ganon_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ganon_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_ganon_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ganon_objects.xml diff --git a/soh/assets/xml/objects/object_ge1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ge1.xml similarity index 100% rename from soh/assets/xml/objects/object_ge1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ge1.xml diff --git a/soh/assets/xml/objects/object_geff.xml b/soh/assets/xml/GC_NMQ_D/objects/object_geff.xml similarity index 100% rename from soh/assets/xml/objects/object_geff.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_geff.xml diff --git a/soh/assets/xml/objects/object_geldb.xml b/soh/assets/xml/GC_NMQ_D/objects/object_geldb.xml similarity index 100% rename from soh/assets/xml/objects/object_geldb.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_geldb.xml diff --git a/soh/assets/xml/objects/object_gi_arrow.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_arrow.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_arrow.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_arrow.xml diff --git a/soh/assets/xml/objects/object_gi_arrowcase.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_arrowcase.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_arrowcase.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_arrowcase.xml diff --git a/soh/assets/xml/objects/object_gi_bean.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_bean.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_bean.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_bean.xml diff --git a/soh/assets/xml/objects/object_gi_bomb_1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_bomb_1.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_bomb_1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_bomb_1.xml diff --git a/soh/assets/xml/objects/object_gi_bomb_2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_bomb_2.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_bomb_2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_bomb_2.xml diff --git a/soh/assets/xml/objects/object_gi_bombpouch.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_bombpouch.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_bombpouch.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_bombpouch.xml diff --git a/soh/assets/xml/objects/object_gi_boomerang.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_boomerang.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_boomerang.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_boomerang.xml diff --git a/soh/assets/xml/objects/object_gi_boots_2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_boots_2.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_boots_2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_boots_2.xml diff --git a/soh/assets/xml/objects/object_gi_bosskey.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_bosskey.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_bosskey.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_bosskey.xml diff --git a/soh/assets/xml/objects/object_gi_bottle.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_bottle.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_bottle.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_bottle.xml diff --git a/soh/assets/xml/objects/object_gi_bottle_letter.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_bottle_letter.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_bottle_letter.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_bottle_letter.xml diff --git a/soh/assets/xml/objects/object_gi_bow.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_bow.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_bow.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_bow.xml diff --git a/soh/assets/xml/objects/object_gi_bracelet.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_bracelet.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_bracelet.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_bracelet.xml diff --git a/soh/assets/xml/objects/object_gi_brokensword.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_brokensword.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_brokensword.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_brokensword.xml diff --git a/soh/assets/xml/objects/object_gi_butterfly.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_butterfly.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_butterfly.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_butterfly.xml diff --git a/soh/assets/xml/objects/object_gi_clothes.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_clothes.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_clothes.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_clothes.xml diff --git a/soh/assets/xml/objects/object_gi_coin.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_coin.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_coin.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_coin.xml diff --git a/soh/assets/xml/objects/object_gi_compass.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_compass.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_compass.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_compass.xml diff --git a/soh/assets/xml/objects/object_gi_dekupouch.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_dekupouch.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_dekupouch.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_dekupouch.xml diff --git a/soh/assets/xml/objects/object_gi_egg.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_egg.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_egg.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_egg.xml diff --git a/soh/assets/xml/objects/object_gi_eye_lotion.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_eye_lotion.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_eye_lotion.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_eye_lotion.xml diff --git a/soh/assets/xml/objects/object_gi_fire.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_fire.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_fire.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_fire.xml diff --git a/soh/assets/xml/objects/object_gi_fish.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_fish.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_fish.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_fish.xml diff --git a/soh/assets/xml/objects/object_gi_frog.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_frog.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_frog.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_frog.xml diff --git a/soh/assets/xml/objects/object_gi_gerudo.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_gerudo.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_gerudo.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_gerudo.xml diff --git a/soh/assets/xml/objects/object_gi_gerudomask.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_gerudomask.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_gerudomask.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_gerudomask.xml diff --git a/soh/assets/xml/objects/object_gi_ghost.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_ghost.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_ghost.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_ghost.xml diff --git a/soh/assets/xml/objects/object_gi_glasses.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_glasses.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_glasses.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_glasses.xml diff --git a/soh/assets/xml/objects/object_gi_gloves.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_gloves.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_gloves.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_gloves.xml diff --git a/soh/assets/xml/objects/object_gi_goddess.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_goddess.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_goddess.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_goddess.xml diff --git a/soh/assets/xml/objects/object_gi_golonmask.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_golonmask.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_golonmask.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_golonmask.xml diff --git a/soh/assets/xml/objects/object_gi_grass.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_grass.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_grass.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_grass.xml diff --git a/soh/assets/xml/objects/object_gi_hammer.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_hammer.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_hammer.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_hammer.xml diff --git a/soh/assets/xml/objects/object_gi_heart.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_heart.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_heart.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_heart.xml diff --git a/soh/assets/xml/objects/object_gi_hearts.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_hearts.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_hearts.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_hearts.xml diff --git a/soh/assets/xml/objects/object_gi_hookshot.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_hookshot.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_hookshot.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_hookshot.xml diff --git a/soh/assets/xml/objects/object_gi_hoverboots.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_hoverboots.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_hoverboots.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_hoverboots.xml diff --git a/soh/assets/xml/objects/object_gi_insect.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_insect.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_insect.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_insect.xml diff --git a/soh/assets/xml/objects/object_gi_jewel.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_jewel.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_jewel.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_jewel.xml diff --git a/soh/assets/xml/objects/object_gi_key.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_key.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_key.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_key.xml diff --git a/soh/assets/xml/objects/object_gi_ki_tan_mask.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_ki_tan_mask.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_ki_tan_mask.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_ki_tan_mask.xml diff --git a/soh/assets/xml/objects/object_gi_letter.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_letter.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_letter.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_letter.xml diff --git a/soh/assets/xml/objects/object_gi_liquid.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_liquid.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_liquid.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_liquid.xml diff --git a/soh/assets/xml/objects/object_gi_longsword.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_longsword.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_longsword.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_longsword.xml diff --git a/soh/assets/xml/objects/object_gi_m_arrow.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_m_arrow.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_m_arrow.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_m_arrow.xml diff --git a/soh/assets/xml/objects/object_gi_magicpot.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_magicpot.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_magicpot.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_magicpot.xml diff --git a/soh/assets/xml/objects/object_gi_map.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_map.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_map.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_map.xml diff --git a/soh/assets/xml/objects/object_gi_medal.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_medal.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_medal.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_medal.xml diff --git a/soh/assets/xml/objects/object_gi_melody.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_melody.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_melody.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_melody.xml diff --git a/soh/assets/xml/objects/object_gi_milk.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_milk.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_milk.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_milk.xml diff --git a/soh/assets/xml/objects/object_gi_mushroom.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_mushroom.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_mushroom.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_mushroom.xml diff --git a/soh/assets/xml/objects/object_gi_niwatori.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_niwatori.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_niwatori.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_niwatori.xml diff --git a/soh/assets/xml/objects/object_gi_nuts.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_nuts.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_nuts.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_nuts.xml diff --git a/soh/assets/xml/objects/object_gi_ocarina.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_ocarina.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_ocarina.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_ocarina.xml diff --git a/soh/assets/xml/objects/object_gi_ocarina_0.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_ocarina_0.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_ocarina_0.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_ocarina_0.xml diff --git a/soh/assets/xml/objects/object_gi_pachinko.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_pachinko.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_pachinko.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_pachinko.xml diff --git a/soh/assets/xml/objects/object_gi_powder.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_powder.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_powder.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_powder.xml diff --git a/soh/assets/xml/objects/object_gi_prescription.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_prescription.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_prescription.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_prescription.xml diff --git a/soh/assets/xml/objects/object_gi_purse.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_purse.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_purse.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_purse.xml diff --git a/soh/assets/xml/objects/object_gi_rabit_mask.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_rabit_mask.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_rabit_mask.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_rabit_mask.xml diff --git a/soh/assets/xml/objects/object_gi_redead_mask.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_redead_mask.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_redead_mask.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_redead_mask.xml diff --git a/soh/assets/xml/objects/object_gi_rupy.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_rupy.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_rupy.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_rupy.xml diff --git a/soh/assets/xml/objects/object_gi_saw.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_saw.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_saw.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_saw.xml diff --git a/soh/assets/xml/objects/object_gi_scale.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_scale.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_scale.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_scale.xml diff --git a/soh/assets/xml/objects/object_gi_seed.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_seed.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_seed.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_seed.xml diff --git a/soh/assets/xml/objects/object_gi_shield_1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_shield_1.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_shield_1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_shield_1.xml diff --git a/soh/assets/xml/objects/object_gi_shield_2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_shield_2.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_shield_2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_shield_2.xml diff --git a/soh/assets/xml/objects/object_gi_shield_3.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_shield_3.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_shield_3.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_shield_3.xml diff --git a/soh/assets/xml/objects/object_gi_skj_mask.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_skj_mask.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_skj_mask.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_skj_mask.xml diff --git a/soh/assets/xml/objects/object_gi_soldout.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_soldout.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_soldout.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_soldout.xml diff --git a/soh/assets/xml/objects/object_gi_soul.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_soul.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_soul.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_soul.xml diff --git a/soh/assets/xml/objects/object_gi_stick.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_stick.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_stick.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_stick.xml diff --git a/soh/assets/xml/objects/object_gi_sutaru.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_sutaru.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_sutaru.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_sutaru.xml diff --git a/soh/assets/xml/objects/object_gi_sword_1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_sword_1.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_sword_1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_sword_1.xml diff --git a/soh/assets/xml/objects/object_gi_ticketstone.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_ticketstone.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_ticketstone.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_ticketstone.xml diff --git a/soh/assets/xml/objects/object_gi_truth_mask.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_truth_mask.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_truth_mask.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_truth_mask.xml diff --git a/soh/assets/xml/objects/object_gi_zoramask.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gi_zoramask.xml similarity index 100% rename from soh/assets/xml/objects/object_gi_zoramask.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gi_zoramask.xml diff --git a/soh/assets/xml/objects/object_gj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gj.xml similarity index 100% rename from soh/assets/xml/objects/object_gj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gj.xml diff --git a/soh/assets/xml/objects/object_gjyo_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gjyo_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_gjyo_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gjyo_objects.xml diff --git a/soh/assets/xml/objects/object_gla.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gla.xml similarity index 100% rename from soh/assets/xml/objects/object_gla.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gla.xml diff --git a/soh/assets/xml/objects/object_gm.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gm.xml similarity index 100% rename from soh/assets/xml/objects/object_gm.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gm.xml diff --git a/soh/assets/xml/objects/object_gnd.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gnd.xml similarity index 100% rename from soh/assets/xml/objects/object_gnd.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gnd.xml diff --git a/soh/assets/xml/objects/object_gnd_magic.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gnd_magic.xml similarity index 100% rename from soh/assets/xml/objects/object_gnd_magic.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gnd_magic.xml diff --git a/soh/assets/xml/objects/object_gndd.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gndd.xml similarity index 100% rename from soh/assets/xml/objects/object_gndd.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gndd.xml diff --git a/soh/assets/xml/objects/object_god_lgt.xml b/soh/assets/xml/GC_NMQ_D/objects/object_god_lgt.xml similarity index 100% rename from soh/assets/xml/objects/object_god_lgt.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_god_lgt.xml diff --git a/soh/assets/xml/objects/object_gol.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gol.xml similarity index 100% rename from soh/assets/xml/objects/object_gol.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gol.xml diff --git a/soh/assets/xml/objects/object_goma.xml b/soh/assets/xml/GC_NMQ_D/objects/object_goma.xml similarity index 100% rename from soh/assets/xml/objects/object_goma.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_goma.xml diff --git a/soh/assets/xml/objects/object_goroiwa.xml b/soh/assets/xml/GC_NMQ_D/objects/object_goroiwa.xml similarity index 100% rename from soh/assets/xml/objects/object_goroiwa.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_goroiwa.xml diff --git a/soh/assets/xml/objects/object_gr.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gr.xml similarity index 100% rename from soh/assets/xml/objects/object_gr.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gr.xml diff --git a/soh/assets/xml/objects/object_gs.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gs.xml similarity index 100% rename from soh/assets/xml/objects/object_gs.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gs.xml diff --git a/soh/assets/xml/objects/object_gt.xml b/soh/assets/xml/GC_NMQ_D/objects/object_gt.xml similarity index 100% rename from soh/assets/xml/objects/object_gt.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_gt.xml diff --git a/soh/assets/xml/objects/object_haka.xml b/soh/assets/xml/GC_NMQ_D/objects/object_haka.xml similarity index 100% rename from soh/assets/xml/objects/object_haka.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_haka.xml diff --git a/soh/assets/xml/objects/object_haka_door.xml b/soh/assets/xml/GC_NMQ_D/objects/object_haka_door.xml similarity index 100% rename from soh/assets/xml/objects/object_haka_door.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_haka_door.xml diff --git a/soh/assets/xml/objects/object_haka_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_haka_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_haka_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_haka_objects.xml diff --git a/soh/assets/xml/objects/object_hakach_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_hakach_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_hakach_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_hakach_objects.xml diff --git a/soh/assets/xml/objects/object_hata.xml b/soh/assets/xml/GC_NMQ_D/objects/object_hata.xml similarity index 100% rename from soh/assets/xml/objects/object_hata.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_hata.xml diff --git a/soh/assets/xml/objects/object_heavy_object.xml b/soh/assets/xml/GC_NMQ_D/objects/object_heavy_object.xml similarity index 100% rename from soh/assets/xml/objects/object_heavy_object.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_heavy_object.xml diff --git a/soh/assets/xml/objects/object_hidan_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_hidan_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_hidan_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_hidan_objects.xml diff --git a/soh/assets/xml/objects/object_hintnuts.xml b/soh/assets/xml/GC_NMQ_D/objects/object_hintnuts.xml similarity index 100% rename from soh/assets/xml/objects/object_hintnuts.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_hintnuts.xml diff --git a/soh/assets/xml/objects/object_hni.xml b/soh/assets/xml/GC_NMQ_D/objects/object_hni.xml similarity index 100% rename from soh/assets/xml/objects/object_hni.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_hni.xml diff --git a/soh/assets/xml/objects/object_horse.xml b/soh/assets/xml/GC_NMQ_D/objects/object_horse.xml similarity index 100% rename from soh/assets/xml/objects/object_horse.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_horse.xml diff --git a/soh/assets/xml/objects/object_horse_ganon.xml b/soh/assets/xml/GC_NMQ_D/objects/object_horse_ganon.xml similarity index 100% rename from soh/assets/xml/objects/object_horse_ganon.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_horse_ganon.xml diff --git a/soh/assets/xml/objects/object_horse_link_child.xml b/soh/assets/xml/GC_NMQ_D/objects/object_horse_link_child.xml similarity index 100% rename from soh/assets/xml/objects/object_horse_link_child.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_horse_link_child.xml diff --git a/soh/assets/xml/objects/object_horse_normal.xml b/soh/assets/xml/GC_NMQ_D/objects/object_horse_normal.xml similarity index 100% rename from soh/assets/xml/objects/object_horse_normal.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_horse_normal.xml diff --git a/soh/assets/xml/objects/object_horse_zelda.xml b/soh/assets/xml/GC_NMQ_D/objects/object_horse_zelda.xml similarity index 100% rename from soh/assets/xml/objects/object_horse_zelda.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_horse_zelda.xml diff --git a/soh/assets/xml/objects/object_hs.xml b/soh/assets/xml/GC_NMQ_D/objects/object_hs.xml similarity index 100% rename from soh/assets/xml/objects/object_hs.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_hs.xml diff --git a/soh/assets/xml/objects/object_human.xml b/soh/assets/xml/GC_NMQ_D/objects/object_human.xml similarity index 100% rename from soh/assets/xml/objects/object_human.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_human.xml diff --git a/soh/assets/xml/objects/object_ice_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ice_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_ice_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ice_objects.xml diff --git a/soh/assets/xml/objects/object_ik.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ik.xml similarity index 100% rename from soh/assets/xml/objects/object_ik.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ik.xml diff --git a/soh/assets/xml/objects/object_im.xml b/soh/assets/xml/GC_NMQ_D/objects/object_im.xml similarity index 100% rename from soh/assets/xml/objects/object_im.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_im.xml diff --git a/soh/assets/xml/objects/object_in.xml b/soh/assets/xml/GC_NMQ_D/objects/object_in.xml similarity index 100% rename from soh/assets/xml/objects/object_in.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_in.xml diff --git a/soh/assets/xml/objects/object_ingate.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ingate.xml similarity index 100% rename from soh/assets/xml/objects/object_ingate.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ingate.xml diff --git a/soh/assets/xml/objects/object_jj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_jj.xml similarity index 100% rename from soh/assets/xml/objects/object_jj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_jj.xml diff --git a/soh/assets/xml/objects/object_js.xml b/soh/assets/xml/GC_NMQ_D/objects/object_js.xml similarity index 100% rename from soh/assets/xml/objects/object_js.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_js.xml diff --git a/soh/assets/xml/objects/object_jya_door.xml b/soh/assets/xml/GC_NMQ_D/objects/object_jya_door.xml similarity index 100% rename from soh/assets/xml/objects/object_jya_door.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_jya_door.xml diff --git a/soh/assets/xml/objects/object_jya_iron.xml b/soh/assets/xml/GC_NMQ_D/objects/object_jya_iron.xml similarity index 100% rename from soh/assets/xml/objects/object_jya_iron.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_jya_iron.xml diff --git a/soh/assets/xml/objects/object_jya_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_jya_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_jya_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_jya_obj.xml diff --git a/soh/assets/xml/objects/object_ka.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ka.xml similarity index 100% rename from soh/assets/xml/objects/object_ka.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ka.xml diff --git a/soh/assets/xml/objects/object_kanban.xml b/soh/assets/xml/GC_NMQ_D/objects/object_kanban.xml similarity index 100% rename from soh/assets/xml/objects/object_kanban.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_kanban.xml diff --git a/soh/assets/xml/objects/object_kibako2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_kibako2.xml similarity index 100% rename from soh/assets/xml/objects/object_kibako2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_kibako2.xml diff --git a/soh/assets/xml/objects/object_kingdodongo.xml b/soh/assets/xml/GC_NMQ_D/objects/object_kingdodongo.xml similarity index 100% rename from soh/assets/xml/objects/object_kingdodongo.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_kingdodongo.xml diff --git a/soh/assets/xml/objects/object_km1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_km1.xml similarity index 100% rename from soh/assets/xml/objects/object_km1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_km1.xml diff --git a/soh/assets/xml/objects/object_kusa.xml b/soh/assets/xml/GC_NMQ_D/objects/object_kusa.xml similarity index 100% rename from soh/assets/xml/objects/object_kusa.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_kusa.xml diff --git a/soh/assets/xml/objects/object_kw1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_kw1.xml similarity index 100% rename from soh/assets/xml/objects/object_kw1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_kw1.xml diff --git a/soh/assets/xml/objects/object_kz.xml b/soh/assets/xml/GC_NMQ_D/objects/object_kz.xml similarity index 100% rename from soh/assets/xml/objects/object_kz.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_kz.xml diff --git a/soh/assets/xml/objects/object_light_ring.xml b/soh/assets/xml/GC_NMQ_D/objects/object_light_ring.xml similarity index 100% rename from soh/assets/xml/objects/object_light_ring.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_light_ring.xml diff --git a/soh/assets/xml/objects/object_lightbox.xml b/soh/assets/xml/GC_NMQ_D/objects/object_lightbox.xml similarity index 100% rename from soh/assets/xml/objects/object_lightbox.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_lightbox.xml diff --git a/soh/assets/xml/objects/object_lightswitch.xml b/soh/assets/xml/GC_NMQ_D/objects/object_lightswitch.xml similarity index 100% rename from soh/assets/xml/objects/object_lightswitch.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_lightswitch.xml diff --git a/soh/assets/xml/objects/object_link_boy.xml b/soh/assets/xml/GC_NMQ_D/objects/object_link_boy.xml similarity index 100% rename from soh/assets/xml/objects/object_link_boy.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_link_boy.xml diff --git a/soh/assets/xml/objects/object_link_child.xml b/soh/assets/xml/GC_NMQ_D/objects/object_link_child.xml similarity index 100% rename from soh/assets/xml/objects/object_link_child.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_link_child.xml diff --git a/soh/assets/xml/objects/object_ma1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ma1.xml similarity index 100% rename from soh/assets/xml/objects/object_ma1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ma1.xml diff --git a/soh/assets/xml/objects/object_ma2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ma2.xml similarity index 100% rename from soh/assets/xml/objects/object_ma2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ma2.xml diff --git a/soh/assets/xml/objects/object_mag.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mag.xml similarity index 100% rename from soh/assets/xml/objects/object_mag.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mag.xml diff --git a/soh/assets/xml/objects/object_mamenoki.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mamenoki.xml similarity index 100% rename from soh/assets/xml/objects/object_mamenoki.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mamenoki.xml diff --git a/soh/assets/xml/objects/object_mastergolon.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mastergolon.xml similarity index 100% rename from soh/assets/xml/objects/object_mastergolon.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mastergolon.xml diff --git a/soh/assets/xml/objects/object_masterkokiri.xml b/soh/assets/xml/GC_NMQ_D/objects/object_masterkokiri.xml similarity index 100% rename from soh/assets/xml/objects/object_masterkokiri.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_masterkokiri.xml diff --git a/soh/assets/xml/objects/object_masterkokirihead.xml b/soh/assets/xml/GC_NMQ_D/objects/object_masterkokirihead.xml similarity index 100% rename from soh/assets/xml/objects/object_masterkokirihead.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_masterkokirihead.xml diff --git a/soh/assets/xml/objects/object_masterzoora.xml b/soh/assets/xml/GC_NMQ_D/objects/object_masterzoora.xml similarity index 100% rename from soh/assets/xml/objects/object_masterzoora.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_masterzoora.xml diff --git a/soh/assets/xml/objects/object_mb.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mb.xml similarity index 100% rename from soh/assets/xml/objects/object_mb.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mb.xml diff --git a/soh/assets/xml/objects/object_md.xml b/soh/assets/xml/GC_NMQ_D/objects/object_md.xml similarity index 100% rename from soh/assets/xml/objects/object_md.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_md.xml diff --git a/soh/assets/xml/objects/object_medal.xml b/soh/assets/xml/GC_NMQ_D/objects/object_medal.xml similarity index 100% rename from soh/assets/xml/objects/object_medal.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_medal.xml diff --git a/soh/assets/xml/objects/object_menkuri_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_menkuri_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_menkuri_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_menkuri_objects.xml diff --git a/soh/assets/xml/objects/object_mir_ray.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mir_ray.xml similarity index 100% rename from soh/assets/xml/objects/object_mir_ray.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mir_ray.xml diff --git a/soh/assets/xml/objects/object_mizu_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mizu_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_mizu_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mizu_objects.xml diff --git a/soh/assets/xml/objects/object_mjin.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mjin.xml similarity index 100% rename from soh/assets/xml/objects/object_mjin.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mjin.xml diff --git a/soh/assets/xml/objects/object_mjin_dark.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mjin_dark.xml similarity index 100% rename from soh/assets/xml/objects/object_mjin_dark.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mjin_dark.xml diff --git a/soh/assets/xml/objects/object_mjin_flame.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mjin_flame.xml similarity index 100% rename from soh/assets/xml/objects/object_mjin_flame.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mjin_flame.xml diff --git a/soh/assets/xml/objects/object_mjin_flash.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mjin_flash.xml similarity index 100% rename from soh/assets/xml/objects/object_mjin_flash.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mjin_flash.xml diff --git a/soh/assets/xml/objects/object_mjin_ice.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mjin_ice.xml similarity index 100% rename from soh/assets/xml/objects/object_mjin_ice.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mjin_ice.xml diff --git a/soh/assets/xml/objects/object_mjin_oka.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mjin_oka.xml similarity index 100% rename from soh/assets/xml/objects/object_mjin_oka.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mjin_oka.xml diff --git a/soh/assets/xml/objects/object_mjin_soul.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mjin_soul.xml similarity index 100% rename from soh/assets/xml/objects/object_mjin_soul.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mjin_soul.xml diff --git a/soh/assets/xml/objects/object_mjin_wind.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mjin_wind.xml similarity index 100% rename from soh/assets/xml/objects/object_mjin_wind.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mjin_wind.xml diff --git a/soh/assets/xml/objects/object_mk.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mk.xml similarity index 100% rename from soh/assets/xml/objects/object_mk.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mk.xml diff --git a/soh/assets/xml/objects/object_mm.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mm.xml similarity index 100% rename from soh/assets/xml/objects/object_mm.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mm.xml diff --git a/soh/assets/xml/objects/object_mo.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mo.xml similarity index 100% rename from soh/assets/xml/objects/object_mo.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mo.xml diff --git a/soh/assets/xml/objects/object_mori_hineri1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mori_hineri1.xml similarity index 100% rename from soh/assets/xml/objects/object_mori_hineri1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mori_hineri1.xml diff --git a/soh/assets/xml/objects/object_mori_hineri1a.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mori_hineri1a.xml similarity index 100% rename from soh/assets/xml/objects/object_mori_hineri1a.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mori_hineri1a.xml diff --git a/soh/assets/xml/objects/object_mori_hineri2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mori_hineri2.xml similarity index 100% rename from soh/assets/xml/objects/object_mori_hineri2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mori_hineri2.xml diff --git a/soh/assets/xml/objects/object_mori_hineri2a.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mori_hineri2a.xml similarity index 100% rename from soh/assets/xml/objects/object_mori_hineri2a.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mori_hineri2a.xml diff --git a/soh/assets/xml/objects/object_mori_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mori_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_mori_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mori_objects.xml diff --git a/soh/assets/xml/objects/object_mori_tex.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mori_tex.xml similarity index 100% rename from soh/assets/xml/objects/object_mori_tex.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mori_tex.xml diff --git a/soh/assets/xml/objects/object_ms.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ms.xml similarity index 100% rename from soh/assets/xml/objects/object_ms.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ms.xml diff --git a/soh/assets/xml/objects/object_mu.xml b/soh/assets/xml/GC_NMQ_D/objects/object_mu.xml similarity index 100% rename from soh/assets/xml/objects/object_mu.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_mu.xml diff --git a/soh/assets/xml/objects/object_nb.xml b/soh/assets/xml/GC_NMQ_D/objects/object_nb.xml similarity index 100% rename from soh/assets/xml/objects/object_nb.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_nb.xml diff --git a/soh/assets/xml/objects/object_niw.xml b/soh/assets/xml/GC_NMQ_D/objects/object_niw.xml similarity index 100% rename from soh/assets/xml/objects/object_niw.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_niw.xml diff --git a/soh/assets/xml/objects/object_nwc.xml b/soh/assets/xml/GC_NMQ_D/objects/object_nwc.xml similarity index 100% rename from soh/assets/xml/objects/object_nwc.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_nwc.xml diff --git a/soh/assets/xml/objects/object_ny.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ny.xml similarity index 100% rename from soh/assets/xml/objects/object_ny.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ny.xml diff --git a/soh/assets/xml/objects/object_oA1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA1.xml similarity index 100% rename from soh/assets/xml/objects/object_oA1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA1.xml diff --git a/soh/assets/xml/objects/object_oA10.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA10.xml similarity index 100% rename from soh/assets/xml/objects/object_oA10.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA10.xml diff --git a/soh/assets/xml/objects/object_oA11.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA11.xml similarity index 100% rename from soh/assets/xml/objects/object_oA11.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA11.xml diff --git a/soh/assets/xml/objects/object_oA2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA2.xml similarity index 100% rename from soh/assets/xml/objects/object_oA2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA2.xml diff --git a/soh/assets/xml/objects/object_oA3.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA3.xml similarity index 100% rename from soh/assets/xml/objects/object_oA3.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA3.xml diff --git a/soh/assets/xml/objects/object_oA4.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA4.xml similarity index 100% rename from soh/assets/xml/objects/object_oA4.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA4.xml diff --git a/soh/assets/xml/objects/object_oA5.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA5.xml similarity index 100% rename from soh/assets/xml/objects/object_oA5.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA5.xml diff --git a/soh/assets/xml/objects/object_oA6.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA6.xml similarity index 100% rename from soh/assets/xml/objects/object_oA6.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA6.xml diff --git a/soh/assets/xml/objects/object_oA7.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA7.xml similarity index 100% rename from soh/assets/xml/objects/object_oA7.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA7.xml diff --git a/soh/assets/xml/objects/object_oA8.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA8.xml similarity index 100% rename from soh/assets/xml/objects/object_oA8.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA8.xml diff --git a/soh/assets/xml/objects/object_oA9.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oA9.xml similarity index 100% rename from soh/assets/xml/objects/object_oA9.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oA9.xml diff --git a/soh/assets/xml/objects/object_oB1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oB1.xml similarity index 100% rename from soh/assets/xml/objects/object_oB1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oB1.xml diff --git a/soh/assets/xml/objects/object_oB2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oB2.xml similarity index 100% rename from soh/assets/xml/objects/object_oB2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oB2.xml diff --git a/soh/assets/xml/objects/object_oB3.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oB3.xml similarity index 100% rename from soh/assets/xml/objects/object_oB3.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oB3.xml diff --git a/soh/assets/xml/objects/object_oB4.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oB4.xml similarity index 100% rename from soh/assets/xml/objects/object_oB4.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oB4.xml diff --git a/soh/assets/xml/objects/object_oE1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE1.xml similarity index 100% rename from soh/assets/xml/objects/object_oE1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE1.xml diff --git a/soh/assets/xml/objects/object_oE10.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE10.xml similarity index 100% rename from soh/assets/xml/objects/object_oE10.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE10.xml diff --git a/soh/assets/xml/objects/object_oE11.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE11.xml similarity index 100% rename from soh/assets/xml/objects/object_oE11.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE11.xml diff --git a/soh/assets/xml/objects/object_oE12.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE12.xml similarity index 100% rename from soh/assets/xml/objects/object_oE12.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE12.xml diff --git a/soh/assets/xml/objects/object_oE1s.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE1s.xml similarity index 100% rename from soh/assets/xml/objects/object_oE1s.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE1s.xml diff --git a/soh/assets/xml/objects/object_oE2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE2.xml similarity index 100% rename from soh/assets/xml/objects/object_oE2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE2.xml diff --git a/soh/assets/xml/objects/object_oE3.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE3.xml similarity index 100% rename from soh/assets/xml/objects/object_oE3.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE3.xml diff --git a/soh/assets/xml/objects/object_oE4.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE4.xml similarity index 100% rename from soh/assets/xml/objects/object_oE4.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE4.xml diff --git a/soh/assets/xml/objects/object_oE4s.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE4s.xml similarity index 100% rename from soh/assets/xml/objects/object_oE4s.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE4s.xml diff --git a/soh/assets/xml/objects/object_oE5.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE5.xml similarity index 100% rename from soh/assets/xml/objects/object_oE5.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE5.xml diff --git a/soh/assets/xml/objects/object_oE6.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE6.xml similarity index 100% rename from soh/assets/xml/objects/object_oE6.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE6.xml diff --git a/soh/assets/xml/objects/object_oE7.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE7.xml similarity index 100% rename from soh/assets/xml/objects/object_oE7.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE7.xml diff --git a/soh/assets/xml/objects/object_oE8.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE8.xml similarity index 100% rename from soh/assets/xml/objects/object_oE8.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE8.xml diff --git a/soh/assets/xml/objects/object_oE9.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE9.xml similarity index 100% rename from soh/assets/xml/objects/object_oE9.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE9.xml diff --git a/soh/assets/xml/objects/object_oE_anime.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oE_anime.xml similarity index 100% rename from soh/assets/xml/objects/object_oE_anime.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oE_anime.xml diff --git a/soh/assets/xml/objects/object_oF1d_map.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oF1d_map.xml similarity index 100% rename from soh/assets/xml/objects/object_oF1d_map.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oF1d_map.xml diff --git a/soh/assets/xml/objects/object_oF1s.xml b/soh/assets/xml/GC_NMQ_D/objects/object_oF1s.xml similarity index 100% rename from soh/assets/xml/objects/object_oF1s.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_oF1s.xml diff --git a/soh/assets/xml/objects/object_o_anime.xml b/soh/assets/xml/GC_NMQ_D/objects/object_o_anime.xml similarity index 100% rename from soh/assets/xml/objects/object_o_anime.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_o_anime.xml diff --git a/soh/assets/xml/objects/object_okuta.xml b/soh/assets/xml/GC_NMQ_D/objects/object_okuta.xml similarity index 100% rename from soh/assets/xml/objects/object_okuta.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_okuta.xml diff --git a/soh/assets/xml/objects/object_opening_demo1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_opening_demo1.xml similarity index 100% rename from soh/assets/xml/objects/object_opening_demo1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_opening_demo1.xml diff --git a/soh/assets/xml/objects/object_os.xml b/soh/assets/xml/GC_NMQ_D/objects/object_os.xml similarity index 100% rename from soh/assets/xml/objects/object_os.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_os.xml diff --git a/soh/assets/xml/objects/object_os_anime.xml b/soh/assets/xml/GC_NMQ_D/objects/object_os_anime.xml similarity index 100% rename from soh/assets/xml/objects/object_os_anime.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_os_anime.xml diff --git a/soh/assets/xml/objects/object_ossan.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ossan.xml similarity index 100% rename from soh/assets/xml/objects/object_ossan.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ossan.xml diff --git a/soh/assets/xml/objects/object_ouke_haka.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ouke_haka.xml similarity index 100% rename from soh/assets/xml/objects/object_ouke_haka.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ouke_haka.xml diff --git a/soh/assets/xml/objects/object_owl.xml b/soh/assets/xml/GC_NMQ_D/objects/object_owl.xml similarity index 100% rename from soh/assets/xml/objects/object_owl.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_owl.xml diff --git a/soh/assets/xml/objects/object_peehat.xml b/soh/assets/xml/GC_NMQ_D/objects/object_peehat.xml similarity index 100% rename from soh/assets/xml/objects/object_peehat.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_peehat.xml diff --git a/soh/assets/xml/objects/object_po_composer.xml b/soh/assets/xml/GC_NMQ_D/objects/object_po_composer.xml similarity index 100% rename from soh/assets/xml/objects/object_po_composer.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_po_composer.xml diff --git a/soh/assets/xml/objects/object_po_field.xml b/soh/assets/xml/GC_NMQ_D/objects/object_po_field.xml similarity index 100% rename from soh/assets/xml/objects/object_po_field.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_po_field.xml diff --git a/soh/assets/xml/objects/object_po_sisters.xml b/soh/assets/xml/GC_NMQ_D/objects/object_po_sisters.xml similarity index 100% rename from soh/assets/xml/objects/object_po_sisters.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_po_sisters.xml diff --git a/soh/assets/xml/objects/object_poh.xml b/soh/assets/xml/GC_NMQ_D/objects/object_poh.xml similarity index 100% rename from soh/assets/xml/objects/object_poh.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_poh.xml diff --git a/soh/assets/xml/objects/object_ps.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ps.xml similarity index 100% rename from soh/assets/xml/objects/object_ps.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ps.xml diff --git a/soh/assets/xml/objects/object_pu_box.xml b/soh/assets/xml/GC_NMQ_D/objects/object_pu_box.xml similarity index 100% rename from soh/assets/xml/objects/object_pu_box.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_pu_box.xml diff --git a/soh/assets/xml/objects/object_rd.xml b/soh/assets/xml/GC_NMQ_D/objects/object_rd.xml similarity index 100% rename from soh/assets/xml/objects/object_rd.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_rd.xml diff --git a/soh/assets/xml/objects/object_reeba.xml b/soh/assets/xml/GC_NMQ_D/objects/object_reeba.xml similarity index 100% rename from soh/assets/xml/objects/object_reeba.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_reeba.xml diff --git a/soh/assets/xml/objects/object_relay_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_relay_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_relay_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_relay_objects.xml diff --git a/soh/assets/xml/objects/object_rl.xml b/soh/assets/xml/GC_NMQ_D/objects/object_rl.xml similarity index 100% rename from soh/assets/xml/objects/object_rl.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_rl.xml diff --git a/soh/assets/xml/objects/object_rr.xml b/soh/assets/xml/GC_NMQ_D/objects/object_rr.xml similarity index 100% rename from soh/assets/xml/objects/object_rr.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_rr.xml diff --git a/soh/assets/xml/objects/object_rs.xml b/soh/assets/xml/GC_NMQ_D/objects/object_rs.xml similarity index 100% rename from soh/assets/xml/objects/object_rs.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_rs.xml diff --git a/soh/assets/xml/objects/object_ru1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ru1.xml similarity index 100% rename from soh/assets/xml/objects/object_ru1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ru1.xml diff --git a/soh/assets/xml/objects/object_ru2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ru2.xml similarity index 100% rename from soh/assets/xml/objects/object_ru2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ru2.xml diff --git a/soh/assets/xml/objects/object_sa.xml b/soh/assets/xml/GC_NMQ_D/objects/object_sa.xml similarity index 100% rename from soh/assets/xml/objects/object_sa.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_sa.xml diff --git a/soh/assets/xml/objects/object_sb.xml b/soh/assets/xml/GC_NMQ_D/objects/object_sb.xml similarity index 100% rename from soh/assets/xml/objects/object_sb.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_sb.xml diff --git a/soh/assets/xml/objects/object_sd.xml b/soh/assets/xml/GC_NMQ_D/objects/object_sd.xml similarity index 100% rename from soh/assets/xml/objects/object_sd.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_sd.xml diff --git a/soh/assets/xml/objects/object_shop_dungen.xml b/soh/assets/xml/GC_NMQ_D/objects/object_shop_dungen.xml similarity index 100% rename from soh/assets/xml/objects/object_shop_dungen.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_shop_dungen.xml diff --git a/soh/assets/xml/objects/object_shopnuts.xml b/soh/assets/xml/GC_NMQ_D/objects/object_shopnuts.xml similarity index 100% rename from soh/assets/xml/objects/object_shopnuts.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_shopnuts.xml diff --git a/soh/assets/xml/objects/object_siofuki.xml b/soh/assets/xml/GC_NMQ_D/objects/object_siofuki.xml similarity index 100% rename from soh/assets/xml/objects/object_siofuki.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_siofuki.xml diff --git a/soh/assets/xml/objects/object_sk2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_sk2.xml similarity index 100% rename from soh/assets/xml/objects/object_sk2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_sk2.xml diff --git a/soh/assets/xml/objects/object_skb.xml b/soh/assets/xml/GC_NMQ_D/objects/object_skb.xml similarity index 100% rename from soh/assets/xml/objects/object_skb.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_skb.xml diff --git a/soh/assets/xml/objects/object_skj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_skj.xml similarity index 100% rename from soh/assets/xml/objects/object_skj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_skj.xml diff --git a/soh/assets/xml/objects/object_spot00_break.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot00_break.xml similarity index 100% rename from soh/assets/xml/objects/object_spot00_break.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot00_break.xml diff --git a/soh/assets/xml/objects/object_spot00_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot00_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_spot00_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot00_objects.xml diff --git a/soh/assets/xml/objects/object_spot01_matoya.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot01_matoya.xml similarity index 100% rename from soh/assets/xml/objects/object_spot01_matoya.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot01_matoya.xml diff --git a/soh/assets/xml/objects/object_spot01_matoyab.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot01_matoyab.xml similarity index 100% rename from soh/assets/xml/objects/object_spot01_matoyab.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot01_matoyab.xml diff --git a/soh/assets/xml/objects/object_spot01_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot01_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_spot01_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot01_objects.xml diff --git a/soh/assets/xml/objects/object_spot01_objects2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot01_objects2.xml similarity index 100% rename from soh/assets/xml/objects/object_spot01_objects2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot01_objects2.xml diff --git a/soh/assets/xml/objects/object_spot02_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot02_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_spot02_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot02_objects.xml diff --git a/soh/assets/xml/objects/object_spot03_object.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot03_object.xml similarity index 100% rename from soh/assets/xml/objects/object_spot03_object.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot03_object.xml diff --git a/soh/assets/xml/objects/object_spot04_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot04_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_spot04_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot04_objects.xml diff --git a/soh/assets/xml/objects/object_spot05_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot05_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_spot05_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot05_objects.xml diff --git a/soh/assets/xml/objects/object_spot06_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot06_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_spot06_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot06_objects.xml diff --git a/soh/assets/xml/objects/object_spot07_object.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot07_object.xml similarity index 100% rename from soh/assets/xml/objects/object_spot07_object.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot07_object.xml diff --git a/soh/assets/xml/objects/object_spot08_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot08_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_spot08_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot08_obj.xml diff --git a/soh/assets/xml/objects/object_spot09_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot09_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_spot09_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot09_obj.xml diff --git a/soh/assets/xml/objects/object_spot11_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot11_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_spot11_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot11_obj.xml diff --git a/soh/assets/xml/objects/object_spot12_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot12_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_spot12_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot12_obj.xml diff --git a/soh/assets/xml/objects/object_spot15_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot15_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_spot15_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot15_obj.xml diff --git a/soh/assets/xml/objects/object_spot16_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot16_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_spot16_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot16_obj.xml diff --git a/soh/assets/xml/objects/object_spot17_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot17_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_spot17_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot17_obj.xml diff --git a/soh/assets/xml/objects/object_spot18_obj.xml b/soh/assets/xml/GC_NMQ_D/objects/object_spot18_obj.xml similarity index 100% rename from soh/assets/xml/objects/object_spot18_obj.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_spot18_obj.xml diff --git a/soh/assets/xml/objects/object_ssh.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ssh.xml similarity index 100% rename from soh/assets/xml/objects/object_ssh.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ssh.xml diff --git a/soh/assets/xml/objects/object_sst.xml b/soh/assets/xml/GC_NMQ_D/objects/object_sst.xml similarity index 100% rename from soh/assets/xml/objects/object_sst.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_sst.xml diff --git a/soh/assets/xml/objects/object_st.xml b/soh/assets/xml/GC_NMQ_D/objects/object_st.xml similarity index 100% rename from soh/assets/xml/objects/object_st.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_st.xml diff --git a/soh/assets/xml/objects/object_stream.xml b/soh/assets/xml/GC_NMQ_D/objects/object_stream.xml similarity index 100% rename from soh/assets/xml/objects/object_stream.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_stream.xml diff --git a/soh/assets/xml/objects/object_syokudai.xml b/soh/assets/xml/GC_NMQ_D/objects/object_syokudai.xml similarity index 100% rename from soh/assets/xml/objects/object_syokudai.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_syokudai.xml diff --git a/soh/assets/xml/objects/object_ta.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ta.xml similarity index 100% rename from soh/assets/xml/objects/object_ta.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ta.xml diff --git a/soh/assets/xml/objects/object_timeblock.xml b/soh/assets/xml/GC_NMQ_D/objects/object_timeblock.xml similarity index 100% rename from soh/assets/xml/objects/object_timeblock.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_timeblock.xml diff --git a/soh/assets/xml/objects/object_tite.xml b/soh/assets/xml/GC_NMQ_D/objects/object_tite.xml similarity index 100% rename from soh/assets/xml/objects/object_tite.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_tite.xml diff --git a/soh/assets/xml/objects/object_tk.xml b/soh/assets/xml/GC_NMQ_D/objects/object_tk.xml similarity index 100% rename from soh/assets/xml/objects/object_tk.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_tk.xml diff --git a/soh/assets/xml/objects/object_toki_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_toki_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_toki_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_toki_objects.xml diff --git a/soh/assets/xml/objects/object_torch2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_torch2.xml similarity index 100% rename from soh/assets/xml/objects/object_torch2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_torch2.xml diff --git a/soh/assets/xml/objects/object_toryo.xml b/soh/assets/xml/GC_NMQ_D/objects/object_toryo.xml similarity index 100% rename from soh/assets/xml/objects/object_toryo.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_toryo.xml diff --git a/soh/assets/xml/objects/object_tp.xml b/soh/assets/xml/GC_NMQ_D/objects/object_tp.xml similarity index 100% rename from soh/assets/xml/objects/object_tp.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_tp.xml diff --git a/soh/assets/xml/objects/object_tr.xml b/soh/assets/xml/GC_NMQ_D/objects/object_tr.xml similarity index 100% rename from soh/assets/xml/objects/object_tr.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_tr.xml diff --git a/soh/assets/xml/objects/object_trap.xml b/soh/assets/xml/GC_NMQ_D/objects/object_trap.xml similarity index 100% rename from soh/assets/xml/objects/object_trap.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_trap.xml diff --git a/soh/assets/xml/objects/object_triforce_spot.xml b/soh/assets/xml/GC_NMQ_D/objects/object_triforce_spot.xml similarity index 100% rename from soh/assets/xml/objects/object_triforce_spot.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_triforce_spot.xml diff --git a/soh/assets/xml/objects/object_ts.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ts.xml similarity index 100% rename from soh/assets/xml/objects/object_ts.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ts.xml diff --git a/soh/assets/xml/objects/object_tsubo.xml b/soh/assets/xml/GC_NMQ_D/objects/object_tsubo.xml similarity index 100% rename from soh/assets/xml/objects/object_tsubo.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_tsubo.xml diff --git a/soh/assets/xml/objects/object_tw.xml b/soh/assets/xml/GC_NMQ_D/objects/object_tw.xml similarity index 100% rename from soh/assets/xml/objects/object_tw.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_tw.xml diff --git a/soh/assets/xml/objects/object_umajump.xml b/soh/assets/xml/GC_NMQ_D/objects/object_umajump.xml similarity index 100% rename from soh/assets/xml/objects/object_umajump.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_umajump.xml diff --git a/soh/assets/xml/objects/object_vali.xml b/soh/assets/xml/GC_NMQ_D/objects/object_vali.xml similarity index 100% rename from soh/assets/xml/objects/object_vali.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_vali.xml diff --git a/soh/assets/xml/objects/object_vase.xml b/soh/assets/xml/GC_NMQ_D/objects/object_vase.xml similarity index 100% rename from soh/assets/xml/objects/object_vase.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_vase.xml diff --git a/soh/assets/xml/objects/object_vm.xml b/soh/assets/xml/GC_NMQ_D/objects/object_vm.xml similarity index 100% rename from soh/assets/xml/objects/object_vm.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_vm.xml diff --git a/soh/assets/xml/objects/object_wallmaster.xml b/soh/assets/xml/GC_NMQ_D/objects/object_wallmaster.xml similarity index 100% rename from soh/assets/xml/objects/object_wallmaster.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_wallmaster.xml diff --git a/soh/assets/xml/objects/object_warp1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_warp1.xml similarity index 100% rename from soh/assets/xml/objects/object_warp1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_warp1.xml diff --git a/soh/assets/xml/objects/object_warp2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_warp2.xml similarity index 100% rename from soh/assets/xml/objects/object_warp2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_warp2.xml diff --git a/soh/assets/xml/objects/object_wf.xml b/soh/assets/xml/GC_NMQ_D/objects/object_wf.xml similarity index 100% rename from soh/assets/xml/objects/object_wf.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_wf.xml diff --git a/soh/assets/xml/objects/object_wood02.xml b/soh/assets/xml/GC_NMQ_D/objects/object_wood02.xml similarity index 100% rename from soh/assets/xml/objects/object_wood02.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_wood02.xml diff --git a/soh/assets/xml/objects/object_xc.xml b/soh/assets/xml/GC_NMQ_D/objects/object_xc.xml similarity index 100% rename from soh/assets/xml/objects/object_xc.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_xc.xml diff --git a/soh/assets/xml/objects/object_yabusame_point.xml b/soh/assets/xml/GC_NMQ_D/objects/object_yabusame_point.xml similarity index 100% rename from soh/assets/xml/objects/object_yabusame_point.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_yabusame_point.xml diff --git a/soh/assets/xml/objects/object_ydan_objects.xml b/soh/assets/xml/GC_NMQ_D/objects/object_ydan_objects.xml similarity index 100% rename from soh/assets/xml/objects/object_ydan_objects.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_ydan_objects.xml diff --git a/soh/assets/xml/objects/object_yukabyun.xml b/soh/assets/xml/GC_NMQ_D/objects/object_yukabyun.xml similarity index 100% rename from soh/assets/xml/objects/object_yukabyun.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_yukabyun.xml diff --git a/soh/assets/xml/objects/object_zf.xml b/soh/assets/xml/GC_NMQ_D/objects/object_zf.xml similarity index 100% rename from soh/assets/xml/objects/object_zf.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_zf.xml diff --git a/soh/assets/xml/objects/object_zg.xml b/soh/assets/xml/GC_NMQ_D/objects/object_zg.xml similarity index 100% rename from soh/assets/xml/objects/object_zg.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_zg.xml diff --git a/soh/assets/xml/objects/object_zl1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_zl1.xml similarity index 100% rename from soh/assets/xml/objects/object_zl1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_zl1.xml diff --git a/soh/assets/xml/objects/object_zl2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_zl2.xml similarity index 100% rename from soh/assets/xml/objects/object_zl2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_zl2.xml diff --git a/soh/assets/xml/objects/object_zl2_anime1.xml b/soh/assets/xml/GC_NMQ_D/objects/object_zl2_anime1.xml similarity index 100% rename from soh/assets/xml/objects/object_zl2_anime1.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_zl2_anime1.xml diff --git a/soh/assets/xml/objects/object_zl2_anime2.xml b/soh/assets/xml/GC_NMQ_D/objects/object_zl2_anime2.xml similarity index 100% rename from soh/assets/xml/objects/object_zl2_anime2.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_zl2_anime2.xml diff --git a/soh/assets/xml/objects/object_zl4.xml b/soh/assets/xml/GC_NMQ_D/objects/object_zl4.xml similarity index 100% rename from soh/assets/xml/objects/object_zl4.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_zl4.xml diff --git a/soh/assets/xml/objects/object_zo.xml b/soh/assets/xml/GC_NMQ_D/objects/object_zo.xml similarity index 100% rename from soh/assets/xml/objects/object_zo.xml rename to soh/assets/xml/GC_NMQ_D/objects/object_zo.xml diff --git a/soh/assets/xml/overlays/ovl_Arrow_Fire.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Arrow_Fire.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Arrow_Fire.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Arrow_Fire.xml diff --git a/soh/assets/xml/overlays/ovl_Arrow_Ice.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Arrow_Ice.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Arrow_Ice.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Arrow_Ice.xml diff --git a/soh/assets/xml/overlays/ovl_Arrow_Light.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Arrow_Light.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Arrow_Light.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Arrow_Light.xml diff --git a/soh/assets/xml/overlays/ovl_Bg_Ganon_Otyuka.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Bg_Ganon_Otyuka.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Bg_Ganon_Otyuka.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Bg_Ganon_Otyuka.xml diff --git a/soh/assets/xml/overlays/ovl_Bg_Jya_Cobra.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Bg_Jya_Cobra.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Bg_Jya_Cobra.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Bg_Jya_Cobra.xml diff --git a/soh/assets/xml/overlays/ovl_Boss_Dodongo.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Boss_Dodongo.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Boss_Dodongo.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Boss_Dodongo.xml diff --git a/soh/assets/xml/overlays/ovl_Boss_Ganon.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Boss_Ganon.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Boss_Ganon.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Boss_Ganon.xml diff --git a/soh/assets/xml/overlays/ovl_Boss_Ganon2.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Boss_Ganon2.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Boss_Ganon2.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Boss_Ganon2.xml diff --git a/soh/assets/xml/overlays/ovl_Boss_Sst.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Boss_Sst.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Boss_Sst.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Boss_Sst.xml diff --git a/soh/assets/xml/overlays/ovl_Demo_Shd.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Demo_Shd.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Demo_Shd.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Demo_Shd.xml diff --git a/soh/assets/xml/overlays/ovl_Elf_Msg.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Elf_Msg.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Elf_Msg.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Elf_Msg.xml diff --git a/soh/assets/xml/overlays/ovl_Elf_Msg2.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Elf_Msg2.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Elf_Msg2.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Elf_Msg2.xml diff --git a/soh/assets/xml/overlays/ovl_En_Bili.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Bili.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Bili.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Bili.xml diff --git a/soh/assets/xml/overlays/ovl_En_Clear_Tag.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Clear_Tag.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Clear_Tag.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Clear_Tag.xml diff --git a/soh/assets/xml/overlays/ovl_En_Ganon_Mant.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Ganon_Mant.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Ganon_Mant.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Ganon_Mant.xml diff --git a/soh/assets/xml/overlays/ovl_En_Ganon_Organ.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Ganon_Organ.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Ganon_Organ.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Ganon_Organ.xml diff --git a/soh/assets/xml/overlays/ovl_En_Holl.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Holl.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Holl.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Holl.xml diff --git a/soh/assets/xml/overlays/ovl_En_Jsjutan.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Jsjutan.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Jsjutan.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Jsjutan.xml diff --git a/soh/assets/xml/overlays/ovl_En_Kanban.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Kanban.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Kanban.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Kanban.xml diff --git a/soh/assets/xml/overlays/ovl_En_Sda.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Sda.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Sda.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Sda.xml diff --git a/soh/assets/xml/overlays/ovl_En_Ssh.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Ssh.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Ssh.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Ssh.xml diff --git a/soh/assets/xml/overlays/ovl_En_St.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_St.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_St.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_St.xml diff --git a/soh/assets/xml/overlays/ovl_En_Sth.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Sth.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_En_Sth.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_En_Sth.xml diff --git a/soh/assets/xml/overlays/ovl_End_Title.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_End_Title.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_End_Title.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_End_Title.xml diff --git a/soh/assets/xml/overlays/ovl_File_Choose.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_File_Choose.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_File_Choose.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_File_Choose.xml diff --git a/soh/assets/xml/overlays/ovl_Magic_Dark.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Magic_Dark.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Magic_Dark.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Magic_Dark.xml diff --git a/soh/assets/xml/overlays/ovl_Magic_Fire.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Magic_Fire.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Magic_Fire.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Magic_Fire.xml diff --git a/soh/assets/xml/overlays/ovl_Magic_Wind.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Magic_Wind.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Magic_Wind.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Magic_Wind.xml diff --git a/soh/assets/xml/overlays/ovl_Oceff_Spot.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Spot.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Oceff_Spot.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Spot.xml diff --git a/soh/assets/xml/overlays/ovl_Oceff_Storm.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Storm.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Oceff_Storm.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Storm.xml diff --git a/soh/assets/xml/overlays/ovl_Oceff_Wipe.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Wipe.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Oceff_Wipe.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Wipe.xml diff --git a/soh/assets/xml/overlays/ovl_Oceff_Wipe2.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Wipe2.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Oceff_Wipe2.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Wipe2.xml diff --git a/soh/assets/xml/overlays/ovl_Oceff_Wipe3.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Wipe3.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Oceff_Wipe3.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Wipe3.xml diff --git a/soh/assets/xml/overlays/ovl_Oceff_Wipe4.xml b/soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Wipe4.xml similarity index 100% rename from soh/assets/xml/overlays/ovl_Oceff_Wipe4.xml rename to soh/assets/xml/GC_NMQ_D/overlays/ovl_Oceff_Wipe4.xml diff --git a/soh/assets/xml/scenes/dungeons/Bmori1.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/Bmori1.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/Bmori1.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/Bmori1.xml diff --git a/soh/assets/xml/scenes/dungeons/FIRE_bs.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/FIRE_bs.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/FIRE_bs.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/FIRE_bs.xml diff --git a/soh/assets/xml/scenes/dungeons/HAKAdan.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/HAKAdan.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/HAKAdan.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/HAKAdan.xml diff --git a/soh/assets/xml/scenes/dungeons/HAKAdanCH.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/HAKAdanCH.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/HAKAdanCH.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/HAKAdanCH.xml diff --git a/soh/assets/xml/scenes/dungeons/HAKAdan_bs.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/HAKAdan_bs.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/HAKAdan_bs.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/HAKAdan_bs.xml diff --git a/soh/assets/xml/scenes/dungeons/HIDAN.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/HIDAN.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/HIDAN.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/HIDAN.xml diff --git a/soh/assets/xml/scenes/dungeons/MIZUsin.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/MIZUsin.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/MIZUsin.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/MIZUsin.xml diff --git a/soh/assets/xml/scenes/dungeons/MIZUsin_bs.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/MIZUsin_bs.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/MIZUsin_bs.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/MIZUsin_bs.xml diff --git a/soh/assets/xml/scenes/dungeons/bdan.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/bdan.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/bdan.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/bdan.xml diff --git a/soh/assets/xml/scenes/dungeons/bdan_boss.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/bdan_boss.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/bdan_boss.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/bdan_boss.xml diff --git a/soh/assets/xml/scenes/dungeons/ddan.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ddan.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ddan.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ddan.xml diff --git a/soh/assets/xml/scenes/dungeons/ddan_boss.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ddan_boss.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ddan_boss.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ddan_boss.xml diff --git a/soh/assets/xml/scenes/dungeons/ganon.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ganon.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon.xml diff --git a/soh/assets/xml/scenes/dungeons/ganon_boss.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_boss.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ganon_boss.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_boss.xml diff --git a/soh/assets/xml/scenes/dungeons/ganon_demo.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_demo.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ganon_demo.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_demo.xml diff --git a/soh/assets/xml/scenes/dungeons/ganon_final.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_final.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ganon_final.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_final.xml diff --git a/soh/assets/xml/scenes/dungeons/ganon_sonogo.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_sonogo.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ganon_sonogo.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_sonogo.xml diff --git a/soh/assets/xml/scenes/dungeons/ganon_tou.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_tou.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ganon_tou.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganon_tou.xml diff --git a/soh/assets/xml/scenes/dungeons/ganontika.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganontika.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ganontika.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganontika.xml diff --git a/soh/assets/xml/scenes/dungeons/ganontikasonogo.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganontikasonogo.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ganontikasonogo.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ganontikasonogo.xml diff --git a/soh/assets/xml/scenes/dungeons/gerudoway.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/gerudoway.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/gerudoway.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/gerudoway.xml diff --git a/soh/assets/xml/scenes/dungeons/ice_doukutu.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ice_doukutu.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ice_doukutu.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ice_doukutu.xml diff --git a/soh/assets/xml/scenes/dungeons/jyasinboss.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/jyasinboss.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/jyasinboss.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/jyasinboss.xml diff --git a/soh/assets/xml/scenes/dungeons/jyasinzou.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/jyasinzou.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/jyasinzou.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/jyasinzou.xml diff --git a/soh/assets/xml/scenes/dungeons/men.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/men.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/men.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/men.xml diff --git a/soh/assets/xml/scenes/dungeons/moribossroom.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/moribossroom.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/moribossroom.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/moribossroom.xml diff --git a/soh/assets/xml/scenes/dungeons/ydan.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ydan.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ydan.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ydan.xml diff --git a/soh/assets/xml/scenes/dungeons/ydan_boss.xml b/soh/assets/xml/GC_NMQ_D/scenes/dungeons/ydan_boss.xml similarity index 100% rename from soh/assets/xml/scenes/dungeons/ydan_boss.xml rename to soh/assets/xml/GC_NMQ_D/scenes/dungeons/ydan_boss.xml diff --git a/soh/assets/xml/scenes/indoors/bowling.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/bowling.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/bowling.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/bowling.xml diff --git a/soh/assets/xml/scenes/indoors/daiyousei_izumi.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/daiyousei_izumi.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/daiyousei_izumi.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/daiyousei_izumi.xml diff --git a/soh/assets/xml/scenes/indoors/hairal_niwa.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/hairal_niwa.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/hairal_niwa.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/hairal_niwa.xml diff --git a/soh/assets/xml/scenes/indoors/hairal_niwa2.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/hairal_niwa2.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/hairal_niwa2.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/hairal_niwa2.xml diff --git a/soh/assets/xml/scenes/indoors/hairal_niwa_n.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/hairal_niwa_n.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/hairal_niwa_n.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/hairal_niwa_n.xml diff --git a/soh/assets/xml/scenes/indoors/hakasitarelay.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/hakasitarelay.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/hakasitarelay.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/hakasitarelay.xml diff --git a/soh/assets/xml/scenes/indoors/hut.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/hut.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/hut.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/hut.xml diff --git a/soh/assets/xml/scenes/indoors/hylia_labo.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/hylia_labo.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/hylia_labo.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/hylia_labo.xml diff --git a/soh/assets/xml/scenes/indoors/impa.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/impa.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/impa.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/impa.xml diff --git a/soh/assets/xml/scenes/indoors/kakariko.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/kakariko.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/kakariko.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/kakariko.xml diff --git a/soh/assets/xml/scenes/indoors/kenjyanoma.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/kenjyanoma.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/kenjyanoma.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/kenjyanoma.xml diff --git a/soh/assets/xml/scenes/indoors/kokiri_home.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/kokiri_home.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/kokiri_home.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/kokiri_home.xml diff --git a/soh/assets/xml/scenes/indoors/kokiri_home3.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/kokiri_home3.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/kokiri_home3.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/kokiri_home3.xml diff --git a/soh/assets/xml/scenes/indoors/kokiri_home4.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/kokiri_home4.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/kokiri_home4.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/kokiri_home4.xml diff --git a/soh/assets/xml/scenes/indoors/kokiri_home5.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/kokiri_home5.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/kokiri_home5.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/kokiri_home5.xml diff --git a/soh/assets/xml/scenes/indoors/labo.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/labo.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/labo.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/labo.xml diff --git a/soh/assets/xml/scenes/indoors/link_home.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/link_home.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/link_home.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/link_home.xml diff --git a/soh/assets/xml/scenes/indoors/mahouya.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/mahouya.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/mahouya.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/mahouya.xml diff --git a/soh/assets/xml/scenes/indoors/malon_stable.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/malon_stable.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/malon_stable.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/malon_stable.xml diff --git a/soh/assets/xml/scenes/indoors/miharigoya.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/miharigoya.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/miharigoya.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/miharigoya.xml diff --git a/soh/assets/xml/scenes/indoors/nakaniwa.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/nakaniwa.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/nakaniwa.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/nakaniwa.xml diff --git a/soh/assets/xml/scenes/indoors/syatekijyou.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/syatekijyou.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/syatekijyou.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/syatekijyou.xml diff --git a/soh/assets/xml/scenes/indoors/takaraya.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/takaraya.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/takaraya.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/takaraya.xml diff --git a/soh/assets/xml/scenes/indoors/tent.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/tent.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/tent.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/tent.xml diff --git a/soh/assets/xml/scenes/indoors/tokinoma.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/tokinoma.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/tokinoma.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/tokinoma.xml diff --git a/soh/assets/xml/scenes/indoors/yousei_izumi_tate.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/yousei_izumi_tate.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/yousei_izumi_tate.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/yousei_izumi_tate.xml diff --git a/soh/assets/xml/scenes/indoors/yousei_izumi_yoko.xml b/soh/assets/xml/GC_NMQ_D/scenes/indoors/yousei_izumi_yoko.xml similarity index 100% rename from soh/assets/xml/scenes/indoors/yousei_izumi_yoko.xml rename to soh/assets/xml/GC_NMQ_D/scenes/indoors/yousei_izumi_yoko.xml diff --git a/soh/assets/xml/scenes/misc/enrui.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/enrui.xml similarity index 100% rename from soh/assets/xml/scenes/misc/enrui.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/enrui.xml diff --git a/soh/assets/xml/scenes/misc/entra_n.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/entra_n.xml similarity index 100% rename from soh/assets/xml/scenes/misc/entra_n.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/entra_n.xml diff --git a/soh/assets/xml/scenes/misc/hakaana.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/hakaana.xml similarity index 100% rename from soh/assets/xml/scenes/misc/hakaana.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/hakaana.xml diff --git a/soh/assets/xml/scenes/misc/hakaana2.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/hakaana2.xml similarity index 100% rename from soh/assets/xml/scenes/misc/hakaana2.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/hakaana2.xml diff --git a/soh/assets/xml/scenes/misc/hakaana_ouke.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/hakaana_ouke.xml similarity index 100% rename from soh/assets/xml/scenes/misc/hakaana_ouke.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/hakaana_ouke.xml diff --git a/soh/assets/xml/scenes/misc/hiral_demo.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/hiral_demo.xml similarity index 100% rename from soh/assets/xml/scenes/misc/hiral_demo.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/hiral_demo.xml diff --git a/soh/assets/xml/scenes/misc/kakariko3.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/kakariko3.xml similarity index 100% rename from soh/assets/xml/scenes/misc/kakariko3.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/kakariko3.xml diff --git a/soh/assets/xml/scenes/misc/kakusiana.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/kakusiana.xml similarity index 100% rename from soh/assets/xml/scenes/misc/kakusiana.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/kakusiana.xml diff --git a/soh/assets/xml/scenes/misc/kinsuta.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/kinsuta.xml similarity index 100% rename from soh/assets/xml/scenes/misc/kinsuta.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/kinsuta.xml diff --git a/soh/assets/xml/scenes/misc/market_alley.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/market_alley.xml similarity index 100% rename from soh/assets/xml/scenes/misc/market_alley.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/market_alley.xml diff --git a/soh/assets/xml/scenes/misc/market_alley_n.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/market_alley_n.xml similarity index 100% rename from soh/assets/xml/scenes/misc/market_alley_n.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/market_alley_n.xml diff --git a/soh/assets/xml/scenes/misc/market_day.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/market_day.xml similarity index 100% rename from soh/assets/xml/scenes/misc/market_day.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/market_day.xml diff --git a/soh/assets/xml/scenes/misc/market_night.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/market_night.xml similarity index 100% rename from soh/assets/xml/scenes/misc/market_night.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/market_night.xml diff --git a/soh/assets/xml/scenes/misc/market_ruins.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/market_ruins.xml similarity index 100% rename from soh/assets/xml/scenes/misc/market_ruins.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/market_ruins.xml diff --git a/soh/assets/xml/scenes/misc/shrine.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/shrine.xml similarity index 100% rename from soh/assets/xml/scenes/misc/shrine.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/shrine.xml diff --git a/soh/assets/xml/scenes/misc/shrine_n.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/shrine_n.xml similarity index 100% rename from soh/assets/xml/scenes/misc/shrine_n.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/shrine_n.xml diff --git a/soh/assets/xml/scenes/misc/shrine_r.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/shrine_r.xml similarity index 100% rename from soh/assets/xml/scenes/misc/shrine_r.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/shrine_r.xml diff --git a/soh/assets/xml/scenes/misc/turibori.xml b/soh/assets/xml/GC_NMQ_D/scenes/misc/turibori.xml similarity index 100% rename from soh/assets/xml/scenes/misc/turibori.xml rename to soh/assets/xml/GC_NMQ_D/scenes/misc/turibori.xml diff --git a/soh/assets/xml/scenes/overworld/entra.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/entra.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/entra.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/entra.xml diff --git a/soh/assets/xml/scenes/overworld/souko.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/souko.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/souko.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/souko.xml diff --git a/soh/assets/xml/scenes/overworld/spot00.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot00.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot00.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot00.xml diff --git a/soh/assets/xml/scenes/overworld/spot01.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot01.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot01.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot01.xml diff --git a/soh/assets/xml/scenes/overworld/spot02.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot02.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot02.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot02.xml diff --git a/soh/assets/xml/scenes/overworld/spot03.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot03.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot03.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot03.xml diff --git a/soh/assets/xml/scenes/overworld/spot04.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot04.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot04.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot04.xml diff --git a/soh/assets/xml/scenes/overworld/spot05.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot05.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot05.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot05.xml diff --git a/soh/assets/xml/scenes/overworld/spot06.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot06.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot06.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot06.xml diff --git a/soh/assets/xml/scenes/overworld/spot07.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot07.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot07.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot07.xml diff --git a/soh/assets/xml/scenes/overworld/spot08.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot08.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot08.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot08.xml diff --git a/soh/assets/xml/scenes/overworld/spot09.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot09.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot09.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot09.xml diff --git a/soh/assets/xml/scenes/overworld/spot10.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot10.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot10.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot10.xml diff --git a/soh/assets/xml/scenes/overworld/spot11.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot11.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot11.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot11.xml diff --git a/soh/assets/xml/scenes/overworld/spot12.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot12.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot12.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot12.xml diff --git a/soh/assets/xml/scenes/overworld/spot13.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot13.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot13.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot13.xml diff --git a/soh/assets/xml/scenes/overworld/spot15.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot15.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot15.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot15.xml diff --git a/soh/assets/xml/scenes/overworld/spot16.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot16.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot16.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot16.xml diff --git a/soh/assets/xml/scenes/overworld/spot17.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot17.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot17.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot17.xml diff --git a/soh/assets/xml/scenes/overworld/spot18.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot18.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot18.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot18.xml diff --git a/soh/assets/xml/scenes/overworld/spot20.xml b/soh/assets/xml/GC_NMQ_D/scenes/overworld/spot20.xml similarity index 100% rename from soh/assets/xml/scenes/overworld/spot20.xml rename to soh/assets/xml/GC_NMQ_D/scenes/overworld/spot20.xml diff --git a/soh/assets/xml/scenes/shops/alley_shop.xml b/soh/assets/xml/GC_NMQ_D/scenes/shops/alley_shop.xml similarity index 100% rename from soh/assets/xml/scenes/shops/alley_shop.xml rename to soh/assets/xml/GC_NMQ_D/scenes/shops/alley_shop.xml diff --git a/soh/assets/xml/scenes/shops/drag.xml b/soh/assets/xml/GC_NMQ_D/scenes/shops/drag.xml similarity index 100% rename from soh/assets/xml/scenes/shops/drag.xml rename to soh/assets/xml/GC_NMQ_D/scenes/shops/drag.xml diff --git a/soh/assets/xml/scenes/shops/face_shop.xml b/soh/assets/xml/GC_NMQ_D/scenes/shops/face_shop.xml similarity index 100% rename from soh/assets/xml/scenes/shops/face_shop.xml rename to soh/assets/xml/GC_NMQ_D/scenes/shops/face_shop.xml diff --git a/soh/assets/xml/scenes/shops/golon.xml b/soh/assets/xml/GC_NMQ_D/scenes/shops/golon.xml similarity index 100% rename from soh/assets/xml/scenes/shops/golon.xml rename to soh/assets/xml/GC_NMQ_D/scenes/shops/golon.xml diff --git a/soh/assets/xml/scenes/shops/kokiri_shop.xml b/soh/assets/xml/GC_NMQ_D/scenes/shops/kokiri_shop.xml similarity index 100% rename from soh/assets/xml/scenes/shops/kokiri_shop.xml rename to soh/assets/xml/GC_NMQ_D/scenes/shops/kokiri_shop.xml diff --git a/soh/assets/xml/scenes/shops/night_shop.xml b/soh/assets/xml/GC_NMQ_D/scenes/shops/night_shop.xml similarity index 100% rename from soh/assets/xml/scenes/shops/night_shop.xml rename to soh/assets/xml/GC_NMQ_D/scenes/shops/night_shop.xml diff --git a/soh/assets/xml/scenes/shops/shop1.xml b/soh/assets/xml/GC_NMQ_D/scenes/shops/shop1.xml similarity index 100% rename from soh/assets/xml/scenes/shops/shop1.xml rename to soh/assets/xml/GC_NMQ_D/scenes/shops/shop1.xml diff --git a/soh/assets/xml/scenes/shops/zoora.xml b/soh/assets/xml/GC_NMQ_D/scenes/shops/zoora.xml similarity index 100% rename from soh/assets/xml/scenes/shops/zoora.xml rename to soh/assets/xml/GC_NMQ_D/scenes/shops/zoora.xml diff --git a/soh/assets/xml/scenes/test_levels/besitu.xml b/soh/assets/xml/GC_NMQ_D/scenes/test_levels/besitu.xml similarity index 100% rename from soh/assets/xml/scenes/test_levels/besitu.xml rename to soh/assets/xml/GC_NMQ_D/scenes/test_levels/besitu.xml diff --git a/soh/assets/xml/scenes/test_levels/depth_test.xml b/soh/assets/xml/GC_NMQ_D/scenes/test_levels/depth_test.xml similarity index 100% rename from soh/assets/xml/scenes/test_levels/depth_test.xml rename to soh/assets/xml/GC_NMQ_D/scenes/test_levels/depth_test.xml diff --git a/soh/assets/xml/scenes/test_levels/sasatest.xml b/soh/assets/xml/GC_NMQ_D/scenes/test_levels/sasatest.xml similarity index 100% rename from soh/assets/xml/scenes/test_levels/sasatest.xml rename to soh/assets/xml/GC_NMQ_D/scenes/test_levels/sasatest.xml diff --git a/soh/assets/xml/scenes/test_levels/sutaru.xml b/soh/assets/xml/GC_NMQ_D/scenes/test_levels/sutaru.xml similarity index 100% rename from soh/assets/xml/scenes/test_levels/sutaru.xml rename to soh/assets/xml/GC_NMQ_D/scenes/test_levels/sutaru.xml diff --git a/soh/assets/xml/scenes/test_levels/syotes.xml b/soh/assets/xml/GC_NMQ_D/scenes/test_levels/syotes.xml similarity index 100% rename from soh/assets/xml/scenes/test_levels/syotes.xml rename to soh/assets/xml/GC_NMQ_D/scenes/test_levels/syotes.xml diff --git a/soh/assets/xml/scenes/test_levels/syotes2.xml b/soh/assets/xml/GC_NMQ_D/scenes/test_levels/syotes2.xml similarity index 100% rename from soh/assets/xml/scenes/test_levels/syotes2.xml rename to soh/assets/xml/GC_NMQ_D/scenes/test_levels/syotes2.xml diff --git a/soh/assets/xml/scenes/test_levels/test01.xml b/soh/assets/xml/GC_NMQ_D/scenes/test_levels/test01.xml similarity index 100% rename from soh/assets/xml/scenes/test_levels/test01.xml rename to soh/assets/xml/GC_NMQ_D/scenes/test_levels/test01.xml diff --git a/soh/assets/xml/scenes/test_levels/testroom.xml b/soh/assets/xml/GC_NMQ_D/scenes/test_levels/testroom.xml similarity index 100% rename from soh/assets/xml/scenes/test_levels/testroom.xml rename to soh/assets/xml/GC_NMQ_D/scenes/test_levels/testroom.xml diff --git a/soh/assets/xml/text/elf_message_field.xml b/soh/assets/xml/GC_NMQ_D/text/elf_message_field.xml similarity index 100% rename from soh/assets/xml/text/elf_message_field.xml rename to soh/assets/xml/GC_NMQ_D/text/elf_message_field.xml diff --git a/soh/assets/xml/text/elf_message_ydan.xml b/soh/assets/xml/GC_NMQ_D/text/elf_message_ydan.xml similarity index 100% rename from soh/assets/xml/text/elf_message_ydan.xml rename to soh/assets/xml/GC_NMQ_D/text/elf_message_ydan.xml diff --git a/soh/assets/xml/text/nes_message_data_static.xml b/soh/assets/xml/GC_NMQ_D/text/nes_message_data_static.xml similarity index 100% rename from soh/assets/xml/text/nes_message_data_static.xml rename to soh/assets/xml/GC_NMQ_D/text/nes_message_data_static.xml diff --git a/soh/assets/xml/text/staff_message_data_static.xml b/soh/assets/xml/GC_NMQ_D/text/staff_message_data_static.xml similarity index 100% rename from soh/assets/xml/text/staff_message_data_static.xml rename to soh/assets/xml/GC_NMQ_D/text/staff_message_data_static.xml diff --git a/soh/assets/xml/textures/backgrounds.xml b/soh/assets/xml/GC_NMQ_D/textures/backgrounds.xml similarity index 100% rename from soh/assets/xml/textures/backgrounds.xml rename to soh/assets/xml/GC_NMQ_D/textures/backgrounds.xml diff --git a/soh/assets/xml/textures/do_action_static.xml b/soh/assets/xml/GC_NMQ_D/textures/do_action_static.xml similarity index 100% rename from soh/assets/xml/textures/do_action_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/do_action_static.xml diff --git a/soh/assets/xml/textures/icon_item_24_static.xml b/soh/assets/xml/GC_NMQ_D/textures/icon_item_24_static.xml similarity index 100% rename from soh/assets/xml/textures/icon_item_24_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/icon_item_24_static.xml diff --git a/soh/assets/xml/textures/icon_item_dungeon_static.xml b/soh/assets/xml/GC_NMQ_D/textures/icon_item_dungeon_static.xml similarity index 100% rename from soh/assets/xml/textures/icon_item_dungeon_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/icon_item_dungeon_static.xml diff --git a/soh/assets/xml/textures/icon_item_field_static.xml b/soh/assets/xml/GC_NMQ_D/textures/icon_item_field_static.xml similarity index 100% rename from soh/assets/xml/textures/icon_item_field_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/icon_item_field_static.xml diff --git a/soh/assets/xml/textures/icon_item_fra_static.xml b/soh/assets/xml/GC_NMQ_D/textures/icon_item_fra_static.xml similarity index 100% rename from soh/assets/xml/textures/icon_item_fra_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/icon_item_fra_static.xml diff --git a/soh/assets/xml/textures/icon_item_gameover_static.xml b/soh/assets/xml/GC_NMQ_D/textures/icon_item_gameover_static.xml similarity index 100% rename from soh/assets/xml/textures/icon_item_gameover_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/icon_item_gameover_static.xml diff --git a/soh/assets/xml/textures/icon_item_ger_static.xml b/soh/assets/xml/GC_NMQ_D/textures/icon_item_ger_static.xml similarity index 100% rename from soh/assets/xml/textures/icon_item_ger_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/icon_item_ger_static.xml diff --git a/soh/assets/xml/textures/icon_item_nes_static.xml b/soh/assets/xml/GC_NMQ_D/textures/icon_item_nes_static.xml similarity index 100% rename from soh/assets/xml/textures/icon_item_nes_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/icon_item_nes_static.xml diff --git a/soh/assets/xml/textures/icon_item_static.xml b/soh/assets/xml/GC_NMQ_D/textures/icon_item_static.xml similarity index 100% rename from soh/assets/xml/textures/icon_item_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/icon_item_static.xml diff --git a/soh/assets/xml/textures/item_name_static.xml b/soh/assets/xml/GC_NMQ_D/textures/item_name_static.xml similarity index 100% rename from soh/assets/xml/textures/item_name_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/item_name_static.xml diff --git a/soh/assets/xml/textures/map_48x85_static.xml b/soh/assets/xml/GC_NMQ_D/textures/map_48x85_static.xml similarity index 100% rename from soh/assets/xml/textures/map_48x85_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/map_48x85_static.xml diff --git a/soh/assets/xml/textures/map_grand_static.xml b/soh/assets/xml/GC_NMQ_D/textures/map_grand_static.xml similarity index 100% rename from soh/assets/xml/textures/map_grand_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/map_grand_static.xml diff --git a/soh/assets/xml/textures/map_i_static.xml b/soh/assets/xml/GC_NMQ_D/textures/map_i_static.xml similarity index 100% rename from soh/assets/xml/textures/map_i_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/map_i_static.xml diff --git a/soh/assets/xml/textures/map_name_static.xml b/soh/assets/xml/GC_NMQ_D/textures/map_name_static.xml similarity index 100% rename from soh/assets/xml/textures/map_name_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/map_name_static.xml diff --git a/soh/assets/xml/textures/message_static.xml b/soh/assets/xml/GC_NMQ_D/textures/message_static.xml similarity index 100% rename from soh/assets/xml/textures/message_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/message_static.xml diff --git a/soh/assets/xml/textures/message_texture_static.xml b/soh/assets/xml/GC_NMQ_D/textures/message_texture_static.xml similarity index 100% rename from soh/assets/xml/textures/message_texture_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/message_texture_static.xml diff --git a/soh/assets/xml/textures/nes_font_static.xml b/soh/assets/xml/GC_NMQ_D/textures/nes_font_static.xml similarity index 100% rename from soh/assets/xml/textures/nes_font_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/nes_font_static.xml diff --git a/soh/assets/xml/textures/nintendo_rogo_static.xml b/soh/assets/xml/GC_NMQ_D/textures/nintendo_rogo_static.xml similarity index 100% rename from soh/assets/xml/textures/nintendo_rogo_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/nintendo_rogo_static.xml diff --git a/soh/assets/xml/textures/parameter_static.xml b/soh/assets/xml/GC_NMQ_D/textures/parameter_static.xml similarity index 100% rename from soh/assets/xml/textures/parameter_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/parameter_static.xml diff --git a/soh/assets/xml/textures/place_title_cards.xml b/soh/assets/xml/GC_NMQ_D/textures/place_title_cards.xml similarity index 100% rename from soh/assets/xml/textures/place_title_cards.xml rename to soh/assets/xml/GC_NMQ_D/textures/place_title_cards.xml diff --git a/soh/assets/xml/textures/skyboxes.xml b/soh/assets/xml/GC_NMQ_D/textures/skyboxes.xml similarity index 100% rename from soh/assets/xml/textures/skyboxes.xml rename to soh/assets/xml/GC_NMQ_D/textures/skyboxes.xml diff --git a/soh/assets/xml/textures/title_static.xml b/soh/assets/xml/GC_NMQ_D/textures/title_static.xml similarity index 100% rename from soh/assets/xml/textures/title_static.xml rename to soh/assets/xml/GC_NMQ_D/textures/title_static.xml diff --git a/soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_circle.xml b/soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_circle.xml new file mode 100644 index 000000000..a3add03bc --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_circle.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_triforce.xml b/soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_triforce.xml new file mode 100644 index 000000000..f4eff13ae --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_triforce.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_wipe1.xml b/soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_wipe1.xml new file mode 100644 index 000000000..537706cd1 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/code/fbdemo_wipe1.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/misc/link_animetion.xml b/soh/assets/xml/GC_NMQ_PAL_F/misc/link_animetion.xml new file mode 100644 index 000000000..9de1e92d3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/misc/link_animetion.xml @@ -0,0 +1,577 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_dangeon_keep.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_dangeon_keep.xml new file mode 100644 index 000000000..d16eb4c41 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_dangeon_keep.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_field_keep.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_field_keep.xml new file mode 100644 index 000000000..28fa975d7 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_field_keep.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_keep.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_keep.xml new file mode 100644 index 000000000..45c669307 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/gameplay_keep.xml @@ -0,0 +1,960 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_Bb.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_Bb.xml new file mode 100644 index 000000000..5d04bde45 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_Bb.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ahg.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ahg.xml new file mode 100644 index 000000000..a32c00914 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ahg.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_am.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_am.xml new file mode 100644 index 000000000..0a4b88ddf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_am.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ane.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ane.xml new file mode 100644 index 000000000..1e29b351e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ane.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ani.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ani.xml new file mode 100644 index 000000000..c69656043 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ani.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_anubice.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_anubice.xml new file mode 100644 index 000000000..2140187e4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_anubice.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_aob.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_aob.xml new file mode 100644 index 000000000..e6202d0cf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_aob.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_b_heart.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_b_heart.xml new file mode 100644 index 000000000..00f7cd677 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_b_heart.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bba.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bba.xml new file mode 100644 index 000000000..ccc5c2136 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bba.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bdan_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bdan_objects.xml new file mode 100644 index 000000000..dcd56d385 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bdan_objects.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bdoor.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bdoor.xml new file mode 100644 index 000000000..644c06ea8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bdoor.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bg.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bg.xml new file mode 100644 index 000000000..791226b71 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bg.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bigokuta.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bigokuta.xml new file mode 100644 index 000000000..1c7d39e31 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bigokuta.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bird.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bird.xml new file mode 100644 index 000000000..167a5022d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bird.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bji.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bji.xml new file mode 100644 index 000000000..e6b6c4221 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bji.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bl.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bl.xml new file mode 100644 index 000000000..1c2ef4ec6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bl.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_blkobj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_blkobj.xml new file mode 100644 index 000000000..a073077b8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_blkobj.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bob.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bob.xml new file mode 100644 index 000000000..289e994e4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bob.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_boj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_boj.xml new file mode 100644 index 000000000..4cc39906e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_boj.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bombf.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bombf.xml new file mode 100644 index 000000000..83e60248d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bombf.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bombiwa.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bombiwa.xml new file mode 100644 index 000000000..26ab6b4f3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bombiwa.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bowl.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bowl.xml new file mode 100644 index 000000000..ffe6d43db --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bowl.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_box.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_box.xml new file mode 100644 index 000000000..efcec619b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_box.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_brob.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_brob.xml new file mode 100644 index 000000000..718dcd561 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_brob.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bubble.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bubble.xml new file mode 100644 index 000000000..f5de18692 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bubble.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bv.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bv.xml new file mode 100644 index 000000000..83ff039f5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bv.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bw.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bw.xml new file mode 100644 index 000000000..f7d5ecead --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bw.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bwall.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bwall.xml new file mode 100644 index 000000000..d4f43ddc1 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bwall.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bxa.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bxa.xml new file mode 100644 index 000000000..fb78c117e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_bxa.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cne.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cne.xml new file mode 100644 index 000000000..ce9c16082 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cne.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cob.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cob.xml new file mode 100644 index 000000000..ba051cfa7 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cob.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cow.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cow.xml new file mode 100644 index 000000000..5d067c329 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cow.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_crow.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_crow.xml new file mode 100644 index 000000000..77337c644 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_crow.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cs.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cs.xml new file mode 100644 index 000000000..83804ccaf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_cs.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_elevator.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_elevator.xml new file mode 100644 index 000000000..6be59c154 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_elevator.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_hsblock.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_hsblock.xml new file mode 100644 index 000000000..b9111b38b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_hsblock.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_lift.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_lift.xml new file mode 100644 index 000000000..291238519 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_d_lift.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_daiku.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_daiku.xml new file mode 100644 index 000000000..1524c7a26 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_daiku.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ddan_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ddan_objects.xml new file mode 100644 index 000000000..3fc563b96 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ddan_objects.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekubaba.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekubaba.xml new file mode 100644 index 000000000..7202a833f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekubaba.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekujr.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekujr.xml new file mode 100644 index 000000000..e906bf61c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekujr.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekunuts.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekunuts.xml new file mode 100644 index 000000000..5fceef416 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dekunuts.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_6k.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_6k.xml new file mode 100644 index 000000000..73058d5e4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_6k.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_kekkai.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_kekkai.xml new file mode 100644 index 000000000..1b9c9b402 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_kekkai.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_tre_lgt.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_tre_lgt.xml new file mode 100644 index 000000000..9ea19012b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_demo_tre_lgt.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dh.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dh.xml new file mode 100644 index 000000000..7a52d7dbe --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dh.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dnk.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dnk.xml new file mode 100644 index 000000000..b1e79464b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dnk.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dns.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dns.xml new file mode 100644 index 000000000..086c4bd11 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dns.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dodojr.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dodojr.xml new file mode 100644 index 000000000..4dfd7d6e4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dodojr.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dodongo.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dodongo.xml new file mode 100644 index 000000000..779e20e9d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dodongo.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dog.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dog.xml new file mode 100644 index 000000000..ef00442b6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dog.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_door_gerudo.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_door_gerudo.xml new file mode 100644 index 000000000..2f1726204 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_door_gerudo.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_door_killer.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_door_killer.xml new file mode 100644 index 000000000..a37f590d6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_door_killer.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ds.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ds.xml new file mode 100644 index 000000000..0413a9e2e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ds.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ds2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ds2.xml new file mode 100644 index 000000000..683bcc68d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ds2.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_du.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_du.xml new file mode 100644 index 000000000..44bbd1aa0 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_du.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dy_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dy_obj.xml new file mode 100644 index 000000000..4d141d546 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_dy_obj.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ec.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ec.xml new file mode 100644 index 000000000..7ec83e284 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ec.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_crystal_light.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_crystal_light.xml new file mode 100644 index 000000000..9215b6a39 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_crystal_light.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_doughnut.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_doughnut.xml new file mode 100644 index 000000000..7f12c56f5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_doughnut.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_erupc.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_erupc.xml new file mode 100644 index 000000000..800d9535f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_erupc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_fire_ball.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_fire_ball.xml new file mode 100644 index 000000000..2fc65b16f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_fire_ball.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_flash.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_flash.xml new file mode 100644 index 000000000..5f962f162 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_flash.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_lgt_shower.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_lgt_shower.xml new file mode 100644 index 000000000..67ef5ce7e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_lgt_shower.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_star_field.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_star_field.xml new file mode 100644 index 000000000..00b47c460 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_star_field.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_tw.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_tw.xml new file mode 100644 index 000000000..de5376569 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_efc_tw.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ei.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ei.xml new file mode 100644 index 000000000..e4132491f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ei.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fa.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fa.xml new file mode 100644 index 000000000..2f1bf9a5e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fa.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fd.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fd.xml new file mode 100644 index 000000000..1b96e9f22 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fd.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fd2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fd2.xml new file mode 100644 index 000000000..8689098b9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fd2.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fhg.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fhg.xml new file mode 100644 index 000000000..f3a4a55ca --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fhg.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fire.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fire.xml new file mode 100644 index 000000000..49bf620cb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fire.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_firefly.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_firefly.xml new file mode 100644 index 000000000..8c26a4341 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_firefly.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fish.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fish.xml new file mode 100644 index 000000000..f5ad4f6da --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fish.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fr.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fr.xml new file mode 100644 index 000000000..25ee2ad42 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fr.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fu.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fu.xml new file mode 100644 index 000000000..82c449e3d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fu.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fw.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fw.xml new file mode 100644 index 000000000..e71f83092 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fw.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fz.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fz.xml new file mode 100644 index 000000000..dad6fec5c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_fz.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon.xml new file mode 100644 index 000000000..96adabb2b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon2.xml new file mode 100644 index 000000000..8b66cfcc2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon2.xml @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime1.xml new file mode 100644 index 000000000..6021fdd9b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime1.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime2.xml new file mode 100644 index 000000000..96121689e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime2.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime3.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime3.xml new file mode 100644 index 000000000..2af1e94f9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_anime3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_objects.xml new file mode 100644 index 000000000..5e32610ff --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ganon_objects.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ge1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ge1.xml new file mode 100644 index 000000000..79e0768b8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ge1.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_geff.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_geff.xml new file mode 100644 index 000000000..f0667743b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_geff.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_geldb.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_geldb.xml new file mode 100644 index 000000000..a1dbd18f4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_geldb.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_arrow.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_arrow.xml new file mode 100644 index 000000000..4b58787a9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_arrow.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_arrowcase.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_arrowcase.xml new file mode 100644 index 000000000..267b0a734 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_arrowcase.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bean.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bean.xml new file mode 100644 index 000000000..e74247816 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bean.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bomb_1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bomb_1.xml new file mode 100644 index 000000000..bae86c11d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bomb_1.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bomb_2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bomb_2.xml new file mode 100644 index 000000000..1400c4a4d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bomb_2.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bombpouch.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bombpouch.xml new file mode 100644 index 000000000..07134748c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bombpouch.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_boomerang.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_boomerang.xml new file mode 100644 index 000000000..3c1a0fe7f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_boomerang.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_boots_2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_boots_2.xml new file mode 100644 index 000000000..8e9cd1028 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_boots_2.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bosskey.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bosskey.xml new file mode 100644 index 000000000..e5e4bc86c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bosskey.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bottle.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bottle.xml new file mode 100644 index 000000000..3b0884a03 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bottle.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bottle_letter.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bottle_letter.xml new file mode 100644 index 000000000..443219caf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bottle_letter.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bow.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bow.xml new file mode 100644 index 000000000..946e9c496 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bow.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bracelet.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bracelet.xml new file mode 100644 index 000000000..5a0b62a60 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_bracelet.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_brokensword.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_brokensword.xml new file mode 100644 index 000000000..408741ac5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_brokensword.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_butterfly.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_butterfly.xml new file mode 100644 index 000000000..76ac70609 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_butterfly.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_clothes.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_clothes.xml new file mode 100644 index 000000000..2a10dce11 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_clothes.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_coin.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_coin.xml new file mode 100644 index 000000000..22e29f255 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_coin.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_compass.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_compass.xml new file mode 100644 index 000000000..076229b11 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_compass.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_dekupouch.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_dekupouch.xml new file mode 100644 index 000000000..3d6d95d98 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_dekupouch.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_egg.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_egg.xml new file mode 100644 index 000000000..2b2e2847d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_egg.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_eye_lotion.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_eye_lotion.xml new file mode 100644 index 000000000..5128c5f6f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_eye_lotion.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_fire.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_fire.xml new file mode 100644 index 000000000..a57fba6e8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_fire.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_fish.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_fish.xml new file mode 100644 index 000000000..edb39dc29 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_fish.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_frog.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_frog.xml new file mode 100644 index 000000000..f180fd267 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_frog.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gerudo.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gerudo.xml new file mode 100644 index 000000000..3be8d3462 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gerudo.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gerudomask.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gerudomask.xml new file mode 100644 index 000000000..b53bf24af --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gerudomask.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ghost.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ghost.xml new file mode 100644 index 000000000..186f4c74b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ghost.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_glasses.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_glasses.xml new file mode 100644 index 000000000..63d32ab5a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_glasses.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gloves.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gloves.xml new file mode 100644 index 000000000..1b4282dca --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_gloves.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_goddess.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_goddess.xml new file mode 100644 index 000000000..50cbdd891 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_goddess.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_golonmask.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_golonmask.xml new file mode 100644 index 000000000..98f53f1c2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_golonmask.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_grass.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_grass.xml new file mode 100644 index 000000000..ae7834201 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_grass.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hammer.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hammer.xml new file mode 100644 index 000000000..feb5c8659 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hammer.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_heart.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_heart.xml new file mode 100644 index 000000000..48e78b1b5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_heart.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hearts.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hearts.xml new file mode 100644 index 000000000..d2e763e63 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hearts.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hookshot.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hookshot.xml new file mode 100644 index 000000000..a6b3b0fda --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hookshot.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hoverboots.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hoverboots.xml new file mode 100644 index 000000000..c4a67877b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_hoverboots.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_insect.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_insect.xml new file mode 100644 index 000000000..7af5b5b3b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_insect.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_jewel.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_jewel.xml new file mode 100644 index 000000000..e83c65116 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_jewel.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_key.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_key.xml new file mode 100644 index 000000000..a37d45a71 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_key.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ki_tan_mask.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ki_tan_mask.xml new file mode 100644 index 000000000..f66535af3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ki_tan_mask.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_letter.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_letter.xml new file mode 100644 index 000000000..167a7ff5d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_letter.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_liquid.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_liquid.xml new file mode 100644 index 000000000..5eeeca0fd --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_liquid.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_longsword.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_longsword.xml new file mode 100644 index 000000000..7161e42e3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_longsword.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_m_arrow.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_m_arrow.xml new file mode 100644 index 000000000..0fd659ae9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_m_arrow.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_magicpot.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_magicpot.xml new file mode 100644 index 000000000..7623e6353 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_magicpot.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_map.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_map.xml new file mode 100644 index 000000000..8887dd22c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_map.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_medal.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_medal.xml new file mode 100644 index 000000000..28e5b1e68 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_medal.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_melody.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_melody.xml new file mode 100644 index 000000000..b01fca953 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_melody.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_milk.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_milk.xml new file mode 100644 index 000000000..00b9530d9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_milk.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_mushroom.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_mushroom.xml new file mode 100644 index 000000000..5b19bca74 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_mushroom.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_niwatori.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_niwatori.xml new file mode 100644 index 000000000..713cc1ce5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_niwatori.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_nuts.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_nuts.xml new file mode 100644 index 000000000..5508fe856 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_nuts.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ocarina.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ocarina.xml new file mode 100644 index 000000000..7693cc122 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ocarina.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ocarina_0.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ocarina_0.xml new file mode 100644 index 000000000..336d33894 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ocarina_0.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_pachinko.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_pachinko.xml new file mode 100644 index 000000000..5f808baf9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_pachinko.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_powder.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_powder.xml new file mode 100644 index 000000000..fb7dc0155 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_powder.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_prescription.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_prescription.xml new file mode 100644 index 000000000..081de301c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_prescription.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_purse.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_purse.xml new file mode 100644 index 000000000..3034942ff --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_purse.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_rabit_mask.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_rabit_mask.xml new file mode 100644 index 000000000..75f855550 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_rabit_mask.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_redead_mask.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_redead_mask.xml new file mode 100644 index 000000000..7de08487f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_redead_mask.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_rupy.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_rupy.xml new file mode 100644 index 000000000..0a1af96d0 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_rupy.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_saw.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_saw.xml new file mode 100644 index 000000000..dcc038b7c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_saw.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_scale.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_scale.xml new file mode 100644 index 000000000..1cf5de5b9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_scale.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_seed.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_seed.xml new file mode 100644 index 000000000..82c15c82d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_seed.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_1.xml new file mode 100644 index 000000000..2e9369569 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_1.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_2.xml new file mode 100644 index 000000000..176ae025f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_2.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_3.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_3.xml new file mode 100644 index 000000000..250bf7fea --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_shield_3.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_skj_mask.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_skj_mask.xml new file mode 100644 index 000000000..e6c90f76f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_skj_mask.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_soldout.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_soldout.xml new file mode 100644 index 000000000..ae3f4685f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_soldout.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_soul.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_soul.xml new file mode 100644 index 000000000..76ffc5685 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_soul.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_stick.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_stick.xml new file mode 100644 index 000000000..fed89f465 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_stick.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_sutaru.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_sutaru.xml new file mode 100644 index 000000000..a2606afbe --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_sutaru.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_sword_1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_sword_1.xml new file mode 100644 index 000000000..e1119abca --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_sword_1.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ticketstone.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ticketstone.xml new file mode 100644 index 000000000..0fa37fe11 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_ticketstone.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_truth_mask.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_truth_mask.xml new file mode 100644 index 000000000..f28c7cbca --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_truth_mask.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_zoramask.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_zoramask.xml new file mode 100644 index 000000000..096fdeedf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gi_zoramask.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gj.xml new file mode 100644 index 000000000..50d6337b4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gj.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gjyo_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gjyo_objects.xml new file mode 100644 index 000000000..ea4f8444f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gjyo_objects.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gla.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gla.xml new file mode 100644 index 000000000..499a3720d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gla.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gm.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gm.xml new file mode 100644 index 000000000..91b10cc42 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gm.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gnd.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gnd.xml new file mode 100644 index 000000000..dfbe02315 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gnd.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gnd_magic.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gnd_magic.xml new file mode 100644 index 000000000..a88d419d7 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gnd_magic.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gndd.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gndd.xml new file mode 100644 index 000000000..96e264c34 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gndd.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_god_lgt.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_god_lgt.xml new file mode 100644 index 000000000..60df9e469 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_god_lgt.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gol.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gol.xml new file mode 100644 index 000000000..7e04508cb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gol.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_goma.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_goma.xml new file mode 100644 index 000000000..e7a6d0a54 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_goma.xml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_goroiwa.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_goroiwa.xml new file mode 100644 index 000000000..5d406e957 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_goroiwa.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gr.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gr.xml new file mode 100644 index 000000000..103d4412e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gr.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gs.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gs.xml new file mode 100644 index 000000000..145be1665 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gs.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gt.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gt.xml new file mode 100644 index 000000000..1d79d4e39 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_gt.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka.xml new file mode 100644 index 000000000..f6b263c37 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka_door.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka_door.xml new file mode 100644 index 000000000..753492445 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka_door.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka_objects.xml new file mode 100644 index 000000000..3ca6d27c0 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_haka_objects.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hakach_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hakach_objects.xml new file mode 100644 index 000000000..b978e77a3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hakach_objects.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hata.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hata.xml new file mode 100644 index 000000000..b0324c3be --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hata.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_heavy_object.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_heavy_object.xml new file mode 100644 index 000000000..ecc795321 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_heavy_object.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hidan_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hidan_objects.xml new file mode 100644 index 000000000..5c54244bb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hidan_objects.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hintnuts.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hintnuts.xml new file mode 100644 index 000000000..f419f7546 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hintnuts.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hni.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hni.xml new file mode 100644 index 000000000..6b317eb7a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hni.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse.xml new file mode 100644 index 000000000..74619e597 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_ganon.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_ganon.xml new file mode 100644 index 000000000..98babb080 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_ganon.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_link_child.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_link_child.xml new file mode 100644 index 000000000..1491189a1 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_link_child.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_normal.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_normal.xml new file mode 100644 index 000000000..2bc2cb0c6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_normal.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_zelda.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_zelda.xml new file mode 100644 index 000000000..9595c3245 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_horse_zelda.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hs.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hs.xml new file mode 100644 index 000000000..cf5d06e1a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_hs.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_human.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_human.xml new file mode 100644 index 000000000..c52398446 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_human.xml @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ice_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ice_objects.xml new file mode 100644 index 000000000..a4e2e9b12 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ice_objects.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ik.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ik.xml new file mode 100644 index 000000000..95606e6df --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ik.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_im.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_im.xml new file mode 100644 index 000000000..a628a113a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_im.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_in.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_in.xml new file mode 100644 index 000000000..84c114047 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_in.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ingate.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ingate.xml new file mode 100644 index 000000000..e6be42beb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ingate.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jj.xml new file mode 100644 index 000000000..62bae8cb9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jj.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_js.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_js.xml new file mode 100644 index 000000000..ff7bd3efa --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_js.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_door.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_door.xml new file mode 100644 index 000000000..60a7b3788 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_door.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_iron.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_iron.xml new file mode 100644 index 000000000..c6f6773c6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_iron.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_obj.xml new file mode 100644 index 000000000..4a203b0b9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_jya_obj.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ka.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ka.xml new file mode 100644 index 000000000..eb952732b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ka.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kanban.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kanban.xml new file mode 100644 index 000000000..9ffc7a2ce --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kanban.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kibako2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kibako2.xml new file mode 100644 index 000000000..a701b294d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kibako2.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kingdodongo.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kingdodongo.xml new file mode 100644 index 000000000..9b104b3ea --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kingdodongo.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_km1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_km1.xml new file mode 100644 index 000000000..0a918a798 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_km1.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kusa.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kusa.xml new file mode 100644 index 000000000..67291a554 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kusa.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kw1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kw1.xml new file mode 100644 index 000000000..eab561b1f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kw1.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kz.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kz.xml new file mode 100644 index 000000000..20aeec4d9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_kz.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_light_ring.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_light_ring.xml new file mode 100644 index 000000000..babe7d2aa --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_light_ring.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_lightbox.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_lightbox.xml new file mode 100644 index 000000000..552a79d7c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_lightbox.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_lightswitch.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_lightswitch.xml new file mode 100644 index 000000000..cfd5dcfb4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_lightswitch.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_link_boy.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_link_boy.xml new file mode 100644 index 000000000..2f3cd943c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_link_boy.xml @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_link_child.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_link_child.xml new file mode 100644 index 000000000..0de400373 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_link_child.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ma1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ma1.xml new file mode 100644 index 000000000..63eeb3895 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ma1.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ma2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ma2.xml new file mode 100644 index 000000000..ce5910fb8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ma2.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mag.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mag.xml new file mode 100644 index 000000000..e691fbeb3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mag.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mamenoki.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mamenoki.xml new file mode 100644 index 000000000..819d89022 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mamenoki.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mastergolon.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mastergolon.xml new file mode 100644 index 000000000..6dd9d1659 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mastergolon.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterkokiri.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterkokiri.xml new file mode 100644 index 000000000..af5a9ec15 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterkokiri.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterkokirihead.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterkokirihead.xml new file mode 100644 index 000000000..1e489323c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterkokirihead.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterzoora.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterzoora.xml new file mode 100644 index 000000000..2c703274e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_masterzoora.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mb.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mb.xml new file mode 100644 index 000000000..a8471429d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mb.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_md.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_md.xml new file mode 100644 index 000000000..0c80fb780 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_md.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_medal.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_medal.xml new file mode 100644 index 000000000..533872a55 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_medal.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_menkuri_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_menkuri_objects.xml new file mode 100644 index 000000000..4c2b51df5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_menkuri_objects.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mir_ray.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mir_ray.xml new file mode 100644 index 000000000..2acc9391a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mir_ray.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mizu_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mizu_objects.xml new file mode 100644 index 000000000..1abd73bc0 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mizu_objects.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin.xml new file mode 100644 index 000000000..daf9b0541 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_dark.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_dark.xml new file mode 100644 index 000000000..2fa0bdbe4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_dark.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_flame.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_flame.xml new file mode 100644 index 000000000..6274feaee --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_flame.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_flash.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_flash.xml new file mode 100644 index 000000000..c1040ea11 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_flash.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_ice.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_ice.xml new file mode 100644 index 000000000..1aaeea193 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_ice.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_oka.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_oka.xml new file mode 100644 index 000000000..0f823b923 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_oka.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_soul.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_soul.xml new file mode 100644 index 000000000..6386f7f9e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_soul.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_wind.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_wind.xml new file mode 100644 index 000000000..8bba7eb91 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mjin_wind.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mk.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mk.xml new file mode 100644 index 000000000..0b4aaae8a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mk.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mm.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mm.xml new file mode 100644 index 000000000..834afe5ef --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mm.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mo.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mo.xml new file mode 100644 index 000000000..526fa94dd --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mo.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri1.xml new file mode 100644 index 000000000..bb1b31e2f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri1.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri1a.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri1a.xml new file mode 100644 index 000000000..c750ce20d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri1a.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri2.xml new file mode 100644 index 000000000..785b85857 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri2.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri2a.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri2a.xml new file mode 100644 index 000000000..ad1bb4d5f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_hineri2a.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_objects.xml new file mode 100644 index 000000000..58ea8c085 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_objects.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_tex.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_tex.xml new file mode 100644 index 000000000..b1a4b803c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mori_tex.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ms.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ms.xml new file mode 100644 index 000000000..a87d0e6b3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ms.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mu.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mu.xml new file mode 100644 index 000000000..7251ff721 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_mu.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_nb.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_nb.xml new file mode 100644 index 000000000..74de9e285 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_nb.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_niw.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_niw.xml new file mode 100644 index 000000000..a74cbe7da --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_niw.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_nwc.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_nwc.xml new file mode 100644 index 000000000..96ffa3238 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_nwc.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ny.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ny.xml new file mode 100644 index 000000000..e2e8187ff --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ny.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA1.xml new file mode 100644 index 000000000..1d665f101 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA1.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA10.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA10.xml new file mode 100644 index 000000000..65d080834 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA10.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA11.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA11.xml new file mode 100644 index 000000000..92ae474b6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA11.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA2.xml new file mode 100644 index 000000000..ffdcd7989 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA2.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA3.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA3.xml new file mode 100644 index 000000000..a492bd875 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA3.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA4.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA4.xml new file mode 100644 index 000000000..dcdbbfff9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA4.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA5.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA5.xml new file mode 100644 index 000000000..55072176d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA5.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA6.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA6.xml new file mode 100644 index 000000000..c17a51088 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA6.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA7.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA7.xml new file mode 100644 index 000000000..52c68f639 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA7.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA8.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA8.xml new file mode 100644 index 000000000..8ed2d3df5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA8.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA9.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA9.xml new file mode 100644 index 000000000..d5c16abfc --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oA9.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB1.xml new file mode 100644 index 000000000..2f50c967b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB1.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB2.xml new file mode 100644 index 000000000..230783cea --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB2.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB3.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB3.xml new file mode 100644 index 000000000..1c42ddacc --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB3.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB4.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB4.xml new file mode 100644 index 000000000..2924c9e75 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oB4.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE1.xml new file mode 100644 index 000000000..4d5b1663f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE1.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE10.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE10.xml new file mode 100644 index 000000000..04ce91437 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE10.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE11.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE11.xml new file mode 100644 index 000000000..04f6f186d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE11.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE12.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE12.xml new file mode 100644 index 000000000..a5fa39fd2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE12.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE1s.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE1s.xml new file mode 100644 index 000000000..faf6ab734 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE1s.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE2.xml new file mode 100644 index 000000000..af62ad6d1 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE2.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE3.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE3.xml new file mode 100644 index 000000000..95227da38 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE3.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE4.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE4.xml new file mode 100644 index 000000000..ae48d2ade --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE4.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE4s.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE4s.xml new file mode 100644 index 000000000..584019568 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE4s.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE5.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE5.xml new file mode 100644 index 000000000..f5edf745a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE5.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE6.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE6.xml new file mode 100644 index 000000000..95bb602b6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE6.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE7.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE7.xml new file mode 100644 index 000000000..b3e588d4c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE7.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE8.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE8.xml new file mode 100644 index 000000000..be5de2494 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE8.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE9.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE9.xml new file mode 100644 index 000000000..8ea7ee18c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE9.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE_anime.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE_anime.xml new file mode 100644 index 000000000..f6b4659e2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oE_anime.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oF1d_map.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oF1d_map.xml new file mode 100644 index 000000000..c4f3a41f8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oF1d_map.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oF1s.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oF1s.xml new file mode 100644 index 000000000..11359eff5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_oF1s.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_o_anime.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_o_anime.xml new file mode 100644 index 000000000..4ef4ac44c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_o_anime.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_okuta.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_okuta.xml new file mode 100644 index 000000000..b4fccea6f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_okuta.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_opening_demo1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_opening_demo1.xml new file mode 100644 index 000000000..fd0323027 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_opening_demo1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_os.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_os.xml new file mode 100644 index 000000000..7c3029443 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_os.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_os_anime.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_os_anime.xml new file mode 100644 index 000000000..c90e37b37 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_os_anime.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ossan.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ossan.xml new file mode 100644 index 000000000..963053f3f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ossan.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ouke_haka.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ouke_haka.xml new file mode 100644 index 000000000..11da9b26e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ouke_haka.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_owl.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_owl.xml new file mode 100644 index 000000000..fdc64b3aa --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_owl.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_peehat.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_peehat.xml new file mode 100644 index 000000000..42ee66cde --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_peehat.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_composer.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_composer.xml new file mode 100644 index 000000000..2ab8d64d8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_composer.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_field.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_field.xml new file mode 100644 index 000000000..10b402e2c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_field.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_sisters.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_sisters.xml new file mode 100644 index 000000000..e0c9f0834 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_po_sisters.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_poh.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_poh.xml new file mode 100644 index 000000000..009d0fca3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_poh.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ps.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ps.xml new file mode 100644 index 000000000..043e232d6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ps.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_pu_box.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_pu_box.xml new file mode 100644 index 000000000..e1d686e97 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_pu_box.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rd.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rd.xml new file mode 100644 index 000000000..05fa416d7 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rd.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_reeba.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_reeba.xml new file mode 100644 index 000000000..32c697bd9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_reeba.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_relay_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_relay_objects.xml new file mode 100644 index 000000000..47b92fcd2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_relay_objects.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rl.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rl.xml new file mode 100644 index 000000000..625ab83a1 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rl.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rr.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rr.xml new file mode 100644 index 000000000..98726b14b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rr.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rs.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rs.xml new file mode 100644 index 000000000..1da1488af --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_rs.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ru1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ru1.xml new file mode 100644 index 000000000..3d413619f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ru1.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ru2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ru2.xml new file mode 100644 index 000000000..2a8d70af3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ru2.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sa.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sa.xml new file mode 100644 index 000000000..a19446453 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sa.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sb.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sb.xml new file mode 100644 index 000000000..64d3bb005 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sb.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sd.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sd.xml new file mode 100644 index 000000000..c72efeae1 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sd.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_shop_dungen.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_shop_dungen.xml new file mode 100644 index 000000000..594c43d39 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_shop_dungen.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_shopnuts.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_shopnuts.xml new file mode 100644 index 000000000..a4e12e38a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_shopnuts.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_siofuki.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_siofuki.xml new file mode 100644 index 000000000..a23240a72 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_siofuki.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sk2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sk2.xml new file mode 100644 index 000000000..f2e7ef6d8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sk2.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_skb.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_skb.xml new file mode 100644 index 000000000..5b5efb484 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_skb.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_skj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_skj.xml new file mode 100644 index 000000000..3abdd610f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_skj.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot00_break.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot00_break.xml new file mode 100644 index 000000000..d3be88315 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot00_break.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot00_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot00_objects.xml new file mode 100644 index 000000000..10fb13aea --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot00_objects.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_matoya.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_matoya.xml new file mode 100644 index 000000000..d44b944e0 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_matoya.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_matoyab.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_matoyab.xml new file mode 100644 index 000000000..720f50cd3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_matoyab.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_objects.xml new file mode 100644 index 000000000..413e032a9 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_objects.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_objects2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_objects2.xml new file mode 100644 index 000000000..36741a949 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot01_objects2.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot02_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot02_objects.xml new file mode 100644 index 000000000..65f45ff51 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot02_objects.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot03_object.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot03_object.xml new file mode 100644 index 000000000..f182e7d99 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot03_object.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot04_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot04_objects.xml new file mode 100644 index 000000000..66293d752 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot04_objects.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot05_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot05_objects.xml new file mode 100644 index 000000000..6e7079149 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot05_objects.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot06_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot06_objects.xml new file mode 100644 index 000000000..e3da63b0f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot06_objects.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot07_object.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot07_object.xml new file mode 100644 index 000000000..5bc2bfb6b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot07_object.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot08_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot08_obj.xml new file mode 100644 index 000000000..4d71f3473 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot08_obj.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot09_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot09_obj.xml new file mode 100644 index 000000000..b4d9ae42a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot09_obj.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot11_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot11_obj.xml new file mode 100644 index 000000000..257298f7c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot11_obj.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot12_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot12_obj.xml new file mode 100644 index 000000000..d619c781e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot12_obj.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot15_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot15_obj.xml new file mode 100644 index 000000000..bd59b8cd1 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot15_obj.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot16_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot16_obj.xml new file mode 100644 index 000000000..d39de812a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot16_obj.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot17_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot17_obj.xml new file mode 100644 index 000000000..d4239d8d2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot17_obj.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot18_obj.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot18_obj.xml new file mode 100644 index 000000000..cc12b7894 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_spot18_obj.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ssh.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ssh.xml new file mode 100644 index 000000000..6283f8e9f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ssh.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sst.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sst.xml new file mode 100644 index 000000000..a80780741 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_sst.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_st.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_st.xml new file mode 100644 index 000000000..fe617cf14 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_st.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_stream.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_stream.xml new file mode 100644 index 000000000..59b0838e4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_stream.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_syokudai.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_syokudai.xml new file mode 100644 index 000000000..c1670edec --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_syokudai.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ta.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ta.xml new file mode 100644 index 000000000..5e446bf5c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ta.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_timeblock.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_timeblock.xml new file mode 100644 index 000000000..1d6b9e698 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_timeblock.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tite.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tite.xml new file mode 100644 index 000000000..1be65c495 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tite.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tk.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tk.xml new file mode 100644 index 000000000..6869280e6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tk.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_toki_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_toki_objects.xml new file mode 100644 index 000000000..cd07e60d2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_toki_objects.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_torch2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_torch2.xml new file mode 100644 index 000000000..ec55bbe26 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_torch2.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_toryo.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_toryo.xml new file mode 100644 index 000000000..73f3dcb1e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_toryo.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tp.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tp.xml new file mode 100644 index 000000000..8ea908825 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tp.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tr.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tr.xml new file mode 100644 index 000000000..e84d0896d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tr.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_trap.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_trap.xml new file mode 100644 index 000000000..56195cf41 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_trap.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_triforce_spot.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_triforce_spot.xml new file mode 100644 index 000000000..a9d52dd96 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_triforce_spot.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ts.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ts.xml new file mode 100644 index 000000000..567277bc3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ts.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tsubo.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tsubo.xml new file mode 100644 index 000000000..ee2c5e184 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tsubo.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tw.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tw.xml new file mode 100644 index 000000000..66cd3a7c2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_tw.xml @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_umajump.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_umajump.xml new file mode 100644 index 000000000..2ee4ade46 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_umajump.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_vali.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_vali.xml new file mode 100644 index 000000000..2bab5efaa --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_vali.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_vase.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_vase.xml new file mode 100644 index 000000000..091d4c51e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_vase.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_vm.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_vm.xml new file mode 100644 index 000000000..c5b949b36 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_vm.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_wallmaster.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_wallmaster.xml new file mode 100644 index 000000000..fbbc4f4af --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_wallmaster.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_warp1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_warp1.xml new file mode 100644 index 000000000..1497d7a10 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_warp1.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_warp2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_warp2.xml new file mode 100644 index 000000000..b6d1b3624 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_warp2.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_wf.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_wf.xml new file mode 100644 index 000000000..ebfb708d2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_wf.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_wood02.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_wood02.xml new file mode 100644 index 000000000..47ec342ca --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_wood02.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_xc.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_xc.xml new file mode 100644 index 000000000..030ae9394 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_xc.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_yabusame_point.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_yabusame_point.xml new file mode 100644 index 000000000..bed9e8a60 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_yabusame_point.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ydan_objects.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ydan_objects.xml new file mode 100644 index 000000000..e2adf307f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_ydan_objects.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_yukabyun.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_yukabyun.xml new file mode 100644 index 000000000..d594ebbb8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_yukabyun.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zf.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zf.xml new file mode 100644 index 000000000..7f20eb786 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zf.xml @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zg.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zg.xml new file mode 100644 index 000000000..79005516c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zg.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl1.xml new file mode 100644 index 000000000..c7082a3db --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl1.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2.xml new file mode 100644 index 000000000..9af0a6527 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2_anime1.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2_anime1.xml new file mode 100644 index 000000000..cada50486 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2_anime1.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2_anime2.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2_anime2.xml new file mode 100644 index 000000000..47016e2e0 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl2_anime2.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl4.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl4.xml new file mode 100644 index 000000000..b43e5ba34 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zl4.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zo.xml b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zo.xml new file mode 100644 index 000000000..77465760e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/objects/object_zo.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Fire.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Fire.xml new file mode 100644 index 000000000..0f91c80be --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Fire.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Ice.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Ice.xml new file mode 100644 index 000000000..001ac51d5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Ice.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Light.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Light.xml new file mode 100644 index 000000000..e6e5c9776 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Arrow_Light.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Bg_Ganon_Otyuka.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Bg_Ganon_Otyuka.xml new file mode 100644 index 000000000..e1ea84996 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Bg_Ganon_Otyuka.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Bg_Jya_Cobra.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Bg_Jya_Cobra.xml new file mode 100644 index 000000000..857a14922 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Bg_Jya_Cobra.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Dodongo.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Dodongo.xml new file mode 100644 index 000000000..f2ee5b7b8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Dodongo.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon.xml new file mode 100644 index 000000000..9f0e6e1f4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon2.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon2.xml new file mode 100644 index 000000000..dfb01ba07 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Ganon2.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Sst.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Sst.xml new file mode 100644 index 000000000..4e08c34f1 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Boss_Sst.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Demo_Shd.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Demo_Shd.xml new file mode 100644 index 000000000..1682fd16a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Demo_Shd.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Bili.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Bili.xml new file mode 100644 index 000000000..8a77b7bd3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Bili.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Clear_Tag.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Clear_Tag.xml new file mode 100644 index 000000000..fee5c6302 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Clear_Tag.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ganon_Mant.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ganon_Mant.xml new file mode 100644 index 000000000..900ec46ac --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ganon_Mant.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ganon_Organ.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ganon_Organ.xml new file mode 100644 index 000000000..91a5e31ac --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ganon_Organ.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Holl.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Holl.xml new file mode 100644 index 000000000..65673c5ea --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Holl.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Jsjutan.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Jsjutan.xml new file mode 100644 index 000000000..d7f2859cb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Jsjutan.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Kanban.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Kanban.xml new file mode 100644 index 000000000..c2f8f7c23 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Kanban.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Sda.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Sda.xml new file mode 100644 index 000000000..91321c648 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Sda.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ssh.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ssh.xml new file mode 100644 index 000000000..f12c4ee19 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Ssh.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_St.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_St.xml new file mode 100644 index 000000000..d7b6b20cf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_St.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Sth.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Sth.xml new file mode 100644 index 000000000..13daffa63 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_En_Sth.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_End_Title.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_End_Title.xml new file mode 100644 index 000000000..77c39c63a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_End_Title.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_File_Choose.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_File_Choose.xml new file mode 100644 index 000000000..f9aad776d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_File_Choose.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Dark.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Dark.xml new file mode 100644 index 000000000..e6315effd --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Dark.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Fire.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Fire.xml new file mode 100644 index 000000000..0ddfe4cfc --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Fire.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Wind.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Wind.xml new file mode 100644 index 000000000..3736e985e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Magic_Wind.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Spot.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Spot.xml new file mode 100644 index 000000000..9a53952f0 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Spot.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Storm.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Storm.xml new file mode 100644 index 000000000..cb043eeb8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Storm.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe.xml new file mode 100644 index 000000000..4ca01b04c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe2.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe2.xml new file mode 100644 index 000000000..051f2177e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe2.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe3.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe3.xml new file mode 100644 index 000000000..11f278866 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe3.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe4.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe4.xml new file mode 100644 index 000000000..a4e410eba --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Oceff_Wipe4.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/Bmori1.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/Bmori1.xml new file mode 100644 index 000000000..70aac3464 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/Bmori1.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/FIRE_bs.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/FIRE_bs.xml new file mode 100644 index 000000000..9e65ba617 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/FIRE_bs.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdan.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdan.xml new file mode 100644 index 000000000..cc2935a1c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdan.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdanCH.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdanCH.xml new file mode 100644 index 000000000..eb55a19f5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdanCH.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdan_bs.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdan_bs.xml new file mode 100644 index 000000000..d3280ffe6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HAKAdan_bs.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HIDAN.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HIDAN.xml new file mode 100644 index 000000000..dc4d56849 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/HIDAN.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/MIZUsin.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/MIZUsin.xml new file mode 100644 index 000000000..beb765c85 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/MIZUsin.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/MIZUsin_bs.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/MIZUsin_bs.xml new file mode 100644 index 000000000..b64089530 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/MIZUsin_bs.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/bdan.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/bdan.xml new file mode 100644 index 000000000..c4edc9bea --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/bdan.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/bdan_boss.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/bdan_boss.xml new file mode 100644 index 000000000..12d8d3e12 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/bdan_boss.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ddan.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ddan.xml new file mode 100644 index 000000000..f6572b9f8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ddan.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ddan_boss.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ddan_boss.xml new file mode 100644 index 000000000..03eb73ea3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ddan_boss.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon.xml new file mode 100644 index 000000000..0582da79f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_boss.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_boss.xml new file mode 100644 index 000000000..c75914c29 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_boss.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_demo.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_demo.xml new file mode 100644 index 000000000..779cb9335 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_demo.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_final.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_final.xml new file mode 100644 index 000000000..afe1cffdf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_final.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_sonogo.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_sonogo.xml new file mode 100644 index 000000000..70313c8cf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_sonogo.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_tou.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_tou.xml new file mode 100644 index 000000000..6642a8902 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganon_tou.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganontika.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganontika.xml new file mode 100644 index 000000000..de24b26ff --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganontika.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganontikasonogo.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganontikasonogo.xml new file mode 100644 index 000000000..60020188f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ganontikasonogo.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/gerudoway.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/gerudoway.xml new file mode 100644 index 000000000..531724ead --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/gerudoway.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ice_doukutu.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ice_doukutu.xml new file mode 100644 index 000000000..4d25aa74f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ice_doukutu.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/jyasinboss.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/jyasinboss.xml new file mode 100644 index 000000000..0f81c26fb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/jyasinboss.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/jyasinzou.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/jyasinzou.xml new file mode 100644 index 000000000..ca5d0024a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/jyasinzou.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/men.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/men.xml new file mode 100644 index 000000000..acba3e7cb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/men.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/moribossroom.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/moribossroom.xml new file mode 100644 index 000000000..9c4552e9e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/moribossroom.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ydan.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ydan.xml new file mode 100644 index 000000000..465c5f0ca --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ydan.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ydan_boss.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ydan_boss.xml new file mode 100644 index 000000000..f4971e7fe --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/dungeons/ydan_boss.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/bowling.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/bowling.xml new file mode 100644 index 000000000..e12fd269a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/bowling.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/daiyousei_izumi.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/daiyousei_izumi.xml new file mode 100644 index 000000000..3c1fafb8d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/daiyousei_izumi.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa.xml new file mode 100644 index 000000000..04547ab21 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa_n.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa_n.xml new file mode 100644 index 000000000..a33d77b07 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa_n.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hakasitarelay.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hakasitarelay.xml new file mode 100644 index 000000000..bc1e2b966 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hakasitarelay.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hut.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hut.xml new file mode 100644 index 000000000..a4ef5715f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hut.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hylia_labo.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hylia_labo.xml new file mode 100644 index 000000000..829708604 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hylia_labo.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/impa.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/impa.xml new file mode 100644 index 000000000..db757e3d3 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/impa.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kakariko.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kakariko.xml new file mode 100644 index 000000000..e4e9b102c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kakariko.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kenjyanoma.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kenjyanoma.xml new file mode 100644 index 000000000..e6bcef90a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kenjyanoma.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home.xml new file mode 100644 index 000000000..8c0305493 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home3.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home3.xml new file mode 100644 index 000000000..9f36eb41c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home3.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home4.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home4.xml new file mode 100644 index 000000000..eb861aedb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home4.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home5.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home5.xml new file mode 100644 index 000000000..974987fed --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/kokiri_home5.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/labo.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/labo.xml new file mode 100644 index 000000000..c0a9d2eb8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/labo.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/link_home.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/link_home.xml new file mode 100644 index 000000000..2fb88ae34 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/link_home.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/mahouya.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/mahouya.xml new file mode 100644 index 000000000..653cffc3b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/mahouya.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/malon_stable.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/malon_stable.xml new file mode 100644 index 000000000..aff97eeb8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/malon_stable.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/miharigoya.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/miharigoya.xml new file mode 100644 index 000000000..41ff2db9f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/miharigoya.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/nakaniwa.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/nakaniwa.xml new file mode 100644 index 000000000..49ff4a29c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/nakaniwa.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/syatekijyou.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/syatekijyou.xml new file mode 100644 index 000000000..5490e84f1 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/syatekijyou.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/takaraya.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/takaraya.xml new file mode 100644 index 000000000..ddee91543 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/takaraya.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/tent.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/tent.xml new file mode 100644 index 000000000..de72cc5f4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/tent.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/tokinoma.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/tokinoma.xml new file mode 100644 index 000000000..e43f0a933 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/tokinoma.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/yousei_izumi_tate.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/yousei_izumi_tate.xml new file mode 100644 index 000000000..990e1763b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/yousei_izumi_tate.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/yousei_izumi_yoko.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/yousei_izumi_yoko.xml new file mode 100644 index 000000000..98923c569 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/yousei_izumi_yoko.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/enrui.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/enrui.xml new file mode 100644 index 000000000..d8c06e545 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/enrui.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/entra_n.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/entra_n.xml new file mode 100644 index 000000000..5b408ac3a --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/entra_n.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana.xml new file mode 100644 index 000000000..b13273bed --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana2.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana2.xml new file mode 100644 index 000000000..146d0ce45 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana2.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana_ouke.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana_ouke.xml new file mode 100644 index 000000000..1d31d66a4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hakaana_ouke.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hiral_demo.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hiral_demo.xml new file mode 100644 index 000000000..1331fdd4c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/hiral_demo.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kakariko3.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kakariko3.xml new file mode 100644 index 000000000..07b62c44d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kakariko3.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kakusiana.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kakusiana.xml new file mode 100644 index 000000000..e4254b750 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kakusiana.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kinsuta.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kinsuta.xml new file mode 100644 index 000000000..d5dbacdb7 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/kinsuta.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_alley.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_alley.xml new file mode 100644 index 000000000..c30467303 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_alley.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_alley_n.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_alley_n.xml new file mode 100644 index 000000000..65db60411 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_alley_n.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_day.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_day.xml new file mode 100644 index 000000000..00887e69c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_day.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_night.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_night.xml new file mode 100644 index 000000000..c58e38744 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_night.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_ruins.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_ruins.xml new file mode 100644 index 000000000..f0ec75e75 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/market_ruins.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine.xml new file mode 100644 index 000000000..b9ddf2cf7 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine_n.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine_n.xml new file mode 100644 index 000000000..4878338aa --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine_n.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine_r.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine_r.xml new file mode 100644 index 000000000..122036791 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/shrine_r.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/turibori.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/turibori.xml new file mode 100644 index 000000000..ef6848edf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/misc/turibori.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/entra.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/entra.xml new file mode 100644 index 000000000..92ee57f59 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/entra.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/souko.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/souko.xml new file mode 100644 index 000000000..508beb85d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/souko.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot00.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot00.xml new file mode 100644 index 000000000..4e933910c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot00.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot01.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot01.xml new file mode 100644 index 000000000..e2da37e2d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot01.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot02.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot02.xml new file mode 100644 index 000000000..334d0e599 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot02.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot03.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot03.xml new file mode 100644 index 000000000..bf4039249 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot03.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot04.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot04.xml new file mode 100644 index 000000000..c5824727f --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot04.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot05.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot05.xml new file mode 100644 index 000000000..7c2c012bf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot05.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot06.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot06.xml new file mode 100644 index 000000000..c369533bb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot06.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot07.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot07.xml new file mode 100644 index 000000000..e083e336d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot07.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot08.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot08.xml new file mode 100644 index 000000000..136727c6d --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot08.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot09.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot09.xml new file mode 100644 index 000000000..175fac890 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot09.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot10.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot10.xml new file mode 100644 index 000000000..06349cf1e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot10.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot11.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot11.xml new file mode 100644 index 000000000..99bf24c82 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot11.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot12.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot12.xml new file mode 100644 index 000000000..77b0cfb07 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot12.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot13.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot13.xml new file mode 100644 index 000000000..5686bbde5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot13.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot15.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot15.xml new file mode 100644 index 000000000..f17e76d55 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot15.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot16.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot16.xml new file mode 100644 index 000000000..026da9fd2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot16.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot17.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot17.xml new file mode 100644 index 000000000..3aecc15a6 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot18.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot18.xml new file mode 100644 index 000000000..513e67cbc --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot18.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot20.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot20.xml new file mode 100644 index 000000000..b75f3f5c0 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/overworld/spot20.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/alley_shop.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/alley_shop.xml new file mode 100644 index 000000000..95548de1b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/alley_shop.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/drag.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/drag.xml new file mode 100644 index 000000000..acb6515fb --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/drag.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/face_shop.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/face_shop.xml new file mode 100644 index 000000000..16a974608 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/face_shop.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/golon.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/golon.xml new file mode 100644 index 000000000..c58672798 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/golon.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/kokiri_shop.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/kokiri_shop.xml new file mode 100644 index 000000000..50cd633e5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/kokiri_shop.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/night_shop.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/night_shop.xml new file mode 100644 index 000000000..5954d9c83 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/night_shop.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/shop1.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/shop1.xml new file mode 100644 index 000000000..525a06d63 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/shop1.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/zoora.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/zoora.xml new file mode 100644 index 000000000..0e4ac18f8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/scenes/shops/zoora.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/text/elf_message_field.xml b/soh/assets/xml/GC_NMQ_PAL_F/text/elf_message_field.xml new file mode 100644 index 000000000..789a554ce --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/text/elf_message_field.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/soh/assets/xml/GC_NMQ_PAL_F/text/elf_message_ydan.xml b/soh/assets/xml/GC_NMQ_PAL_F/text/elf_message_ydan.xml new file mode 100644 index 000000000..f784afcf4 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/text/elf_message_ydan.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml new file mode 100644 index 000000000..d77bf0ff8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml new file mode 100644 index 000000000..395a6b7bd --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/backgrounds.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/backgrounds.xml new file mode 100644 index 000000000..474734e71 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/backgrounds.xml @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/do_action_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/do_action_static.xml new file mode 100644 index 000000000..9ae8d9815 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/do_action_static.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_24_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_24_static.xml new file mode 100644 index 000000000..0c5f7621e --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_24_static.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_dungeon_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_dungeon_static.xml new file mode 100644 index 000000000..873c490fc --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_dungeon_static.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_field_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_field_static.xml new file mode 100644 index 000000000..ed991406b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_field_static.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_fra_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_fra_static.xml new file mode 100644 index 000000000..2c8ccad5b --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_fra_static.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_gameover_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_gameover_static.xml new file mode 100644 index 000000000..fc2a50642 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_gameover_static.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_ger_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_ger_static.xml new file mode 100644 index 000000000..ea71dda35 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_ger_static.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_nes_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_nes_static.xml new file mode 100644 index 000000000..6cd92acfc --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_nes_static.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_static.xml new file mode 100644 index 000000000..7b61cf35c --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/icon_item_static.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/item_name_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/item_name_static.xml new file mode 100644 index 000000000..00c497490 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/item_name_static.xml @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/map_48x85_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/map_48x85_static.xml new file mode 100644 index 000000000..b5b1d1a85 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/map_48x85_static.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/map_grand_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/map_grand_static.xml new file mode 100644 index 000000000..201955bfc --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/map_grand_static.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/map_i_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/map_i_static.xml new file mode 100644 index 000000000..1721f6d84 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/map_i_static.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/map_name_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/map_name_static.xml new file mode 100644 index 000000000..7f9d31589 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/map_name_static.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/message_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/message_static.xml new file mode 100644 index 000000000..afdde60de --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/message_static.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/message_texture_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/message_texture_static.xml new file mode 100644 index 000000000..bbf7e1259 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/message_texture_static.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/nes_font_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/nes_font_static.xml new file mode 100644 index 000000000..b01646cb5 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/nes_font_static.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/nintendo_rogo_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/nintendo_rogo_static.xml new file mode 100644 index 000000000..7a60524b2 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/nintendo_rogo_static.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/parameter_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/parameter_static.xml new file mode 100644 index 000000000..bd4173431 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/parameter_static.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/place_title_cards.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/place_title_cards.xml new file mode 100644 index 000000000..c1771d4c8 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/place_title_cards.xml @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/skyboxes.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/skyboxes.xml new file mode 100644 index 000000000..9ff554c94 --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/skyboxes.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/title_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/title_static.xml new file mode 100644 index 000000000..422b60cdc --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/title_static.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/build.c b/soh/build.c index acb8d151d..f3f9bdae6 100644 --- a/soh/build.c +++ b/soh/build.c @@ -1,8 +1,8 @@ -const char gBuildVersion[] = "DECKARD"; +const char gBuildVersion[] = "DECKARD ALFA (1.0.0)"; const char gBuildTeam[] = "github.com/harbourmasters"; #ifdef __TIMESTAMP__ const char gBuildDate[] = __TIMESTAMP__; #else const char gBuildDate[] = __DATE__ " " __TIME__; #endif -const char gBuildMakeOption[] = ""; \ No newline at end of file +const char gBuildMakeOption[] = ""; diff --git a/soh/soh.vcxproj b/soh/soh.vcxproj index 9d5b509f2..aa6dee304 100644 --- a/soh/soh.vcxproj +++ b/soh/soh.vcxproj @@ -144,7 +144,7 @@ false INCLUDE_GAME_PRINTF;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;ENABLE_DX11;%(PreprocessorDefinitions)GLEW_STATIC true - stdcpp17 + stdcpp20 MultiThreadedDebug true diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 0732a80e1..c000ce8e1 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -22,6 +22,7 @@ #include "Lib/stb/stb_image.h" #include "AudioPlayer.h" #include "../soh/Enhancements/debugconsole.h" +#include "Utils/BitConverter.h" OTRGlobals* OTRGlobals::Instance; @@ -41,6 +42,15 @@ extern "C" void OTRMessage_Init(); // C->C++ Bridge extern "C" void InitOTR() { OTRGlobals::Instance = new OTRGlobals(); + auto t = OTRGlobals::Instance->context->GetResourceManager()->LoadFile("version"); + + if (!t->bHasLoadError) + { + //uint32_t gameVersion = BitConverter::ToUInt32BE((uint8_t*)t->buffer.get(), 0); + uint32_t gameVersion = *((uint32_t*)t->buffer.get()); + OTRGlobals::Instance->context->GetResourceManager()->SetGameVersion(gameVersion); + } + clearMtx = (uintptr_t)&gMtxClear; OTRMessage_Init(); DebugConsole_Init(); @@ -96,6 +106,11 @@ extern "C" void OTRResetScancode() OTRGlobals::Instance->context->GetWindow()->lastScancode = -1; } +extern "C" uint32_t ResourceMgr_GetGameVersion() +{ + return OTRGlobals::Instance->context->GetResourceManager()->GetGameVersion(); +} + extern "C" void ResourceMgr_CacheDirectory(const char* resName) { OTRGlobals::Instance->context->GetResourceManager()->CacheDirectory(resName); } diff --git a/soh/soh/OTRGlobals.h b/soh/soh/OTRGlobals.h index f7e525834..4a439fc6d 100644 --- a/soh/soh/OTRGlobals.h +++ b/soh/soh/OTRGlobals.h @@ -27,6 +27,7 @@ void OTRGfxPrint(const char* str, void* printer, void (*printImpl)(void*, char)) void OTRSetFrameDivisor(int divisor); uint16_t OTRGetPixelDepth(float x, float y); int32_t OTRGetLastScancode(); +uint32_t ResourceMgr_GetGameVersion(); void ResourceMgr_CacheDirectory(const char* resName); void ResourceMgr_LoadFile(const char* resName); char* ResourceMgr_LoadFileFromDisk(const char* filePath); diff --git a/soh/soh/z_play_otr.cpp b/soh/soh/z_play_otr.cpp index 6d6c4bb30..c84e37482 100644 --- a/soh/soh/z_play_otr.cpp +++ b/soh/soh/z_play_otr.cpp @@ -31,6 +31,16 @@ extern "C" void OTRGameplay_SpawnScene(GlobalContext* globalCtx, s32 sceneNum, s std::string scenePath = StringHelper::Sprintf("scenes\\%s\\%s", scene->sceneFile.fileName, scene->sceneFile.fileName); globalCtx->sceneSegment = (Ship::Scene*)OTRGameplay_LoadFile(globalCtx, scenePath.c_str()); + + // Failed to load scene... default to doodongs cavern + if (globalCtx->sceneSegment == nullptr) + { + lusprintf(__FILE__, __LINE__, 2, "Unable to load scene %s... Defaulting to Doodong's Cavern!\n", + scenePath.c_str()); + OTRGameplay_SpawnScene(globalCtx, 0x01, 0); + return; + } + scene->unk_13 = 0; //ASSERT(globalCtx->sceneSegment != NULL, "this->sceneSegment != NULL", "../z_play.c", 4960); diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c index f0880b3da..193b14164 100644 --- a/soh/src/code/z_play.c +++ b/soh/src/code/z_play.c @@ -1495,26 +1495,6 @@ void Gameplay_InitScene(GlobalContext* globalCtx, s32 spawn) void Gameplay_SpawnScene(GlobalContext* globalCtx, s32 sceneNum, s32 spawn) { OTRGameplay_SpawnScene(globalCtx, sceneNum, spawn); - return; - - SceneTableEntry* scene = &gSceneTable[sceneNum]; - - scene->unk_13 = 0; - globalCtx->loadedScene = scene; - globalCtx->sceneNum = sceneNum; - globalCtx->sceneConfig = scene->config; - - osSyncPrintf("\nSCENE SIZE %fK\n", (scene->sceneFile.vromEnd - scene->sceneFile.vromStart) / 1024.0f); - - globalCtx->sceneSegment = Gameplay_LoadFile(globalCtx, &scene->sceneFile); - scene->unk_13 = 0; - ASSERT(globalCtx->sceneSegment != NULL, "this->sceneSegment != NULL", "../z_play.c", 4960); - - gSegments[2] = VIRTUAL_TO_PHYSICAL(globalCtx->sceneSegment); - - Gameplay_InitScene(globalCtx, spawn); - - osSyncPrintf("ROOM SIZE=%fK\n", func_80096FE8(globalCtx, &globalCtx->roomCtx) / 1024.0f); } void func_800C016C(GlobalContext* globalCtx, Vec3f* src, Vec3f* dest) { diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index d7344d7c3..87a7009ec 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -1625,6 +1625,8 @@ void func_80091A24(GlobalContext* globalCtx, void* seg04, void* seg06, SkelAnime POLY_XLU_DISP = ohNo; } + POLY_OPA_DISP = Gameplay_SetFog(globalCtx, POLY_OPA_DISP++); + CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_player_lib.c", 3288); } diff --git a/soh/src/code/z_vr_box.c b/soh/src/code/z_vr_box.c index 7925e5cb9..e532edf31 100644 --- a/soh/src/code/z_vr_box.c +++ b/soh/src/code/z_vr_box.c @@ -1001,9 +1001,8 @@ void Skybox_Setup(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, s16 skybox LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gBackAlleyHouseBg3Tlut, 16, 16); break; default: - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 8, "../z_vr_box.c", 1226); - //skyboxCtx->staticSegments[1] = GameState_Alloc(&globalCtx->state, 0x10000 * 8, "../z_vr_box.c", 1226); - skyboxCtx->staticSegments[1] = malloc(0x10000 * 8); // OTRTODO + skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); + skyboxCtx->staticSegments[1] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x1000, "../z_vr_box.c", 1226); break; } diff --git a/soh/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c b/soh/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c index 2e8858a94..5e0a780fd 100644 --- a/soh/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c +++ b/soh/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c @@ -138,6 +138,10 @@ void ElfMsg_CallNaviCylinder(ElfMsg* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); EnElf* navi = (EnElf*)player->naviActor; + // This fixes a crash when using a grotto exit when you never properly entered + if (navi == NULL) + return; + if (ElfMsg_WithinXZDistance(&player->actor.world.pos, &this->actor.world.pos, this->actor.scale.x * 100.0f) && (this->actor.world.pos.y <= player->actor.world.pos.y) && ((player->actor.world.pos.y - this->actor.world.pos.y) < (100.0f * this->actor.scale.y))) { @@ -164,9 +168,13 @@ void ElfMsg_Update(Actor* thisx, GlobalContext* globalCtx) { } } +#ifdef ZELDA_DEBUG #include "overlays/ovl_Elf_Msg/ovl_Elf_Msg.h" +#endif -void ElfMsg_Draw(Actor* thisx, GlobalContext* globalCtx) { +void ElfMsg_Draw(Actor* thisx, GlobalContext* globalCtx) +{ +#ifdef ZELDA_DEBUG OPEN_DISPS(globalCtx->state.gfxCtx, "../z_elf_msg.c", 436); if (R_NAVI_MSG_REGION_ALPHA == 0) { @@ -191,4 +199,5 @@ void ElfMsg_Draw(Actor* thisx, GlobalContext* globalCtx) { } CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_elf_msg.c", 457); + #endif } diff --git a/soh/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c b/soh/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c index f23f49e10..73b6785c8 100644 --- a/soh/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c +++ b/soh/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c @@ -148,9 +148,12 @@ void ElfMsg2_Update(Actor* thisx, GlobalContext* globalCtx) { } } +#if ZELDA_DEBUG #include "overlays/ovl_Elf_Msg2/ovl_Elf_Msg2.h" +#endif void ElfMsg2_Draw(Actor* thisx, GlobalContext* globalCtx) { +#if ZELDA_DEBUG OPEN_DISPS(globalCtx->state.gfxCtx, "../z_elf_msg2.c", 355); if (R_NAVI_MSG_REGION_ALPHA == 0) { @@ -165,4 +168,5 @@ void ElfMsg2_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPDisplayList(POLY_XLU_DISP++, sCubeDL); CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_elf_msg2.c", 367); + #endif } diff --git a/soh/src/overlays/gamestates/ovl_title/z_title.c b/soh/src/overlays/gamestates/ovl_title/z_title.c index e45cdf27b..942962f2e 100644 --- a/soh/src/overlays/gamestates/ovl_title/z_title.c +++ b/soh/src/overlays/gamestates/ovl_title/z_title.c @@ -10,6 +10,9 @@ #include "alloca.h" #include "textures/nintendo_rogo_static/nintendo_rogo_static.h" #include +#include "GameVersions.h" + +const char* GetGameVersionString(); char* quote; @@ -18,6 +21,8 @@ void Title_PrintBuildInfo(Gfx** gfxp) { //GfxPrint* printer; GfxPrint printer; + const char* gameVersionStr = GetGameVersionString(); + g = *gfxp; g = func_8009411C(g); //printer = alloca(sizeof(GfxPrint)); @@ -32,6 +37,9 @@ void Title_PrintBuildInfo(Gfx** gfxp) { GfxPrint_Printf(printer, "GCC SHIP"); #endif + GfxPrint_SetPos(&printer, 5, 4); + GfxPrint_Printf(&printer, "Game Version: %s", gameVersionStr); + GfxPrint_SetColor(&printer, 255, 255, 255, 255); GfxPrint_SetPos(&printer, 2, 22); GfxPrint_Printf(&printer, quote); @@ -66,6 +74,36 @@ char* SetQuote() { return quotes[randomQuote]; } +const char* GetGameVersionString() { + uint32_t gameVersion = ResourceMgr_GetGameVersion(); + switch (gameVersion) { + case OOT_NTSC_10: + return "N64 NTSC 1.0"; + case OOT_NTSC_11: + return "N64 NTSC 1.1"; + case OOT_NTSC_12: + return "N64 NTSC 1.2"; + case OOT_PAL_10: + return "N64 PAL 1.0"; + case OOT_PAL_11: + return "N64 PAL 1.1"; + case OOT_PAL_GC: + return "GC PAL"; + case OOT_PAL_MQ: + return "GC PAL MQ"; + case OOT_PAL_GC_DBG1: + return "GC PAL DEBUG"; + case OOT_PAL_GC_DBG2: + return "GC PAL DEBUG MQ"; + case OOT_IQUE_CN: + return "IQUE CN"; + case OOT_IQUE_TW: + return "IQUE TW"; + default: + return "UNKNOWN"; + } +} + // Note: In other rom versions this function also updates unk_1D4, coverAlpha, addAlpha, visibleDuration to calculate // the fade-in/fade-out + the duration of the n64 logo animation void Title_Calc(TitleContext* this) { diff --git a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c index a5c160700..140aa7734 100644 --- a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c +++ b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c @@ -789,40 +789,10 @@ static PreRender sPlayerPreRender; static void* sPreRenderCvg; extern int fbTest; -// OTRTODO: This function is no longer used. We could probably remove it. -void KaleidoScope_SetupPlayerPreRender(GlobalContext* globalCtx) { - Gfx* gfx; - Gfx* gfxRef; - void* fbuf; - static Gfx testBuffer[2048]; - - //return; - - fbuf = globalCtx->state.gfxCtx->curFrameBuffer; - - OPEN_DISPS(globalCtx->state.gfxCtx, "../z_kaleido_scope_PAL.c", 496); - - gfx = &testBuffer[0]; - - PreRender_SetValues(&sPlayerPreRender, 64, 112, fbuf, NULL); - func_800C1F20(&sPlayerPreRender, &gfx); - func_800C20B4(&sPlayerPreRender, &gfx); - - gSPEndDisplayList(gfx++); - gSPDisplayList(POLY_KAL_DISP++, &testBuffer[0]); - - SREG(33) |= 1; - - CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_kaleido_scope_PAL.c", 509); -} -//OTRTODO - Player on pause -#if 1 void KaleidoScope_ProcessPlayerPreRender(void) { - //Sleep_Msec(50); PreRender_Calc(&sPlayerPreRender); PreRender_Destroy(&sPlayerPreRender); } -#endif Gfx* KaleidoScope_QuadTextureIA4(Gfx* gfx, void* texture, s16 width, s16 height, u16 point) { gDPLoadTextureBlock_4b(gfx++, texture, G_IM_FMT_IA, width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, @@ -4026,7 +3996,6 @@ void KaleidoScope_Update(GlobalContext* globalCtx) ResourceMgr_DirtyDirectory("textures/icon_item_24_static*"); ResourceMgr_DirtyDirectory("textures/icon_item_static*"); CVar_SetS32("gPauseTriforce", 0); - //ResourceMgr_InvalidateCache(); func_800981B8(&globalCtx->objectCtx); func_800418D0(&globalCtx->colCtx, globalCtx); From 529c5f642d803d74feb4070b66aab85fc02a6bef Mon Sep 17 00:00:00 2001 From: Emill Date: Sat, 2 Apr 2022 19:57:20 +0200 Subject: [PATCH 20/28] Don't copy skybox textures (#129) * Don't copy skybox textures * Remove unnecessary parameter in skybox functions * Make palette address part of texture cache key * Support loading TLUT from two different memory locations --- .../Lib/Fast3D/U64/PR/ultra64/gbi.h | 11 + .../libultraship/Lib/Fast3D/gfx_pc.cpp | 44 +- libultraship/libultraship/Lib/Fast3D/gfx_pc.h | 1 + libultraship/libultraship/TextureMod.cpp | 2 +- soh/include/z64.h | 22 +- soh/src/code/z_kankyo.c | 20 +- soh/src/code/z_vr_box.c | 431 ++++++++---------- soh/src/code/z_vr_box_draw.c | 23 +- 8 files changed, 274 insertions(+), 280 deletions(-) diff --git a/libultraship/libultraship/Lib/Fast3D/U64/PR/ultra64/gbi.h b/libultraship/libultraship/Lib/Fast3D/U64/PR/ultra64/gbi.h index 843cb3cd6..83cc9a55c 100644 --- a/libultraship/libultraship/Lib/Fast3D/U64/PR/ultra64/gbi.h +++ b/libultraship/libultraship/Lib/Fast3D/U64/PR/ultra64/gbi.h @@ -4223,6 +4223,17 @@ _DW({ \ gDPPipeSync(pkt); \ }) +#define gDPLoadTLUT_pal128(pkt, pal, dram) \ +_DW({ \ + gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ + gDPTileSync(pkt); \ + gDPSetTile(pkt, 0, 0, 0, 256 + ((pal)&1)*128, \ + G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \ + gDPLoadSync(pkt); \ + gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 127); \ + gDPPipeSync(pkt); \ +}) + #else /* **** WORKAROUND hardware 1 load_tlut bug ****** */ #define gDPLoadTLUT_pal256(pkt, dram) \ diff --git a/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp b/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp index 5739774ee..28debd120 100644 --- a/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp +++ b/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp @@ -125,7 +125,7 @@ static struct RSP { } rsp; static struct RDP { - const uint8_t *palette; + const uint8_t *palettes[2]; struct { const uint8_t *addr; uint8_t siz; @@ -145,6 +145,7 @@ static struct RDP { uint8_t cms, cmt; uint8_t shifts, shiftt; uint16_t uls, ult, lrs, lrt; // U10.2 + uint16_t tmem; // 0-511, in 64-bit word units uint32_t line_size_bytes; uint8_t palette; uint8_t tmem_index; // 0 or 1 for offset 0 kB or offset 2 kB, respectively @@ -490,8 +491,22 @@ void gfx_texture_cache_clear() gfx_texture_cache.lru.clear(); } -static bool gfx_texture_cache_lookup(int i, TextureCacheNode **n, const uint8_t *orig_addr, uint32_t fmt, uint32_t siz, uint32_t palette_index) { - TextureCacheKey key = { orig_addr, fmt, siz, palette_index }; +static bool gfx_texture_cache_lookup(int i, int tile) { + uint8_t fmt = rdp.texture_tile[tile].fmt; + uint8_t siz = rdp.texture_tile[tile].siz; + uint32_t tmem_index = rdp.texture_tile[tile].tmem_index; + + TextureCacheNode** n = &rendering_state.textures[i]; + const uint8_t* orig_addr = rdp.loaded_texture[tmem_index].addr; + uint8_t palette_index = rdp.texture_tile[tile].palette; + + TextureCacheKey key; + if (fmt == G_IM_FMT_CI) { + key = { orig_addr, { rdp.palettes[0], rdp.palettes[1] }, fmt, siz, palette_index }; + } else { + key = { orig_addr, { }, fmt, siz, palette_index }; + } + auto it = gfx_texture_cache.map.find(key); if (it != gfx_texture_cache.map.end()) { @@ -735,7 +750,8 @@ static void import_texture_ci4(int tile) { uint32_t size_bytes = rdp.loaded_texture[rdp.texture_tile[tile].tmem_index].size_bytes; uint32_t full_image_line_size_bytes = rdp.loaded_texture[rdp.texture_tile[tile].tmem_index].full_image_line_size_bytes; uint32_t line_size_bytes = rdp.loaded_texture[rdp.texture_tile[tile].tmem_index].line_size_bytes; - const uint8_t *palette = rdp.palette + rdp.texture_tile[tile].palette * 16 * 2; // 16 pixel entries, 16 bits each + uint32_t pal_idx = rdp.texture_tile[tile].palette; // 0-15 + const uint8_t *palette = rdp.palettes[pal_idx / 8] + (pal_idx % 8) * 16 * 2; // 16 pixel entries, 16 bits each SUPPORT_CHECK(full_image_line_size_bytes == line_size_bytes); for (uint32_t i = 0; i < size_bytes * 2; i++) { @@ -770,7 +786,7 @@ static void import_texture_ci8(int tile) { { for (uint32_t k = 0; k < line_size_bytes; i++, k++, j++) { uint8_t idx = addr[j]; - uint16_t col16 = (rdp.palette[idx * 2] << 8) | rdp.palette[idx * 2 + 1]; // Big endian load + uint16_t col16 = (rdp.palettes[idx / 128][(idx % 128) * 2] << 8) | rdp.palettes[idx / 128][(idx % 128) * 2 + 1]; // Big endian load uint8_t a = col16 & 1; uint8_t r = col16 >> 11; uint8_t g = (col16 >> 6) & 0x1f; @@ -815,7 +831,7 @@ static void import_texture(int i, int tile) { // if (ModInternal::callBindHook(0)) // return; - if (gfx_texture_cache_lookup(i, &rendering_state.textures[i], rdp.loaded_texture[tmem_index].addr, fmt, siz, rdp.texture_tile[tile].palette)) + if (gfx_texture_cache_lookup(i, tile)) { return; } @@ -1638,6 +1654,7 @@ static void gfx_dp_set_tile(uint8_t fmt, uint32_t siz, uint32_t line, uint32_t t int bp = 0; } + rdp.texture_tile[tile].tmem = tmem; //rdp.texture_tile[tile].tmem_index = tmem / 256; // tmem is the 64-bit word offset, so 256 words means 2 kB rdp.texture_tile[tile].tmem_index = tmem != 0; // assume one texture is loaded at address 0 and another texture at any other address rdp.textures_changed[0] = true; @@ -1654,10 +1671,19 @@ static void gfx_dp_set_tile_size(uint8_t tile, uint16_t uls, uint16_t ult, uint1 } static void gfx_dp_load_tlut(uint8_t tile, uint32_t high_index) { - //SUPPORT_CHECK(tile == G_TX_LOADTILE); - //SUPPORT_CHECK(rdp.texture_to_load.siz == G_IM_SIZ_16b); + SUPPORT_CHECK(tile == G_TX_LOADTILE); + SUPPORT_CHECK(rdp.texture_to_load.siz == G_IM_SIZ_16b); - rdp.palette = rdp.texture_to_load.addr; + SUPPORT_CHECK((rdp.texture_tile[tile].tmem == 256 && (high_index <= 127 || high_index == 255)) || (rdp.texture_tile[tile].tmem == 384 && high_index == 127)); + + if (rdp.texture_tile[tile].tmem == 256) { + rdp.palettes[0] = rdp.texture_to_load.addr; + if (high_index == 255) { + rdp.palettes[1] = rdp.texture_to_load.addr + 2 * 128; + } + } else { + rdp.palettes[1] = rdp.texture_to_load.addr; + } } static void gfx_dp_load_block(uint8_t tile, uint32_t uls, uint32_t ult, uint32_t lrs, uint32_t dxt) { diff --git a/libultraship/libultraship/Lib/Fast3D/gfx_pc.h b/libultraship/libultraship/Lib/Fast3D/gfx_pc.h index b3b8d9082..446c0b6a4 100644 --- a/libultraship/libultraship/Lib/Fast3D/gfx_pc.h +++ b/libultraship/libultraship/Lib/Fast3D/gfx_pc.h @@ -17,6 +17,7 @@ struct GfxDimensions struct TextureCacheKey { const uint8_t* texture_addr; + const uint8_t* palette_addrs[2]; uint8_t fmt, siz; uint8_t palette_index; diff --git a/libultraship/libultraship/TextureMod.cpp b/libultraship/libultraship/TextureMod.cpp index dd2d6fc3a..2a7e39511 100644 --- a/libultraship/libultraship/TextureMod.cpp +++ b/libultraship/libultraship/TextureMod.cpp @@ -80,7 +80,7 @@ namespace Ship { if (!this->TextureCache.contains(path)) this->TextureCache[path].resize(10); - TextureCacheKey key = { orig_addr, static_cast(fmt), static_cast(siz), static_cast(palette) }; + TextureCacheKey key = { orig_addr, { }, static_cast(fmt), static_cast(siz), static_cast(palette) }; TextureCacheValue value = { api->new_texture(), 0, 0, false }; const auto entry = new TextureCacheNode(key, value); api->select_texture(tile, entry->second.texture_id); diff --git a/soh/include/z64.h b/soh/include/z64.h index 6e783eeb9..24ec79946 100644 --- a/soh/include/z64.h +++ b/soh/include/z64.h @@ -336,16 +336,18 @@ typedef enum { } SkyboxId; typedef struct { - /* 0x000 */ char unk_00[0x128]; - /* 0x128 */ void* staticSegments[2]; - /* 0x130 */ u16 (*palettes)[256]; - /* 0x134 */ Gfx (*dListBuf)[150]; - /* 0x138 */ Gfx* unk_138; - /* 0x13C */ Vtx* roomVtx; - /* 0x140 */ s16 unk_140; - /* 0x144 */ Vec3f rot; - /* 0x150 */ char unk_150[0x10]; -} SkyboxContext; // size = 0x160 + char unk_00[0x128]; + s16 skyboxId; + void* textures[2][6]; + void* palettes[6]; + u16 palette_size; + Gfx (*dListBuf)[150]; + Gfx* unk_138; + Vtx* roomVtx; + s16 unk_140; + Vec3f rot; + char unk_150[0x10]; +} SkyboxContext; typedef enum { /* 0 */ OCARINA_SONG_MINUET, diff --git a/soh/src/code/z_kankyo.c b/soh/src/code/z_kankyo.c index 90194835e..afcd0f4fa 100644 --- a/soh/src/code/z_kankyo.c +++ b/soh/src/code/z_kankyo.c @@ -677,7 +677,9 @@ void Environment_UpdateSkybox(GlobalContext* globalCtx, u8 skyboxId, Environment SkyboxTableEntry entryA = sSkyboxTable[newSkybox1Index]; for (int i = 0; i < 5; i++) - LoadSkyboxTex(globalCtx, skyboxCtx, 0, i, entryA.textures[i], 128, i == 4 ? 128 : 64, 128, 64); + LoadSkyboxTex(skyboxCtx, 0, i, entryA.textures[i], 128, i == 4 ? 128 : 64, 128, 64); + + Skybox_Update(skyboxCtx); envCtx->skybox1Index = newSkybox1Index; @@ -695,7 +697,9 @@ void Environment_UpdateSkybox(GlobalContext* globalCtx, u8 skyboxId, Environment SkyboxTableEntry entryA = sSkyboxTable[newSkybox2Index]; for (int i = 0; i < 5; i++) - LoadSkyboxTex(globalCtx, skyboxCtx, 1, i, entryA.textures[i], 128, i == 4 ? 128 : 64, 128, 64); + LoadSkyboxTex(skyboxCtx, 1, i, entryA.textures[i], 128, i == 4 ? 128 : 64, 128, 64); + + Skybox_Update(skyboxCtx); envCtx->skybox2Index = newSkybox2Index; @@ -712,7 +716,7 @@ void Environment_UpdateSkybox(GlobalContext* globalCtx, u8 skyboxId, Environment if ((newSkybox1Index & 1) ^ ((newSkybox1Index & 4) >> 2)) { SkyboxTableEntry entryA = sSkyboxTable[newSkybox1Index]; - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, entryA.palettes[0], 16, 8); + LoadSkyboxPalette(skyboxCtx, 0, entryA.palettes[0], 16, 8); //size = gSkyboxFiles[newSkybox1Index].palette.vromEnd - gSkyboxFiles[newSkybox1Index].palette.vromStart; //osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1); @@ -721,7 +725,7 @@ void Environment_UpdateSkybox(GlobalContext* globalCtx, u8 skyboxId, Environment //"../z_kankyo.c", 1307); } else { SkyboxTableEntry entryA = sSkyboxTable[newSkybox1Index]; - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, entryA.palettes[0], 16, 8); + LoadSkyboxPalette(skyboxCtx, 1, entryA.palettes[0], 16, 8); //size = gSkyboxFiles[newSkybox1Index].palette.vromEnd - gSkyboxFiles[newSkybox1Index].palette.vromStart; //osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1); @@ -729,6 +733,8 @@ void Environment_UpdateSkybox(GlobalContext* globalCtx, u8 skyboxId, Environment //gSkyboxFiles[newSkybox1Index].palette.vromStart, size, 0, &envCtx->loadQueue, NULL, //"../z_kankyo.c", 1320); } + + Skybox_Update(skyboxCtx); } if (envCtx->skyboxDmaState == SKYBOX_DMA_FILE2_DONE) { @@ -737,7 +743,7 @@ void Environment_UpdateSkybox(GlobalContext* globalCtx, u8 skyboxId, Environment if ((newSkybox2Index & 1) ^ ((newSkybox2Index & 4) >> 2)) { SkyboxTableEntry entryA = sSkyboxTable[newSkybox2Index]; - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, entryA.palettes[0], 16, 8); + LoadSkyboxPalette(skyboxCtx, 0, entryA.palettes[0], 16, 8); /*size = gSkyboxFiles[newSkybox2Index].palette.vromEnd - gSkyboxFiles[newSkybox2Index].palette.vromStart; osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1); @@ -747,7 +753,7 @@ void Environment_UpdateSkybox(GlobalContext* globalCtx, u8 skyboxId, Environment } else { SkyboxTableEntry entryA = sSkyboxTable[newSkybox2Index]; - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, entryA.palettes[0], 16, 8); + LoadSkyboxPalette(skyboxCtx, 1, entryA.palettes[0], 16, 8); /*size = gSkyboxFiles[newSkybox2Index].palette.vromEnd - gSkyboxFiles[newSkybox2Index].palette.vromStart; osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1); @@ -755,6 +761,8 @@ void Environment_UpdateSkybox(GlobalContext* globalCtx, u8 skyboxId, Environment gSkyboxFiles[newSkybox2Index].palette.vromStart, size, 0, &envCtx->loadQueue, NULL, "../z_kankyo.c", 1355);*/ } + + Skybox_Update(skyboxCtx); } if ((envCtx->skyboxDmaState == SKYBOX_DMA_FILE1_START) || (envCtx->skyboxDmaState == SKYBOX_DMA_FILE2_START)) { diff --git a/soh/src/code/z_vr_box.c b/soh/src/code/z_vr_box.c index e532edf31..76753e096 100644 --- a/soh/src/code/z_vr_box.c +++ b/soh/src/code/z_vr_box.c @@ -248,7 +248,7 @@ s32 func_800ADBB0(SkyboxContext* skyboxCtx, Vtx* roomVtx, s32 arg2, s32 arg3, s3 for (phi_t2_4 = 0, phi_ra = 0; phi_ra < 4; phi_ra++, phi_a2_4 += 0x1F) { for (phi_a0_4 = 0, phi_t1 = 0; phi_t1 < 4; phi_t1++, phi_a0_4 += 0x3F, phi_t2_4 += 4) { - gDPLoadTextureTile(skyboxCtx->unk_138++, (uintptr_t)skyboxCtx->staticSegments[0] + D_8012AC90[arg8], + gDPLoadTextureTile(skyboxCtx->unk_138++, skyboxCtx->textures[0][arg8], G_IM_FMT_CI, G_IM_SIZ_8b, 256, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x3F, phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); @@ -360,11 +360,11 @@ s32 func_800AE2C0(SkyboxContext* skyboxCtx, Vtx* roomVtx, s32 arg2, s32 arg3, s3 phi_a2_4 = 0; for (phi_t2_4 = 0, phi_ra = 0; phi_ra < 4; phi_ra++, phi_a2_4 += 0x1F) { for (phi_a0_4 = 0, phi_t1 = 0; phi_t1 < 4; phi_t1++, phi_a0_4 += 0x1F, phi_t2_4 += 4) { - gDPLoadMultiTile(skyboxCtx->unk_138++, (uintptr_t)skyboxCtx->staticSegments[0] + D_8012ADC0[arg8], 0, + gDPLoadMultiTile(skyboxCtx->unk_138++, skyboxCtx->textures[0][arg8], 0, G_TX_RENDERTILE, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); - gDPLoadMultiTile(skyboxCtx->unk_138++, (uintptr_t)skyboxCtx->staticSegments[1] + D_8012ADC0[arg8], 0x80, 1, + gDPLoadMultiTile(skyboxCtx->unk_138++, skyboxCtx->textures[1][arg8], 0x80, 1, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); @@ -379,11 +379,11 @@ s32 func_800AE2C0(SkyboxContext* skyboxCtx, Vtx* roomVtx, s32 arg2, s32 arg3, s3 phi_a2_4 = 0; for (phi_t2_4 = 0, phi_ra = 0; phi_ra < 2; phi_ra++, phi_a2_4 += 0x1F) { for (phi_a0_4 = 0, phi_t1 = 0; phi_t1 < 4; phi_t1++, phi_a0_4 += 0x1F, phi_t2_4 += 4) { - gDPLoadMultiTile(skyboxCtx->unk_138++, (uintptr_t)skyboxCtx->staticSegments[0] + D_8012ADC0[arg8], 0, + gDPLoadMultiTile(skyboxCtx->unk_138++, skyboxCtx->textures[0][arg8], 0, G_TX_RENDERTILE, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); - gDPLoadMultiTile(skyboxCtx->unk_138++, (uintptr_t)skyboxCtx->staticSegments[1] + D_8012ADC0[arg8], 0x80, 1, + gDPLoadMultiTile(skyboxCtx->unk_138++, skyboxCtx->textures[1][arg8], 0x80, 1, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); @@ -394,11 +394,11 @@ s32 func_800AE2C0(SkyboxContext* skyboxCtx, Vtx* roomVtx, s32 arg2, s32 arg3, s3 phi_a2_4 -= 0x1F; for (phi_ra = 0; phi_ra < 2; phi_ra++, phi_a2_4 -= 0x1F) { for (phi_a0_4 = 0, phi_t1 = 0; phi_t1 < 4; phi_t1++, phi_a0_4 += 0x1F, phi_t2_4 += 4) { - gDPLoadMultiTile(skyboxCtx->unk_138++, (uintptr_t)skyboxCtx->staticSegments[0] + D_8012ADC0[arg8], 0, + gDPLoadMultiTile(skyboxCtx->unk_138++, skyboxCtx->textures[0][arg8], 0, G_TX_RENDERTILE, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); - gDPLoadMultiTile(skyboxCtx->unk_138++, (uintptr_t)skyboxCtx->staticSegments[1] + D_8012ADC0[arg8], 0x80, 1, + gDPLoadMultiTile(skyboxCtx->unk_138++, skyboxCtx->textures[1][arg8], 0x80, 1, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); @@ -444,25 +444,20 @@ void func_800AF178(SkyboxContext* skyboxCtx, s32 arg1) { } } -void LoadSkyboxTex(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, int segmentIndex, int imageIndex, char* tex, int width, int height, int offsetW, int offsetH) +void LoadSkyboxTex(SkyboxContext* skyboxCtx, int segmentIndex, int imageIndex, char* tex, int width, int height, int offsetW, int offsetH) { - if (globalCtx != NULL && globalCtx->state.gfxCtx != NULL && globalCtx->state.gfxCtx != 0xABABABAB) - gSPInvalidateTexCache(globalCtx->state.gfxCtx->polyOpa.p++, ((uintptr_t)skyboxCtx->staticSegments[segmentIndex] + (imageIndex * (offsetW * offsetH)))); - - memcpy((uintptr_t)skyboxCtx->staticSegments[segmentIndex] + (imageIndex * (offsetW * offsetH)), ResourceMgr_LoadTexByName(tex), width * height); + skyboxCtx->textures[segmentIndex][imageIndex] = tex; } -void LoadSkyboxTexAtOffset(SkyboxContext* skyboxCtx, int segmentIndex, char* tex, int width, int height, int offset) +void LoadSkyboxTexAtOffset(SkyboxContext* skyboxCtx, int segmentIndex, int imageIndex, char* tex, int width, int height, int offset) { - memcpy((uintptr_t)skyboxCtx->staticSegments[segmentIndex] + offset, ResourceMgr_LoadTexByName(tex), width * height); + skyboxCtx->textures[segmentIndex][imageIndex] = tex; } -void LoadSkyboxPalette(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, int paletteIndex, char* palTex, int width, +void LoadSkyboxPalette(SkyboxContext* skyboxCtx, int paletteIndex, char* palTex, int width, int height) { - if (globalCtx != NULL && globalCtx->state.gfxCtx != NULL && globalCtx->state.gfxCtx != 0xABABABAB) - gSPInvalidateTexCache(globalCtx->state.gfxCtx->polyOpa.p++, (uintptr_t)skyboxCtx->palettes + (paletteIndex * (width * height * 2))); - - memcpy((uintptr_t)skyboxCtx->palettes + (paletteIndex * (width * height * 2)), ResourceMgr_LoadTexByName(palTex), width * height * 2); + skyboxCtx->palettes[paletteIndex] = palTex; + skyboxCtx->palette_size = width * height; } static const char* sSBVRFine0Tex[] = @@ -634,376 +629,316 @@ void Skybox_Setup(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, s16 skybox } - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, (128 * 64 * 4) + (128 * 128), "../z_vr_box.c", 1054); - SkyboxTableEntry entryA = sSkyboxTable[sp41]; for (int i = 0; i < 5; i++) - LoadSkyboxTex(globalCtx, skyboxCtx, 0, i, entryA.textures[i], 128, i == 4 ? 128 : 64, 128, 64); + LoadSkyboxTex(skyboxCtx, 0, i, entryA.textures[i], 128, i == 4 ? 128 : 64, 128, 64); SkyboxTableEntry entryB = sSkyboxTable[sp40]; - skyboxCtx->staticSegments[1] = GameState_Alloc(&globalCtx->state, (128 * 64 * 4) + (128 * 128), "../z_vr_box.c", 1060); - for (int i = 0; i < 5; i++) - LoadSkyboxTex(globalCtx, skyboxCtx, 1, i, entryB.textures[i], 128, i == 4 ? 128 : 64, 128, 64); + LoadSkyboxTex(skyboxCtx, 1, i, entryB.textures[i], 128, i == 4 ? 128 : 64, 128, 64); if ((sp41 & 1) ^ ((sp41 & 4) >> 2)) { - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 256 * 2, "../z_vr_box.c", 1072); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, entryA.palettes[0], 16, 8); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, entryB.palettes[0], 16, 8); + LoadSkyboxPalette(skyboxCtx, 0, entryA.palettes[0], 16, 8); + LoadSkyboxPalette(skyboxCtx, 1, entryB.palettes[0], 16, 8); } else { - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 256 * 2, "../z_vr_box.c", 1085); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, entryB.palettes[0], 16, 8); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, entryA.palettes[0], 16, 8); + LoadSkyboxPalette(skyboxCtx, 0, entryB.palettes[0], 16, 8); + LoadSkyboxPalette(skyboxCtx, 1, entryA.palettes[0], 16, 8); } break; case SKYBOX_BAZAAR: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 2, "../z_vr_box.c", 1226); + LoadSkyboxTex(skyboxCtx, 0, 0, gBazaarBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gBazaar2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gBazaarBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gBazaar2BgTex, 256, 256, 256, 256); - - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 2, "../z_vr_box.c", 1231); - - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gBazaarBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gBazaarBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gBazaarBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gBazaarBg2Tlut, 16, 16); skyboxCtx->rot.y = 0.8f; break; case SKYBOX_HOUSE_LINK: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gLinksHouseBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gLinksHouse2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gLinksHouse3BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 3, gLinksHouse4BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gLinksHouseBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gLinksHouse2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gLinksHouse3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 3, gLinksHouse4BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 4, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gLinksHouseBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gLinksHouseBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gLinksHouseBg3Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 3, gLinksHouseBg4Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gLinksHouseBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gLinksHouseBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gLinksHouseBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 3, gLinksHouseBg4Tlut, 16, 16); break; case SKYBOX_OVERCAST_SUNSET: - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0xC000, "../z_vr_box.c", 1226); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gSunsetOvercastSkybox1Tex, 128, 64, 0x0); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gSunsetOvercastSkybox2Tex, 128, 64, 0x2000); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gSunsetOvercastSkybox3Tex, 128, 64, 0x4000); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gSunsetOvercastSkybox4Tex, 128, 64, 0x6000); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gSunsetOvercastSkybox5Tex, 128, 128, 0x8000); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 0, gSunsetOvercastSkybox1Tex, 128, 64, 0x0); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 1, gSunsetOvercastSkybox2Tex, 128, 64, 0x2000); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 2, gSunsetOvercastSkybox3Tex, 128, 64, 0x4000); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 3, gSunsetOvercastSkybox4Tex, 128, 64, 0x6000); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 4, gSunsetOvercastSkybox5Tex, 128, 128, 0x8000); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x100, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gSunsetOvercastSkyboxTlut, 16, 8); + LoadSkyboxPalette(skyboxCtx, 0, gSunsetOvercastSkyboxTlut, 16, 8); break; case SKYBOX_MARKET_ADULT: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gMarketRuinsBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gMarketRuins2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gMarketRuins3BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 3, gMarketRuins4BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gMarketRuinsBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gMarketRuins2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gMarketRuins3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 3, gMarketRuins4BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 4, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gMarketRuinsBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gMarketRuinsBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gMarketRuinsBg3Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 3, gMarketRuinsBg4Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gMarketRuinsBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gMarketRuinsBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gMarketRuinsBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 3, gMarketRuinsBg4Tlut, 16, 16); break; case SKYBOX_CUTSCENE_MAP: - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000, "../z_vr_box.c", 1226); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gHoly0Skybox1Tex, 128, 64, 0x0); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gHoly0Skybox2Tex, 128, 64, 0x2000); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gHoly0Skybox3Tex, 128, 64, 0x4000); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gHoly0Skybox4Tex, 128, 64, 0x6000); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gHoly0Skybox5Tex, 128, 128, 0x8000); - LoadSkyboxTexAtOffset(skyboxCtx, 0, gHoly0Skybox6Tex, 128, 128, 0xC000); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 0, gHoly0Skybox1Tex, 128, 64, 0x0); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 1, gHoly0Skybox2Tex, 128, 64, 0x2000); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 2, gHoly0Skybox3Tex, 128, 64, 0x4000); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 3, gHoly0Skybox4Tex, 128, 64, 0x6000); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 4, gHoly0Skybox5Tex, 128, 128, 0x8000); + LoadSkyboxTexAtOffset(skyboxCtx, 0, 5, gHoly0Skybox6Tex, 128, 128, 0xC000); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x100 * 2, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gHoly0SkyboxTlut, 16, 8); + LoadSkyboxPalette(skyboxCtx, 0, gHoly0SkyboxTlut, 16, 8); - skyboxCtx->staticSegments[1] = GameState_Alloc(&globalCtx->state, 0x10000, "../z_vr_box.c", 1226); - LoadSkyboxTexAtOffset(skyboxCtx, 1, gHoly1Skybox1Tex, 128, 64, 0x0); - LoadSkyboxTexAtOffset(skyboxCtx, 1, gHoly1Skybox2Tex, 128, 64, 0x2000); - LoadSkyboxTexAtOffset(skyboxCtx, 1, gHoly1Skybox3Tex, 128, 64, 0x4000); - LoadSkyboxTexAtOffset(skyboxCtx, 1, gHoly1Skybox4Tex, 128, 64, 0x6000); - LoadSkyboxTexAtOffset(skyboxCtx, 1, gHoly1Skybox5Tex, 128, 128, 0x8000); - LoadSkyboxTexAtOffset(skyboxCtx, 1, gHoly1Skybox6Tex, 128, 128, 0xC000); + LoadSkyboxTexAtOffset(skyboxCtx, 1, 0, gHoly1Skybox1Tex, 128, 64, 0x0); + LoadSkyboxTexAtOffset(skyboxCtx, 1, 1, gHoly1Skybox2Tex, 128, 64, 0x2000); + LoadSkyboxTexAtOffset(skyboxCtx, 1, 2, gHoly1Skybox3Tex, 128, 64, 0x4000); + LoadSkyboxTexAtOffset(skyboxCtx, 1, 3, gHoly1Skybox4Tex, 128, 64, 0x6000); + LoadSkyboxTexAtOffset(skyboxCtx, 1, 4, gHoly1Skybox5Tex, 128, 128, 0x8000); + LoadSkyboxTexAtOffset(skyboxCtx, 1, 5, gHoly1Skybox6Tex, 128, 128, 0xC000); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gHoly1SkyboxTlut, 16, 8); + LoadSkyboxPalette(skyboxCtx, 1, gHoly1SkyboxTlut, 16, 8); break; case SKYBOX_MARKET_CHILD_DAY: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gMarketDayBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gMarketDay2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gMarketDay3BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 3, gMarketDay4BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gMarketDayBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gMarketDay2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gMarketDay3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 3, gMarketDay4BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 4, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gMarketDayBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gMarketDayBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gMarketDayBg3Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 3, gMarketDayBg4Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gMarketDayBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gMarketDayBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gMarketDayBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 3, gMarketDayBg4Tlut, 16, 16); break; case SKYBOX_MARKET_CHILD_NIGHT: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gMarketNightBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gMarketNight2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gMarketNight3BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 3, gMarketNight4BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gMarketNightBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gMarketNight2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gMarketNight3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 3, gMarketNight4BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 4, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gMarketNightBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gMarketNightBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gMarketNightBg3Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 3, gMarketNightBg4Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gMarketNightBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gMarketNightBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gMarketNightBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 3, gMarketNightBg4Tlut, 16, 16); break; case SKYBOX_HAPPY_MASK_SHOP: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 2, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gMaskShopBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gMaskShop2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gMaskShopBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gMaskShop2BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 2, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gMaskShopBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gMaskShopBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gMaskShopBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gMaskShopBg2Tlut, 16, 16); skyboxCtx->rot.y = 0.8f; break; case SKYBOX_HOUSE_KNOW_IT_ALL_BROTHERS: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gKnowItAllBrosHouseBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gKnowItAllBrosHouse2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gKnowItAllBrosHouse3BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 3, gKnowItAllBrosHouse4BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gKnowItAllBrosHouseBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gKnowItAllBrosHouse2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gKnowItAllBrosHouse3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 3, gKnowItAllBrosHouse4BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 4, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gKnowItAllBrosHouseBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gKnowItAllBrosHouseBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gKnowItAllBrosHouseBg3Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 3, gKnowItAllBrosHouseBg4Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gKnowItAllBrosHouseBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gKnowItAllBrosHouseBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gKnowItAllBrosHouseBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 3, gKnowItAllBrosHouseBg4Tlut, 16, 16); break; case SKYBOX_HOUSE_OF_TWINS: skyboxCtx->unk_140 = 2; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 3, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gHouseOfTwinsBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gHouseOfTwins2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gHouseOfTwins3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gHouseOfTwinsBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gHouseOfTwins2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gHouseOfTwins3BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 3, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gHouseOfTwinsBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gHouseOfTwinsBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gHouseOfTwinsBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gHouseOfTwinsBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gHouseOfTwinsBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gHouseOfTwinsBg3Tlut, 16, 16); break; case SKYBOX_STABLES: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gStableBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gStable2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gStable3BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 3, gStable4BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gStableBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gStable2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gStable3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 3, gStable4BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 4, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gStableBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gStableBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gStableBg3Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 3, gStableBg4Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gStableBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gStableBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gStableBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 3, gStableBg4Tlut, 16, 16); break; case SKYBOX_HOUSE_KAKARIKO: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gCarpentersHouseBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gCarpentersHouse2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gCarpentersHouse3BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 3, gCarpentersHouse4BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gCarpentersHouseBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gCarpentersHouse2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gCarpentersHouse3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 3, gCarpentersHouse4BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 4, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gCarpentersHouseBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gCarpentersHouseBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gCarpentersHouseBg3Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 3, gCarpentersHouseBg4Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gCarpentersHouseBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gCarpentersHouseBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gCarpentersHouseBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 3, gCarpentersHouseBg4Tlut, 16, 16); break; case SKYBOX_KOKIRI_SHOP: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 2, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gKokiriShopBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gKokiriShop2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gKokiriShopBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gKokiriShop2BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 2, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gKokiriShopBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gKokiriShopBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gKokiriShopBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gKokiriShopBg2Tlut, 16, 16); skyboxCtx->rot.y = 0.8f; break; case SKYBOX_GORON_SHOP: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 2, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gGoronShopBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gGoronShop2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gGoronShopBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gGoronShop2BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 2, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gGoronShopBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gGoronShopBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gGoronShopBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gGoronShopBg2Tlut, 16, 16); skyboxCtx->rot.y = 0.8f; break; case SKYBOX_ZORA_SHOP: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 2, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gZoraShopBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gZoraShop2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gZoraShopBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gZoraShop2BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 2, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gZoraShopBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gZoraShopBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gZoraShopBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gZoraShopBg2Tlut, 16, 16); skyboxCtx->rot.y = 0.8f; break; case SKYBOX_POTION_SHOP_KAKARIKO: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 2, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gKakPotionShopBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gKakPotionShop2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gKakPotionShopBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gKakPotionShop2BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 2, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gKakPotionShopBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gKakPotionShopBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gKakPotionShopBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gKakPotionShopBg2Tlut, 16, 16); skyboxCtx->rot.y = 0.8f; break; case SKYBOX_POTION_SHOP_MARKET: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 2, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gMarketPotionShopBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gMarketPotionShop2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gMarketPotionShopBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gMarketPotionShop2BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 2, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gMarketPotionShopBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gMarketPotionShopBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gMarketPotionShopBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gMarketPotionShopBg2Tlut, 16, 16); skyboxCtx->rot.y = 0.8f; break; case SKYBOX_BOMBCHU_SHOP: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 2, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gBombchuShopBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gBombchuShop2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gBombchuShopBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gBombchuShop2BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 2, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gBombchuShopBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gBombchuShopBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gBombchuShopBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gBombchuShopBg2Tlut, 16, 16); skyboxCtx->rot.y = 0.8f; break; case SKYBOX_HOUSE_RICHARD: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gRichardsHouseBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gRichardsHouse2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gRichardsHouse3BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 3, gRichardsHouse4BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gRichardsHouseBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gRichardsHouse2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gRichardsHouse3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 3, gRichardsHouse4BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 4, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gRichardsHouseBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gRichardsHouseBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gRichardsHouseBg3Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 3, gRichardsHouseBg4Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gRichardsHouseBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gRichardsHouseBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gRichardsHouseBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 3, gRichardsHouseBg4Tlut, 16, 16); break; case SKYBOX_HOUSE_IMPA: skyboxCtx->unk_140 = 1; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gCowHouseBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gCowHouse2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gCowHouse3BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 3, gCowHouse4BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gCowHouseBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gCowHouse2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gCowHouse3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 3, gCowHouse4BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 4, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gCowHouseBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gCowHouseBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gCowHouseBg3Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 3, gCowHouseBg4Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gCowHouseBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gCowHouseBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gCowHouseBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 3, gCowHouseBg4Tlut, 16, 16); break; case SKYBOX_TENT: skyboxCtx->unk_140 = 2; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 3, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gCarpentersTentBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gCarpentersTent2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gCarpentersTent3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gCarpentersTentBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gCarpentersTent2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gCarpentersTent3BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 3, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gCarpentersTentBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gCarpentersTentBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gCarpentersTentBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gCarpentersTentBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gCarpentersTentBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gCarpentersTentBg3Tlut, 16, 16); break; case SKYBOX_HOUSE_MIDO: skyboxCtx->unk_140 = 2; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 3, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gMidosHouseBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gMidosHouse2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gMidosHouse3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gMidosHouseBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gMidosHouse2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gMidosHouse3BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 3, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gMidosHouseBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gMidosHouseBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gMidosHouseBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gMidosHouseBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gMidosHouseBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gMidosHouseBg3Tlut, 16, 16); break; case SKYBOX_HOUSE_SARIA: skyboxCtx->unk_140 = 2; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 3, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gSariasHouseBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gSariasHouse2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gSariasHouse3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gSariasHouseBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gSariasHouse2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gSariasHouse3BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 3, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gSariasHouseBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gSariasHouseBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gSariasHouseBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gSariasHouseBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gSariasHouseBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gSariasHouseBg3Tlut, 16, 16); break; case SKYBOX_HOUSE_ALLEY: skyboxCtx->unk_140 = 2; - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 3, "../z_vr_box.c", 1226); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 0, gBackAlleyHouseBgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 1, gBackAlleyHouse2BgTex, 256, 256, 256, 256); - LoadSkyboxTex(globalCtx, skyboxCtx, 0, 2, gBackAlleyHouse3BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 0, gBackAlleyHouseBgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 1, gBackAlleyHouse2BgTex, 256, 256, 256, 256); + LoadSkyboxTex(skyboxCtx, 0, 2, gBackAlleyHouse3BgTex, 256, 256, 256, 256); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x200 * 3, "../z_vr_box.c", 1231); - LoadSkyboxPalette(globalCtx, skyboxCtx, 0, gBackAlleyHouseBgTlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 1, gBackAlleyHouseBg2Tlut, 16, 16); - LoadSkyboxPalette(globalCtx, skyboxCtx, 2, gBackAlleyHouseBg3Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 0, gBackAlleyHouseBgTlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 1, gBackAlleyHouseBg2Tlut, 16, 16); + LoadSkyboxPalette(skyboxCtx, 2, gBackAlleyHouseBg3Tlut, 16, 16); break; default: - skyboxCtx->staticSegments[0] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - skyboxCtx->staticSegments[1] = GameState_Alloc(&globalCtx->state, 0x10000 * 4, "../z_vr_box.c", 1226); - skyboxCtx->palettes = GameState_Alloc(&globalCtx->state, 0x1000, "../z_vr_box.c", 1226); break; } } @@ -1011,6 +946,7 @@ void Skybox_Setup(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, s16 skybox void Skybox_Init(GameState* state, SkyboxContext* skyboxCtx, s16 skyboxId) { GlobalContext* globalCtx = (GlobalContext*)state; + skyboxCtx->skyboxId = skyboxId; skyboxCtx->unk_140 = 0; skyboxCtx->rot.x = skyboxCtx->rot.y = skyboxCtx->rot.z = 0.0f; @@ -1050,3 +986,20 @@ void Skybox_Init(GameState* state, SkyboxContext* skyboxCtx, s16 skyboxId) { osSyncPrintf(VT_RST); } } + +void Skybox_Update(SkyboxContext* skyboxCtx) { + if (skyboxCtx->skyboxId != SKYBOX_NONE) { + osSyncPrintf(VT_FGCOL(GREEN)); + + if (skyboxCtx->unk_140 != 0) { + func_800AEFC8(skyboxCtx, skyboxCtx->skyboxId); + } else { + if (skyboxCtx->skyboxId == SKYBOX_CUTSCENE_MAP) { + func_800AF178(skyboxCtx, 6); + } else { + func_800AF178(skyboxCtx, 5); + } + } + osSyncPrintf(VT_RST); + } +} diff --git a/soh/src/code/z_vr_box_draw.c b/soh/src/code/z_vr_box_draw.c index a5c0610f7..292789333 100644 --- a/soh/src/code/z_vr_box_draw.c +++ b/soh/src/code/z_vr_box_draw.c @@ -17,22 +17,10 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb func_800945A0(gfxCtx); //gsSPShaderTest(POLY_OPA_DISP++); - gSPInvalidateTexCache(POLY_OPA_DISP++, 0); - - // OTRTODO: Not working... - /*for (int i = 0; i < 8; i++) - { - if (skyboxCtx->staticSegments[0] != NULL) - gSPInvalidateTexCache(POLY_OPA_DISP++, (uintptr_t)skyboxCtx->staticSegments[0] + (0x10000 * i)); - - if (skyboxCtx->staticSegments[1] != NULL) - gSPInvalidateTexCache(POLY_OPA_DISP++, (uintptr_t)skyboxCtx->staticSegments[1] + (0x10000 * i)); - }*/ - - gSPSegment(POLY_OPA_DISP++, 0x7, skyboxCtx->staticSegments[0]); + /*gSPSegment(POLY_OPA_DISP++, 0x7, skyboxCtx->staticSegments[0]); gSPSegment(POLY_OPA_DISP++, 0x8, skyboxCtx->staticSegments[1]); - gSPSegment(POLY_OPA_DISP++, 0x9, skyboxCtx->palettes); + gSPSegment(POLY_OPA_DISP++, 0x9, skyboxCtx->palettes);*/ gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 0, 0, 0, blend); gSPTexture(POLY_OPA_DISP++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON); @@ -50,7 +38,12 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb gDPSetColorDither(POLY_OPA_DISP++, G_CD_MAGICSQ); gDPSetTextureFilter(POLY_OPA_DISP++, G_TF_BILERP); - gDPLoadTLUT_pal256(POLY_OPA_DISP++, skyboxCtx->palettes[0]); + if (skyboxCtx->palette_size == 256) { + gDPLoadTLUT_pal256(POLY_OPA_DISP++, skyboxCtx->palettes[0]); + } else { + gDPLoadTLUT_pal128(POLY_OPA_DISP++, 0, skyboxCtx->palettes[0]); + gDPLoadTLUT_pal128(POLY_OPA_DISP++, 1, skyboxCtx->palettes[1]); + } gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_RGBA16); gDPSetTextureConvert(POLY_OPA_DISP++, G_TC_FILT); From 6f49bc9a56f8cd4c4659fa26b01b9601f83b806f Mon Sep 17 00:00:00 2001 From: MegaMech Date: Fri, 1 Apr 2022 22:44:03 -0700 Subject: [PATCH 21/28] Update Globals.cpp --- ZAPDTR/ZAPD/Globals.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ZAPDTR/ZAPD/Globals.cpp b/ZAPDTR/ZAPD/Globals.cpp index f0df0e547..455205b2a 100644 --- a/ZAPDTR/ZAPD/Globals.cpp +++ b/ZAPDTR/ZAPD/Globals.cpp @@ -20,6 +20,7 @@ Globals::Globals() profile = false; useLegacyZDList = false; useExternalResources = true; + singleThreaded = true; verbosity = VerbosityLevel::VERBOSITY_SILENT; outputPath = Directory::GetCurrentDirectory(); } From ea91d36351fc62ba0196180de7aa82d8b51f7b65 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Fri, 1 Apr 2022 22:46:08 -0700 Subject: [PATCH 22/28] Update nes_message_data_static.xml --- soh/assets/xml/GC_NMQ_D/text/nes_message_data_static.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/soh/assets/xml/GC_NMQ_D/text/nes_message_data_static.xml b/soh/assets/xml/GC_NMQ_D/text/nes_message_data_static.xml index d7c0559c5..e2d39a916 100644 --- a/soh/assets/xml/GC_NMQ_D/text/nes_message_data_static.xml +++ b/soh/assets/xml/GC_NMQ_D/text/nes_message_data_static.xml @@ -1,5 +1,5 @@ - + - \ No newline at end of file + From 6acb8d20b40a654e8c4494654161d82e09c90813 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Fri, 1 Apr 2022 22:46:28 -0700 Subject: [PATCH 23/28] Update staff_message_data_static.xml --- soh/assets/xml/GC_NMQ_D/text/staff_message_data_static.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/soh/assets/xml/GC_NMQ_D/text/staff_message_data_static.xml b/soh/assets/xml/GC_NMQ_D/text/staff_message_data_static.xml index 447b91ccd..f675929e1 100644 --- a/soh/assets/xml/GC_NMQ_D/text/staff_message_data_static.xml +++ b/soh/assets/xml/GC_NMQ_D/text/staff_message_data_static.xml @@ -1,5 +1,5 @@ - + - \ No newline at end of file + From 1e938866ac2d52845c55bf6fd42cf9e68a8b7e84 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Fri, 1 Apr 2022 22:48:52 -0700 Subject: [PATCH 24/28] Update nes_message_data_static.xml --- soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml index d77bf0ff8..e1e6dd148 100644 --- a/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml +++ b/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml @@ -1,5 +1,5 @@ - + - \ No newline at end of file + From a02982794418af1b2aefe1e0bf98630b3763be35 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Fri, 1 Apr 2022 22:49:14 -0700 Subject: [PATCH 25/28] Update staff_message_data_static.xml --- .../xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml index 395a6b7bd..55d935fb3 100644 --- a/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml +++ b/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml @@ -1,5 +1,5 @@ - + - \ No newline at end of file + From 2b4b44f698b14f472aec13d48c70b10a053fb2f9 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Sat, 2 Apr 2022 15:00:16 -0700 Subject: [PATCH 26/28] Update staff_message_data_static.xml --- soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml index 55d935fb3..0a7efda81 100644 --- a/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml +++ b/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml @@ -1,5 +1,5 @@ - + From 407a9c5371e60f8972b7a364bc54a86cdbbcb85e Mon Sep 17 00:00:00 2001 From: MegaMech Date: Sat, 2 Apr 2022 15:00:47 -0700 Subject: [PATCH 27/28] Update nes_message_data_static.xml --- soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml index e1e6dd148..4cf46d252 100644 --- a/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml +++ b/soh/assets/xml/GC_NMQ_PAL_F/text/nes_message_data_static.xml @@ -1,5 +1,5 @@ - + From e8837cf2475e5ffb3e136b629c904e4bd050c7f4 Mon Sep 17 00:00:00 2001 From: Sirius902 <3645979-Sirius902@users.noreply.gitlab.com> Date: Sun, 3 Apr 2022 16:06:31 -0700 Subject: [PATCH 28/28] Fix title card --- soh/src/overlays/actors/ovl_player_actor/z_player.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index 37ab3ed74..a2a810175 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -9434,7 +9434,7 @@ void Player_Init(Actor* thisx, GlobalContext* globalCtx2) { if ((sp50 == 0) || (sp50 < -1)) { titleFileSize = scene->titleFile.vromEnd - scene->titleFile.vromStart; - if ((titleFileSize != 0) && gSaveContext.showTitleCard) { + if (gSaveContext.showTitleCard) { if ((gSaveContext.sceneSetupIndex < 4) && (gEntranceTable[((void)0, gSaveContext.entranceIndex) + ((void)0, gSaveContext.sceneSetupIndex)].field & 0x4000) &&