diff --git a/src/glue.sound.a b/src/glue.sound.a index 9d9a9f9..84f33dd 100644 --- a/src/glue.sound.a +++ b/src/glue.sound.a @@ -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 diff --git a/src/million.a b/src/million.a index 9384a86..702af64 100644 --- a/src/million.a +++ b/src/million.a @@ -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 diff --git a/src/storage.a b/src/storage.a index d00b76f..7da6432 100644 --- a/src/storage.a +++ b/src/storage.a @@ -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 diff --git a/src/ui.about.a b/src/ui.about.a index 7acb139..913f73c 100644 --- a/src/ui.about.a +++ b/src/ui.about.a @@ -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 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 + !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 + !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 - -; 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 - !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 - !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 diff --git a/src/ui.help.a b/src/ui.help.a index 30fcf99..88ed81a 100644 --- a/src/ui.help.a +++ b/src/ui.help.a @@ -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" diff --git a/src/ui.interstitial.a b/src/ui.interstitial.a index f03a076..3ca0f39 100644 --- a/src/ui.interstitial.a +++ b/src/ui.interstitial.a @@ -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 + +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 - -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 " " diff --git a/src/ui.main.menu.a b/src/ui.main.menu.a index 9a801a9..6070089 100644 --- a/src/ui.main.menu.a +++ b/src/ui.main.menu.a @@ -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." diff --git a/src/ui.play.a b/src/ui.play.a index f6f558a..ecbd838 100644 --- a/src/ui.play.a +++ b/src/ui.play.a @@ -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" diff --git a/src/ui.reveal.a b/src/ui.reveal.a index f4668cf..5d84531 100644 --- a/src/ui.reveal.a +++ b/src/ui.reveal.a @@ -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 diff --git a/src/ui.select.world.a b/src/ui.select.world.a index 17d4b92..99e4bd5 100644 --- a/src/ui.select.world.a +++ b/src/ui.select.world.a @@ -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" diff --git a/src/ui.strings.a b/src/ui.strings.a new file mode 100644 index 0000000..1b3f9d9 --- /dev/null +++ b/src/ui.strings.a @@ -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!" diff --git a/src/ui.title.a b/src/ui.title.a index 354dc5b..18f97fd 100644 --- a/src/ui.title.a +++ b/src/ui.title.a @@ -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" diff --git a/src/ui.title.old.a b/src/ui.title.old.a deleted file mode 100644 index 11c3178..0000000 --- a/src/ui.title.old.a +++ /dev/null @@ -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"