mirror of
https://git.sr.ht/~rabbits/uxn
synced 2024-11-26 15:53:01 +00:00
(screen.tal) Optimized to fit GBA screen
This commit is contained in:
parent
3293a1b639
commit
8ec8c7c1f4
3 changed files with 51 additions and 139 deletions
|
@ -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 ]
|
||||
|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 )
|
||||
|
||||
|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
|
||||
#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
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
@draw-autobytes ( -- )
|
||||
@draw-short ( short* -- )
|
||||
|
||||
.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
|
||||
SWP ,draw-byte JSR
|
||||
|
||||
.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
|
||||
@draw-byte ( byte -- )
|
||||
|
||||
.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
|
||||
DUP #04 SFT ,draw-hex JSR #0f AND
|
||||
|
||||
.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
|
||||
@draw-hex ( char -- )
|
||||
|
||||
RTN
|
||||
#00 SWP #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2
|
||||
#01 .Screen/sprite DEO
|
||||
|
||||
@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
|
||||
|
||||
RTN
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue