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;