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 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 org $1BCADE
JSL EntranceAnimation JSL ZoraTemple_EntranceAnimation
RTS RTS
org $1BCBA6
JSL Castle_EntranceAnimation
RTS
pullpc pullpc
;=============================================== ;===============================================
; Entrance Animation ; Entrance Animation
;=============================================== ;===============================================
; don't forget to set $C8 to zero (STZ.b $C8) ; don't forget to set $C8 to zero (STZ.b $C8)
; don't forget to set $B0 to zero (STZ.b $B0) ; don't forget to set $B0 to zero (STZ.b $B0)
; Rename this into something unique ZoraTemple_EntranceAnimation:
EntranceAnimation:
{ {
REP #$20 REP #$20
LDA $0618 : CMP.w #$0630 : BCC + LDA $0618 : CMP.w #$0630 : BCC +
@@ -119,7 +116,6 @@ EntranceAnimation:
+ +
SEP #$20 SEP #$20
LDA.b $B0 ; Get animation state LDA.b $B0 ; Get animation state
ASL A ASL A
TAX ; x2 TAX ; x2
@@ -127,426 +123,529 @@ EntranceAnimation:
JSR.w (.AnimationFrames, X) JSR.w (.AnimationFrames, X)
RTL 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 ; Shake screen
;=================================================== ; =========================================================
; if you already have that function delete this one
ShakeScreen: ShakeScreen:
REP #$20 {
LDA.b $1A REP #$20
AND.w #$0001 LDA.b $1A
ASL A AND.w #$0001
TAX ASL A
TAX
LDA.l $01C961, X LDA.l $01C961, X
STA.w $011A STA.w $011A
LDA.l $01C965, X LDA.l $01C965, X
STA.w $011C STA.w $011C
.exit .exit
SEP #$20 SEP #$20
RTS RTS
}
Frame0: Frame0:
LDA.b $C8 : BEQ .doInit ; Load the timer {
JMP .notfirstframe LDA.b $C8 : BEQ .doInit ; Load the timer
.doInit JMP .notfirstframe
; Init code for the frame here .doInit
REP #$30 ; 16 bit mode ; Init code for the frame here
LDA.w #$0965 REP #$30 ; 16 bit mode
LDX.w #$0490 LDA.w #$0965
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0490
LDA.w #$0175 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0492 LDA.w #$0175
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0492
LDA.w #$0965 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$049C LDA.w #$0965
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$049C
LDA.w #$0175 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$049E LDA.w #$0175
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$049E
LDA.w #$02D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0510 LDA.w #$02D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0510
LDA.w #$0730 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0512 LDA.w #$0730
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0512
LDA.w #$02D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$051C LDA.w #$02D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$051C
LDA.w #$0730 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$051E LDA.w #$0730
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$051E
LDA.w #$00CE JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0410 LDA.w #$00CE
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0410
LDA.w #$00D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0412 LDA.w #$00D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0412
LDA.w #$00CE JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$041C LDA.w #$00CE
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$041C
LDA.w #$00D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$041E LDA.w #$00D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$041E
SEP #$30 ; 8 bit mode JSL $1BC97C ; Overworld_DrawMap16_Persist
INC.b $14 ; Do tiles transfer SEP #$30 ; 8 bit mode
.notfirstframe INC.b $14 ; Do tiles transfer
INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer .notfirstframe
BNE .wait INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer
INC.b $B0 ; increase frame BNE .wait
STZ.b $C8 ; reset timer for next frame INC.b $B0 ; increase frame
.wait STZ.b $C8 ; reset timer for next frame
RTS .wait
RTS
}
Frame1: Frame1:
LDA.b $C8 : BEQ .doInit ; Load the timer {
JMP .notfirstframe LDA.b $C8 : BEQ .doInit ; Load the timer
.doInit JMP .notfirstframe
; Init code for the frame here .doInit
REP #$30 ; 16 bit mode ; Init code for the frame here
LDA.w #$0965 REP #$30 ; 16 bit mode
LDX.w #$0510 LDA.w #$0965
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0510
LDA.w #$0183 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0512 LDA.w #$0183
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0512
LDA.w #$02D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0590 LDA.w #$02D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0590
LDA.w #$0730 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0592 LDA.w #$0730
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0592
LDA.w #$0965 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$051C LDA.w #$0965
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$051C
LDA.w #$0183 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$051E LDA.w #$0183
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$051E
LDA.w #$02D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$059C LDA.w #$02D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$059C
LDA.w #$0730 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$059E LDA.w #$0730
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$059E
LDA.w #$00CE JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0490 LDA.w #$00CE
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0490
LDA.w #$00D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0492 LDA.w #$00D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0492
LDA.w #$00CE JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$049C LDA.w #$00CE
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$049C
LDA.w #$00D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$049E LDA.w #$00D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$049E
SEP #$30 ; 8 bit mode JSL $1BC97C ; Overworld_DrawMap16_Persist
INC.b $14 ; Do tiles transfer SEP #$30 ; 8 bit mode
.notfirstframe INC.b $14 ; Do tiles transfer
JSR ShakeScreen ; make the screen shake .notfirstframe
INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer JSR ShakeScreen ; make the screen shake
BNE .wait INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer
INC.b $B0 ; increase frame BNE .wait
STZ.b $C8 ; reset timer for next frame INC.b $B0 ; increase frame
.wait STZ.b $C8 ; reset timer for next frame
RTS .wait
RTS
}
Frame2: Frame2:
LDA.b $C8 : BEQ .doInit ; Load the timer {
JMP .notfirstframe LDA.b $C8 : BEQ .doInit ; Load the timer
.doInit JMP .notfirstframe
; Init code for the frame here .doInit
REP #$30 ; 16 bit mode ; Init code for the frame here
LDA.w #$00CE REP #$30 ; 16 bit mode
LDX.w #$0510 LDA.w #$00CE
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0510
LDA.w #$00D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0512 LDA.w #$00D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0512
LDA.w #$00CE JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$051C LDA.w #$00CE
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$051C
LDA.w #$00D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$051E LDA.w #$00D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$051E
LDA.w #$0965 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0590 LDA.w #$0965
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0590
LDA.w #$0183 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0592 LDA.w #$0183
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0592
LDA.w #$02D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0610 LDA.w #$02D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0610
LDA.w #$0730 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0612 LDA.w #$0730
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0612
LDA.w #$0965 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$059C LDA.w #$0965
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$059C
LDA.w #$0183 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$059E LDA.w #$0183
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$059E
LDA.w #$02D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$061C LDA.w #$02D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$061C
LDA.w #$0730 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$061E LDA.w #$0730
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$061E
SEP #$30 ; 8 bit mode JSL $1BC97C ; Overworld_DrawMap16_Persist
INC.b $14 ; Do tiles transfer SEP #$30 ; 8 bit mode
.notfirstframe INC.b $14 ; Do tiles transfer
INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer .notfirstframe
BNE .wait INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer
INC.b $B0 ; increase frame BNE .wait
STZ.b $C8 ; reset timer for next frame INC.b $B0 ; increase frame
.wait STZ.b $C8 ; reset timer for next frame
RTS .wait
RTS
}
Frame3: Frame3:
LDA.b $C8 : BEQ .doInit ; Load the timer {
JMP .notfirstframe LDA.b $C8 : BEQ .doInit ; Load the timer
.doInit JMP .notfirstframe
; Init code for the frame here .doInit
REP #$30 ; 16 bit mode ; Init code for the frame here
LDA.w #$0530 REP #$30 ; 16 bit mode
LDX.w #$0616 LDA.w #$0530
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0616
LDA.w #$02E4 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0618 LDA.w #$02E4
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0618
LDA.w #$05A1 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0594 LDA.w #$05A1
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0594
LDA.w #$05A1 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$059A LDA.w #$05A1
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$059A
LDA.w #$0530 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0596 LDA.w #$0530
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0596
LDA.w #$02E4 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0598 LDA.w #$02E4
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0598
LDA.w #$0599 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0614 LDA.w #$0599
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0614
LDA.w #$0599 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$061A LDA.w #$0599
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$061A
LDA.w #$0094 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0494 LDA.w #$0094
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0494
LDA.w #$0094 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$049A LDA.w #$0094
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$049A
LDA.w #$05A1 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0514 LDA.w #$05A1
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0514
LDA.w #$05A1 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$051A LDA.w #$05A1
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$051A
LDA.w #$0530 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0516 LDA.w #$0530
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0516
LDA.w #$02E4 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0518 LDA.w #$02E4
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0518
SEP #$30 ; 8 bit mode JSL $1BC97C ; Overworld_DrawMap16_Persist
INC.b $14 ; Do tiles transfer SEP #$30 ; 8 bit mode
.notfirstframe INC.b $14 ; Do tiles transfer
INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer .notfirstframe
BNE .wait INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer
INC.b $B0 ; increase frame BNE .wait
STZ.b $C8 ; reset timer for next frame INC.b $B0 ; increase frame
.wait STZ.b $C8 ; reset timer for next frame
RTS .wait
RTS
}
Frame4: Frame4:
LDA.b $C8 : BEQ .doInit ; Load the timer {
JMP .notfirstframe LDA.b $C8 : BEQ .doInit ; Load the timer
.doInit JMP .notfirstframe
; Init code for the frame here .doInit
REP #$30 ; 16 bit mode ; Init code for the frame here
LDA.w #$056D REP #$30 ; 16 bit mode
LDX.w #$0396 LDA.w #$056D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0396
LDA.w #$056D JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0398 LDA.w #$056D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0398
LDA.w #$056D JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0416 LDA.w #$056D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0416
LDA.w #$056D JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0418 LDA.w #$056D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0418
LDA.w #$056D JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0496 LDA.w #$056D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0496
LDA.w #$056D JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0498 LDA.w #$056D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0498
LDA.w #$056D JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0414 LDA.w #$056D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0414
LDA.w #$056D JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$041A LDA.w #$056D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$041A
LDA.w #$06AF JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0394 LDA.w #$06AF
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0394
LDA.w #$06AF JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$039A LDA.w #$06AF
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$039A
SEP #$30 ; 8 bit mode JSL $1BC97C ; Overworld_DrawMap16_Persist
INC.b $14 ; Do tiles transfer SEP #$30 ; 8 bit mode
.notfirstframe INC.b $14 ; Do tiles transfer
JSR ShakeScreen ; make the screen shake .notfirstframe
INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer JSR ShakeScreen ; make the screen shake
BNE .wait INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer
INC.b $B0 ; increase frame BNE .wait
STZ.b $C8 ; reset timer for next frame INC.b $B0 ; increase frame
.wait STZ.b $C8 ; reset timer for next frame
RTS .wait
RTS
}
Frame5: Frame5:
LDA.b $C8 : BEQ .doInit ; Load the timer {
JMP .notfirstframe LDA.b $C8 : BEQ .doInit ; Load the timer
.doInit JMP .notfirstframe
; Init code for the frame here .doInit
REP #$30 ; 16 bit mode ; Init code for the frame here
LDA.w #$02C0 REP #$30 ; 16 bit mode
LDX.w #$0292 LDA.w #$02C0
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0292
LDA.w #$02BD JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$029C LDA.w #$02BD
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$029C
LDA.w #$00D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$031C LDA.w #$00D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$031C
LDA.w #$00CE JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0392 LDA.w #$00CE
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0392
LDA.w #$00D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$039C LDA.w #$00D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$039C
LDA.w #$00CE JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0412 LDA.w #$00CE
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0412
LDA.w #$00D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$041C LDA.w #$00D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$041C
LDA.w #$0965 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0492 LDA.w #$0965
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0492
LDA.w #$0175 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$049C LDA.w #$0175
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$049C
LDA.w #$00C7 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0512 LDA.w #$00C7
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0512
LDA.w #$00C8 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$051C LDA.w #$00C8
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$051C
LDA.w #$057D JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0592 LDA.w #$057D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0592
LDA.w #$057D JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$059C LDA.w #$057D
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$059C
LDA.w #$0156 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0612 LDA.w #$0156
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0612
LDA.w #$0156 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$061C LDA.w #$0156
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$061C
LDA.w #$00CE JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0312 LDA.w #$00CE
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0312
SEP #$30 ; 8 bit mode JSL $1BC97C ; Overworld_DrawMap16_Persist
INC.b $14 ; Do tiles transfer SEP #$30 ; 8 bit mode
LDA.b #$07 : STA.w $012D INC.b $14 ; Do tiles transfer
.notfirstframe LDA.b #$07 : STA.w $012D
JSR ShakeScreen ; make the screen shake .notfirstframe
INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer JSR ShakeScreen ; make the screen shake
BNE .wait INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer
INC.b $B0 ; increase frame BNE .wait
STZ.b $C8 ; reset timer for next frame INC.b $B0 ; increase frame
.wait STZ.b $C8 ; reset timer for next frame
RTS .wait
RTS
}
Frame6: Frame6:
LDA.b $C8 : BEQ .doInit ; Load the timer {
JMP .notfirstframe LDA.b $C8 : BEQ .doInit ; Load the timer
.doInit JMP .notfirstframe
; Init code for the frame here .doInit
REP #$30 ; 16 bit mode ; Init code for the frame here
LDA.w #$02BF REP #$30 ; 16 bit mode
LDX.w #$0192 LDA.w #$02BF
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0192
LDA.w #$0312 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$019C LDA.w #$0312
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$019C
LDA.w #$02B9 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0212 LDA.w #$02B9
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0212
LDA.w #$02B6 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$021C LDA.w #$02B6
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$021C
LDA.w #$06B0 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0214 LDA.w #$06B0
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0214
LDA.w #$06B1 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0216 LDA.w #$06B1
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0216
LDA.w #$06B2 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0218 LDA.w #$06B2
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0218
LDA.w #$06B3 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$021A LDA.w #$06B3
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$021A
LDA.w #$06B5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0294 LDA.w #$06B5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0294
LDA.w #$00DF JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0296 LDA.w #$00DF
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0296
LDA.w #$00E0 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0298 LDA.w #$00E0
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0298
LDA.w #$06B6 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$029A LDA.w #$06B6
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$029A
LDA.w #$02D5 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0314 LDA.w #$02D5
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0314
LDA.w #$0223 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0316 LDA.w #$0223
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0316
LDA.w #$0205 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$0318 LDA.w #$0205
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$0318
LDA.w #$0730 JSL $1BC97C ; Overworld_DrawMap16_Persist
LDX.w #$031A LDA.w #$0730
JSL $1BC97C ; Overworld_DrawMap16_Persist LDX.w #$031A
SEP #$30 ; 8 bit mode JSL $1BC97C ; Overworld_DrawMap16_Persist
INC.b $14 ; Do tiles transfer SEP #$30 ; 8 bit mode
.notfirstframe INC.b $14 ; Do tiles transfer
JSR ShakeScreen ; make the screen shake .notfirstframe
INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer JSR ShakeScreen ; make the screen shake
BNE .wait INC.b $C8 : LDA.b $C8 : CMP.b #$1E ; Load and compare timer
INC.b $B0 ; increase frame BNE .wait
STZ.b $C8 ; reset timer for next frame INC.b $B0 ; increase frame
.wait STZ.b $C8 ; reset timer for next frame
RTS .wait
RTS
}
Frame7: 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 ; Castle Drawbridge