uxn

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

commit 8ec8c7c1f49167a84a03d543e4ad5c881d01284d
parent 3293a1b6399d9160f4c4ad7af96e6d1990cd7229
Author: neauoire <aliceffekt@gmail.com>
Date:   Mon, 14 Mar 2022 14:02:43 -0700

(screen.tal) Optimized to fit GBA screen

Diffstat:
Mprojects/examples/devices/screen.tal | 202+++++++++++++++++++++++--------------------------------------------------------
Mprojects/software/calc.tal | 3+--
Rprojects/examples/demos/clock.tal -> projects/software/clock.tal | 0
3 files changed, 58 insertions(+), 147 deletions(-)

diff --git a/projects/examples/devices/screen.tal b/projects/examples/devices/screen.tal @@ -1,140 +1,97 @@ -( dev/screen ) +( Screen ) -%RTN { JMP2r } -%2/ { #01 SFT } -%4/ { #02 SFT } - -%+ { ADD } %- { SUB } %* { MUL } %/ { DIV } -%< { LTH } %> { GTH } %= { EQU } %! { NEQ } -%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } -%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } - -%AUTO-NONE { #00 .Screen/auto DEO } -%AUTO-X { #01 .Screen/auto DEO } -%AUTO-Y { #02 .Screen/auto DEO } -%AUTO-XY { #03 .Screen/auto DEO } -%AUTO-ADDR { #04 .Screen/auto DEO } -%AUTO-XADDR { #05 .Screen/auto DEO } -%AUTO-YADDR { #06 .Screen/auto DEO } - -( devices ) - -|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &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 - -( variables ) +|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &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 |0000 @count $2 -@center - &x $2 &y $2 - -( init ) +@center &x $2 &y $2 |0100 ( -> ) ( vector ) ;on-frame .Screen/vector DEO2 - ( theme ) #f07f .System/r DEO2 #f0e0 .System/g DEO2 #f0c0 .System/b DEO2 - + ( gba screen size 00c0 x 00a0 ) + ( nds screen size 0100 x 00c0 ) + #0100 .Screen/width DEO2 + #00c0 .Screen/height DEO2 ( find screen center ) - .Screen/width DEI2 #01 SFT2 #0020 -- .center/x STZ2 + .Screen/width DEI2 #01 SFT2 .center/x STZ2 .Screen/height DEI2 #01 SFT2 .center/y STZ2 - ( draw ) - ;draw-table JSR2 ;draw-sprites JSR2 ;draw-1bpp JSR2 ;draw-2bpp JSR2 - ;draw-pixels JSR2 - ;draw-autobytes JSR2 - AUTO-NONE + #00 .Screen/auto DEO BRK @on-frame ( -> ) - AUTO-X + #01 .Screen/auto DEO .count LDZ2 INC2 [ DUP2 ] .count STZ2 - .center/x LDZ2 #0048 ++ .Screen/x DEO2 - .center/y LDZ2 #0050 -- .Screen/y DEO2 - SWP - DUP #04 SFT [ #00 SWP ] #30 SFT2 ;font-hex ++ .Screen/addr DEO2 - #01 .Screen/sprite DEO - #0f AND [ #00 SWP ] #30 SFT2 ;font-hex ++ .Screen/addr DEO2 - #01 .Screen/sprite DEO - DUP #04 SFT [ #00 SWP ] #30 SFT2 ;font-hex ++ .Screen/addr DEO2 - #01 .Screen/sprite DEO - #0f AND [ #00 SWP ] #30 SFT2 ;font-hex ++ .Screen/addr DEO2 - #01 .Screen/sprite DEO + .center/x LDZ2 #0040 ADD2 .Screen/x DEO2 + .center/y LDZ2 #0048 SUB2 .Screen/y DEO2 + ;draw-short JSR2 BRK -@draw-table ( -- ) +@draw-sprites ( -- ) - .center/x LDZ2 #0040 -- .Screen/x DEO2 - .center/y LDZ2 #0050 -- .Screen/y DEO2 + .center/x LDZ2 #0060 SUB2 .Screen/x DEO2 + .center/y LDZ2 #0048 SUB2 .Screen/y DEO2 ;font-hex .Screen/addr DEO2 #f6 .Screen/auto DEO #01 .Screen/sprite DEO - .center/x LDZ2 #0050 -- .Screen/x DEO2 - .center/y LDZ2 #0040 -- .Screen/y DEO2 - ;font-hex .Screen/addr DEO2 - #f5 .Screen/auto DEO - #01 .Screen/sprite DEO - AUTO-NONE - -RTN - -@draw-sprites ( -- ) - + #00 .Screen/auto DEO + ( table ) ;preview_icn .Screen/addr DEO2 #00 #00 &loop - ( move ) DUP #0f AND #40 SFT 2/ #00 SWP - .center/x LDZ2 #0040 -- ++ .Screen/x DEO2 - ( move ) DUP #f0 AND 2/ #00 SWP - .center/y LDZ2 #0040 -- ++ .Screen/y DEO2 + ( move ) DUP #0f AND #40 SFT #01 SFT #00 SWP + .center/x LDZ2 #0060 SUB2 ADD2 .Screen/x DEO2 + ( move ) DUP #f0 AND #01 SFT #00 SWP + .center/y LDZ2 #0038 SUB2 ADD2 .Screen/y DEO2 ( draw ) DUP .Screen/sprite DEO INC NEQk ,&loop JCN POP2 -RTN +JMP2r @draw-1bpp ( -- ) #10 #00 &loop ( color ) STHk - ( y ) DUP 4/ [ #00 SWP ] #40 SFT2 - [ .center/y LDZ2 #0040 -- ++ ] STH2 - ( x ) DUP #03 AND [ #00 SWP ] #40 SFT2 #0040 ++ - [ .center/x LDZ2 #0008 ++ ++ ] + ( y ) DUP #02 SFT [ #00 SWP ] #40 SFT2 + [ .center/y LDZ2 #0038 SUB2 ADD2 ] STH2 + ( x ) DUP #03 AND [ #00 SWP ] #40 SFT2 #0040 ADD2 + [ .center/x LDZ2 #0020 SUB2 ADD2 ] STH2r STHr #00 ,draw-circle JSR INC GTHk ,&loop JCN POP2 -RTN +JMP2r @draw-2bpp ( -- ) #10 #00 &loop ( color ) STHk - ( y ) DUP 4/ [ #00 SWP ] #40 SFT2 - [ .center/y LDZ2 ++ ] STH2 - ( x ) DUP #03 AND [ #00 SWP ] #40 SFT2 #0040 ++ - [ .center/x LDZ2 #0008 ++ ++ ] + ( y ) DUP #02 SFT [ #00 SWP ] #40 SFT2 + [ .center/y LDZ2 #0008 ADD2 ADD2 ] STH2 + ( x ) DUP #03 AND [ #00 SWP ] #40 SFT2 #0040 ADD2 + [ .center/x LDZ2 #0020 SUB2 ADD2 ] STH2r STHr #80 ,draw-circle JSR INC GTHk ,&loop JCN POP2 -RTN +JMP2r @draw-circle ( x* y* color depth -- ) @@ -142,56 +99,31 @@ RTN ;preview_icn .Screen/addr DEO2 .Screen/y DEO2 .Screen/x DEO2 - AUTO-X + #01 .Screen/auto DEO STHr .Screen/sprite DEOk - AUTO-Y - SWP #10 + SWP DEOk - .Screen/x DEI2k #0008 -- ROT DEO2 - AUTO-X - SWP #10 + SWP DEOk - SWP #10 + SWP DEO - -RTN - -@draw-autobytes ( -- ) - - .center/x LDZ2 #0090 ++ .Screen/x DEO2 - .center/y LDZ2 #0040 -- .Screen/y DEO2 - ;23x-icns .Screen/addr DEO2 - #16 .Screen/auto DEO - #04 .Screen/sprite DEOk DEOk DEO - - .center/x LDZ2 #00a8 ++ .Screen/x DEO2 - .center/y LDZ2 #0030 -- .Screen/y DEO2 - ;23y-icns .Screen/addr DEO2 - #25 .Screen/auto DEO - #0c .Screen/sprite DEOk DEO - - .center/x LDZ2 #00a0 ++ .Screen/x DEO2 - .center/y LDZ2 #0040 -- .Screen/y DEO2 - ;32x-icns .Screen/addr DEO2 - #26 .Screen/auto DEO - #01 .Screen/sprite DEOk DEO - - .center/x LDZ2 #0090 ++ .Screen/x DEO2 - .center/y LDZ2 #0028 -- .Screen/y DEO2 - ;32y-icns .Screen/addr DEO2 - #15 .Screen/auto DEO - #03 .Screen/sprite DEOk DEOk DEO - -RTN - -@draw-pixels ( -- ) - - .center/y LDZ2 #0040 -- .Screen/y DEO2 - .center/x LDZ2 #0048 ++ .Screen/x DEO2 - AUTO-X - #00 .Screen/pixel DEO - #01 .Screen/pixel DEO - #02 .Screen/pixel DEO - #03 .Screen/pixel DEO + #02 .Screen/auto DEO + SWP #10 ADD SWP DEOk + .Screen/x DEI2k #0008 SUB2 ROT DEO2 + #01 .Screen/auto DEO + SWP #10 ADD SWP DEOk + SWP #10 ADD SWP DEO + +JMP2r + +@draw-short ( short* -- ) -RTN + SWP ,draw-byte JSR + +@draw-byte ( byte -- ) + + DUP #04 SFT ,draw-hex JSR #0f AND + +@draw-hex ( char -- ) + + #00 SWP #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2 + #01 .Screen/sprite DEO + +JMP2r @preview_icn 0f38 675f dfbf bfbf 0007 1820 2344 4848 @@ -205,23 +137,3 @@ RTN 007c 8202 7e82 827e 00fc 8282 fc82 82fc 007c 8280 8080 827c 00fc 8282 8282 82fc 007c 8280 f080 827c 007c 8280 f080 8080 - -@23x-icns - 0010 2847 2810 0001 0000 00e0 2040 8000 - 0204 080f 0000 0001 0000 00e0 2040 8000 - 0204 080f 0000 0000 0010 28c4 2810 0000 - -@23y-icns - 0010 2844 2810 1111 1111 1111 1111 1111 - 1112 1418 0000 0000 0000 0030 5090 1010 - 1010 1010 1010 1010 1010 2844 2810 0000 - -@32x-icns - 0010 2847 2810 0001 0000 00ff 0000 00ff - 0000 00f0 1020 4080 0204 080f 0000 0000 - 0000 00ff 0000 0000 0010 28c4 2810 0000 - -@32y-icns - 0010 2844 2810 1011 1214 1800 0000 0000 - 0000 0000 3050 9011 1214 1800 0000 0000 - 0000 0000 3050 9010 1010 2844 2810 0000 diff --git a/projects/software/calc.tal b/projects/software/calc.tal @@ -754,4 +754,4 @@ RTN @pointer-icn 80c0 e0f0 f8e0 1000 -@blank-icn -\ No newline at end of file +@blank-icn diff --git a/projects/examples/demos/clock.tal b/projects/software/clock.tal