uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 370c3a60c93f3946629bb6fca84713a810a8a3bb
parent 250aecc920a6f12d2d5479a5230a31630dac2a1e
Author: Devine Lu Linvega <aliceffekt@gmail.com>
Date:   Sun, 24 Mar 2024 09:46:30 -0700

Minor optimizations to examples

Diffstat:
Mprojects/examples/demos/amiga.tal | 4++--
Mprojects/examples/demos/bifurcan.tal | 5+++--
Mprojects/examples/demos/cube3d.tal | 49++++++++++++++++++++++++++-----------------------
Mprojects/examples/demos/move.tal | 48+++++++++++++++++++++++-------------------------
4 files changed, 54 insertions(+), 52 deletions(-)

diff --git a/projects/examples/demos/amiga.tal b/projects/examples/demos/amiga.tal @@ -14,7 +14,7 @@ |0100 ( variables ) - #01 .direction STZ + [ LIT2 01 -direction ] STZ ( vectors ) ;on-frame .Screen/vector DEO2 ( theme ) @@ -89,7 +89,7 @@ JMP2r .timer LDZk INC DUP ROT STZ #06 EQU ?&pull !&pass - &pull #00 .timer STZ .ball/vy LDZ2k INC2 STH2k ROT STZ2 !&end + &pull [ LIT2 00 -timer ] STZ .ball/vy LDZ2k INC2 STH2k ROT STZ2 !&end &pass .ball/vy LDZ2k STH2k ROT STZ2 !&end &end .ball/y LDZ2k STH2r ADD2 check-flip-vy ROT STZ2 diff --git a/projects/examples/demos/bifurcan.tal b/projects/examples/demos/bifurcan.tal @@ -83,8 +83,8 @@ @<cover-pattern> ( addr* -- ) .Screen/addr DEO2 - .Screen/height DEI2 #03 SFT2 NIP ,&h STR - .Screen/width DEI2 #03 SFT2 NIP ,&w STR + .Screen/height DEI2 #03 SFT2 ,&h STR POP + .Screen/width DEI2 #03 SFT2 ,&w STR POP [ LIT &h $1 ] #00 &ver ( -- ) #00 OVR #30 SFT2 .Screen/y DEO2 @@ -103,6 +103,7 @@ .Mouse/x DEI2 ,<draw-cursor>/x STR2 .Mouse/y DEI2 ,<draw-cursor>/y STR2 .Screen/addr DEO2 + ( >> ) @<draw-cursor> ( color -- ) [ LIT2 &x $2 ] .Screen/x DEO2 diff --git a/projects/examples/demos/cube3d.tal b/projects/examples/demos/cube3d.tal @@ -2,14 +2,13 @@ |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 -|0000 - - @timer $1 @cube &v0 $8 &v4 $8 @center &x $2 &y $2 + @timer $1 -|0100 +|100 @on-reset ( -> ) ( | theme ) @@ -23,43 +22,45 @@ ;on-frame .Screen/vector DEO2 @on-frame ( -> ) + [ LIT &f $1 ] INCk ,&f STR + DUP #01 AND ?{ POP BRK } + #01 SFT .timer STZ ( | clear ) #0000 DUP2 .Screen/x DEO2 .Screen/y DEO2 [ LIT2 80 -Screen/pixel ] DEO ( | draw ) - .timer LDZk INC SWP STZ <draw-cube> BRK @<draw-cube> ( frame -- ) ( | create box ) #0800 - &loop ( -- ) + &>loop ( -- ) STHk [ LIT2 00 -timer ] LDZ #00 STHkr INC #07 AND #60 SFT ADD2 #00ff AND2 ;table ADD2 LDA #01 SFT #00 .timer LDZ #00 STHkr #60 SFT ADD2 #00ff AND2 ;table ADD2 LDA #02 SFT #00 STHkr #62 SFT2 ADD2 .cube/v0 STHr DUP ADD ADD STZ2 - INC GTHk ?&loop + INC GTHk ?&>loop POP2 ( | vertices ) #0800 - &ver-loop ( -- ) - DUP DUP ADD .cube ADD LDZ2 <draw-vertex> - INC GTHk ?&ver-loop + &>ver-loop ( -- ) + DUP DUP ADD LDZ2 <draw-vertex> + INC GTHk ?&>ver-loop POP2 ( lines ) #0400 - &line-loop ( -- ) + &>line-loop ( -- ) STHk .cube/v0 STHkr DUP ADD ADD .cube/v0 STHkr INC #03 AND DUP ADD ADD <draw-edge> .cube/v0 STHkr DUP ADD ADD .cube/v4 STHkr DUP ADD ADD <draw-edge> .cube/v4 STHkr DUP ADD ADD .cube/v4 STHr INC #03 AND DUP ADD ADD <draw-edge> - INC GTHk ?&line-loop + INC GTHk ?&>line-loop POP2 JMP2r @<draw-edge> ( a b -- ) - STH STH + STH + STH ( ) #00 STHkr LDZ .center/x LDZ2 ADD2 ( ) #00 STHr INC LDZ .center/y LDZ2 ADD2 ( ) #00 STHkr LDZ .center/x LDZ2 ADD2 - ( ) #00 STHr INC LDZ .center/y LDZ2 ADD2 #05 <draw-line> - JMP2r + ( ) #00 STHr INC LDZ .center/y LDZ2 ADD2 #05 !<draw-line> @<draw-vertex> ( x y -- ) #00 SWP #0004 SUB2 .center/y LDZ2 ADD2 .Screen/y DEO2 @@ -81,15 +82,17 @@ #ffff [ LIT2 00 _&y2 ] LDR2 ,&y LDR2 lts2 DUP2 ADD2 ADD2 ,&sy STR2 [ LIT2 &dx $2 ] [ LIT2 &dy $2 ] ADD2 STH2 &while ( -- ) - [ LIT2 &x2 $2 ] DUP2 .Screen/x DEO2 - [ LIT2 &x $2 ] EQU2 [ LIT2 &y2 $2 ] DUP2 .Screen/y DEO2 - [ LIT2 &y $2 ] EQU2 [ LIT2 &color $1 -Screen/pixel ] DEO - AND ?&end - STH2kr DUP2 ADD2 DUP2 ,&dy LDR2 lts2 ?&skipy - STH2r ,&dy LDR2 ADD2 STH2 ,&x2 LDR2 [ LIT2 &sx $2 ] ADD2 ,&x2 STR2 + [ LIT2 &x2 $2 ] DUP2 .Screen/x DEO2 + [ LIT2 &x $2 ] EQU2 [ LIT2 &y2 $2 ] DUP2 .Screen/y DEO2 + [ LIT2 &y $2 ] EQU2 [ LIT2 &color $1 -Screen/pixel ] DEO + AND ?&end + STH2kr DUP2 ADD2 DUP2 ,&dy LDR2 lts2 ?&skipy + STH2r ,&dy LDR2 ADD2 STH2 + ,&x2 LDR2 [ LIT2 &sx $2 ] ADD2 ,&x2 STR2 &skipy ( -- ) - ,&dx LDR2 gts2 ?&while - STH2r ,&dx LDR2 ADD2 STH2 ,&y2 LDR2 [ LIT2 &sy $2 ] ADD2 ,&y2 STR2 + ,&dx LDR2 gts2 ?&while + STH2r ,&dx LDR2 ADD2 STH2 + ,&y2 LDR2 [ LIT2 &sy $2 ] ADD2 ,&y2 STR2 !&while &end POP2r JMP2r diff --git a/projects/examples/demos/move.tal b/projects/examples/demos/move.tal @@ -3,12 +3,11 @@ |00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2 |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |80 @Controller &vector $2 &button $1 &key $1 - -|0000 +|000 @hello &x $2 &y $2 -|0100 +|100 @on-reset ( -> ) ( | theme ) @@ -17,41 +16,40 @@ #c0f7 .System/b DEO2 ( | vectors ) ;on-frame .Screen/vector DEO2 - ( | set origin ) .Screen/width DEI2 #01 SFT2 .hello/x STZ2 + ( | set origin ) + .Screen/width DEI2 #01 SFT2 .hello/x STZ2 .Screen/height DEI2 #01 SFT2 .hello/y STZ2 [ LIT2 16 -Screen/auto ] DEO - #00 on-frame/draw BRK + #00 !on-frame/draw @on-frame ( -> ) .Controller/button DEI DUP ?{ POP BRK } - ( | clear ) - [ LIT2 40 -Screen/sprite ] DEO + ( flip ) #ff EOR ( | movement ) - DUP #10 AND #00 EQU ?{ + DUP #10 AND ?{ .hello/y LDZ2k #0001 SUB2 ROT STZ2 } - DUP #20 AND #00 EQU ?{ + DUP #20 AND ?{ .hello/y LDZ2k INC2 ROT STZ2 } - DUP #40 AND #00 EQU ?{ + DUP #40 AND ?{ .hello/x LDZ2k #0001 SUB2 ROT STZ2 } - DUP #80 AND #00 EQU ?{ + DUP #80 AND ?{ .hello/x LDZ2k INC2 ROT STZ2 } &draw ( button -> ) - .hello/x LDZ2 STH2k .Screen/x DEO2 - .hello/y LDZ2 STH2k .Screen/y DEO2 - ;hello-chr .Screen/addr DEO2 - [ LIT2 c1 -Screen/sprite ] DEOk - DEO - ( draw slime ) STH2r .Screen/y DEO2 - STH2r .Screen/x DEO2 - ;slime-icn .Screen/addr DEO2 - get-slime .Screen/sprite DEOk - DEO - BRK + .hello/x LDZ2 STH2k .Screen/x DEO2 + .hello/y LDZ2 STH2k .Screen/y DEO2 + ;hello-chr .Screen/addr DEO2 + [ LIT2 c1 -Screen/sprite ] DEOk DEO + ( | draw slime ) + [ LITr -Screen/y ] DEO2r + [ LITr -Screen/x ] DEO2r + ;slime-icn .Screen/addr DEO2 + get-slime .Screen/sprite DEOk DEO + BRK @get-slime ( button -- color ) - #0f AND DUP #01 NEQ ?{ POP #05 JMP2r } - DUP #02 NEQ ?{ POP #0a JMP2r } - POP #0f JMP2r + DUP #01 AND ?{ POP #05 JMP2r } + #02 AND ?{ #0a JMP2r } + #0f JMP2r @hello-chr [ 0007 1820 2040 4044 0000 071f 1f3f 3f3b