From e96dc56ce1b1b894552d7ce2a7ffc00a53b4a584 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Sun, 11 Jun 2023 20:42:00 -0700 Subject: [PATCH] Moved games to their own repo --- gui/dads/build.sh | 25 - gui/dads/dads.tal | 349 ------------ gui/dads/ss10x10.chr | Bin 4096 -> 0 bytes gui/inle/build.sh | 25 - gui/inle/font.tal | 49 -- gui/inle/hlaoroo.chr | Bin 4096 -> 0 bytes gui/inle/inle.tal | 910 -------------------------------- gui/inle/names.tal | 11 - gui/inle/sprites.chr | Bin 4096 -> 0 bytes gui/lander/build.sh | 25 - gui/lander/lander.tal | 342 ------------ gui/lander/ss10x10.chr | Bin 4096 -> 0 bytes gui/life/build.sh | 32 -- gui/life/life.tal | 291 ---------- gui/minesweeper/build.sh | 25 - gui/minesweeper/minesweeper.tal | 708 ------------------------- gui/sand/build.sh | 26 - gui/sand/sand.tal | 214 -------- gui/wireworld/build.sh | 32 -- gui/wireworld/wireworld.tal | 254 --------- 20 files changed, 3318 deletions(-) delete mode 100755 gui/dads/build.sh delete mode 100644 gui/dads/dads.tal delete mode 100644 gui/dads/ss10x10.chr delete mode 100755 gui/inle/build.sh delete mode 100644 gui/inle/font.tal delete mode 100644 gui/inle/hlaoroo.chr delete mode 100644 gui/inle/inle.tal delete mode 100644 gui/inle/names.tal delete mode 100644 gui/inle/sprites.chr delete mode 100755 gui/lander/build.sh delete mode 100644 gui/lander/lander.tal delete mode 100644 gui/lander/ss10x10.chr delete mode 100755 gui/life/build.sh delete mode 100644 gui/life/life.tal delete mode 100755 gui/minesweeper/build.sh delete mode 100644 gui/minesweeper/minesweeper.tal delete mode 100755 gui/sand/build.sh delete mode 100644 gui/sand/sand.tal delete mode 100755 gui/wireworld/build.sh delete mode 100644 gui/wireworld/wireworld.tal diff --git a/gui/dads/build.sh b/gui/dads/build.sh deleted file mode 100755 index cead75b..0000000 --- a/gui/dads/build.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -e - -ID="dads" -ASM="uxncli $HOME/roms/drifblim.rom" -EMU="uxnemu" -LIN="uxncli $HOME/roms/uxnlin.rom" -SRC="${ID}.tal" -DST="${ID}.rom" -CPY="$HOME/roms" -ARG="" - -if [[ "$*" == *"--lint"* ]] -then - $LIN $SRC -fi - -$ASM $SRC $DST - -if [[ "$*" == *"--save"* ]] -then - cp $DST $CPY -fi - -$EMU $DST $ARG - diff --git a/gui/dads/dads.tal b/gui/dads/dads.tal deleted file mode 100644 index 12e26ac..0000000 --- a/gui/dads/dads.tal +++ /dev/null @@ -1,349 +0,0 @@ -( uxnemu life.rom ) - -|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 -|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 -|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 -|30 @Audio0 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 -|80 @Controller &vector $2 &button $1 &key $1 -|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &wheel $1 - -|0100 ( -> ) - ( theme ) - #970f .System/r DEO2 - #7d0f .System/g DEO2 - #8c0f .System/b DEO2 - ( resize ) - #0070 .Screen/width DEO2 - #0088 .Screen/height DEO2 - ( vectors ) - ;on-mouse .Mouse/vector DEO2 - draw-border - draw-blocks -BRK - -( -@|vectors ) - -@on-mouse ( -> ) - [ LIT2 00 -Mouse/state ] DEI NEQ #41 ADD ;cursor-icn update-cursor - .Mouse/state DEI ?&on-touch -BRK - -&on-touch ( -> ) - .Mouse/x DEI2 #0008 SUB2 NIP #18 DIV - .Mouse/y DEI2 #0008 SUB2 NIP #18 DIV - ;try-move ;try-move/cc .Mouse/state DEI #01 GTH [ JMP SWP2 POP2 ] JSR2 - #00 .Mouse/state DEO -BRK - -( -@|core ) - -@pick ( x y -- * ) - ( clamp ) - DUP #04 GTH ?&bounds - OVR #03 GTH ?&bounds - ,&t STR2 - #0900 - &l - #00 OVR #0006 MUL2 ;game ADD2 [ LIT2 &t $2 ] is-at ?&found - INC GTHk ?&l - POP2 - #ffff -JMP2r -&bounds ( bounds* -- 0* ) - POP2 #0000 -JMP2r -&found ( bounds* -- block* ) - NIP #00 SWP #0006 MUL2 ;game ADD2 -JMP2r - -@is-at ( block* x y -- f ) - OVR2 LDA2 STH2 - SWP2 INC2 INC2 LDA2 SUB2 - STHr LTH - SWP STHr LTH AND -JMP2r - -@try-move ( x y -- ) - pick - DUP2 #ffff EQU2 ?&blank - DUP2 #0000 EQU2 ?&blank - ( up ) #00ff OVR2 OVR2 can-move ?&move POP2 - ( down ) #0100 OVR2 OVR2 can-move ?&move POP2 - ( left ) #ff00 OVR2 OVR2 can-move ?&move POP2 - ( right ) #0001 OVR2 OVR2 can-move ?&move POP2 - POP2 -JMP2r -&cc ( x y -- ) - pick - DUP2 #ffff EQU2 ?&blank - DUP2 #0000 EQU2 ?&blank - ( right ) #0001 OVR2 OVR2 can-move ?&move POP2 - ( left ) #ff00 OVR2 OVR2 can-move ?&move POP2 - ( down ) #0100 OVR2 OVR2 can-move ?&move POP2 - ( up ) #00ff OVR2 OVR2 can-move ?&move POP2 - POP2 -JMP2r -&move ( block* xy -- ) - SWP2 STH2k clear-block - INC2r INC2r - SWP - LDAkr STHr ADD STH2kr STA INC2r - LDAkr STHr ADD STH2r STA -!draw-blocks -&blank ( block* -- ) - POP2 -JMP2r - -@can-move ( block* x y -- f ) - OVR2 ,&self STR2 - OVR2 STH2 INC2r INC2r LDA2r - STHr ADD ,&offy STR - STHr ADD ,&offx STR - LDA2 - ,&height STR - ,&width STR - [ LIT2 &height $1 00 ] - &v - STHk - [ LIT2 &width $1 00 ] - &h - DUP [ LIT &offx $1 ] ADD - STHkr [ LIT &offy $1 ] ADD - pick - DUP2 #ffff EQU2 ?&blank - DUP2 [ LIT2 &self $2 ] EQU2 ?&blank - POP2 POP2 POP2 POPr #00 JMP2r - &blank - POP2 - INC GTHk ?&h - POP2 POPr - INC GTHk ?&v - POP2 - #01 -JMP2r - -( -@|drawing ) - -@draw-blocks ( -- ) - #0900 - &l - #00 OVR draw-block - INC GTHk ?&l - POP2 -JMP2r - -@clear-block ( id* -- ) - #00 ;draw-times/color STA - INC2 INC2 LDA2k to-screen - INC2 INC2 LDA2 JSR2 - #81 ;draw-times/color STA -JMP2r - -@draw-block ( id* -- ) - #0006 MUL2 ;game ADD2 - INC2 INC2 LDA2k to-screen - INC2 INC2 LDA2 -JMP2 - -@to-screen ( x y -- ) - #00 SWP #0018 MUL2 #0008 ADD2 .Screen/y DEO2 - #00 SWP #0018 MUL2 #0008 ADD2 .Screen/x DEO2 -JMP2r - -@draw-a ( -- ) ;blocks-chr/a .Screen/addr DEO2 #56 .Screen/auto DEO #06 !draw-times -@draw-x ( -- ) ;blocks-chr/x !draw-11 -@draw-w ( -- ) ;blocks-chr/w -@draw-11 ( addr* -- ) .Screen/addr DEO2 #26 .Screen/auto DEO #03 !draw-times -@draw-c ( -- ) ;blocks-chr/c !draw-21 -@draw-v ( -- ) ;blocks-chr/v !draw-21 -@draw-z ( -- ) ;blocks-chr/z !draw-21 -@draw-b ( -- ) ;blocks-chr/b -@draw-21 ( addr* -- ) .Screen/addr DEO2 #56 .Screen/auto DEO #03 !draw-times -@draw-y ( -- ) ;blocks-chr/y !draw-12 -@draw-d ( -- ) ;blocks-chr/d -@draw-12 ( addr* -- ) .Screen/addr DEO2 #26 .Screen/auto DEO #06 ( >> ) - -@draw-times ( times -- ) - #00 SWP SUB - &l - [ LIT &color 81 ] .Screen/sprite DEO - INC DUP ?&l - POP -JMP2r - -@draw-border ( -- ) - ( top corners ) - #00 .Screen/auto DEO - #0000 .Screen/y DEO2 - #0000 .Screen/x DEO2 - ;frame-chr/tl .Screen/addr DEO2 - #81 .Screen/sprite DEO - #0068 .Screen/x DEO2 - ;frame-chr/tr .Screen/addr DEO2 - #81 .Screen/sprite DEO - ( bottom corners ) - #0080 .Screen/y DEO2 - #0000 .Screen/x DEO2 - ;frame-chr/bl .Screen/addr DEO2 - #81 .Screen/sprite DEO - #0068 .Screen/x DEO2 - ;frame-chr/br .Screen/addr DEO2 - #81 .Screen/sprite DEO - ( hor lengths ) - #b2 .Screen/auto DEO - #0008 .Screen/x DEO2 - #0000 .Screen/y DEO2 - ;frame-chr/tc .Screen/addr DEO2 - #81 .Screen/sprite DEO - #0080 .Screen/y DEO2 - ;frame-chr/bc .Screen/addr DEO2 - #81 .Screen/sprite DEO - ( ver lengths ) - #e1 .Screen/auto DEO - #0000 .Screen/x DEO2 - #0008 .Screen/y DEO2 - ;frame-chr/ml .Screen/addr DEO2 - #81 .Screen/sprite DEO - #0068 .Screen/x DEO2 - ;frame-chr/mr .Screen/addr DEO2 - #81 .Screen/sprite DEO -JMP2r - -@update-cursor ( color addr* -- ) - [ LIT2 00 -Screen/auto ] DEO - #40 draw-cursor - .Mouse/x DEI2 ,draw-cursor/x STR2 - .Mouse/y DEI2 ,draw-cursor/y STR2 - .Screen/addr DEO2 -@draw-cursor ( color -- ) - [ LIT2 &x $2 ] .Screen/x DEO2 - [ LIT2 &y $2 ] .Screen/y DEO2 - .Screen/sprite DEO -JMP2r - -( -@|state ) - -@game ( size, pos ) [ - &a 0202 0000 =draw-a - &b 0201 0200 =draw-b - &v 0201 0201 =draw-v - &w 0101 0002 =draw-w - &x 0101 0102 =draw-x - &d 0102 0003 =draw-d - &y 0102 0103 =draw-y - &z 0201 0203 =draw-z - &c 0201 0204 =draw-c ] - -( -@|assets ) - -@cursor-icn - [ 80c0 e0f0 f8e0 1000 ] - -@frame-chr -&tl [ 0000 0000 0101 0000 0000 001f 1f1f 1f1e ] -&tc [ 0000 0000 8383 0000 0000 00ff ffff ff00 ] -&tr [ 0000 0000 0000 0030 0000 00f8 f8f8 f878 ] -&ml [ 0c0c 0000 0000 000c 1e1e 1e1e 1e1e 1e1e ] -&mr [ 3000 0000 0000 3030 7878 7878 7878 7878 ] -&bl [ 0c00 0000 0000 0000 1e1f 1f1f 1f00 0000 ] -&bc [ 0000 c1c1 0000 0000 00ff ffff ff00 0000 ] -&br [ 0000 8080 0000 0000 78f8 f8f8 f800 0000 ] - -@blocks-chr - &a [ -003f 7b77 6f5c 7b7b 3f7f ffff ffff ffff 00df bb77 eedd 7b77 dfff ffff ffff ffff -00ff bb77 eedd bb77 ffff ffff ffff ffff 00ff bb77 eedd bbf7 ffff ffff ffff ffff -00ff bb77 eedd bb77 ffff ffff ffff ffff 00fc be76 eede ba76 fcfe ffff ffff ffff -6b58 7b7b 7b5b 3b7f ffff ffff ffff ffff 6e5d 7b77 6e5d 7bf7 ffff ffff ffff ffff -eedd bb77 eedd bb77 ffff ffff ffff ffff fefd bb77 eedd bb77 ffff ffff ffff ffff -eedd bb77 eedd bb77 ffff ffff ffff ffff eede ba76 eedc ba76 ffff ffff fffe ffff -6e5d 7b77 6e5d 7b77 ffff ffff ffff ffff eefd bb77 eedd bb77 ffff ffff ffff ffff -eedd bb77 eedd bb77 ffff ffff ffff ffff eedd bb77 eedd bb7f ffff ffff ffff ffff -eedf bb77 eedd bb77 ffff ffff ffff ffff eede ba76 eede ba76 ffff ffff ffff ffff -6e5d 7b77 6e5d 7b77 ffff ffff ffff ffff eedd bb77 eedf bb77 ffff ffff ffff ffff -eedd bb77 eedd bb77 ffff ffff ffff ffff eedd bb77 eedd bb77 ffff ffff ffff ffff -eedd bb77 eedd bb77 ffff ffff ffff ffff eede ba76 eede ba76 ffff ffff ffff ffff -6e5d 7b77 6e5d 3b77 ffff ffff ffff 7fff eedd bb77 eedd bb77 ffff ffff ffff ffff -eedd bb77 eedd bb77 ffff ffff ffff ffff eedd bb77 eedd bb77 ffff ffff ffff ffff -eedd bb77 fedd bb77 ffff ffff ffff ffff eede ba76 eede ba76 ffff ffff ffff ffff -6e5d 7b77 6e7d 3f00 ffff ffff ffff 7f3f eedd bb77 eedd ff00 ffff ffff ffff ffff -eedd bb77 eedd ff00 ffff ffff ffff ffff eedd bb77 eedd ff00 ffff ffff ffff ffff -eedd bb77 eedd bf00 ffff ffff ffff ffbf eede ba76 eede fc00 ffff ffff ffff fefc ] - &b [ -003f 7d6e 777b 5d6e 3f7f ffff ffff ffff 00ff ddee 77bb ddee ffff ffff ffff ffff -00fb ddee 77bb ddee fbff ffff ffff ffff 00ff ddee 7fbb ddee ffff ffff ffff ffff -00ff ddee 77ba deee ffff ffff ffff ffff 00fc defe f63a dede fcfe ffff ffff ffff -777b 5d6e 777b 5d6e ffff ffff ffff ffff 77bf dfee 77bb ddee ffff ffff ffff ffff -77bb ddee 77bb ddee ffff ffff ffff ffff 77bb ddee 77bb ddee ffff ffff ffff ffff -76fa deee 76fa deef ffff ffff ffff ffff d63a dede d6da 3cfe ffff ffff ffff feff -777b 5f6e 777b 3f00 ffff ffff ffff 7f3f 77fb ddee 77bb ff00 ffff ffff ffff ffff -77bb ddee 77bb ff00 ffff ffff ffff ffff 77bb ddee 77bb fd00 ffff ffff ffff fffd -77bb ddee 77bb ff00 ffff ffff ffff ffff 76ba deee 76be fc00 ffff ffff ffff fefc ] - &v [ -003f 7b77 6e5d 7b77 3f7f ffff ffff ffff 00fd bb77 eedd bb77 fdff ffff ffff ffff -00ff bb77 eedd bb77 ffff ffff ffff ffff 00ff bb77 eedd bb77 ffff ffff ffff ffff -00ff bb77 eedd bb77 ffff ffff ffff ffff 00fc be76 eedc ba76 fcfe ffff fffe ffff -6e5d 7b77 6f5d 7b77 ffff ffff ffff ffff eedd bb77 eedd bb77 ffff ffff ffff ffff -eedd fb77 eedd bb77 ffff ffff ffff ffff eedf bf77 eedd bb77 ffff ffff ffff ffff -eedd bb77 eedd bb77 ffff ffff ffff ffff eede ba76 eede faf6 ffff ffff ffff ffff -6e5d 7b77 6e7d 3f00 ffff ffff ffff 7f3f eedd bb77 eedd bf00 ffff ffff ffff ffbf -eedd bb77 eedd ff00 ffff ffff ffff ffff eedd bb77 eedd ff00 ffff ffff ffff ffff -eedd bb77 eedd ff00 ffff ffff ffff ffff eede ba76 eede fc00 ffff ffff ffff fefc ] - &w [ -003f 7b77 6e5d 7b77 3f7f ffff ffff ffff 00fd bb77 eedd bf77 fdff ffff ffff ffff -00fc be76 eede ba76 fcfe ffff ffff ffff 6e5d 7b77 6e5d 3b77 ffff ffff ffff 7fff -eedd bb77 dead db77 ffff ffff ffff ffff eede ba76 eede ba76 ffff ffff ffff ffff -6e5d 7b77 6e7d 3f00 ffff ffff ffff 7f3f eedd bb77 eedd ff00 ffff ffff ffff ffff -eede ba76 eede bc00 ffff ffff ffff febc ] - &x [ -003f 7d6e 777b 5d6e 3f7f ffff ffff ffff 00ff ddee 77bb ddee ffff ffff ffff ffff -00fc deee 76ba deee fcfe ffff ffff ffff 777b 5d6e 7f7b 5d6e ffff ffff ffff ffff -77bb ddef 77bb ddee ffff ffff ffff ffff 76ba deee 76ba dcee ffff ffff ffff feff -777b 5d6e 777b 3f00 ffff ffff ffff 7f3f 77bb ddee 77bb ff00 ffff ffff ffff ffff -f6ba deee 76be fc00 ffff ffff ffff fefc ] - &d [ -003f 7d6e 777b 5d6e 3f7f ffff ffff ffff 00ff ddee 77bb ddee ffff ffff ffff ffff -00fc deee 76ba deee fcfe ffff ffff ffff 777b 5d6e 777b 5d6e ffff ffff ffff ffff -77bb fdee 77bb ddfe ffff ffff ffff ffff 76ba deee 76ba deee ffff ffff ffff ffff -777b 5d6e 777b 5d6e ffff ffff ffff ffff 77bb ddee 77fb ddee ffff ffff ffff ffff -76ba deee 76ba deee ffff ffff ffff ffff 777b 5d6e 777b 5d6e ffff ffff ffff ffff -77bb ddee 77bb ddee ffff ffff ffff ffff 76ba deee 76ba deee ffff ffff ffff ffff -7778 5b6b 7b7b 5b6b ffff ffff ffff ffff f7fb 5d6e 777b 5f6e ffff ffff ffff ffff -76ba deee 76ba defe ffff ffff ffff ffff 7b7b 586f 777b 3f00 ffff ffff ffff 7f3f -777b ddee 77bb fd00 ffff ffff ffff fffd 76ba deee 76be fc00 ffff ffff ffff fefc ] - &y [ -003f 7b77 6e5d 7b77 3f7f ffff ffff ffff 00ff bb77 eedd bf77 ffff ffff ffff ffff -00dc be76 eede ba76 dcfe ffff ffff ffff 6e5d 7b77 6e5d 7b77 ffff ffff ffff ffff -eefd bb77 eedd bb77 ffff ffff ffff ffff eede ba76 eede ba76 ffff ffff ffff ffff -6e5d 7b77 6e5d 7b77 ffff ffff ffff ffff eedd bb77 eedd bb77 ffff ffff ffff ffff -eede ba76 eede ba76 ffff ffff ffff ffff 6e5d 7b77 6e5d 7b77 ffff ffff ffff ffff -eedd bb77 eedd bb77 ffff ffff ffff ffff eede ba76 eede ba76 ffff ffff ffff ffff -6e5d 7b77 6e5d 7b77 ffff ffff ffff ffff fedf bbff eedd bb77 ffff ffff ffff ffff -eede fa76 eede ba76 ffff ffff ffff ffff 6e5d 7b77 6e7d 3f00 ffff ffff ffff 7f3f -eedd bb77 eedd ff00 ffff ffff ffff ffff fefe ba76 eede fc00 ffff ffff ffff fefc ] - &z [ -003f 7d6e 777b 5f6e 3f7f ffff ffff ffff 00ff ddee 77bb ddee ffff ffff ffff ffff -00ff ddee 77bb ddee ffff ffff ffff ffff 00ff ddee 77bb ddee ffff ffff ffff ffff -00bf ddee 77bb dfee bfff ffff ffff ffff 00fc deee 76ba deee fcfe ffff ffff ffff -777b 5d6e 777b 5d6e ffff ffff ffff ffff 77bb ddee 77bb ddee ffff ffff ffff ffff -77bb ddee 77bb dfee ffff ffff ffff ffff 77bb ddee 77bb ddee ffff ffff ffff ffff -77bb ddee 77bb dfee ffff ffff ffff ffff 76ba deee 76ba deee ffff ffff ffff ffff -777b 5d6e 777b 3f00 ffff ffff ffff 7f3f 77bb ddee 77bb ff00 ffff ffff ffff ffff -77bb ddee 77bb ff00 ffff ffff ffff ffff 77bb ddee 77bb ff00 ffff ffff ffff ffff -77bb ddee 77bb ff00 ffff ffff ffff ffff 76ba deee 76be fc00 ffff ffff ffff fefc ] - &c [ -003f 7b77 6e5d 7b77 3f7f ffff ffff ffff 00df bb77 eedd bf77 dfff ffff ffff ffff -00ff bb77 eedd bb77 ffff ffff ffff ffff 00ff bb77 eedd bf77 ffff ffff ffff ffff -00ff bb77 eedd bb77 ffff ffff ffff ffff 00fc be76 eede ba76 fcfe ffff ffff ffff -6e5d 7b77 6e5d 7b77 ffff ffff ffff ffff fedd bb77 eedd bb77 ffff ffff ffff ffff -eedd bb77 eedd bb77 ffff ffff ffff ffff fedd bb77 eedd bf77 ffff ffff ffff ffff -efdf ba76 eede ba76 ffff ffff ffff ffff fe3e dad6 fefc faf6 ffff ffff fffe ffff -6e5d 7b77 6e7d 3f00 ffff ffff ffff 7f3f eedd bb77 eedd fb00 ffff ffff ffff fffb -eedd bb77 eedd ff00 ffff ffff ffff ffff eedd bb77 eedd ff00 ffff ffff ffff ffff -eede bb77 eedd ff00 ffff ffff ffff ffff dede 3af6 eede fc00 ffff ffff ffff fefc ] - diff --git a/gui/dads/ss10x10.chr b/gui/dads/ss10x10.chr deleted file mode 100644 index de92c88954f90a429c223eb6e188e7e206ed6697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHKOHSiJ5H)+wz+8bfjK*2!2uKj+07!wA9jS$k#ChfdF~Z^!ESSW;f!T!-aqOw8 z{+I1IL`ZC=C6lgHr`@mWRrMnXMSOE5M3^)*f+CH}m52*zHbH}S8Y@%V@65LT>M1Jo zMO4*tMG)T2VlkPS{hL)8r>oNZek1LT`XT^-;`(v@BDd?Syk4K>x!FJH8>i#(cs{n? zTd;2(TY9c9gbE+X0wVu0B3(fh|);o-+vxbfh2 z^pThFyy@S+0QQ&HpDMa_WAXVj0PA5z@cs&EDZD0sZ>d=-{$LS|Btoa&&7DiobrEX`6=;RKJI5{ny;DUzvXB5 z{?2;B_lfrre!Kr6n7!Y0@-vGKKR?^gE2vMX(c%8=o#NXJ%Fo2-fByTAy^uc23}1q!)IUp4|4jS!57$H7&QKo|Wu_Wl zz|W%*sn6qMnjD{~!Q2EK;GfRbXz7!5i+V(zzG)<%t^Shr;`H+^(?cEg;_07Gy;B%{ zC;4Rcp|q`^pNHd<@Ppt4vro?FXZkSNzrRO&j@gILHhzdVXcQIhVf>xb(`Q(I#I diff --git a/gui/inle/build.sh b/gui/inle/build.sh deleted file mode 100755 index 3ed6542..0000000 --- a/gui/inle/build.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -e - -ID="inle" -ASM="uxnasm" -EMU="uxnemu" -LIN="uxncli $HOME/roms/uxnlin.rom" -SRC="${ID}.tal" -DST="${ID}.rom" -CPY="$HOME/roms" -ARG="" - -if [[ "$*" == *"--lint"* ]] -then - $LIN $SRC -fi - -$ASM $SRC $DST - -if [[ "$*" == *"--save"* ]] -then - cp $DST $CPY -fi - -$EMU $DST $ARG - diff --git a/gui/inle/font.tal b/gui/inle/font.tal deleted file mode 100644 index 6a0b8ea..0000000 --- a/gui/inle/font.tal +++ /dev/null @@ -1,49 +0,0 @@ -@font ( block8 ) - 0000 0000 0000 0000 1010 1010 1000 1000 - 2828 0000 0000 0000 44fe 4444 44fe 4400 - 107e 807c 02fc 1000 0044 0810 2044 0000 - 7884 8864 9a84 7a00 1020 0000 0000 0000 - 2040 4040 4040 2000 0804 0404 0404 0800 - 0044 2810 2844 0000 0010 107c 1010 0000 - 0000 0000 0010 2000 0000 007c 0000 0000 - 0000 0000 0000 1000 0204 0810 2040 8000 - 7c82 8282 8282 7c00 3010 1010 1010 3800 - 7c82 027c 8080 fe00 7c82 021c 0282 7c00 - 2242 82fe 0202 0200 fe80 807c 0282 7c00 - 7c82 80fc 8282 7c00 fe82 0408 0810 1000 - 7c82 827c 8282 7c00 7c82 827e 0202 0200 - 0000 1000 1000 0000 0000 1000 1010 2000 - 0008 1020 1008 0000 0000 7c00 7c00 0000 - 0010 0804 0810 0000 7c82 820c 1000 1000 - 7c82 92aa aa92 6400 7c82 82fe 8282 8200 - fc82 82fc 8282 fc00 7c82 8080 8082 7c00 - fc82 8282 8282 fc00 fe80 80f0 8080 fe00 - fe80 80f0 8080 8000 7c82 808e 8282 7c00 - 8282 82fe 8282 8200 3810 1010 1010 3800 - 0602 0202 0282 7c00 8284 88f0 8884 8200 - 8080 8080 8080 fe00 c6aa 9292 9292 9200 - c2a2 a292 8a8a 8600 7c82 8282 8282 7c00 - fc82 82fc 8080 8000 7c82 8282 8a84 7a00 - fc82 82fc 8282 8200 7c82 807c 0282 7c00 - fe10 1010 1010 1000 8282 8282 8286 7a00 - 8282 8282 4428 1000 9292 9292 92aa c600 - 8244 2810 2844 8200 8282 4428 1010 1000 - fe02 0c10 6080 fe00 6040 4040 4040 6000 - 8040 2010 0804 0200 0c04 0404 0404 0c00 - 1028 0000 0000 0000 0000 0000 0000 fe00 - 1008 0000 0000 0000 0000 7c02 7e82 7e00 - 0000 fc82 fc82 fc00 0000 7c82 8082 7c00 - 0000 0202 7e82 7e00 0000 7c82 fc80 7e00 - 0000 7c82 e080 8000 0000 7c82 7e02 fc00 - 0000 8080 fc82 8200 0000 1000 1010 1000 - 0000 fe02 0282 7c00 0000 8284 f884 8200 - 0000 8080 8080 7e00 0000 6c92 9292 9200 - 0000 bcc2 8282 8200 0000 7c82 8282 7c00 - 0000 fc82 fc80 8000 0000 7c82 7e02 0200 - 0000 bcc2 8080 8000 0000 7e80 7c02 fc00 - 0000 fe10 1010 1000 0000 8282 8282 7c00 - 0000 8282 4428 1000 0000 9292 9292 6c00 - 0000 8244 3844 8200 0000 8282 7e02 7c00 - 0000 fe02 7c80 fe00 2040 4080 4040 2000 - 1010 1010 1010 1000 0804 0402 0404 0800 - 0000 0032 4c00 0000 0000 0000 0000 0000 diff --git a/gui/inle/hlaoroo.chr b/gui/inle/hlaoroo.chr deleted file mode 100644 index df7b8cce4d326c7628e0065fd369d76bb7729dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHIzi-n(6n>6FT_D62VrWHGdtj(KK>vaETnPy_7*a8|e?pNM!jHs8AjH(J9V^(F zI>SJiGBYuOEV?iSS3;^0mXGf}+p$B`7PcbgEcxAc-}`m%{LWNsHm9Z>)o4&Q+%Vjv zB<=NbOswE2swgl|LxuXh@N;vyfhYD91R4G-|5HxYKRYP>6V;I+oQ*^P&Lh-J({xtJ zFgTt`nq1HOv|!ht(_g)(PrDCJy+-kOw;C=5f-1BS$#h)1r7nMvK_Mi3O-C+Gqf!AMV zGmmJRXE-2@C(TxI?qAZu+d*rnpXQ_BTe&?^V`0HQhvoUzRi%BZ*QgiX-9wYqdtns9 z{rnX%np^P|CR=gb+JlVZIEk3>uG=ig8*DUXLT+n`w?yuP>(^L%uhy4De!cgICDCl= zlG;xME-z+yD^3gyoE?jND6K4>vL?h&98eWM)!MIOZX8=Z9O?txsD(&Df?43P{_Veh)~|g3fAZ44RX%IaWBUj8-EQ@MkPD=8e;j=LaG-q$eSkus zY2{p#DClJ$^8Ih&Au4h#-~JKBBYd|D52d}YV`z-nL!;#7yiR(VW}}H)2DdCR z%k9kwSI12LM}UIxRR!h?1;d!i_*&M2{r+rQ_~{qo@NB>Q_z(rI){hJP5A{3S+dDNo q{Pk*le?y9H6sPGvW ) - - ( theme ) - #0a6f .System/r DEO2 - #05cf .System/g DEO2 - #0caf .System/b DEO2 - ( vectors ) - ;on-control .Controller/vector DEO2 - ;on-frame .Screen/vector DEO2 - ( random ) - ;prng-init JSR2 - ( get stage ) - .Screen/width DEI2 #03 SFT2 NIP .stage/w STZ - .Screen/height DEI2 #03 SFT2 NIP .stage/h STZ - ( terrain ) - ;start-game JSR2 - - LEAK - -BRK - -@on-control ( -> ) - - ;get-player JSR2 - .Controller/button DEI - [ #01 ] NEQk NIP ,&no-a JCN OVR ;fire JSR2 &no-a - [ #10 ] NEQk NIP ,&no-u JCN OVR ;incr-angle JSR2 &no-u - [ #20 ] NEQk NIP ,&no-d JCN OVR ;decr-angle JSR2 &no-d - [ #40 ] NEQk NIP ,&no-l JCN OVR ;decr-force JSR2 &no-l - [ #80 ] NEQk NIP ,&no-r JCN OVR ;incr-force JSR2 &no-r - POP2 - - LEAK - -BRK - -@on-frame ( -> ) - - ( handle bullet ) - .bullet/alive LDZ #01 NEQ ,&no-bullet JCN - ;update-bullet JSR2 - &no-bullet - ( animation ) - .game/timer LDZ #07 AND ,&skip JCN - ;get-player JSR2 #03 ;draw-arrow JSR2 - #01 ;draw-flag JSR2 - &skip - .game/timer LDZk INC SWP STZ - LEAK - -BRK - -@start-game ( -- ) - - ;set-terrain JSR2 - ;set-wind JSR2 - ;place-players JSR2 - ;place-clouds JSR2 - ;prng JSR2 .stage/id STZ2 - ( drawing ) - #02 ;draw-stage JSR2 - ( name player ) - ;prng JSR2 .player1/name STZ2 - ;prng JSR2 .player2/name STZ2 - ( default force ) - #0004 DUP2 .player1/force STZ2 .player2/force STZ2 - ( initial drawing ) - .player1 ;draw-player JSR2 - .player2 ;draw-player JSR2 - .player1 ;select-player JSR2 - ;next-turn JSR2 - ;next-turn JSR2 - -JMP2r - -@set-wind ( -- ) - - #0001 #0000 [ ;prng JSR2 NIP #01 AND JMP ] SWP2 SUB2 .wind/force STZ2 - ;prng JSR2 #0003 AND2 .wind/rate STZ2 - -JMP2r - -@select-player ( player -- ) - - ( nothing yet ) POP - -JMP2r - -@next-turn ( -- ) - - ( stop all bullets ) - #00 .bullet/alive STZ - - ( clear ) - ;get-player JSR2 - DUP #00 ;draw-arrow JSR2 - DUP #00 ;draw-force JSR2 - #40 ;draw-crosshair JSR2 - - #00 ;draw-clouds JSR2 - #00 ;draw-flag JSR2 - - ( move clouds ) - .clouds/ax LDZ2k #0008 ADD2 ROT STZ2 - .clouds/bx LDZ2k #0004 ADD2 ROT STZ2 - .clouds/cx LDZ2k INC2 INC2 ROT STZ2 - - ( draw ) - #02 ;draw-stage JSR2 - - ( inc ) .game/turn LDZk INC SWP STZ - - ( flip wind ) - .game/turn LDZ #07 AND ,&no-wind JCN - ;set-wind JSR2 - &no-wind - - ( draw ) - .player1 ;draw-name JSR2 - .player2 ;draw-name JSR2 - .player1 ;draw-player JSR2 - .player2 ;draw-player JSR2 - ;get-player JSR2 - DUP #00 ;draw-arrow JSR2 - DUP #01 ;draw-force JSR2 - #4a ;draw-crosshair JSR2 - -JMP2r - -@get-player ( -- player ) - - .player2 .player1 .game/turn LDZ [ #01 AND JMP SWP POP ] - -JMP2r - -@get-other ( -- player ) - - .player1 .player2 .game/turn LDZ [ #01 AND JMP SWP POP ] - -JMP2r - -@place-players ( -- ) - - ( player1 ) - #0008 - DUP ;create-platform JSR2 STH - INC2 #40 SFT2 .player1/x STZ2 - #00 STHr #40 SFT2 #0008 SUB2 .player1/y STZ2 - ( player2 ) - .Screen/width DEI2 #03 SFT2 #0008 SUB2 - DUP ;create-platform JSR2 STH - INC2 #40 SFT2 .player2/x STZ2 - #00 STHr #40 SFT2 #0008 SUB2 .player2/y STZ2 - -JMP2r - -@place-clouds ( -- ) - - ;prng JSR2 ADD .stage/w LDZ ( mod ) DIVk MUL SUB #00 SWP #40 SFT2 .clouds/ax STZ2 - #0030 .clouds/ay STZ2 - ;prng JSR2 ADD .stage/w LDZ ( mod ) DIVk MUL SUB #00 SWP #40 SFT2 .clouds/bx STZ2 - #0060 .clouds/by STZ2 - ;prng JSR2 ADD .stage/w LDZ ( mod ) DIVk MUL SUB #00 SWP #40 SFT2 .clouds/cx STZ2 - #0090 .clouds/cy STZ2 - -JMP2r - -( terrain ) - -@set-terrain ( -- ) - - .stage/w LDZ INC INC #00 - &loop - ( height/2 ) .stage/h LDZ #01 SFT - ( rand ) ;prng JSR2 #0a SFT2 NIP ADD #01 SFT - ( store ) OVR #00 SWP ;terrain ADD2 STA - INC GTHk ,&loop JCN - POP2 - ( soften ) - #0800 - &loop-soften - ,soften JSR - INC GTHk ,&loop-soften JCN - POP2 - -JMP2r - -@soften ( -- ) - - .stage/w LDZ #00 - &loop2 - ( a ) #00 OVR ;terrain ADD2 LDA STH - ( b ) #00 OVR INC ;terrain ADD2 LDA STH - ( c ) #00 OVR INC INC ;terrain ADD2 LDA STH - #00 STHr #00 STHr ADD2 #00 STHr ADD2 #0003 DIV2 NIP - ( store ) OVR #00 SWP ;terrain ADD2 STA - INC GTHk ,&loop2 JCN - POP2 - -JMP2r - -@create-platform ( x -- height ) - - #01 SUB - #00 SWP ;terrain ADD2 DUP2 - ( average ) LDAk STH INC2 LDAk STH INC2 ADDr LDAk STH INC2 ADDr LDA STH ADDr - LITr 04 DIVr - ( flatten ) STHkr ROT ROT STAk INC2 STAk INC2 STAk INC2 STA - STHr - -JMP2r - - - - .bullet/age LDZ2 .wind/rate LDZ2 INC2 #30 SFT2 ( mod2 ) DIV2k MUL2 SUB2 ORA ,&no-wind JCN - .bullet/vx LDZ2 .wind/force LDZ2 ADD2 .bullet/vx STZ2 - &no-wind - -@update-bullet ( -- ) - - ( undraw ) - #40 ;draw-bullet JSR2 - ;collide-bounds JSR2 ;&hit-bound JCN2 - ;collide-ground JSR2 ;&hit-ground JCN2 - ;collide-clouds JSR2 ;&hit-cloud JCN2 - ;collide-other JSR2 ;&hit-other JCN2 - ;collide-self JSR2 ;&hit-self JCN2 - ( origin ) - .bullet/x LDZ2 ,&x STR2 - .bullet/y LDZ2 ,&y STR2 - ( update bullet ) - .bullet/x LDZ2 .bullet/vx LDZ2 ADD2 .bullet/x STZ2 - .bullet/y LDZ2 .bullet/vy LDZ2 SUB2 .bullet/y STZ2 - ( apply wind ) - ( apply gravity ) - .bullet/vy LDZ2 - #0001 SUB2 .bullet/vy STZ2 - ( line ) - .bullet/y LDZ2 #8000 GTH2 ,&offscreen JCN - ,&y LDR2 #8000 GTH2 ,&offscreen JCN - .bullet/x LDZ2 #8000 GTH2 ,&offscreen JCN - ,&x LDR2 #8000 GTH2 ,&offscreen JCN - [ LIT2 &x $2 ] #01 SFT2 [ LIT2 &y $2 ] #01 SFT2 - .bullet/x LDZ2 #01 SFT2 .bullet/y LDZ2 #01 SFT2 #01 ;draw-line JSR2 - &offscreen - .bullet/age LDZ2k INC2 ROT STZ2 - #43 ;draw-bullet JSR2 - -JMP2r - &hit-bound - ;next-turn JSR2 - JMP2r - &hit-ground - #00 ;draw-stage JSR2 - .bullet/x LDZ2 #04 SFT2 ;terrain ADD2 STH2k LDA INC STH2r STA - ;next-turn JSR2 - JMP2r - &hit-cloud - ;next-turn JSR2 - JMP2r - &hit-other - #aaaa ;print JSR2 #0a18 DEO - ;next-turn JSR2 - JMP2r - &hit-self - ;next-turn JSR2 - JMP2r - -@collide-ground ( -- hit ) - - .bullet/y LDZ2 #8000 GTH2 ,&offscreen JCN - ( x ) .bullet/x LDZ2 #04 SFT2 ;terrain ADD2 LDA - #00 SWP #40 SFT2 .bullet/y LDZ2 LTH2 JMP2r - &offscreen - #00 - -JMP2r - -@collide-bounds ( -- hit ) - - .bullet/x LDZ2 .Screen/width DEI2 #10 SFT2 GTH2 - JMP2r - ( TODO ) - .bullet/y LDZ2 .Screen/height DEI2 #10 SFT2 GTH2 - .bullet/x LDZ2 .Screen/width DEI2 #10 SFT2 GTH2 - ORA - -JMP2r - -@collide-clouds ( -- hit ) - - #00 - -JMP2r - -@collide-self ( -- hit ) - - .bullet/age LDZ2 #0020 GTH2 ,&continue JCN - #00 JMP2r - &continue - .bullet/x LDZ2 - DUP2 ;get-player JSR2 /x LDZ2 #0008 SUB2 LTH2 ,&miss JCN - DUP2 ;get-player JSR2 /x LDZ2 #0010 ADD2 GTH2 ,&miss JCN - POP2 - .bullet/y LDZ2 - DUP2 ;get-player JSR2 /y LDZ2 #0020 SUB2 LTH2 ,&miss JCN - DUP2 ;get-player JSR2 /y LDZ2 #0008 ADD2 GTH2 ,&miss JCN - POP2 - #01 - -JMP2r - &miss POP2 #00 JMP2r - -@collide-other ( -- hit ) - - .bullet/x LDZ2 - DUP2 ;get-other JSR2 /x LDZ2 #0008 SUB2 LTH2 ,&miss JCN - DUP2 ;get-other JSR2 /x LDZ2 #0010 ADD2 GTH2 ,&miss JCN - POP2 - .bullet/y LDZ2 - DUP2 ;get-other JSR2 /y LDZ2 #0020 SUB2 LTH2 ,&miss JCN - DUP2 ;get-other JSR2 /y LDZ2 #0008 ADD2 GTH2 ,&miss JCN - POP2 - #01 - ( TODO: set sprite state ) - #aaaa ;print JSR2 #0a18 DEO - -JMP2r - &miss POP2 #00 JMP2r - -@incr-angle ( player -- ) - - DUP /angle LDZ #14 EQU ,&skip JCN - DUP #40 ;draw-crosshair JSR2 - DUP /angle LDZk INC SWP STZ - DUP ;draw-player JSR2 - DUP #43 ;draw-crosshair JSR2 - &skip - POP - -JMP2r - -@decr-angle ( player -- ) - - DUP /angle LDZ #01 LTH ,&skip JCN - DUP #40 ;draw-crosshair JSR2 - DUP /angle LDZk #01 SUB SWP STZ - DUP ;draw-player JSR2 - DUP #43 ;draw-crosshair JSR2 - &skip - POP - -JMP2r - -@incr-force ( player -- ) - - DUP /force LDZ2 #0007 GTH2 ,&skip JCN - DUP /force LDZ2k INC2 ROT STZ2 - DUP #01 ;draw-force JSR2 - &skip - POP - -JMP2r - -@decr-force ( player -- ) - - DUP /force LDZ2 #0001 LTH2 ,&skip JCN - DUP /force LDZ2k #0001 SUB2 ROT STZ2 - DUP #01 ;draw-force JSR2 - &skip - POP - -JMP2r - -@fire ( player -- ) - - STH - #00 STHkr /angle LDZ - DUP2 - ( y ) - ( add force ) DUP2 STHkr /force LDZ2 MUL2 #02 SFT2 ADD2 .bullet/vy STZ2 - ( x ) ( range ) #0014 SWP2 SUB2 STHkr /y LDZ2 #0014 SUB2 .bullet/y STZ2 - ( add force ) DUP2 STHkr /force LDZ2 MUL2 #02 SFT2 ADD2 - ( player2 flip-x ) STHkr .player2 NEQ ,&left JCN #0000 SWP2 SUB2 &left .bullet/vx STZ2 - STHr /x LDZ2 .bullet/x STZ2 - #01 .bullet/alive STZ - #0000 .bullet/age STZ2 - -JMP2r - -( drawing ) - -@draw-stage ( color -- ) - - STH - #35 .Screen/auto DEO - ( x ) #0000 .Screen/x DEO2 - .stage/w LDZ #00 - &loop - ;stage-icns .Screen/addr DEO2 - ( y ) #00 OVR ;terrain ADD2 LDA #01 SUB #00 SWP #30 SFT2 .Screen/y DEO2 - STHkr .Screen/sprite DEO - INC GTHk ,&loop JCN - POP2 - STHkr ;draw-doodads JSR2 - STHkr ;draw-clouds JSR2 - STHkr ;draw-ramps JSR2 - STHr #00 NEQ ;draw-flag JSR2 - -JMP2r - -@draw-doodads ( color -- ) - - STH - #00 .Screen/auto DEO - .stage/w LDZ #00 - &loop - ( x ) #00 OVR #30 SFT2 .Screen/x DEO2 - ( y ) #00 OVR ;terrain ADD2 LDA #02 SUB #00 SWP #30 SFT2 .Screen/y DEO2 - ( doodads ) - #00 OVR .stage/id LDZ2 ADD2 #0003 AND2 #40 SFT2 ;doodad-icns ADD2 .Screen/addr DEO2 - STHkr #00 NEQ #85 MUL .Screen/sprite DEO - #05 ADD GTHk ,&loop JCN - POP2 - POPr - -JMP2r - -@draw-ramps ( color -- ) - - STH - #00 .Screen/auto DEO - .stage/w LDZ #00 - &loop - ( x ) #00 OVR #30 SFT2 .Screen/x DEO2 - ( y ) #00 OVR ;terrain ADD2 LDA #02 SUB #00 SWP #30 SFT2 .Screen/y DEO2 - ( up ) - #00 OVR ;terrain ADD2 LDA2 - EQUk ,&no-up-ramp JCN - LTHk ,&no-up-ramp JCN - ;ramp-icns .Screen/addr DEO2 - STHkr #01 MUL .Screen/sprite DEO - &no-up-ramp - POP2 - ( down ) - #00 OVR #01 SUB ;terrain ADD2 LDA2 - EQUk ,&no-down-ramp JCN - GTHk ,&no-down-ramp JCN - ;ramp-icns/down .Screen/addr DEO2 - STHkr #01 MUL .Screen/sprite DEO - &no-down-ramp - POP2 - INC GTHk ,&loop JCN - POP2 - POPr - -JMP2r - -@draw-clouds ( color -- ) - - #16 .Screen/auto DEO - ;cloud-icns/a .Screen/addr DEO2 - #81 SWP #00 NEQ MUL .Screen/sprite - .clouds/ax LDZ2 #01 SFT2 .Screen/x DEO2 - .clouds/ay LDZ2 #01 SFT2 .Screen/y DEO2 - DEOk - .clouds/bx LDZ2 #01 SFT2 .Screen/x DEO2 - .clouds/by LDZ2 #01 SFT2 .Screen/y DEO2 - ;cloud-icns/b .Screen/addr DEO2 - DEOk - .clouds/cx LDZ2 #01 SFT2 .Screen/x DEO2 - .clouds/cy LDZ2 #01 SFT2 .Screen/y DEO2 - ;cloud-icns/c .Screen/addr DEO2 - DEO - -JMP2r - -@draw-force ( player mask -- ) - - STH - INCk INC LDZ2 #01 SFT2 #0028 SUB2 .Screen/y DEO2 - ( bg ) - LDZ2k #01 SFT2 #0012 SUB2 .Screen/x DEO2 - #10 #05 STHkr MUL ;draw-bar JSR2 - ( fg ) - LDZ2k #01 SFT2 #0012 SUB2 .Screen/x DEO2 - #04 ADD LDZ2 NIP #10 SFT #0f STHr MUL ;draw-bar JSR2 - -JMP2r - -@draw-bar ( size color -- ) - - STH - #00 .Screen/auto DEO - ;progress-icns/fill .Screen/addr DEO2 - #00 - &loop - STHkr .Screen/sprite DEO - .Screen/x DEI2k INC2 INC2 ROT DEO2 - INC GTHk ,&loop JCN - POP2 - POPr - -JMP2r - -@draw-crosshair ( player color -- ) - - STH - DUP ,&player STR - #00 .Screen/auto DEO - DUP /x LDZ2 #01 SFT2 #0020 SUB2 ,&offset-x STR2 - /y LDZ2 #01 SFT2 #0028 SUB2 ,&offset-y STR2 - #4000 - &loop - #00 OVR #10 SFT2 ;sin-tbl ADD2 - DUP2 LDA #00 SWP #02 SFT2 [ LIT2 &offset-x $2 ] ADD2 .Screen/x DEO2 - INC2 LDA #00 SWP #02 SFT2 [ LIT2 &offset-y $2 ] ADD2 .Screen/y DEO2 - DUP #03 AND ,&odd JCN - STHkr .Screen/pixel DEO - &odd - ( selected ) - DUP [ LIT &player $1 ] ;get-marker JSR2 NEQ ,&no-sel JCN - .Screen/x DEI2k #0003 SUB2 ROT DEO2 - .Screen/y DEI2k #0003 SUB2 ROT DEO2 - ;crosshair-icn .Screen/addr DEO2 - STHkr .Screen/sprite DEO - &no-sel - INC GTHk ,&loop JCN - POP2 - POPr - -JMP2r - -@get-marker ( player -- marker ) - - DUP .player2 EQU ,&player2 JCN - #14 SWP /angle LDZ SUB JMP2r - &player2 - /angle LDZ #2c ADD #3f AND - -JMP2r - -@draw-flag ( mask -- ) - - STH - ( direction ) - .wind/force LDZ2 #8000 LTH2 STH - ( x ) - .Screen/width DEI2 #0006 SUB2 - ( flip-x ) #00 STHkr #000c MUL2 ADD2 - #01 SFT2 .Screen/x DEO2 - ( y ) - #00 .stage/w LDZ INC #01 SFT ;terrain ADD2 LDA - #00 SWP #0004 SUB2 #30 SFT2 .Screen/y DEO2 - ( top ) - #02 .Screen/auto DEO - ;flag/top - ( rate ) .wind/rate LDZ2 #0030 MUL2 ADD2 - ( animate ) #00 [ LIT &f $1 ] #40 SFT2 ADD2 - .Screen/addr DEO2 - #81 ( flipx ) STHr #40 SFT ORA STHr MUL .Screen/sprite - DEOk - ( pole ) - ;flag/pole .Screen/addr DEO2 - DEOk DEO - ( animate ) - ,&f LDR INC #03 ( mod ) DIVk MUL SUB ,&f STR - -JMP2r - -@draw-arrow ( player color -- ) - - STH - #00 .Screen/auto DEO - ( x ) LDZ2k #01 SFT2 #0004 SUB2 .Screen/x DEO2 - ( y ) INC INC LDZ2 #0040 SUB2 - ( y+blink ) #00 .game/timer LDZ #0f AND #02 SFT2 ADD2 - #01 SFT2 .Screen/y DEO2 - ;arrow-icn .Screen/addr DEO2 - STHr .Screen/sprite DEO - -JMP2r - -@draw-bullet ( color -- ) - - #00 .Screen/auto DEO - .bullet/x LDZ2 #0006 SUB2 #01 SFT2 .Screen/x DEO2 - .bullet/y LDZ2 #0006 SUB2 #01 SFT2 .Screen/y DEO2 - ;bullet-icn .Screen/addr DEO2 - .Screen/sprite DEO - -JMP2r - -@draw-player ( player -- ) - - DUP .player2 EQU ;draw-player2 JCN2 - STHk - LDZ2k #01 SFT2 #0008 SUB2 .Screen/x DEO2 - INC INC LDZ2 #0028 SUB2 #01 SFT2 .Screen/y DEO2 - #16 .Screen/auto DEO - ;player1-icns/ears .Screen/addr DEO2 - #85 .Screen/sprite DEOk - ;player1-icns/eye [ #00 STHr #06 ADD LDZ #03 SFT ] #50 SFT2 ADD2 .Screen/addr DEO2 - DEOk - ;player1-icns/body .Screen/addr DEO2 - DEO - -JMP2r - -@draw-player2 ( player -- ) - - STHk - LDZ2k #01 SFT2 #0008 SUB2 .Screen/x DEO2 - INC INC LDZ2 #0028 SUB2 #01 SFT2 .Screen/y DEO2 - #16 .Screen/auto DEO - ;player2-icns/ears .Screen/addr DEO2 - #85 .Screen/sprite DEOk - ;player2-icns/eye [ #00 STHr #06 ADD LDZ #03 SFT ] #50 SFT2 ADD2 .Screen/addr DEO2 - DEOk - ;player2-icns/body .Screen/addr DEO2 - DEO - -JMP2r - -@draw-name ( player -- ) - - DUP /x LDZ2 #01 SFT2 #0020 SUB2 .Screen/x DEO2 - DUP /y LDZ2 #0068 SUB2 #01 SFT2 .Screen/y DEO2 - ( to /name ) #07 ADD - LDZk #0f AND #00 SWP #0005 MUL2 ;names/first ADD2 #05 ;draw-label JSR2 - INC LDZ #0f AND #00 SWP #0006 MUL2 ;names/last ADD2 #05 ;draw-label JSR2 - -JMP2r - -@draw-label ( str* color -- ) - - STH - #01 .Screen/auto DEO - &while - LDAk #20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2 - STHkr .Screen/sprite DEO - INC2 LDAk ,&while JCN - POP2 - POPr - -JMP2r - -@text "buckthorn $1 - -@draw-line ( x1* y1* x2* y2* color -- ) - - ( load ) STH ,&y STR2 ,&x STR2 .line/y STZ2 .line/x STZ2 - ,&x LDR2 .line/x LDZ2 SUB2 ;abs2 JSR2 .line/dx STZ2 - #0000 ,&y LDR2 .line/y LDZ2 SUB2 ;abs2 JSR2 SUB2 .line/dy STZ2 - #ffff #00 .line/x LDZ2 ,&x LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sx STR2 - #ffff #00 .line/y LDZ2 ,&y LDR2 ;lts2 JSR2 #10 SFT2 ADD2 ,&sy STR2 - .line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 - &loop - .line/x LDZ2 DUP2 .Screen/x DEO2 [ LIT2 &x $2 ] EQU2 - .line/y LDZ2 DUP2 .Screen/y DEO2 [ LIT2 &y $2 ] EQU2 - STHkr .Screen/pixel DEO - AND ,&end JCN - .line/e1 LDZ2 #10 SFT2 DUP2 - .line/dy LDZ2 ;lts2 JSR2 ,&skipy JCN - .line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2 - .line/x LDZ2 [ LIT2 &sx $2 ] ADD2 .line/x STZ2 - &skipy - .line/dx LDZ2 ;gts2 JSR2 ,&skipx JCN - .line/e1 LDZ2 .line/dx LDZ2 ADD2 .line/e1 STZ2 - .line/y LDZ2 [ LIT2 &sy $2 ] ADD2 .line/y STZ2 - &skipx - ,&loop JMP - &end - POPr - -JMP2r - -@abs2 DUP2 #0f SFT2 EQU #05 JCN #0000 SWP2 SUB2 JMP2r -@lts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 GTH2 JMP2r -@gts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 LTH2 JMP2r - -( library ) - -@prng-init ( -- ) - - ( seed ) - #00 .DateTime/second DEI - #00 .DateTime/minute DEI #60 SFT2 EOR2 - #00 .DateTime/hour DEI #c0 SFT2 EOR2 ,prng/x STR2 - #00 .DateTime/hour DEI #04 SFT2 - #00 .DateTime/day DEI #10 SFT2 EOR2 - #00 .DateTime/month DEI #60 SFT2 EOR2 - .DateTime/year DEI2 #a0 SFT2 EOR2 ,prng/y STR2 - -JMP2r - -@prng ( -- number* ) - - LIT2 &x $2 - DUP2 #50 SFT2 EOR2 - DUP2 #03 SFT2 EOR2 - LIT2 &y $2 DUP2 ,&x STR2 - DUP2 #01 SFT2 EOR2 EOR2 - ,&y STR2k POP - -JMP2r - -@print ( short* -- ) - - SWP ,&byte JSR - &byte ( byte -- ) DUP #04 SFT ,&char JSR - &char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO - -JMP2r - -@progress-icns - 3f40 8080 8080 403f - ff00 0000 0000 00ff - fc02 0101 0101 02fc - &fill - 0000 183c 3c18 0000 -@crosshair-icn - 0010 106c 1010 0000 -@arrow-icn - 0018 18ff 7e3c 1800 -@bullet-icn - 0000 183c 3c18 0000 -@flag - &pole - 0101 0101 0001 0001 0101 0101 0101 0101 - &top - ( high ) - 0101 3fff 3f07 0101 0101 0000 0000 0101 - 01f9 3f3f 1f07 0101 0101 0000 0000 0101 - 0181 ffff 7f07 0101 0101 0000 0000 0101 - ( med ) - 0101 0307 070f 3f79 0101 0000 0000 0101 - 0101 0307 0f3f 7d41 0101 0000 0000 0101 - 0101 0307 4f7f 3d01 0101 0000 0000 0101 - ( low ) - 0101 0303 0303 0707 0101 0000 0000 0000 - 0101 0103 0707 0703 0101 0000 0000 0000 - 0101 0103 0307 0703 0101 0000 0000 0000 - ( none ) - 0101 0303 0303 0707 0101 0000 0000 0000 - 0101 0103 0707 0703 0101 0000 0000 0000 - 0101 0103 0307 0703 0101 0000 0000 0000 - -@cloud-icns - &a - 0000 0c1e 1e0f 0500 0000 1c3e 3e3f ff7f - 0004 0200 c0e0 50a0 0004 0e04 c0e0 f0e0 - &b - 0000 081c 1400 0000 0000 193d 7f3f 0000 - 0070 f8f8 54a0 0000 00f0 f8f8 fcf0 0000 - &c - 0000 402e 0f00 0000 0000 40ee 5f0e 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - -@doodad-icns - 0000 0000 2054 2a04 0000 0000 2074 2e24 - 0000 0000 40a2 552a 0000 0000 40e2 577a - 0000 0000 0000 0000 0000 0000 0000 0424 - 0000 0000 0000 0000 0000 0000 0000 0008 - -@ramp-icns - 0000 0000 0000 0001 - &down - 0000 0000 0000 0080 - -@stage-icns - ffff ffff ffff ffff - ffff aa55 aa55 aa55 - aa55 aa55 8800 2200 - 0000 0000 0000 0000 - &up - 0103 070f 1f3f 7fff - ffff fefd faf5 ead5 - aa55 aa55 a850 a240 - 8800 2200 8800 0000 - &down - 0000 0000 0000 0000 - 80c0 e0f0 f8fc feff - ffff bf5f af57 ab55 - aa55 aa55 0a05 2201 - 8800 2200 8800 0000 - -@player1-icns - &ears - ( 0 ) - 0002 0e0e 0606 1f3f 0c0c 0000 0000 0000 - 0020 e0e0 6000 fcfe c0c0 0000 0000 0000 - ( 1 ) - 0000 020e 0e06 1f3f 000c 0c00 0000 0000 - 0000 20e0 6000 fcfe 00c0 c000 0000 0000 - ( 2 ) - 0000 041c 0e06 1f3f 0019 1900 0000 0000 - 0000 40e0 6000 fcfe 0080 8000 0000 0000 - &eye - ( 0 ) - 7f7f 7f7f 7f3f 1f07 0103 0707 0703 0000 - ffc7 8383 c7ff fef8 f0f8 fcfc fcf8 0000 - ( 1 ) - 7f7f 7f7f 7f3f 1f07 0103 0707 0703 0000 - 8f07 078f ffff fef8 f0f8 fcfc fcf8 0000 - ( 2 ) - 7f7e 7e7f 7f3f 1f07 0103 0707 0703 0000 - 1f0f 0f1f ffff fef8 f0f8 fcfc fcf8 0000 - &body - 5f3f 3f1f 1200 0000 4101 0000 0000 0000 - e0e0 e040 4000 0000 e0e0 e000 0000 0000 - -@player2-icns - &ears - ( 0 ) - 0003 030c 0e00 1f3f 0000 0403 0000 0000 - 008e 8e30 7860 f0f8 0000 100c 0000 0000 - ( 1 ) - 0000 0303 0c00 1f3f 0000 0004 0300 0000 - 0000 8e8e 3078 f0f8 0000 0010 0c00 0000 - ( 2 ) - 0000 0101 0600 1f3f 0000 0002 0100 0000 - 0000 c7c7 1878 f0f8 0000 0008 8600 0000 - &eye - ( 0 ) - 7fe3 d1c1 e3ff 7f1f 0f1f 3f3f 3f1f 0000 - fcfe fefe fefe fcf0 80c0 e0e0 e0c0 0000 - ( 1 ) - 71e8 e0f1 ffff 7f1f 0f1f 3f3f 3f1f 0000 - fcfe fefe fefe fcf0 80c0 e0e0 e0c0 0000 - ( 2 ) - 78f4 f0f8 ffff 7f1f 0f1f 3f3f 3f1f 0000 - fc7e 7efe fefe fcf0 80c0 e0e0 e0c0 0000 - &body - 0707 0702 0200 0000 0707 0700 0000 0000 - f0f8 fefe b000 0000 8080 0606 0000 0000 - -@platform-icns - 0000 0000 0000 0000 0f3f 3f7f 7f7f 7f7f - 0000 0000 0000 0000 ffff ffff ffff ffff - 0000 0000 0000 0000 ffff ffff ffff ffff - 0000 0000 0000 0000 f0fc fcfe fefe fefe - 0000 0000 0000 0000 7f7f 7778 7050 2000 - 0000 0000 0000 0000 ffff ffff 3e1c 0000 - 0000 0000 0000 0000 ffff ff3f 1303 0100 - 0000 0000 0000 0000 fefe fefe eeca 0400 - -@sin-tbl - 8000 8c00 9802 a505 b009 bc0f c715 d11d - da25 e22e ea38 f043 f64f fa5a fd67 ff73 - ff80 ff8c fd98 faa5 f6b0 f0bc eac7 e2d1 - dada d1e2 c7ea bcf0 b0f6 a5fa 98fd 8cff - 80ff 73ff 67fd 5afa 4ff6 43f0 38ea 2ee2 - 25da 1dd1 15c7 0fbc 09b0 05a5 0298 008c - 0080 0073 0267 055a 094f 0f43 1538 1d2e - 2525 2e1d 3815 430f 4f09 5a05 6702 7300 - -~names.tal -~font.tal - -@terrain - diff --git a/gui/inle/names.tal b/gui/inle/names.tal deleted file mode 100644 index f4224a2..0000000 --- a/gui/inle/names.tal +++ /dev/null @@ -1,11 +0,0 @@ -@names -&first -"Blue $1 "Fern $1 "Leaf $1 "Corn $1 -"Pine $1 "Snow $1 "Seed $1 "Fuzz $1 -"Rain $1 "Buck $1 "Rose $1 "Sage $1 -"Worm $1 "Haze $1 "Hawk $1 "Bell $1 -&last -"stack $1 "marsh $1 "clove $1 "thorn $1 -"patch $1 "grass $1 "shade $1 "berry $1 -"woods $1 "stone $1 "cedar $1 "brush $1 -"storm $1 "cloud $1 "mound $1 "beans $1 diff --git a/gui/inle/sprites.chr b/gui/inle/sprites.chr deleted file mode 100644 index f50b2e8f7e0d2c656c8ff7fdc252a128ecdf71ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH`ze)o^5XL8WiXg%wHdhE6(xvkOg0qj1Ml5{=J5zZn?*Z}zR-%QE;MMkGYpo#L z2#c(@?wFlT8i@o^kom5d{bv8%eLrs1ficr4fKq9VXm^UD7X{E-=e!4~MxzR%Qmv|R zK5tMnOCi=IZiJ+-y!E~#@%&#^%1%PmT9p8lo#ef9w*CHB)%DrrbllGyDE{Gowh%4u zl@V(aWq-NbV4G{N+)^6rz>S14`)T`Vo$s>eb?a8j-ppnXyq~h~4u{X|f4hdzy}!La z-Sc}xxH_U|;criFj<2)l{<;+n5irR66WGkxf8K^7-UAlj2lhW(DeL9Ol_HcL@f`K6^Y6aqp(2nYcoAOwVf5D)@FU9>srO diff --git a/gui/lander/build.sh b/gui/lander/build.sh deleted file mode 100755 index f94ea48..0000000 --- a/gui/lander/build.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -e - -ID="lander" -ASM="uxncli $HOME/roms/drifblim.rom" -EMU="uxnemu" -LIN="uxncli $HOME/roms/uxnlin.rom" -SRC="${ID}.tal" -DST="${ID}.rom" -CPY="$HOME/roms" -ARG="" - -if [[ "$*" == *"--lint"* ]] -then - $LIN $SRC -fi - -$ASM $SRC $DST - -if [[ "$*" == *"--save"* ]] -then - cp $DST $CPY -fi - -$EMU $DST $ARG - diff --git a/gui/lander/lander.tal b/gui/lander/lander.tal deleted file mode 100644 index 64d75fe..0000000 --- a/gui/lander/lander.tal +++ /dev/null @@ -1,342 +0,0 @@ -( uxnemu lander.rom ) - -|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 -|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 -|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 -|30 @Audio0 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 -|80 @Controller &vector $2 &button $1 &key $1 -|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &wheel $1 -|c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 - -|0000 - - @pos &x $2 &y $2 - @force &x $2 &y $2 - @angle $2 - @stage - &w $1 &h $1 &id $2 - -|0100 ( -> ) - - ( theme ) - #0ff0 .System/r DEO2 - #0f0f .System/g DEO2 - #0f0f .System/b DEO2 - ( resize ) - #0260 .Screen/width DEO2 - #01a0 .Screen/height DEO2 - ( vectors ) - ;on-frame .Screen/vector DEO2 - ;on-control .Controller/vector DEO2 - prng-init - ( get stage ) - .Screen/width DEI2 #03 SFT2 NIP .stage/w STZ - .Screen/height DEI2 #03 SFT2 NIP .stage/h STZ - - #0100 .pos/x STZ2 - #00a0 .pos/y STZ2 - - set-terrain - - draw-stage - ( draw platform ) - #04 create-platform #01 SUB #00 SWP #30 SFT2 STH2 - #0004 #30 SFT2 - STH2kr - #0005 #30 SFT2 - STH2r - #43 draw-line - - redraw - -BRK - -( -@|vectors ) - -@on-frame ( -> ) - - [ LIT &f $1 ] INCk ,&f STR - #01 AND ?&no-read - .Controller/button DEI - DUP #10 AND #00 EQU ?&no-u - .angle LDZ2 thruster - &no-u - DUP #20 AND #00 EQU ?&no-d - #0010 .force/y STZ2 - &no-d - DUP #40 AND #00 EQU ?&no-l - .angle LDZ2 #0001 SUB2 #001f AND2 .angle STZ2 - &no-l - DUP #80 AND #00 EQU ?&no-r - .angle LDZ2 INC2 #001f AND2 .angle STZ2 - &no-r - POP - - &no-read - apply-force - ( .force/y LDZ2 phex #0a18 DEO ) - redraw - -BRK - -@on-control ( -> ) - -BRK - -( -@|core ) - -@thruster ( angle* -- ) - - #10 SFT2 ;circle-tbl ADD2 LDA2 POP - ( make short ) - #80 SUB - DUP #80 AND #00 NEQ STH #ff00 STHr [ JMP SWP POP ] SWP - reduce3 .force/x LDZ2 ADD2 .force/x STZ2 - .angle LDZ2 #0020 ADD2 #001f AND2 #10 SFT2 ;circle-tbl ADD2 LDA2 NIP - ( make short ) - #80 ADD - DUP #80 AND #00 NEQ STH #ff00 STHr [ JMP SWP POP ] SWP - reduce3 - .force/y LDZ2 ADD2 .force/y STZ2 - #08 ;draw-lander/plume STA - -JMP2r - -@apply-force ( -- ) - - [ LIT &f $1 ] INCk ,&f STR - #03 AND ?&skip - .force/y LDZ2 INC2 .force/y STZ2 - ;draw-lander/plume LDA #00 EQU ?&skip - ;draw-lander/plume LDA #01 SUB ;draw-lander/plume STA - &skip - .force/y LDZ2 reduce .pos/y LDZ2 ADD2 .pos/y STZ2 - .force/x LDZ2 reduce .pos/x LDZ2 ADD2 .pos/x STZ2 - -JMP2r - -@reduce ( force* -- ) - - DUP2 #8000 AND2 ORA ?&neg - #01 SFT2 - -JMP2r -&neg abs2 #01 SFT2 #0000 SWP2 SUB2 JMP2r - -@reduce3 ( force* -- ) - - DUP2 #8000 AND2 ORA ?&neg - #05 SFT2 - -JMP2r -&neg abs2 #05 SFT2 #0000 SWP2 SUB2 JMP2r - -( -@|terrain ) - -@set-terrain ( -- ) - - .stage/w LDZ INC INC #00 - &loop - ( height/2 ) .stage/h LDZ #01 SFT - ( rand ) prng #0260 DIV2 NIP ADD #01 SFT - ( v offset ) #00 ADD - ( store ) OVR #00 SWP ;terrain ADD2 STA - INC GTHk ,&loop JCN - POP2 - ( soften ) - #0800 - &loop-soften - soften - INC GTHk ?&loop-soften - POP2 - -JMP2r - -@soften ( -- ) - - .stage/w LDZ INC #00 - &loop2 - ( a ) #00 OVR ;terrain ADD2 LDA STH - ( b ) #00 OVR INC ;terrain ADD2 LDA STH - ( c ) #00 OVR INC INC ;terrain ADD2 LDA STH - #00 STHr #00 STHr ADD2 #00 STHr ADD2 #0003 DIV2 NIP - ( store ) OVR #00 SWP ;terrain ADD2 STA - INC GTHk ,&loop2 JCN - POP2 - -JMP2r - -@create-platform ( x -- height ) - - #01 SUB - #00 SWP ;terrain ADD2 DUP2 - ( average ) LDAk STH INC2 LDAk STH INC2 ADDr LDAk STH INC2 ADDr LDA STH ADDr - LITr 04 DIVr - ( flatten ) STHkr ROT ROT STAk INC2 STAk INC2 STAk INC2 STA - STHr - -JMP2r - -( -@|drawing ) - -@redraw ( -- ) - - #0000 - DUP2 .Screen/x DEO2 - .Screen/y DEO2 - [ LIT2 80 -Screen/pixel ] DEO - -@draw-lander ( -- ) - - ( base ) - #0c06 get-pt #1406 get-pt #01 draw-line - #0d08 get-pt #1308 get-pt #01 draw-line - #0c06 get-pt #0d08 get-pt #01 draw-line - #1406 get-pt #1308 get-pt #01 draw-line - ( legs ) - #0d08 get-pt #0d0c get-pt #01 draw-line - #1308 get-pt #130c get-pt #01 draw-line - #0d0c get-pt #0e0f get-pt #01 draw-line - #130c get-pt #120f get-pt #01 draw-line - ( plume ) - [ LIT2r &plume $1 09 ] ADDr - #0e08 get-pt #1208 get-pt #02 draw-line - #0e08 get-pt #10 STHkr get-pt #02 draw-line - #1208 get-pt #10 STHr get-pt #02 draw-line - ( face ) - #26 .Screen/auto DEO - ;face-icn .Screen/addr DEO2 - #0014 .pos/x LDZ2 ADD2 .Screen/x DEO2 - #0014 .pos/y LDZ2 ADD2 .Screen/y DEO2 - #05 .Screen/sprite DEOk DEOk DEO - #00 .Screen/auto DEO - -JMP2r - -@draw-stage ( color -- ) - - ( x ) #0000 .Screen/x DEO2 - .stage/w LDZ #00 - &loop - STHk - ( a ) - #00 OVR #30 SFT2 - #00 STHr ;terrain ADD2 STH2k LDA #01 SUB #00 SWP #30 SFT2 - ( b ) - OVR2 #0008 ADD2 - STH2r INC2 LDA #01 SUB #00 SWP #30 SFT2 - #41 draw-line - INC GTHk ?&loop - POP2 - -JMP2r - -@get-pt ( id rad -- x* y* ) - - #00 SWP STH2 - .angle LDZ2 #001f AND2 NIP ADD - - #1f AND DUP ADD - #00 SWP ;circle-tbl ADD2 LDA2 - #00 SWP STH2kr MUL2 #04 SFT2 - ( center ) #0080 STH2kr #30 SFT2 SUB2 ADD2 #02 SFT2 - ( pos ) .pos/y LDZ2 ADD2 #03ff AND2 - ROT - #00 SWP STH2kr MUL2 #04 SFT2 - ( center ) #0080 STH2kr #30 SFT2 SUB2 ADD2 #02 SFT2 - ( pos ) .pos/x LDZ2 ADD2 #03ff AND2 - SWP2 - POP2r - -JMP2r - -@draw-line ( x1* y1* x2* y2* color -- ) - - ,&color STR - ,&y STR2 - ,&x STR2 - ,&y2 STR2 - ,&x2 STR2 - ,&x LDR2 ,&x2 LDR2 SUB2 abs2 ,&dx STR2 - #0000 ,&y LDR2 ,&y2 LDR2 SUB2 abs2 SUB2 ,&dy STR2 - #ffff [ LIT2 00 _&x2 ] LDR2 ,&x LDR2 lts2 DUP2 ADD2 ADD2 ,&sx STR2 - #ffff [ LIT2 00 _&y2 ] LDR2 ,&y LDR2 lts2 DUP2 ADD2 ADD2 ,&sy STR2 - [ LIT2 &dx $2 ] [ LIT2 &dy $2 ] ADD2 STH2 - &while - [ LIT2 &x2 $2 ] DUP2 .Screen/x DEO2 [ LIT2 &x $2 ] EQU2 - [ LIT2 &y2 $2 ] DUP2 .Screen/y DEO2 [ LIT2 &y $2 ] EQU2 - [ LIT2 &color $1 -Screen/pixel ] DEO - AND ?&end - STH2kr DUP2 ADD2 DUP2 - ,&dy LDR2 lts2 ?&skipy - STH2r ,&dy LDR2 ADD2 STH2 - ,&x2 LDR2 [ LIT2 &sx $2 ] ADD2 ,&x2 STR2 - &skipy - ,&dx LDR2 gts2 ?&while - STH2r ,&dx LDR2 ADD2 STH2 - ,&y2 LDR2 [ LIT2 &sy $2 ] ADD2 ,&y2 STR2 - !&while - &end - POP2r - -JMP2r - -( -@|prng ) - -@prng-init ( -- ) - - ( seed ) - #00 .DateTime/second DEI - #00 .DateTime/minute DEI #60 SFT2 EOR2 - #00 .DateTime/hour DEI #c0 SFT2 EOR2 ,prng/x STR2 - #00 .DateTime/hour DEI #04 SFT2 - #00 .DateTime/day DEI #10 SFT2 EOR2 - #00 .DateTime/month DEI #60 SFT2 EOR2 - .DateTime/year DEI2 #a0 SFT2 EOR2 ,prng/y STR2 - -JMP2r - -@prng ( -- number* ) - - LIT2 &x $2 - DUP2 #50 SFT2 EOR2 - DUP2 #03 SFT2 EOR2 - LIT2 &y $2 DUP2 ,&x STR2 - DUP2 #01 SFT2 EOR2 EOR2 - ,&y STR2k POP - -JMP2r - -( -@|stdlib ) - -@abs2 DUP2 #0f SFT2 EQU ?&end #0000 SWP2 SUB2 &end JMP2r -@lts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 GTH2 JMP2r -@gts2 #8000 STH2k ADD2 SWP2 STH2r ADD2 LTH2 JMP2r - -@phex ( short* -- ) - SWP phex/b - &b DUP #04 SFT phex/c - &c #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO -JMP2r - -@face-icn [ -0000 0000 0102 0408 0000 007e 8100 3cc3 -0000 0000 8040 2010 0911 1212 1212 1109 -0000 0042 0042 3c00 9088 4848 4848 8890 -0804 0201 0000 0000 c33c 0081 7e00 0000 -1020 4080 0000 0000 ] - -@circle-tbl [ - 8000 9802 b009 c715 da25 ea38 f64f fd67 - ff80 fd98 f6b0 eac7 dada c7ea b0f6 98fd - 80ff 67fd 4ff6 38ea 25da 15c7 09b0 0298 - 0080 0267 094f 1538 2525 3815 4f09 6702 ] - -@terrain - diff --git a/gui/lander/ss10x10.chr b/gui/lander/ss10x10.chr deleted file mode 100644 index d9d19c9e26deefb2829c4823df637d42706ed051..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIwu@L|f5Cza>1Z1c{Ap#@1stlP>PZ~SnzY@;;AMGdFH!D)5W??`;X=9> Cleaning" - -if [[ "$*" == *"--lint"* ]] -then - echo ">> Linting $SRC" - $LIN $SRC -fi - -echo ">> Assembling $SRC" -$ASM $SRC $DST - -if [[ "$*" == *"--save"* ]] -then - echo ">> Saving $DST" - cp $DST $CPY -fi - -echo ">> Running $DST" -$EMU $DST $ARG - diff --git a/gui/life/life.tal b/gui/life/life.tal deleted file mode 100644 index 513a1fc..0000000 --- a/gui/life/life.tal +++ /dev/null @@ -1,291 +0,0 @@ -( uxnemu life.rom ) - -( Game Of Life: - Any live cell with fewer than two live neighbours dies, as if by underpopulation. - Any live cell with two or three live neighbours lives on to the next generation. - Any live cell with more than three live neighbours dies, as if by overpopulation. - Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction. ) - -|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 -|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 -|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 -|30 @Audio0 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 -|80 @Controller &vector $2 &button $1 &key $1 -|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &wheel $1 - -|0000 - - @world &frame $1 &count $2 - @anchor &x $2 &y $2 &x2 $2 &y2 $2 - @pointer &x $2 &y $2 - -|0100 ( -> ) - - ( theme ) - #02cf .System/r DEO2 - #02ff .System/g DEO2 - #024f .System/b DEO2 - ( resize ) - #00c0 - DUP2 .Screen/width DEO2 - .Screen/height DEO2 - ( vectors ) - ;on-frame .Screen/vector DEO2 - ;on-mouse .Mouse/vector DEO2 - ;on-control .Controller/vector DEO2 - ( glider ) - #0703 set-cell - #0704 set-cell - #0504 set-cell - #0705 set-cell - #0605 set-cell - ( center ) - .Screen/width DEI2 #01 SFT2 #0040 SUB2 - DUP2 .anchor/x STZ2 - #007e ADD2 .anchor/x2 STZ2 - .Screen/height DEI2 #01 SFT2 #0040 SUB2 - DUP2 .anchor/y STZ2 - #007e ADD2 .anchor/y2 STZ2 - -BRK - -@on-frame ( -> ) - - .Mouse/state DEI #00 EQU #01 JCN [ BRK ] - #0000 .world/count STZ2 - .world/frame LDZ INC - DUP .world/frame STZ - #03 AND #00 EQU #01 JCN [ BRK ] - run - &paused - -BRK - -@on-mouse ( -> ) - - ( clear last cursor ) - ;cursor .Screen/addr DEO2 - .pointer/x LDZ2 .Screen/x DEO2 - .pointer/y LDZ2 .Screen/y DEO2 - #40 .Screen/sprite DEO - ( record pointer positions ) - .Mouse/x DEI2 DUP2 .pointer/x STZ2 .Screen/x DEO2 - .Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2 - ( colorize on state ) - #42 [ .Mouse/state DEI #00 NEQ ] ADD .Screen/sprite DEO - ( on touch in rect ) - .Mouse/state DEI #00 NEQ #01 JCN [ BRK ] - .Mouse/x DEI2 .Mouse/y DEI2 .anchor within-rect [ JMP BRK ] - ( paint ) - .Mouse/x DEI2 .anchor/x LDZ2 SUB2 #01 SFT NIP - .Mouse/y DEI2 .anchor/y LDZ2 SUB2 #01 SFT NIP - set-cell - ( draw ) - draw-grid - -BRK - -@on-control ( -> ) - - ( toggle play ) - .Controller/key DEI #20 NEQ ?&no-toggle - ;on-frame - .Screen/vector DEI2 ;on-frame/paused EQU2 ?&swap - POP2 ;on-frame/paused - &swap - .Screen/vector DEO2 - &no-toggle - ( clear on home ) - .Controller/button DEI #08 NEQ ?&no-reset - ;bank1 #0400 mclr - &no-reset - -BRK - -( -@|core ) - -@run ( -- ) - - ( clear buffer ) - ;bank2 #1000 mclr - ( run grid ) - #4000 - &ver - STHk - #4000 - &hor - DUP STHkr run-cell - INC GTHk ?&hor - POP2 - POPr - INC GTHk ?&ver - POP2 - ( move buffer ) - ;bank2 ;bank1 #1000 mcpy - ( draw ) -!draw-grid - -@run-cell ( x y -- ) - - ( x y ) DUP2k - ( neighbours ) get-neighbours - ( state ) ROT ROT get-cell - #00 EQU ?&dead - DUP #02 LTH ?&dies - DUP #03 GTH ?&dies - POP !&save - &dies POP POP2 JMP2r - &dead - DUP #03 EQU ?&birth POP POP2 JMP2r - &birth POP - -!&save - - &save ( x y -- ) - STH2 #01 STH2r get-index #1000 ADD2 STA - .world/count LDZ2 INC2 .world/count STZ2 - JMP2r - -@get-index ( x y -- index* ) - - ( y ) #3f AND #00 SWP #60 SFT2 - ( x ) ROT #3f AND #00 SWP ADD2 - ;bank1 ADD2 - -JMP2r - -@set-cell ( x y -- ) - - STH2 #01 STH2r get-index STA - -JMP2r - -@get-cell ( x y -- cell ) - - get-index LDA - -JMP2r - -@get-neighbours ( x y -- neighbours ) - - ,&origin STR2 - LITr 00 - #0800 - &loop - #00 OVRk ADD2 ;&mask ADD2 LDA2 [ LIT2 &origin $2 ] - ROT ADD STH ADD STHr get-cell STH ADDr - INC GTHk ?&loop - POP2 - STHr - -JMP2r - &mask [ ffff 00ff 01ff ff00 0100 ff01 0001 0101 ] - -( -@|drawing ) - -@draw-grid ( -- ) - - ( draw cell count ) - .anchor/x LDZ2 .Screen/x DEO2 - .anchor/y2 LDZ2 #0008 ADD2 .Screen/y DEO2 - #01 .Screen/auto DEO - .world/count LDZ2 draw-short - #00 .Screen/auto DEO - #4000 - &ver - #00 OVRk ADD2 .anchor/y LDZ2 ADD2 .Screen/y DEO2 - STHk - #4000 - &hor - #00 OVRk ADD2 .anchor/x LDZ2 ADD2 .Screen/x DEO2 - DUP STHkr get-cell INC .Screen/pixel DEO - INC GTHk ?&hor - POP2 - POPr - INC GTHk ?&ver - POP2 - -JMP2r - -@draw-short ( short* -- ) - - SWP draw-byte - -@draw-byte ( byte color -- ) - - DUP #04 SFT draw-hex #0f AND - -@draw-hex ( char color -- ) - - #00 SWP #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2 - [ LIT2 03 -Screen/sprite ] DEO - -JMP2r - -@within-rect ( x* y* rect -- flag ) - - STH - ( y < rect.y1 ) DUP2 STHkr INC INC LDZ2 LTH2 ?&skip - ( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ?&skip - SWP2 - ( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ?&skip - ( x > rect.x2 ) DUP2 STHkr #04 ADD LDZ2 GTH2 ?&skip - POP2 POP2 POPr - #01 -JMP2r - &skip - POP2 POP2 POPr #00 JMP2r - -( -@|stdlib ) - -@mclr ( addr* len* -- ) - - OVR2 ADD2 SWP2 - &loop - STH2k #00 STH2r STA - INC2 GTH2k ?&loop - POP2 POP2 - -JMP2r - -@mcpy ( src* dst* len* -- ) - - SWP2 STH2 - OVR2 ADD2 SWP2 - &loop - LDAk STH2kr STA INC2r - INC2 GTH2k ?&loop - POP2 POP2 - POP2r - -JMP2r - -( -@|assets ) - -@cursor [ - 80c0 e0f0 f8e0 1000 ] - -@font-hex [ - 7c82 8282 8282 7c00 - 3010 1010 1010 3800 - 7c82 027c 8080 fe00 - 7c82 021c 0282 7c00 - 2242 82fe 0202 0200 - fe80 807c 0282 7c00 - 7c82 80fc 8282 7c00 - fe82 0408 0810 1000 - 7c82 827c 8282 7c00 - 7c82 827e 0202 0200 - 7c82 82fe 8282 8200 - fc82 82fc 8282 fc00 - 7c82 8080 8082 7c00 - fc82 8282 8282 fc00 - fe80 80f0 8080 fe00 - fe80 80f0 8080 8000 ] - -@bank1 $1000 @bank2 - diff --git a/gui/minesweeper/build.sh b/gui/minesweeper/build.sh deleted file mode 100755 index 73faf13..0000000 --- a/gui/minesweeper/build.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -e - -ASM="uxncli $HOME/roms/drifblim.rom" -EMU="uxnemu" -LIN="uxncli $HOME/roms/uxnlin.rom" - -SRC="minesweeper.tal" -DST="minesweeper.rom" -CPY="$HOME/roms" -ARG="" - -if [[ "$*" == *"--lint"* ]] -then - $LIN $SRC -fi - -$ASM $SRC $DST - -if [[ "$*" == *"--save"* ]] -then - cp $DST $CPY -fi - -$EMU $DST $ARG - diff --git a/gui/minesweeper/minesweeper.tal b/gui/minesweeper/minesweeper.tal deleted file mode 100644 index b6e06ea..0000000 --- a/gui/minesweeper/minesweeper.tal +++ /dev/null @@ -1,708 +0,0 @@ -( minesweeper ) - -|00 @System &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1 -|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 -|80 @Controller &vector $2 &button $1 &key $1 &func $1 -|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &scrollx $2 &scrolly $2 -|c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 -|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 - -|0000 - - @game &started $1 &timer $2 &dead $1 - @pointer &x $2 &y $2 - @grid &x $2 &y $2 &x2 $2 &y2 $2 - -( program ) - -|0100 ( -> ) - - ( theme ) - #cf80 .System/r DEO2 - #cf80 .System/g DEO2 - #cf80 .System/b DEO2 - - ( DOS resolution ) - #00a0 .Screen/width DEO2 - #00d0 .Screen/height DEO2 - - prng-init - load-theme - - ( place grid ) - #0010 DUP2 .grid/x STZ2 #007f ADD2 .grid/x2 STZ2 - #0040 DUP2 .grid/y STZ2 #007f ADD2 .grid/y2 STZ2 - - ( draw frames ) - #0008 DUP2 #1004 draw-frame - #0008 #0038 #1010 draw-frame - - draw-grid - draw-progress - draw-status - draw-timer - - ( vectors ) - ;on-mouse .Mouse/vector DEO2 - ;on-frame .Screen/vector DEO2 - ;on-button .Controller/vector DEO2 - -BRK - -@on-frame ( -> ) - - .game/started LDZ #00 NEQ [ JMP BRK ] - - [ LIT &f $1 ] #3c NEQ ,&no-second JCN - #00 ,&f STR - .game/timer LDZ2k INC2 ROT STZ2 - draw-timer - &no-second - - ,&f LDR INC ,&f STR - -BRK - -@on-button ( -> ) - - .game/dead LDZ #00 EQU ,&alive JCN - reset - &alive - -BRK - -@on-mouse ( -> ) - - ( clear last cursor ) - .pointer/x LDZ2 .Screen/x DEO2 - .pointer/y LDZ2 .Screen/y DEO2 - #40 .Screen/sprite DEO - - ;pointer-icn .Screen/addr DEO2 - - ( draw new cursor ) - .Mouse/x DEI2 DUP2 .pointer/x STZ2 .Screen/x DEO2 - .Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2 - #43 .Mouse/state DEI #00 NEQ DUP ADD SUB .Screen/sprite DEO - - .Mouse/state DEI #00 NEQ [ JMP BRK ] - - .Mouse/x DEI2 .Mouse/y DEI2 - OVR2 OVR2 .grid within-rect ;touch-grid JCN2 - POP2 POP2 - - .game/dead LDZ #00 EQU ,&alive JCN - reset - &alive - - #00 .Mouse/state DEO - -BRK - -@touch-grid ( x* y* -> ) - - .grid/y LDZ2 SUB2 #04 SFT2 NIP STH - .grid/x LDZ2 SUB2 #04 SFT2 NIP STHr - - ( skip on death ) - .game/dead LDZ ,&skip JCN - - .Mouse/state DEI #01 GTH ,touch-grid-flag JCN - - DUP2 reveal - - &skip - POP2 - #00 .Mouse/state DEO - -BRK - -@touch-grid-flag ( x y -> ) - - ( unset ) - DUP2 #30 SFT ADD #00 SWP ;world/flags ADD2 LDA #00 EQU ,&add-flag JCN - #00 ,&set-flag JSR BRK - &add-flag - ( add flag if have flags left ) - count-flags ,&has-flags JCN - POP2 BRK - &has-flags - ( can set ) - #01 ,&set-flag JSR - ( test victory ) - count-left ,&no-victory JCN - victory - &no-victory - -BRK - &set-flag ( x y value -- ) - STH - #30 SFT ADD #00 SWP ;world/flags ADD2 STHr ROT ROT STA - draw-progress - draw-grid - #00 .Mouse/state DEO - JMP2r - -( -@|core ) - -@reset ( -- ) - - #0000 .game/timer STZ2 - #00 .game/started STZ - #00 .game/dead STZ - - ;world #0100 mclr - - draw-status - draw-progress - draw-timer - draw-grid - -JMP2r - -@explode ( -- ) - - #01 .game/dead STZ - #00 .game/started STZ - draw-status - draw-grid - -JMP2r - -@victory ( -- ) - - #02 .game/dead STZ - #00 .game/started STZ - draw-status - draw-grid - -JMP2r - -@start ( x y -- ) - - #01 .game/started STZ - prng-init - #1000 - &while - #01 prng #003f AND2 ;world ADD2 STA - INC GTHk ,&while JCN - POP2 - ( remove mine on first click ) - #00 ROT ROT #30 SFT ADD #00 SWP ;world/mines ADD2 STA - update-values - -JMP2r - -@reveal ( x y -- ) - - ( start on idle ) - .game/started LDZ ,&started JCN - DUP2 start - &started - ( ignore already revealed ) - DUP2 get-revealed #00 EQU ,&unrevealed JCN - POP2 JMP2r - &unrevealed - ( ignore flagged ) - DUP2 #30 SFT ADD #00 SWP ;world/flags ADD2 LDA #00 EQU ,&unflagged JCN - POP2 JMP2r - &unflagged - ( test if killing ) - DUP2 get-mine #00 EQU ,&survive JCN - POP2 explode JMP2r - &survive - open - draw-grid - draw-progress - -JMP2r - -@open ( x y -- ) - - DUP2 set-revealed - - STH2 - #0800 - &loop - #00 OVRk ADD2 ;neighbors ADD2 LDA2 - STH2kr ROT ADD ROT ROT ADD SWP - DUP2 get-revealed ,&continue JCN - DUP2 get-value ,&continue JCN - DUP2 open-zone - &continue - POP2 - INC GTHk ,&loop JCN - POP2 - POP2r - -JMP2r - -@open-zone ( x y -- ) - - STH2 - #0800 - &loop - #00 OVRk ADD2 ;neighbors ADD2 LDA2 - STH2kr ROT ADD ROT ROT ADD SWP - set-revealed - INC GTHk ,&loop JCN - POP2 - STH2r open - -JMP2r - -@get-value ( x y -- value ) - - OVR #08 LTH ,&in-x JCN POP2 #ff JMP2r &in-x - DUP #08 LTH ,&in-y JCN POP2 #ff JMP2r &in-y - #30 SFT ADD #00 SWP - DUP2 ;world/mines ADD2 LDA #00 EQU ,&no-mine JCN - POP2 #ff JMP2r - &no-mine - ;world/values ADD2 LDA - -JMP2r - -@get-revealed ( x y -- value ) - - OVR #08 LTH ,&in-x JCN POP2 #ff JMP2r &in-x - DUP #08 LTH ,&in-y JCN POP2 #ff JMP2r &in-y - #30 SFT ADD #00 SWP ;world/revealed ADD2 LDA - -JMP2r - -@set-revealed ( x y -- ) - - OVR #08 LTH ,&in-x JCN POP2 JMP2r &in-x - DUP #08 LTH ,&in-y JCN POP2 JMP2r &in-y - #30 SFT ADD #00 SWP ;world/revealed ADD2 #01 ROT ROT STA - -JMP2r - -@update-values ( -- ) - - #0800 - &ver - STHk - #0800 - &hor - DUP STHkr ,count-mines-neighbors JSR - OVR STHkr #30 SFT ADD #00 SWP ;world/values ADD2 STA - INC GTHk ,&hor JCN - POP2 - POPr - #0010 .Screen/x DEO2 - .Screen/y DEI2k #0010 ADD2 ROT DEO2 - INC GTHk ,&ver JCN - POP2 - -JMP2r - -@count-mines-neighbors ( x y -- count ) - - ,&origin STR2 - LITr 00 - #0800 - &loop - ( load neighbor ) #00 OVRk ADD2 ;neighbors ADD2 LDA2 - ( add positions ) [ LIT2 &origin $2 ] ROT ADD ROT ROT ADD SWP - ( incr counter ) ,get-mine JSR STH ADDr - INC GTHk ,&loop JCN - POP2 - STHr - -JMP2r - -@get-mine ( x y -- flag ) - - OVR #08 LTH ,&in-x JCN POP2 #00 JMP2r &in-x - DUP #08 LTH ,&in-y JCN POP2 #00 JMP2r &in-y - #30 SFT ADD #00 SWP ;world/mines ADD2 LDA - -JMP2r - -@count-flags ( -- flags ) - - LITr 00 - #4000 - &loop - #00 OVR ;world/mines ADD2 LDA STH ADDr - #00 OVR ;world/flags ADD2 LDA STH SUBr - INC GTHk ,&loop JCN - POP2 - STHr - -JMP2r - -@count-left ( -- mines ) - - LITr 00 - #4000 - &loop - #00 OVR ;world/mines ADD2 LDA STH - #00 OVR ;world/flags ADD2 LDA STH LIT2r 0100 EQU2r ADDr - INC GTHk ,&loop JCN - POP2 - STHr - -JMP2r - -( drawing ) - -@draw-frame ( x* y* w h -- ) - - DUP ,&h2 STR ,&h1 STR - DUP ,&w2 STR ,&w1 STR - DUP2 .Screen/y DEO2 - OVR2 .Screen/x DEO2 - #01 .Screen/auto DEO - ;frame-chrs/tl .Screen/addr DEO2 - #81 .Screen/sprite DEO - ;frame-chrs/tc .Screen/addr DEO2 - [ LIT &w1 $1 ] ,&repeat JSR - #02 .Screen/auto DEO - ;frame-chrs/tr .Screen/addr DEO2 - #81 .Screen/sprite DEO - ;frame-chrs/mr .Screen/addr DEO2 - [ LIT &h1 $1 ] ,&repeat JSR - ( left ) - #0008 ADD2 .Screen/y DEO2 - .Screen/x DEO2 - ;frame-chrs/ml .Screen/addr DEO2 - [ LIT &h2 $1 ] ,&repeat JSR - #01 .Screen/auto DEO - ;frame-chrs/bl .Screen/addr DEO2 - #81 .Screen/sprite DEO - ;frame-chrs/bc .Screen/addr DEO2 - [ LIT &w2 $1 ] ,&repeat JSR - ;frame-chrs/br .Screen/addr DEO2 - #81 .Screen/sprite DEO - -JMP2r - &repeat - #00 &repeat-loop #81 .Screen/sprite DEO INC GTHk ,&repeat-loop JCN POP2 - JMP2r - -@draw-grid ( -- ) - - #05 .Screen/auto DEO - #0010 .Screen/x DEO2 - #0040 .Screen/y DEO2 - - #0800 - &ver - STHk - #0800 - &hor - #00 OVR STHkr #30 SFT ADD ,get-tile JSR #81 draw-tile - INC GTHk ,&hor JCN - POP2 - POPr - #0010 .Screen/x DEO2 - .Screen/y DEI2k #0010 ADD2 ROT DEO2 - INC GTHk ,&ver JCN - POP2 - #00 .Screen/auto DEO - -JMP2r - -@get-tile ( id* -- sprite* ) - - ( mine ) - .game/dead LDZ #00 EQU ,&alive JCN - DUP2 ;world ADD2 LDA #00 EQU ,&no-mine JCN - POP2 ;tile-chrs/mine JMP2r - &no-mine - &alive - ( flag ) - DUP2 ;world/flags ADD2 LDA #00 EQU ,&no-flag JCN - POP2 ;tile-chrs/flagged JMP2r - &no-flag - ( revealed ) - DUP2 ;world/revealed ADD2 LDA ,&no-seen JCN - POP2 ;tile-chrs/untouched JMP2r - &no-seen - ( digits ) - ;world/values ADD2 LDA #00 SWP #60 SFT2 ;tile-chrs/digits ADD2 - -JMP2r - -@draw-tile ( addr* color -- ) - - STH - .Screen/addr DEO2 - STHkr .Screen/sprite DEOk DEO - .Screen/x DEI2k #0010 SUB2 ROT DEO2 - .Screen/y DEI2k #0008 ADD2 ROT DEO2 - STHr .Screen/sprite DEOk DEO - .Screen/y DEI2k #0008 SUB2 ROT DEO2 - -JMP2r - -@draw-status ( -- ) - - #05 .Screen/auto DEO - #0048 .Screen/x DEO2 - #0018 .Screen/y DEO2 - ;status-chrs/alive #00 .game/dead LDZ #60 SFT2 ADD2 #81 ,draw-tile JSR - #00 .Screen/auto DEO - -JMP2r - -@draw-progress ( -- ) - - #0018 .Screen/x DEO2 - #0018 .Screen/y DEO2 - #00 count-flags ,draw-display JSR - -JMP2r - -@draw-timer ( -- ) - - #0058 .Screen/x DEO2 - #0018 .Screen/y DEO2 - .game/timer LDZ2 ,draw-display JSR - -JMP2r - -@draw-display ( value* -- ) - - #05 .Screen/auto DEO - DUP2 #0064 DIV2 NIP ,draw-display-char JSR - DUP2 #000a DIV2 NIP ,draw-display-char JSR - NIP - -@draw-display-char ( addr* color -- ) - - #0a ( MOD ) DIVk MUL SUB #00 SWP #60 SFT2 ;digits-chrs ADD2 #85 draw-tile - -JMP2r - -( stdlib ) - -@mclr ( addr* len* -- ) - - OVR2 ADD2 SWP2 - &loop - STH2k #00 STH2r STA - INC2 GTH2k ,&loop JCN - POP2 POP2 - -JMP2r - -@prng-init ( -- ) - - ( seed ) - #00 .DateTime/second DEI - #00 .DateTime/minute DEI #60 SFT2 EOR2 - #00 .DateTime/hour DEI #c0 SFT2 EOR2 ,prng/x STR2 - #00 .DateTime/hour DEI #04 SFT2 - #00 .DateTime/day DEI DUP2 ADD2 EOR2 - #00 .DateTime/month DEI #60 SFT2 EOR2 - .DateTime/year DEI2 #a0 SFT2 EOR2 ,prng/y STR2 - -JMP2r - -@prng ( -- number* ) - - LIT2 &x $2 - DUP2 #50 SFT2 EOR2 - DUP2 #03 SFT2 EOR2 - LIT2 &y $2 DUP2 ,&x STR2 - DUP2 #01 SFT2 EOR2 EOR2 - ,&y STR2k POP - -JMP2r - -@within-rect ( x* y* rect -- flag ) - - STH - ( y < rect.y1 ) DUP2 STHkr INC INC LDZ2 LTH2 ,&skip JCN - ( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN - SWP2 - ( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN - ( x > rect.x2 ) DUP2 STHkr #04 ADD LDZ2 GTH2 ,&skip JCN - POP2 POP2 POPr - #01 -JMP2r - &skip - POP2 POP2 POPr - #00 - -JMP2r - -( theme ) - -@load-theme ( -- ) - - ;&path .File/name DEO2 - #0002 .File/length DEO2 - ;&r .File/read DEO2 - ;&g .File/read DEO2 - ;&b .File/read DEO2 - .File/success DEI2 ORA #01 JCN JMP2r - LIT2 &r $2 .System/r DEO2 - LIT2 &g $2 .System/g DEO2 - LIT2 &b $2 .System/b DEO2 - -JMP2r - &path ".theme $1 - -( -@|assets ) - -@neighbors - ffff 00ff 01ff - ff00 0100 - ff01 0001 0101 - -@pointer-icn - 80c0 e0f0 f8e0 1000 - -@tile-chrs - &untouched - ffff c0c0 c0c0 c0c0 0000 0000 0000 0000 - fefc 0000 0000 0000 0001 0303 0303 0303 - c0c0 c0c0 c0c0 8000 0000 0000 0000 3f7f - 0000 0000 0000 0000 0303 0303 0303 ffff - &mine - 0001 0117 0f1f 1f7f 0001 0117 0b15 1b7f - 0000 00d0 e0f0 f0fc 0100 01d0 e1f0 f1fc - 1f1f 0f17 0101 0000 1f1f 0f17 0101 00aa - f0f0 e0d0 0000 0000 f1f0 e1d0 0100 01ab - &flagged - ffff c0c0 c1c1 c1c1 0000 0000 0103 0703 - fefc 0000 0000 0000 0001 0303 0303 0303 - c1c0 c7cf c0c0 8000 0101 070f 0000 3f7f - 0000 c0e0 0000 0000 0303 c3e3 0303 ffff - &digits - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0100 0100 0100 0100 - 0000 0000 0000 0000 0000 0000 0000 00aa - 0000 0000 0000 0000 0100 0100 0100 01ab - ( 1 ) - 0000 0003 0301 0101 0000 0003 0301 0101 - 0000 0080 8080 8080 0100 0180 8180 8180 - 0101 0101 0100 0000 0101 0101 0100 00aa - 8080 8080 8000 0000 8180 8180 8100 01ab - ( 2 ) - 0000 001f 1f00 000f 0000 001f 1f00 000f - 0000 00f0 f818 18f8 0100 01f0 f918 19f8 - 1f18 181f 1f00 0000 1f18 181f 1f00 00aa - f000 00f8 f800 0000 f100 01f8 f900 01ab - ( 3 ) - 0000 001f 1f00 001f 0000 001f 1f00 001f - 0000 00f0 f818 18f0 0100 01f0 f918 19f0 - 1f00 001f 1f00 0000 1f00 001f 1f00 00aa - f018 18f8 f000 0000 f118 19f8 f100 01ab - ( 4 ) - 0000 0018 1818 181f 0000 0018 1818 181f - 0000 0018 1818 18f8 0100 0118 1918 19f8 - 0f00 0000 0000 0000 0f00 0000 0000 00aa - f818 1818 1800 0000 f918 1918 1900 01ab - ( 5 ) - 0000 001f 1f18 181f 0000 001f 1f18 181f - 0000 00f8 f800 00f0 0100 01f8 f900 01f0 - 0f00 001f 1f00 0000 0f00 001f 1f00 00aa - f818 18f8 f000 0000 f918 19f8 f100 01ab - ( 6 ) - 0000 000f 1f18 181f 0000 000f 1f18 181f - 0000 00f8 f800 00f0 0100 01f8 f900 01f0 - 1f18 181f 0f00 0000 1f18 181f 0f00 00aa - f818 18f8 f000 0000 f918 19f8 f100 01ab - ( 7 ) - 0000 001f 1f00 0000 0000 001f 1f00 0000 - 0000 00f0 f818 1838 0100 01f0 f918 1938 - 0000 0000 0000 0000 0000 0000 0000 00aa - 3818 1818 1800 0000 3918 1918 1900 01ab - ( 8 ) - 0000 000f 1f18 180f 0000 000f 1f18 180f - 0000 00f0 f818 18f0 0100 01f0 f918 19f0 - 0f18 181f 0f00 0000 0f18 181f 0f00 00aa - f018 18f8 f000 0000 f118 19f8 f100 01ab - -@frame-chrs - &tl 0000 0000 0000 0000 0000 0000 0000 0303 - &tc 0000 0000 0000 0000 0000 0000 0000 ffff - &tr 0000 0000 0000 0040 0000 0000 0000 8000 - &ml 0000 0000 0000 0000 0303 0303 0303 0303 - &mr c0c0 c0c0 c0c0 c0c0 0000 0000 0000 0000 - &bl 0001 0000 0000 0000 0200 0000 0000 0000 - &bc ffff 0000 0000 0000 0000 0000 0000 0000 - &br c0c0 0000 0000 0000 0000 0000 0000 0000 - -@status-chrs - &alive - 0007 1f3f 3f7f 7f7f 0007 1820 2040 4044 - 00e0 f8fc fcfe fefe 00e0 1804 0402 0222 - 7f7f 7f3f 3f1f 0700 4048 4720 2018 0700 - fefe fefc fcf8 e000 0212 e204 0418 e000 - &dead - 0007 1f3f 3f7f 7f7f 0007 1820 2040 4a44 - 00e0 f8fc fcfe fefe 00e0 1804 0402 5222 - 7f7f 7f3f 3f1f 0700 4a40 4728 2018 0700 - fefe fefc fcf8 e000 5202 e214 0418 e000 - &victory - 0007 1f3f 3f7f 7f7f 0007 1820 2040 444a - 00e0 f8fc fcfe fefe 00e0 1804 0402 2252 - 7f7f 7f3f 3f1f 0700 4040 4221 2018 0700 - fefe fefc fcf8 e000 0202 4284 0418 e000 - -@digits-chrs - ( 0 ) - ffff ffff ffff ffe0 ffc0 a09f 9f9f 9fbf - ffff ffff ffff ff07 ff03 05f9 f9f9 f9fd - f0ff ffff ffff ffff 9f9f 9f9f 9fa0 c0ff - 0fff ffff ffff ffff f9f9 f9f9 f905 03ff - ( 1 ) - ffc0 a09f 9f9f 9fa0 ffff ffff ffff ffff - ff03 07ff ffff ff07 ffff fdf9 f9f9 f9fd - 909f 9f9f 9fa0 c0ff ffff ffff ffff ffff - 0fff ffff ff07 03ff f9f9 f9f9 f9fd ffff - ( 2 ) - ffff bf9f 9f9f 9fbf ffc0 e0ff ffff ffe0 - ffff ffff ffff ffff ff03 05f9 f9f9 f905 - ffff ffff ffff ffff 909f 9f9f 9fa0 c0ff - f9f9 f9f9 f9fd ffff 0fff ffff ff07 03ff - ( 3 ) - ffff bf9f 9f9f 9fbf ffc0 e0ff ffff ffe0 - ffff ffff ffff ffff ff03 05f9 f9f9 f905 - 9f9f 9f9f 9fbf ffff f0ff ffff ffe0 c0ff - ffff ffff ffff ffff 09f9 f9f9 f905 03ff - ( 4 ) - ffc0 e0ff ffff ffff ffff bf9f 9f9f 9fa0 - ff03 07ff ffff ffff ffff fdf9 f9f9 f905 - 9f9f 9f9f 9fa0 c0ff f0ff ffff ffff ffff - ffff ffff ff07 03ff 09f9 f9f9 f9fd ffff - ( 5 ) - ffff ffff ffff ffff ffc0 a09f 9f9f 9fa0 - ffff fdf9 f9f9 f9fd ff03 07ff ffff ff07 - 9f9f 9f9f 9fbf ffff f0ff ffff ffe0 c0ff - ffff ffff ffff ffff 09f9 f9f9 f905 03ff - ( 6 ) - ffc0 e0ff ffff ffff ffff bf9f 9f9f 9fa0 - ff03 05f9 f9f9 f9fd ffff ffff ffff ff07 - ffff ffff ffff ffff 909f 9f9f 9fa0 c0ff - ffff ffff ffff ffff 09f9 f9f9 f905 03ff - ( 7 ) - ffff bf9f 9f9f 9fa0 ffc0 e0ff ffff ffff - ffff ffff ffff ff07 ff03 05f9 f9f9 f9fd - 909f 9f9f 9fa0 c0ff ffff ffff ffff ffff - 0fff ffff ff07 03ff f9f9 f9f9 f9fd ffff - ( 8 ) - ffff ffff ffff ffff ffc0 a09f 9f9f 9fa0 - ffff ffff ffff ffff ff03 05f9 f9f9 f905 - ffff ffff ffff ffff 909f 9f9f 9fa0 c0ff - ffff ffff ffff ffff 09f9 f9f9 f905 03ff - ( 9 ) - ffff ffff ffff ffff ffc0 a09f 9f9f 9fa0 - ffff ffff ffff ffff ff03 05f9 f9f9 f905 - 9f9f 9f9f 9fa0 c0ff f0ff ffff ffff ffff - ffff ffff ff07 03ff 09f9 f9f9 f9fd ffff - -@world - &mines $40 - &revealed $40 - &values $40 - &flags $40 diff --git a/gui/sand/build.sh b/gui/sand/build.sh deleted file mode 100755 index 76d96e9..0000000 --- a/gui/sand/build.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -e - -ID="sand" - -ASM="uxncli $HOME/roms/drifblim.rom" -EMU="uxnemu" -LIN="uxncli $HOME/roms/uxnlin.rom" -SRC="${ID}.tal" -DST="${ID}.rom" -CPY="$HOME/roms" -ARG="" - -if [[ "$*" == *"--lint"* ]] -then - $LIN $SRC -fi - -$ASM $SRC $DST - -if [[ "$*" == *"--save"* ]] -then - cp $DST $CPY -fi - -$EMU $DST $ARG - diff --git a/gui/sand/sand.tal b/gui/sand/sand.tal deleted file mode 100644 index f9346a2..0000000 --- a/gui/sand/sand.tal +++ /dev/null @@ -1,214 +0,0 @@ -( usage: uxnemu sand.rom - mouse1 water - mouse2 sand - mouse3 rock ) - -|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 -|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 -|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 -|80 @Controller &vector $2 &button $1 &key $1 -|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &scrollx $2 &scrolly $2 -|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 -|c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 - -|0100 - -( -@|vectors ) - -@on-reset - - ( theme ) - #07cf .System/r DEO2 - #0caf .System/g DEO2 - #0faf .System/b DEO2 - - #0100 .Screen/width DEO2 - #0100 .Screen/height DEO2 - - ;on-frame .Screen/vector DEO2 - ;on-mouse .Mouse/vector DEO2 - - prng-init - - #010e DEO - -BRK - -@on-frame ( -> ) - - eval - redraw - -BRK - -@on-mouse ( -> ) - - [ LIT2 00 -Mouse/state ] DEI NEQ #41 ADD ;cursor-icn update-cursor - - ( read mouse state ) - .Mouse/state DEI ?&on-touch BRK - -&on-touch ( -> ) - - ( A mouse button was pressed ) - .Mouse/state DEI DUP #04 EQU SUB - .Mouse/y DEI2 NIP - .Mouse/x DEI2 NIP - set-cell - -BRK - -( -@|core ) - -@eval-sand ( y x cell -- y x ) - - POP - OVR #ff EQU ?eval/resume - ( south ) - SWPk INC SWP STH2k get-cell #01 GTH ?&has-s - DUP2 STH2r swap-cells !eval/resume - &has-s - POP2r - ( south sides ) - SWPk INC SWP #01ff prng ADD #01 AND [ JMP SWP POP ] ADD STH2k get-cell #01 GTH ?&has-s2 - DUP2 STH2r swap-cells !eval/resume - &has-s2 - POP2r - -!eval/resume - -@eval-water ( y x cell -- y x ) - - POP - OVR #ff EQU ?eval/resume - ( south ) - SWPk INC SWP STH2k get-cell ?&has-s - DUP2 STH2r swap-cells !eval/resume - &has-s - POP2r - ( south sides ) - DUP2 #01ff prng ADD #01 AND [ JMP SWP POP ] ADD STH2k get-cell ?&has-s2 - DUP2 STH2r swap-cells !eval/resume - &has-s2 - POP2r - -!eval/resume - -@eval-rock ( y x cell -- y x ) - - POP - OVR #ff EQU ?eval/resume - ( south ) - SWPk INC SWP STH2k get-cell #01 GTH ?&has-s - DUP2 STH2r swap-cells !eval/resume - &has-s - POP2r - -!eval/resume - -@eval ( -- ) - - #ffff - &l - DUP2 get-cell - DUP #01 EQU ?eval-water - DUP #02 EQU ?eval-sand - DUP #03 EQU ?eval-rock - POP - &resume - #0001 SUB2 ORAk ?&l - POP2 - -@redraw ( -- ) - - #0000 - &l - DUP2 #00ff AND2 .Screen/x DEO2 - DUP2 #0100 DIV2 .Screen/y DEO2 - DUP2 get-cell .Screen/pixel DEO - INC2 ORAk ?&l - POP2 - -JMP2r - -@swap-cells ( a* b* -- ) - - #02 SFT2 ;world ADD2 SWP2 - #02 SFT2 ;world ADD2 mswap - -JMP2r - -@set-cell ( type y x -- ) - - #02 SFT2 ;world ADD2 STA - -JMP2r - -@get-cell ( y x -- type ) - - #02 SFT2 ;world ADD2 LDA - -JMP2r - -( -@|drawing ) - -@update-cursor ( color addr* -- ) - - [ LIT2 00 -Screen/auto ] DEO - #40 draw-cursor - .Mouse/x DEI2 ,draw-cursor/x STR2 - .Mouse/y DEI2 ,draw-cursor/y STR2 - .Screen/addr DEO2 - -@draw-cursor ( color -- ) - - [ LIT2 &x $2 ] .Screen/x DEO2 - [ LIT2 &y $2 ] .Screen/y DEO2 - .Screen/sprite DEO - -JMP2r - -( -@|stdlib ) - -@mswap ( a* b* -- ) - - SWP2k LDA STH STH2 LDA STH STH2 STAr STAr - -JMP2r - -@prng-init ( -- ) - - ( seed ) - #00 .DateTime/second DEI - #00 .DateTime/minute DEI #60 SFT2 EOR2 - #00 .DateTime/hour DEI #c0 SFT2 EOR2 ,prng/x STR2 - #00 .DateTime/hour DEI #04 SFT2 - #00 .DateTime/day DEI #10 SFT2 EOR2 - #00 .DateTime/month DEI #60 SFT2 EOR2 - .DateTime/year DEI2 #a0 SFT2 EOR2 ,prng/y STR2 - -JMP2r - -@prng ( -- number* ) - - LIT2 &x $2 - DUP2 #50 SFT2 EOR2 - DUP2 #03 SFT2 EOR2 - LIT2 &y $2 DUP2 ,&x STR2 - DUP2 #01 SFT2 EOR2 EOR2 - ,&y STR2k POP - -JMP2r - -( -@|assets ) - -@cursor-icn [ - 80c0 e0f0 f8e0 1000 ] - -@world - diff --git a/gui/wireworld/build.sh b/gui/wireworld/build.sh deleted file mode 100755 index 8df1c1c..0000000 --- a/gui/wireworld/build.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -e - -ASM="uxncli $HOME/roms/drifblim.rom" -EMU="uxnemu" -LIN="uxncli $HOME/roms/uxnlin.rom" - -SRC="wireworld.tal" -DST="wireworld.rom" - -CPY="$HOME/roms" -ARG="" - -echo ">> Cleaning" - -if [[ "$*" == *"--lint"* ]] -then - echo ">> Linting $SRC" - $LIN $SRC -fi - -echo ">> Assembling $SRC" -$ASM $SRC $DST - -if [[ "$*" == *"--save"* ]] -then - echo ">> Saving $DST" - cp $DST $CPY -fi - -echo ">> Running $DST" -$EMU $DST $ARG - diff --git a/gui/wireworld/wireworld.tal b/gui/wireworld/wireworld.tal deleted file mode 100644 index c920381..0000000 --- a/gui/wireworld/wireworld.tal +++ /dev/null @@ -1,254 +0,0 @@ -( wireworld - - electron head<3>, becomes electron tail<2> - electron tail<2>, becomes conductor<1> - conductor<1>, becomes electron head<3> - if there are exactly 1 or 2 electron heads around it. ) - -|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 -|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 -|80 @Controller &vector $2 &button $1 &key $1 &func $1 -|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &modx $2 &mody $2 - -|0000 - - @color $1 - @pointer &x $2 &y $2 - @timer &play $1 - -( -@|vectors ) - -|0100 ( -> ) - - ( theme ) - #0ff2 .System/r DEO2 - #0d46 .System/g DEO2 - #006f .System/b DEO2 - ( size ) - #0200 .Screen/width DEO2 - #0200 .Screen/height DEO2 - ( vectors ) - ;on-frame .Screen/vector DEO2 - ;on-mouse .Mouse/vector DEO2 - ;on-button .Controller/vector DEO2 - ( setup ) - #01 .timer/play STZ - #01 set-color - ( start ) - ;world ;get-addr/current STA2 - #1000 ;run/future STA2 - redraw - -BRK - -@on-frame ( -> ) - - .Mouse/state DEI #00 EQU [ JMP BRK ] - .timer/play LDZ [ JMP BRK ] - - ( every 4th ) - [ LIT &f $1 ] INCk ,&f STR - #03 AND ?&no-run - run &no-run - -BRK - -@on-mouse ( -> ) - - ;pointer-icn .Screen/addr DEO2 - ( clear last cursor ) - .pointer/x LDZ2 .Screen/x DEO2 - .pointer/y LDZ2 .Screen/y DEO2 - #40 .Screen/sprite DEO - ( draw new cursor ) - .Mouse/x DEI2 DUP2 .pointer/x STZ2 .Screen/x DEO2 - .Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2 - #40 .color LDZ ADD .Screen/sprite DEO - ( paint ) - .Mouse/state DEI ?&down - -BRK - -&down ( -> ) - - .Mouse/y DEI2 #03 SFT2 NIP #02 NEQ ?&no-menu - .Mouse/x DEI2 #03 SFT2 NIP - DUP #02 NEQ ?&no-color1 - #01 set-color - &no-color1 - DUP #03 NEQ ?&no-color2 - #02 set-color - &no-color2 - DUP #04 NEQ ?&no-color3 - #03 set-color - &no-color3 - DUP #06 NEQ ?&no-toggle - .timer/play LDZk #00 EQU SWP STZ - #00 .Mouse/state DEO - draw-ui - &no-toggle - POP - &no-menu - ( color ) .color LDZ .Mouse/state DEI #01 GTH #00 EQU MUL - ( cell* ) .Mouse/x DEI2 #03 SFT2 .Mouse/y DEI2 #03 SFT2 make-addr STA - redraw - -BRK - -@on-button ( -> ) - - .Controller/button DEI - [ #01 ] NEQk NIP ?&no-a #01 set-color &no-a - [ #02 ] NEQk NIP ?&no-b #02 set-color &no-b - [ #04 ] NEQk NIP ?&no-select #03 set-color &no-select - [ #08 ] NEQk NIP ?&no-start ;world #2000 mclr redraw &no-start - POP - ( space ) - .Controller/key DEI #20 NEQ ?&no-space .timer/play LDZk #00 EQU SWP STZ &no-space - -BRK - -( -@|core ) - -@set-color ( color -- ) - - .color STZ - .pointer/x LDZ2 .Screen/x DEO2 - .pointer/y LDZ2 .Screen/y DEO2 - ;pointer-icn .Screen/addr DEO2 - #40 .color LDZ ADD .Screen/sprite DEO - #00 .Mouse/state DEO - -JMP2r - -@run ( -- ) - - #4000 - &ver - STHk - #4000 - &hor - ( x,y ) DUP STHkr - ( cell ) DUP2 get-addr STH2k LDA - ( transform ) transform STH2r [ LIT2 &future $2 ] ADD2 STA - INC GTHk ?&hor - POP2 - POPr - INC GTHk ?&ver - POP2 - ( Swap worlds ) - ;get-addr/current LDA2k ;run/future LDA2 STH2k ADD2 SWP2 STA2 - #0000 STH2r SUB2 ;run/future STA2 - -!redraw - -@get-addr ( x y -- addr* ) - - #00 SWP #60 SFT2 ROT #00 SWP ADD2 [ LIT2 ¤t $2 ] ADD2 - -JMP2r - -@transform ( xy cell -- cell ) - - DUP ?&no-null NIP NIP JMP2r &no-null - DUP #03 NEQ ?&no-head POP POP2 #02 JMP2r &no-head - DUP #02 NEQ ?&no-tail POP POP2 #01 JMP2r &no-tail - DUP #01 NEQ ?&no-cond POP - LITr 00 - DUP2 #01 SUB get-addr - ( tl ) #0001 SUB2 LDAk #03 NEQ JMP INCr - ( tc ) INC2 LDAk #03 NEQ JMP INCr - ( tr ) INC2 LDA #03 NEQ JMP INCr - DUP2 get-addr - ( ml ) #0001 SUB2 LDAk #03 NEQ JMP INCr - ( mr ) INC2 INC2 LDA #03 NEQ JMP INCr - INC get-addr - ( bl ) #0001 SUB2 LDAk #03 NEQ JMP INCr - ( bc ) INC2 LDAk #03 NEQ JMP INCr - ( br ) INC2 LDA #03 NEQ JMP INCr - STHkr #02 EQU STHr #01 EQU ORA - DUP ADD INC JMP2r - &no-cond - ( unknown ) - NIP NIP - -JMP2r - -@mclr ( addr* len* -- ) - - OVR2 ADD2 SWP2 - &loop - STH2k #00 STH2r STA - INC2 GTH2k ?&loop - POP2 POP2 - -JMP2r - -@make-addr ( x* y* -- addr* ) - - #60 SFT2 ADD2 ;get-addr/current LDA2 ADD2 - -JMP2r - -( -@|drawing ) - -@redraw ( -- ) - - ;cell-icn .Screen/addr DEO2 - [ LIT2 01 -Screen/auto ] DEO - #0000 - DUP2 .Screen/x DEO2 - .Screen/y DEO2 - - #1000 #0000 - &l - ( x ) DUP2 #003f AND2 - ( y ) OVR2 #06 SFT2 - make-addr LDA .Screen/sprite DEO - INCk #3f AND ?&no-bound - #0000 .Screen/x DEO2 - .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2 - &no-bound - INC2 GTH2k ?&l - POP2 POP2 - -@draw-ui ( -- ) - - ( colors ) - [ LIT2 01 -Screen/auto ] DEO - #0010 - DUP2 .Screen/x DEO2 - .Screen/y DEO2 - ;cell-icn .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEO - [ LIT2 02 -Screen/sprite ] DEO - [ LIT2 03 -Screen/sprite ] DEO - ( toggle ) - #0030 .Screen/x DEO2 - ;toggle-icn [ LIT2 00 -timer/play ] LDZ #30 SFT2 ADD2 .Screen/addr DEO2 - [ LIT2 01 -Screen/sprite ] DEO - -JMP2r - -( -@|assets ) - -@pointer-icn [ - 80c0 e0f0 f8e0 1000 ] -@cell-icn [ - 7cfe fefe fefe 7c00 ] -@toggle-icn [ - 6666 6666 6666 6600 - 4666 767e 7666 4600 ] - -( - I live in the atom with the happy protons and neutrons. - I'm also so negative all the freakin time. - What do I do? - How do I find peace? ) - -@world -