Mercurial > repos > blastem
diff render_sdl.c @ 398:c26e48a93fa3
Make keybindings data driven so they can be populated from a config file later
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 14 Jun 2013 00:25:04 -0700 |
parents | 62177cc39049 |
children | c1bddeadc566 |
line wrap: on
line diff
--- a/render_sdl.c Thu Jun 13 22:23:15 2013 -0700 +++ b/render_sdl.c Fri Jun 14 00:25:04 2013 -0700 @@ -1,4 +1,3 @@ -#include <SDL.h> #include <stdlib.h> #include <stdio.h> #include "render.h" @@ -299,135 +298,28 @@ } } -#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("");