commit 51679ef

Devie Lu Linvega  ·  2025-12-23 18:03:13 +0000 UTC
parent 89c3a89
Cleanup
1 files changed,  +44, -42
+44, -42
  1@@ -411,11 +411,13 @@ console_input(int c, unsigned int type)
  2 #define MAR2(x) (x + 0x10)
  3 
  4 typedef struct UxnScreen {
  5-	int width, height, zoom, resized, full, x1, y1, x2, y2;
  6+	int width, height;
  7 } UxnScreen;
  8 
  9-static Uint8 *screen_layers;
 10+static int screen_resized, screen_full, screen_zoom;
 11+static int screen_x1, screen_y1, screen_x2, screen_y2;
 12 static unsigned int screen_vector, *screen_pixels, screen_palette[16];
 13+static Uint8 *screen_layers;
 14 static UxnScreen uxn_screen;
 15 
 16 static const Uint8 blending[16][4] = {
 17@@ -440,10 +442,10 @@ static const Uint8 blending[16][4] = {
 18 static void
 19 screen_change(const int x1, const int y1, const int x2, const int y2)
 20 {
 21-	if(x1 < uxn_screen.x1) uxn_screen.x1 = x1;
 22-	if(y1 < uxn_screen.y1) uxn_screen.y1 = y1;
 23-	if(x2 > uxn_screen.x2) uxn_screen.x2 = x2;
 24-	if(y2 > uxn_screen.y2) uxn_screen.y2 = y2;
 25+	if(x1 < screen_x1) screen_x1 = x1;
 26+	if(y1 < screen_y1) screen_y1 = y1;
 27+	if(x2 > screen_x2) screen_x2 = x2;
 28+	if(y2 > screen_y2) screen_y2 = y2;
 29 }
 30 
 31 static void
 32@@ -460,7 +462,7 @@ screen_colorize(void)
 33 	}
 34 	for(i = 0; i < 16; i++)
 35 		screen_palette[i] = colors[(i >> 2) ? (i >> 2) : (i & 3)];
 36-	uxn_screen.full = 1;
 37+	screen_full = 1;
 38 }
 39 
 40 static void
 41@@ -472,32 +474,32 @@ screen_resize(int width, int height)
 42 		memset(screen_layers, 0, length);
 43 		uxn_screen.width = width;
 44 		uxn_screen.height = height;
 45-		uxn_screen.resized = 1;
 46-		uxn_screen.full = 1;
 47+		screen_resized = 1;
 48+		screen_full = 1;
 49 	}
 50 }
 51 
 52 static void
 53 scree_redraw(void)
 54 {
 55-	const int ax = uxn_screen.x1 * uxn_screen.zoom;
 56-	const int ay = uxn_screen.y1 * uxn_screen.zoom;
 57-	const int aw = uxn_screen.x2 * uxn_screen.zoom - ax;
 58-	const int ah = uxn_screen.y2 * uxn_screen.zoom - ay;
 59+	const int ax = screen_x1 * screen_zoom;
 60+	const int ay = screen_y1 * screen_zoom;
 61+	const int aw = screen_x2 * screen_zoom - ax;
 62+	const int ah = screen_y2 * screen_zoom - ay;
 63 	int i, x, y, k, l;
 64-	for(y = uxn_screen.y1; y < uxn_screen.y2; y++) {
 65-		const int ys = y * uxn_screen.zoom;
 66-		for(x = uxn_screen.x1, i = MAR(x) + MAR(y) * MAR2(uxn_screen.width); x < uxn_screen.x2; x++, i++) {
 67+	for(y = screen_y1; y < screen_y2; y++) {
 68+		const int ys = y * screen_zoom;
 69+		for(x = screen_x1, i = MAR(x) + MAR(y) * MAR2(uxn_screen.width); x < screen_x2; x++, i++) {
 70 			const int c = screen_palette[screen_layers[i]];
 71-			for(k = 0; k < uxn_screen.zoom; k++) {
 72-				const int oo = ((ys + k) * uxn_screen.width + x) * uxn_screen.zoom;
 73-				for(l = 0; l < uxn_screen.zoom; l++)
 74+			for(k = 0; k < screen_zoom; k++) {
 75+				const int oo = ((ys + k) * uxn_screen.width + x) * screen_zoom;
 76+				for(l = 0; l < screen_zoom; l++)
 77 					screen_pixels[oo + l] = c;
 78 			}
 79 		}
 80 	}
 81 	XPutImage(display, window, DefaultGC(display, 0), ximage, ax, ay, ax, ay, aw, ah);
 82-	uxn_screen.x1 = uxn_screen.y1 = uxn_screen.x2 = uxn_screen.y2 = uxn_screen.full = 0;
 83+	screen_x1 = screen_y1 = screen_x2 = screen_y2 = screen_full = 0;
 84 }
 85 
 86 static void
 87@@ -505,28 +507,28 @@ screen_update(void)
 88 {
 89 	if(screen_vector)
 90 		uxn_eval(screen_vector);
 91-	if(uxn_screen.resized) {
 92-		const int width = uxn_screen.width * uxn_screen.zoom;
 93-		const int height = uxn_screen.height * uxn_screen.zoom;
 94-		const int length = uxn_screen.width * uxn_screen.height * sizeof(unsigned int) * uxn_screen.zoom * uxn_screen.zoom;
 95+	if(screen_resized) {
 96+		const int width = uxn_screen.width * screen_zoom;
 97+		const int height = uxn_screen.height * screen_zoom;
 98+		const int length = uxn_screen.width * uxn_screen.height * sizeof(unsigned int) * screen_zoom * screen_zoom;
 99 		XResizeWindow(display, window, width, height);
100 		screen_pixels = realloc(screen_pixels, length);
101 		if(ximage)
102 			free(ximage);
103 		ximage = XCreateImage(display, DefaultVisual(display, 0), DefaultDepth(display, DefaultScreen(display)), ZPixmap, 0, (char *)screen_pixels, width, height, 32, 0);
104-		uxn_screen.full = 1;
105-		uxn_screen.resized = 0;
106+		screen_full = 1;
107+		screen_resized = 0;
108 	}
109-	if(uxn_screen.full) {
110-		uxn_screen.x1 = uxn_screen.y1 = 0;
111-		uxn_screen.x2 = uxn_screen.width;
112-		uxn_screen.y2 = uxn_screen.height;
113+	if(screen_full) {
114+		screen_x1 = screen_y1 = 0;
115+		screen_x2 = uxn_screen.width;
116+		screen_y2 = uxn_screen.height;
117 		scree_redraw();
118-	} else if(uxn_screen.x2 > uxn_screen.x1 && uxn_screen.y2 > uxn_screen.y1) {
119-		CLAMP(uxn_screen.x1, 0, uxn_screen.width);
120-		CLAMP(uxn_screen.y1, 0, uxn_screen.height);
121-		CLAMP(uxn_screen.x2, 0, uxn_screen.width);
122-		CLAMP(uxn_screen.y2, 0, uxn_screen.height);
123+	} else if(screen_x2 > screen_x1 && screen_y2 > screen_y1) {
124+		CLAMP(screen_x1, 0, uxn_screen.width);
125+		CLAMP(screen_y1, 0, uxn_screen.height);
126+		CLAMP(screen_x2, 0, uxn_screen.width);
127+		CLAMP(screen_y2, 0, uxn_screen.height);
128 		scree_redraw();
129 	}
130 }
131@@ -553,7 +555,7 @@ screen_draw_pixel(void)
132 			y1 = 0, y2 = rY;
133 		else
134 			y1 = rY, y2 = uxn_screen.height;
135-		uxn_screen.full = 1;
136+		screen_full = 1;
137 		x1 = MAR(x1), y1 = MAR(y1);
138 		hor = MAR(x2) - x1, ver = MAR(y2) - y1;
139 		for(ay = y1 * len, by = ay + ver * len; ay < by; ay += len)
140@@ -569,7 +571,7 @@ screen_draw_pixel(void)
141 			const int src = screen_layers[ax];
142 			screen_layers[ax] = above ? (src & 0x3) | color : (src & 0xc) | color;
143 		}
144-		if(!uxn_screen.full) screen_change(rX, rY, rX + 1, rY + 1);
145+		if(!screen_full) screen_change(rX, rY, rX + 1, rY + 1);
146 		if(rMX) rX++;
147 		if(rMY) rY++;
148 	}
149@@ -638,7 +640,7 @@ screen_draw_sprite(void)
150 		y1 = y, y2 = rY;
151 	else
152 		y1 = rY, y2 = y;
153-	if(!uxn_screen.full) screen_change(x1 - 8, y1 - 8, x2 + 8, y2 + 8);
154+	if(!screen_full) screen_change(x1 - 8, y1 - 8, x2 + 8, y2 + 8);
155 	if(rMX) rX += rDX * fx;
156 	if(rMY) rY += rDY * fy;
157 }
158@@ -1147,7 +1149,7 @@ emu_event(void)
159 	XNextEvent(display, &ev);
160 	switch(ev.type) {
161 	case Expose:
162-		uxn_screen.full = 1;
163+		screen_full = 1;
164 		break;
165 	case ClientMessage:
166 		dev[0x0f] = 0x80;
167@@ -1156,7 +1158,7 @@ emu_event(void)
168 		KeySym sym;
169 		XLookupString((XKeyPressedEvent *)&ev, buf, 7, &sym, 0);
170 		switch(sym) {
171-		case XK_F1: uxn_screen.zoom = (uxn_screen.zoom % 3) + 1, uxn_screen.resized = 1; break;
172+		case XK_F1: screen_zoom = (screen_zoom % 3) + 1, screen_resized = 1; break;
173 		case XK_F2: emu_deo(0xe, 0x1); break;
174 		case XK_F4: emu_restart(0); break;
175 		case XK_F5: emu_restart(1); break;
176@@ -1188,7 +1190,7 @@ emu_event(void)
177 	case LeaveNotify:
178 	case MotionNotify: {
179 		XMotionEvent *e = (XMotionEvent *)&ev;
180-		mouse_pos(e->x / uxn_screen.zoom, e->y / uxn_screen.zoom);
181+		mouse_pos(e->x / screen_zoom, e->y / screen_zoom);
182 	} break;
183 	}
184 }
185@@ -1238,7 +1240,7 @@ main(int argc, char **argv)
186 		return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
187 	else if(!system_boot(argv[i++], argc > 2))
188 		return !fprintf(stdout, "Could not load %s.\n", argv[i - 1]);
189-	uxn_screen.zoom = 1;
190+	screen_zoom = 1;
191 	screen_resize(WIDTH, HEIGHT);
192 	if(uxn_eval(0x100) && console_vector) {
193 		for(; i < argc; i++) {