mirror of https://git.sr.ht/~rabbits/uxn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
3.9 KiB
177 lines
3.9 KiB
( dev/screen ) |
|
|
|
%RTN { JMP2r } |
|
%2/ { #01 SFT } |
|
%4/ { #02 SFT } |
|
|
|
( 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 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ] |
|
|
|
( variables ) |
|
|
|
|0000 |
|
|
|
@count $2 |
|
@center |
|
&x $2 &y $2 |
|
|
|
( init ) |
|
|
|
|0100 ( -> ) |
|
|
|
( vector ) |
|
;on-frame .Screen/vector DEO2 |
|
|
|
( theme ) |
|
#f07f .System/r DEO2 |
|
#f0e0 .System/g DEO2 |
|
#f0c0 .System/b DEO2 |
|
|
|
( find screen center ) |
|
.Screen/width DEI2 #01 SFT2 #0020 SUB2 .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 |
|
|
|
BRK |
|
|
|
@on-frame ( -> ) |
|
|
|
.count LDZ2 INC2 [ DUP2 ] .count STZ2 |
|
|
|
.center/x LDZ2 #0048 ADD2 .Screen/x DEO2 |
|
.center/y LDZ2 #0050 SUB2 .Screen/y DEO2 |
|
|
|
( color ) #01 STH |
|
|
|
SWP |
|
DUP #04 SFT [ #00 SWP ] #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2 |
|
( draw ) STHkr .Screen/sprite DEO |
|
#0f AND [ #00 SWP ] #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2 |
|
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 |
|
( draw ) STHkr .Screen/sprite DEO |
|
DUP #04 SFT [ #00 SWP ] #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2 |
|
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 |
|
( draw ) STHkr .Screen/sprite DEO |
|
#0f AND [ #00 SWP ] #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2 |
|
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 |
|
( draw ) STHr .Screen/sprite DEO |
|
|
|
BRK |
|
|
|
@draw-table ( -- ) |
|
|
|
#10 #00 |
|
&loop |
|
DUP #30 SFT #00 SWP ;font-hex ADD2 .Screen/addr DEO2 |
|
( x-axis ) |
|
DUP #30 SFT #00 SWP |
|
.center/x LDZ2 #0040 SUB2 ADD2 .Screen/x DEO2 |
|
.center/y LDZ2 #0050 SUB2 .Screen/y DEO2 |
|
( draw ) #01 .Screen/sprite DEO |
|
( y-axis ) |
|
DUP #30 SFT #00 SWP |
|
.center/y LDZ2 #0040 SUB2 ADD2 .Screen/y DEO2 |
|
.center/x LDZ2 #0050 SUB2 .Screen/x DEO2 |
|
( draw ) #01 .Screen/sprite DEO |
|
INC GTHk ,&loop JCN |
|
POP2 |
|
|
|
RTN |
|
|
|
@draw-sprites ( -- ) |
|
|
|
;preview_icn .Screen/addr DEO2 |
|
#00 #00 |
|
&loop |
|
( move ) DUP #0f AND #40 SFT 2/ #00 SWP |
|
.center/x LDZ2 #0040 SUB2 ADD2 .Screen/x DEO2 |
|
( move ) DUP #f0 AND 2/ #00 SWP |
|
.center/y LDZ2 #0040 SUB2 ADD2 .Screen/y DEO2 |
|
( draw ) DUP .Screen/sprite DEO |
|
INC NEQk ,&loop JCN |
|
POP2 |
|
|
|
RTN |
|
|
|
@draw-1bpp ( -- ) |
|
|
|
#10 #00 |
|
&loop |
|
( color ) STHk |
|
( y ) DUP 4/ [ #00 SWP ] #40 SFT2 |
|
[ .center/y LDZ2 #0040 SUB2 ADD2 ] STH2 |
|
( x ) DUP #03 AND [ #00 SWP ] #40 SFT2 #0040 ADD2 |
|
[ .center/x LDZ2 #0008 ADD2 ADD2 ] |
|
STH2r STHr #00 ;draw-circle JSR2 |
|
INC GTHk ,&loop JCN |
|
POP2 |
|
|
|
RTN |
|
|
|
@draw-2bpp ( -- ) |
|
|
|
#10 #00 |
|
&loop |
|
( color ) STHk |
|
( y ) DUP 4/ [ #00 SWP ] #40 SFT2 |
|
[ .center/y LDZ2 ADD2 ] STH2 |
|
( x ) DUP #03 AND [ #00 SWP ] #40 SFT2 #0040 ADD2 |
|
[ .center/x LDZ2 #0008 ADD2 ADD2 ] |
|
STH2r STHr #80 ;draw-circle JSR2 |
|
INC GTHk ,&loop JCN |
|
POP2 |
|
|
|
RTN |
|
|
|
@draw-circle ( x* y* color depth -- ) |
|
|
|
ADD STH |
|
;preview_icn .Screen/addr DEO2 |
|
.Screen/y DEO2 |
|
.Screen/x DEO2 |
|
|
|
#00 STHkr ADD .Screen/sprite DEO |
|
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 |
|
#10 STHkr ADD .Screen/sprite DEO |
|
.Screen/x DEI2 #0008 SUB2 .Screen/x DEO2 |
|
.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2 |
|
#20 STHkr ADD .Screen/sprite DEO |
|
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 |
|
#30 STHr ADD .Screen/sprite DEO |
|
|
|
RTN |
|
|
|
@draw-pixels ( -- ) |
|
|
|
.center/y LDZ2 #0040 SUB2 .Screen/y DEO2 |
|
.center/x LDZ2 #0048 ADD2 .Screen/x DEO2 |
|
#00 .Screen/pixel DEO |
|
.center/x LDZ2 #0049 ADD2 .Screen/x DEO2 |
|
#01 .Screen/pixel DEO |
|
.center/x LDZ2 #004a ADD2 .Screen/x DEO2 |
|
#02 .Screen/pixel DEO |
|
.center/x LDZ2 #004b ADD2 .Screen/x DEO2 |
|
#03 .Screen/pixel DEO |
|
|
|
RTN |
|
|
|
@preview_icn [ |
|
0f38 675f dfbf bfbf 0007 1820 2344 4848 |
|
|
|
@font-hex |
|
007c 8282 8282 827c 0030 1010 1010 1010 |
|
007c 8202 7c80 80fe 007c 8202 1c02 827c |
|
000c 1424 4484 fe04 00fe 8080 7c02 827c |
|
007c 8280 fc82 827c 007c 8202 1e02 0202 |
|
007c 8282 7c82 827c 007c 8282 7e02 827c |
|
007c 8202 7e82 827e 00fc 8282 fc82 82fc |
|
007c 8280 8080 827c 00fc 8282 8282 82fc |
|
007c 8280 f080 827c 007c 8280 f080 8080
|
|
|