From 9cecd30e89aba82b1a50f834749059201fd78070 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Tue, 27 Jul 2021 02:40:12 -0500 Subject: [PATCH 1/3] Fix for boss music not playing in non-DR modes --- music.asm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/music.asm b/music.asm index 694485d..7160ed1 100644 --- a/music.asm +++ b/music.asm @@ -292,12 +292,11 @@ Underworld_DoorDown_Entry: LDA.l DRMode : TAX : LDA $A0 : CPX #0 : BNE .done .vanilla ; thing we wrote over - LDX #$14 ;: LDA $A0 - CMP.w #$0012 : BEQ .done - - LDX.b #$10 ; value for Hyrule Castle music - CMP.w #$0002 : BEQ .done - + CMP.w #$0012 : BNE + + LDX.b #$14 ; value for Sanc music + BRA .done + + CMP.w #$0002 : BNE .done + LDX.b #$10 ; value for Hyrule Castle music .done RTL ;-------------------------------------------------------------------------------- From 677ad644194851a9bf10b0e9be1821102af2fac6 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Sun, 1 Aug 2021 23:41:24 -0500 Subject: [PATCH 2/3] Rewrote music calculation --- hooks.asm | 6 +- music.asm | 224 +++++++++++++----------------------------------------- 2 files changed, 56 insertions(+), 174 deletions(-) diff --git a/hooks.asm b/hooks.asm index 8abb934..b04b3c9 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2483,7 +2483,11 @@ dl Overworld_FinishMirrorWarp ;-------------------------------------------------------------------------------- org $0AB949 ; <- Bank0A.asm:270 (Different from US ROM) JSL BirdTravel_LoadTargetAreaMusic -NOP #16 +BRA + : NOP #14 : + +;-------------------------------------------------------------------------------- +org $02B027 ; <- Bank02.asm:7535-7541 +JSL Overworld_DetermineMusicSFX +BRA + : NOP #42 : + ;================================================================================ ;================================================================================ diff --git a/music.asm b/music.asm index cbd0d46..e0e71e9 100644 --- a/music.asm +++ b/music.asm @@ -7,74 +7,16 @@ PreOverworld_LoadProperties_ChooseMusic: LDY.b #$58 ; death mountain animated tileset. - LDX.b #$02 ; Default light world theme - LDA $8A : ORA #$40 ; check both light and dark world DM at the same time - CMP.b #$43 : BEQ .endOfLightWorldChecks - CMP.b #$45 : BEQ .endOfLightWorldChecks - CMP.b #$47 : BEQ .endOfLightWorldChecks + CMP.b #$43 : BEQ + + CMP.b #$45 : BEQ + + CMP.b #$47 : BEQ + LDY.b #$5A ; Main overworld animated tileset - ; Skip village and lost woods checks if entering dark world or a special area - LDA $8A : CMP.b #$40 : !BGE .notVillageOrWoods - - LDX.b #$07 ; Default village theme - - ; Check what phase we're in - ;LDA $7EF3C5 : CMP.b #$03 : !BLT + - ; LDX.b #$02 ; Default light world theme (phase >=3) - ;+ - - ; Check if we're entering the village - LDA $8A : CMP.b #$18 : BEQ .endOfLightWorldChecks - ; For NA release would we also branch on indexes #$22 #$28 #$29 - - LDX.b #$05 ; Lost woods theme - - ; check if we've pulled from the master sword pedestal - LDA $7EF300 : AND.b #$40 : BEQ + - LDX.b #$02 ; Default light world theme - + - - ; check if we are entering lost woods - LDA $8A : BEQ .endOfLightWorldChecks - - .notVillageOrWoods - ; Use the normal overworld (light world) music - LDX.b #$02 - - ; Check phase ; In phase >= 2 - LDA $7EF3C5 : CMP.b #$02 : !BGE + - ; If phase < 2, play the legend music - LDX.b #$03 - + - - .endOfLightWorldChecks ; if we are in the light world go ahead and set chosen selection ;LDA $7EF3CA : BEQ .checkInverted+4 - JSL OWWorldCheck : BEQ .checkInverted+4 - - LDX.b #$0F ; dark woods theme - - ; This music is used in dark woods - LDA $8A - CMP.b #$40 : BEQ + - LDX.b #$0D ; dark death mountain theme - - ; This music is used in dark death mountain - CMP.b #$43 : BEQ + : CMP.b #$45 : BEQ + : CMP.b #$47 : BEQ + - LDX.b #$09 ; dark overworld theme - + - - ; if not inverted and light world, or inverted and dark world, skip moon pearl check - .checkInverted - JSL OWWorldCheck : CLC : ROL #$03 : CMP InvertedMode : BEQ .lastCheck - - ; Does Link have a moon pearl? - LDA $7EF357 : BNE + - LDX.b #$04 ; bunny theme - + + + JSL Overworld_DetermineMusicSFX .lastCheck LDA $0132 : CMP.b #$F2 : BNE + @@ -115,58 +57,11 @@ Overworld_FinishMirrorWarp: LDA.b #$80 : STA $9B - LDX.b #$04 ; bunny theme + JSL Overworld_DetermineMusicSFX - ; if not inverted and light world, or inverted and dark world, skip moon pearl check - LDA $7EF3CA : CLC : ROL #$03 : CMP InvertedMode : BEQ + - LDA $7EF357 : BEQ .endOfLightWorldChecks - + - - LDX.b #$09 ; default dark world theme - - LDA $8A : CMP.b #$40 : !BGE .endOfLightWorldChecks - - LDX.b #$02 ; hyrule field theme - - ; Check if we're entering the lost woods - CMP.b #$00 : BNE + - LDA $7EF300 : AND.b #$40 : BNE .endOfLightWorldChecks - LDX.b #$05 ; lost woods theme - BRA .endOfLightWorldChecks - + - - ; Check if we're entering the village - CMP.b #$18 : BNE .endOfLightWorldChecks - - ; Check what phase we're in - ; LDA $7EF3C5 : CMP.b #$03 : !BGE .endOfLightWorldChecks - LDX.b #$07 ; Default village theme (phase <3) - -.endOfLightWorldChecks +.done STX $012C - LDA $8A : CMP.b #$40 : BNE + - LDX #$0F ; dark woods theme - BRA .bunny - + - - CMP.b #$43 : BEQ .darkMountain - CMP.b #$45 : BEQ .darkMountain - CMP.b #$47 : BNE .notDarkMountain - -.darkMountain - LDA.b #$09 : STA $012D ; set storm ambient SFX - LDX.b #$0D ; dark mountain theme - -.bunny - LDA $7EF357 : ORA InvertedMode : BNE + - LDX #$04 ; bunny theme - + - - STX $012C - -.notDarkMountain - LDA $11 : STA $010C STZ $11 @@ -179,80 +74,63 @@ Overworld_FinishMirrorWarp: ;-------------------------------------------------------------------------------- BirdTravel_LoadTargetAreaMusic: - LDX.b #$02 ; Default OW theme + JSL Overworld_DetermineMusicSFX + RTL +;-------------------------------------------------------------------------------- - ; Skip village and lost woods checks if entering dark world or a special area - LDA $8A : CMP.b #$43 : BEQ .endOfLightWorldChecks - CMP.b #$40 : !BGE .notVillageOrWoods +;-------------------------------------------------------------------------------- +;X to be set to music track to load +;$012D to be set to any ambient SFX for the area +Overworld_DetermineMusicSFX: + LDA $7EF3C5 : CMP.b #$02 : !BGE + + LDX.b #$03 ; If phase < 2, play the rain music + BRA .done + + + LDA $8A : CMP.b #$43 : BEQ .darkMountain + CMP.b #$45 : BEQ .darkMountain + CMP.b #$47 : BEQ .darkMountain - LDX.b #$07 ; Default village theme + LDX.b #$02 ; hyrule field theme + LDA.b #$05 : STA $012D - ; Check what phase we're in - ;LDA $7EF3C5 : CMP.b #$03 : !BLT + - ; LDX.b #$02 ; Default light world theme (phase >=3) - ;+ + LDA $7EF3CA : BEQ + + LDX.b #$09 ; default dark world theme ; Check if we're entering the village - LDA $8A : CMP.b #$18 : BEQ .endOfLightWorldChecks - ; For NA release would we also branch on indexes #$22 #$28 #$29 + + LDA $8A : CMP.b #$18 : BNE + + ; Check what phase we're in + ; LDA $7EF3C5 : CMP.b #$03 : !BGE .bunny + LDX.b #$07 ; Default village theme (phase <3) + BRA .bunny + + ; Check if we're entering the lost woods + + CMP.b #$00 : BNE + + LDA $7EF300 : AND.b #$40 : BNE .bunny + LDX.b #$05 ; lost woods theme + BRA .bunny + + + LDA $8A : CMP.b #$40 : BNE + + LDX #$0F ; dark woods theme + BRA .bunny - ;LDX.b #$05 ; Lost woods theme - - ; check if we've pulled from the master sword pedestal - ;LDA $7EF300 : AND.b #$40 : BEQ + - ; LDX.b #$02 ; Default light world theme - ;+ - - ; check if we are entering lost woods - LDA $8A : BEQ .endOfLightWorldChecks - - .notVillageOrWoods - ; Use the normal overworld (light world) music - LDX.b #$02 - - ; Check phase ; In phase >= 2 - LDA $7EF3C5 : CMP.b #$02 : !BGE + - ; If phase < 2, play the legend music - LDX.b #$03 - + - - .endOfLightWorldChecks - ; if we are in the light world go ahead and set chosen selection - LDA $7EF3CA : BEQ .checkInverted+4 - - LDX.b #$09 ; dark overworld theme - - LDA $8A ; Misery Mire rain SFX - CMP.b #$70 : BNE ++ - LDA $7EF2F0 : AND.b #$20 : BNE ++ + + CMP.b #$70 : BNE .bunny + LDA $7EF2F0 : AND.b #$20 : BNE .bunny LDA.b #$01 : CMP $0131 : BEQ + - STA $012D - + : BRA .checkInverted - ++ + STA $012D : BRA .bunny + + STZ $012D : BRA .bunny - ; This music is used in dark death mountain - CMP.b #$43 : BEQ .darkMountain - ; CMP.b #$45 : BEQ .darkMountain - ; CMP.b #$47 : BEQ .darkMountain - LDA.b #$05 : STA $012D - BRA .checkInverted - - .darkMountain - LDA $7EF37A : CMP.b #$7F : BEQ + - LDX.b #$0D ; dark death mountain theme - + : LDA.b #$09 : STA $012D +.darkMountain + LDA.b #$09 : STA $012D ; set storm ambient SFX + LDX.b #$0D ; dark mountain theme +.bunny ; if not inverted and light world, or inverted and dark world, skip moon pearl check - .checkInverted - LDA $7EF3CA : CLC : ROL #$03 : CMP InvertedMode : BEQ .lastCheck + LDA $7EF3CA : CLC : ROL #$03 : CMP InvertedMode : BEQ .done + LDA $7EF357 : BNE .done + LDX #$04 ; bunny theme - ; Does Link have a moon pearl? - LDA $7EF357 : BNE + - LDX.b #$04 ; bunny theme - + - - .lastCheck +.done RTL ;-------------------------------------------------------------------------------- From 06a7b7beada79143c4176a770b39a3303d50366e Mon Sep 17 00:00:00 2001 From: codemann8 Date: Mon, 2 Aug 2021 04:20:02 -0500 Subject: [PATCH 3/3] Fixed SW MSU track to play regardless of world --- msu.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msu.asm b/msu.asm index 1ef1897..41ccf74 100644 --- a/msu.asm +++ b/msu.asm @@ -263,7 +263,7 @@ CheckMusicLoadRequest: .darkwoods PHA LDA $7EF37A : CMP.b #$7F : BEQ - - LDA $7EF3CA : BEQ -- + ;LDA $7EF3CA : BEQ -- LDA $8A : CMP #$40 : BNE -- PLA LDA.b #15 : BRA .check_fallback-3