mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-28 02:30:35 +00:00
(WiiU) Another buildfix
This commit is contained in:
parent
a49b5b7129
commit
9d76412715
@ -67,8 +67,56 @@ static uint8_t ds3_control_packet[] = {
|
|||||||
|
|
||||||
extern pad_connection_interface_t ds3_pad_connection;
|
extern pad_connection_interface_t ds3_pad_connection;
|
||||||
|
|
||||||
static void ds3_update_pad_state(ds3_instance_t *instance);
|
static void ds3_update_pad_state(ds3_instance_t *instance)
|
||||||
static void ds3_update_analog_state(ds3_instance_t *instance);
|
{
|
||||||
|
uint32_t i, pressed_keys;
|
||||||
|
|
||||||
|
static const uint32_t button_mapping[17] =
|
||||||
|
{
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_SELECT,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_L3,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_R3,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_START,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_UP,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_RIGHT,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_DOWN,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_LEFT,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_L2,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_R2,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_L,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_R,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_X,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_A,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_B,
|
||||||
|
RETRO_DEVICE_ID_JOYPAD_Y,
|
||||||
|
16 /* PS button */
|
||||||
|
};
|
||||||
|
|
||||||
|
instance->buttons = 0;
|
||||||
|
|
||||||
|
pressed_keys = instance->data[2] |
|
||||||
|
(instance->data[3] << 8) |
|
||||||
|
((instance->data[4] & 0x01) << 16);
|
||||||
|
|
||||||
|
for(i = 0; i < 17; i++)
|
||||||
|
instance->buttons |= (pressed_keys & (1 << i)) ?
|
||||||
|
(1 << button_mapping[i]) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ds3_update_analog_state(ds3_instance_t *instance)
|
||||||
|
{
|
||||||
|
int pad_axis;
|
||||||
|
int16_t interpolated;
|
||||||
|
unsigned stick, axis;
|
||||||
|
|
||||||
|
for(pad_axis = 0; pad_axis < 4; pad_axis++)
|
||||||
|
{
|
||||||
|
axis = pad_axis % 2 ? 0 : 1;
|
||||||
|
stick = pad_axis / 2;
|
||||||
|
interpolated = instance->data[6+pad_axis];
|
||||||
|
instance->analog_state[stick][axis] = (interpolated - 128) * 256;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(WIIU)
|
#if defined(WIIU)
|
||||||
static int32_t ds3_send_activation_packet(ds3_instance_t *instance)
|
static int32_t ds3_send_activation_packet(ds3_instance_t *instance)
|
||||||
@ -101,8 +149,8 @@ static uint32_t set_protocol(ds3_instance_t *instance, int protocol)
|
|||||||
static int32_t ds3_send_control_packet(ds3_instance_t *instance)
|
static int32_t ds3_send_control_packet(ds3_instance_t *instance)
|
||||||
{
|
{
|
||||||
/* TODO/FIXME - C89-incompatible */
|
/* TODO/FIXME - C89-incompatible */
|
||||||
uint8_t packet_buffer[sizeof(ds3_control_packet)];
|
|
||||||
int32_t result = 0;
|
int32_t result = 0;
|
||||||
|
uint8_t packet_buffer[sizeof(ds3_control_packet)];
|
||||||
memcpy(packet_buffer, ds3_control_packet, sizeof(ds3_control_packet));
|
memcpy(packet_buffer, ds3_control_packet, sizeof(ds3_control_packet));
|
||||||
|
|
||||||
packet_buffer[LED_OFFSET] = 0;
|
packet_buffer[LED_OFFSET] = 0;
|
||||||
@ -132,7 +180,7 @@ static int32_t ds3_send_control_packet(ds3_instance_t *instance)
|
|||||||
static void *ds3_init(void *handle)
|
static void *ds3_init(void *handle)
|
||||||
{
|
{
|
||||||
int errors = 0;
|
int errors = 0;
|
||||||
ds3_isntance_t *instance = (ds3_instance_t *)
|
ds3_instance_t *instance = (ds3_instance_t *)
|
||||||
malloc(sizeof(ds3_instance_t));
|
malloc(sizeof(ds3_instance_t));
|
||||||
if (!instance)
|
if (!instance)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -172,10 +220,11 @@ static void ds3_free(void *data)
|
|||||||
{
|
{
|
||||||
ds3_instance_t *instance = (ds3_instance_t *)data;
|
ds3_instance_t *instance = (ds3_instance_t *)data;
|
||||||
|
|
||||||
if(instance) {
|
if (!instance)
|
||||||
|
return;
|
||||||
|
|
||||||
hid_pad_deregister(instance->pad);
|
hid_pad_deregister(instance->pad);
|
||||||
free(instance);
|
free(instance);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ds3_handle_packet(void *data, uint8_t *packet, size_t size)
|
static void ds3_handle_packet(void *data, uint8_t *packet, size_t size)
|
||||||
@ -260,62 +309,8 @@ static void ds3_packet_handler(void *data, uint8_t *packet, uint16_t size)
|
|||||||
ds3_update_analog_state(instance);
|
ds3_update_analog_state(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ds3_update_analog_state(ds3_instance_t *instance)
|
|
||||||
{
|
|
||||||
int pad_axis;
|
|
||||||
int16_t interpolated;
|
|
||||||
unsigned stick, axis;
|
|
||||||
|
|
||||||
for(pad_axis = 0; pad_axis < 4; pad_axis++)
|
|
||||||
{
|
|
||||||
axis = pad_axis % 2 ? 0 : 1;
|
|
||||||
stick = pad_axis / 2;
|
|
||||||
interpolated = instance->data[6+pad_axis];
|
|
||||||
instance->analog_state[stick][axis] = (interpolated - 128) * 256;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ds3_update_pad_state(ds3_instance_t *instance)
|
|
||||||
{
|
|
||||||
uint32_t i, pressed_keys;
|
|
||||||
|
|
||||||
static const uint32_t button_mapping[17] =
|
|
||||||
{
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_SELECT,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_L3,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_R3,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_START,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_UP,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_RIGHT,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_DOWN,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_LEFT,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_L2,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_R2,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_L,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_R,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_X,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_A,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_B,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_Y,
|
|
||||||
16 /* PS button */
|
|
||||||
};
|
|
||||||
|
|
||||||
instance->buttons = 0;
|
|
||||||
|
|
||||||
pressed_keys = instance->data[2] |
|
|
||||||
(instance->data[3] << 8) |
|
|
||||||
((instance->data[4] & 0x01) << 16);
|
|
||||||
|
|
||||||
for(i = 0; i < 17; i++)
|
|
||||||
instance->buttons |= (pressed_keys & (1 << i)) ?
|
|
||||||
(1 << button_mapping[i]) : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ds3_set_rumble(void *data,
|
static void ds3_set_rumble(void *data,
|
||||||
enum retro_rumble_effect effect, uint16_t strength)
|
enum retro_rumble_effect effect, uint16_t strength) { }
|
||||||
{
|
|
||||||
ds3_instance_t *pad = (ds3_instance_t *)data;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int16_t ds3_get_axis(void *data, unsigned axis)
|
static int16_t ds3_get_axis(void *data, unsigned axis)
|
||||||
{
|
{
|
||||||
@ -330,18 +325,13 @@ static int16_t ds3_get_axis(void *data, unsigned axis)
|
|||||||
return gamepad_get_axis_value(pad->analog_state, &axis_data);
|
return gamepad_get_axis_value(pad->analog_state, &axis_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *ds3_get_name(void *data)
|
static const char *ds3_get_name(void *data) { return "Sony DualShock 3"; }
|
||||||
{
|
|
||||||
ds3_instance_t *pad = (ds3_instance_t *)data;
|
|
||||||
return "Sony DualShock 3";
|
|
||||||
}
|
|
||||||
|
|
||||||
static int16_t ds3_button(void *data, uint16_t joykey)
|
static int16_t ds3_button(void *data, uint16_t joykey)
|
||||||
{
|
{
|
||||||
ds3_instance_t *pad = (ds3_instance_t *)data;
|
ds3_instance_t *pad = (ds3_instance_t *)data;
|
||||||
if (!pad)
|
|
||||||
return 0;
|
|
||||||
if (joykey < 31)
|
if (joykey < 31)
|
||||||
|
if (pad)
|
||||||
return (pad->buttons & (1 << joykey));
|
return (pad->buttons & (1 << joykey));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,18 @@ typedef struct gca_pad_data
|
|||||||
|
|
||||||
extern pad_connection_interface_t wiiu_gca_pad_connection;
|
extern pad_connection_interface_t wiiu_gca_pad_connection;
|
||||||
|
|
||||||
|
static void wiiu_gca_unregister_pad(hid_wiiu_gca_instance_t *instance, int slot)
|
||||||
|
{
|
||||||
|
joypad_connection_t *pad = NULL;
|
||||||
|
if(!instance || slot < 0 || slot >= 4 || !instance->pads[slot])
|
||||||
|
return;
|
||||||
|
|
||||||
|
pad = instance->pads[slot];
|
||||||
|
instance->pads[slot] = NULL;
|
||||||
|
|
||||||
|
hid_pad_deregister(pad);
|
||||||
|
}
|
||||||
|
|
||||||
static void wiiu_gca_update_pad_state(hid_wiiu_gca_instance_t *instance)
|
static void wiiu_gca_update_pad_state(hid_wiiu_gca_instance_t *instance)
|
||||||
{
|
{
|
||||||
int i, port;
|
int i, port;
|
||||||
@ -91,19 +103,6 @@ static void wiiu_gca_update_pad_state(hid_wiiu_gca_instance_t *instance)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void wiiu_gca_unregister_pad(hid_wiiu_gca_instance_t *instance, int slot)
|
|
||||||
{
|
|
||||||
joypad_connection_t *pad = NULL;
|
|
||||||
if(!instance || slot < 0 || slot >= 4 || !instance->pads[slot])
|
|
||||||
return;
|
|
||||||
|
|
||||||
pad = instance->pads[slot];
|
|
||||||
instance->pads[slot] = NULL;
|
|
||||||
|
|
||||||
hid_pad_deregister(pad);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *wiiu_gca_init(void *handle)
|
static void *wiiu_gca_init(void *handle)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
Loading…
Reference in New Issue
Block a user