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