commit 3199969

Devine Lu Linvega  ·  2024-11-25 18:13:03 +0000 UTC
parent ec581b0
(screen) Cleanup
1 files changed,  +12, -12
+12, -12
  1@@ -5,7 +5,7 @@
  2 #include "screen.h"
  3 
  4 /*
  5-Copyright (c) 2021-2023 Devine Lu Linvega, Andrew Alderwick
  6+Copyright (c) 2021-2024 Devine Lu Linvega, Andrew Alderwick
  7 
  8 Permission to use, copy, modify, and distribute this software for any
  9 purpose with or without fee is hereby granted, provided that the above
 10@@ -17,8 +17,8 @@ WITH REGARD TO THIS SOFTWARE.
 11 
 12 UxnScreen uxn_screen;
 13 
 14+#define MAR2(x) (x + 0x10)
 15 #define MARGIN 0x8
 16-#define MARGIN2 0x10
 17 
 18 /* c = !ch ? (color % 5 ? color >> 2 : 0) : color % 4 + ch == 1 ? 0 : (ch - 2 + (color & 3)) % 3 + 1; */
 19 
 20@@ -36,7 +36,7 @@ screen_2bpp(Uint8 *layer, Uint8 *addr, Uint16 x1, Uint16 y1, Uint16 blend, int f
 21 	for(y = top; y < bottom; y++) {
 22 		int ptr = fy < 0 ? 7 - (y - top) : y - top + offy * fy;
 23 		int ch1 = addr[ptr], ch2 = addr[ptr + 8];
 24-		int row = y * (uxn_screen.width + MARGIN2);
 25+		int row = y * MAR2(uxn_screen.width);
 26 		for(x = left; x < right; x++) {
 27 			int shift = (fx > 0 ? 7 - (x - left) : x - left) + offx;
 28 			int color = ((ch1 >> shift) & 1) | (((ch2 >> shift) & 1) << 1);
 29@@ -54,7 +54,7 @@ screen_1bpp(Uint8 *layer, Uint8 *addr, Uint16 x1, Uint16 y1, Uint16 blend, int f
 30 	for(y = top; y < bottom; y++) {
 31 		int ptr = fy < 0 ? 7 - (y - top) : y - top + offy * fy;
 32 		int ch1 = addr[ptr];
 33-		int row = y * (uxn_screen.width + MARGIN2);
 34+		int row = y * MAR2(uxn_screen.width);
 35 		for(x = left; x < right; x++) {
 36 			int shift = fx > 0 ? 7 - (x - left) : x - left + offx;
 37 			int color = (ch1 >> shift) & 1;
 38@@ -98,7 +98,7 @@ screen_change(int x1, int y1, int x2, int y2)
 39 void
 40 screen_fill(Uint8 *layer, int color)
 41 {
 42-	int i, length = (uxn_screen.width + MARGIN2) * uxn_screen.height;
 43+	int i, length = MAR2(uxn_screen.width) * uxn_screen.height;
 44 	for(i = 0; i < length; i++)
 45 		layer[i] = color;
 46 }
 47@@ -106,7 +106,7 @@ screen_fill(Uint8 *layer, int color)
 48 void
 49 screen_rect(Uint8 *layer, Uint16 x1, Uint16 y1, Uint16 x2, Uint16 y2, int color)
 50 {
 51-	int row, x, y, w = (uxn_screen.width + MARGIN2), h = (uxn_screen.height + MARGIN2);
 52+	int row, x, y, w = MAR2(uxn_screen.width), h = MAR2(uxn_screen.height);
 53 	for(y = y1; y < y2 && y < h; y++)
 54 		for(x = x1, row = y * w; x < x2 && x < w; x++)
 55 			layer[x + row] = color;
 56@@ -138,7 +138,7 @@ screen_resize(Uint16 width, Uint16 height, int scale)
 57 	if(uxn_screen.width == width && uxn_screen.height == height && uxn_screen.scale == scale)
 58 		return;
 59 	if(dim_change) {
 60-		int wmar = width + MARGIN2, hmar = height + MARGIN2;
 61+		int wmar = MAR2(width), hmar = MAR2(height);
 62 		bg = malloc(wmar * hmar), fg = malloc(wmar * hmar);
 63 		if(bg && fg)
 64 			pixels = realloc(uxn_screen.pixels, width * height * sizeof(Uint32) * scale * scale);
 65@@ -177,7 +177,7 @@ screen_redraw(void)
 66 		palette[i] = uxn_screen.palette[(i >> 2) ? (i >> 2) : (i & 3)];
 67 	for(y = y1; y < y2; y++) {
 68 		int ys = y * s;
 69-		for(x = x1, i = (x + MARGIN) + (y + MARGIN) * (w + MARGIN2); x < x2; x++, i++) {
 70+		for(x = x1, i = (x + MARGIN) + (y + MARGIN) * MAR2(w); x < x2; x++, i++) {
 71 			int c = palette[fg[i] << 2 | bg[i]];
 72 			for(k = 0; k < s; k++) {
 73 				int oo = ((ys + k) * w + x) * s;
 74@@ -243,9 +243,9 @@ screen_deo(Uxn *u, Uint8 addr)
 75 		}
 76 		/* pixel mode */
 77 		else {
 78-			Uint16 w = uxn_screen.width+MARGIN2;
 79+			Uint16 w = MAR2(uxn_screen.width);
 80 			if(rX >= 0 && rY >= 0 && rX < w && rY < uxn_screen.height)
 81-				layer[rX+MARGIN + (rY+MARGIN) * w] = color;
 82+				layer[rX + MARGIN + (rY + MARGIN) * w] = color;
 83 			screen_change(rX, rY, rX + 1, rY + 1);
 84 			if(rMX) rX++;
 85 			if(rMY) rY++;
 86@@ -265,14 +265,14 @@ screen_deo(Uxn *u, Uint8 addr)
 87 			for(i = 0; i <= rML; i++, x += dyx, y += dxy, rA += addr_incr) {
 88 				Uint16 xx = x + MARGIN;
 89 				Uint16 yy = y + MARGIN;
 90-				if(xx < uxn_screen.width + MARGIN && yy + MARGIN < uxn_screen.height + MARGIN2)
 91+				if(xx < uxn_screen.width + MARGIN && yy + MARGIN < MAR2(uxn_screen.height))
 92 					screen_2bpp(layer, &u->ram[rA], xx, yy, color, fx, fy);
 93 			}
 94 		else
 95 			for(i = 0; i <= rML; i++, x += dyx, y += dxy, rA += addr_incr) {
 96 				Uint16 xx = x + MARGIN;
 97 				Uint16 yy = y + MARGIN;
 98-				if(xx < uxn_screen.width + MARGIN && yy + MARGIN < uxn_screen.height + MARGIN2)
 99+				if(xx < uxn_screen.width + MARGIN && yy + MARGIN < MAR2(uxn_screen.height))
100 					screen_1bpp(layer, &u->ram[rA], x + MARGIN, y + MARGIN, color, fx, fy);
101 			}
102 		if(fx < 0)