commit d3074c4

Devie Lu Linvega  ·  2025-12-23 17:49:57 +0000 UTC
parent da48ec5
Use memset for boot
1 files changed,  +15, -11
+15, -11
 1@@ -36,11 +36,10 @@ static Window window;
 2 #define WIDTH (64 * 8)
 3 #define HEIGHT (40 * 8)
 4 
 5-#define clamp(v, a, b) { if(v < a) v = a; else if(v >= b) v = b; }
 6-#define twos(v) (v & 0x8000 ? (int)v - 0x10000 : (int)v)
 7-
 8 #define PEEK2(d) (*(d) << 8 | (d)[1])
 9 #define POKE2(d, v) { *(d) = (v) >> 8; (d)[1] = (v); }
10+#define CLAMP(v, a, b) { if(v < a) v = a; else if(v >= b) v = b; }
11+#define TWOS(v) (v & 0x8000 ? (int)v - 0x10000 : (int)v)
12 
13 #define NEXT if(--cycles) goto step; else return 0;
14 
15@@ -168,8 +167,13 @@ static unsigned int
16 system_reboot(const unsigned int soft)
17 {
18 	unsigned int i;
19-	for(i = 0x0; i < 0x100; i++) dev[i] = 0;
20-	for(i = soft ? 0x100 : 0; i < 0x10000; i++) ram[i] = 0;
21+	memset(dev, 0, 0x100);
22+	memset(stk[0], 0, 0x100);
23+	memset(stk[1], 0, 0x100);
24+	if(soft)
25+		memset(ram + 0x100, 0, 0xff00);
26+	else
27+		memset(ram, 0, 0x10000);
28 	ptr[0] = ptr[1] = 0;
29 	return system_load(system_boot_path);
30 }
31@@ -520,10 +524,10 @@ screen_update()
32 		uxn_screen.y2 = uxn_screen.height;
33 		scree_redraw();
34 	} else if(uxn_screen.x2 > uxn_screen.x1 && uxn_screen.y2 > uxn_screen.y1) {
35-		clamp(uxn_screen.x1, 0, uxn_screen.width);
36-		clamp(uxn_screen.y1, 0, uxn_screen.height);
37-		clamp(uxn_screen.x2, 0, uxn_screen.width);
38-		clamp(uxn_screen.y2, 0, uxn_screen.height);
39+		CLAMP(uxn_screen.x1, 0, uxn_screen.width);
40+		CLAMP(uxn_screen.y1, 0, uxn_screen.height);
41+		CLAMP(uxn_screen.x2, 0, uxn_screen.width);
42+		CLAMP(uxn_screen.y2, 0, uxn_screen.height);
43 		scree_redraw();
44 	}
45 }
46@@ -1032,9 +1036,9 @@ emu_deo(const Uint8 port, const Uint8 value)
47 	case 0x25: screen_resize(uxn_screen.width & 0xfff, PEEK2(&dev[0x24]) & 0xfff); return;
48 	case 0x26: rMX = dev[0x26] & 0x1, rMY = dev[0x26] & 0x2, rMA = dev[0x26] & 0x4, rML = dev[0x26] >> 4, rDX = rMX << 3, rDY = rMY << 2; return;
49 	case 0x28:
50-	case 0x29: rX = (dev[0x28] << 8) | dev[0x29], rX = twos(rX); return;
51+	case 0x29: rX = (dev[0x28] << 8) | dev[0x29], rX = TWOS(rX); return;
52 	case 0x2a:
53-	case 0x2b: rY = (dev[0x2a] << 8) | dev[0x2b], rY = twos(rY); return;
54+	case 0x2b: rY = (dev[0x2a] << 8) | dev[0x2b], rY = TWOS(rY); return;
55 	case 0x2c:
56 	case 0x2d: rA = (dev[0x2c] << 8) | dev[0x2d]; return;
57 	case 0x2e: screen_draw_pixel(); return;