-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpad.cpp
70 lines (61 loc) · 1.43 KB
/
pad.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* GameBoy JOY pad emulation */
#include "pch.h"
static uint8_t pad_override[2];
void pad_init()
{
pad_override[0] = 0;
pad_override[1] = 0;
}
void pad_shutdown()
{
}
// **********************************************************************
uint8_t pad_hi()
{
return pad_override[0];
}
uint8_t pad_lo()
{
return pad_override[1];
}
void pad_sdl_process(SDL_Scancode scan, bool pressed)
{
switch (scan) {
case SDL_SCANCODE_S: /* START */
if (pressed) pad_override[0] |= 8;
else pad_override[0] &= ~8;
break;
case SDL_SCANCODE_A: /* SELECT */
if (pressed) pad_override[0] |= 4;
else pad_override[0] &= ~4;
break;
case SDL_SCANCODE_Z: /* B */
if (pressed) pad_override[0] |= 2;
else pad_override[0] &= ~2;
break;
case SDL_SCANCODE_X: /* A */
if (pressed) pad_override[0] |= 1;
else pad_override[0] &= ~1;
break;
case SDL_SCANCODE_RETURN: /* All Buttons */
if (pressed) pad_override[0] |= 0xf;
else pad_override[0] &= ~0xf;
break;
case SDL_SCANCODE_DOWN: /* DOWN */
if (pressed) pad_override[1] |= 8;
else pad_override[1] &= ~8;
break;
case SDL_SCANCODE_UP: /* UP */
if (pressed) pad_override[1] |= 4;
else pad_override[1] &= ~4;
break;
case SDL_SCANCODE_LEFT: /* LEFT */
if (pressed) pad_override[1] |= 2;
else pad_override[1] &= ~2;
break;
case SDL_SCANCODE_RIGHT: /* RIGHT */
if (pressed) pad_override[1] |= 1;
else pad_override[1] &= ~1;
break;
}
}