diff --git a/hooks.asm b/hooks.asm index 31885a4..ac7149f 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2213,6 +2213,9 @@ PreOverworld_LoadProperties_SetSong: org $05CC58 ; <- Bank05.asm:1307 (LDA $040A : CMP.b #$18) JSL PsychoSolder_MusicCheck NOP #1 +;-------------------------------------------------------------------------------- +org $02B13A ; <- Bank02.asm:7647 +dl Overworld_FinishMirrorWarp ;================================================================================ ;================================================================================ diff --git a/music.asm b/music.asm index 0727996..3194d78 100644 --- a/music.asm +++ b/music.asm @@ -52,7 +52,7 @@ PreOverworld_LoadProperties_ChooseMusic: .endOfLightWorldChecks ; if we are in the light world go ahead and set chosen selection - LDA $7EF3CA : BEQ .lastCheck + LDA $7EF3CA : BEQ .checkInverted+4 LDX.b #$0D ; dark woods theme @@ -62,6 +62,10 @@ PreOverworld_LoadProperties_ChooseMusic: LDX.b #$09 ; dark overworld theme + + ; 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 + ; Does Link have a moon pearl? LDA $7EF357 : BNE + LDX.b #$04 ; bunny theme @@ -79,6 +83,86 @@ PreOverworld_LoadProperties_ChooseMusic: JML.l PreOverworld_LoadProperties_SetSong ;-------------------------------------------------------------------------------- +;-------------------------------------------------------------------------------- +Overworld_FinishMirrorWarp: + REP #$20 + + LDA.w #$2641 : STA $4370 + + LDX.b #$3E + + LDA.w #$FF00 + +.clear_hdma_table + + STA $1B00, X : STA $1B40, X + STA $1B80, X : STA $1BC0, X + STA $1C00, X : STA $1C40, X + STA $1C80, X + + DEX #2 : BPL .clear_hdma_table + + LDA.w #$0000 : STA $7EC007 : STA $7EC009 + + SEP #$20 + + JSL $00D7C8 ; $57C8 IN ROM + + LDA.b #$80 : STA $9B + + LDX.b #$04 ; bunny theme + + ; 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 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 + STX $012C + + LDA $8A : CMP.b #$40 : BEQ .darkWoods + + CMP.b #$43 : BEQ .darkMountain + CMP.b #$45 : BEQ .darkMountain + CMP.b #$47 : BNE .notDarkMountain + +.darkMountain + LDA #$09 : STA $012D ; set storm ambient SFX + +.darkWoods + LDX.b #$0D ; dark mountain/woods theme + + LDA $7EF357 : ORA InvertedMode : BNE + + LDA #$04 ; bunny theme + + + + STX $012C + +.notDarkMountain + + LDA $11 : STA $010C + + STZ $11 + STZ $B0 + STZ $0200 + STZ $0710 + + RTL +;-------------------------------------------------------------------------------- + ;-------------------------------------------------------------------------------- ;0 = Is Kakariko Overworld ;1 = Not Kakariko Overworld