mirror of
https://github.com/a2-4am/4cade.git
synced 2024-12-23 16:29:34 +00:00
shave some bytes
This commit is contained in:
parent
436522857a
commit
e57eaaa3fa
@ -92,7 +92,6 @@ ResetVector ; 6 bytes, copied to $100
|
||||
!source "src/ui.overlay.a"
|
||||
!source "src/ui.offscreen.a"
|
||||
!source "src/ui.attract.mode.a"
|
||||
!source "src/ui.attract.dhgr.a"
|
||||
!source "src/ui.attract.shr.a"
|
||||
!source "src/ui.attract.gr.a"
|
||||
|
||||
@ -109,8 +108,12 @@ ResetVector ; 6 bytes, copied to $100
|
||||
!source "src/parse.prefs.a" ; \__ execution falls through
|
||||
!source "src/glue.prorwts2.a" ; /
|
||||
|
||||
; add new files above here so ui.common stays last
|
||||
!source "src/ui.common.a"
|
||||
|
||||
; add new files above here so ui.wait stays last
|
||||
|
||||
!source "src/ui.attract.dhgr.a" ; \-- execution falls through
|
||||
!source "src/ui.wait.a" ; /
|
||||
gAttractModeStore
|
||||
gFXStore
|
||||
gDFXStore
|
||||
|
@ -9,7 +9,7 @@
|
||||
; D000..E611 - persistent data structures (per-game cheat categories,
|
||||
; gGlobalPrefsStore, gGamesListStore)
|
||||
; ...unused...
|
||||
; EC01..FFF9 - main program code
|
||||
; EC04..FFF9 - main program code
|
||||
; FFFA..FFFF - NMI, reset, IRQ vectors
|
||||
;
|
||||
; LC RAM BANK 2
|
||||
|
@ -146,4 +146,4 @@ DHGRActionCallback
|
||||
+ !word $FDFD
|
||||
|
||||
+LDADDR $6000
|
||||
jmp ExecuteTransitionAndWait
|
||||
; /!\ execution falls through to ui.wait/ExecuteTransitionAndWait
|
||||
|
@ -10,9 +10,6 @@
|
||||
; - BlankDHGR
|
||||
; - IsSearchKey
|
||||
; - IsUpDownOrRightArrow
|
||||
; - ExecuteTransitionAndWait
|
||||
; - WaitForKeyFor30Seconds
|
||||
; - CoverFade
|
||||
;
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
@ -172,71 +169,3 @@ IsUpDownOrRightArrow
|
||||
beq @done
|
||||
cmp #$8A ; down arrow
|
||||
@done rts
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; ExecuteTransitionAndWait
|
||||
; call transition effect code (address passed in) and wait a period of time
|
||||
; or until the user presses a key
|
||||
;
|
||||
; in: A/Y = address of transition effect code
|
||||
; out: all flags and registers clobbered
|
||||
;------------------------------------------------------------------------------
|
||||
ExecuteTransitionAndWait
|
||||
+STAY @j+1
|
||||
@j jsr $FDFD ; SMC call transition effect code
|
||||
ldx #$20 ; picture is showing so now we wait
|
||||
- lda #0
|
||||
jsr WaitForKeyWithTimeout
|
||||
bmi +
|
||||
dex
|
||||
bpl -
|
||||
+ lda KBD
|
||||
cmp #$95
|
||||
bne ConvenientlyPlacedRTS
|
||||
bit CLEARKBD
|
||||
ConvenientlyPlacedRTS
|
||||
rts
|
||||
|
||||
; /!\ keep this last in the file to ensure it doesn't cross a page boundary /!\
|
||||
;------------------------------------------------------------------------------
|
||||
; WaitForKeyFor30Seconds
|
||||
; does what it says on the tin
|
||||
;
|
||||
; in: none
|
||||
; out: if user presses a key before the timer runs out, exits with A = key
|
||||
; and X/Y preserved
|
||||
; otherwise exits via MegaAttractMode and everything is clobbered
|
||||
;------------------------------------------------------------------------------
|
||||
WaitForKeyFor30Seconds
|
||||
lda #$16 ; initialize timeout counters
|
||||
sta Timeout
|
||||
sta Timeout+1
|
||||
sta Timeout+2
|
||||
@loop
|
||||
lda KBD
|
||||
bmi ConvenientlyPlacedRTS
|
||||
|
||||
inc RNDSEED+1 ; these are only ever incremented, never
|
||||
bne + ; reset (may be used as a pseudorandom
|
||||
inc RNDSEED ; seed)
|
||||
+
|
||||
dec Timeout
|
||||
bne @loop
|
||||
dec Timeout+1
|
||||
bne @loop
|
||||
dec Timeout+2
|
||||
bne @loop
|
||||
; /!\ execution falls through here to CoverFade
|
||||
CoverFade
|
||||
jsr LoadCoverOffscreen
|
||||
jsr ShowOtherPage
|
||||
lda OffscreenPage
|
||||
bne +
|
||||
jsr LoadCoverOffscreen
|
||||
jsr ShowOtherPage
|
||||
+ jsr LoadFile ; load transition effect code at $6000
|
||||
!word kFXDirectory
|
||||
!word kCoverFadeFile
|
||||
!word $6000
|
||||
jsr $6000 ; call transition effect
|
||||
jmp MegaAttractMode ; exit via mega attract mode
|
||||
|
77
src/ui.wait.a
Normal file
77
src/ui.wait.a
Normal file
@ -0,0 +1,77 @@
|
||||
;License:MIT
|
||||
;(c) 2018-9 by 4am
|
||||
;
|
||||
; UI functions for doing things then waiting, or waiting then doing things
|
||||
;
|
||||
; - ExecuteTransitionAndWait
|
||||
; - WaitForKeyFor30Seconds
|
||||
; - CoverFade
|
||||
|
||||
; /!\ execution falls through here from ui.attract.dhgr/DHGRActionCallback
|
||||
;------------------------------------------------------------------------------
|
||||
; ExecuteTransitionAndWait
|
||||
; call transition effect code (address passed in) and wait a period of time
|
||||
; or until the user presses a key
|
||||
;
|
||||
; in: A/Y = address of transition effect code
|
||||
; out: all flags and registers clobbered
|
||||
;------------------------------------------------------------------------------
|
||||
ExecuteTransitionAndWait
|
||||
+STAY @j+1
|
||||
@j jsr $FDFD ; SMC call transition effect code
|
||||
ldx #$20 ; picture is showing so now we wait
|
||||
- lda #0
|
||||
jsr WaitForKeyWithTimeout
|
||||
bmi +
|
||||
dex
|
||||
bpl -
|
||||
+ lda KBD
|
||||
cmp #$95
|
||||
bne ConvenientlyPlacedRTS
|
||||
bit CLEARKBD
|
||||
ConvenientlyPlacedRTS
|
||||
rts
|
||||
|
||||
; /!\ keep this last in the file to ensure it doesn't cross a page boundary /!\
|
||||
;------------------------------------------------------------------------------
|
||||
; WaitForKeyFor30Seconds
|
||||
; does what it says on the tin
|
||||
;
|
||||
; in: none
|
||||
; out: if user presses a key before the timer runs out, exits with A = key
|
||||
; and X/Y preserved
|
||||
; otherwise exits via MegaAttractMode and everything is clobbered
|
||||
;------------------------------------------------------------------------------
|
||||
WaitForKeyFor30Seconds
|
||||
lda #$16 ; initialize timeout counters
|
||||
sta Timeout
|
||||
sta Timeout+1
|
||||
sta Timeout+2
|
||||
@loop
|
||||
lda KBD
|
||||
bmi ConvenientlyPlacedRTS
|
||||
|
||||
inc RNDSEED+1 ; these are only ever incremented, never
|
||||
bne + ; reset (may be used as a pseudorandom
|
||||
inc RNDSEED ; seed)
|
||||
+
|
||||
dec Timeout
|
||||
bne @loop
|
||||
dec Timeout+1
|
||||
bne @loop
|
||||
dec Timeout+2
|
||||
bne @loop
|
||||
; /!\ execution falls through here to CoverFade
|
||||
CoverFade
|
||||
jsr LoadCoverOffscreen
|
||||
jsr ShowOtherPage
|
||||
lda OffscreenPage
|
||||
bne +
|
||||
jsr LoadCoverOffscreen
|
||||
jsr ShowOtherPage
|
||||
+ jsr LoadFile ; load transition effect code at $6000
|
||||
!word kFXDirectory
|
||||
!word kCoverFadeFile
|
||||
!word $6000
|
||||
jsr $6000 ; call transition effect
|
||||
jmp MegaAttractMode ; exit via mega attract mode
|
Loading…
Reference in New Issue
Block a user