uxn

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

screen.pixel.tal (2572B)


      1 ( Screen.pixel: test rom for screen pixel drawing )
      2 
      3 |00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
      4 |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
      5 
      6 |0000
      7 
      8 	@center &x $2 &y $2
      9 
     10 |0100
     11 
     12 @on-reset ( -> )
     13 	( | theme )
     14 	#f07f .System/r DEO2
     15 	#f0d6 .System/g DEO2
     16 	#f0b2 .System/b DEO2
     17 	( | resize )
     18 	#00c8 DUP2 .Screen/width DEO2
     19 	.Screen/height DEO2
     20 	( | find screen center )
     21 	.Screen/width DEI2 #01 SFT2 .center/x STZ2
     22 	.Screen/height DEI2 #01 SFT2 .center/y STZ2
     23 	( | draw )
     24 	<draw-bg-fill>
     25 	<draw-bg-corners>
     26 	<draw-fg-corners>
     27 	<draw-pixels>
     28 	BRK
     29 
     30 @<draw-bg-fill> ( -- )
     31 	.center/x LDZ2 .Screen/x DEO2
     32 	.center/x LDZ2 .Screen/y DEO2
     33 	( | 4-way backgrounds )
     34 	#0400
     35 	&l ( -- )
     36 		DUP DUP #40 SFT #80 ADD ORA .Screen/pixel DEO
     37 		INC GTHk ?&l
     38 	POP2 JMP2r
     39 
     40 @<draw-bg-corners> ( -- )
     41 	.center/x LDZ2 #01 SFT2 .Screen/x DEO2
     42 	.center/y LDZ2 #01 SFT2 .Screen/y DEO2
     43 	#b0 .Screen/pixel DEO
     44 	.center/x LDZ2 #01 SFT2 #0003 MUL2 .Screen/x DEO2
     45 	.center/y LDZ2 #01 SFT2 .Screen/y DEO2
     46 	#a1 .Screen/pixel DEO
     47 	.center/x LDZ2 #01 SFT2 #0003 MUL2 .Screen/x DEO2
     48 	.center/y LDZ2 #01 SFT2 #0003 MUL2 .Screen/y DEO2
     49 	#83 .Screen/pixel DEO
     50 	.center/x LDZ2 #01 SFT2 .Screen/x DEO2
     51 	.center/y LDZ2 #01 SFT2 #0003 MUL2 .Screen/y DEO2
     52 	#92 .Screen/pixel DEO
     53 	JMP2r
     54 
     55 @<draw-fg-corners> ( -- )
     56 	.center/x LDZ2 #02 SFT2 .Screen/x DEO2
     57 	.center/y LDZ2 #02 SFT2 .Screen/y DEO2
     58 	#f1 .Screen/pixel DEO
     59 	.center/x LDZ2 #02 SFT2 #0007 MUL2 .Screen/x DEO2
     60 	.center/y LDZ2 #02 SFT2 .Screen/y DEO2
     61 	#e3 .Screen/pixel DEO
     62 	( clear ) #e0 .Screen/pixel DEO
     63 	.center/x LDZ2 #02 SFT2 #0007 MUL2 .Screen/x DEO2
     64 	.center/y LDZ2 #02 SFT2 #0007 MUL2 .Screen/y DEO2
     65 	#c2 .Screen/pixel DEO
     66 	.center/x LDZ2 #02 SFT2 .Screen/x DEO2
     67 	.center/y LDZ2 #02 SFT2 #0007 MUL2 .Screen/y DEO2
     68 	#d0 .Screen/pixel DEO
     69 	JMP2r
     70 
     71 @<draw-pixels> ( -- )
     72 	( | bottom-left, background )
     73 	.center/x LDZ2 #0010 SUB2 .Screen/x DEO2
     74 	.center/y LDZ2 .Screen/y DEO2
     75 	( auto-x ) #01 .Screen/auto DEO
     76 	#00
     77 	&bl ( -- )
     78 		#00 OVR EQU OVR #0f AND ORA ?{
     79 			.center/x LDZ2 #0010 SUB2 .Screen/x DEO2
     80 			.Screen/y DEI2k INC2 ROT DEO2 }
     81 		DUP #04 SFT OVR #0f AND LTH INC .Screen/pixel DEO
     82 		INC DUP ?&bl
     83 	POP
     84 	( | bottom-right, foreground )
     85 	.center/x LDZ2 .Screen/x DEO2
     86 	.center/y LDZ2 #0010 SUB2 .Screen/y DEO2
     87 	( auto-y ) #02 .Screen/auto DEO
     88 	#00
     89 	&br ( -- )
     90 		#00 OVR EQU OVR #0f AND ORA ?{
     91 			.center/y LDZ2 #0010 SUB2 .Screen/y DEO2
     92 			.Screen/x DEI2k INC2 ROT DEO2 }
     93 		DUP #04 SFT OVR #0f AND GTH INC #40 ORA .Screen/pixel DEO
     94 		INC DUP ?&br
     95 	POP JMP2r
     96