Skip to content

Commit

Permalink
shave some bytes
Browse files Browse the repository at this point in the history
  • Loading branch information
a2-4am committed Oct 8, 2019
1 parent 4365228 commit e57eaaa
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 75 deletions.
7 changes: 5 additions & 2 deletions src/4cade.a
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/constants.a
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/ui.attract.dhgr.a
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,4 @@ DHGRActionCallback
+ !word $FDFD

+LDADDR $6000
jmp ExecuteTransitionAndWait
; /!\ execution falls through to ui.wait/ExecuteTransitionAndWait
71 changes: 0 additions & 71 deletions src/ui.common.a
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
; - BlankDHGR
; - IsSearchKey
; - IsUpDownOrRightArrow
; - ExecuteTransitionAndWait
; - WaitForKeyFor30Seconds
; - CoverFade
;

;------------------------------------------------------------------------------
Expand Down Expand Up @@ -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 changes: 77 additions & 0 deletions src/ui.wait.a
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit e57eaaa

Please sign in to comment.