commit 01d8856

Devine Lu Linvega  ·  2024-01-16 04:15:48 +0000 UTC
parent 0ac9f19
Fixed issue with padding
3 files changed,  +170, -8
+162, -0
  1@@ -0,0 +1,162 @@
  2+( Controller: Buttons should highlight on press and display the button and key bytes. )
  3+
  4+|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
  5+|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
  6+|80 @Controller &vector $2 &button $1 &key $1
  7+
  8+|0000
  9+
 10+	@center &x $2 &y $2
 11+	@frame &w $2 &h $2 &x0 $2 &y0 $2 &x1 $2 &y1 $2
 12+
 13+|0100
 14+
 15+@on-reset ( -> )
 16+	( | theme )
 17+	#2fff .System/r DEO2
 18+	#2f0f .System/g DEO2
 19+	#2f0f .System/b DEO2
 20+	( | find center )
 21+	.Screen/width DEI2 #01 SFT2 .center/x STZ2
 22+	.Screen/height DEI2 #01 SFT2 .center/y STZ2
 23+	( | place controller )
 24+	#0068 .frame/w STZ2
 25+	#0030 .frame/h STZ2
 26+	.center/x LDZ2 .frame/w LDZ2 #01 SFT2 SUB2 .frame/x0 STZ2
 27+	.center/y LDZ2 .frame/h LDZ2 #01 SFT2 SUB2 .frame/y0 STZ2
 28+	.frame/x0 LDZ2 .frame/w LDZ2 ADD2 .frame/x1 STZ2
 29+	.frame/y0 LDZ2 .frame/h LDZ2 ADD2 .frame/y1 STZ2
 30+	( | vectors )
 31+	;on-button .Controller/vector DEO2
 32+	( | frame )
 33+	.frame/x0 LDZ2 .frame/y0 LDZ2 .frame/x1 LDZ2 .frame/y1 LDZ2 #03 <line-rect>
 34+	<draw-controller>
 35+	BRK
 36+
 37+@on-button ( -> )
 38+	<draw-controller>
 39+	( | print stack on start button )
 40+	[ LIT2 08 -Controller/button ] DEI NEQ ?{ #010e DEO }
 41+	BRK
 42+
 43+(
 44+@|drawing )
 45+
 46+@<draw-controller> ( -- )
 47+	.Controller/button DEI STH
 48+	( | d-pad )
 49+	.frame/x0 LDZ2 #0010 ADD2 .Screen/x DEO2
 50+	.frame/y0 LDZ2 #0010 ADD2 .Screen/y DEO2
 51+	;dpad-up-icn .Screen/addr DEO2
 52+	#03 STHkr #04 SFT #01 AND SUB .Screen/sprite DEO
 53+	.Screen/y DEI2 #0010 ADD2 .Screen/y DEO2
 54+	;dpad-down-icn .Screen/addr DEO2
 55+	#03 STHkr #05 SFT #01 AND SUB .Screen/sprite DEO
 56+	.Screen/y DEI2 #0008 SUB2 .Screen/y DEO2
 57+	.Screen/x DEI2 #0008 SUB2 .Screen/x DEO2
 58+	;dpad-left-icn .Screen/addr DEO2
 59+	#03 STHkr #06 SFT #01 AND SUB .Screen/sprite DEO
 60+	.Screen/x DEI2 #0010 ADD2 .Screen/x DEO2
 61+	;dpad-right-icn .Screen/addr DEO2
 62+	#03 STHkr #07 SFT #01 AND SUB .Screen/sprite DEO
 63+	.Screen/x DEI2 #0008 SUB2 .Screen/x DEO2
 64+	;fill-icn .Screen/addr DEO2
 65+	[ LIT2 03 -Screen/sprite ] DEO
 66+	( | options )
 67+	.center/y LDZ2 #0009 ADD2 .Screen/y DEO2
 68+	.center/x LDZ2 #0009 SUB2 .Screen/x DEO2
 69+	;option-icn .Screen/addr DEO2
 70+	#03 STHkr #03 SFT #01 AND SUB .Screen/sprite DEO
 71+	.center/x LDZ2 #0004 ADD2 .Screen/x DEO2
 72+	;option-icn .Screen/addr DEO2
 73+	#03 STHkr #02 SFT #01 AND SUB .Screen/sprite DEO
 74+	( | buttons )
 75+	.center/y LDZ2 .Screen/y DEO2
 76+	.center/x LDZ2 #0018 ADD2 .Screen/x DEO2
 77+	;button-icn .Screen/addr DEO2
 78+	#03 STHkr #01 SFT #01 AND SUB .Screen/sprite DEO
 79+	.Screen/y DEI2 #000a ADD2 .Screen/y DEO2
 80+	;font-hex/b .Screen/addr DEO2
 81+	[ LIT2 03 -Screen/sprite ] DEO
 82+	.center/y LDZ2 .Screen/y DEO2
 83+	.center/x LDZ2 #0024 ADD2 .Screen/x DEO2
 84+	;button-icn .Screen/addr DEO2
 85+	#03 STHr #01 AND SUB .Screen/sprite DEO
 86+	.Screen/y DEI2 #000a ADD2 .Screen/y DEO2
 87+	;font-hex/a .Screen/addr DEO2
 88+	[ LIT2 03 -Screen/sprite ] DEO
 89+	.center/x LDZ2 #0010 SUB2 .Screen/x DEO2
 90+	.center/y LDZ2 #0010 SUB2 .Screen/y DEO2
 91+	[ LIT2 01 -Screen/auto ] DEO
 92+	.Controller/button DEI2 <draw-short>
 93+	[ LIT2 00 -Screen/auto ] DEO
 94+	JMP2r
 95+
 96+@<draw-short> ( short* -- )
 97+	SWP <draw-byte>
 98+
 99+@<draw-byte> ( byte -- )
100+	DUP #04 SFT <draw-hex>
101+
102+@<draw-hex> ( char -- )
103+	#00 SWP #0f AND #30 SFT2 ;font-hex ADD2 .Screen/addr DEO2
104+	[ LIT2 03 -Screen/sprite ] DEO
105+	JMP2r
106+
107+@<line-rect> ( x1* y1* x2* y2* color -- )
108+	STH
109+	DUP2 ,&ver-y2 STR2
110+	,&hor-y2 STR2
111+	DUP2 ,&ver-x2 STR2
112+	,&hor-x2 STR2
113+	DUP2 ,&ver-y1 STR2
114+	,&hor-y1 STR2
115+	DUP2 ,&ver-x1 STR2
116+	,&hor-x1 STR2
117+	( | horizontal )
118+	[ LIT2 &hor-x2 $2 ] INC2 [ LIT2 &hor-x1 $2 ]
119+	&hor ( -- )
120+		DUP2 .Screen/x DEO2
121+		[ LIT2 &hor-y1 $2 ] .Screen/y DEO2
122+		STHkr .Screen/pixel DEOk [ LIT2 &hor-y2 $2 ] .Screen/y DEO2
123+		DEO
124+		INC2 GTH2k ?&hor
125+	POP2 POP2
126+	( | vertical )
127+	[ LIT2 &ver-y2 $2 ] [ LIT2 &ver-y1 $2 ]
128+	&ver ( -- )
129+		DUP2 .Screen/y DEO2
130+		[ LIT2 &ver-x1 $2 ] .Screen/x DEO2
131+		STHkr .Screen/pixel DEOk [ LIT2 &ver-x2 $2 ] .Screen/x DEO2
132+		DEO
133+		INC2 GTH2k ?&ver
134+	POP2 POP2 POPr JMP2r
135+
136+(
137+@|assets )
138+
139+@fill-icn [ ffff ffff ffff ffff ]
140+
141+@dpad-up-icn [ 7eff e7c3 ffff ffff ]
142+
143+@dpad-down-icn [ ffff ffff c3e7 ff7e ]
144+
145+@dpad-left-icn [ 7fff efcf cfef ff7f ]
146+
147+@dpad-right-icn [ feff f7f3 f3f7 fffe ]
148+
149+@option-icn [ 0000 7eff ff7e 0000 ]
150+
151+@button-icn [ 3c7e ffff ffff 7e3c ]
152+
153+@font-hex [
154+	007c 8282 8282 827c 0030 1010 1010 1010
155+	007c 8202 7c80 80fe 007c 8202 1c02 827c
156+	000c 1424 4484 fe04 00fe 8080 7c02 827c
157+	007c 8280 fc82 827c 00fe 0202 0408 1010
158+	007c 8282 7c82 827c 007c 8282 7e02 827c
159+	&a 007c 8202 7e82 827e &b 00fc 8282
160+	fc82 82fc 007c 8280 8080 827c 00fc 8282
161+	8282 82fc 00fe 8080 fe80 80fe 00fe 8080
162+	f080 8080 ]
163+
+2, -2
 1@@ -12,9 +12,9 @@ all: dest bin/uxnasm bin/uxncli bin/uxn11
 2 dest:
 3 	@ mkdir -p bin
 4 rom:
 5-	@ ./bin/uxnasm etc/screen.bounds.tal bin/screen.bounds.rom
 6+	@ ./bin/uxnasm etc/controller.tal bin/res.rom
 7 run: all bin/uxnasm bin/uxncli bin/uxn11 rom
 8-	@ ./bin/uxn11 bin/screen.bounds.rom
 9+	@ ./bin/uxn11 bin/res.rom
10 test: bin/uxnasm bin/uxncli bin/uxn11
11 	@ ./bin/uxnasm && ./bin/uxncli && ./bin/uxn11 && ./bin/uxnasm -v && ./bin/uxncli -v && ./bin/uxn11 -v
12 	@ ./bin/uxnasm etc/opctest.tal bin/opctest.rom
+6, -6
 1@@ -80,7 +80,7 @@ emu_resize(int w, int h)
 2 		w *= uxn_screen.scale, h *= uxn_screen.scale;
 3 		visual = DefaultVisual(display, 0);
 4 		ximage = XCreateImage(display, visual, DefaultDepth(display, DefaultScreen(display)), ZPixmap, 0, (char *)uxn_screen.pixels, w, h, 32, 0);
 5-		XResizeWindow(display, window, w, h);
 6+		XResizeWindow(display, window, w + PAD * 2, h + PAD * 2);
 7 		XMapWindow(display, window);
 8 	}
 9 	return 1;
10@@ -146,11 +146,11 @@ emu_event(Uxn *u)
11 		KeySym sym;
12 		char buf[7];
13 		XLookupString((XKeyPressedEvent *)&ev, buf, 7, &sym, 0);
14-		switch(sym){
15-			case XK_F1: toggle_scale(); break;
16-			case XK_F2: u->dev[0x0e] = !u->dev[0x0e]; break;
17-			case XK_F4: emu_restart(u, boot_rom, 0); break;
18-			case XK_F5: emu_restart(u, boot_rom, 1); break;
19+		switch(sym) {
20+		case XK_F1: toggle_scale(); break;
21+		case XK_F2: u->dev[0x0e] = !u->dev[0x0e]; break;
22+		case XK_F4: emu_restart(u, boot_rom, 0); break;
23+		case XK_F5: emu_restart(u, boot_rom, 1); break;
24 		}
25 		controller_down(u, &u->dev[0x80], get_button(sym));
26 		controller_key(u, &u->dev[0x80], sym < 0x80 ? sym : (Uint8)buf[0]);