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+
M
makefile
+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]);