mirror of
https://github.com/a2-4am/million-perfect-letters.git
synced 2024-06-09 23:29:39 +00:00
refactoring
This commit is contained in:
parent
2ea54a1ed0
commit
f2b38e4ee8
|
@ -49,8 +49,6 @@ k16251Progression
|
|||
!word M_vi6
|
||||
!word M_ii
|
||||
!word M_V
|
||||
kFinalChord
|
||||
!word M_I_LONG
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; ReinitSoundAfterPrefChange
|
||||
|
@ -193,7 +191,7 @@ PlayNextChord
|
|||
PlayFinalChord
|
||||
txa
|
||||
pha
|
||||
+LD16 kFinalChord
|
||||
+LDADDR M_I_LONG
|
||||
jsr PlaySoundToCompletion
|
||||
pla
|
||||
tax
|
||||
|
|
|
@ -76,6 +76,7 @@ Start ; X = Mockingboard slot (from init)
|
|||
sec ; C=1 triggers full redraw
|
||||
bcs @GoToMainMenu
|
||||
|
||||
!source "src/ui.strings.a"
|
||||
!source "src/ui.title.a"
|
||||
!source "src/ui.main.menu.a"
|
||||
!source "src/ui.select.world.a"
|
||||
|
@ -96,8 +97,6 @@ Start ; X = Mockingboard slot (from init)
|
|||
!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
|
||||
|
@ -108,5 +107,7 @@ 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"
|
||||
!source "src/electric.duet.a"
|
||||
!source "src/mockingduet.a"
|
||||
}
|
||||
LastMover
|
||||
|
|
|
@ -5,11 +5,12 @@
|
|||
;
|
||||
; Public functions:
|
||||
; - MaybeLoadWorldFromDisk
|
||||
; - PreParseWorldData
|
||||
; - LoadProgressFromDisk
|
||||
; - LoadProgressFromMemory
|
||||
; - LoadPuzzleFromMemory
|
||||
; - MarkPuzzleCompleted
|
||||
; - FindPackedProgressAddr
|
||||
; - FindPackedProgress
|
||||
;
|
||||
; Public variables:
|
||||
; - gWorldID
|
||||
|
@ -71,9 +72,17 @@ MaybeLoadWorldFromDisk
|
|||
WorldFileLoaded
|
||||
!byte $FF ; no file
|
||||
|
||||
PreParseWorldData
|
||||
; find the starting address of each of the 100 puzzles in this world
|
||||
;------------------------------------------------------------------------------
|
||||
; PreParseWorldData
|
||||
; build internal list of pointers to the start of each puzzle within a world,
|
||||
; after the raw world data has been loaded into memory
|
||||
;
|
||||
; in: $9000+ contains raw world data from disk
|
||||
; out: X = number of puzzles found
|
||||
; other registers & flags clobbered
|
||||
; $FE/$FF clobbered
|
||||
;------------------------------------------------------------------------------
|
||||
PreParseWorldData
|
||||
lda #$FF
|
||||
sta $FE
|
||||
lda #$8F
|
||||
|
@ -110,6 +119,7 @@ PreParseWorldData
|
|||
|
||||
;------------------------------------------------------------------------------
|
||||
; LoadProgressFromDisk
|
||||
; load PROGRESS file into memory
|
||||
;
|
||||
; see comments in MarkPuzzleCompleted for file format
|
||||
;
|
||||
|
@ -146,7 +156,7 @@ LoadProgressFromDisk
|
|||
;------------------------------------------------------------------------------
|
||||
LoadProgressFromMemory
|
||||
lda gWorldID
|
||||
jsr FindPackedProgressAddr
|
||||
jsr FindPackedProgress
|
||||
; ($FE) -> start of the 16-byte structure for this world
|
||||
; zero destination array
|
||||
ldx #103
|
||||
|
@ -311,7 +321,7 @@ MarkPuzzleCompleted
|
|||
; start at the beginning. So that's nice.
|
||||
;
|
||||
lda gWorldID
|
||||
jsr FindPackedProgressAddr
|
||||
jsr FindPackedProgress
|
||||
; ($FE) -> start of the 16-byte structure for this world
|
||||
; zero out all 16 bytes
|
||||
ldy #$0F
|
||||
|
@ -373,12 +383,17 @@ MarkPuzzleCompleted
|
|||
pla
|
||||
rts
|
||||
|
||||
FindPackedProgressAddr
|
||||
;------------------------------------------------------------------------------
|
||||
; FindPackedProgress
|
||||
; find address of a world's packed progress data
|
||||
;
|
||||
; in: A = world ID
|
||||
; out: ($FE) points to first byte of this world's packed progress (16-byte structure)
|
||||
; A/Y clobbered
|
||||
; X preserved
|
||||
; all flags clobbered
|
||||
;------------------------------------------------------------------------------
|
||||
FindPackedProgress
|
||||
pha
|
||||
+LDADDR PACKEDPROGRESS
|
||||
+ST16 $FE
|
||||
|
|
|
@ -7,34 +7,6 @@
|
|||
; - AboutPage
|
||||
;
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; AboutPage
|
||||
; display animated credits page
|
||||
;
|
||||
; in: none
|
||||
; out: all registers & flags clobbered
|
||||
;------------------------------------------------------------------------------
|
||||
AboutPage
|
||||
jsr Home
|
||||
@outerloop
|
||||
lda #0
|
||||
sta @loop+1
|
||||
@loop ldx #$FD ; SMC
|
||||
lda aboutVTABs, x
|
||||
sta targetVTAB
|
||||
lda aboutHTABs, x
|
||||
sta minHTAB
|
||||
lda aboutStringsHi, x
|
||||
beq @outerloop
|
||||
tay
|
||||
lda aboutStringsLo, x
|
||||
jsr HeavySilkReveal
|
||||
inc @loop+1
|
||||
ldx #11
|
||||
jsr LongWaitForKeyWithTimeout
|
||||
bpl @loop
|
||||
@exit rts
|
||||
|
||||
aboutStringsLo
|
||||
!byte <sAboutWritten
|
||||
!byte <sAboutTested
|
||||
|
@ -70,24 +42,31 @@ aboutHTABs
|
|||
!byte 9
|
||||
!byte 1
|
||||
!byte 9
|
||||
sAboutWritten
|
||||
!byte 21
|
||||
!raw "COPYRIGHT 2020 BY 4AM"
|
||||
sAboutTested
|
||||
!byte 21
|
||||
!raw "PLAYTESTED BY OPTION8"
|
||||
sAboutTested2
|
||||
!byte 10
|
||||
!raw "AND BESLEY"
|
||||
sAboutMusic
|
||||
!byte 22
|
||||
!raw "MUSIC BY GABRIEL FAURE"
|
||||
sAboutElectricDuet
|
||||
!byte 28
|
||||
!raw "SOUND ROUTINES BY PAUL LUTUS"
|
||||
sAboutMockingDuet
|
||||
!byte 35
|
||||
!raw "MOCKINGBOARD ROUTINES BY CYBERNESTO"
|
||||
sAboutInspired
|
||||
!byte 21
|
||||
!raw "INSPIRED BY TYPESHIFT"
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; AboutPage
|
||||
; display animated credits page
|
||||
;
|
||||
; in: none
|
||||
; out: all registers & flags clobbered
|
||||
;------------------------------------------------------------------------------
|
||||
AboutPage
|
||||
jsr Home
|
||||
@outerloop
|
||||
lda #0
|
||||
sta @loop+1
|
||||
@loop ldx #$FD ; SMC
|
||||
lda aboutVTABs, x
|
||||
sta targetVTAB
|
||||
lda aboutHTABs, x
|
||||
sta minHTAB
|
||||
lda aboutStringsHi, x
|
||||
beq @outerloop
|
||||
tay
|
||||
lda aboutStringsLo, x
|
||||
jsr HeavySilkReveal
|
||||
inc @loop+1
|
||||
ldx #11
|
||||
jsr LongWaitForKeyWithTimeout
|
||||
bpl @loop
|
||||
@exit rts
|
||||
|
|
355
src/ui.demo.a
355
src/ui.demo.a
|
@ -7,6 +7,175 @@
|
|||
; - RunDemo
|
||||
;
|
||||
|
||||
DemoDispatchLo
|
||||
!byte <DemoOnEXIT
|
||||
!byte <DemoOnLOAD
|
||||
!byte <DemoOnSHOW
|
||||
!byte <DemoOnHIDE
|
||||
!byte <DemoOnLEFT
|
||||
!byte <DemoOnRIGHT
|
||||
!byte <DemoOnUP
|
||||
!byte <DemoOnDOWN
|
||||
!byte <DemoOnWAIT
|
||||
!byte <DemoOnNEXT
|
||||
!byte <DemoOnTYPE
|
||||
DemoDispatchHi
|
||||
!byte >DemoOnEXIT
|
||||
!byte >DemoOnLOAD
|
||||
!byte >DemoOnSHOW
|
||||
!byte >DemoOnHIDE
|
||||
!byte >DemoOnLEFT
|
||||
!byte >DemoOnRIGHT
|
||||
!byte >DemoOnUP
|
||||
!byte >DemoOnDOWN
|
||||
!byte >DemoOnWAIT
|
||||
!byte >DemoOnNEXT
|
||||
!byte >DemoOnTYPE
|
||||
|
||||
; opcodes
|
||||
EXIT = 0
|
||||
LOAD = 1
|
||||
SHOW = 2
|
||||
HIDE = 3
|
||||
LEFT = 4
|
||||
RIGHT = 5
|
||||
UP = 6
|
||||
DOWN = 7
|
||||
WAIT = 8
|
||||
NEXT = 9
|
||||
TYPE = 10
|
||||
|
||||
DemoCode
|
||||
!byte WAIT ,20
|
||||
!byte HIDE
|
||||
!byte LOAD ,0,0
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
; A C
|
||||
; --v-
|
||||
; LOUD
|
||||
; ----
|
||||
; ITLE
|
||||
; B H
|
||||
!byte SHOW ,<sHelpHeader1,>sHelpHeader1
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte LEFT
|
||||
!byte WAIT ,2
|
||||
!byte LEFT
|
||||
!byte WAIT ,2
|
||||
!byte DOWN
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
; OC
|
||||
; TUD
|
||||
; ---v
|
||||
; ABLE
|
||||
; ----
|
||||
; L H
|
||||
; I
|
||||
!byte WAIT ,30
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte LEFT
|
||||
!byte DOWN
|
||||
!byte WAIT ,2
|
||||
!byte DOWN
|
||||
!byte WAIT ,2
|
||||
!byte LEFT
|
||||
!byte WAIT ,2
|
||||
!byte DOWN
|
||||
!byte WAIT ,2
|
||||
!byte LEFT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
; A D
|
||||
; LO E
|
||||
; v---
|
||||
; ITCH
|
||||
; ----
|
||||
; BU
|
||||
; L
|
||||
!byte NEXT
|
||||
!byte SHOW ,<sHelpHeader2,>sHelpHeader2
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte LOAD ,1,4
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,2
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,3
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,0
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,1
|
||||
!byte NEXT
|
||||
!byte LOAD ,2,1
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,2
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,1
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,0
|
||||
!byte NEXT
|
||||
!byte LOAD ,3,6
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,3
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,1
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,2
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,0
|
||||
!byte NEXT
|
||||
!byte LOAD ,4,11
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,1
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,3
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,0
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,4
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,2
|
||||
!byte NEXT
|
||||
!byte LOAD ,5,3
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,0
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,1
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,2
|
||||
!byte NEXT
|
||||
!byte EXIT
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; RunDemo
|
||||
; run self-running demo until keypress or completion
|
||||
|
@ -143,189 +312,3 @@ GetNextDemoByte
|
|||
bne +
|
||||
inc GetNextDemoByte+2
|
||||
+ rts
|
||||
|
||||
DemoDispatchLo
|
||||
!byte <DemoOnEXIT
|
||||
!byte <DemoOnLOAD
|
||||
!byte <DemoOnSHOW
|
||||
!byte <DemoOnHIDE
|
||||
!byte <DemoOnLEFT
|
||||
!byte <DemoOnRIGHT
|
||||
!byte <DemoOnUP
|
||||
!byte <DemoOnDOWN
|
||||
!byte <DemoOnWAIT
|
||||
!byte <DemoOnNEXT
|
||||
!byte <DemoOnTYPE
|
||||
DemoDispatchHi
|
||||
!byte >DemoOnEXIT
|
||||
!byte >DemoOnLOAD
|
||||
!byte >DemoOnSHOW
|
||||
!byte >DemoOnHIDE
|
||||
!byte >DemoOnLEFT
|
||||
!byte >DemoOnRIGHT
|
||||
!byte >DemoOnUP
|
||||
!byte >DemoOnDOWN
|
||||
!byte >DemoOnWAIT
|
||||
!byte >DemoOnNEXT
|
||||
!byte >DemoOnTYPE
|
||||
|
||||
; opcodes
|
||||
EXIT = 0
|
||||
LOAD = 1
|
||||
SHOW = 2
|
||||
HIDE = 3
|
||||
LEFT = 4
|
||||
RIGHT = 5
|
||||
UP = 6
|
||||
DOWN = 7
|
||||
WAIT = 8
|
||||
NEXT = 9
|
||||
TYPE = 10
|
||||
|
||||
demoPuzzles
|
||||
!raw "AOCD,LTUE,IBLH|ABLE,ITCH,LOUD|...HIDDEN IN THIS PUZZLE",$0A
|
||||
!raw "WEFP,TLTO,DAOY,FICS|DEFY,FLOP,TACO,WITS,FITS|YOU CAN ALSO TYPE LETTERS",$0A
|
||||
!raw "AYCWT,CRMIL,GDOLE|ADMIT,CYCLE,GROWL|PLAY 12 DIFFERENT SIZES",$0A
|
||||
!raw "EAIIEO,VOJXCS,BIOAOR,HLBDIK|BABIES,ELIXIR,HIJACK,VOODOO,HOODOO|UNCOMMON LETTERS CAN LIGHT THE WAY",$0A
|
||||
!raw "SALATST,RHHRUCD,TXRNDRS,LEU AEE,E O Y|EXHAUST,LAUNDRY,RELATES,SHORTED,TERRACE,RELATED,TAUNTED,TERNARY|LETTERS CAN BE REUSED",$0A
|
||||
!raw "PELTEOT,LIRFICS,M TL RN|MILLION,PERFECT,LETTERS|I HOPE YOU ENJOY",$0A
|
||||
!raw "["
|
||||
|
||||
sDemo
|
||||
!byte 6
|
||||
!raw "DEMO-0"
|
||||
|
||||
sDemoIntro
|
||||
!byte 20
|
||||
!raw "THERE ARE 3 WORDS..."
|
||||
|
||||
DemoCode
|
||||
!byte WAIT ,20
|
||||
!byte HIDE
|
||||
!byte LOAD ,0,0
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
; A C
|
||||
; --v-
|
||||
; LOUD
|
||||
; ----
|
||||
; ITLE
|
||||
; B H
|
||||
!byte SHOW ,<sHelpHeader1,>sHelpHeader1
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte LEFT
|
||||
!byte WAIT ,2
|
||||
!byte LEFT
|
||||
!byte WAIT ,2
|
||||
!byte DOWN
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte RIGHT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
; OC
|
||||
; TUD
|
||||
; ---v
|
||||
; ABLE
|
||||
; ----
|
||||
; L H
|
||||
; I
|
||||
!byte WAIT ,30
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte LEFT
|
||||
!byte DOWN
|
||||
!byte WAIT ,2
|
||||
!byte DOWN
|
||||
!byte WAIT ,2
|
||||
!byte LEFT
|
||||
!byte WAIT ,2
|
||||
!byte DOWN
|
||||
!byte WAIT ,2
|
||||
!byte LEFT
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
!byte WAIT ,2
|
||||
!byte UP
|
||||
; A D
|
||||
; LO E
|
||||
; v---
|
||||
; ITCH
|
||||
; ----
|
||||
; BU
|
||||
; L
|
||||
!byte NEXT
|
||||
!byte SHOW ,<sHelpHeader2,>sHelpHeader2
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte LOAD ,1,4
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,2
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,3
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,0
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,1
|
||||
!byte NEXT
|
||||
!byte LOAD ,2,1
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,2
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,1
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,0
|
||||
!byte NEXT
|
||||
!byte LOAD ,3,6
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,3
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,1
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,2
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,0
|
||||
!byte NEXT
|
||||
!byte LOAD ,4,11
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,1
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,3
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,0
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,4
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,2
|
||||
!byte NEXT
|
||||
!byte LOAD ,5,3
|
||||
!byte WAIT ,30
|
||||
!byte HIDE
|
||||
!byte TYPE ,0
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,1
|
||||
!byte WAIT ,20
|
||||
!byte TYPE ,2
|
||||
!byte NEXT
|
||||
!byte EXIT
|
||||
|
|
|
@ -37,25 +37,3 @@ DrawHelpText
|
|||
+PRINT_AT sHelpQuit, 19, 0
|
||||
bit GFXMODE
|
||||
rts
|
||||
|
||||
sHelpHeader1
|
||||
!byte 26
|
||||
!raw "MOVE COLUMNS TO FORM WORDS"
|
||||
sHelpHeader2
|
||||
!byte 26
|
||||
!raw "USE ALL LETTERS TO ADVANCE"
|
||||
sHelpLeftRight
|
||||
!byte 40
|
||||
!raw "LEFT/RIGHT ARROWS..........SELECT COLUMN"
|
||||
sHelpUpDown
|
||||
!byte 40
|
||||
!raw "UP/DOWN ARROWS...............MOVE COLUMN"
|
||||
sHelpLetters
|
||||
!byte 40
|
||||
!raw "A-Z.......................MOVE TO LETTER"
|
||||
sHelpRestart
|
||||
!byte 40
|
||||
!raw "CTRL-R....................RESTART PUZZLE"
|
||||
sHelpQuit
|
||||
!byte 40
|
||||
!raw "ESC............................MAIN MENU"
|
||||
|
|
|
@ -8,6 +8,41 @@
|
|||
; - MaybeShowInterstitial
|
||||
;
|
||||
|
||||
progressStringsLo
|
||||
!byte <sProgress10
|
||||
!byte <sProgress20
|
||||
!byte <sProgress30
|
||||
!byte <sProgress40
|
||||
!byte <sProgress50
|
||||
!byte <sProgress60
|
||||
!byte <sProgress70
|
||||
!byte <sProgress80
|
||||
!byte <sProgress90
|
||||
!byte <sProgress100
|
||||
progressStringsHi
|
||||
!byte >sProgress10
|
||||
!byte >sProgress20
|
||||
!byte >sProgress30
|
||||
!byte >sProgress40
|
||||
!byte >sProgress50
|
||||
!byte >sProgress60
|
||||
!byte >sProgress70
|
||||
!byte >sProgress80
|
||||
!byte >sProgress90
|
||||
!byte >sProgress100
|
||||
|
||||
progressHTABs
|
||||
!byte 7
|
||||
!byte 8
|
||||
!byte 8
|
||||
!byte 8
|
||||
!byte 7
|
||||
!byte 2
|
||||
!byte 9
|
||||
!byte 7
|
||||
!byte 6
|
||||
!byte 4
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; MaybeShowInterstitial
|
||||
; display interstitial progress animation after every 10 completed puzzles
|
||||
|
@ -80,72 +115,3 @@ ShowInterstitialWorldComplete
|
|||
+LDADDR sOneSpace
|
||||
jsr HeavySilkReveal
|
||||
+ jmp Home
|
||||
|
||||
progressStringsLo
|
||||
!byte <sProgress10
|
||||
!byte <sProgress20
|
||||
!byte <sProgress30
|
||||
!byte <sProgress40
|
||||
!byte <sProgress50
|
||||
!byte <sProgress60
|
||||
!byte <sProgress70
|
||||
!byte <sProgress80
|
||||
!byte <sProgress90
|
||||
!byte <sProgress100
|
||||
progressStringsHi
|
||||
!byte >sProgress10
|
||||
!byte >sProgress20
|
||||
!byte >sProgress30
|
||||
!byte >sProgress40
|
||||
!byte >sProgress50
|
||||
!byte >sProgress60
|
||||
!byte >sProgress70
|
||||
!byte >sProgress80
|
||||
!byte >sProgress90
|
||||
!byte >sProgress100
|
||||
|
||||
progressHTABs
|
||||
!byte 7
|
||||
!byte 8
|
||||
!byte 8
|
||||
!byte 8
|
||||
!byte 7
|
||||
!byte 2
|
||||
!byte 9
|
||||
!byte 7
|
||||
!byte 6
|
||||
!byte 4
|
||||
|
||||
sProgress10
|
||||
!byte 25
|
||||
!raw "10% COMPLETE! KEEP IT UP!"
|
||||
sProgress20
|
||||
!byte 24
|
||||
!raw "20% COMPLETE! WAY TO GO!"
|
||||
sProgress30
|
||||
!byte 24
|
||||
!raw "30% COMPLETE! FANTASTIC!"
|
||||
sProgress40
|
||||
!byte 24
|
||||
!raw "40% COMPLETE! EXCELLENT!"
|
||||
sProgress50
|
||||
!byte 26
|
||||
!raw "WHOA, WE'RE HALFWAY THERE!"
|
||||
sProgress60
|
||||
!byte 36
|
||||
!raw "60% OF THE TIME, IT WORKS EVERY TIME"
|
||||
sProgress70
|
||||
!byte 22
|
||||
!raw "70% COMPLETE! AMAZING!"
|
||||
sProgress80
|
||||
!byte 25
|
||||
!raw "80% COMPLETE! PHENOMENAL!"
|
||||
sProgress90
|
||||
!byte 28
|
||||
!raw "90% COMPLETE! INCONCEIVABLE!"
|
||||
sProgress100
|
||||
!byte 31
|
||||
!raw "100% COMPLETE! CONGRATULATIONS!"
|
||||
sOneSpace
|
||||
!byte 1
|
||||
!raw " "
|
||||
|
|
|
@ -67,25 +67,21 @@ MainMenuEventLoop
|
|||
bcc +
|
||||
jsr DrawMainMenuTitle
|
||||
+ jsr DrawMainMenuText
|
||||
|
||||
bit CLEARKBD
|
||||
|
||||
LoopMusic
|
||||
-
|
||||
+LDADDR kMainMenuKeys
|
||||
+ST16 $EE
|
||||
+LDADDR MainMenuMusic
|
||||
jsr PlaySound
|
||||
bpl LoopMusic ; music played to completion, so start over
|
||||
bpl - ; music played to completion, no keypress, so start over
|
||||
bit CLEARKBD
|
||||
+ sta gLastKeyPressed
|
||||
sta gLastKeyPressed
|
||||
ldx #0
|
||||
- ldy kMainMenuKeys, x
|
||||
cpy gLastKeyPressed
|
||||
beq +
|
||||
inx
|
||||
bne -
|
||||
; /!\ execution never reaches here
|
||||
brk
|
||||
+ lda kMainMenuKeyHandlersLo, x
|
||||
sta @j+1
|
||||
lda kMainMenuKeyHandlersHi, x
|
||||
|
@ -163,34 +159,3 @@ DrawMainMenuText
|
|||
+PRINT_AT sMainMenuQuit, 19, 10
|
||||
+PRINT_AT sMainMenuDisclaimer, 23, 0
|
||||
rts
|
||||
|
||||
sAsterisk
|
||||
!byte 1
|
||||
!byte "*"
|
||||
sVersion
|
||||
!byte 4
|
||||
!raw "V0.4"
|
||||
sMainMenuPlay
|
||||
!byte 20
|
||||
!raw "RETURN.....PLAY GAME"
|
||||
sMainMenuSound
|
||||
!byte 18
|
||||
!raw " S.....SOUND ("
|
||||
sMainMenuSoundOn
|
||||
!byte 4
|
||||
!raw "ON) "
|
||||
sMainMenuSoundOff
|
||||
!byte 4
|
||||
!raw "OFF)"
|
||||
sMainMenuAbout
|
||||
!byte 18
|
||||
!raw " C.....CREDITS"
|
||||
sMainMenuDemo
|
||||
!byte 15
|
||||
!raw " D.....DEMO"
|
||||
sMainMenuQuit
|
||||
!byte 15
|
||||
!raw " Q.....QUIT"
|
||||
sMainMenuDisclaimer
|
||||
!byte 40
|
||||
!raw "* NOT GUARANTEED, ACTUAL COUNT MAY VARY."
|
||||
|
|
|
@ -23,12 +23,12 @@ gSelectedLogicalColumn
|
|||
gLastKeyPressed
|
||||
!byte 0
|
||||
|
||||
kWorldLeftMargins
|
||||
kWorldLeftMargins ; 12 bytes, one for each world
|
||||
!byte 15,13,12,10
|
||||
!byte 15,13,12,10
|
||||
!byte 15,13,12,10
|
||||
|
||||
kWorldRightMargins
|
||||
kWorldRightMargins ; 12 bytes, one for each world
|
||||
!byte 27,28,30,31
|
||||
!byte 27,28,30,31
|
||||
!byte 27,28,30,31
|
||||
|
@ -328,7 +328,7 @@ DrawPuzzleChrome
|
|||
sta HTAB
|
||||
+LD16 $FE
|
||||
jsr DrawHeavySilkString
|
||||
+LDADDR kDash
|
||||
+LDADDR sDash
|
||||
jsr DrawHeavySilkString
|
||||
ldx gPuzzleID
|
||||
inx ; visible puzzle number is 1-based
|
||||
|
@ -465,7 +465,3 @@ DrawOneSelectionIndicator
|
|||
dex
|
||||
bne -
|
||||
rts
|
||||
|
||||
sLevel
|
||||
!byte 5
|
||||
!raw "LEVEL"
|
||||
|
|
|
@ -37,7 +37,7 @@ HeavySilkReveal
|
|||
clc
|
||||
adc minHTAB
|
||||
sta maxHTAB
|
||||
@revealStartingChar=*+1
|
||||
RevealStartingChar=*+1
|
||||
lda #$41 ; 'A'
|
||||
@outerloop
|
||||
sta randomchar
|
||||
|
@ -102,7 +102,7 @@ HeavySilkReveal
|
|||
lda randomchar
|
||||
cmp #$20
|
||||
beq @exit
|
||||
sta @revealStartingChar
|
||||
sta RevealStartingChar
|
||||
lda #$20
|
||||
bne @outerloop ; always branches
|
||||
@exit rts
|
||||
|
|
|
@ -22,7 +22,7 @@ selectedworld = $F3
|
|||
SelectWorld
|
||||
jsr Home
|
||||
jsr UpdateWorldPercents
|
||||
+LDADDR worlddescriptions
|
||||
+LDADDR kWorldDescriptions
|
||||
+ST16 $FE
|
||||
lda #0
|
||||
sta counter
|
||||
|
@ -49,10 +49,10 @@ SelectWorld
|
|||
inc $FF
|
||||
+ inc counter
|
||||
lda counter
|
||||
cmp #12 ; ignore world 13 (that's for self-running demo)
|
||||
cmp #12
|
||||
bcc -
|
||||
|
||||
+PRINT_AT worldhelp, 23, 0
|
||||
+PRINT_AT sWorldHelp, 23, 0
|
||||
|
||||
bit CLEARKBD
|
||||
@selectWorldLoop
|
||||
|
@ -132,7 +132,7 @@ DrawNewlySelectedWorld
|
|||
GetWorldDescription
|
||||
; in: X = 0-based world ID
|
||||
; out: $FE/$FF points to world description buffer
|
||||
+LDADDR worlddescriptions
|
||||
+LDADDR kWorldDescriptions
|
||||
+ST16 $FE
|
||||
jmp +
|
||||
- lda $FE
|
||||
|
@ -147,11 +147,11 @@ GetWorldDescription
|
|||
|
||||
worldindex=$FB
|
||||
UpdateWorldPercents
|
||||
+LDADDR worlddescriptions
|
||||
+LDADDR kWorldDescriptions
|
||||
+ST16 $FC
|
||||
lda #0
|
||||
sta worldindex
|
||||
-- jsr FindPackedProgressAddr
|
||||
-- jsr FindPackedProgress
|
||||
ldy #$0E
|
||||
lda ($FE), y
|
||||
tax
|
||||
|
@ -175,51 +175,3 @@ UpdateWorldPercents
|
|||
cmp #12
|
||||
bne --
|
||||
rts
|
||||
|
||||
worlddescriptions
|
||||
!raw " 4X3 EASY 0% "
|
||||
!raw " 5X3 BASIC 0% "
|
||||
!raw " 6X3 SIMPLE 0% "
|
||||
!raw " 7X3 RELAXED 0% "
|
||||
!raw " 4X4 FAIR 0% "
|
||||
!raw " 5X4 QUICK 0% "
|
||||
!raw " 6X4 MEDIUM 0% "
|
||||
!raw " 7X4 AVERAGE 0% "
|
||||
!raw " 4X5 HARD 0% "
|
||||
!raw " 5X5 TOUGH 0% "
|
||||
!raw " 6X5 TRICKY 0% "
|
||||
!raw " 7X5 COMPLEX 0% "
|
||||
|
||||
kWorldShortNames
|
||||
!byte 3
|
||||
!raw "4X3"
|
||||
!byte 3
|
||||
!raw "5X3"
|
||||
!byte 3
|
||||
!raw "6X3"
|
||||
!byte 3
|
||||
!raw "7X3"
|
||||
!byte 3
|
||||
!raw "4X4"
|
||||
!byte 3
|
||||
!raw "5X4"
|
||||
!byte 3
|
||||
!raw "6X4"
|
||||
!byte 3
|
||||
!raw "7X4"
|
||||
!byte 3
|
||||
!raw "4X5"
|
||||
!byte 3
|
||||
!raw "5X5"
|
||||
!byte 3
|
||||
!raw "6X5"
|
||||
!byte 3
|
||||
!raw "7X5"
|
||||
|
||||
kDash
|
||||
!byte 1
|
||||
!raw "-"
|
||||
|
||||
worldhelp
|
||||
!byte 40
|
||||
!raw "ARROWS TO SELECT, RETURN TO PLAY, OR ESC"
|
||||
|
|
179
src/ui.strings.a
Normal file
179
src/ui.strings.a
Normal file
|
@ -0,0 +1,179 @@
|
|||
;license:MIT
|
||||
;(c) 2020 by 4am
|
||||
;
|
||||
|
||||
sTitleLine1
|
||||
!byte 7
|
||||
!raw "MILLION"
|
||||
sTitleLine2
|
||||
!byte 7
|
||||
!raw "PERFECT"
|
||||
sTitleLine3
|
||||
!byte 7
|
||||
!raw "LETTERS"
|
||||
sVersion
|
||||
!byte 4
|
||||
!raw "V0.5"
|
||||
sOneSpace
|
||||
!byte 1
|
||||
!raw " "
|
||||
sAsterisk
|
||||
!byte 1
|
||||
!raw "*"
|
||||
sDash
|
||||
!byte 1
|
||||
!raw "-"
|
||||
sMainMenuPlay
|
||||
!byte 20
|
||||
!raw "RETURN.....PLAY GAME"
|
||||
sMainMenuSound
|
||||
!byte 18
|
||||
!raw " S.....SOUND ("
|
||||
sMainMenuSoundOn
|
||||
!byte 4
|
||||
!raw "ON) "
|
||||
sMainMenuSoundOff
|
||||
!byte 4
|
||||
!raw "OFF)"
|
||||
sMainMenuAbout
|
||||
!byte 18
|
||||
!raw " C.....CREDITS"
|
||||
sMainMenuDemo
|
||||
!byte 15
|
||||
!raw " D.....DEMO"
|
||||
sMainMenuQuit
|
||||
!byte 15
|
||||
!raw " Q.....QUIT"
|
||||
sMainMenuDisclaimer
|
||||
!byte 40
|
||||
!raw "* NOT GUARANTEED, ACTUAL COUNT MAY VARY."
|
||||
kWorldDescriptions ; each 20 characters, no length prefix
|
||||
!raw " 4X3 EASY 0% "
|
||||
!raw " 5X3 BASIC 0% "
|
||||
!raw " 6X3 SIMPLE 0% "
|
||||
!raw " 7X3 RELAXED 0% "
|
||||
!raw " 4X4 FAIR 0% "
|
||||
!raw " 5X4 QUICK 0% "
|
||||
!raw " 6X4 MEDIUM 0% "
|
||||
!raw " 7X4 AVERAGE 0% "
|
||||
!raw " 4X5 HARD 0% "
|
||||
!raw " 5X5 TOUGH 0% "
|
||||
!raw " 6X5 TRICKY 0% "
|
||||
!raw " 7X5 COMPLEX 0% "
|
||||
kWorldShortNames ; each 4 characters including length prefix
|
||||
!byte 3
|
||||
!raw "4X3"
|
||||
!byte 3
|
||||
!raw "5X3"
|
||||
!byte 3
|
||||
!raw "6X3"
|
||||
!byte 3
|
||||
!raw "7X3"
|
||||
!byte 3
|
||||
!raw "4X4"
|
||||
!byte 3
|
||||
!raw "5X4"
|
||||
!byte 3
|
||||
!raw "6X4"
|
||||
!byte 3
|
||||
!raw "7X4"
|
||||
!byte 3
|
||||
!raw "4X5"
|
||||
!byte 3
|
||||
!raw "5X5"
|
||||
!byte 3
|
||||
!raw "6X5"
|
||||
!byte 3
|
||||
!raw "7X5"
|
||||
sWorldHelp
|
||||
!byte 40
|
||||
!raw "ARROWS TO SELECT, RETURN TO PLAY, OR ESC"
|
||||
sAboutWritten
|
||||
!byte 21
|
||||
!raw "COPYRIGHT 2020 BY 4AM"
|
||||
sAboutTested
|
||||
!byte 21
|
||||
!raw "PLAYTESTED BY OPTION8"
|
||||
sAboutTested2
|
||||
!byte 10
|
||||
!raw "AND BESLEY"
|
||||
sAboutMusic
|
||||
!byte 22
|
||||
!raw "MUSIC BY GABRIEL FAURE"
|
||||
sAboutElectricDuet
|
||||
!byte 28
|
||||
!raw "SOUND ROUTINES BY PAUL LUTUS"
|
||||
sAboutMockingDuet
|
||||
!byte 35
|
||||
!raw "MOCKINGBOARD ROUTINES BY CYBERNESTO"
|
||||
sAboutInspired
|
||||
!byte 21
|
||||
!raw "INSPIRED BY TYPESHIFT"
|
||||
demoPuzzles ; same format as world files on disk
|
||||
!raw "AOCD,LTUE,IBLH|ABLE,ITCH,LOUD|...HIDDEN IN THIS PUZZLE",$0A
|
||||
!raw "WEFP,TLTO,DAOY,FICS|DEFY,FLOP,TACO,WITS,FITS|YOU CAN ALSO TYPE LETTERS",$0A
|
||||
!raw "AYCWT,CRMIL,GDOLE|ADMIT,CYCLE,GROWL|PLAY 12 DIFFERENT SIZES",$0A
|
||||
!raw "EAIIEO,VOJXCS,BIOAOR,HLBDIK|BABIES,ELIXIR,HIJACK,VOODOO,HOODOO|UNCOMMON LETTERS CAN LIGHT THE WAY",$0A
|
||||
!raw "SALATST,RHHRUCD,TXRNDRS,LEU AEE,E O Y|EXHAUST,LAUNDRY,RELATES,SHORTED,TERRACE,RELATED,TAUNTED,TERNARY|LETTERS CAN BE REUSED",$0A
|
||||
!raw "PELTEOT,LIRFICS,M TL RN|MILLION,PERFECT,LETTERS|I HOPE YOU ENJOY",$0A
|
||||
!raw "["
|
||||
sDemo
|
||||
!byte 6
|
||||
!raw "DEMO-0"
|
||||
sDemoIntro
|
||||
!byte 20
|
||||
!raw "THERE ARE 3 WORDS..."
|
||||
sLevel
|
||||
!byte 5
|
||||
!raw "LEVEL"
|
||||
sHelpHeader1
|
||||
!byte 26
|
||||
!raw "MOVE COLUMNS TO FORM WORDS"
|
||||
sHelpHeader2
|
||||
!byte 26
|
||||
!raw "USE ALL LETTERS TO ADVANCE"
|
||||
sHelpLeftRight
|
||||
!byte 40
|
||||
!raw "LEFT/RIGHT ARROWS..........SELECT COLUMN"
|
||||
sHelpUpDown
|
||||
!byte 40
|
||||
!raw "UP/DOWN ARROWS...............MOVE COLUMN"
|
||||
sHelpLetters
|
||||
!byte 40
|
||||
!raw "A-Z.......................MOVE TO LETTER"
|
||||
sHelpRestart
|
||||
!byte 40
|
||||
!raw "CTRL-R....................RESTART PUZZLE"
|
||||
sHelpQuit
|
||||
!byte 40
|
||||
!raw "ESC............................MAIN MENU"
|
||||
sProgress10
|
||||
!byte 25
|
||||
!raw "10% COMPLETE! KEEP IT UP!"
|
||||
sProgress20
|
||||
!byte 24
|
||||
!raw "20% COMPLETE! WAY TO GO!"
|
||||
sProgress30
|
||||
!byte 24
|
||||
!raw "30% COMPLETE! FANTASTIC!"
|
||||
sProgress40
|
||||
!byte 24
|
||||
!raw "40% COMPLETE! EXCELLENT!"
|
||||
sProgress50
|
||||
!byte 26
|
||||
!raw "WHOA, WE'RE HALFWAY THERE!"
|
||||
sProgress60
|
||||
!byte 36
|
||||
!raw "60% OF THE TIME, IT WORKS EVERY TIME"
|
||||
sProgress70
|
||||
!byte 22
|
||||
!raw "70% COMPLETE! AMAZING!"
|
||||
sProgress80
|
||||
!byte 25
|
||||
!raw "80% COMPLETE! PHENOMENAL!"
|
||||
sProgress90
|
||||
!byte 28
|
||||
!raw "90% COMPLETE! INCONCEIVABLE!"
|
||||
sProgress100
|
||||
!byte 31
|
||||
!raw "100% COMPLETE! CONGRATULATIONS!"
|
|
@ -32,6 +32,7 @@ TitlePage
|
|||
lsr
|
||||
clc
|
||||
adc #$41
|
||||
sta RevealStartingChar
|
||||
sta initialtitlechar
|
||||
|
||||
@outerloop
|
||||
|
@ -141,13 +142,3 @@ TitlePage
|
|||
cpy #$0A
|
||||
bne --
|
||||
beq @exit ; always branches
|
||||
|
||||
sTitleLine1
|
||||
!byte 7
|
||||
!raw "MILLION"
|
||||
sTitleLine2
|
||||
!byte 7
|
||||
!raw "PERFECT"
|
||||
sTitleLine3
|
||||
!byte 7
|
||||
!raw "LETTERS"
|
||||
|
|
|
@ -1,130 +0,0 @@
|
|||
OldTitlePage
|
||||
jsr Home
|
||||
;TODO add logical-width parameter
|
||||
jsr DrawThinLines
|
||||
|
||||
lda #3
|
||||
sta row
|
||||
+LDADDR title
|
||||
+ST16 $FE
|
||||
-- lda #6
|
||||
sta column
|
||||
- ldy column
|
||||
lda ($FE), y
|
||||
ldx row
|
||||
jsr DrawLargeCharacter
|
||||
dec column
|
||||
bpl -
|
||||
lda $FE
|
||||
clc
|
||||
adc #7
|
||||
sta $FE
|
||||
bcc +
|
||||
inc $FF
|
||||
+ inc row
|
||||
lda row
|
||||
cmp #6
|
||||
bne --
|
||||
|
||||
bit GFXMODE
|
||||
|
||||
lda #$00
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
|
||||
ldy #$00
|
||||
jsr ScrollUp
|
||||
ldy #$02
|
||||
jsr ScrollDown
|
||||
iny
|
||||
jsr ScrollUp
|
||||
ldy #$05
|
||||
jsr ScrollDown
|
||||
iny
|
||||
jsr ScrollUp
|
||||
|
||||
@loop
|
||||
+RTS_IF_KEY
|
||||
lda #$00
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
|
||||
ldy #$00
|
||||
jsr ScrollDown
|
||||
jsr ScrollDown
|
||||
iny
|
||||
jsr ScrollDown
|
||||
iny
|
||||
jsr ScrollUp
|
||||
iny
|
||||
jsr ScrollDown
|
||||
iny
|
||||
jsr ScrollDown
|
||||
iny
|
||||
jsr ScrollUp
|
||||
iny
|
||||
jsr ScrollDown
|
||||
jsr ScrollDown
|
||||
|
||||
+RTS_IF_KEY
|
||||
lda #$00
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
|
||||
ldy #$00
|
||||
jsr ScrollUp
|
||||
ldy #$02
|
||||
jsr ScrollUp
|
||||
iny
|
||||
jsr ScrollDown
|
||||
ldy #$05
|
||||
jsr ScrollUp
|
||||
iny
|
||||
jsr ScrollUp
|
||||
|
||||
+RTS_IF_KEY
|
||||
lda #$00
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
jsr ROM_WAIT
|
||||
+RTS_IF_KEY
|
||||
rts
|
||||
!if 0 {
|
||||
ldy #$00
|
||||
jsr ScrollUp
|
||||
iny
|
||||
jsr ScrollUp
|
||||
iny
|
||||
jsr ScrollDown
|
||||
jsr ScrollDown
|
||||
iny
|
||||
jsr ScrollUp
|
||||
jsr ScrollUp
|
||||
iny
|
||||
jsr ScrollUp
|
||||
iny
|
||||
jsr ScrollDown
|
||||
jsr ScrollDown
|
||||
iny
|
||||
jsr ScrollUp
|
||||
|
||||
jmp @loop
|
||||
}
|
||||
title
|
||||
!raw "PELTEOT"
|
||||
!raw "LIRFICS"
|
||||
!raw "M TL RN"
|
Loading…
Reference in New Issue
Block a user