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)