Browse Source

(dvd) Rewritten in OOP style

main
Devine Lu Linvega 1 year ago
parent
commit
240009298b
  1. 69
      projects/examples/demos/dvd.tal
  2. BIN
      projects/examples/demos/res.rom

69
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

BIN
projects/examples/demos/res.rom

Binary file not shown.
Loading…
Cancel
Save