mirror of
https://github.com/a2-4am/million-perfect-letters.git
synced 2024-06-02 22:41:33 +00:00
109 lines
3.3 KiB
Plaintext
109 lines
3.3 KiB
Plaintext
;license:MIT
|
|
;(c) 2020 by 4am
|
|
;
|
|
; /!\ Both sound libraries (electric.duet.a and mockingduet.a) are licensed under the
|
|
; GPL (2+ and 3+, respectively), so the program as a whole is licensed GPL 3+ by
|
|
; transitivity. Some individual files have a more permissive license. See LICENSE
|
|
; file for details.
|
|
;
|
|
!cpu 6502
|
|
!to "build/MILLION.SYSTEM",plain
|
|
*=$2000
|
|
|
|
!source "src/constants.a" ; no code
|
|
!source "src/macros.a" ; no code
|
|
!source "src/million.init.a" ; one-time initialization code, exits via Start
|
|
!source "src/hw.mockingboard.a"
|
|
|
|
FirstMover
|
|
!pseudopc $4000 {
|
|
Start
|
|
jsr LoadPrefs
|
|
jsr InitSound
|
|
jsr LoadProgressFromDisk
|
|
jsr TitlePage
|
|
@GoToMainMenu
|
|
; C is set now if main menu requires full redraw
|
|
; (e.g. title sequence ended prematurely, or we're
|
|
; returning from another screen)
|
|
jsr MainMenuEventLoop
|
|
; A = world ID
|
|
bcc +
|
|
jmp Quit
|
|
+
|
|
sta gWorldID
|
|
jsr MaybeLoadWorldFromDisk
|
|
bcs @GoToMainMenu
|
|
jsr LoadProgressFromMemory
|
|
; A = next puzzle ID
|
|
@Play
|
|
sta gPuzzleID
|
|
ldx gWorldID
|
|
lda kWorldLeftMargins, x
|
|
sta GlobalLeftMargin
|
|
lda kPuzzleWidths, x
|
|
jsr InitPuzzleStorage
|
|
jsr InitPuzzleSound
|
|
ldx gPuzzleID
|
|
jsr LoadPuzzleFromMemory
|
|
lda #0
|
|
sta gSelectedLogicalColumn
|
|
jsr DrawPuzzleChrome
|
|
jsr DrawPuzzle
|
|
jsr AnimatePuzzleIntoPlace
|
|
jsr DrawColumnSelectionIndicator
|
|
|
|
jsr PlayEventLoop
|
|
cpx #kCompletedPuzzle
|
|
bne +
|
|
jsr AnimatePuzzleCompleted
|
|
ldx gPuzzleID
|
|
jsr MarkPuzzleCompleted
|
|
; A = next puzzle ID
|
|
; X = number of puzzles completed
|
|
jsr MaybeShowInterstitial
|
|
bcc @Play
|
|
bcs @GoToMainMenu
|
|
+
|
|
cpx #kRequestedRestart
|
|
bne +
|
|
jsr Home
|
|
lda gPuzzleID
|
|
jmp @Play
|
|
+
|
|
sec ; C=1 triggers full redraw
|
|
bcs @GoToMainMenu
|
|
|
|
!source "src/ui.title.a"
|
|
!source "src/ui.main.menu.a"
|
|
!source "src/ui.reveal.a"
|
|
!source "src/ui.about.a"
|
|
!source "src/ui.interstitial.a"
|
|
!source "src/ui.play.a"
|
|
!source "src/ui.help.a"
|
|
!source "src/ui.message.a"
|
|
!source "src/ui.common.a"
|
|
!source "src/puzzle.a"
|
|
!source "src/storage.a"
|
|
!source "src/prefs.a"
|
|
!source "src/glue.sound.a"
|
|
!source "src/glue.mli.a"
|
|
!source "src/ui.font.courier.double.prime.a"
|
|
!source "src/ui.font.courier.double.prime.data.a"
|
|
!source "src/ui.font.heavy.silk.a"
|
|
!source "src/ui.font.heavy.silk.data.a"
|
|
!source "src/electric.duet.a"
|
|
!source "src/mockingduet.a"
|
|
MainMenuMusic
|
|
!bin "res/M.SICILIENNE"
|
|
InterstitialProgressMusic
|
|
!bin "res/M.JOY01"
|
|
M_ii !bin "res/M.II"
|
|
M_V !bin "res/M.V"
|
|
M_I !bin "res/M.I"
|
|
M_I_LONG !bin "res/M.I.LONG"
|
|
M_vi6 !bin "res/M.VI6"
|
|
M_ERROR !bin "res/M.ERROR"
|
|
}
|
|
LastMover
|