From 27df7e219c8171922508a3d4e2e273f54cc5cd5d Mon Sep 17 00:00:00 2001 From: JordanLongstaff Date: Mon, 21 Jul 2025 15:18:37 -0400 Subject: [PATCH 1/2] Enable missing music entries in audio editor --- soh/soh/Enhancements/audio/AudioCollection.cpp | 18 +++++++++--------- soh/soh/Enhancements/audio/AudioCollection.h | 1 + soh/soh/Enhancements/audio/AudioEditor.cpp | 4 ++++ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/soh/soh/Enhancements/audio/AudioCollection.cpp b/soh/soh/Enhancements/audio/AudioCollection.cpp index d3f69dad8..88d4c2e23 100644 --- a/soh/soh/Enhancements/audio/AudioCollection.cpp +++ b/soh/soh/Enhancements/audio/AudioCollection.cpp @@ -63,6 +63,7 @@ AudioCollection::AudioCollection() { SEQUENCE_MAP_ENTRY(NA_BGM_FIRE_BOSS, "King Dodongo & Volvagia Boss Battle", "NA_BGM_FIRE_BOSS", SEQ_BGM_BATTLE, true, true), // SEQ_BGM_FANFARE + SEQUENCE_MAP_ENTRY(NA_BGM_FIELD_MORNING, "Hyrule Field Morning Theme", "NA_BGM_FIELD_MORNING", SEQ_FANFARE, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_GAME_OVER, "Game Over", "NA_BGM_GAME_OVER", SEQ_FANFARE, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_BOSS_CLEAR, "Boss Clear", "NA_BGM_BOSS_CLEAR", SEQ_FANFARE, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_ITEM_GET, "Obtain Item", "NA_BGM_ITEM_GET", SEQ_FANFARE, true, true), @@ -111,15 +112,7 @@ AudioCollection::AudioCollection() { SEQUENCE_MAP_ENTRY(NA_BGM_KOTAKE_KOUME, "Kotake & Koume's Theme", "NA_BGM_KOTAKE_KOUME", SEQ_BGM_EVENT, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_ESCAPE, "Escape from Ganon's Castle", "NA_BGM_ESCAPE", SEQ_BGM_EVENT, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_TIMED_MINI_GAME, "Mini-Game", "NA_BGM_TIMED_MINI_GAME", SEQ_BGM_EVENT, true, true), - - // Previously SEQ_NOSHUFFLE - SEQUENCE_MAP_ENTRY(NA_BGM_FIELD_MORNING, "Hyrule Field Morning Theme", "NA_BGM_FIELD_MORNING", SEQ_BGM_EVENT, false, false), // Previously SEQ_UNUSED, so not shown anywhere? - SEQUENCE_MAP_ENTRY(NA_BGM_END_DEMO, "Seal of Six Sages", "NA_BGM_END_DEMO", SEQ_BGM_EVENT, false, false), // Previously SEQ_UNUSED, so not shown anywhere? - SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_1, "End Credits I", "NA_BGM_STAFF_1", SEQ_BGM_EVENT, false, false), // Previously SEQ_UNUSED, so not shown anywhere? - SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_2, "End Credits II", "NA_BGM_STAFF_2", SEQ_BGM_EVENT, false, false), // Previously SEQ_UNUSED, so not shown anywhere? - SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_3, "End Credits III", "NA_BGM_STAFF_3", SEQ_BGM_EVENT, false, false), // Previously SEQ_UNUSED, so not shown anywhere? - SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_4, "End Credits IV", "NA_BGM_STAFF_4", SEQ_BGM_EVENT, false, false), // Previously SEQ_UNUSED, so not shown anywhere? - + // SEQ_INSTRUMENT SEQUENCE_MAP_ENTRY(INSTRUMENT_OFFSET + 1, "Ocarina", "OCARINA_INSTRUMENT_DEFAULT", SEQ_INSTRUMENT, true, true), SEQUENCE_MAP_ENTRY(INSTRUMENT_OFFSET + 2, "Malon", "OCARINA_INSTRUMENT_MALON", SEQ_INSTRUMENT, true, true), @@ -298,6 +291,13 @@ AudioCollection::AudioCollection() { SEQUENCE_MAP_ENTRY(NA_SE_VO_NB_LAUGH, "Navi - Hello!", "NA_SE_VO_NB_LAUGH", SEQ_VOICE, true, true), SEQUENCE_MAP_ENTRY(NA_SE_VO_LI_DRINK - SFX_FLAG, "Adult Link - Drinking", "NA_SE_VO_LI_DRINK", SEQ_VOICE, true, false), + // SEQ_ENDING + SEQUENCE_MAP_ENTRY(NA_BGM_END_DEMO, "Ocarina of Time", "NA_BGM_END_DEMO", SEQ_ENDING, true, true), + SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_1, "End Credits I", "NA_BGM_STAFF_1", SEQ_ENDING, true, true), + SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_2, "End Credits II", "NA_BGM_STAFF_2", SEQ_ENDING, true, true), + SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_3, "End Credits III", "NA_BGM_STAFF_3", SEQ_ENDING, true, true), + SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_4, "End Credits IV", "NA_BGM_STAFF_4", SEQ_ENDING, true, true), + //SEQUENCE_MAP_ENTRY(NA_SE_VO_LI_DRINK, "Adult Link - Drinking", "NA_SE_VO_LI_DRINK", SEQ_VOICE, true, false), // Doesn't work due to SFX_FLAG //SEQUENCE_MAP_ENTRY(NA_SE_VO_LI_DRINK_KID, "Child Link - Drinking", "NA_SE_VO_LI_DRINK_KID", SEQ_VOICE, true, false), // Doesn't work due to SFX_FLAG //SEQUENCE_MAP_ENTRY(NA_SE_VO_LI_GROAN, "Adult Link - Groan (Unused)", "NA_SE_VO_LI_GROAN", SEQ_VOICE, true, false), diff --git a/soh/soh/Enhancements/audio/AudioCollection.h b/soh/soh/Enhancements/audio/AudioCollection.h index 2cdb02e21..488f00b47 100644 --- a/soh/soh/Enhancements/audio/AudioCollection.h +++ b/soh/soh/Enhancements/audio/AudioCollection.h @@ -16,6 +16,7 @@ enum SeqType { SEQ_SFX = 1 << 6, SEQ_INSTRUMENT = 1 << 7, SEQ_VOICE = 1 << 8, + SEQ_ENDING = 1 << 9, SEQ_BGM_CUSTOM = SEQ_BGM_WORLD | SEQ_BGM_EVENT | SEQ_BGM_BATTLE, }; diff --git a/soh/soh/Enhancements/audio/AudioEditor.cpp b/soh/soh/Enhancements/audio/AudioEditor.cpp index 4cf1f389d..55f8c004d 100644 --- a/soh/soh/Enhancements/audio/AudioEditor.cpp +++ b/soh/soh/Enhancements/audio/AudioEditor.cpp @@ -601,6 +601,10 @@ void AudioEditor::DrawElement() { Draw_SfxTab("battleMusic", SEQ_BGM_BATTLE, "Battle Music"); ImGui::EndTabItem(); } + if (ImGui::BeginTabItem("Ending")) { + Draw_SfxTab("ending", SEQ_ENDING, "Ending"); + ImGui::EndTabItem(); + } if (ImGui::BeginTabItem("Ocarina")) { Draw_SfxTab("instrument", SEQ_INSTRUMENT, "Instruments"); Draw_SfxTab("ocarina", SEQ_OCARINA, "Ocarina"); From c303cacf36a31a4ea99e7267e91537083666bf4d Mon Sep 17 00:00:00 2001 From: JordanLongstaff Date: Mon, 21 Jul 2025 19:14:42 -0400 Subject: [PATCH 2/2] Fix mislabeled tracks "Ocarina of Time" and "Seal of Six Sages" --- soh/include/sequence.h | 4 ++-- soh/soh/Enhancements/audio/AudioCollection.cpp | 4 ++-- soh/src/code/code_800EC960.c | 4 ++-- .../overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/soh/include/sequence.h b/soh/include/sequence.h index 4112f7468..1e0979676 100644 --- a/soh/include/sequence.h +++ b/soh/include/sequence.h @@ -97,7 +97,7 @@ #define NA_BGM_SHADOW_TEMPLE 0x5B // Shadow Temple "NA_BGM_DARKNESS_DUNGEON" #define NA_BGM_WATER_TEMPLE 0x5C // Water Temple "NA_BGM_AQUA_DUNGEON" #define NA_BGM_BRIDGE_TO_GANONS 0x5D // Ganon's Castle Bridge "NA_BGM_BRIDGE" -#define NA_BGM_OCARINA_OF_TIME 0x5E // Ocarina of Time "NA_BGM_SARIA" +#define NA_BGM_SEAL_OF_SAGES 0x5E // Seal of Six Sages #define NA_BGM_GERUDO_VALLEY 0x5F // Gerudo Valley "NA_BGM_GERUDO" #define NA_BGM_POTION_SHOP 0x60 // Potion Shop "NA_BGM_DRUGSTORE" #define NA_BGM_KOTAKE_KOUME 0x61 // Kotake & Koume's Theme @@ -105,7 +105,7 @@ #define NA_BGM_UNDERGROUND 0x63 // Ganon's Castle Under Ground #define NA_BGM_GANONDORF_BOSS 0x64 // Ganondorf Battle #define NA_BGM_GANON_BOSS 0x65 // Ganon Battle -#define NA_BGM_END_DEMO 0x66 // Seal of Six Sages +#define NA_BGM_OCARINA_OF_TIME 0x66 // Ocarina of Time #define NA_BGM_STAFF_1 0x67 // End Credits I #define NA_BGM_STAFF_2 0x68 // End Credits II #define NA_BGM_STAFF_3 0x69 // End Credits III diff --git a/soh/soh/Enhancements/audio/AudioCollection.cpp b/soh/soh/Enhancements/audio/AudioCollection.cpp index 88d4c2e23..99369992d 100644 --- a/soh/soh/Enhancements/audio/AudioCollection.cpp +++ b/soh/soh/Enhancements/audio/AudioCollection.cpp @@ -78,7 +78,7 @@ AudioCollection::AudioCollection() { SEQUENCE_MAP_ENTRY(NA_BGM_MEDALLION_GET, "Obtain Medallion", "NA_BGM_MEDALLION_GET", SEQ_FANFARE, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_APPEAR, "Enter Zelda", "NA_BGM_APPEAR", SEQ_FANFARE, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_MASTER_SWORD, "Master Sword", "NA_BGM_MASTER_SWORD", SEQ_FANFARE, true, true), - SEQUENCE_MAP_ENTRY(NA_BGM_OCARINA_OF_TIME, "Ocarina of Time", "NA_BGM_OCARINA_OF_TIME", SEQ_FANFARE, true, true), + SEQUENCE_MAP_ENTRY(NA_BGM_SEAL_OF_SAGES, "Seal of Six Sages", "NA_BGM_SEAL_OF_SAGES", SEQ_FANFARE, true, true), // SEQ_OCARINA SEQUENCE_MAP_ENTRY(NA_BGM_OCA_LIGHT, "Prelude of Light", "NA_BGM_OCA_LIGHT", SEQ_OCARINA, true, true), @@ -292,7 +292,7 @@ AudioCollection::AudioCollection() { SEQUENCE_MAP_ENTRY(NA_SE_VO_LI_DRINK - SFX_FLAG, "Adult Link - Drinking", "NA_SE_VO_LI_DRINK", SEQ_VOICE, true, false), // SEQ_ENDING - SEQUENCE_MAP_ENTRY(NA_BGM_END_DEMO, "Ocarina of Time", "NA_BGM_END_DEMO", SEQ_ENDING, true, true), + SEQUENCE_MAP_ENTRY(NA_BGM_OCARINA_OF_TIME, "Ocarina of Time", "NA_BGM_OCARINA_OF_TIME", SEQ_ENDING, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_1, "End Credits I", "NA_BGM_STAFF_1", SEQ_ENDING, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_2, "End Credits II", "NA_BGM_STAFF_2", SEQ_ENDING, true, true), SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_3, "End Credits III", "NA_BGM_STAFF_3", SEQ_ENDING, true, true), diff --git a/soh/src/code/code_800EC960.c b/soh/src/code/code_800EC960.c index 2da5b4d2b..729f050f7 100644 --- a/soh/src/code/code_800EC960.c +++ b/soh/src/code/code_800EC960.c @@ -237,7 +237,7 @@ u8 sSeqFlags[0x6F] = { 0x1, // NA_BGM_SHADOW_TEMPLE 0x1, // NA_BGM_WATER_TEMPLE 0x2, // NA_BGM_BRIDGE_TO_GANONS - 0, // NA_BGM_OCARINA_OF_TIME + 0, // NA_BGM_SEAL_OF_SAGES 0x11, // NA_BGM_GERUDO_VALLEY 0, // NA_BGM_POTION_SHOP 0, // NA_BGM_KOTAKE_KOUME @@ -245,7 +245,7 @@ u8 sSeqFlags[0x6F] = { 0, // NA_BGM_UNDERGROUND 0x80, // NA_BGM_GANON_BATTLE_1 0x80, // NA_BGM_GANON_BATTLE_2 - 0, // NA_BGM_END_DEMO + 0, // NA_BGM_OCARINA_OF_TIME 0, // NA_BGM_STAFF_1 0, // NA_BGM_STAFF_2 0, // NA_BGM_STAFF_3 diff --git a/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 01052b9bb..6c67a49c5 100644 --- a/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -140,8 +140,8 @@ static u16 sBgmList[] = { NA_BGM_WATER_TEMPLE, NA_BGM_BRIDGE_TO_GANONS, NA_BGM_VARIOUS_SFX, - NA_BGM_OCARINA_OF_TIME, - NA_BGM_OCARINA_OF_TIME, + NA_BGM_SEAL_OF_SAGES, + NA_BGM_SEAL_OF_SAGES, NA_BGM_GERUDO_VALLEY, NA_BGM_POTION_SHOP, NA_BGM_KOTAKE_KOUME, @@ -150,7 +150,7 @@ static u16 sBgmList[] = { NA_BGM_UNDERGROUND, NA_BGM_GANONDORF_BOSS, NA_BGM_GANON_BOSS, - NA_BGM_END_DEMO, + NA_BGM_OCARINA_OF_TIME, }; static s16 sTextIds[] = { 0x2B, 0x2E, 0xC8, 0x2D };