commit 240009298b7681a641db8f1d68ef7b19721961aa
parent 5829f7da504f77dbc44037250871befd64da79b3
Author: Devine Lu Linvega <aliceffekt@gmail.com>
Date: Sat, 8 Mar 2025 10:10:51 -0800
(dvd) Rewritten in OOP style
Diffstat:
2 files changed, 32 insertions(+), 37 deletions(-)
diff --git a/projects/examples/demos/dvd.tal b/projects/examples/demos/dvd.tal
@@ -1,11 +1,7 @@
( DVD Bounce )
-|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
-
-|000
-
- @dvd &x $2 &y $2
+|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
|100
@@ -14,46 +10,45 @@
#4cfd .System/r DEO2
#4cf3 .System/g DEO2
#dcf2 .System/b DEO2
- ( | vectors )
- ;on-frame .Screen/vector DEO2
- ( | starting position )
- .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
- ( | drawing mode )
- [ LIT2 36 -Screen/auto ] DEO
- #01 <draw-dvd>
+ ;dvd/on-frame .Screen/vector DEO2
+ ( collision x* ) .Screen/width DEI2 DUP2 #0020 SUB2 ,dvd/cox STR2
+ #01 SFT2
+ ( collision y* ) .Screen/height DEI2 DUP2 #0010 SUB2 ,dvd/coy STR2
+ #01 SFT2 dvd/<set-pos>
BRK
-@on-frame ( -> )
- #00 <draw-dvd>
+@dvd/on-frame ( -> )
( | x )
- .dvd/x LDZ2
- ( left ) ORAk ?{
- [ LIT2 ADD2 _&x ] STR }
- ( right ) DUP2 [ LIT2 &hit-hor $2 ] NEQ2 ?{
- [ LIT2 SUB2 _&x ] STR }
- #0001 [ &x ADD2 ] .dvd/x STZ2
+ ,&x LDR2
+ ( left ) ORAk ?{ LIT2 ADD2 _&opx STR }
+ ( right ) DUP2 LIT2 &cox $2 NEQ2 ?{ LIT2 SUB2 _&opx STR }
+ #0001 [ &opx ADD2 ]
( | y )
- .dvd/y LDZ2
- ( top ) ORAk ?{
- [ LIT2 ADD2 _&y ] STR }
- ( bottom ) DUP2 [ LIT2 &hit-ver $2 ] NEQ2 ?{
- [ LIT2 SUB2 _&y ] STR }
- #0001 [ &y ADD2 ] .dvd/y STZ2
- #01 <draw-dvd>
+ ,&y LDR2
+ ( top ) ORAk ?{ LIT2 ADD2 _&opy STR }
+ ( bottom ) DUP2 LIT2 &coy $2 NEQ2 ?{ LIT2 SUB2 _&opy STR }
+ #0001 [ &opy ADD2 ] dvd/<move>
BRK
-@<draw-dvd> ( color -- )
- ;dvd-icn .Screen/addr DEO2
- .dvd/x LDZ2 .Screen/x DEO2
- .dvd/y LDZ2 .Screen/y DEO2
+@dvd/<move> ( x* y* -- )
+ #00 /<draw>
+ ( >> )
+
+@dvd/<set-pos> ( x* y* -- )
+ ,&y STR2
+ ,&x STR2
+ #01
+ ( >> )
+
+@dvd/<draw> ( color -- )
+ [ LIT2 36 -Screen/auto ] DEO
+ ;&sprite-icn .Screen/addr DEO2
+ [ LIT2 &x $2 ] .Screen/x DEO2
+ [ LIT2 &y $2 ] .Screen/y DEO2
.Screen/sprite DEOk DEO
JMP2r
-@dvd-icn ( 4 x 2 )
- [
+@dvd/sprite-icn [
001f 3f38 3838 787f 00fe fe7e 7777 e3c3
000f 1f3b 7b77 e7c7 00fc fe8f 8707 0efc
7f00 000f ff7f 0700 0301 00ff f0f8 ff00
diff --git a/projects/examples/demos/res.rom b/projects/examples/demos/res.rom
Binary files differ.