pitch-dark/src/pitchdark.a
2018-04-11 15:12:36 -04:00

86 lines
2.7 KiB
Plaintext

;license:MIT
;(c) 2018 by 4am
;
; Public entry points
; - MainScreen
; Public functions
; - ExitWeeGUI
;
!cpu 65c02
!ct "src/lcase.ct"
!to "build/PITCH.DARK",plain
*=$3FFD
jmp Start
!bin "res/WEEGUI"
!source "src/macros.a"
!source "src/constants.a"
!source "src/WeeGUI_MLI.s"
!source "src/okvs.a"
!source "src/prodos.a"
!source "src/ramdisk.a"
!source "src/path.a"
!source "src/sound.a"
!source "src/launch.a"
!source "src/parse.common.a"
!source "src/parse.gamelist.a"
!source "src/parse.gameinfo.a"
!source "src/parse.prefs.a"
!source "src/ui.common.a"
!source "src/ui.main.a"
!source "src/ui.main.keys.a"
!source "src/ui.options.a"
; !source "src/ui.resume.a"
!source "src/ui.versions.a"
!source "src/ui.artwork.a"
Start
lda MACHID
and #$30
cmp #$30 ; 128K?
beq + ; yes, continue
- jmp QuitToProDOS
+ inc ; 65C02-only INC instruction will clear Z flag
beq - ; if Z flag is still set, this is not a 65C02
jsr DisconnectRAM32 ; disconnect /RAM in S3,D2
jsr ClearInterpreterOptions ; clear options struct at $300
jsr WGInit ; initialize WeeGUI
jsr LoadGameList ; get master list of games
jsr LoadGlobalPreferences ; get global options, including current game
jsr LoadGameInfo ; get current game description and game-specific options
ldx #WGEnableMouse ; enable mouse support
jsr WeeGUI
MainScreen
ldx #$FF
txs
jsr PaintMain ; create all WeeGUI views (UI elements) and paint them
bit $C010 ; clear keyboard strobe
ldx #WGClearPendingClick ; clear WeeGUI mouse strobe
jsr WeeGUI
.mainRunLoop
jsr RepaintMainIfDirty
ldx #WGPendingViewAction
jsr WeeGUI ; handle mouse movement and clicks
lda $C000
bpl .mainRunLoop
bit $C010
jsr HandleKey ; handle keypresses
bra .mainRunLoop
ExitWeeGUI
ldx #WGDisableMouse ; disable mouse support before quitting
jsr WeeGUI
ldx #WGClearScreen ; clear screen (HOME)
jsr WeeGUI
ldx #WGExit ; clean up WeeGUI
jmp WeeGUI
gGamesListStore
!word *+2 ; address of first okvs store