cleanup overlay animation code

This commit is contained in:
scawful
2024-05-24 09:22:04 -04:00
parent daeb2b4061
commit 1493130d6d

View File

@@ -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