move.tal (1556B)
1 ( Move: Use controller arrows, leave a slime. ) 2 3 |00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2 4 |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 5 |80 @Controller &vector $2 &button $1 &key $1 6 |000 7 8 @hello &x $2 &y $2 9 10 |100 11 12 @on-reset ( -> ) 13 ( | theme ) 14 #c0f4 .System/r DEO2 15 #c0fc .System/g DEO2 16 #c0f7 .System/b DEO2 17 ( | vectors ) 18 ;on-frame .Screen/vector DEO2 19 ( | set origin ) 20 .Screen/width DEI2 #01 SFT2 .hello/x STZ2 21 .Screen/height DEI2 #01 SFT2 .hello/y STZ2 22 [ LIT2 16 -Screen/auto ] DEO 23 #00 !on-frame/draw 24 25 @on-frame ( -> ) 26 .Controller/button DEI DUP ?{ POP BRK } 27 ( flip ) #ff EOR 28 ( | movement ) 29 DUP #10 AND ?{ 30 .hello/y LDZ2k #0001 SUB2 ROT STZ2 } 31 DUP #20 AND ?{ 32 .hello/y LDZ2k INC2 ROT STZ2 } 33 DUP #40 AND ?{ 34 .hello/x LDZ2k #0001 SUB2 ROT STZ2 } 35 DUP #80 AND ?{ 36 .hello/x LDZ2k INC2 ROT STZ2 } 37 &draw ( button -> ) 38 .hello/x LDZ2 STH2k .Screen/x DEO2 39 .hello/y LDZ2 STH2k .Screen/y DEO2 40 ;hello-chr .Screen/addr DEO2 41 [ LIT2 c1 -Screen/sprite ] DEOk DEO 42 ( | draw slime ) 43 [ LITr -Screen/y ] DEO2r 44 [ LITr -Screen/x ] DEO2r 45 ;slime-icn .Screen/addr DEO2 46 get-slime .Screen/sprite DEOk DEO 47 BRK 48 49 @get-slime ( button -- color ) 50 DUP #01 AND ?{ POP #05 JMP2r } 51 #02 AND ?{ #0a JMP2r } 52 #0f JMP2r 53 54 @hello-chr [ 55 0007 1820 2040 4044 0000 071f 1f3f 3f3b 56 00e0 1804 0402 0222 0000 e0f8 f8fc fcdc 57 4040 4423 2018 0700 3f3f 3b1c 1f07 0000 58 0202 22c4 0418 e000 fcfc dc38 f8e0 0000 ] 59 60 @slime-icn [ 61 0000 0000 0003 0707 0000 0000 00c0 e0e0 62 0707 0300 0000 0000 e0e0 c000 0000 0000 ] 63