diff options
author | Jens Arnold <amiconn@rockbox.org> | 2004-10-17 00:54:09 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2004-10-17 00:54:09 +0000 |
commit | 79afbafa669bee52059d980ae887dfa06948c252 (patch) | |
tree | b359f4cb336fbd477ec990a37b86a73f8266e455 /apps/plugins/chip8.c | |
parent | 7c2496d35a1046d6383a7df8a78a1e9ba5cf7607 (diff) | |
download | rockbox-79afbafa669bee52059d980ae887dfa06948c252.tar.gz rockbox-79afbafa669bee52059d980ae887dfa06948c252.zip |
Plugin rework 2: (most) Compile-time keyboard configuration, for Ondio adaption. (all) Now using the default event handler, standard placement is now in switch() default case. (calendar, chip8) Fixed usb handling.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5295 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/chip8.c')
-rw-r--r-- | apps/plugins/chip8.c | 87 |
1 files changed, 62 insertions, 25 deletions
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c index 91c25302dd..aa81b263dc 100644 --- a/apps/plugins/chip8.c +++ b/apps/plugins/chip8.c | |||
@@ -23,6 +23,27 @@ | |||
23 | #ifdef HAVE_LCD_BITMAP | 23 | #ifdef HAVE_LCD_BITMAP |
24 | #ifndef SIMULATOR /* not unless lcd_blit() is implemented and mp3_xx stubbed */ | 24 | #ifndef SIMULATOR /* not unless lcd_blit() is implemented and mp3_xx stubbed */ |
25 | 25 | ||
26 | /* variable button definitions */ | ||
27 | #if CONFIG_KEYPAD == RECORDER_PAD /* only 9 out of 16 chip8 buttons */ | ||
28 | #define CHIP8_KEY1 BUTTON_F1 | ||
29 | #define CHIP8_KEY2 BUTTON_UP | ||
30 | #define CHIP8_KEY3 BUTTON_F3 | ||
31 | #define CHIP8_KEY4 BUTTON_LEFT | ||
32 | #define CHIP8_KEY5 BUTTON_PLAY | ||
33 | #define CHIP8_KEY6 BUTTON_RIGHT | ||
34 | #define CHIP8_KEY7 BUTTON_F2 | ||
35 | #define CHIP8_KEY8 BUTTON_DOWN | ||
36 | #define CHIP8_KEY9 BUTTON_ON | ||
37 | |||
38 | #elif CONFIG_KEYPAD == ONDIO_PAD /* even more limited */ | ||
39 | #define CHIP8_KEY2 BUTTON_UP | ||
40 | #define CHIP8_KEY4 BUTTON_LEFT | ||
41 | #define CHIP8_KEY5 BUTTON_MENU | ||
42 | #define CHIP8_KEY6 BUTTON_RIGHT | ||
43 | #define CHIP8_KEY8 BUTTON_DOWN | ||
44 | |||
45 | #endif | ||
46 | |||
26 | static struct plugin_api* rb; /* here is a global api struct pointer */ | 47 | static struct plugin_api* rb; /* here is a global api struct pointer */ |
27 | unsigned char lcd_framebuf[8][64]; /* frame buffer in hardware fomat */ | 48 | unsigned char lcd_framebuf[8][64]; /* frame buffer in hardware fomat */ |
28 | 49 | ||
@@ -407,33 +428,43 @@ static void chip8_update_display(void) | |||
407 | 428 | ||
408 | static void chip8_keyboard(void) | 429 | static void chip8_keyboard(void) |
409 | { | 430 | { |
410 | switch (rb->button_get(false)) | 431 | int button = rb->button_get(false); |
432 | switch (button) | ||
411 | { | 433 | { |
412 | case BUTTON_OFF: /* Abort Emulator */ | 434 | case BUTTON_OFF: /* Abort Emulator */ |
413 | chip8_running = false; | 435 | chip8_running = 0; |
414 | break; | 436 | break; |
415 | 437 | ||
416 | case BUTTON_UP: chip8_keys[2] = 1; break; | 438 | case CHIP8_KEY2: chip8_keys[2] = 1; break; |
417 | case BUTTON_UP | BUTTON_REL: chip8_keys[2] = 0; break; | 439 | case CHIP8_KEY2 | BUTTON_REL: chip8_keys[2] = 0; break; |
418 | case BUTTON_LEFT: chip8_keys[4] = 1; break; | 440 | case CHIP8_KEY4: chip8_keys[4] = 1; break; |
419 | case BUTTON_LEFT | BUTTON_REL: chip8_keys[4] = 0; break; | 441 | case CHIP8_KEY4 | BUTTON_REL: chip8_keys[4] = 0; break; |
420 | case BUTTON_RIGHT: chip8_keys[6] = 1; break; | 442 | case CHIP8_KEY6: chip8_keys[6] = 1; break; |
421 | case BUTTON_RIGHT | BUTTON_REL: chip8_keys[6] = 0; break; | 443 | case CHIP8_KEY6 | BUTTON_REL: chip8_keys[6] = 0; break; |
422 | case BUTTON_DOWN: chip8_keys[8] = 1; break; | 444 | case CHIP8_KEY8: chip8_keys[8] = 1; break; |
423 | case BUTTON_DOWN | BUTTON_REL: chip8_keys[8] = 0; break; | 445 | case CHIP8_KEY8 | BUTTON_REL: chip8_keys[8] = 0; break; |
424 | case BUTTON_PLAY: chip8_keys[5] = 1; break; | 446 | case CHIP8_KEY5: chip8_keys[5] = 1; break; |
425 | case BUTTON_PLAY | BUTTON_REL: chip8_keys[5] = 0; break; | 447 | case CHIP8_KEY5 | BUTTON_REL: chip8_keys[5] = 0; break; |
426 | case BUTTON_F1: chip8_keys[1] = 1; break; | 448 | #ifdef CHIP8_KEY1 |
427 | case BUTTON_F1 | BUTTON_REL: chip8_keys[1] = 0; break; | 449 | case CHIP8_KEY1: chip8_keys[1] = 1; break; |
428 | case BUTTON_F2: chip8_keys[7] = 1; break; | 450 | case CHIP8_KEY1 | BUTTON_REL: chip8_keys[1] = 0; break; |
429 | case BUTTON_F2 | BUTTON_REL: chip8_keys[7] = 0; break; | 451 | #endif |
430 | case BUTTON_F3: chip8_keys[3] = 1; break; | 452 | #ifdef CHIP8_KEY3 |
431 | case BUTTON_F3 | BUTTON_REL: chip8_keys[3] = 0; break; | 453 | case CHIP8_KEY3: chip8_keys[3] = 1; break; |
432 | case BUTTON_ON: chip8_keys[9] = 1; break; | 454 | case CHIP8_KEY3 | BUTTON_REL: chip8_keys[3] = 0; break; |
433 | case BUTTON_ON | BUTTON_REL: chip8_keys[9] = 0; break; | 455 | #endif |
434 | 456 | #ifdef CHIP8_KEY7 | |
435 | case SYS_USB_CONNECTED: | 457 | case CHIP8_KEY7: chip8_keys[7] = 1; break; |
436 | chip8_running = false; | 458 | case CHIP8_KEY7 | BUTTON_REL: chip8_keys[7] = 0; break; |
459 | #endif | ||
460 | #ifdef CHIP8_KEY9 | ||
461 | case CHIP8_KEY9: chip8_keys[9] = 1; break; | ||
462 | case CHIP8_KEY9 | BUTTON_REL: chip8_keys[9] = 0; break; | ||
463 | #endif | ||
464 | |||
465 | default: | ||
466 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) | ||
467 | chip8_running = 2; /* indicates stopped because of USB */ | ||
437 | break; | 468 | break; |
438 | } | 469 | } |
439 | } | 470 | } |
@@ -556,7 +587,7 @@ bool chip8_run(char* file) | |||
556 | } | 587 | } |
557 | 588 | ||
558 | chip8_reset(); | 589 | chip8_reset(); |
559 | while (chip8_running) chip8_execute(); | 590 | while (chip8_running == 1) chip8_execute(); |
560 | 591 | ||
561 | if (!is_playing) | 592 | if (!is_playing) |
562 | { /* stop it if we used audio */ | 593 | { /* stop it if we used audio */ |
@@ -592,7 +623,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
592 | } | 623 | } |
593 | 624 | ||
594 | /* now go ahead and have fun! */ | 625 | /* now go ahead and have fun! */ |
595 | return chip8_run(filename) ? PLUGIN_OK : PLUGIN_ERROR; | 626 | if (chip8_run(filename)) |
627 | if (chip8_running == 0) | ||
628 | return PLUGIN_OK; | ||
629 | else | ||
630 | return PLUGIN_USB_CONNECTED; | ||
631 | else | ||
632 | return PLUGIN_ERROR; | ||
596 | } | 633 | } |
597 | 634 | ||
598 | #endif /* #ifndef SIMULATOR */ | 635 | #endif /* #ifndef SIMULATOR */ |