parse and display level messages from puzzle files

This commit is contained in:
4am 2020-07-10 12:43:36 -04:00
parent 7cdf223a9f
commit 6e7ba299b2
7 changed files with 85 additions and 40 deletions

View File

@ -15,7 +15,7 @@ ROSW,DIEM,CHAH|CHEW,DISH,ROAM
ECVS,GNIE,AADD|ACID,ENDS,GAVE
UAIY,CNTO,TLAL|CLAY,TAIL,UNTO
ERKE,HIIT,DDAG|DRAG,EDIT,HIKE
UIIK,KSEP,WHCR|KICK,USER,WHIP,WICK
UIIK,KSEP,WHCR|KICK,USER,WHIP,WICK|LETTERS CAN BE REUSED
IECF,RHET,WTAH|ITCH,REEF,WHAT,WHET
AADM,CWMS,SDIE|ADDS,CAME,SWIM,SAME
MOUG,SRAH,BUCL|BRAG,MUCH,SOUL,SUCH
@ -32,7 +32,7 @@ ERWS,FCHO,ROEE|ECHO,FREE,ROWS,FOES
GEKF,DAIE,MRAP|DEAF,GRIP,MAKE,DRIP
WNRF,KUGS,SIOW|KNOW,SURF,WIGS,SNOW
TRCD,EOIT,AMLH|ARCH,EMIT,TOLD,ARID
FAER,PVNP,OLAT|FLAP,OVER,PANT,FLAT,PLAT
FAER,PVNP,OLAT|FLAP,OVER,PANT,FLAT,PLAT|A 3-WORD SOLUTION EXISTS
QUSH,POGZ,SIIE|POSE,QUIZ,SIGH,PUSH,POSH
GITS,EOOY,FASD|EASY,FITS,GOOD,EATS,FOOD
SEIR,OOET,TMUM|OMIT,SEEM,TOUR,SOUR,TOUT
@ -50,7 +50,7 @@ OPRL,BAAT,ZEIO|BAIT,OPAL,ZERO,BEAT,ZEAL
DNIY,SOLP,JURL|DOLL,JURY,SNIP,DULL,SOIL
OAIE,GOZW,PLOL|GLOW,OOZE,PAIL,PLOW,POOL,GAZE
FXST,EUFY,DEIS|DEFY,EXIT,FUSS,DEFT,DUST,FESS
TOAK,BERE,ABL |ABLE,BEAK,TORE,TEAK,TOAK
TOAK,BERE,ABL |ABLE,BEAK,TORE,TEAK,TOAK|DON'T PANIC!
TAID,SKPP, E|SAID,SKIP,TAPE,SKID
SISK,TADN,L GY|LADY,SIGN,TASK,TIDY
TLOT,MUBP,S SA|MUST,SLOP,TUBA,SLOT

View File

@ -15,7 +15,7 @@ VEIFM,KUAAL,QNNLE|KNIFE,QUALM,VENAL
IUIAH,SHPLY,WMGCR|IMPLY,SUGAR,WHICH
TMBAD,GUELR,SAARE|GUARD,SMEAR,TABLE
GORRP,SHANL,FEIAG|FERAL,GOING,SHARP
THDED,FEIGH,CUNKY|CEDED,FUNKY,THIGH,TUNED
THDED,FEIGH,CUNKY|CEDED,FUNKY,THIGH,TUNED|LETTERS CAN BE REUSED
LOOTT,SUEEE,QWBBY|LOBBY,QUOTE,SWEET,SOOTY
AUSLW,BEGEE,RRNON|ARSON,BUGLE,RENEW,ARGON
SAAMR,BRKAN,UWBEP|BAKER,SWAMP,URBAN,SABER
@ -31,7 +31,7 @@ SGASD,TREOO,ILLAH|IGLOO,SLASH,TREAD,TRASH
FPFNT,HELTE,SAESY|FALSE,HEFTY,SPENT,SALTY
TUROR,HOING,VYTSE|HORSE,TUTOR,VYING,TYING
WOETT,PBSSH,OIDIE|OBESE,POSIT,WIDTH,POSSE
DISLY,CHAET,UPIRD|CHILD,DIARY,UPSET,CHART,CHARD
DISLY,CHAET,UPIRD|CHILD,DIARY,UPSET,CHART,CHARD|A 3-WORD SOLUTION EXISTS
SOLUY,PTRSA,TIPKT|POLKA,STRUT,TIPSY,SILKY,TOPSY
DOLAD,HRUNY,REOWN|DROWN,HOUND,RELAY,DELAY,ROUND
SAAER,LRUKH,BNYSE|BRUSH,LAYER,SNAKE,BRAKE,BRASH
@ -62,7 +62,7 @@ LUATS,GIILH,TEFCT|GUILT,LIFTS,TEACH,GIFTS,TEATS,TUFTS,LEACH,LEFTS
GPONP,SRRGS,LAIUE|GROUP,LARGE,SPINS,GAINS,GRINS,SPINE,GROGS,SPRUE,SARGE
COLKS,SDVET,AUOPR|ADOPT,COVER,SULKS,COOKS,COVES,COVET,COOPT,COOPS,SOLES
LASAD,AOREL,MICLE|AISLE,LACED,MORAL,AIRED,LOCAL,MIRED,LASED,MACED,MOREL
AGREC,LRGVE,BOAI |AGREE,BRAVE,LOGIC,AGAVE
AGREC,LRGVE,BOAI |AGREE,BRAVE,LOGIC,AGAVE|DON'T PANIC!
PLOWP,BCECN,SI OE|BLOWN,PIECE,SCOOP,SLOOP
PIPMY,REULP,SLL |PLUMP,REPLY,SILLY,SLUMP
RHNRE,WAASH,SM GF|RANGE,SMASH,WHARF,SHARE

View File

@ -15,7 +15,7 @@ TORCFT,GEVIIN,PHNERL|GOVERN,PENCIL,THRIFT
TOCOOD,UWLNTL,SNEVEY|SOLVED,TWENTY,UNCOOL
PISACE,RERSET,OFFUMY|OFFSET,PIRACY,RESUME
NCSCUC,SOTNFY,REEIIE|NOTIFY,RESCUE,SCENIC
RVYRNG,ARFLSE,CEEIEX|AVERSE,CRYING,REFLEX,REFINE
RVYRNG,ARFLSE,CEEIEX|AVERSE,CRYING,REFLEX,REFINE|LETTERS CAN BE REUSED
MASECL,INUUIT,STNDAO|INSECT,MANUAL,STUDIO,SANDAL
SAMENG,CHTMID,EOIILT|COMMIT,EATING,SHIELD,COMING
UOETUT,LSCFSL,HEAUER|HEATER,LOCUST,USEFUL,LOAFER
@ -31,7 +31,7 @@ PORRLT,TNIOAY,UHOSON|POORLY,THROAT,UNISON,POISON
AISELB,SBKIRT,LPRONY|ABSORB,LIKELY,SPRINT,ABSENT
BAVKEN,OEIGST,RRSIIE|BASKET,ORIGIN,REVISE,RESIST
IAQATE,PTLLIL,SEAUEC|ITALIC,PALATE,SEQUEL,SALUTE
COLAER,DETDIN,FRAYOL|CRAYON,DETAIL,FOLDER,COLDER,DETAIN
COLAER,DETDIN,FRAYOL|CRAYON,DETAIL,FOLDER,COLDER,DETAIN|A 3-WORD SOLUTION EXISTS
AFCVPY,OCLURD,WOFOES|AFFORD,OCCUPY,WOLVES,ACCORD,OCCURS
SQNEAL,UIRAEH,WNUKSD|SQUASH,UNREAL,WINKED,SQUEAL,UNREAD
URANLE,SEGGUG,PININT|PEANUT,SINGLE,URGING,PINING,SENILE
@ -63,7 +63,7 @@ OULSLD,WYELEY,EITDIT|EYELID,OUTSET,WILDLY,EYELET,OUTLET,WILLED
VESULT,INTTVD,GROOEE|GROOVE,INSULT,VETTED,INSOLE,VESTED,VETOED
OINBCS,FEECEE,HUJALK|FEEBLE,HIJACK,OUNCES,FENCES,FINALE,FINALS
COAAEE,DECXLL,SHRIDD|COAXED,DECADE,SHRILL,DECIDE,DECILE,DOCILE
PCTARY,DOETCN,AE IOH|ACTION,DETACH,POETRY,POTION
PCTARY,DOETCN,AE IOH|ACTION,DETACH,POETRY,POTION|DON'T PANIC!
IEARRT,NNNENY,HUVGB |HUNGRY,INVENT,NEARBY,INVERT
SERBNE,FCUABY, TLOP |FELONY,SCRAPE,STUBBY,STROBE
RAYTER,GOPHHM, HGG D|GAGGED,GOPHER,RHYTHM,RAGGED

View File

@ -15,7 +15,7 @@ DEUSFES,UPWARRT,STSFEDD|DESSERT,STUFFED,UPWARDS
ANAVREY,GRGEIND,VIOLETT|ANGERED,GRAVITY,VIOLENT
STECUOT,DIAGDED,FRSEKSM|DISGUST,FREEDOM,STACKED
PMNITOR,IUAGORE,JARPESY|IMAGERY,JANITOR,PURPOSE
OPNQOTN,BOLLAEE,CAERUOR|BALLOON,CONQUER,OPERATE,COLLATE
OPNQOTN,BOLLAEE,CAERUOR|BALLOON,CONQUER,OPERATE,COLLATE|LETTERS CAN BE REUSED
CIPIRAE,ENLLTGL,DAAAING|CAPITAL,DIALING,ENLARGE,CALLING
DPNTEEY,OAPOITT,VERISSD|DENTIST,OPPOSED,VARIETY,DEPOSED
FAERIFY,SHCKAED,TINTLSF|FANTASY,SHERIFF,TICKLED,TACKLED
@ -31,7 +31,7 @@ BESPSNG,MDYIIEL,OUESCAY|BEEPING,MUSICAL,ODYSSEY,MESSING
CKAPBIE,FORGTVR,SHEMIEC|CHAMBER,FORGIVE,SKEPTIC,CHAPTER
WECRYOT,PRRTTEG,DAINHPR|DECRYPT,PRINTER,WARTHOG,PAINTER
SEMATLE,GIPIIDR,RRETNAY|GREATLY,RIPTIDE,SEMINAR,REPTILE
LOACOUG,SPHKEVE,ACOIINT|ACHIEVE,LOOKOUT,SPACING,LOOKING,SOAKING
LOACOUG,SPHKEVE,ACOIINT|ACHIEVE,LOOKOUT,SPACING,LOOKING,SOAKING|A 3-WORD SOLUTION EXISTS
WMUNEES,BRISGLT,SASDKTE|BASSETT,SMUDGES,WRINKLE,BRIDGES,BRISKET
HENGINS,CULMPTG,JAIIHER|CALMING,HEIGHTS,JUNIPER,CALIPER,HANGING
CUIEFDY,RTRBNES,SHMALLD|CHIEFLY,RUMBLED,STRANDS,RUMBLES,SHIELDS
@ -63,7 +63,7 @@ SETIRPY,RMEKING,THORAES|RETIRES,SMOKING,THERAPY,RETRIES,SEEKING,SHORING
SLALIUS,PNIYFRT,IPFDECL|INFLICT,PLAYFUL,SPIDERS,PLAYERS,SLAYERS,SLIDERS
RATBENG,OUCIIAS,VIBMOUL|OATMEAL,RUBBING,VICIOUS,RATIONS,RIBBING,RIBBONS
SAUUDLS,LOGNIRG,JIMPANY|JAGUARS,LIMPING,SOUNDLY,LAUNDRY,SIGNALS,SIGNING
WUITEEL,INCLHAR,NE GI D|INITIAL,NUCLEAR,WEIGHED,NEITHER
WUITEEL,INCLHAR,NE GI D|INITIAL,NUCLEAR,WEIGHED,NEITHER|DON'T PANIC!
IESTDED,HOIRINR,WNHAL G|HOSTING,INHALED,WEIRDER,INHALER
TNOTFLE,GRYWING,ALUF M |ANYTIME,GLOWING,TRUFFLE,GROWING
SAUMAIN,HUSTTUL, RNFED|HARMFUL,HAUNTED,SUSTAIN,HURTFUL

View File

@ -191,6 +191,7 @@ LoadPuzzleFromMemory
@lineLoop
+INCADDR $FE
@addLine
; ($FE) -> characters for 1 line of this puzzle (no prefix)
jsr AddLineToPuzzle
ldx gWorldID
lda kPuzzleWidths, x
@ -199,13 +200,15 @@ LoadPuzzleFromMemory
sta $FE
bcc +
inc $FF
+
ldy #0
+ ldy #0
lda ($FE), y
cmp #$2C ; ,
beq @lineLoop
cmp #$2C ; ','
beq @lineLoop ; if next byte is ',' then there is another line so loop back to parse it
; otherwise the next byte is a delimiter between lines and target words
; (probably '|' but we don't actually check it)
@targetWordLoop
+INCADDR $FE
; ($FE) -> characters for 1 target word of this puzzle (no prefix)
jsr AddTargetWordToPuzzle
ldx gWorldID
lda kPuzzleWidths, x
@ -214,12 +217,31 @@ LoadPuzzleFromMemory
sta $FE
bcc +
inc $FF
+
ldy #0
+ ldy #0
lda ($FE), y
cmp #$2C ; ,
beq @targetWordLoop
rts
cmp #$2C ; ','
beq @targetWordLoop ; if next byte is ',' then there is another target word so loop back to parse it
cmp #$7C ; if next byte is '|' then there is a message, otherwise we're done
bne @exit
+INCADDR $FE
@messageLoop
lda ($FE), y
cmp #$0A
beq @setMessage
cmp #$0D
beq @setMessage
iny
sta @messageBuffer, y
bne @messageLoop
@setMessage
sty @messageBuffer
+LDADDR @messageBuffer
jsr SetNextMessage
@exit rts
@messageBuffer
!byte 40
!raw " "
;------------------------------------------------------------------------------
; HasPuzzleBeenCompleted

View File

@ -9,29 +9,58 @@
; - HideMessage
;
;0123456789012345678901
; press ? for help
;
;0123456789012345678901
;letters can be reused
;
;0123456789012345678901
;3-word solution exists
;
;0123456789012345678901
; don't panic!
;
showingMessage ; [byte][private]
!byte 0 ; 1 = currently showing message, 0 = not
currentMessage ; [private]
!byte 20
!raw "01234567890123456789"
!byte 40
!raw " "
noMessage ; [private]
!byte 20
!raw " "
!byte 40
!raw " "
SetNextMessage
; copies a new message into private buffer
; (does not display the new message on screen)
; in: A/Y points to length-prefixed string (max 20 characters)
; if new message is shorter than max length, it will be centered
; in: A/Y points to length-prefixed string
+ST16 $FE
ldy #0
lda ($FE), y
tay ; Y = string length
- lda ($FE), y
ldy noMessage
- lda noMessage, y
sta currentMessage, y
dey
bpl -
ldy #0
lda ($FE), y ; A = string length
tay
clc
adc #1
lsr
sta $FD
lda currentMessage
lsr
clc
adc $FD
tax
- lda ($FE), y
sta currentMessage, x
dex
dey
bne -
rts
HideMessage
@ -40,7 +69,7 @@ HideMessage
pha
lda showingMessage
beq +
+PRINT_AT noMessage, 7, 10
+PRINT_AT noMessage, 7, 0
lda #0
sta showingMessage
+ pla
@ -50,7 +79,7 @@ ShowMessage
; should really only call once
; will clear message before showing the new one, so there may be a small flicker
jsr HideMessage
+PRINT_AT currentMessage, 7, 10
+PRINT_AT currentMessage, 7, 0
lda #1
sta showingMessage
rts

View File

@ -285,15 +285,9 @@ AnimatePuzzleIntoPlace
iny
@max cpy #$FD ; SMC
bne --
rts
; +LDADDR test_message
; jsr SetNextMessage
; jmp ShowMessage
;
;test_message
; !byte 18
; !raw " PRESS ? FOR HELP"
jmp ShowMessage
;
;------------------------------------------------------------------------------
; DrawPuzzleChrome
; draw all elements on puzzle screen that are not the actual puzzle