From a1e34c280a19a38bf8a1925caf417c1cbb4676e5 Mon Sep 17 00:00:00 2001 From: qwertymodo Date: Wed, 28 Nov 2018 16:20:26 -0800 Subject: [PATCH] Add dungeon-specific music --- msu.asm | 129 ++++++++++++++++++++++++++++++++++++++++++++++++----- tables.asm | 26 +++++++++-- 2 files changed, 140 insertions(+), 15 deletions(-) diff --git a/msu.asm b/msu.asm index a25e112..96bf6b4 100644 --- a/msu.asm +++ b/msu.asm @@ -6,7 +6,72 @@ ; ; Author: qwertymodo ; -; Free space used: 0x77DDD-0x77F8A +; Track List: +; +; 1 - Title ~ Link to the Past +; 2 - Hyrule Field +; 3 - Time of Falling Rain +; 4 - The Silly Pink Rabbit +; 5 - Forest of Mystery +; 6 - Seal of Seven Maidens +; 7 - Kakariko Village +; 8 - Dimensional Shift (Mirror) +; 9 - Dark Golden Land +; 10 - Unsealing the Master Sword +; 11 - Beginning of th Journey +; 12 - Soldiers of Kakariko Village +; 13 - Black Mist +; 14 - Guessing Game House +; 15 - (Unused) +; 16 - Majestic Castle +; 17 - Lost Ancient Ruins +; 18 - Dank Dungeons +; 19 - Great Victory! +; 20 - Safety in the Sanctuary +; 21 - Anger of the Guardians +; 22 - Dungeon of Shadows +; 23 - Fortune Teller +; 24 - Dank Dungeons (Copy) +; 25 - Princess Zelda's Rescue +; 26 - Meeting the Maidens +; 27 - The Goddess Appears +; 28 - Priest of the Dark Order +; 29 - Release of Ganon +; 30 - Ganon's Message +; 31 - The Prince of Darkness +; 32 - Power of the Gods +; 33 - Epilogue ~ Beautiful Hyrule +; 34 - Staff Roll +; +; Dungeon-specific tracks +; +; 35 - Eastern Palace +; 36 - Desert Palace +; 37 - Agahnim's Tower +; 38 - Swamp Palace +; 39 - Palace of Darkness +; 40 - Misery Mire +; 41 - Skull Woods +; 42 - Ice Palace +; 43 - Tower of Hera +; 44 - Thieves' Town +; 45 - Turtle Rock +; 46 - Ganon's Tower +; +; Bosses +; +; 47 - Eastern Palace +; 48 - Desert Palace +; 49 - Agahnim's Tower +; 50 - Swamp Palace +; 51 - Palace of Darkness +; 52 - Misery Mire +; 53 - Skull Woods +; 54 - Ice Palace +; 55 - Tower of Hera +; 56 - Thieves' Town +; 57 - Turtle Rock +; 58 - Ganon's Tower ; ;======================================= @@ -93,7 +158,9 @@ msu_check_busy: LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BEQ .ready JML spc_continue .ready - LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BNE spc_fallback + LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BEQ .start + BRL dungeon_fallback +.start LDA !VAL_VOLUME_FULL STA !REG_TARGET_VOLUME STA !REG_CURRENT_VOLUME @@ -104,14 +171,6 @@ msu_check_busy: STA !REG_MSU_LOAD_FLAG JML spc_continue -spc_fallback: - STZ !REG_MSU_CONTROL - STZ !REG_CURRENT_MSU_TRACK - STZ !REG_TARGET_VOLUME - STZ !REG_CURRENT_VOLUME - STZ !REG_MSU_VOLUME - JML spc_continue - do_fade: LDA !REG_CURRENT_VOLUME : CMP !REG_TARGET_VOLUME : BNE .continue JML spc_continue @@ -157,9 +216,19 @@ command_f1: JML spc_continue load_track: - CPX !REG_CURRENT_MSU_TRACK : BNE .continue + CPX !REG_CURRENT_MSU_TRACK : BNE .check_dungeon CPX #$1B : BEQ .continue JML spc_continue +.check_dungeon + CPX #$11 : BEQ .dungeon + CPX #$16 : BEQ .dungeon + CPX #$15 : BNE .continue +; boss + LDA $040C : LSR : !ADD #$2D + BRA .continue-1 + +.dungeon + LDA $040C : LSR : !ADD #$21 : TAX .continue STX !REG_MSU_TRACK_LO STZ !REG_MSU_TRACK_HI @@ -169,6 +238,44 @@ load_track: STX !REG_CURRENT_MSU_TRACK JML spc_continue +dungeon_fallback: + LDA !REG_CURRENT_MSU_TRACK : AND #$3F + CMP #$23 : !BLT spc_fallback ; < 35: normal tracks + CMP #$2F : !BGE .boss ; > 46: boss-specific tracks + CMP #$25 : BEQ .castle ; 37: aga tower, fall back to hyrule castle + BRA .dungeon ; 35-46: dungeon-specific tracks + +.boss + LDA #$15 : BRA .fallback + +.castle + LDA #$10 : BRA .fallback + +.dungeon + PHB : REP #$10 + LDX $040C + LDA.b #Music_Eastern>>16 : PHA : PLB ; Set bank to music pointers + LDY $00 : PHY + REP #$20 + LDA MSUDungeonFallbackList,X : STA $00 + SEP #$20 + LDA ($00) + PLY : STY $00 : PLB + +.fallback + STA !REG_CURRENT_MSU_TRACK + STA !REG_MSU_TRACK_LO + STZ !REG_MSU_TRACK_HI + JML spc_continue + +spc_fallback: + STZ !REG_MSU_CONTROL + STZ !REG_CURRENT_MSU_TRACK + STZ !REG_TARGET_VOLUME + STZ !REG_CURRENT_VOLUME + STZ !REG_MSU_VOLUME + JML spc_continue + pendant_fanfare: LDA TournamentSeed : BNE .spc REP #$20 diff --git a/tables.asm b/tables.asm index b8f1f65..de4e254 100644 --- a/tables.asm +++ b/tables.asm @@ -1586,18 +1586,36 @@ LowHeartFix: db $08, $08, $10 ;================================================================================ -org $30D000 ; PC 0x185000 - 0x18503F +org $30D000 ; PC 0x185000 - 0x18505F MSUTrackList: db $00,$01,$03,$03,$03,$03,$03,$03 db $01,$03,$01,$03,$03,$03,$03,$03 db $03,$03,$03,$01,$03,$03,$03,$03 db $03,$03,$03,$03,$03,$01,$03,$03 -db $03,$01,$01,$FF,$FF,$FF,$FF,$FF -db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +db $03,$01,$01,$03,$03,$03,$03,$03 +db $03,$03,$03,$03,$03,$03,$03,$FF db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF + +MSUDungeonFallbackList: +dw $0000 ; Sewer Escape +dw $0000 ; Hyrule Castle +dw Music_Eastern +dw Music_Desert +dw $0000 ; Agahnim's Tower +dw Music_Swamp +dw Music_Darkness +dw Music_Mire +dw Music_Skull +dw Music_Ice +dw Music_Hera +dw Music_Thieves +dw Music_TRock +dw Music_GTower +dw $0000 +dw $0000 ;-------------------------------------------------------------------------------- -; 0x185040 - 1850FF (unused) +; 0x185060 - 1850FF (unused) ;-------------------------------------------------------------------------------- org $30D100 ; PC 0x185100 - 0x18513F UnusedTable: ; please do not move this - kkat