64 lines
1.5 KiB
Tal
64 lines
1.5 KiB
Tal
( Move: Use controller arrows, leave a slime. )
|
|
|
|
|00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2
|
|
|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
|
|
|000
|
|
|
|
@hello &x $2 &y $2
|
|
|
|
|100
|
|
|
|
@on-reset ( -> )
|
|
( | theme )
|
|
#c0f4 .System/r DEO2
|
|
#c0fc .System/g DEO2
|
|
#c0f7 .System/b DEO2
|
|
( | vectors )
|
|
;on-frame .Screen/vector DEO2
|
|
( | set origin )
|
|
.Screen/width DEI2 #01 SFT2 .hello/x STZ2
|
|
.Screen/height DEI2 #01 SFT2 .hello/y STZ2
|
|
[ LIT2 16 -Screen/auto ] DEO
|
|
#00 !on-frame/draw
|
|
|
|
@on-frame ( -> )
|
|
.Controller/button DEI DUP ?{ POP BRK }
|
|
( flip ) #ff EOR
|
|
( | movement )
|
|
DUP #10 AND ?{
|
|
.hello/y LDZ2k #0001 SUB2 ROT STZ2 }
|
|
DUP #20 AND ?{
|
|
.hello/y LDZ2k INC2 ROT STZ2 }
|
|
DUP #40 AND ?{
|
|
.hello/x LDZ2k #0001 SUB2 ROT STZ2 }
|
|
DUP #80 AND ?{
|
|
.hello/x LDZ2k INC2 ROT STZ2 }
|
|
&draw ( button -> )
|
|
.hello/x LDZ2 STH2k .Screen/x DEO2
|
|
.hello/y LDZ2 STH2k .Screen/y DEO2
|
|
;hello-chr .Screen/addr DEO2
|
|
[ LIT2 c1 -Screen/sprite ] DEOk DEO
|
|
( | draw slime )
|
|
[ LITr -Screen/y ] DEO2r
|
|
[ LITr -Screen/x ] DEO2r
|
|
;slime-icn .Screen/addr DEO2
|
|
get-slime .Screen/sprite DEOk DEO
|
|
BRK
|
|
|
|
@get-slime ( button -- color )
|
|
DUP #01 AND ?{ POP #05 JMP2r }
|
|
#02 AND ?{ #0a JMP2r }
|
|
#0f JMP2r
|
|
|
|
@hello-chr [
|
|
0007 1820 2040 4044 0000 071f 1f3f 3f3b
|
|
00e0 1804 0402 0222 0000 e0f8 f8fc fcdc
|
|
4040 4423 2018 0700 3f3f 3b1c 1f07 0000
|
|
0202 22c4 0418 e000 fcfc dc38 f8e0 0000 ]
|
|
|
|
@slime-icn [
|
|
0000 0000 0003 0707 0000 0000 00c0 e0e0
|
|
0707 0300 0000 0000 e0e0 c000 0000 0000 ]
|
|
|