million-perfect-letters/src/prefs.a

84 lines
2.3 KiB
Plaintext

;license:MIT
;(c) 2020 by 4am
;
PREFSFILE !byte prefs_e-prefs_b
prefs_b
!text "MPL.PREFS"
prefs_e
PREFSVER !byte $31
PREFSSOUND !byte $FD
PREFSCHEAT !byte $FD
!byte $0D
!raw "|||",$0D
!raw "||+---CHEAT (0/1)",$0D
!raw "|+---SOUND (0/1)",$0D
!raw "+---PREFS VERSION (DO NOT CHANGE)",$0D
PREFSWRITELEN = *-PREFSVER
PREFSREADLEN = $0003
CURRENTVER = $31 ; ASCII '1'
DEFAULTSOUND = $31 ; ASCII '1'
DEFAULTCHEAT = $30 ; ASCII '0'
;------------------------------------------------------------------------------
; LoadPrefs
; load settings from disk
;
; in: none
; out: A,Y clobbered
; X preserved
; flags clobbered
;------------------------------------------------------------------------------
LoadPrefs
jsr LoadFile1Shot
!word PREFSFILE
!word PREFSVER
!word PREFSREADLEN
!word PREFSFILEBUFFER
bcc @deserialize
- lda #CURRENTVER ; no prefs, use default values
sta PREFSVER
lda #DEFAULTSOUND
sta PREFSSOUND
lda #DEFAULTCHEAT
sta PREFSCHEAT
@deserialize
lda PREFSVER
cmp #CURRENTVER
bne - ; bad prefs version, use defaults
lda PREFSSOUND
cmp #$30
beq +
cmp #$31
bne - ; bad sound option, use defaults
+ and #$01
sta gSoundPref
rts
;------------------------------------------------------------------------------
; SavePrefs
; save settings to disk
;
; in: none
; out: A,Y clobbered
; X preserved
; flags clobbered
;------------------------------------------------------------------------------
SavePrefs
lda #CURRENTVER
sta PREFSVER
lda gSoundPref
ora #$30
sta PREFSSOUND
lda #DEFAULTCHEAT
sta PREFSCHEAT
jsr SaveFile1Shot
!word PREFSFILE
!byte $04 ; text file
!word $0000 ; no aux filetype
!word PREFSVER
!word PREFSWRITELEN
!word PREFSFILEBUFFER
rts