Simplifications to axis_state functions for some driver joypad files

This commit is contained in:
libretroadmin 2023-02-19 18:42:40 +01:00
parent 0fe92cc954
commit e367f87767
8 changed files with 108 additions and 106 deletions

View File

@ -74,41 +74,43 @@ static void ctr_joypad_get_buttons(unsigned port_num, input_bits_t *state)
static int16_t ctr_joypad_axis_state(unsigned port_num, uint32_t joyaxis)
{
int val = 0;
int axis = -1;
bool is_neg = false;
bool is_pos = false;
if (AXIS_NEG_GET(joyaxis) < 4)
{
axis = AXIS_NEG_GET(joyaxis);
is_neg = true;
int val = 0;
int axis = AXIS_NEG_GET(joyaxis);
switch (axis)
{
case 0:
case 1:
val = analog_state[port_num][0][axis];
break;
case 2:
case 3:
val = analog_state[port_num][1][axis - 2];
break;
}
if (val < 0)
return val;
}
else if (AXIS_POS_GET(joyaxis) < 4)
{
axis = AXIS_POS_GET(joyaxis);
is_pos = true;
int val = 0;
int axis = AXIS_POS_GET(joyaxis);
switch (axis)
{
case 0:
case 1:
val = analog_state[port_num][0][axis];
break;
case 2:
case 3:
val = analog_state[port_num][1][axis - 2];
break;
}
if (val > 0)
return val;
}
else
return 0;
switch (axis)
{
case 0:
case 1:
val = analog_state[port_num][0][axis];
break;
case 2:
case 3:
val = analog_state[port_num][1][axis - 2];
break;
}
if (is_neg && val > 0)
return 0;
else if (is_pos && val < 0)
return 0;
return val;
return 0;
}
static int16_t ctr_joypad_axis(unsigned port_num, uint32_t joyaxis)

View File

@ -178,55 +178,71 @@ static int16_t dinput_joypad_axis_state(
const struct dinput_joypad_data *pad,
uint32_t joyaxis)
{
int val = 0;
int axis = -1;
bool is_neg = false;
bool is_pos = false;
if (AXIS_NEG_GET(joyaxis) <= 7)
{
axis = AXIS_NEG_GET(joyaxis);
is_neg = true;
int16_t val = 0;
int axis = AXIS_NEG_GET(joyaxis);
switch (axis)
{
case 0:
val = pad->joy_state.lX;
break;
case 1:
val = pad->joy_state.lY;
break;
case 2:
val = pad->joy_state.lZ;
break;
case 3:
val = pad->joy_state.lRx;
break;
case 4:
val = pad->joy_state.lRy;
break;
case 5:
val = pad->joy_state.lRz;
break;
case 6:
case 7:
val = pad->joy_state.rglSlider[axis - 6];
break;
}
if (val < 0)
return val;
}
else if (AXIS_POS_GET(joyaxis) <= 7)
{
axis = AXIS_POS_GET(joyaxis);
is_pos = true;
int16_t val = 0;
int axis = AXIS_POS_GET(joyaxis);
switch (axis)
{
case 0:
val = pad->joy_state.lX;
break;
case 1:
val = pad->joy_state.lY;
break;
case 2:
val = pad->joy_state.lZ;
break;
case 3:
val = pad->joy_state.lRx;
break;
case 4:
val = pad->joy_state.lRy;
break;
case 5:
val = pad->joy_state.lRz;
break;
case 6:
case 7:
val = pad->joy_state.rglSlider[axis - 6];
break;
}
if (val > 0)
return val;
}
else
return 0;
switch (axis)
{
case 0:
val = pad->joy_state.lX;
break;
case 1:
val = pad->joy_state.lY;
break;
case 2:
val = pad->joy_state.lZ;
break;
case 3:
val = pad->joy_state.lRx;
break;
case 4:
val = pad->joy_state.lRy;
break;
case 5:
val = pad->joy_state.lRz;
break;
case 6:
case 7:
val = pad->joy_state.rglSlider[axis - 6];
break;
}
if (is_neg && val > 0)
return 0;
else if (is_pos && val < 0)
return 0;
return val;
return 0;
}
static int32_t dinput_joypad_button(unsigned port, uint16_t joykey)

View File

@ -287,16 +287,12 @@ static int16_t gx_joypad_axis_state(unsigned port, uint32_t joyaxis)
switch (axis)
{
case 0:
val = analog_state[port][0][0];
break;
case 1:
val = analog_state[port][0][1];
val = analog_state[port][0][axis];
break;
case 2:
val = analog_state[port][1][0];
break;
case 3:
val = analog_state[port][1][1];
val = analog_state[port][1][axis - 2];
break;
}

View File

@ -536,31 +536,23 @@ static void apple_gamecontroller_joypad_get_buttons(unsigned port,
static int16_t apple_gamecontroller_joypad_axis(
unsigned port, uint32_t joyaxis)
{
int16_t val = 0;
int16_t axis = -1;
bool is_neg = false;
bool is_pos = false;
if (AXIS_NEG_GET(joyaxis) < 4)
{
axis = AXIS_NEG_GET(joyaxis);
is_neg = true;
int16_t val = 0;
int16_t axis = AXIS_NEG_GET(joyaxis);
if (axis >= 0 && axis < 4)
if ((val = mfi_axes[port][axis]) < 0)
return val;
}
else if(AXIS_POS_GET(joyaxis) < 4)
{
axis = AXIS_POS_GET(joyaxis);
is_pos = true;
int16_t val = 0;
int16_t axis = AXIS_POS_GET(joyaxis);
if (axis >= 0 && axis < 4)
if ((val = mfi_axes[port][axis]) > 0)
return val;
}
else
return 0;
if (axis >= 0 && axis < 4)
val = mfi_axes[port][axis];
if (is_neg && val > 0)
return 0;
else if (is_pos && val < 0)
return 0;
return val;
return 0;
}
static int16_t apple_gamecontroller_joypad_state(

View File

@ -123,7 +123,7 @@ static int16_t ps2_joypad_axis_state(unsigned port_num, uint32_t joyaxis)
break;
case 2:
case 3:
val = analog_state[port_num][1][axis-2];
val = analog_state[port_num][1][axis - 2];
break;
}

View File

@ -113,7 +113,7 @@ static int16_t ps3_joypad_axis_state(unsigned port, uint32_t joyaxis)
break;
case 2:
case 3:
val = analog_state[port][1][axis-2];
val = analog_state[port][1][axis - 2];
break;
}

View File

@ -174,16 +174,12 @@ static int16_t ps4_joypad_axis(unsigned port, uint32_t joyaxis)
switch (axis)
{
case 0:
val = analog_state[port][0][0];
break;
case 1:
val = analog_state[port][0][1];
val = analog_state[port][0][axis];
break;
case 2:
val = analog_state[port][1][0];
break;
case 3:
val = analog_state[port][1][1];
val = analog_state[port][1][axis - 2];
break;
}

View File

@ -87,7 +87,7 @@ static int16_t qnx_joypad_axis_state(
break;
case 2:
case 3:
val = controller->analog1[axis-2];
val = controller->analog1[axis - 2];
break;
}