diff --git a/projects/examples/demos/dvd.tal b/projects/examples/demos/dvd.tal index cc95f74..6233d8c 100644 --- 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 + ;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/ BRK -@on-frame ( -> ) - #00 +@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 + ,&y LDR2 + ( top ) ORAk ?{ LIT2 ADD2 _&opy STR } + ( bottom ) DUP2 LIT2 &coy $2 NEQ2 ?{ LIT2 SUB2 _&opy STR } + #0001 [ &opy ADD2 ] dvd/ BRK -@ ( color -- ) - ;dvd-icn .Screen/addr DEO2 - .dvd/x LDZ2 .Screen/x DEO2 - .dvd/y LDZ2 .Screen/y DEO2 +@dvd/ ( x* y* -- ) + #00 / + ( >> ) + +@dvd/ ( x* y* -- ) + ,&y STR2 + ,&x STR2 + #01 + ( >> ) + +@dvd/ ( 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 new file mode 100644 index 0000000..1041680 Binary files /dev/null and b/projects/examples/demos/res.rom differ