mirror of
https://github.com/a2-4am/4cade.git
synced 2024-11-28 16:51:04 +00:00
83 lines
2.6 KiB
Plaintext
83 lines
2.6 KiB
Plaintext
;License:MIT
|
|
;(c) 2018-9 by 4am
|
|
;
|
|
; functions for animated title screens
|
|
;
|
|
; Public functions:
|
|
; - MaybeAnimateTitle
|
|
;
|
|
|
|
; /!\ execution falls through from ui.search.mode/FindMatchingTitle
|
|
;------------------------------------------------------------------------------
|
|
; MaybeAnimateTitle
|
|
; slow down to 1 Mhz (always), then check if there is an animation for the
|
|
; title screenshot we just displayed, and if so, load it and call it
|
|
;
|
|
; in: none
|
|
; out: C clear
|
|
; all other flags clobbered
|
|
; all registers clobbered
|
|
;------------------------------------------------------------------------------
|
|
MaybeAnimateTitle
|
|
jsr SwitchToBank2
|
|
jsr DisableAcceleratorAndSwitchToBank1
|
|
|
|
lda #$3F
|
|
ldy OffscreenPage
|
|
bne +
|
|
eor #$60
|
|
+ sta SAVE+1
|
|
and #$60
|
|
sta @a+2
|
|
eor #$60
|
|
sta @b+2
|
|
lda #$FD
|
|
sta SAVE
|
|
ldy #0
|
|
lda (SAVE),y ; see if there is a hidden JMP to an
|
|
cmp #$4C ; animation routine for this screen
|
|
; at +$1FFD (after the graphics data,
|
|
; in the last 3 bytes of a $2000 byte
|
|
; file -- this area part of a 'screen
|
|
; hole' and is not displayed on screen)
|
|
bne @exit ; if not, we're done here
|
|
|
|
; copy one HGR screen to the other
|
|
ldx #$20
|
|
@a lda $FD00,y ; SMC
|
|
@b sta $FD00,y ; SMC
|
|
iny
|
|
bne @a
|
|
inc @a+2
|
|
inc @b+2
|
|
dex
|
|
bne @a
|
|
|
|
; load the animation routine, which is stored in a subdirectory by filename
|
|
jsr GetGameToLaunch
|
|
+STAY +
|
|
jsr LoadFile
|
|
!word kAnimatedTitleDirectory
|
|
+ !word $FDFD
|
|
!word 0
|
|
|
|
ldx #5 ; copy prelaunch code
|
|
- lda @titleAnimPrelaunch,x
|
|
sta $106,x
|
|
dex
|
|
bpl -
|
|
|
|
jsr Launch ; execute the animation
|
|
|
|
jsr ResyncPage ; we don't know which HGR page is showing
|
|
; when the animation returns, so resync
|
|
; the current one with our OffscreenPage
|
|
; variable
|
|
|
|
@exit clc ; tell caller not to refresh screen
|
|
rts
|
|
|
|
@titleAnimPrelaunch ; this is executed from $106/main by |Launch|
|
|
bit $C082
|
|
jmp (SAVE)
|