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("");