comparison 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
comparison
equal deleted inserted replaced
397:c20607e5b272 398:c26e48a93fa3
1 #include <SDL.h>
2 #include <stdlib.h> 1 #include <stdlib.h>
3 #include <stdio.h> 2 #include <stdio.h>
4 #include "render.h" 3 #include "render.h"
5 #include "blastem.h" 4 #include "blastem.h"
6 5
297 return; 296 return;
298 } 297 }
299 } 298 }
300 } 299 }
301 300
302 #define DPAD_UP 0x01 301 void render_debug_mode(uint8_t mode)
303 #define BUTTON_Z 0x01 302 {
304 #define DPAD_DOWN 0x02 303 if (mode < 4) {
305 #define BUTTON_Y 0x02 304 render_dbg = mode;
306 #define DPAD_LEFT 0x04 305 }
307 #define BUTTON_X 0x04 306 }
308 #define DPAD_RIGHT 0x08 307
309 #define BUTTON_MODE 0x08 308 void render_debug_pal(uint8_t pal)
310 #define BUTTON_A 0x10 309 {
311 #define BUTTON_B 0x10 310 if (pal < 4) {
312 #define BUTTON_START 0x20 311 debug_pal = pal;
313 #define BUTTON_C 0x20 312 }
313 }
314 314
315 int32_t handle_event(SDL_Event *event) 315 int32_t handle_event(SDL_Event *event)
316 { 316 {
317 FILE * outfile;
318 switch (event->type) { 317 switch (event->type) {
319 case SDL_KEYDOWN: 318 case SDL_KEYDOWN:
320 switch(event->key.keysym.sym) 319 handle_keydown(event->key.keysym.sym);
321 {
322 case SDLK_LEFTBRACKET:
323 render_dbg++;
324 if (render_dbg == 4) {
325 render_dbg = 0;
326 }
327 break;
328 case SDLK_RIGHTBRACKET:
329 debug_pal++;
330 if (debug_pal == 4) {
331 debug_pal = 0;
332 }
333 break;
334 case SDLK_t:
335 /*outfile = fopen("state.gst", "wb");
336 fwrite("GST\0\0\0\xE0\x40", 1, 8, outfile);
337 vdp_save_state(context, outfile);
338 fclose(outfile);
339 puts("state saved to state.gst");*/
340 break;
341 case SDLK_u:
342 return 1;
343 case SDLK_RETURN:
344 gamepad_1.input[GAMEPAD_TH0] |= BUTTON_START;
345 break;
346 case SDLK_UP:
347 gamepad_1.input[GAMEPAD_TH0] |= DPAD_UP;
348 gamepad_1.input[GAMEPAD_TH1] |= DPAD_UP;
349 break;
350 case SDLK_DOWN:
351 gamepad_1.input[GAMEPAD_TH0] |= DPAD_DOWN;
352 gamepad_1.input[GAMEPAD_TH1] |= DPAD_DOWN;
353 break;
354 case SDLK_LEFT:
355 gamepad_1.input[GAMEPAD_TH1] |= DPAD_LEFT;
356 break;
357 case SDLK_RIGHT:
358 gamepad_1.input[GAMEPAD_TH1] |= DPAD_RIGHT;
359 break;
360 case SDLK_a:
361 gamepad_1.input[GAMEPAD_TH0] |= BUTTON_A;
362 //printf("BUTTON_A Dn | GAMEPAD_TH0: %X\n", gamepad_1.input[GAMEPAD_TH0]);
363 break;
364 case SDLK_s:
365 gamepad_1.input[GAMEPAD_TH1] |= BUTTON_B;
366 gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_B;
367 break;
368 case SDLK_d:
369 gamepad_1.input[GAMEPAD_TH1] |= BUTTON_C;
370 gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_C;
371 break;
372 case SDLK_q:
373 gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_X;
374 break;
375 case SDLK_w:
376 gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_Y;
377 break;
378 case SDLK_e:
379 gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_Z;
380 break;
381 case SDLK_f:
382 gamepad_1.input[GAMEPAD_EXTRA] |= BUTTON_MODE;
383 break;
384 }
385 break; 320 break;
386 case SDL_KEYUP: 321 case SDL_KEYUP:
387 switch(event->key.keysym.sym) 322 handle_keyup(event->key.keysym.sym);
388 {
389 case SDLK_RETURN:
390 gamepad_1.input[GAMEPAD_TH0] &= ~BUTTON_START;
391 break;
392 case SDLK_UP:
393 gamepad_1.input[GAMEPAD_TH0] &= ~DPAD_UP;
394 gamepad_1.input[GAMEPAD_TH1] &= ~DPAD_UP;
395 break;
396 case SDLK_DOWN:
397 gamepad_1.input[GAMEPAD_TH0] &= ~DPAD_DOWN;
398 gamepad_1.input[GAMEPAD_TH1] &= ~DPAD_DOWN;
399 break;
400 case SDLK_LEFT:
401 gamepad_1.input[GAMEPAD_TH1] &= ~DPAD_LEFT;
402 break;
403 case SDLK_RIGHT:
404 gamepad_1.input[GAMEPAD_TH1] &= ~DPAD_RIGHT;
405 break;
406 case SDLK_a:
407 gamepad_1.input[GAMEPAD_TH0] &= ~BUTTON_A;
408 //printf("BUTTON_A Up | GAMEPAD_TH0: %X\n", gamepad_1.input[GAMEPAD_TH0]);
409 break;
410 case SDLK_s:
411 gamepad_1.input[GAMEPAD_TH1] &= ~BUTTON_B;
412 gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_B;
413 break;
414 case SDLK_d:
415 gamepad_1.input[GAMEPAD_TH1] &= ~BUTTON_C;
416 gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_C;
417 break;
418 case SDLK_q:
419 gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_X;
420 break;
421 case SDLK_w:
422 gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_Y;
423 break;
424 case SDLK_e:
425 gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_Z;
426 break;
427 case SDLK_f:
428 gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_MODE;
429 break;
430 }
431 break; 323 break;
432 case SDL_QUIT: 324 case SDL_QUIT:
433 puts(""); 325 puts("");
434 exit(0); 326 exit(0);
435 } 327 }