From 1493130d6d08173d3bd22fe68fee8b8446d7982f Mon Sep 17 00:00:00 2001 From: scawful Date: Fri, 24 May 2024 09:22:04 -0400 Subject: [PATCH] cleanup overlay animation code --- Overworld/overlays.asm | 929 +++++++++++++++++++++++------------------ 1 file changed, 514 insertions(+), 415 deletions(-) diff --git a/Overworld/overlays.asm b/Overworld/overlays.asm index a10f613..5b56dfe 100644 --- a/Overworld/overlays.asm +++ b/Overworld/overlays.asm @@ -90,26 +90,23 @@ JML $07A493 ; returnPos ; do not ! pushpc -;=============================================== -; Entrance Animation -;=============================================== -; don't forget to set $C8 to zero (STZ.b $C8) -; don't forget to set $B0 to zero (STZ.b $B0) - -; Rename this into something unique org $1BCADE -JSL EntranceAnimation +JSL ZoraTemple_EntranceAnimation RTS +org $1BCBA6 +JSL Castle_EntranceAnimation +RTS + pullpc + ;=============================================== ; Entrance Animation ;=============================================== ; don't forget to set $C8 to zero (STZ.b $C8) ; don't forget to set $B0 to zero (STZ.b $B0) -; Rename this into something unique -EntranceAnimation: +ZoraTemple_EntranceAnimation: { REP #$20 LDA $0618 : CMP.w #$0630 : BCC + @@ -119,7 +116,6 @@ EntranceAnimation: + SEP #$20 - LDA.b $B0 ; Get animation state ASL A TAX ; x2 @@ -127,426 +123,529 @@ EntranceAnimation: JSR.w (.AnimationFrames, X) RTL + + .AnimationFrames + dw Frame0 + dw Frame1 + dw Frame2 + dw Frame3 + dw Frame4 + dw Frame5 + dw Frame6 + dw Frame7 } -.AnimationFrames -dw Frame0 -dw Frame1 -dw Frame2 -dw Frame3 -dw Frame4 -dw Frame5 -dw Frame6 -dw Frame7 - -;=================================================== +; ========================================================= ; Shake screen -;=================================================== -; if you already have that function delete this one +; ========================================================= + ShakeScreen: -REP #$20 -LDA.b $1A -AND.w #$0001 -ASL A -TAX +{ + REP #$20 + LDA.b $1A + AND.w #$0001 + ASL A + TAX -LDA.l $01C961, X -STA.w $011A + LDA.l $01C961, X + STA.w $011A -LDA.l $01C965, X -STA.w $011C + LDA.l $01C965, X + STA.w $011C -.exit -SEP #$20 -RTS + .exit + SEP #$20 + RTS +} Frame0: -LDA.b $C8 : BEQ .doInit ; Load the timer -JMP .notfirstframe -.doInit -; Init code for the frame here -REP #$30 ; 16 bit mode -LDA.w #$0965 -LDX.w #$0490 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0175 -LDX.w #$0492 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0965 -LDX.w #$049C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0175 -LDX.w #$049E -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02D5 -LDX.w #$0510 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0730 -LDX.w #$0512 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02D5 -LDX.w #$051C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0730 -LDX.w #$051E -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00CE -LDX.w #$0410 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00D5 -LDX.w #$0412 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00CE -LDX.w #$041C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00D5 -LDX.w #$041E -JSL $1BC97C ; Overworld_DrawMap16_Persist -SEP #$30 ; 8 bit mode -INC.b $14 ; Do tiles transfer -.notfirstframe -INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer -BNE .wait -INC.b $B0 ; increase frame -STZ.b $C8 ; reset timer for next frame -.wait -RTS +{ + LDA.b $C8 : BEQ .doInit ; Load the timer + JMP .notfirstframe + .doInit + ; Init code for the frame here + REP #$30 ; 16 bit mode + LDA.w #$0965 + LDX.w #$0490 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0175 + LDX.w #$0492 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0965 + LDX.w #$049C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0175 + LDX.w #$049E + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02D5 + LDX.w #$0510 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0730 + LDX.w #$0512 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02D5 + LDX.w #$051C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0730 + LDX.w #$051E + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00CE + LDX.w #$0410 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00D5 + LDX.w #$0412 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00CE + LDX.w #$041C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00D5 + LDX.w #$041E + JSL $1BC97C ; Overworld_DrawMap16_Persist + SEP #$30 ; 8 bit mode + INC.b $14 ; Do tiles transfer + .notfirstframe + INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer + BNE .wait + INC.b $B0 ; increase frame + STZ.b $C8 ; reset timer for next frame + .wait + RTS +} + Frame1: -LDA.b $C8 : BEQ .doInit ; Load the timer -JMP .notfirstframe -.doInit -; Init code for the frame here -REP #$30 ; 16 bit mode -LDA.w #$0965 -LDX.w #$0510 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0183 -LDX.w #$0512 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02D5 -LDX.w #$0590 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0730 -LDX.w #$0592 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0965 -LDX.w #$051C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0183 -LDX.w #$051E -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02D5 -LDX.w #$059C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0730 -LDX.w #$059E -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00CE -LDX.w #$0490 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00D5 -LDX.w #$0492 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00CE -LDX.w #$049C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00D5 -LDX.w #$049E -JSL $1BC97C ; Overworld_DrawMap16_Persist -SEP #$30 ; 8 bit mode -INC.b $14 ; Do tiles transfer -.notfirstframe -JSR ShakeScreen ; make the screen shake -INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer -BNE .wait -INC.b $B0 ; increase frame -STZ.b $C8 ; reset timer for next frame -.wait -RTS +{ + LDA.b $C8 : BEQ .doInit ; Load the timer + JMP .notfirstframe + .doInit + ; Init code for the frame here + REP #$30 ; 16 bit mode + LDA.w #$0965 + LDX.w #$0510 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0183 + LDX.w #$0512 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02D5 + LDX.w #$0590 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0730 + LDX.w #$0592 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0965 + LDX.w #$051C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0183 + LDX.w #$051E + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02D5 + LDX.w #$059C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0730 + LDX.w #$059E + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00CE + LDX.w #$0490 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00D5 + LDX.w #$0492 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00CE + LDX.w #$049C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00D5 + LDX.w #$049E + JSL $1BC97C ; Overworld_DrawMap16_Persist + SEP #$30 ; 8 bit mode + INC.b $14 ; Do tiles transfer + .notfirstframe + JSR ShakeScreen ; make the screen shake + INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer + BNE .wait + INC.b $B0 ; increase frame + STZ.b $C8 ; reset timer for next frame + .wait + RTS +} + Frame2: -LDA.b $C8 : BEQ .doInit ; Load the timer -JMP .notfirstframe -.doInit -; Init code for the frame here -REP #$30 ; 16 bit mode -LDA.w #$00CE -LDX.w #$0510 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00D5 -LDX.w #$0512 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00CE -LDX.w #$051C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00D5 -LDX.w #$051E -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0965 -LDX.w #$0590 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0183 -LDX.w #$0592 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02D5 -LDX.w #$0610 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0730 -LDX.w #$0612 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0965 -LDX.w #$059C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0183 -LDX.w #$059E -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02D5 -LDX.w #$061C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0730 -LDX.w #$061E -JSL $1BC97C ; Overworld_DrawMap16_Persist -SEP #$30 ; 8 bit mode -INC.b $14 ; Do tiles transfer -.notfirstframe -INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer -BNE .wait -INC.b $B0 ; increase frame -STZ.b $C8 ; reset timer for next frame -.wait -RTS +{ + LDA.b $C8 : BEQ .doInit ; Load the timer + JMP .notfirstframe + .doInit + ; Init code for the frame here + REP #$30 ; 16 bit mode + LDA.w #$00CE + LDX.w #$0510 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00D5 + LDX.w #$0512 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00CE + LDX.w #$051C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00D5 + LDX.w #$051E + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0965 + LDX.w #$0590 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0183 + LDX.w #$0592 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02D5 + LDX.w #$0610 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0730 + LDX.w #$0612 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0965 + LDX.w #$059C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0183 + LDX.w #$059E + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02D5 + LDX.w #$061C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0730 + LDX.w #$061E + JSL $1BC97C ; Overworld_DrawMap16_Persist + SEP #$30 ; 8 bit mode + INC.b $14 ; Do tiles transfer + .notfirstframe + INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer + BNE .wait + INC.b $B0 ; increase frame + STZ.b $C8 ; reset timer for next frame + .wait + RTS +} + Frame3: -LDA.b $C8 : BEQ .doInit ; Load the timer -JMP .notfirstframe -.doInit -; Init code for the frame here -REP #$30 ; 16 bit mode -LDA.w #$0530 -LDX.w #$0616 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02E4 -LDX.w #$0618 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$05A1 -LDX.w #$0594 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$05A1 -LDX.w #$059A -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0530 -LDX.w #$0596 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02E4 -LDX.w #$0598 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0599 -LDX.w #$0614 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0599 -LDX.w #$061A -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0094 -LDX.w #$0494 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0094 -LDX.w #$049A -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$05A1 -LDX.w #$0514 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$05A1 -LDX.w #$051A -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0530 -LDX.w #$0516 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02E4 -LDX.w #$0518 -JSL $1BC97C ; Overworld_DrawMap16_Persist -SEP #$30 ; 8 bit mode -INC.b $14 ; Do tiles transfer -.notfirstframe -INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer -BNE .wait -INC.b $B0 ; increase frame -STZ.b $C8 ; reset timer for next frame -.wait -RTS +{ + LDA.b $C8 : BEQ .doInit ; Load the timer + JMP .notfirstframe + .doInit + ; Init code for the frame here + REP #$30 ; 16 bit mode + LDA.w #$0530 + LDX.w #$0616 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02E4 + LDX.w #$0618 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$05A1 + LDX.w #$0594 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$05A1 + LDX.w #$059A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0530 + LDX.w #$0596 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02E4 + LDX.w #$0598 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0599 + LDX.w #$0614 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0599 + LDX.w #$061A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0094 + LDX.w #$0494 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0094 + LDX.w #$049A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$05A1 + LDX.w #$0514 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$05A1 + LDX.w #$051A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0530 + LDX.w #$0516 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02E4 + LDX.w #$0518 + JSL $1BC97C ; Overworld_DrawMap16_Persist + SEP #$30 ; 8 bit mode + INC.b $14 ; Do tiles transfer + .notfirstframe + INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer + BNE .wait + INC.b $B0 ; increase frame + STZ.b $C8 ; reset timer for next frame + .wait + RTS +} + Frame4: -LDA.b $C8 : BEQ .doInit ; Load the timer -JMP .notfirstframe -.doInit -; Init code for the frame here -REP #$30 ; 16 bit mode -LDA.w #$056D -LDX.w #$0396 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$056D -LDX.w #$0398 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$056D -LDX.w #$0416 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$056D -LDX.w #$0418 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$056D -LDX.w #$0496 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$056D -LDX.w #$0498 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$056D -LDX.w #$0414 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$056D -LDX.w #$041A -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$06AF -LDX.w #$0394 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$06AF -LDX.w #$039A -JSL $1BC97C ; Overworld_DrawMap16_Persist -SEP #$30 ; 8 bit mode -INC.b $14 ; Do tiles transfer -.notfirstframe -JSR ShakeScreen ; make the screen shake -INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer -BNE .wait -INC.b $B0 ; increase frame -STZ.b $C8 ; reset timer for next frame -.wait -RTS +{ + LDA.b $C8 : BEQ .doInit ; Load the timer + JMP .notfirstframe + .doInit + ; Init code for the frame here + REP #$30 ; 16 bit mode + LDA.w #$056D + LDX.w #$0396 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$056D + LDX.w #$0398 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$056D + LDX.w #$0416 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$056D + LDX.w #$0418 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$056D + LDX.w #$0496 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$056D + LDX.w #$0498 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$056D + LDX.w #$0414 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$056D + LDX.w #$041A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$06AF + LDX.w #$0394 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$06AF + LDX.w #$039A + JSL $1BC97C ; Overworld_DrawMap16_Persist + SEP #$30 ; 8 bit mode + INC.b $14 ; Do tiles transfer + .notfirstframe + JSR ShakeScreen ; make the screen shake + INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer + BNE .wait + INC.b $B0 ; increase frame + STZ.b $C8 ; reset timer for next frame + .wait + RTS +} + Frame5: -LDA.b $C8 : BEQ .doInit ; Load the timer -JMP .notfirstframe -.doInit -; Init code for the frame here -REP #$30 ; 16 bit mode -LDA.w #$02C0 -LDX.w #$0292 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02BD -LDX.w #$029C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00D5 -LDX.w #$031C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00CE -LDX.w #$0392 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00D5 -LDX.w #$039C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00CE -LDX.w #$0412 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00D5 -LDX.w #$041C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0965 -LDX.w #$0492 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0175 -LDX.w #$049C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00C7 -LDX.w #$0512 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00C8 -LDX.w #$051C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$057D -LDX.w #$0592 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$057D -LDX.w #$059C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0156 -LDX.w #$0612 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0156 -LDX.w #$061C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00CE -LDX.w #$0312 -JSL $1BC97C ; Overworld_DrawMap16_Persist -SEP #$30 ; 8 bit mode -INC.b $14 ; Do tiles transfer -LDA.b #$07 : STA.w $012D -.notfirstframe -JSR ShakeScreen ; make the screen shake -INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer -BNE .wait -INC.b $B0 ; increase frame -STZ.b $C8 ; reset timer for next frame -.wait -RTS +{ + LDA.b $C8 : BEQ .doInit ; Load the timer + JMP .notfirstframe + .doInit + ; Init code for the frame here + REP #$30 ; 16 bit mode + LDA.w #$02C0 + LDX.w #$0292 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02BD + LDX.w #$029C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00D5 + LDX.w #$031C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00CE + LDX.w #$0392 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00D5 + LDX.w #$039C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00CE + LDX.w #$0412 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00D5 + LDX.w #$041C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0965 + LDX.w #$0492 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0175 + LDX.w #$049C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00C7 + LDX.w #$0512 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00C8 + LDX.w #$051C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$057D + LDX.w #$0592 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$057D + LDX.w #$059C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0156 + LDX.w #$0612 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0156 + LDX.w #$061C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00CE + LDX.w #$0312 + JSL $1BC97C ; Overworld_DrawMap16_Persist + SEP #$30 ; 8 bit mode + INC.b $14 ; Do tiles transfer + LDA.b #$07 : STA.w $012D + .notfirstframe + JSR ShakeScreen ; make the screen shake + INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer + BNE .wait + INC.b $B0 ; increase frame + STZ.b $C8 ; reset timer for next frame + .wait + RTS +} + Frame6: -LDA.b $C8 : BEQ .doInit ; Load the timer -JMP .notfirstframe -.doInit -; Init code for the frame here -REP #$30 ; 16 bit mode -LDA.w #$02BF -LDX.w #$0192 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0312 -LDX.w #$019C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02B9 -LDX.w #$0212 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02B6 -LDX.w #$021C -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$06B0 -LDX.w #$0214 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$06B1 -LDX.w #$0216 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$06B2 -LDX.w #$0218 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$06B3 -LDX.w #$021A -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$06B5 -LDX.w #$0294 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00DF -LDX.w #$0296 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$00E0 -LDX.w #$0298 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$06B6 -LDX.w #$029A -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$02D5 -LDX.w #$0314 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0223 -LDX.w #$0316 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0205 -LDX.w #$0318 -JSL $1BC97C ; Overworld_DrawMap16_Persist -LDA.w #$0730 -LDX.w #$031A -JSL $1BC97C ; Overworld_DrawMap16_Persist -SEP #$30 ; 8 bit mode -INC.b $14 ; Do tiles transfer -.notfirstframe -JSR ShakeScreen ; make the screen shake -INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer -BNE .wait -INC.b $B0 ; increase frame -STZ.b $C8 ; reset timer for next frame -.wait -RTS +{ + LDA.b $C8 : BEQ .doInit ; Load the timer + JMP .notfirstframe + .doInit + ; Init code for the frame here + REP #$30 ; 16 bit mode + LDA.w #$02BF + LDX.w #$0192 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0312 + LDX.w #$019C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02B9 + LDX.w #$0212 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02B6 + LDX.w #$021C + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$06B0 + LDX.w #$0214 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$06B1 + LDX.w #$0216 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$06B2 + LDX.w #$0218 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$06B3 + LDX.w #$021A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$06B5 + LDX.w #$0294 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00DF + LDX.w #$0296 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00E0 + LDX.w #$0298 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$06B6 + LDX.w #$029A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$02D5 + LDX.w #$0314 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0223 + LDX.w #$0316 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0205 + LDX.w #$0318 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0730 + LDX.w #$031A + JSL $1BC97C ; Overworld_DrawMap16_Persist + SEP #$30 ; 8 bit mode + INC.b $14 ; Do tiles transfer + .notfirstframe + JSR ShakeScreen ; make the screen shake + INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer + BNE .wait + INC.b $B0 ; increase frame + STZ.b $C8 ; reset timer for next frame + .wait + RTS +} + Frame7: +{ + LDA.b $C8 : BEQ .doInit ; Load the timer + JMP .notfirstframe + .doInit + ; Init code for the frame here + REP #$30 ; 16 bit mode + LDA.w #$00C7 + LDX.w #$0014 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0158 + LDX.w #$0016 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0158 + LDX.w #$0018 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00C8 + LDX.w #$001A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00C7 + LDX.w #$0094 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0158 + LDX.w #$0096 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0158 + LDX.w #$0098 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00C8 + LDX.w #$009A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00C7 + LDX.w #$0114 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0158 + LDX.w #$0116 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0158 + LDX.w #$0118 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00C8 + LDX.w #$011A + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00C7 + LDX.w #$0194 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0158 + LDX.w #$0196 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$0158 + LDX.w #$0198 + JSL $1BC97C ; Overworld_DrawMap16_Persist + LDA.w #$00C8 + LDX.w #$019A + JSL $1BC97C ; Overworld_DrawMap16_Persist + SEP #$30 ; 8 bit mode + INC.b $14 ; Do tiles transfer + LDA.b #$0D : STA.w $012D + .notfirstframe + JSR ShakeScreen ; make the screen shake + INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer + BNE .wait + INC.b $B0 ; increase frame + STZ.b $C8 ; reset timer for next frame + STZ.w $04C6 + STZ.b $B0 + STZ.w $0710 + STZ.w $02E4 + STZ.w $0FC1 + STZ.w $011A + STZ.w $011B + STZ.w $011C + STZ.w $011D + ; set the overlay + LDX.b $8A + LDA.l $7EF280,X + ORA.b #$20 + STA.l $7EF280,X + .wait + RTS +} ; ========================================================= ; Castle Drawbridge