From 89895ea52dc46d971b9895c3f7b6e8d80ccee8e2 Mon Sep 17 00:00:00 2001 From: Peter Ferrie Date: Fri, 29 Oct 2021 12:59:35 -0700 Subject: [PATCH] save okvs across demo runs --- src/4cade.a | 4 +++- src/constants.a | 5 ++++- src/glue.launch.a | 2 +- src/ui.attract.mode.a | 7 ++++--- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/4cade.a b/src/4cade.a index 8c180ea1e..6deb711a7 100644 --- a/src/4cade.a +++ b/src/4cade.a @@ -177,7 +177,8 @@ COPYSRC = * !source "src/glue.launch.lc2.a" !source "src/hw.accel.lc2.a" STACKBASE = * - LCRAM2_END = STACKBASE + gStackSize - 1 + OKVS_CACHE = STACKBASE + gStackSize + LCRAM2_END = OKVS_CACHE + 5 !if LCRAM2_END >= DisableAccelerator { !error "code is too large: ends at ", LCRAM2_END } @@ -194,6 +195,7 @@ EvenLasterMover !set PASS2=1 !warn "ProRWTS ends at ", hdddataend - 1 !warn "STACK at ", STACKBASE + !warn "OKVS CACHE at ", OKVS_CACHE !warn "LCRAM2 ends at ", LCRAM2_END !warn "RELBASE = ", $10000 - (LastMover - FirstMover) } diff --git a/src/constants.a b/src/constants.a index a1043fa5d..13f1337a3 100644 --- a/src/constants.a +++ b/src/constants.a @@ -10,7 +10,7 @@ ; ...unused... ; E000..E3FF - HGR font data ; ...unused... -; E96C..FFEE - main program code +; E966..FFEE - main program code ; FFEF..FFF9 - API functions and global constants available for main program ; code, prelaunchers, transition effects, &c. ; (LoadFileDirect, Wait/UnwaitForVBL, MockingboardStuff, MachineStatus) @@ -21,6 +21,7 @@ ; D400..D6C3 - ProRWTS code ; D6C4..DAB9 - ProRWTS glue code ; DABA..DABF - backup of stack (during gameplay and self-running demos) +; DAC0..DAC5 - okvs cache (attract state saved across self-running demo) ; ...unused... ; DBB4..DBFF - (de)acceleration function ; DC00..DFFF - unused @@ -149,6 +150,8 @@ HAS_VIDHD = %00010000 SUPPORTS_SHR = %00110000 CHEATS_ENABLED = %00001000 +PRELAUNCH_STANDARD_SIZE = 61 ; LoadStandardPrelaunch, eventually to be determined at build-time + ; shared symbols for prelaunch and effects to call ProRWTS2 functions iCurBlockLo = $D401 ; constant iCurBlockHi = $D403 ; constant diff --git a/src/glue.launch.a b/src/glue.launch.a index efa6df295..31e6d7b79 100644 --- a/src/glue.launch.a +++ b/src/glue.launch.a @@ -233,4 +233,4 @@ LoadStandardPrelaunch rts + !byte 0 !be24 0 - !le16 68 + !le16 PRELAUNCH_STANDARD_SIZE diff --git a/src/ui.attract.mode.a b/src/ui.attract.mode.a index b09b8931a..480a670ed 100644 --- a/src/ui.attract.mode.a +++ b/src/ui.attract.mode.a @@ -78,10 +78,11 @@ MiniAttractMode !word - + !word $FDFD ; SMC jsr okvs_get_current - sty $1FFA + jsr SwitchToBank2 + sty OKVS_CACHE ldy #4 - lda (PTR), y - sta $1FFB, y + sta OKVS_CACHE + 1, y dey bpl - @@ -95,7 +96,7 @@ MiniAttractMode jsr LoadIndexedFile !word kAttractModeFulFile - !word $6000 - !word $1FFA + !word OKVS_CACHE +LDADDR - jsr okvs_len