diff --git a/bugfixes.asm b/bugfixes.asm index 8f678ba..fca00aa 100644 --- a/bugfixes.asm +++ b/bugfixes.asm @@ -81,11 +81,8 @@ FixAga2Bunny: JSL DecideIfBunny : BNE + JSR MakeBunny + - .done - PHX - JSL Overworld_DetermineMusic : STX.w MusicControlRequest - PLX -RTL +.done +JML Overworld_DetermineAndSetMusic ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- diff --git a/hooks.asm b/hooks.asm index 65afbbb..4a54e76 100755 --- a/hooks.asm +++ b/hooks.asm @@ -1732,7 +1732,7 @@ org $828D6E JSL FallingMusicFadeOut : BRA + : NOP #2 : + ;================================================================================ org $829090 ; <- 11090 - Bank02.asm:3099 (LDA $7EF374 : LSR A) -JSL CheckHeraBossDefeated : NOP +JSL CheckHeraBossDefeated_AlsoCheckMusic : NOP ;================================================================================ org $829798 ; <- 11798 - Bank02.asm:4287 (CMP $02895C, X : BNE BRANCH_ALPHA) NOP #6 ; remove crystal room cutscene check that causes softlocks @@ -2243,9 +2243,39 @@ org $8AB949 ; <- Bank0A.asm:270 (Different from US ROM) JSL BirdTravel_LoadTargetAreaMusic BRA + : NOP #14 : + ;-------------------------------------------------------------------------------- +org $829D42 +JSL Overworld_DetermineMusic +BRA + : NOP #4 : + +;-------------------------------------------------------------------------------- +org $82A981 +JSL Overworld_DetermineAndSetMusic +;-------------------------------------------------------------------------------- org $82B027 ; <- Bank02.asm:7535-7541 JSL Overworld_DetermineMusic BRA + : NOP #42 : + +;-------------------------------------------------------------------------------- +org $82B0C4 +JSL Overworld_DetermineAndSetMusic +BRA + : NOP #16 : + +;-------------------------------------------------------------------------------- +org $82B1C1 +JSL Overworld_DetermineAmbientSFX +JSL Overworld_DetermineMusic +BRA + : NOP #64 : + +;-------------------------------------------------------------------------------- +org $82B441 +JSL Overworld_DetermineMusic +BRA + : NOP #4 : + +;-------------------------------------------------------------------------------- +org $82C1BA +JSL Overworld_DetermineMusic +BRA + : NOP #12 : + +;-------------------------------------------------------------------------------- +org $88C442 +JSL Overworld_DetermineAndSetMusic +;-------------------------------------------------------------------------------- +org $9DFD27 +JSL Overworld_DetermineAndSetMusic : NOP ;================================================================================ ;================================================================================ diff --git a/msu.asm b/msu.asm index f3bfcef..4e1075d 100644 --- a/msu.asm +++ b/msu.asm @@ -120,6 +120,7 @@ IsOverworldTrack: CMP.b #05 : BEQ .yes ; 5 - Forest of Mystery CMP.b #07 : BEQ .yes ; 7 - Kakariko Village CMP.b #09 : BEQ .yes ; 9 - Dark Golden Land + CMP.b #13 : BEQ .yes ; 13 - Dark Death Mountain CMP.b #15 : BEQ .yes ; 15 - Dark Woods CMP.b #60 : BEQ .yes ; 60 - Light World OW (after ped pull) CMP.b #61 : BEQ .yes ; 61 - Dark World OW (with all crystals) @@ -349,7 +350,7 @@ SpiralStairsPreCheck: JSL LookupSpiralOffset_long REP #$30 : AND.w #$00FF : ASL #2 : TAX LDA.l SpiralTable,X - SEP #$10 : TAX : CPX.b #$07 : BNE .done ; check if hera boss + SEP #$10 : CMP.w #$0007 : BNE .done ; check if hera boss JSL CheckHeraBossDefeated : BCS .done LDX.b #$F1 : STX.w MusicControlRequest BRA .done diff --git a/music.asm b/music.asm index f26dba8..d69f1af 100644 --- a/music.asm +++ b/music.asm @@ -75,16 +75,28 @@ BirdTravel_LoadTargetAreaMusic: RTL ;-------------------------------------------------------------------------------- +;-------------------------------------------------------------------------------- +Overworld_DetermineAndSetMusic: + PHX + JSL Overworld_DetermineMusic : STX.w MusicControlRequest + PLX +RTL +;-------------------------------------------------------------------------------- + ;-------------------------------------------------------------------------------- ;X to be set to music track to load Overworld_DetermineMusic: LDA.l ProgressIndicator : CMP.b #$02 : !BGE + LDX.b #$03 ; If phase < 2, play the rain music BRA .done - - + LDA.b OverworldIndex : CMP.b #$43 : BEQ .darkMountain - CMP.b #$45 : BEQ .darkMountain - CMP.b #$47 : BEQ .darkMountain + + + + LDA.l CurrentWorld : BEQ + + LDA.b OverworldIndex : ORA.b #$40 + CMP.b #$43 : BEQ .darkMountain + CMP.b #$45 : BEQ .darkMountain + CMP.b #$47 : BEQ .darkMountain + + LDX.b #$02 ; hyrule field theme @@ -202,11 +214,14 @@ Underworld_DoorDown_Entry: ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- +CheckHeraBossDefeated_AlsoCheckMusic: +LDA.w LastAPUCommand : AND.w #$00FF : CMP.w #$0015 : BNE + ; if boss music is playing + ; Check if the boss in ToH has been defeated (16-bit accumulator) CheckHeraBossDefeated: -LDA.l RoomDataWRAM[$07].high : AND.w #$00FF : BEQ + - SEC : RTL -+ CLC : RTL +LDA.l RoomDataWRAM[$07].high : AND.w #$00FF : BNE + + CLC : RTL ++ SEC : RTL FallingMusicFadeOut: CMP.w #$0017 ; what we wrote over