4cade/src/ui.animation.a

76 lines
2.5 KiB
Plaintext
Raw Normal View History

2019-09-28 12:35:48 +00:00
;License:MIT
2020-03-13 00:03:37 +00:00
;(c) 2018-2020 by 4am
2019-09-28 12:35:48 +00:00
;
; functions for animated title screens
;
2019-10-14 02:22:47 +00:00
; Public functions:
2019-09-28 12:35:48 +00:00
; - MaybeAnimateTitle
;
2019-10-08 17:19:20 +00:00
; /!\ execution falls through from ui.search.mode/FindMatchingTitle
2019-10-14 02:22:47 +00:00
;------------------------------------------------------------------------------
; 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
;
2021-10-28 05:28:20 +00:00
; in: gSearchStore is populated
2019-10-14 02:22:47 +00:00
; out: C clear
; all other flags clobbered
; all registers clobbered
;------------------------------------------------------------------------------
2019-09-28 12:35:48 +00:00
MaybeAnimateTitle
2019-10-10 01:02:46 +00:00
jsr SwitchToBank2
jsr DisableAcceleratorAndSwitchToBank1
2019-10-09 02:25:22 +00:00
lda #$3F
ldy OffscreenPage
2019-09-28 12:35:48 +00:00
bne +
2019-10-09 02:25:22 +00:00
eor #$60
2020-03-25 04:47:08 +00:00
+ sta DEST+1
2019-10-09 02:25:22 +00:00
and #$60
2020-03-13 00:03:37 +00:00
sta PageFrom+2
2019-10-09 02:25:22 +00:00
eor #$60
2020-03-13 00:03:37 +00:00
tax
2019-09-28 12:35:48 +00:00
lda #$FD
2020-03-25 04:47:08 +00:00
sta DEST
2019-09-28 12:35:48 +00:00
ldy #0
2020-03-25 04:47:08 +00:00
lda (DEST),y ; see if there is a hidden JMP to an
2019-09-28 12:35:48 +00:00
cmp #$4C ; animation routine for this screen
2019-10-14 02:22:47 +00:00
; 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
2020-03-13 00:03:37 +00:00
txa
jsr CopyHGR
2019-09-28 12:35:48 +00:00
2019-10-14 02:22:47 +00:00
; load the animation routine, which is stored in a subdirectory by filename
jsr GetGameToLaunch
2020-03-24 20:30:14 +00:00
+ST16 +
2019-09-28 12:35:48 +00:00
jsr LoadFile
!word kAnimatedTitleDirectory
2019-10-08 18:43:41 +00:00
+ !word $FDFD
2019-09-28 12:35:48 +00:00
!word 0
ldx #5 ; copy prelaunch code
- lda @titleAnimPrelaunch,x
sta $106,x
dex
bpl -
bit $c050 ; turn on graphics mode (Home set text mode)
2019-10-14 02:22:47 +00:00
jsr Launch ; execute the animation
2021-10-28 05:28:20 +00:00
jsr ReloadSearchIndex
2019-10-14 02:22:47 +00:00
jsr ResyncPage ; we don't know which HGR page is showing
; when the animation returns, so resync
; the current one with our OffscreenPage
; variable
2019-10-08 04:03:37 +00:00
@exit clc ; tell caller not to refresh screen
2019-09-28 12:35:48 +00:00
rts
2019-10-14 02:22:47 +00:00
@titleAnimPrelaunch ; this is executed from $106/main by |Launch|
2019-09-28 12:35:48 +00:00
bit $C082
2020-03-25 04:47:08 +00:00
jmp (DEST)