Mercurial > repos > blastem
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 } |