diff options
author | Mike Pavone <pavone@retrodev.com> | 2013-06-14 00:25:04 -0700 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2013-06-14 00:25:04 -0700 |
commit | a26f6e7deefcfc4402b4469bf25bb716a4c8ba34 (patch) | |
tree | 2e12581b620756d713234983f687b84e7c4a132d /render_sdl.c | |
parent | 176fd949e121edcea17af0907198cfb8d8250d28 (diff) |
Make keybindings data driven so they can be populated from a config file later
Diffstat (limited to 'render_sdl.c')
-rw-r--r-- | render_sdl.c | 138 |
1 files changed, 15 insertions, 123 deletions
diff --git a/render_sdl.c b/render_sdl.c index 0ea68ff..084adaf 100644 --- a/render_sdl.c +++ b/render_sdl.c @@ -1,4 +1,3 @@ -#include <SDL.h> #include <stdlib.h> #include <stdio.h> #include "render.h" @@ -299,135 +298,28 @@ void render_wait_quit(vdp_context * context) } } -#define DPAD_UP 0x01 -#define BUTTON_Z 0x01 -#define DPAD_DOWN 0x02 -#define BUTTON_Y 0x02 -#define DPAD_LEFT 0x04 -#define BUTTON_X 0x04 -#define DPAD_RIGHT 0x08 -#define BUTTON_MODE 0x08 -#define BUTTON_A 0x10 -#define BUTTON_B 0x10 -#define BUTTON_START 0x20 -#define BUTTON_C 0x20 +void render_debug_mode(uint8_t mode) +{ + if (mode < 4) { + render_dbg = mode; + } +} + +void render_debug_pal(uint8_t pal) +{ + if (pal < 4) { + debug_pal = pal; + } +} int32_t handle_event(SDL_Event *event) { - FILE * outfile; switch (event->type) { case SDL_KEYDOWN: - switch(event->key.keysym.sym) - { - case SDLK_LEFTBRACKET: - render_dbg++; - if (render_dbg == 4) { - render_dbg = 0; - } - break; - case SDLK_RIGHTBRACKET: - debug_pal++; - if (debug_pal == 4) { - debug_pal = 0; - } - break; - case SDLK_t: - /*outfile = fopen("state.gst", "wb"); - fwrite("GST\0\0\0\xE0\x40", 1, 8, outfile); - vdp_save_state(context, outfile); - fclose(outfile); - puts("state saved to state.gst");*/ - break; - case SDLK_u: - return 1; - case SDLK_RETURN: - gamepad_1.input[GAMEPAD_TH0] |= BUTTON_START; - break; - case SDLK_UP: - gamepad_1.input[GAMEPAD_TH0] |= DPAD_UP; - gamepad_1.input[GAMEPAD_TH1] |= DPAD_UP; - break; - case SDLK_DOWN: - gamepad_1.input[GAMEPAD_TH0] |= DPAD_DOWN; - gamepad_1.input[GAMEPAD_TH1] |= DPAD_DOWN; - break; - case SDLK_LEFT: - gamepad_1.input[GAMEPAD_TH1] |= DPAD_LEFT; - break; - case SDLK_RIGHT: - gamepad_1.input[GAMEPAD_TH1] |= DPAD_RIGHT; - break; - case SDLK_a: - gamepad_1.input[GAMEPAD_TH0] |= BUTTON_A; - //printf("BUTTON_A Dn | GAMEPAD_TH0: %X\n", gamepad_1.input[GAMEPAD_TH0]); - break; - case SDLK_s: - gamepad_1.input[GAMEPAD_TH1] |= BUTTON_B; - gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_B; - break; - case SDLK_d: - gamepad_1.input[GAMEPAD_TH1] |= BUTTON_C; - gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_C; - break; - case SDLK_q: - gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_X; - break; - case SDLK_w: - gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_Y; - break; - case SDLK_e: - gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_Z; - break; - case SDLK_f: - gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_MODE; - break; - } + handle_keydown(event->key.keysym.sym); break; case SDL_KEYUP: - switch(event->key.keysym.sym) - { - case SDLK_RETURN: - gamepad_1.input[GAMEPAD_TH0] &= ~BUTTON_START; - break; - case SDLK_UP: - gamepad_1.input[GAMEPAD_TH0] &= ~DPAD_UP; - gamepad_1.input[GAMEPAD_TH1] &= ~DPAD_UP; - break; - case SDLK_DOWN: - gamepad_1.input[GAMEPAD_TH0] &= ~DPAD_DOWN; - gamepad_1.input[GAMEPAD_TH1] &= ~DPAD_DOWN; - break; - case SDLK_LEFT: - gamepad_1.input[GAMEPAD_TH1] &= ~DPAD_LEFT; - break; - case SDLK_RIGHT: - gamepad_1.input[GAMEPAD_TH1] &= ~DPAD_RIGHT; - break; - case SDLK_a: - gamepad_1.input[GAMEPAD_TH0] &= ~BUTTON_A; - //printf("BUTTON_A Up | GAMEPAD_TH0: %X\n", gamepad_1.input[GAMEPAD_TH0]); - break; - case SDLK_s: - gamepad_1.input[GAMEPAD_TH1] &= ~BUTTON_B; - gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_B; - break; - case SDLK_d: - gamepad_1.input[GAMEPAD_TH1] &= ~BUTTON_C; - gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_C; - break; - case SDLK_q: - gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_X; - break; - case SDLK_w: - gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_Y; - break; - case SDLK_e: - gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_Z; - break; - case SDLK_f: - gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_MODE; - break; - } + handle_keyup(event->key.keysym.sym); break; case SDL_QUIT: puts(""); |