uxn/projects/examples/demos/dvd.tal

61 lines
1.3 KiB
Tal
Raw Normal View History

2022-03-14 12:55:31 -04:00
( DVD Bounce )
2021-05-24 17:36:15 -04:00
2022-03-25 12:49:51 -04:00
|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
2024-06-05 12:09:40 -04:00
|000
2021-04-21 15:00:31 -04:00
2023-09-29 14:01:13 -04:00
@dvd &x $2 &y $2
2021-04-21 15:00:31 -04:00
2024-06-05 12:09:40 -04:00
|100
2023-09-29 14:01:13 -04:00
@on-reset ( -> )
( | theme )
2022-03-25 12:49:51 -04:00
#4cfd .System/r DEO2
#4cf3 .System/g DEO2
#dcf2 .System/b DEO2
2023-09-29 14:01:13 -04:00
( | vectors )
;on-frame .Screen/vector DEO2
2023-09-29 14:01:13 -04:00
( | starting position )
2024-06-05 12:09:40 -04:00
.Screen/width DEI2 DUP2 #01 SFT2 .dvd/x STZ2
#0020 SUB2 ;on-frame/hit-hor STA2
.Screen/height DEI2 DUP2 #01 SFT2 .dvd/y STZ2
#0010 SUB2 ;on-frame/hit-ver STA2
2023-09-29 14:01:13 -04:00
( | drawing mode )
[ LIT2 36 -Screen/auto ] DEO
2024-06-05 12:09:40 -04:00
#01 <draw-dvd>
BRK
2021-04-21 15:00:31 -04:00
@on-frame ( -> )
2024-06-05 12:09:40 -04:00
#00 <draw-dvd>
2023-09-29 14:01:13 -04:00
( | x )
2022-03-25 12:49:51 -04:00
.dvd/x LDZ2
2024-06-05 12:09:40 -04:00
( left ) ORAk ?{
[ LIT2 ADD2 _&x ] STR }
( right ) DUP2 [ LIT2 &hit-hor $2 ] NEQ2 ?{
[ LIT2 SUB2 _&x ] STR }
#0001 [ &x ADD2 ] .dvd/x STZ2
2023-09-29 14:01:13 -04:00
( | y )
2022-03-25 12:49:51 -04:00
.dvd/y LDZ2
2024-06-05 12:09:40 -04:00
( top ) ORAk ?{
[ LIT2 ADD2 _&y ] STR }
( bottom ) DUP2 [ LIT2 &hit-ver $2 ] NEQ2 ?{
[ LIT2 ADD2 _&y ] STR }
#0001 [ &y ADD2 ] .dvd/y STZ2
#01 <draw-dvd>
BRK
@<draw-dvd> ( color -- )
2023-09-29 14:01:13 -04:00
;dvd-icn .Screen/addr DEO2
2022-01-09 16:07:48 -05:00
.dvd/x LDZ2 .Screen/x DEO2
.dvd/y LDZ2 .Screen/y DEO2
2023-12-18 17:44:36 -05:00
.Screen/sprite DEOk DEO
2023-09-29 14:01:13 -04:00
JMP2r
2021-04-21 15:00:31 -04:00
2023-09-29 14:01:13 -04:00
@dvd-icn ( 4 x 2 )
[
2021-04-21 15:00:31 -04:00
001f 3f38 3838 787f 00fe fe7e 7777 e3c3
000f 1f3b 7b77 e7c7 00fc fe8f 8707 0efc
7f00 000f ff7f 0700 0301 00ff f0f8 ff00
8700 00ff 7f7f ff00 f000 00e0 fcfc 8000 ]