diff --git a/buttons.chr b/buttons.chr index 499d249..d9c27da 100644 Binary files a/buttons.chr and b/buttons.chr differ diff --git a/kodiak.chr b/kodiak.chr index 023bd16..05bf0fd 100644 Binary files a/kodiak.chr and b/kodiak.chr differ diff --git a/kodiak.tal b/kodiak.tal index 7a4b6e5..ac69e85 100644 --- a/kodiak.tal +++ b/kodiak.tal @@ -9,7 +9,7 @@ ( * sometimes movement feels stutter-y ) ( * automatically keeping @auto up-to-date is arguably better than recalculating ) -|00 @System [ &vect $2 &expansion $2 &title $2 &metadata $2 &r $2 &g $2 &b $2 ] +|00 @System [ &vect $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 ] |10 @Console [ &vect $2 &r $1 &exec $2 &mode $1 &dead $1 &exit $1 &w $1 ] |20 @Screen [ &vect $2 &w $2 &h $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &px $1 &sprite $1 ] |30 @Audio1 [ &vect $2 &pos $2 &out $1 &dur $2 &pad $1 &adsr $2 &len $2 &addr $2 &vol $1 &pitch $1 ] @@ -62,8 +62,11 @@ &y1 $2 ] ( ending y coord ) @audio [ $1 ( is audio enabled? ) &pos $2 ] ( position in music ) + @about $1 ( is about screen visible? 01 start, ff resume ) |0100 + ( metadata ) + ;metadata .System/metadata DEO2 ( colors: gold, white, red, black ) #bd82 .System/r DEO2 @@ -92,6 +95,21 @@ start-audio reset BRK +@metadata 00 + ( title ) "kodiak 0a + ( details ) "klondike 20 "solitaire 20 "game 0a + ( author ) "by 20 "d_m 0a + ( version ) "version 20 "0 0a + ( date ) "5 20 "aug 20 2024 00 + 00 + +@icon-24x24 + 00 00 03 02 00 01 01 01 03 07 07 07 03 03 06 06 + 00 00 00 00 00 c3 c3 c3 00 81 81 ff ff ff bd bd + 00 00 c0 40 00 80 80 8e c0 e0 e0 e0 c0 c0 60 6e + 00 00 00 00 00 00 00 00 07 07 07 03 03 01 00 00 + ( tbc... ) + @setup-audio ( adsr* sample* slen* dur* vol^ dev^ -> ) STHk #0e ORA DEO ( [dev^] ; <-vol ) STHkr #0a ORA DEO2 ( [dev^] ; <-slen ) @@ -115,9 +133,16 @@ shuffle-stock deal-tableau - ( TODO: clear foreground ) - draw - auto-move + clear-fg + #01 .about STZ + draw-about + ( draw auto-move ) + JMP2r + +@clear-fg ( -> ) + #0000 .Screen/x DEO2 + #0000 .Screen/y DEO2 + #c0 .Screen/px DEO JMP2r @quit ( -> brk ) @@ -228,6 +253,33 @@ #00 OVR STZ ( s^ ; s<-0 ) #01 SUB JMP2r ( s-1^ ) +@open-about ( -> ) + #ff .about STZ draw-about !draw-mouse + +@close-about ( -> ) + #00 .about STZ draw !auto-move + +@resume-button-addr ( -> addr* ) + .about LDZ #00 LTH ?&resume + ;start-button JMP2r + &resume ;resume-button JMP2r + +@draw-about ( -> ) + #0000 .Screen/x DEO2 + #0000 .Screen/y DEO2 + #83 .Screen/px DEO + + #0010 .Screen/x DEO2 + #0010 .Screen/y DEO2 + ;logo .Screen/addr DEO2 + #a6 .Screen/auto DEO + #80 .Screen/sprite DEOk DEO + + #0008 #00b4 resume-button-addr draw-button + #0030 #00b4 ;quit-button draw-button + + JMP2r + @draw-bear-head ( x* y* head* -> ) .Screen/addr DEO2 ( x* y* ; s/addr<-head ) .Screen/y DEO2 ( y* x* ; s/y<- ) @@ -479,6 +531,7 @@ BRK @on-refresh-bear ( -> ) + .about LDZ #00 EQU ?{ JMP2r } .frame LDZ DUP #e8 NEQ ?{ POP ;sprites #0040 ADD2 !&update } DUP #f0 NEQ ?{ POP ;sprites #0080 ADD2 !&update } @@ -555,12 +608,14 @@ .Mouse/y DEI2 DUP2 .prev/mouse-y STZ2 .Screen/y DEO2 .dragging LDZ ?&skip ;cursor .Screen/addr DEO2 - #43 .Screen/sprite DEO &skip JMP2r + .about LDZ ?{ #43 .Screen/sprite DEO !&skip } #41 .Screen/sprite DEO + &skip JMP2r @on-click-down ( -> ) .Mouse/state DEI ( state^ ) .prev/mouse-state LDZ #ff EOR AND ( down^ ) #01 AND ?&ok JMP2r &ok + .about LDZ #00 EQU ?{ !close-about } ( TODO: check for buttons ) maybe-select-button ?&skip maybe-select-stock ?&skip maybe-select-waste ?&found @@ -793,7 +848,7 @@ &restart POP2 reset #01 JMP2r &quit POP2 quit #01 JMP2r &audio POP2 toggle-audio #01 JMP2r - &about POP2 #010e DEO #01 JMP2r + &about POP2 open-about #01 JMP2r @game-won ( -> bool^ ) .foundation #04 OVR ADD SWP ( lim^ start^ ) @@ -927,6 +982,42 @@ ff ff ff ff ff ff ff ff ff 37 ea a2 aa 2a ff ff fe ff ff ff ff ff ff fe fe 59 ab a9 ab a9 ff fe +@start-button + 7f ff ff ff ff ff ff 7f 7f fe fd fe ff fc ff 7f + ff ff ff ff ff ff ff ff ff 23 f6 76 b6 76 ff ff + ff ff ff ff ff ff ff ff ff 66 ab 27 ab ab ff ff + fe ff ff ff ff ff ff fe fe 3f 7f 7f 7f 7f ff fe + +@resume-button + 7f ff ff ff ff ff ff 7f 7f e7 ea e6 ea eb ff 7f + ff ff ff ff ff ff ff ff ff 31 ef 33 fd 23 ff ff + ff ff ff ff ff ff ff ff ff 5a 55 55 55 15 ff ff + fe ff ff ff ff ff ff fe fe e7 5f 47 5f 67 ff fe + +@logo + 6c fe 38 38 38 39 3b 7f 48 a4 20 20 20 21 22 40 + 6c fe 38 70 e0 c0 80 00 48 a4 20 40 80 00 00 00 + 00 07 1c 38 38 38 38 7c 00 04 10 20 20 20 20 40 + 00 c0 70 38 38 38 38 7c 00 00 40 20 20 20 20 40 + 60 ff 3c 38 38 38 38 7c 40 a8 20 20 20 20 20 40 + 00 c0 e0 70 38 38 38 7c 00 00 80 40 20 20 20 40 + 6c fe 38 38 38 38 38 7c 48 a4 20 20 20 20 20 40 + 0e 1b 07 0e 1c 1c f8 7f 08 12 04 08 10 10 a0 40 + e0 b0 c0 e0 70 70 3e fc 80 20 00 80 40 40 24 00 + 6c fe 38 38 38 39 3b 7f 48 a4 20 20 20 21 22 40 + 6c fe 38 70 e0 c0 80 00 48 a4 20 40 80 00 00 00 + 3f 3b 39 38 38 38 fe 6c 20 22 21 20 20 20 a4 48 + 00 80 c0 e0 70 38 fe 6c 00 00 00 80 40 20 a4 48 + 38 38 38 38 38 1c 07 00 20 20 20 20 20 10 04 00 + 38 38 38 38 38 70 c0 00 20 20 20 20 20 40 00 00 + 38 38 38 38 38 3c ff 60 20 20 20 20 20 20 a8 40 + 38 38 38 38 70 e0 c0 00 20 20 20 20 40 80 00 00 + 38 38 38 38 38 38 fe 6c 20 20 20 20 20 20 a4 48 + f8 38 38 38 38 38 fe 6c a0 20 20 20 20 20 a4 48 + 3e 38 38 38 38 38 fe 6c 24 20 20 20 20 20 a4 48 + 3f 3b 39 38 38 38 fe 6c 20 22 21 20 20 20 a4 48 + 00 80 c0 e0 70 38 fe 6c 00 00 00 80 40 20 a4 48 + @saw ff ee dd cc bb aa 99 88 77 66 55 44 33 22 11 00 @triangle 80 ff 80 00 diff --git a/logo.chr b/logo.chr new file mode 100644 index 0000000..f527bf5 Binary files /dev/null and b/logo.chr differ