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 ) ( 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 |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 |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
|100 |100
@ -14,46 +10,45 @@
#4cfd .System/r DEO2 #4cfd .System/r DEO2
#4cf3 .System/g DEO2 #4cf3 .System/g DEO2
#dcf2 .System/b DEO2 #dcf2 .System/b DEO2
( | vectors ) ;dvd/on-frame .Screen/vector DEO2
;on-frame .Screen/vector DEO2 ( collision x* ) .Screen/width DEI2 DUP2 #0020 SUB2 ,dvd/cox STR2
( | starting position ) #01 SFT2
.Screen/width DEI2 DUP2 #01 SFT2 .dvd/x STZ2 ( collision y* ) .Screen/height DEI2 DUP2 #0010 SUB2 ,dvd/coy STR2
#0020 SUB2 ;on-frame/hit-hor STA2 #01 SFT2 dvd/<set-pos>
.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>
BRK BRK
@on-frame ( -> ) @dvd/on-frame ( -> )
#00 <draw-dvd>
( | x ) ( | x )
.dvd/x LDZ2 ,&x LDR2
( left ) ORAk ?{ ( left ) ORAk ?{ LIT2 ADD2 _&opx STR }
[ LIT2 ADD2 _&x ] STR } ( right ) DUP2 LIT2 &cox $2 NEQ2 ?{ LIT2 SUB2 _&opx STR }
( right ) DUP2 [ LIT2 &hit-hor $2 ] NEQ2 ?{ #0001 [ &opx ADD2 ]
[ LIT2 SUB2 _&x ] STR }
#0001 [ &x ADD2 ] .dvd/x STZ2
( | y ) ( | y )
.dvd/y LDZ2 ,&y LDR2
( top ) ORAk ?{ ( top ) ORAk ?{ LIT2 ADD2 _&opy STR }
[ LIT2 ADD2 _&y ] STR } ( bottom ) DUP2 LIT2 &coy $2 NEQ2 ?{ LIT2 SUB2 _&opy STR }
( bottom ) DUP2 [ LIT2 &hit-ver $2 ] NEQ2 ?{ #0001 [ &opy ADD2 ] dvd/<move>
[ LIT2 SUB2 _&y ] STR }
#0001 [ &y ADD2 ] .dvd/y STZ2
#01 <draw-dvd>
BRK BRK
@<draw-dvd> ( color -- ) @dvd/<move> ( x* y* -- )
;dvd-icn .Screen/addr DEO2 #00 /<draw>
.dvd/x LDZ2 .Screen/x DEO2 ( >> )
.dvd/y LDZ2 .Screen/y DEO2
@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 .Screen/sprite DEOk DEO
JMP2r JMP2r
@dvd-icn ( 4 x 2 ) @dvd/sprite-icn [
[
001f 3f38 3838 787f 00fe fe7e 7777 e3c3 001f 3f38 3838 787f 00fe fe7e 7777 e3c3
000f 1f3b 7b77 e7c7 00fc fe8f 8707 0efc 000f 1f3b 7b77 e7c7 00fc fe8f 8707 0efc
7f00 000f ff7f 0700 0301 00ff f0f8 ff00 7f00 000f ff7f 0700 0301 00ff f0f8 ff00

BIN
projects/examples/demos/res.rom

Binary file not shown.
Loading…
Cancel
Save