mirror of
https://github.com/a2-4am/4cade.git
synced 2024-09-27 12:57:21 +00:00
97 lines
2.5 KiB
Plaintext
97 lines
2.5 KiB
Plaintext
;license:MIT
|
|
;(c) 2018 by 4am
|
|
;
|
|
!cpu 6502
|
|
!to "build/LAUNCHER.SYSTEM",plain
|
|
*=$2000
|
|
|
|
!ifndef RELBASE {
|
|
RELBASE=$2000
|
|
}
|
|
|
|
!source "src/constants.a"
|
|
!source "src/macros.a"
|
|
|
|
; first-run initialization, relocates code to language card and continues from Main
|
|
!source "src/4cade.init.a"
|
|
|
|
FirstMover
|
|
!pseudopc RELBASE {
|
|
Reenter ; self-running demos should call this to exit back to 4cade
|
|
cld
|
|
cli
|
|
+READ_RAM1_WRITE_RAM1
|
|
jsr CloseHandles ; close any open handles to restore ProRWTS state to original
|
|
jsr SaveScreenHoles ; restore screen hole contents from saved copy
|
|
Main
|
|
ldx #$FF
|
|
txs
|
|
ldx #5
|
|
- lda Prelaunch,x ; copy reset vector code (switches to LC RAM and jumps to |Reenter|)
|
|
sta $100,x
|
|
dex
|
|
bpl -
|
|
inx
|
|
stx $3F2 ; set up reset vectors
|
|
inx
|
|
stx $3F3
|
|
txa
|
|
eor #$A5
|
|
sta $3F4
|
|
|
|
jsr BlankHGR
|
|
@loop
|
|
lda $C000
|
|
cmp #$8D
|
|
bne +
|
|
jsr Play
|
|
+ cmp #$9B
|
|
bne +
|
|
lda Mode
|
|
eor #$80
|
|
sta Mode
|
|
+
|
|
bit $C010
|
|
bit Mode
|
|
bpl +
|
|
jsr AttractMode
|
|
jmp @loop
|
|
+
|
|
jsr SearchMode
|
|
jmp @loop
|
|
Mode
|
|
!byte $80
|
|
|
|
; these routines will only be called after relocating to language card
|
|
!source "src/ui.search.mode.a"
|
|
!source "src/ui.attract.mode.a"
|
|
!source "src/ui.attract.hgr.a"
|
|
!source "src/ui.attract.dhgr.a"
|
|
!source "src/ui.attract.shr.a"
|
|
!source "src/prodos.path.a"
|
|
!source "src/glue.launch.a"
|
|
!source "src/glue.prorwts2.a"
|
|
!source "src/okvs.a"
|
|
!source "src/wait.a"
|
|
!source "src/textrank.a"
|
|
!source "src/parse.common.a"
|
|
!source "src/parse.prefs.a"
|
|
!source "src/parse.games.a"
|
|
!source "src/ui.sound.a"
|
|
!source "src/ui.font.a"
|
|
gGlobalPrefsStore
|
|
!word $D000 ; address of first okvs store
|
|
!word Reenter ; NMI vector ($FFFA-B)
|
|
!word Reenter ; reset vector ($FFFC-D)
|
|
!word Reenter ; IRQ vector ($FFFE-F)
|
|
}
|
|
LastMover
|
|
!source "src/ui.font.data.a"
|
|
!if RELBASE = $2000 {
|
|
!ifdef PASS2 {
|
|
} else { ;PASS2
|
|
!set PASS2=1
|
|
!warn "RELBASE = ", $10000 - (LastMover - FirstMover)
|
|
}
|
|
}
|