diff options
author | Bad Diode <bd@badd10de.dev> | 2022-03-05 22:41:43 +0100 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2022-03-05 22:41:43 +0100 |
commit | 8c40fb31d36488b99045b7fa3641f8ce2cf1ff99 (patch) | |
tree | e63003d3dd5385360772d86e8703b2053714a929 | |
parent | 4aa83a8de5e5b131ddcabc920536d9b807b608ca (diff) | |
download | uxnfb-8c40fb31d36488b99045b7fa3641f8ce2cf1ff99.tar.gz uxnfb-8c40fb31d36488b99045b7fa3641f8ce2cf1ff99.zip |
Finish uxn core update
-rw-r--r-- | src/main.c | 367 |
1 files changed, 177 insertions, 190 deletions
@@ -142,168 +142,174 @@ poll_input(void) { | |||
142 | 142 | ||
143 | void | 143 | void |
144 | handle_keyboard(void) { | 144 | handle_keyboard(void) { |
145 | // // Find mod keys. | 145 | // Find mod keys. |
146 | // bool shift_mod = false; | 146 | bool shift_mod = false; |
147 | // // bool ctrl_mod = false; | 147 | // bool ctrl_mod = false; |
148 | // // bool alt_mod = false; | 148 | // bool alt_mod = false; |
149 | // // bool meta_mod = false; | 149 | // bool meta_mod = false; |
150 | // for (size_t i = 0; i < sizeof(in.map); i++) { | 150 | for (size_t i = 0; i < sizeof(in.map); i++) { |
151 | // for (size_t j = 0; j < 8; j++) { | 151 | for (size_t j = 0; j < 8; j++) { |
152 | // char key = in.map[i] & (1 << j); | 152 | char key = in.map[i] & (1 << j); |
153 | // if (key) { | 153 | if (key) { |
154 | // char key_code = i * 8 + j; | 154 | char key_code = i * 8 + j; |
155 | // switch (key_code) { | 155 | switch (key_code) { |
156 | // case KEY_LEFTSHIFT: | 156 | case KEY_LEFTSHIFT: |
157 | // case KEY_RIGHTSHIFT: { shift_mod = true; } break; | 157 | case KEY_RIGHTSHIFT: { shift_mod = true; } break; |
158 | // // case KEY_LEFTCTRL: | 158 | // case KEY_LEFTCTRL: |
159 | // // case KEY_RIGHTCTRL: { ctrl_mod = true; } break; | 159 | // case KEY_RIGHTCTRL: { ctrl_mod = true; } break; |
160 | // // case KEY_LEFTALT: | 160 | // case KEY_LEFTALT: |
161 | // // case KEY_RIGHTALT: { alt_mod = true; } break; | 161 | // case KEY_RIGHTALT: { alt_mod = true; } break; |
162 | // // case KEY_LEFTMETA: | 162 | // case KEY_LEFTMETA: |
163 | // // case KEY_RIGHTMETA: { meta_mod = true; } break; | 163 | // case KEY_RIGHTMETA: { meta_mod = true; } break; |
164 | // default: break; | 164 | default: break; |
165 | // } | 165 | } |
166 | // } | 166 | } |
167 | // } | 167 | } |
168 | // } | 168 | } |
169 | 169 | ||
170 | // // Handle normal keys. | 170 | // Handle normal keys. |
171 | // u8 controller_now = 0; | 171 | u8 controller_now = 0; |
172 | // for (size_t i = 0; i < sizeof(in.map); i++) { | 172 | for (size_t i = 0; i < sizeof(in.map); i++) { |
173 | // for (size_t j = 0; j < 8; j++) { | 173 | for (size_t j = 0; j < 8; j++) { |
174 | // char key = in.map[i] & (1 << j); | 174 | char key = in.map[i] & (1 << j); |
175 | // if (key) { | 175 | if (key) { |
176 | // char key_code = i * 8 + j; | 176 | char key_code = i * 8 + j; |
177 | // // Normal keys. | 177 | // Normal keys. |
178 | // u8 rune = '\0'; | 178 | u8 rune = '\0'; |
179 | // switch (key_code) { | 179 | switch (key_code) { |
180 | // case KEY_KP1: | 180 | case KEY_KP1: |
181 | // case KEY_1: { rune = shift_mod ? '!' : '1'; } break; | 181 | case KEY_1: { rune = shift_mod ? '!' : '1'; } break; |
182 | // case KEY_KP2: | 182 | case KEY_KP2: |
183 | // case KEY_2: { rune = shift_mod ? '@' : '2'; } break; | 183 | case KEY_2: { rune = shift_mod ? '@' : '2'; } break; |
184 | // case KEY_KP3: | 184 | case KEY_KP3: |
185 | // case KEY_3: { rune = shift_mod ? '#' : '3'; } break; | 185 | case KEY_3: { rune = shift_mod ? '#' : '3'; } break; |
186 | // case KEY_KP4: | 186 | case KEY_KP4: |
187 | // case KEY_4: { rune = shift_mod ? '$' : '4'; } break; | 187 | case KEY_4: { rune = shift_mod ? '$' : '4'; } break; |
188 | // case KEY_KP5: | 188 | case KEY_KP5: |
189 | // case KEY_5: { rune = shift_mod ? '%' : '5'; } break; | 189 | case KEY_5: { rune = shift_mod ? '%' : '5'; } break; |
190 | // case KEY_KP6: | 190 | case KEY_KP6: |
191 | // case KEY_6: { rune = shift_mod ? '^' : '6'; } break; | 191 | case KEY_6: { rune = shift_mod ? '^' : '6'; } break; |
192 | // case KEY_KP7: | 192 | case KEY_KP7: |
193 | // case KEY_7: { rune = shift_mod ? '&' : '7'; } break; | 193 | case KEY_7: { rune = shift_mod ? '&' : '7'; } break; |
194 | // case KEY_KP8: | 194 | case KEY_KP8: |
195 | // case KEY_8: { rune = shift_mod ? '*' : '8'; } break; | 195 | case KEY_8: { rune = shift_mod ? '*' : '8'; } break; |
196 | // case KEY_KP9: | 196 | case KEY_KP9: |
197 | // case KEY_9: { rune = shift_mod ? '(' : '9'; } break; | 197 | case KEY_9: { rune = shift_mod ? '(' : '9'; } break; |
198 | // case KEY_KP0: | 198 | case KEY_KP0: |
199 | // case KEY_0: { rune = shift_mod ? ')' : '0'; } break; | 199 | case KEY_0: { rune = shift_mod ? ')' : '0'; } break; |
200 | // case KEY_KPMINUS: | 200 | case KEY_KPMINUS: |
201 | // case KEY_MINUS: { rune = shift_mod ? '_' : '-'; } break; | 201 | case KEY_MINUS: { rune = shift_mod ? '_' : '-'; } break; |
202 | // case KEY_KPEQUAL: | 202 | case KEY_KPEQUAL: |
203 | // case KEY_EQUAL: { rune = shift_mod ? '+' : '+'; } break; | 203 | case KEY_EQUAL: { rune = shift_mod ? '+' : '+'; } break; |
204 | // case KEY_Q: { rune = shift_mod ? 'Q' : 'q'; } break; | 204 | case KEY_Q: { rune = shift_mod ? 'Q' : 'q'; } break; |
205 | // case KEY_W: { rune = shift_mod ? 'W' : 'w'; } break; | 205 | case KEY_W: { rune = shift_mod ? 'W' : 'w'; } break; |
206 | // case KEY_E: { rune = shift_mod ? 'E' : 'e'; } break; | 206 | case KEY_E: { rune = shift_mod ? 'E' : 'e'; } break; |
207 | // case KEY_R: { rune = shift_mod ? 'T' : 't'; } break; | 207 | case KEY_R: { rune = shift_mod ? 'T' : 't'; } break; |
208 | // case KEY_T: { rune = shift_mod ? 'T' : 't'; } break; | 208 | case KEY_T: { rune = shift_mod ? 'T' : 't'; } break; |
209 | // case KEY_Y: { rune = shift_mod ? 'Y' : 'y'; } break; | 209 | case KEY_Y: { rune = shift_mod ? 'Y' : 'y'; } break; |
210 | // case KEY_U: { rune = shift_mod ? 'U' : 'u'; } break; | 210 | case KEY_U: { rune = shift_mod ? 'U' : 'u'; } break; |
211 | // case KEY_I: { rune = shift_mod ? 'I' : 'i'; } break; | 211 | case KEY_I: { rune = shift_mod ? 'I' : 'i'; } break; |
212 | // case KEY_O: { rune = shift_mod ? 'O' : 'o'; } break; | 212 | case KEY_O: { rune = shift_mod ? 'O' : 'o'; } break; |
213 | // case KEY_P: { rune = shift_mod ? 'P' : 'p'; } break; | 213 | case KEY_P: { rune = shift_mod ? 'P' : 'p'; } break; |
214 | // case KEY_LEFTBRACE: { rune = shift_mod ? '{' : '['; } break; | 214 | case KEY_LEFTBRACE: { rune = shift_mod ? '{' : '['; } break; |
215 | // case KEY_RIGHTBRACE: { rune = shift_mod ? '}' : ']'; } break; | 215 | case KEY_RIGHTBRACE: { rune = shift_mod ? '}' : ']'; } break; |
216 | // case KEY_A: { rune = shift_mod ? 'A' : 'a'; } break; | 216 | case KEY_A: { rune = shift_mod ? 'A' : 'a'; } break; |
217 | // case KEY_S: { rune = shift_mod ? 'S' : 's'; } break; | 217 | case KEY_S: { rune = shift_mod ? 'S' : 's'; } break; |
218 | // case KEY_D: { rune = shift_mod ? 'D' : 'd'; } break; | 218 | case KEY_D: { rune = shift_mod ? 'D' : 'd'; } break; |
219 | // case KEY_F: { rune = shift_mod ? 'F' : 'f'; } break; | 219 | case KEY_F: { rune = shift_mod ? 'F' : 'f'; } break; |
220 | // case KEY_G: { rune = shift_mod ? 'G' : 'g'; } break; | 220 | case KEY_G: { rune = shift_mod ? 'G' : 'g'; } break; |
221 | // case KEY_H: { rune = shift_mod ? 'H' : 'h'; } break; | 221 | case KEY_H: { rune = shift_mod ? 'H' : 'h'; } break; |
222 | // case KEY_J: { rune = shift_mod ? 'J' : 'j'; } break; | 222 | case KEY_J: { rune = shift_mod ? 'J' : 'j'; } break; |
223 | // case KEY_K: { rune = shift_mod ? 'K' : 'k'; } break; | 223 | case KEY_K: { rune = shift_mod ? 'K' : 'k'; } break; |
224 | // case KEY_L: { rune = shift_mod ? 'L' : 'l'; } break; | 224 | case KEY_L: { rune = shift_mod ? 'L' : 'l'; } break; |
225 | // case KEY_SEMICOLON: { rune = shift_mod ? ':' : ';'; } break; | 225 | case KEY_SEMICOLON: { rune = shift_mod ? ':' : ';'; } break; |
226 | // case KEY_APOSTROPHE: { rune = shift_mod ? '"' : '\''; } break; | 226 | case KEY_APOSTROPHE: { rune = shift_mod ? '"' : '\''; } break; |
227 | // case KEY_GRAVE: { rune = shift_mod ? '~' : '`'; } break; | 227 | case KEY_GRAVE: { rune = shift_mod ? '~' : '`'; } break; |
228 | // case KEY_BACKSLASH: { rune = shift_mod ? '|' : '\\'; } break; | 228 | case KEY_BACKSLASH: { rune = shift_mod ? '|' : '\\'; } break; |
229 | // case KEY_Z: { rune = shift_mod ? 'Z' : 'z'; } break; | 229 | case KEY_Z: { rune = shift_mod ? 'Z' : 'z'; } break; |
230 | // case KEY_X: { rune = shift_mod ? 'X' : 'x'; } break; | 230 | case KEY_X: { rune = shift_mod ? 'X' : 'x'; } break; |
231 | // case KEY_C: { rune = shift_mod ? 'C' : 'c'; } break; | 231 | case KEY_C: { rune = shift_mod ? 'C' : 'c'; } break; |
232 | // case KEY_V: { rune = shift_mod ? 'V' : 'v'; } break; | 232 | case KEY_V: { rune = shift_mod ? 'V' : 'v'; } break; |
233 | // case KEY_B: { rune = shift_mod ? 'B' : 'b'; } break; | 233 | case KEY_B: { rune = shift_mod ? 'B' : 'b'; } break; |
234 | // case KEY_N: { rune = shift_mod ? 'N' : 'n'; } break; | 234 | case KEY_N: { rune = shift_mod ? 'N' : 'n'; } break; |
235 | // case KEY_M: { rune = shift_mod ? 'M' : 'm'; } break; | 235 | case KEY_M: { rune = shift_mod ? 'M' : 'm'; } break; |
236 | // case KEY_COMMA: { rune = shift_mod ? '<' : ','; } break; | 236 | case KEY_COMMA: { rune = shift_mod ? '<' : ','; } break; |
237 | // case KEY_DOT: { rune = shift_mod ? '>' : '.'; } break; | 237 | case KEY_DOT: { rune = shift_mod ? '>' : '.'; } break; |
238 | // case KEY_KPSLASH: | 238 | case KEY_KPSLASH: |
239 | // case KEY_SLASH: { rune = shift_mod ? '?' : '/'; } break; | 239 | case KEY_SLASH: { rune = shift_mod ? '?' : '/'; } break; |
240 | // case KEY_KPASTERISK: { rune = '*'; } break; | 240 | case KEY_KPASTERISK: { rune = '*'; } break; |
241 | // case KEY_KPPLUS: { rune = '+'; } break; | 241 | case KEY_KPPLUS: { rune = '+'; } break; |
242 | // case KEY_KPCOMMA: { rune = '.'; } break; | 242 | case KEY_KPCOMMA: { rune = '.'; } break; |
243 | // case KEY_SPACE: { rune = ' '; } break; | 243 | case KEY_SPACE: { rune = ' '; } break; |
244 | // case KEY_TAB: { rune = '\t'; } break; | 244 | case KEY_TAB: { rune = '\t'; } break; |
245 | // case KEY_ESC: { rune = 0x1b; } break; | 245 | case KEY_ESC: { rune = 0x1b; } break; |
246 | // case KEY_BACKSPACE: { rune = 0x08; } break; | 246 | case KEY_BACKSPACE: { rune = 0x08; } break; |
247 | // case KEY_ENTER: | 247 | case KEY_ENTER: |
248 | // case KEY_KPENTER: { rune = 0x0d; } break; | 248 | case KEY_KPENTER: { rune = 0x0d; } break; |
249 | // default: break; | 249 | default: break; |
250 | // } | 250 | } |
251 | // if (rune) { | 251 | if (rune) { |
252 | // devctrl->dat[3] = rune; | 252 | devctrl->dat[3] = rune; |
253 | // uxn_eval(&u, mempeek16(devctrl->dat, 0)); | 253 | uxn_eval(&u, GETVECTOR(devctrl)); |
254 | // devctrl->dat[3] = 0; | 254 | devctrl->dat[3] = 0; |
255 | // continue; | 255 | continue; |
256 | // } | 256 | } |
257 | 257 | ||
258 | // // Special keys. | 258 | // Special keys. |
259 | // switch (key_code) { | 259 | switch (key_code) { |
260 | // case KEY_LEFTCTRL: { rune = 0x01; } break; | 260 | case KEY_LEFTCTRL: { rune = 0x01; } break; |
261 | // case KEY_LEFTALT: { rune = 0x02; } break; | 261 | case KEY_LEFTALT: { rune = 0x02; } break; |
262 | // case KEY_LEFTSHIFT: { rune = 0x04; } break; | 262 | case KEY_LEFTSHIFT: { rune = 0x04; } break; |
263 | // case KEY_HOME: { rune = 0x08; } break; | 263 | case KEY_HOME: { rune = 0x08; } break; |
264 | // case KEY_UP: { rune = 0x10; } break; | 264 | case KEY_UP: { rune = 0x10; } break; |
265 | // case KEY_DOWN: { rune = 0x20; } break; | 265 | case KEY_DOWN: { rune = 0x20; } break; |
266 | // case KEY_LEFT: { rune = 0x40; } break; | 266 | case KEY_LEFT: { rune = 0x40; } break; |
267 | // case KEY_RIGHT: { rune = 0x80; } break; | 267 | case KEY_RIGHT: { rune = 0x80; } break; |
268 | // default: break; | 268 | default: break; |
269 | // } | 269 | } |
270 | // if (rune) { | 270 | if (rune) { |
271 | // controller_now |= rune; | 271 | controller_now |= rune; |
272 | // continue; | 272 | continue; |
273 | // } | 273 | } |
274 | // } | 274 | } |
275 | // } | 275 | } |
276 | // } | 276 | } |
277 | 277 | ||
278 | // if (controller_now != in.controller) { | 278 | if (controller_now != in.controller) { |
279 | // devctrl->dat[2] = controller_now; | 279 | devctrl->dat[2] = controller_now; |
280 | // uxn_eval(&u, mempeek16(devctrl->dat, 0)); | 280 | uxn_eval(&u, GETVECTOR(devctrl)); |
281 | // in.controller = controller_now; | 281 | in.controller = controller_now; |
282 | // } | 282 | } |
283 | 283 | ||
284 | // // Reset input state. | 284 | // Reset input state. |
285 | // devctrl->dat[3] = 0; | 285 | devctrl->dat[3] = 0; |
286 | // memset(in.map, 0, sizeof(in.map)); | 286 | memset(in.map, 0, sizeof(in.map)); |
287 | } | ||
288 | |||
289 | void | ||
290 | mouse_pos(Device *d, u16 x, u16 y) { | ||
291 | DEVPOKE16(0x2, x); | ||
292 | DEVPOKE16(0x4, y); | ||
293 | uxn_eval(d->u, GETVECTOR(d)); | ||
287 | } | 294 | } |
288 | 295 | ||
289 | void | 296 | void |
290 | handle_mouse(void) { | 297 | handle_mouse(void) { |
291 | // if (in.mouse.update) { | 298 | if (in.mouse.update) { |
292 | // // Handle mouse keys. | 299 | // Handle mouse keys. |
293 | // devmouse->dat[6] = in.mouse.buttons; | 300 | devmouse->dat[6] = in.mouse.buttons; |
294 | // if(in.mouse.buttons == 0x10 && (devmouse->dat[6] & 0x01)) { | 301 | if(in.mouse.buttons == 0x10 && (devmouse->dat[6] & 0x01)) { |
295 | // devmouse->dat[7] = 0x01; | 302 | devmouse->dat[7] = 0x01; |
296 | // } | 303 | } |
297 | // if(in.mouse.buttons == 0x01 && (devmouse->dat[6] & 0x10)) { | 304 | if(in.mouse.buttons == 0x01 && (devmouse->dat[6] & 0x10)) { |
298 | // devmouse->dat[7] = 0x10; | 305 | devmouse->dat[7] = 0x10; |
299 | // } | 306 | } |
300 | 307 | ||
301 | // // Handle mouse location. | 308 | // Handle mouse location. |
302 | // mempoke16(devmouse->dat, 0x2, in.mouse.x); | 309 | mouse_pos(devmouse, in.mouse.x, in.mouse.y); |
303 | // mempoke16(devmouse->dat, 0x4, in.mouse.y); | 310 | uxn_eval(&u, GETVECTOR(devmouse)); |
304 | // uxn_eval(&u, mempeek16(devmouse->dat, 0)); | 311 | in.mouse.update = false; |
305 | // in.mouse.update = false; | 312 | } |
306 | // } | ||
307 | } | 313 | } |
308 | 314 | ||
309 | void | 315 | void |
@@ -312,19 +318,19 @@ handle_input(void) { | |||
312 | handle_mouse(); | 318 | handle_mouse(); |
313 | } | 319 | } |
314 | 320 | ||
315 | static Uint8 | 321 | static u8 |
316 | nil_dei(Device *d, Uint8 port) { | 322 | nil_dei(Device *d, u8 port) { |
317 | return d->dat[port]; | 323 | return d->dat[port]; |
318 | } | 324 | } |
319 | 325 | ||
320 | static void | 326 | static void |
321 | nil_deo(Device *d, Uint8 port) { | 327 | nil_deo(Device *d, u8 port) { |
322 | (void)d; | 328 | (void)d; |
323 | (void)port; | 329 | (void)port; |
324 | } | 330 | } |
325 | 331 | ||
326 | static void | 332 | static void |
327 | console_deo(Device *d, Uint8 port) { | 333 | console_deo(Device *d, u8 port) { |
328 | FILE *fd = port == 0x8 ? stdout : port == 0x9 ? stderr : 0; | 334 | FILE *fd = port == 0x8 ? stdout : port == 0x9 ? stderr : 0; |
329 | if(fd) { | 335 | if(fd) { |
330 | fputc(d->dat[port], fd); | 336 | fputc(d->dat[port], fd); |
@@ -332,27 +338,8 @@ console_deo(Device *d, Uint8 port) { | |||
332 | } | 338 | } |
333 | } | 339 | } |
334 | 340 | ||
335 | void | 341 | u8 |
336 | console_talk(Device *d, u8 b0, u8 w) { | 342 | screen_dei(Device *d, u8 port) { |
337 | (void)d; | ||
338 | (void)b0; | ||
339 | (void)w; | ||
340 | // char stmp[2]; | ||
341 | // if(!w) { | ||
342 | // return; | ||
343 | // } | ||
344 | // switch(b0) { | ||
345 | // case 0x8: stmp[0] = d->dat[0x8]; stmp[1] = 0; uart_puts(stmp); break; | ||
346 | // TODO: implement printf for the uart to be able to format | ||
347 | // numbers. | ||
348 | // case 0x9: txt_printf("0x%02x", d->dat[0x9]); break; | ||
349 | // case 0xb: txt_printf("0x%04x", mempeek16(d->dat, 0xa)); break; | ||
350 | // case 0xd: txt_printf("%s", &d->mem[mempeek16(d->dat, 0xc)]); break; | ||
351 | // } | ||
352 | } | ||
353 | |||
354 | Uint8 | ||
355 | screen_dei(Device *d, Uint8 port) { | ||
356 | switch(port) { | 343 | switch(port) { |
357 | case 0x2: return screen_width >> 8; | 344 | case 0x2: return screen_width >> 8; |
358 | case 0x3: return screen_width; | 345 | case 0x3: return screen_width; |
@@ -363,11 +350,11 @@ screen_dei(Device *d, Uint8 port) { | |||
363 | } | 350 | } |
364 | 351 | ||
365 | void | 352 | void |
366 | screen_deo(Device *d, Uint8 port) { | 353 | screen_deo(Device *d, u8 port) { |
367 | switch(port) { | 354 | switch(port) { |
368 | case 0xe: { | 355 | case 0xe: { |
369 | Uint16 x, y; | 356 | u16 x, y; |
370 | Uint8 layer = d->dat[0xe] & 0x40; | 357 | u8 layer = d->dat[0xe] & 0x40; |
371 | DEVPEEK16(x, 0x8); | 358 | DEVPEEK16(x, 0x8); |
372 | DEVPEEK16(y, 0xa); | 359 | DEVPEEK16(y, 0xa); |
373 | ppu_pixel(layer ? pixels_fg : pixels_bg, x, y, d->dat[0xe] & 0x3); | 360 | ppu_pixel(layer ? pixels_fg : pixels_bg, x, y, d->dat[0xe] & 0x3); |
@@ -375,8 +362,8 @@ screen_deo(Device *d, Uint8 port) { | |||
375 | if(d->dat[0x6] & 0x02) DEVPOKE16(0xa, y + 1); /* auto y+1 */ | 362 | if(d->dat[0x6] & 0x02) DEVPOKE16(0xa, y + 1); /* auto y+1 */ |
376 | } break; | 363 | } break; |
377 | case 0xf: { | 364 | case 0xf: { |
378 | Uint16 x, y, addr; | 365 | u16 x, y, addr; |
379 | Uint8 twobpp = !!(d->dat[0xf] & 0x80); | 366 | u8 twobpp = !!(d->dat[0xf] & 0x80); |
380 | DEVPEEK16(x, 0x8); | 367 | DEVPEEK16(x, 0x8); |
381 | DEVPEEK16(y, 0xa); | 368 | DEVPEEK16(y, 0xa); |
382 | DEVPEEK16(addr, 0xc); | 369 | DEVPEEK16(addr, 0xc); |
@@ -424,7 +411,7 @@ screen_palette(Device *d) { | |||
424 | } | 411 | } |
425 | 412 | ||
426 | void | 413 | void |
427 | system_deo_special(Device *d, Uint8 port) { | 414 | system_deo_special(Device *d, u8 port) { |
428 | if(port > 0x7 && port < 0xe) { | 415 | if(port > 0x7 && port < 0xe) { |
429 | screen_palette(d); | 416 | screen_palette(d); |
430 | } | 417 | } |
@@ -452,7 +439,7 @@ load_rom(char *file_name) { | |||
452 | void | 439 | void |
453 | init_uxn(Uxn *u, char *file_name) { | 440 | init_uxn(Uxn *u, char *file_name) { |
454 | // Setup UXN memory. | 441 | // Setup UXN memory. |
455 | uxn_boot(u, calloc(0x10000, sizeof(Uint8))); | 442 | uxn_boot(u, calloc(0x10000, sizeof(u8))); |
456 | 443 | ||
457 | // Copy rom to VM. | 444 | // Copy rom to VM. |
458 | load_rom(file_name); | 445 | load_rom(file_name); |