mirror of
https://github.com/a2-4am/pitch-dark.git
synced 2024-09-27 04:54:48 +00:00
use games.conf for master game list, remove hard-coded GAMES array
This commit is contained in:
parent
f5b5c9a374
commit
fc962b6a59
151
src/games.a
151
src/games.a
@ -1,151 +0,0 @@
|
||||
;license:MIT
|
||||
;(c) 2018 by 4am
|
||||
;
|
||||
; Game directory and filenames
|
||||
;
|
||||
; Public constants
|
||||
; - kNumberOfGames
|
||||
; - GAMES
|
||||
;
|
||||
|
||||
kNumberOfGames = 34
|
||||
|
||||
GAMES ; length of this array must = kNumberOfGames, there is no range checking
|
||||
!word .adventure
|
||||
!word .amfv
|
||||
!word .ballyhoo
|
||||
!word .beyondzork
|
||||
!word .borderzone
|
||||
!word .bureaucracy
|
||||
!word .cutthroats
|
||||
!word .deadline
|
||||
!word .enchanter
|
||||
!word .hgttg
|
||||
!word .hollywoodhijinx
|
||||
!word .infidel
|
||||
!word .leathergoddesses
|
||||
!word .lurkinghorror
|
||||
!word .minizork
|
||||
!word .moonmist
|
||||
!word .nordandbert
|
||||
!word .planetfall
|
||||
!word .plunderedhearts
|
||||
!word .seastalker
|
||||
!word .sherlock
|
||||
!word .sorcerer
|
||||
!word .spellbreaker
|
||||
!word .starcross
|
||||
!word .stationfall
|
||||
!word .suspect
|
||||
!word .suspended
|
||||
!word .trinity
|
||||
!word .wishbringer
|
||||
!word .witness
|
||||
!word .zorki
|
||||
!word .zorkii
|
||||
!word .zorkiii
|
||||
!word .ztuu
|
||||
|
||||
; length-prefixed names of each subdirectory in game directory, 1 per game
|
||||
.adventure
|
||||
!byte 9
|
||||
!raw "ADVENTURE"
|
||||
.amfv
|
||||
!byte 4
|
||||
!raw "AMFV"
|
||||
.ballyhoo
|
||||
!byte 8
|
||||
!raw "BALLYHOO"
|
||||
.beyondzork
|
||||
!byte 11
|
||||
!raw "BEYOND.ZORK"
|
||||
.borderzone
|
||||
!byte 11
|
||||
!raw "BORDER.ZONE"
|
||||
.bureaucracy
|
||||
!byte 11
|
||||
!raw "BUREAUCRACY"
|
||||
.cutthroats
|
||||
!byte 10
|
||||
!raw "CUTTHROATS"
|
||||
.deadline
|
||||
!byte 8
|
||||
!raw "DEADLINE"
|
||||
.enchanter
|
||||
!byte 9
|
||||
!raw "ENCHANTER"
|
||||
.hgttg
|
||||
!byte 5
|
||||
!raw "HGTTG"
|
||||
.hollywoodhijinx
|
||||
!byte 9
|
||||
!raw "HOLLYWOOD"
|
||||
.infidel
|
||||
!byte 7
|
||||
!raw "INFIDEL"
|
||||
.leathergoddesses
|
||||
!byte 4
|
||||
!raw "LGOP"
|
||||
.lurkinghorror
|
||||
!byte 14
|
||||
!raw "LURKING.HORROR"
|
||||
.minizork
|
||||
!byte 9
|
||||
!raw "MINI.ZORK"
|
||||
.moonmist
|
||||
!byte 8
|
||||
!raw "MOONMIST"
|
||||
.nordandbert
|
||||
!byte 13
|
||||
!raw "NORD.AND.BERT"
|
||||
.planetfall
|
||||
!byte 10
|
||||
!raw "PLANETFALL"
|
||||
.plunderedhearts
|
||||
!byte 9
|
||||
!raw "PLUNDERED"
|
||||
.seastalker
|
||||
!byte 10
|
||||
!raw "SEASTALKER"
|
||||
.sherlock
|
||||
!byte 8
|
||||
!raw "SHERLOCK"
|
||||
.sorcerer
|
||||
!byte 8
|
||||
!raw "SORCERER"
|
||||
.spellbreaker
|
||||
!byte 12
|
||||
!raw "SPELLBREAKER"
|
||||
.starcross
|
||||
!byte 9
|
||||
!raw "STARCROSS"
|
||||
.stationfall
|
||||
!byte 11
|
||||
!raw "STATIONFALL"
|
||||
.suspect
|
||||
!byte 7
|
||||
!raw "SUSPECT"
|
||||
.suspended
|
||||
!byte 9
|
||||
!raw "SUSPENDED"
|
||||
.trinity
|
||||
!byte 7
|
||||
!raw "TRINITY"
|
||||
.wishbringer
|
||||
!byte 11
|
||||
!raw "WISHBRINGER"
|
||||
.witness
|
||||
!byte 7
|
||||
!raw "WITNESS"
|
||||
.zorki
|
||||
!byte 6
|
||||
!raw "ZORK.I"
|
||||
.zorkii
|
||||
!byte 7
|
||||
!raw "ZORK.II"
|
||||
.zorkiii
|
||||
!byte 8
|
||||
!raw "ZORK.III"
|
||||
.ztuu
|
||||
!byte 4
|
||||
!raw "ZTUU"
|
@ -88,6 +88,8 @@ okvs_init
|
||||
; in: stack contains 2 bytes of parameters:
|
||||
; +1 [word] handle to storage space
|
||||
; out: A contains number of keys in this store
|
||||
; X clobbered
|
||||
; Y preserved
|
||||
; $00/$01 clobbered
|
||||
; $02/$03 clobbered
|
||||
;------------------------------------------------------------------------------
|
||||
|
@ -33,7 +33,7 @@ addrInfo
|
||||
; LoadGameInfo
|
||||
; load file with information about the current game
|
||||
;
|
||||
; in: gCurrentGame between 0 and (kNumberOfGames-1)
|
||||
; in: current ProDOS prefix is the same as the PITCH.DARK binary
|
||||
; out: addrInfo, addrDescription, addrVersions, addrOptions populated
|
||||
; gVersionsStore populated with keys/values in [versions] section
|
||||
; gOptionsStore populated with keys/values in [options] section
|
||||
|
@ -8,8 +8,6 @@
|
||||
; - SaveGlobalPreferences
|
||||
;
|
||||
; Public variables
|
||||
; - gCurrentGame byte 0..kNumberOfGames-1
|
||||
; populated by LoadGlobalPreferences so other code can index into GAMES array for quick access to game shortnames
|
||||
; - gNeedToSavePrefs byte 0=false, 1=true
|
||||
; set to 1 if prefs have changed. SaveGlobalPreferences won't write to disk if this is 0.
|
||||
;
|
||||
@ -25,9 +23,6 @@
|
||||
gGlobalPrefsStore
|
||||
!word 0
|
||||
|
||||
gCurrentGame
|
||||
!byte 0
|
||||
|
||||
gNeedToSavePrefs
|
||||
!byte 0
|
||||
|
||||
@ -72,19 +67,6 @@ LoadGlobalPreferences
|
||||
sta gVersionsStore
|
||||
lda SRC+1
|
||||
sta gVersionsStore+1
|
||||
|
||||
jsr okvs_get ; get shortname of current game
|
||||
!word gGlobalPrefsStore
|
||||
!word kLastPlayed
|
||||
sta .gameNamePtr
|
||||
sty .gameNamePtr+1
|
||||
|
||||
jsr okvs_get ; look up game in games list to get numeric index
|
||||
!word gGamesListStore
|
||||
.gameNamePtr
|
||||
!word $FDFD ; SMC
|
||||
stx gCurrentGame
|
||||
|
||||
rts
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
@ -129,21 +111,24 @@ SaveGlobalPreferences
|
||||
ldy #>.fluff3
|
||||
jsr addString
|
||||
|
||||
jsr okvs_len
|
||||
!word gGamesListStore
|
||||
sta .numberOfGames
|
||||
ldx #0
|
||||
.gameLoop
|
||||
phx
|
||||
txa
|
||||
asl
|
||||
tax
|
||||
lda GAMES,x
|
||||
ldy GAMES+1,x
|
||||
stx .n
|
||||
jsr okvs_nth
|
||||
!word gGamesListStore
|
||||
.n !byte $FD ; SMC
|
||||
sta .gameKey
|
||||
sty .gameKey+1
|
||||
jsr addStringFromStore
|
||||
.gameKey !word $FDFD ; SMC
|
||||
plx
|
||||
inx
|
||||
cpx #kNumberOfGames
|
||||
.numberOfGames=*+1
|
||||
cpx #$FD ; SMC
|
||||
bne .gameLoop
|
||||
|
||||
lda #<.eof
|
||||
|
@ -12,7 +12,6 @@
|
||||
!source "src/constants.a"
|
||||
!source "src/WeeGUI_MLI.s"
|
||||
|
||||
!source "src/games.a"
|
||||
!source "src/okvs.a"
|
||||
!source "src/prodos.a"
|
||||
!source "src/ramdisk.a"
|
||||
|
@ -170,31 +170,49 @@ HandleKey
|
||||
}
|
||||
|
||||
!zone {
|
||||
GetCurrentGameIndex
|
||||
jsr okvs_get ; get shortname of current game
|
||||
!word gGlobalPrefsStore
|
||||
!word kLastPlayed
|
||||
sta .gameNamePtr
|
||||
sty .gameNamePtr+1
|
||||
jsr okvs_get ; get numeric index
|
||||
!word gGamesListStore
|
||||
.gameNamePtr
|
||||
!word $FDFD ; SMC
|
||||
rts ; X = index of current game
|
||||
|
||||
callback_previous
|
||||
lda gCurrentGame
|
||||
dec
|
||||
jsr GetCurrentGameIndex
|
||||
dex
|
||||
bpl +
|
||||
lda #kNumberOfGames-1
|
||||
+ sta gCurrentGame
|
||||
bra .loadNewGameInfoAndRepaint
|
||||
callback_next
|
||||
lda gCurrentGame
|
||||
inc
|
||||
cmp #kNumberOfGames
|
||||
bcc +
|
||||
lda #0
|
||||
+ sta gCurrentGame
|
||||
asl
|
||||
jsr okvs_len
|
||||
!word gGamesListStore
|
||||
tax
|
||||
lda GAMES,x
|
||||
dex
|
||||
+ bra .loadNewGameInfoAndRepaint
|
||||
callback_next
|
||||
jsr GetCurrentGameIndex
|
||||
inx
|
||||
stx .n
|
||||
jsr okvs_len
|
||||
!word gGamesListStore
|
||||
ldx .n
|
||||
.n=*+1
|
||||
cmp #$FD ; SMC
|
||||
bne .loadNewGameInfoAndRepaint
|
||||
ldx #0
|
||||
.loadNewGameInfoAndRepaint
|
||||
stx .nth
|
||||
jsr okvs_nth
|
||||
!word gGamesListStore
|
||||
.nth !byte $FD ; SMC
|
||||
sta .gameptr
|
||||
lda GAMES+1,x
|
||||
sta .gameptr+1
|
||||
sty .gameptr+1
|
||||
jsr okvs_update
|
||||
!word gGlobalPrefsStore
|
||||
!word kLastPlayed
|
||||
.gameptr !word $FDFD ; SMC
|
||||
.loadNewGameInfoAndRepaint
|
||||
lda #1
|
||||
sta gNeedToSavePrefs
|
||||
jsr LoadGameInfo
|
||||
|
Loading…
Reference in New Issue
Block a user