mirror of
https://github.com/libretro/RetroArch
synced 2025-02-06 09:40:06 +00:00
commit
a3757cea70
@ -42,7 +42,15 @@ struct _wiimote_state
|
|||||||
|
|
||||||
static bool ready = false;
|
static bool ready = false;
|
||||||
|
|
||||||
wiimote_state wiimotes[WIIU_WIIMOTE_CHANNELS];
|
/* it would be nice to use designated initializers here,
|
||||||
|
* but those are only in C99 and newer. Oh well.
|
||||||
|
*/
|
||||||
|
wiimote_state wiimotes[WIIU_WIIMOTE_CHANNELS] = {
|
||||||
|
{ 0, {{0,0},{0,0},{0,0}}, WIIMOTE_TYPE_NONE },
|
||||||
|
{ 0, {{0,0},{0,0},{0,0}}, WIIMOTE_TYPE_NONE },
|
||||||
|
{ 0, {{0,0},{0,0},{0,0}}, WIIMOTE_TYPE_NONE },
|
||||||
|
{ 0, {{0,0},{0,0},{0,0}}, WIIMOTE_TYPE_NONE },
|
||||||
|
};
|
||||||
|
|
||||||
static unsigned to_wiimote_channel(unsigned pad)
|
static unsigned to_wiimote_channel(unsigned pad)
|
||||||
{
|
{
|
||||||
@ -122,7 +130,7 @@ static void kpad_poll_one_channel(unsigned channel, KPADData *kpad)
|
|||||||
switch(kpad->device_type)
|
switch(kpad->device_type)
|
||||||
{
|
{
|
||||||
case WIIMOTE_TYPE_PRO:
|
case WIIMOTE_TYPE_PRO:
|
||||||
wiimotes[channel].button_state = kpad->classic.btns_h
|
wiimotes[channel].button_state = kpad->classic.btns_h
|
||||||
& ~WIIU_PRO_BUTTON_MASK;
|
& ~WIIU_PRO_BUTTON_MASK;
|
||||||
pad_functions.set_axis_value(wiimotes[channel].analog_state,
|
pad_functions.set_axis_value(wiimotes[channel].analog_state,
|
||||||
WIIU_READ_STICK(kpad->classic.lstick_x),
|
WIIU_READ_STICK(kpad->classic.lstick_x),
|
||||||
@ -131,7 +139,7 @@ static void kpad_poll_one_channel(unsigned channel, KPADData *kpad)
|
|||||||
WIIU_READ_STICK(kpad->classic.rstick_y), 0, 0);
|
WIIU_READ_STICK(kpad->classic.rstick_y), 0, 0);
|
||||||
break;
|
break;
|
||||||
case WIIMOTE_TYPE_CLASSIC:
|
case WIIMOTE_TYPE_CLASSIC:
|
||||||
wiimotes[channel].button_state = kpad->classic.btns_h
|
wiimotes[channel].button_state = kpad->classic.btns_h
|
||||||
& ~CLASSIC_BUTTON_MASK;
|
& ~CLASSIC_BUTTON_MASK;
|
||||||
pad_functions.set_axis_value(wiimotes[channel].analog_state,
|
pad_functions.set_axis_value(wiimotes[channel].analog_state,
|
||||||
WIIU_READ_STICK(kpad->classic.lstick_x),
|
WIIU_READ_STICK(kpad->classic.lstick_x),
|
||||||
@ -156,13 +164,17 @@ static void kpad_poll_one_channel(unsigned channel, KPADData *kpad)
|
|||||||
static void kpad_poll(void)
|
static void kpad_poll(void)
|
||||||
{
|
{
|
||||||
unsigned channel;
|
unsigned channel;
|
||||||
|
KPADData kpad;
|
||||||
|
int32_t result = 0;
|
||||||
|
|
||||||
for (channel = 0; channel < WIIU_WIIMOTE_CHANNELS; channel++)
|
for (channel = 0; channel < WIIU_WIIMOTE_CHANNELS; channel++)
|
||||||
{
|
{
|
||||||
KPADData kpad;
|
memset(&kpad, 0, sizeof(kpad));
|
||||||
|
|
||||||
if (!KPADRead(channel, &kpad, 1))
|
result = KPADRead(channel, &kpad, 1);
|
||||||
|
if (result == 0) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
kpad_poll_one_channel(channel, &kpad);
|
kpad_poll_one_channel(channel, &kpad);
|
||||||
}
|
}
|
||||||
@ -186,6 +198,7 @@ static const char *kpad_name(unsigned pad)
|
|||||||
return PAD_NAME_WIIMOTE;
|
return PAD_NAME_WIIMOTE;
|
||||||
case WIIMOTE_TYPE_NONE:
|
case WIIMOTE_TYPE_NONE:
|
||||||
default:
|
default:
|
||||||
|
RARCH_LOG("[kpad]: Unknown pad type %d\n", wiimotes[pad].type);
|
||||||
return "N/A";
|
return "N/A";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user