1
0
mirror of https://github.com/libretro/RetroArch synced 2025-02-24 18:39:59 +00:00
This commit is contained in:
twinaphex 2020-07-25 00:02:26 +02:00
parent b9cb8c8890
commit d92280e20e

@ -50,7 +50,7 @@ extern pad_connection_interface_t wiiu_gca_pad_connection;
static void wiiu_gca_unregister_pad(hid_wiiu_gca_instance_t *instance, int slot) static void wiiu_gca_unregister_pad(hid_wiiu_gca_instance_t *instance, int slot)
{ {
joypad_connection_t *pad = NULL; joypad_connection_t *pad = NULL;
if(!instance || slot < 0 || slot >= 4 || !instance->pads[slot]) if (!instance || slot < 0 || slot >= 4 || !instance->pads[slot])
return; return;
pad = instance->pads[slot]; pad = instance->pads[slot];
@ -65,7 +65,7 @@ static void wiiu_gca_update_pad_state(hid_wiiu_gca_instance_t *instance)
unsigned char port_connected; unsigned char port_connected;
joypad_connection_t *pad; joypad_connection_t *pad;
if(!instance || !instance->online) if (!instance || !instance->online)
return; return;
/* process each pad */ /* process each pad */
@ -75,7 +75,7 @@ static void wiiu_gca_update_pad_state(hid_wiiu_gca_instance_t *instance)
pad = instance->pads[port]; pad = instance->pads[port];
port_connected = instance->device_state[i]; port_connected = instance->device_state[i];
if(port_connected > GCA_PORT_POWERED) if (port_connected > GCA_PORT_POWERED)
{ {
if (!pad) if (!pad)
{ {
@ -128,27 +128,27 @@ static void *wiiu_gca_init(void *handle)
static void wiiu_gca_free(void *data) static void wiiu_gca_free(void *data)
{ {
hid_wiiu_gca_instance_t *instance = (hid_wiiu_gca_instance_t *)data;
int i; int i;
hid_wiiu_gca_instance_t *instance = (hid_wiiu_gca_instance_t *)data;
if(instance) if (!instance)
{ return;
instance->online = false;
for (i = 0; i < 4; i++) instance->online = false;
wiiu_gca_unregister_pad(instance, i);
free(instance); for (i = 0; i < 4; i++)
} wiiu_gca_unregister_pad(instance, i);
free(instance);
} }
static void wiiu_gca_handle_packet(void *data, uint8_t *buffer, size_t size) static void wiiu_gca_handle_packet(void *data, uint8_t *buffer, size_t size)
{ {
hid_wiiu_gca_instance_t *instance = (hid_wiiu_gca_instance_t *)data; hid_wiiu_gca_instance_t *instance = (hid_wiiu_gca_instance_t *)data;
if(!instance || !instance->online) if (!instance || !instance->online)
return; return;
if(size > sizeof(instance->device_state)) if (size > sizeof(instance->device_state))
{ {
RARCH_WARN("[gca]: packet size %d is too big for buffer of size %d\n", RARCH_WARN("[gca]: packet size %d is too big for buffer of size %d\n",
size, sizeof(instance->device_state)); size, sizeof(instance->device_state));
@ -181,7 +181,7 @@ static void *wiiu_gca_pad_init(void *data, uint32_t slot, hid_driver_t *driver)
{ {
gca_pad_t *pad = (gca_pad_t *)malloc(sizeof(gca_pad_t)); gca_pad_t *pad = (gca_pad_t *)malloc(sizeof(gca_pad_t));
if(!pad) if (!pad)
return NULL; return NULL;
memset(pad, 0, sizeof(gca_pad_t)); memset(pad, 0, sizeof(gca_pad_t));
@ -208,7 +208,7 @@ static void wiiu_gca_pad_deinit(void *data)
static void wiiu_gca_get_buttons(void *data, input_bits_t *state) static void wiiu_gca_get_buttons(void *data, input_bits_t *state)
{ {
gca_pad_t *pad = (gca_pad_t *)data; gca_pad_t *pad = (gca_pad_t *)data;
if(pad) if (pad)
{ {
BITS_COPY16_PTR(state, pad->buttons); BITS_COPY16_PTR(state, pad->buttons);
} }
@ -238,11 +238,11 @@ static void update_buttons(gca_pad_t *pad)
RETRO_DEVICE_ID_JOYPAD_L, RETRO_DEVICE_ID_JOYPAD_L,
}; };
if(!pad) if (!pad)
return; return;
pressed_keys = pad->data[1] | (pad->data[2] << 8); pressed_keys = pad->data[1] | (pad->data[2] << 8);
pad->buttons = 0; pad->buttons = 0;
for (i = 0; i < 12; i++) for (i = 0; i < 12; i++)
pad->buttons |= (pressed_keys & (1 << i)) ? pad->buttons |= (pressed_keys & (1 << i)) ?
@ -260,7 +260,7 @@ static void wiiu_gca_update_analog_state(gca_pad_t *pad)
* by 256 to get the 16-bit range RetroArch expects. */ * by 256 to get the 16-bit range RetroArch expects. */
for (pad_axis = 0; pad_axis < 4; pad_axis++) for (pad_axis = 0; pad_axis < 4; pad_axis++)
{ {
axis = pad_axis % 2 ? 0 : 1; axis = (pad_axis % 2) ? 0 : 1;
stick = pad_axis / 2; stick = pad_axis / 2;
interpolated = pad->data[3 + pad_axis]; interpolated = pad->data[3 + pad_axis];
/* libretro requires "up" to be negative, so we invert the y axis */ /* libretro requires "up" to be negative, so we invert the y axis */
@ -288,7 +288,7 @@ static void wiiu_gca_packet_handler(void *data, uint8_t *packet, uint16_t size)
{ {
gca_pad_t *pad = (gca_pad_t *)data; gca_pad_t *pad = (gca_pad_t *)data;
if(!pad || !packet || size > sizeof(pad->data)) if (!pad || !packet || size > sizeof(pad->data))
return; return;
memcpy(pad->data, packet, size); memcpy(pad->data, packet, size);
@ -306,7 +306,7 @@ static int16_t wiiu_gca_get_axis(void *data, unsigned axis)
gamepad_read_axis_data(axis, &axis_data); gamepad_read_axis_data(axis, &axis_data);
if(!pad || axis_data.axis >= 4) if (!pad || axis_data.axis >= 4)
return 0; return 0;
return gamepad_get_axis_value(pad->analog_state, &axis_data); return gamepad_get_axis_value(pad->analog_state, &axis_data);
@ -328,10 +328,9 @@ static const char *wiiu_gca_get_name(void *data)
static int16_t wiiu_gca_button(void *data, uint16_t joykey) static int16_t wiiu_gca_button(void *data, uint16_t joykey)
{ {
gca_pad_t *pad = (gca_pad_t *)data; gca_pad_t *pad = (gca_pad_t *)data;
if (!pad)
return 0;
if (joykey < 31) if (joykey < 31)
return pad->buttons & (1 << joykey); if (pad)
return pad->buttons & (1 << joykey);
return 0; return 0;
} }