From 1372267e415d194bd823d9b9d099269bff9be958 Mon Sep 17 00:00:00 2001 From: scawful Date: Tue, 1 Aug 2023 10:35:40 -0400 Subject: [PATCH] Remove rain control code from ocarina.asm --- Events/custom_rain.asm | 215 +++++++++++++++++++++++++++++++++++++++ Items/ocarina.asm | 223 +---------------------------------------- 2 files changed, 220 insertions(+), 218 deletions(-) create mode 100644 Events/custom_rain.asm diff --git a/Events/custom_rain.asm b/Events/custom_rain.asm new file mode 100644 index 0000000..37779fe --- /dev/null +++ b/Events/custom_rain.asm @@ -0,0 +1,215 @@ +; variables +; 7EE00E - Rain Activator +; 7EE00D - Rain Deactivator (overridden if rain is activated before the deactivation occurs) +; 7EE00C - Activates the overlay animations and nonimmediate rain things +; 7EE00F - Activates thunder and indoor ambience (can be set at the same time as the Rain Activator) +; 7EE001 - Minutes in the time sequence script +; 7EE000 - Hours in the time sequence script +; 7EE00B - used to prevent my script from warping if rain is active, 0 allow rain disallow warp, 1 disallow rain allow warp + +;this is my loader for turning the rain on and off +; executed on dungoen load (replaced an LDA $7EF3C5 which is read before we return) +org $208100 +LoadRainEffect: +{ + LDA $7EE00E : BNE .On + LDA $7EE00D : BNE .Off + BRA LoadRainEffect_End + +LoadRainEffect_On: + LDA #$01 : STA $7EE00F : STA $7EE00C + LDA #$01 : STA $7EE00E + BRA LoadRainEffect_End + +LoadRainEffect_Off: + LDA #$00 + STA $7EE00F + STA $7EE00C + STA $7EE00D + BRA LoadRainEffect_End + +LoadRainEffect_End: + LDA #$00 + STA $7EE00E + STA $7EE00D + LDA $7EF3C5 + RTL +} + + +org $208200 ; these are executed every frame +RainOnTime: + LDA $7EE001 + cmp #$1E + bne .End + LDA $7EE000 + cmp #$01 + bne .End + LDA $7EE00B + bne .End + LDA #$01 + sta $7EE00E + sta $7EE00F +RainOnTime_End: + rtl + +org $208300 ; these are executed every frame +RainOffTime: + LDA $7EE001 + cmp #$1E + bne .End + LDA $7EE000 + cmp #$03 + bne .End + LDA #$01 + sta $7EE00D +RainOffTime_End: + rtl + +; moved this function to expanded space to change it, don't think i needed to though :() +org $20C000 + LDA $8A : CMP #$70 : BEQ BRANCH_EVIL_SWAMP + LDA $7EE00F : BEQ BRANCH_SKIPMOVEMENT + +BRANCH_EVIL_SWAMP: + LDA $7EF2F0 ; If misery mire has been opened already, we're done + AND #$20 + BNE BRANCH_SKIPMOVEMENT + LDA $1A ; Check the frame counter. + CMP #$03 ; On the third frame do a flash of lightning. + BEQ BRANCH_LIGHTNING + CMP #$05 + BEQ BRANCH_NORMAL_LIGHT + CMP #$24 ; On the #$24-th frame cue the thunder. + BEQ BRANCH_THUNDER + CMP #$2C ; On the #$2C-th frame bring the light back to normal. + BEQ BRANCH_NORMAL_LIGHT + CMP #$58 ; On the #$58-th frame cue the lightning + BEQ BRANCH_LIGHTNING + CMP #$5A ; On the #$5A-th frame + BNE BRANCH_MOVEOVERLAY +BRANCH_NORMAL_LIGHT: + LDA #$72 ; Keep the screen semi-dark. + BRA BRANCH_SETBRIGHTNESS +BRANCH_THUNDER: + LDX #$36 + STX $012E ; Play the thunder sound when outdoors. +BRANCH_LIGHTNING: + LDA #$32 ; Make the screen flash with lightning. +BRANCH_SETBRIGHTNESS: + STA $9A +BRANCH_MOVEOVERLAY: + LDA $1A ; if the first two bits are set, do nothing + AND #$03 + BNE BRANCH_SKIPMOVEMENT + LDA $0494 ; otherwise start moving some rain + INC + AND #$03 + STA $0494 + TAX + LDA $E1 + CLC + ADC $02A46D, X +; $01246D IN ROM + STA $E1 + LDA $E7 + CLC + ADC $02A471, X +; $012471 + STA $E7 +BRANCH_SKIPMOVEMENT: + RTL + +org $02A4CD ; rain animating overlays, thunder lightning, darkness (can do immediate) + JSL $20C000 + BRA $59 + +org $02AC12 ; load overlays OW to OW + LDA $7EE00C + NOP #2 + BEQ $03 + +org $02AFFC ; load overlays dungeon to OW + LDA $7EE00C + NOP #06 + BEQ $03 + +org $02838C ; indoor ambience (can do immediate) + LDA $7EE00F + NOP #02 + BEQ $1e + +org $02845D ; music routine + LDA $7EE00C + NOP #02 + BEQ $02 + +org $0284EA ; outdoor ambience + LDA $7EE00C + NOP #2 + BEQ $02 + +; overworld music routine +; modified to use the 'Beginning' music if 7EE00C is not zero (Rain activated) +org $02C463 + PHB : PHK : PLB + REP #$10 + LDA #$02 : STA $00 + LDX #$0000 + LDA $7EE00C + BNE $25 + + LDY #$00C0 + LDA $7EF3C5 + CMP #$03 + BCS $1D + + LDY #$0080 + LDA $7EF359 + CMP #$02 + BCS $12 + + LDA #$05 + STA $00 + LDY #$0040 + LDA $7EF3C5 + CMP #$02 + BCS $03 + + LDY #$0000 + LDA $C303,Y + STA $7F5B00,X + INY + INX + CPX #$0040 + BNE $F2 + + LDY #$0000 + LDA $C403,Y + STA $7F5B00,X + INX + INY + CPY #$0060 + BNE $F2 + + LDA $00 + STA $7F5B80 + SEP #$10 + PLB + RTL + +; Overworld beginning music for each OW Screen +; changes the music to use heavy rain outside of lost woods, and light rain inside +org $02C303 + db $25,$25,$13,$13,$13,$13,$13,$13 + db $25,$25,$13,$13,$13,$13,$13,$13 + db $13,$13,$13,$13,$13,$13,$13,$13 + db $13,$13,$13,$13,$13,$13,$13,$13 + db $13,$13,$13,$13,$13,$13,$13,$13 + db $13,$13,$13,$13,$13,$13,$13,$13 + db $13,$13,$13,$13,$13,$13,$13,$13 + db $13,$13,$13,$13,$13,$13,$13,$13 + +; executed on dungoen load +org $028356 ; replaced an LDA $7EF3C5 which is read before we return + JSL $208100 \ No newline at end of file diff --git a/Items/ocarina.asm b/Items/ocarina.asm index 3857f04..21dcbc0 100644 --- a/Items/ocarina.asm +++ b/Items/ocarina.asm @@ -15,6 +15,7 @@ org $078021 Player_DoSfx1: ; ============================================================================= +; Song of Healing ; SFX2_Accomp ; SFX2 13 (Previous $3E) @@ -128,7 +129,9 @@ LinkItem_NewFlute: CMP.b #$03 : BEQ .song_of_storms .song_of_healing - LDA.b #$13 : JSR Player_DoSfx2 : RTS + LDA.b #$13 : JSR Player_DoSfx2 + LDA #$01 : STA $FE + RTS .song_of_storms ; Play the Song of Storms SFX @@ -261,220 +264,4 @@ OcarinaEffect_SummonStorms: .summonStorms LDA #$01 : STA $7EE00E RTS -} - -; variables -; 7EE00E - Rain Activator -; 7EE00D - Rain Deactivator (overridden if rain is activated before the deactivation occurs) -; 7EE00C - Activates the overlay animations and nonimmediate rain things -; 7EE00F - Activates thunder and indoor ambience (can be set at the same time as the Rain Activator) -; 7EE001 - Minutes in the time sequence script -; 7EE000 - Hours in the time sequence script -; 7EE00B - used to prevent my script from warping if rain is active, 0 allow rain disallow warp, 1 disallow rain allow warp - -;this is my loader for turning the rain on and off -; executed on dungoen load (replaced an LDA $7EF3C5 which is read before we return) -org $208100 -LoadRainEffect: -{ - LDA $7EE00E : BNE .On - LDA $7EE00D : BNE .Off - BRA LoadRainEffect_End - -LoadRainEffect_On: - LDA #$01 : STA $7EE00F : STA $7EE00C - LDA #$01 : STA $7EE00E - BRA LoadRainEffect_End - -LoadRainEffect_Off: - LDA #$00 - STA $7EE00F - STA $7EE00C - STA $7EE00D - BRA LoadRainEffect_End - -LoadRainEffect_End: - LDA #$00 - STA $7EE00E - STA $7EE00D - LDA $7EF3C5 - RTL -} - - -org $208200 ; these are executed every frame -RainOnTime: - LDA $7EE001 - cmp #$1E - bne .End - LDA $7EE000 - cmp #$01 - bne .End - LDA $7EE00B - bne .End - LDA #$01 - sta $7EE00E - sta $7EE00F -RainOnTime_End: - rtl - -org $208300 ; these are executed every frame -RainOffTime: - LDA $7EE001 - cmp #$1E - bne .End - LDA $7EE000 - cmp #$03 - bne .End - LDA #$01 - sta $7EE00D -RainOffTime_End: - rtl - -; moved this function to expanded space to change it, don't think i needed to though :() -org $20C000 - LDA $8A : CMP #$70 : BEQ BRANCH_EVIL_SWAMP - LDA $7EE00F : BEQ BRANCH_SKIPMOVEMENT - -BRANCH_EVIL_SWAMP: - LDA $7EF2F0 ; If misery mire has been opened already, we're done - AND #$20 - BNE BRANCH_SKIPMOVEMENT - LDA $1A ; Check the frame counter. - CMP #$03 ; On the third frame do a flash of lightning. - BEQ BRANCH_LIGHTNING - CMP #$05 - BEQ BRANCH_NORMAL_LIGHT - CMP #$24 ; On the #$24-th frame cue the thunder. - BEQ BRANCH_THUNDER - CMP #$2C ; On the #$2C-th frame bring the light back to normal. - BEQ BRANCH_NORMAL_LIGHT - CMP #$58 ; On the #$58-th frame cue the lightning - BEQ BRANCH_LIGHTNING - CMP #$5A ; On the #$5A-th frame - BNE BRANCH_MOVEOVERLAY -BRANCH_NORMAL_LIGHT: - LDA #$72 ; Keep the screen semi-dark. - BRA BRANCH_SETBRIGHTNESS -BRANCH_THUNDER: - LDX #$36 - STX $012E ; Play the thunder sound when outdoors. -BRANCH_LIGHTNING: - LDA #$32 ; Make the screen flash with lightning. -BRANCH_SETBRIGHTNESS: - STA $9A -BRANCH_MOVEOVERLAY: - LDA $1A ; if the first two bits are set, do nothing - AND #$03 - BNE BRANCH_SKIPMOVEMENT - LDA $0494 ; otherwise start moving some rain - INC - AND #$03 - STA $0494 - TAX - LDA $E1 - CLC - ADC $02A46D, X -; $01246D IN ROM - STA $E1 - LDA $E7 - CLC - ADC $02A471, X -; $012471 - STA $E7 -BRANCH_SKIPMOVEMENT: - RTL - -org $02A4CD ; rain animating overlays, thunder lightning, darkness (can do immediate) - JSL $20C000 - BRA $59 - -org $02AC12 ; load overlays OW to OW - LDA $7EE00C - NOP #2 - BEQ $03 - -org $02AFFC ; load overlays dungeon to OW - LDA $7EE00C - NOP #06 - BEQ $03 - -org $02838C ; indoor ambience (can do immediate) - LDA $7EE00F - NOP #02 - BEQ $1e - -org $02845D ; music routine - LDA $7EE00C - NOP #02 - BEQ $02 - -org $0284EA ; outdoor ambience - LDA $7EE00C - NOP #2 - BEQ $02 - -; overworld music routine -; modified to use the 'Beginning' music if 7EE00C is not zero (Rain activated) -org $02C463 - PHB : PHK : PLB - REP #$10 - LDA #$02 : STA $00 - LDX #$0000 - LDA $7EE00C - BNE $25 - - LDY #$00C0 - LDA $7EF3C5 - CMP #$03 - BCS $1D - - LDY #$0080 - LDA $7EF359 - CMP #$02 - BCS $12 - - LDA #$05 - STA $00 - LDY #$0040 - LDA $7EF3C5 - CMP #$02 - BCS $03 - - LDY #$0000 - LDA $C303,Y - STA $7F5B00,X - INY - INX - CPX #$0040 - BNE $F2 - - LDY #$0000 - LDA $C403,Y - STA $7F5B00,X - INX - INY - CPY #$0060 - BNE $F2 - - LDA $00 - STA $7F5B80 - SEP #$10 - PLB - RTL - -; Overworld beginning music for each OW Screen -; changes the music to use heavy rain outside of lost woods, and light rain inside -org $02C303 - db $25,$25,$13,$13,$13,$13,$13,$13 - db $25,$25,$13,$13,$13,$13,$13,$13 - db $13,$13,$13,$13,$13,$13,$13,$13 - db $13,$13,$13,$13,$13,$13,$13,$13 - db $13,$13,$13,$13,$13,$13,$13,$13 - db $13,$13,$13,$13,$13,$13,$13,$13 - db $13,$13,$13,$13,$13,$13,$13,$13 - db $13,$13,$13,$13,$13,$13,$13,$13 - -; executed on dungoen load -org $028356 ; replaced an LDA $7EF3C5 which is read before we return - JSL $208100 \ No newline at end of file +} \ No newline at end of file