aboutsummaryrefslogtreecommitdiffstats
path: root/src/devices.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-08-30 16:13:48 +0200
committerBad Diode <bd@badd10de.dev>2023-08-30 16:13:48 +0200
commite8fdb17d27a33988fb79c792d69ff15c16a0e59c (patch)
tree40d65b7c96b5951878d798c87495808e2d8bb908 /src/devices.c
parentac0fb608825c032e58bb533e30a77b1911b9bae9 (diff)
downloaduxngba-e8fdb17d27a33988fb79c792d69ff15c16a0e59c.tar.gz
uxngba-e8fdb17d27a33988fb79c792d69ff15c16a0e59c.zip
Add back input handling function
Diffstat (limited to 'src/devices.c')
-rw-r--r--src/devices.c207
1 files changed, 0 insertions, 207 deletions
diff --git a/src/devices.c b/src/devices.c
index 48d062d..e031a85 100644
--- a/src/devices.c
+++ b/src/devices.c
@@ -1,26 +1,5 @@
1static time_t seconds = 0; 1static time_t seconds = 0;
2 2
3typedef enum {
4 CONTROL_CONTROLLER,
5 CONTROL_MOUSE,
6 CONTROL_KEYBOARD,
7} ControlMethod;
8
9const ControlMethod ctrl_methods[] = {
10 CONTROL_METHODS
11};
12static ControlMethod ctrl_idx = 0;
13
14#define MOUSE_DELTA 1
15typedef struct Mouse {
16 int x;
17 int y;
18} Mouse;
19
20// static Uxn u;
21
22static Mouse mouse = {SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2};
23
24int 3int
25uxn_halt(Uxn *u, u8 instr, u8 err, u16 addr) { 4uxn_halt(Uxn *u, u8 instr, u8 err, u16 addr) {
26 (void)u; 5 (void)u;
@@ -309,189 +288,3 @@ uxn_deo(Uxn *u, u8 addr) {
309 } 288 }
310} 289}
311 290
312IWRAM_CODE
313void
314handle_input(Uxn *u) {
315 // poll_keys();
316 // if (key_tap(KEY_SELECT)) {
317 // // Reset control variables on method switch.
318 // switch (ctrl_methods[ctrl_idx]) {
319 // case CONTROL_CONTROLLER: {
320 // u8 *d = &u->dev[0x80];
321 // d[2] = 0;
322 // uxn_eval(u, PEEK2(d));
323 // d[3] = 0;
324 // } break;
325 // case CONTROL_MOUSE: {
326 // u8 *d = &u->dev[0x90];
327 // d[6] = 0;
328 // d[7] = 0;
329 // POKE2(d + 0x2, -10);
330 // POKE2(d + 0x4, -10);
331 // uxn_eval(u, PEEK2(d));
332 // } break;
333 // case CONTROL_KEYBOARD: {
334 // toggle_keyboard();
335 // } break;
336 // }
337
338 // // Update ctrl_idx.
339 // ctrl_idx = (ctrl_idx + 1 > (int)LEN(ctrl_methods) - 1) ? 0 : ctrl_idx + 1;
340
341 // // Initialize controller variables here.
342 // if (ctrl_methods[ctrl_idx] == CONTROL_KEYBOARD) {
343 // toggle_keyboard();
344 // }
345 // }
346
347 // if (ctrl_methods[ctrl_idx] == CONTROL_CONTROLLER) {
348 // u8 *d = &u->dev[0x80];
349 // // TODO: We don't need ifs if we use KEY_INPUTS directly and maybe just
350 // // swap some things if needed.
351 // u8 *flag = &d[2];
352 // if (key_tap(KEY_A)) {
353 // *flag |= 0x01;
354 // } else {
355 // *flag &= ~0x01;
356 // }
357 // if (key_tap(KEY_B)) {
358 // *flag |= 0x02;
359 // } else {
360 // *flag &= ~0x02;
361 // }
362 // if (key_tap(KEY_L)) {
363 // *flag |= 0x04;
364 // } else {
365 // *flag &= ~0x04;
366 // }
367 // if (key_tap(KEY_R)) {
368 // *flag |= 0x08;
369 // } else {
370 // *flag &= ~0x08;
371 // }
372 // if (key_tap(KEY_UP)) {
373 // *flag |= 0x10;
374 // } else {
375 // *flag &= ~0x10;
376 // }
377 // if (key_tap(KEY_DOWN)) {
378 // *flag |= 0x20;
379 // } else {
380 // *flag &= ~0x20;
381 // }
382 // if (key_tap(KEY_LEFT)) {
383 // *flag |= 0x40;
384 // } else {
385 // *flag &= ~0x40;
386 // }
387 // if (key_tap(KEY_RIGHT)) {
388 // *flag |= 0x80;
389 // } else {
390 // *flag &= ~0x80;
391 // }
392
393 // if (key_prev != key_curr) {
394 // uxn_eval(u, PEEK2(d));
395 // }
396 // d[3] = 0;
397 // } else if (ctrl_methods[ctrl_idx] == CONTROL_MOUSE) {
398 // u8 *d = &u->dev[0x90];
399 // // Detect "mouse key press".
400 // u8 flag = d[6];
401 // bool event = false;
402 // if (key_tap(KEY_B)) {
403 // event = true;
404 // flag |= 0x01;
405 // } else if (key_released(KEY_B)) {
406 // event = true;
407 // flag &= ~0x01;
408 // }
409 // if (key_tap(KEY_A)) {
410 // event = true;
411 // flag |= 0x10;
412 // } else if (key_released(KEY_A)) {
413 // event = true;
414 // flag &= ~0x10;
415 // }
416
417 // // Handle chording.
418 // d[6] = flag;
419 // if(flag == 0x10 && (d[6] & 0x01)) {
420 // d[7] = 0x01;
421 // }
422 // if(flag == 0x01 && (d[6] & 0x10)) {
423 // d[7] = 0x10;
424 // }
425
426 // // Detect mouse movement.
427 // if (key_pressed(KEY_UP)) {
428 // event = true;
429 // mouse.y = CLAMP(mouse.y - MOUSE_DELTA, 0, SCREEN_HEIGHT - 8);
430 // } else if (key_pressed(KEY_DOWN)) {
431 // event = true;
432 // mouse.y = CLAMP(mouse.y + MOUSE_DELTA, 0, SCREEN_HEIGHT - 8);
433 // }
434 // if (key_pressed(KEY_LEFT)) {
435 // event = true;
436 // mouse.x = CLAMP(mouse.x - MOUSE_DELTA, 0, SCREEN_WIDTH - 8);
437 // } else if (key_pressed(KEY_RIGHT)) {
438 // event = true;
439 // mouse.x = CLAMP(mouse.x + MOUSE_DELTA, 0, SCREEN_WIDTH - 8);
440 // }
441
442 // // Eval mouse.
443 // POKE2(d + 0x2, mouse.x);
444 // POKE2(d + 0x4, mouse.y);
445 // if (event) {
446 // uxn_eval(u, PEEK2(d));
447 // }
448 // } else if (ctrl_methods[ctrl_idx] == CONTROL_KEYBOARD) {
449 // u8 *d = &u->dev[0x80];
450 // if (key_tap(KEY_LEFT)) {
451 // update_cursor(cursor_position - 1);
452 // } else if (key_tap(KEY_RIGHT)) {
453 // update_cursor(cursor_position + 1);
454 // }
455 // if (key_tap(KEY_UP) && cursor_position >= KEYBOARD_ROW_SIZE) {
456 // update_cursor(cursor_position - KEYBOARD_ROW_SIZE);
457 // } else if (key_tap(KEY_DOWN)
458 // && cursor_position < LEN(keyboard) - KEYBOARD_ROW_SIZE) {
459 // update_cursor(cursor_position + KEYBOARD_ROW_SIZE);
460 // }
461 // if (key_tap(KEY_B)) {
462 // u8 symbol = keyboard[cursor_position].symbol;
463 // switch (symbol) {
464 // case 0x7f: {
465 // // Backspace.
466 // d[3] = 0x08;
467 // } break;
468 // case 0x14: {
469 // // New line.
470 // d[3] = 0x0d;
471 // } break;
472 // case 0x18: {
473 // // Arrow up.
474 // d[2] = 0x10;
475 // } break;
476 // case 0x19: {
477 // // Arrow down.
478 // d[2] = 0x20;
479 // } break;
480 // case 0x1b: {
481 // // Arrow left.
482 // d[2] = 0x40;
483 // } break;
484 // case 0x1a: {
485 // // Arrow right.
486 // d[2] = 0x80;
487 // } break;
488 // default: {
489 // d[3] = symbol;
490 // } break;
491 // }
492 // uxn_eval(u, PEEK2(d));
493 // d[3] = 0;
494 // }
495 // }
496}
497