set LC RAM bank after Reenter, fix MachineStatus confusion

This commit is contained in:
4am 2019-06-27 09:51:17 -04:00
parent 23844487b8
commit 52f55fb682
8 changed files with 19 additions and 22 deletions

View File

@ -43,7 +43,6 @@ Reenter
cli
+READ_RAM2_WRITE_RAM2
jsr CloseHandles ; close any open handles to restore ProRWTS
; (also switches to LC RAM bank 1)
jsr SaveOrRestoreScreenHoles ; restore original screen hole contents
RestoreStackNextTime
clc ; SMC
@ -61,6 +60,7 @@ RestoreStackNextTime
bne -
ldx $DF00 ; restore stack pointer
txs
+READ_RAM1_WRITE_RAM1
rts ; and return to caller
; these routines will only be called after relocating to language card
@ -79,6 +79,8 @@ RestoreStackNextTime
!source "src/parse.prefs.a"
!source "src/ui.font.a"
!source "src/ui.common.a"
MachineStatus
!byte 0
gGlobalPrefsStore
!word $D000 ; address of first okvs store
gGamesListStore

View File

@ -18,13 +18,13 @@
bcs @no64K
jsr DisableAccelerator ; set to 1 MHz (supports IIgs and many common accelerator cards)
jsr IsGS ; check for IIgs (allows super hi-res artwork)
ror MachineStatus
ror zpMachineStatus
jsr HasVidHDCard ; check for VidHD card (allows super hi-res artwork even on non-IIgs machines)
ror MachineStatus
ror zpMachineStatus
jsr Has128K ; check for 128K (allows DHGR slideshows and 128K games)
ror MachineStatus
ror zpMachineStatus
jsr HasJoystick ; check for joystick (absence is OK but we filter out some games that require a joystick)
ror MachineStatus ; now bit 4 = 1 if IIgs
ror zpMachineStatus ; now bit 4 = 1 if IIgs
; bit 5 = 1 if VidHD
; bit 6 = 1 if 128K
; bit 7 = 1 if joystick
@ -81,8 +81,8 @@ ProRWTSBuffer
; until after ProRWTS initialization
OneTimeSetup
lda MachineStatus
sta oldstatus
lda zpMachineStatus
sta MachineStatus ; save machine status
jsr SaveOrRestoreScreenHoles ; save initial copy of screen hole content
lda #$91
sta holepatch ; enable restoring of copy from now on

View File

@ -39,10 +39,11 @@ SAVE = $08
HTAB = $24
VTAB = $25
Timeout = $ED ; 3 bytes (used by SearchMode)
MachineStatus =$F0 ; bit 7 = 1 if machine has joystick
zpMachineStatus= $F0 ; bit 7 = 1 if machine has joystick
; bit 6 = 1 if machine has 128K
; bit 5 = 1 if machine has a VidHD card
; bit 4 = 1 if machine is a IIgs
; only used during init, then copied to MachineStatus in LC RAM
; $FE ; used by ParseGamesList
; $FF ; used by ParseGamesList

View File

@ -388,13 +388,7 @@ holepatch ;sta->lda
inc namhi
dec bloklo
bne --
lda oldstatus
ldx MachineStatus
sta MachineStatus
sta oldstatus
rts
oldstatus
!byte 0
holey_stuff
!fill 64

View File

@ -61,7 +61,7 @@ ParseGamesList
beq @filterOnMemory
cmp #$31 ; not '0' or '1' or '[' or CR -> ignore entire line (e.g. comment)
bne @skipLine
bit MachineStatus
bit zpMachineStatus
bpl @skipLine ; game requires joystick but we don't have one, so ignore entire line
@filterOnMemory
jsr IncAndGetChar ; get second filter character ('1' if game requires 128K)
@ -69,7 +69,7 @@ ParseGamesList
beq @swallowComma
cmp #$31 ; not '0' or '1' -> ignore entire line
bne @skipLine
bit MachineStatus
bit zpMachineStatus
bvc @skipLine ; game requires 128K but we only have 64K, so ignore entire line
@swallowComma
jsr IncAndGetChar

View File

@ -12,7 +12,7 @@
!zone {
DHGRTitleSlideshow
bit oldstatus ; only run DHGR slideshow if we have 128K
bit MachineStatus ; only run DHGR slideshow if we have 128K
bvs +
rts
+ jsr .LoadDHGRTransition ; load transition effect code at $6000
@ -23,7 +23,7 @@ DHGRTitleSlideshow
jmp BlankHGR ; switch back to HGR mode with initial blank screen on exit
DHGRActionSlideshow
bit oldstatus ; only run DHGR slideshow if we have 128K
bit MachineStatus ; only run DHGR slideshow if we have 128K
bvs +
rts
+ jsr .LoadDHGRTransition ; load transition effect code at $6000
@ -34,7 +34,7 @@ DHGRActionSlideshow
jmp BlankHGR ; switch back to HGR mode with initial blank screen on exit
DHGRSingle
bit oldstatus ; only show DHGR screenshots if we have 128K
bit MachineStatus ; only show DHGR screenshots if we have 128K
bvs +
rts
+ jsr SetPath ; A/Y point to path

View File

@ -11,7 +11,7 @@
!zone {
SHRSlideshow
lda oldstatus ; only show SHR on IIgs or if we have a VidHD card
lda MachineStatus ; only show SHR on IIgs or if we have a VidHD card
and #SUPPORTS_SHR
bne +
rts
@ -23,7 +23,7 @@ SHRSlideshow
SHRSingle
+STAY SAVE
lda oldstatus ; only show SHR on IIgs or if we have a VidHD card
lda MachineStatus ; only show SHR on IIgs or if we have a VidHD card
and #SUPPORTS_SHR
bne +
rts

View File

@ -56,7 +56,7 @@ SoftBell
; out: $0106..$011F clobbered
;------------------------------------------------------------------------------
Home
lda oldstatus
lda MachineStatus
and #SUPPORTS_SHR
beq @noSHR
lda $C035