This commit is contained in:
4am 2020-03-12 20:45:04 -04:00
commit 2963344307
12 changed files with 89 additions and 96 deletions

View File

@ -363,6 +363,21 @@ CopyDevs
!word gGamesListStore !word gGamesListStore
!word - !word -
!ifndef RELEASE {
+READ_ROM_NO_WRITE
lda #40
sta $21
lda #36
sta $24
dec $25
jsr $FC22
lda SRC+1
jsr $FDDA
lda SRC
jsr $FDDA
+READ_RAM2_WRITE_RAM2
}
+LDADDR gGamesListStore +LDADDR gGamesListStore
jsr okvs_len jsr okvs_len
sta GameCount sta GameCount

View File

@ -9,7 +9,7 @@
; D000..E891 - persistent data structures (per-game cheat categories, ; D000..E891 - persistent data structures (per-game cheat categories,
; gGlobalPrefsStore, gGamesListStore) ; gGlobalPrefsStore, gGamesListStore)
; ...unused... ; ...unused...
; E9E6..FFF9 - main program code ; EA6F..FFF9 - main program code
; FFFA..FFFF - NMI, reset, IRQ vectors ; FFFA..FFFF - NMI, reset, IRQ vectors
; ;
; LC RAM BANK 2 ; LC RAM BANK 2
@ -123,7 +123,7 @@ MOCKINGBOARD_SLOT = %00001111
HAS_SPEECH = %10000000 HAS_SPEECH = %10000000
; AND masks for game info bitfield (after game title in gGamesList) ; AND masks for game info bitfield (after game title in gGamesList)
HAS_DHGR_TITLE = %10000000 HAS_DHGR_TITLE = %10000000 ; this one is hard-coded via BMI instead of AND/BNE
CHEAT_CATEGORY = %00001111 CHEAT_CATEGORY = %00001111
; AND masks for MachineStatus ; AND masks for MachineStatus

View File

@ -11,16 +11,12 @@
!macro PARAMS_ON_STACK .bytes { !macro PARAMS_ON_STACK .bytes {
pla pla
sta PARAM sta PARAM
pla
tax
stx PARAM+1
lda #.bytes
clc clc
adc PARAM adc #.bytes
tay tay
bcc + pla
inx sta PARAM+1
+ txa adc #0
pha pha
tya tya
pha pha

View File

@ -1,5 +1,5 @@
;license:MIT ;license:MIT
;(c) 2018-9 by 4am ;(c) 2018-2020 by 4am
; ;
; Ordered key/value store (6502 compatible) ; Ordered key/value store (6502 compatible)
; ;
@ -127,7 +127,7 @@ okvs_append
; PTR -> store ; PTR -> store
; Y = 0 ; Y = 0
lda (PTR),y ; A = number of keys in store lda (PTR),y ; A = number of keys in store
clc ;;clc
adc #1 adc #1
pha ; will return this later pha ; will return this later
sta (PTR),y ; increment number of keys sta (PTR),y ; increment number of keys
@ -155,7 +155,7 @@ okvs_append
cpy #$FF cpy #$FF
bne - bne -
sec ;;sec
txa txa
adc PTR ; update PTR to byte after copied key adc PTR ; update PTR to byte after copied key
sta PTR sta PTR
@ -163,7 +163,7 @@ okvs_append
inc PTR+1 inc PTR+1
+ ; PTR -> space for new value + ; PTR -> space for new value
+LDPARAMPTR 5, SRC ; SRC -> new value to copy +LDPARAMPTR 5, SRC ; SRC -> new value to copy
ldy #7 iny ;;ldy #7
lda (PARAM),y ; get max length of value lda (PARAM),y ; get max length of value
tax tax
bne + bne +
@ -260,8 +260,8 @@ KEYLEN = *+1
adc KEYLEN adc KEYLEN
bcc + bcc +
iny iny
+ clc clc
adc #2 + adc #2
sta PTR sta PTR
bcc + bcc +
iny iny

View File

@ -1,5 +1,5 @@
;License:MIT ;License:MIT
;(c) 2018-9 by 4am ;(c) 2018-2020 by 4am
; ;
; functions for animated title screens ; functions for animated title screens
; ;
@ -28,9 +28,9 @@ MaybeAnimateTitle
eor #$60 eor #$60
+ sta SAVE+1 + sta SAVE+1
and #$60 and #$60
sta @a+2 sta PageFrom+2
eor #$60 eor #$60
sta @b+2 tax
lda #$FD lda #$FD
sta SAVE sta SAVE
ldy #0 ldy #0
@ -41,17 +41,8 @@ MaybeAnimateTitle
; file -- this area part of a 'screen ; file -- this area part of a 'screen
; hole' and is not displayed on screen) ; hole' and is not displayed on screen)
bne @exit ; if not, we're done here bne @exit ; if not, we're done here
txa
; copy one HGR screen to the other jsr CopyHGR
ldx #$20
@a lda $FD00,y ; SMC
@b sta $FD00,y ; SMC
iny
bne @a
inc @a+2
inc @b+2
dex
bne @a
; load the animation routine, which is stored in a subdirectory by filename ; load the animation routine, which is stored in a subdirectory by filename
jsr GetGameToLaunch jsr GetGameToLaunch

View File

@ -318,32 +318,13 @@ RedrawForDHGR
; $0200..$02CB clobbered by decompressor ; $0200..$02CB clobbered by decompressor
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
DecompressDHGR DecompressDHGR
jsr SwitchToBank2
jsr EnableAccelerator
clc
lda sizelo2
adc #$F8
sta _byte_lo
lda sizehi2
adc #$3F
sta _byte_hi
sta $C003 sta $C003
sta $C005 sta $C005
jsr decrunch jsr DecompressHGR
sta $C004 sta $C004
lda #$60 lda #$60
sta @copyaux+2 sta PageFrom+2
lda #$40 lda #$40
sta @copyaux+5 jsr CopyHGR
ldy #0
@copyaux
lda $D100, y ; SMC
sta $D100, y ; SMC
iny
bne @copyaux
inc @copyaux+5
inc @copyaux+2
bpl @copyaux
sta $C002 sta $C002
jsr DisableAccelerator rts
jmp SwitchToBank1

View File

@ -1,5 +1,5 @@
;license:MIT ;license:MIT
;(c) 2018-9 by 4am ;(c) 2018-2020 by 4am
; ;
; GR action slideshows ; GR action slideshows
; ;
@ -52,16 +52,12 @@ GRSingle
; graphics mode set to display lo-res screen ; graphics mode set to display lo-res screen
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
BlankGR BlankGR
ldy #$2C ; BIT
sty PageFrom
ldx #$04 ldx #$04
stx @loop+2 stx PageTo+2
lda #0 lda #0
tay jsr ClearGR
@loop sta $FD00,y
iny
bne @loop
inc @loop+2
dex
bne @loop
bit PAGE1 bit PAGE1
bit $C056 ; set GR mode bit $C056 ; set GR mode
jmp GRMode jmp GRMode

View File

@ -173,15 +173,18 @@ HGRActionCallback
; $0200..$02CB clobbered by decompressor ; $0200..$02CB clobbered by decompressor
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
DecompressHGR DecompressHGR
lda #$3F
DecompressCommon
pha
jsr SwitchToBank2 jsr SwitchToBank2
jsr EnableAccelerator jsr EnableAccelerator
clc clc
lda sizelo2 lda sizelo2
adc #$F8 adc #$F8
sta _byte_lo sta _byte_lo
lda sizehi2 pla
adc #$3F adc sizehi2
sta _byte_hi sta _byte_hi
jsr decrunch jsr decrunch
jsr DisableAccelerator jmp DisableAcceleratorAndSwitchToBank1
jmp SwitchToBank1

View File

@ -121,13 +121,13 @@ BlankSHR
jsr Home jsr Home
lda NEWVIDEO ; set GS NEWVIDEO mode to turn on linearize lda NEWVIDEO ; set GS NEWVIDEO mode to turn on linearize
ora #%01000000 ora #%01000000 ; can't use TSB here - might not be 65816
sta NEWVIDEO sta NEWVIDEO
sta WRITEAUXMEM ; writes go to auxmem sta WRITEAUXMEM ; writes go to auxmem
lda SHADOW ; enable auxmem-to-bank-E1 shadowing on IIgs lda SHADOW ; enable auxmem-to-bank-E1 shadowing on IIgs
and #$F7 and #$F7 ; can't use TRB here - might not be 65816
sta SHADOW sta SHADOW
lda #$20 ; clear $2000..$9FFF in auxmem lda #$20 ; clear $2000..$9FFF in auxmem
@ -137,7 +137,7 @@ BlankSHR
sta WRITEMAINMEM ; writes go to main memory sta WRITEMAINMEM ; writes go to main memory
lda NEWVIDEO ; set GS NEWVIDEO mode to turn on SHR mode lda NEWVIDEO ; set GS NEWVIDEO mode to turn on SHR mode
ora #%10000001 ora #%10000001 ; can't use TSB here - might not be 65816
sta NEWVIDEO sta NEWVIDEO
rts rts
@ -154,15 +154,6 @@ BlankSHR
; $0200..$02CB clobbered by decompressor ; $0200..$02CB clobbered by decompressor
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
DecompressSHR DecompressSHR
jsr SwitchToBank2 lda #$1F
jsr EnableAccelerator jmp DecompressCommon
clc
lda sizelo2
adc #$F8
sta _byte_lo
lda sizehi2
adc #$1F
sta _byte_hi
jsr decrunch
jsr DisableAccelerator
jmp SwitchToBank1

View File

@ -1,5 +1,5 @@
;license:MIT ;license:MIT
;(c) 2018-9 by 4am ;(c) 2018-2020 by 4am
; ;
; credits page ; credits page
; ;
@ -26,7 +26,7 @@ Credits
lda OffscreenPage lda OffscreenPage
ror ; draw on offscreen page ror ; draw on offscreen page
+LDADDR $8000 +LDADDR $8000
ldx #0 tax
jsr DrawPage ; draw credits jsr DrawPage ; draw credits
jsr ShowOtherPage ; show credits jsr ShowOtherPage ; show credits
jsr WaitForKeyFor30Seconds; wait jsr WaitForKeyFor30Seconds; wait

View File

@ -1,5 +1,5 @@
;license:MIT ;license:MIT
;(c) 2018-9 by 4am ;(c) 2018-2020 by 4am
; ;
; hi-res font drawing routines ; hi-res font drawing routines
; ;
@ -18,24 +18,26 @@
DrawString DrawString
jsr SwitchToBank2 jsr SwitchToBank2
jsr DrawStringInternal jsr DrawStringInternal
jmp SwitchToBank1 bmi JmpSwitch ; always
DrawPage DrawPage
jsr SwitchToBank2 jsr SwitchToBank2
jsr DrawPageInternal jsr DrawPageInternal
JmpSwitch
jmp SwitchToBank1 jmp SwitchToBank1
Draw40Chars Draw40Chars
jsr SwitchToBank2 jsr SwitchToBank2
jsr Draw40CharsInternal jsr Draw40CharsInternal
jmp SwitchToBank1 beq JmpSwitch ; always
DrawCenteredString DrawCenteredString
jsr SwitchToBank2 jsr SwitchToBank2
jsr DrawCenteredStringInternal jsr DrawCenteredStringInternal
jmp SwitchToBank1 bmi JmpSwitch ; always
DrawBuffer DrawBuffer
jsr SwitchToBank2 jsr SwitchToBank2
jsr DrawBufferInternal jsr DrawBufferInternal
jmp SwitchToBank1 bmi JmpSwitch ; always

View File

@ -1,5 +1,5 @@
;License:MIT ;License:MIT
;(c) 2018-9 by 4am ;(c) 2018-2020 by 4am
; ;
; functions for managing which HGR page is showing, and doing things on the other one ; functions for managing which HGR page is showing, and doing things on the other one
; ;
@ -94,8 +94,8 @@ LoadGameTitleOffscreen
sta SAVE sta SAVE
tay tay
lda (PTR),y ; A = game info bitfield lda (PTR),y ; A = game info bitfield
and #HAS_DHGR_TITLE ;;and #HAS_DHGR_TITLE
bne @dhgr bmi @dhgr
@hgr @hgr
jsr ForceHGRMode jsr ForceHGRMode
jsr GetOffscreenAddress jsr GetOffscreenAddress
@ -135,17 +135,35 @@ ClearHGR1
lda #$20 ; note to self: LDX #$20 can't move here lda #$20 ; note to self: LDX #$20 can't move here
ldx #$20 ldx #$20
ClearMem ClearMem
sta @a+2 ldy #$2C ; BIT
bne + ; always
;------------------------------------------------------------------------------
; CopyHGR
;
; in: source and destination page pointers set
; out: all registers clobbered
; 8kb memory region duplicated
;------------------------------------------------------------------------------
CopyHGR
ldx #$20
ldy #$B9 ; LDY
+ sty PageFrom
sta PageTo+2
lda #$80 lda #$80
ClearGR
ldy #0 ldy #0
@a sta $2000,y PageFrom lda $FD00,y ; SMC
PageTo sta $FD00,y ; SMC
iny iny
bne @a bne PageFrom
inc @a+2 inc PageFrom+2
inc PageTo+2
dex dex
bne @a bne PageFrom
rts rts
ResyncPage ResyncPage
jsr ToggleOffscreenPage jsr ToggleOffscreenPage
; /!\ execution falls through here to ShowOtherPage ; /!\ execution falls through here to ShowOtherPage