mirror of
https://github.com/libretro/RetroArch
synced 2025-04-18 05:43:34 +00:00
(Android) Refactor axis functions
This commit is contained in:
parent
f8d6cea02a
commit
cb5b22b6ac
@ -1315,8 +1315,6 @@ static void android_input_poll_memcpy(android_input_t *android)
|
|||||||
|
|
||||||
static bool android_input_key_pressed(android_input_t *android, int key)
|
static bool android_input_key_pressed(android_input_t *android, int key)
|
||||||
{
|
{
|
||||||
uint64_t joykey;
|
|
||||||
uint32_t joyaxis;
|
|
||||||
rarch_joypad_info_t joypad_info;
|
rarch_joypad_info_t joypad_info;
|
||||||
joypad_info.joy_idx = 0;
|
joypad_info.joy_idx = 0;
|
||||||
joypad_info.auto_binds = input_autoconf_binds[0];
|
joypad_info.auto_binds = input_autoconf_binds[0];
|
||||||
@ -1327,21 +1325,12 @@ static bool android_input_key_pressed(android_input_t *android, int key)
|
|||||||
&& android_keyboard_port_input_pressed(input_config_binds[0],
|
&& android_keyboard_port_input_pressed(input_config_binds[0],
|
||||||
key))
|
key))
|
||||||
return true;
|
return true;
|
||||||
|
return button_is_pressed(
|
||||||
joykey =
|
android->joypad,
|
||||||
(input_config_binds[0][key].joykey != NO_BTN)
|
&joypad_info,
|
||||||
? input_config_binds[0][key].joykey
|
&input_config_binds[0],
|
||||||
: joypad_info.auto_binds[key].joykey;
|
joypad_info.joy_idx,
|
||||||
joyaxis =
|
key);
|
||||||
(input_config_binds[0][key].joyaxis != AXIS_NONE)
|
|
||||||
? input_config_binds[0][key].joyaxis
|
|
||||||
: joypad_info.auto_binds[key].joyaxis;
|
|
||||||
|
|
||||||
if ((uint16_t)joykey != NO_BTN && android->joypad->button(joypad_info.joy_idx, (uint16_t)joykey))
|
|
||||||
return true;
|
|
||||||
if (((float)abs(android->joypad->axis(joypad_info.joy_idx, joyaxis)) / 0x8000) > joypad_info.axis_threshold)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle all events. If our activity is in pause state,
|
/* Handle all events. If our activity is in pause state,
|
||||||
|
@ -1399,9 +1399,6 @@ static int16_t btstack_hid_joypad_axis(void *data, unsigned port, uint32_t joyax
|
|||||||
btstack_hid_t *hid = (btstack_hid_t*)data;
|
btstack_hid_t *hid = (btstack_hid_t*)data;
|
||||||
int16_t val = 0;
|
int16_t val = 0;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
{
|
{
|
||||||
val += pad_connection_get_axis(&hid->slots[port], port, AXIS_NEG_GET(joyaxis));
|
val += pad_connection_get_axis(&hid->slots[port], port, AXIS_NEG_GET(joyaxis));
|
||||||
|
@ -218,9 +218,6 @@ static int16_t iohidmanager_hid_joypad_axis(void *data,
|
|||||||
iohidmanager_hid_t *hid = (iohidmanager_hid_t*)data;
|
iohidmanager_hid_t *hid = (iohidmanager_hid_t*)data;
|
||||||
int16_t val = 0;
|
int16_t val = 0;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 11)
|
if (AXIS_NEG_GET(joyaxis) < 11)
|
||||||
{
|
{
|
||||||
val += hid->axes[port][AXIS_NEG_GET(joyaxis)];
|
val += hid->axes[port][AXIS_NEG_GET(joyaxis)];
|
||||||
|
@ -493,9 +493,6 @@ static int16_t libusb_hid_joypad_axis(void *data,
|
|||||||
libusb_hid_t *hid = (libusb_hid_t*)data;
|
libusb_hid_t *hid = (libusb_hid_t*)data;
|
||||||
int16_t val = 0;
|
int16_t val = 0;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
{
|
{
|
||||||
val = pad_connection_get_axis(&hid->slots[port],
|
val = pad_connection_get_axis(&hid->slots[port],
|
||||||
|
@ -581,9 +581,6 @@ static int16_t wiiusb_hid_joypad_axis(void *data,
|
|||||||
int16_t val = 0;
|
int16_t val = 0;
|
||||||
wiiusb_hid_t *hid = (wiiusb_hid_t*)data;
|
wiiusb_hid_t *hid = (wiiusb_hid_t*)data;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
{
|
{
|
||||||
val = pad_connection_get_axis(&hid->connections[port],
|
val = pad_connection_get_axis(&hid->connections[port],
|
||||||
|
@ -75,7 +75,7 @@ static int16_t android_joypad_button(unsigned port, uint16_t joykey)
|
|||||||
}
|
}
|
||||||
else if (i < LAST_KEYCODE)
|
else if (i < LAST_KEYCODE)
|
||||||
if (BIT_GET(buf, i))
|
if (BIT_GET(buf, i))
|
||||||
ret |= (1 << i):
|
ret |= (1 << i);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -86,9 +86,6 @@ static int16_t android_joypad_axis(unsigned port, uint32_t joyaxis)
|
|||||||
int val = 0;
|
int val = 0;
|
||||||
struct android_app *android_app = (struct android_app*)g_android;
|
struct android_app *android_app = (struct android_app*)g_android;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < MAX_AXIS)
|
if (AXIS_NEG_GET(joyaxis) < MAX_AXIS)
|
||||||
{
|
{
|
||||||
val = android_app->analog_state[port][AXIS_NEG_GET(joyaxis)];
|
val = android_app->analog_state[port][AXIS_NEG_GET(joyaxis)];
|
||||||
|
@ -88,7 +88,7 @@ static int16_t ctr_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||||||
bool is_neg = false;
|
bool is_neg = false;
|
||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE || port_num >= DEFAULT_MAX_PADS)
|
if (port_num >= DEFAULT_MAX_PADS)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
|
@ -531,16 +531,12 @@ static int16_t dinput_joypad_button(unsigned port_num, uint16_t joykey)
|
|||||||
|
|
||||||
static int16_t dinput_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
static int16_t dinput_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
||||||
{
|
{
|
||||||
const struct dinput_joypad_data *pad = NULL;
|
|
||||||
int val = 0;
|
int val = 0;
|
||||||
int axis = -1;
|
int axis = -1;
|
||||||
bool is_neg = false;
|
bool is_neg = false;
|
||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
|
const struct dinput_joypad_data *pad = &g_pads[port_num];
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
pad = &g_pads[port_num];
|
|
||||||
if (!pad->joypad)
|
if (!pad->joypad)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ static int16_t dos_joypad_button(unsigned port_num, uint16_t joykey)
|
|||||||
break;
|
break;
|
||||||
case RETRO_DEVICE_ID_JOYPAD_X:
|
case RETRO_DEVICE_ID_JOYPAD_X:
|
||||||
if (buf[DOSKEY_s])
|
if (buf[DOSKEY_s])
|
||||||
ret |= (1 << i):
|
ret |= (1 << i);
|
||||||
break;
|
break;
|
||||||
case RETRO_DEVICE_ID_JOYPAD_Y:
|
case RETRO_DEVICE_ID_JOYPAD_Y:
|
||||||
if (buf[DOSKEY_a])
|
if (buf[DOSKEY_a])
|
||||||
@ -204,7 +204,7 @@ static int16_t dos_joypad_button(unsigned port_num, uint16_t joykey)
|
|||||||
break;
|
break;
|
||||||
case RETRO_DEVICE_ID_JOYPAD_UP:
|
case RETRO_DEVICE_ID_JOYPAD_UP:
|
||||||
if (buf[DOSKEY_UP])
|
if (buf[DOSKEY_UP])
|
||||||
ret |= (1 << i):
|
ret |= (1 << i);
|
||||||
break;
|
break;
|
||||||
case RETRO_DEVICE_ID_JOYPAD_DOWN:
|
case RETRO_DEVICE_ID_JOYPAD_DOWN:
|
||||||
if (buf[DOSKEY_DOWN])
|
if (buf[DOSKEY_DOWN])
|
||||||
|
@ -275,7 +275,7 @@ static int16_t gx_joypad_axis(unsigned port, uint32_t joyaxis)
|
|||||||
bool is_neg = false;
|
bool is_neg = false;
|
||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE || port >= DEFAULT_MAX_PADS)
|
if (port >= DEFAULT_MAX_PADS)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
|
@ -335,12 +335,8 @@ static void linuxraw_joypad_get_buttons(unsigned port, input_bits_t *state)
|
|||||||
static int16_t linuxraw_joypad_axis(unsigned port, uint32_t joyaxis)
|
static int16_t linuxraw_joypad_axis(unsigned port, uint32_t joyaxis)
|
||||||
{
|
{
|
||||||
int16_t val = 0;
|
int16_t val = 0;
|
||||||
const struct linuxraw_joypad *pad = NULL;
|
const struct linuxraw_joypad *pad = (const struct linuxraw_joypad*)
|
||||||
|
&linuxraw_pads[port];
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
pad = (const struct linuxraw_joypad*)&linuxraw_pads[port];
|
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < NUM_AXES)
|
if (AXIS_NEG_GET(joyaxis) < NUM_AXES)
|
||||||
{
|
{
|
||||||
|
@ -361,47 +361,45 @@ static void apple_gamecontroller_joypad_get_buttons(unsigned port,
|
|||||||
BITS_COPY16_PTR(state, mfi_buttons[port]);
|
BITS_COPY16_PTR(state, mfi_buttons[port]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int16_t apple_gamecontroller_joypad_axis(unsigned port, uint32_t joyaxis)
|
static int16_t apple_gamecontroller_joypad_axis(
|
||||||
|
unsigned port, uint32_t joyaxis)
|
||||||
{
|
{
|
||||||
int16_t val = 0;
|
int16_t val = 0;
|
||||||
int16_t axis = -1;
|
int16_t axis = -1;
|
||||||
bool is_neg = false;
|
bool is_neg = false;
|
||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
{
|
{
|
||||||
axis = AXIS_NEG_GET(joyaxis);
|
axis = AXIS_NEG_GET(joyaxis);
|
||||||
is_neg = true;
|
is_neg = true;
|
||||||
}
|
}
|
||||||
else if(AXIS_POS_GET(joyaxis) < 4)
|
else if(AXIS_POS_GET(joyaxis) < 4)
|
||||||
{
|
{
|
||||||
axis = AXIS_POS_GET(joyaxis);
|
axis = AXIS_POS_GET(joyaxis);
|
||||||
is_pos = true;
|
is_pos = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (axis)
|
switch (axis)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
val = mfi_axes[port][0];
|
val = mfi_axes[port][0];
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
val = mfi_axes[port][1];
|
val = mfi_axes[port][1];
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
val = mfi_axes[port][2];
|
val = mfi_axes[port][2];
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
val = mfi_axes[port][3];
|
val = mfi_axes[port][3];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_neg && val > 0)
|
if (is_neg && val > 0)
|
||||||
val = 0;
|
val = 0;
|
||||||
else if (is_pos && val < 0)
|
else if (is_pos && val < 0)
|
||||||
val = 0;
|
val = 0;
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@ static int16_t ps2_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||||||
bool is_neg = false;
|
bool is_neg = false;
|
||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE || port_num >= DEFAULT_MAX_PADS)
|
if (port_num >= DEFAULT_MAX_PADS)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
|
@ -93,7 +93,7 @@ static int16_t ps3_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||||||
bool is_neg = false;
|
bool is_neg = false;
|
||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE || port_num >= DEFAULT_MAX_PADS)
|
if (port_num >= DEFAULT_MAX_PADS)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
|
@ -151,7 +151,7 @@ static int16_t psp_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||||||
bool is_neg = false;
|
bool is_neg = false;
|
||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE || port_num >= DEFAULT_MAX_PADS)
|
if (port_num >= DEFAULT_MAX_PADS)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
|
@ -74,7 +74,7 @@ static int16_t qnx_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
qnx_input_t *qnx = (qnx_input_t*)input_driver_get_data();
|
qnx_input_t *qnx = (qnx_input_t*)input_driver_get_data();
|
||||||
|
|
||||||
if (!qnx || joyaxis == AXIS_NONE || port_num >= DEFAULT_MAX_PADS)
|
if (!qnx || port_num >= DEFAULT_MAX_PADS)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
|
@ -144,13 +144,8 @@ static void rwebpad_joypad_get_buttons(unsigned port_num, input_bits_t *state)
|
|||||||
static int16_t rwebpad_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
static int16_t rwebpad_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
||||||
{
|
{
|
||||||
EmscriptenGamepadEvent gamepad_state;
|
EmscriptenGamepadEvent gamepad_state;
|
||||||
EMSCRIPTEN_RESULT r;
|
int16_t val = 0;
|
||||||
int16_t val = 0;
|
EMSCRIPTEN_RESULT r = emscripten_get_gamepad_status(port_num, &gamepad_state);
|
||||||
|
|
||||||
if (joyaxis == 0xFFFFFFFF)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
r = emscripten_get_gamepad_status(port_num, &gamepad_state);
|
|
||||||
|
|
||||||
if (r == EMSCRIPTEN_RESULT_SUCCESS)
|
if (r == EMSCRIPTEN_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
|
@ -353,13 +353,8 @@ static int16_t sdl_joypad_button(unsigned port, uint16_t joykey)
|
|||||||
|
|
||||||
static int16_t sdl_joypad_axis(unsigned port, uint32_t joyaxis)
|
static int16_t sdl_joypad_axis(unsigned port, uint32_t joyaxis)
|
||||||
{
|
{
|
||||||
sdl_joypad_t *pad;
|
|
||||||
int16_t val = 0;
|
int16_t val = 0;
|
||||||
|
sdl_joypad_t *pad = (sdl_joypad_t*)&sdl_pads[port];
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
pad = (sdl_joypad_t*)&sdl_pads[port];
|
|
||||||
if (!pad->joypad)
|
if (!pad->joypad)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ static int16_t switch_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* TODO/FIXME - implement */
|
/* TODO/FIXME - implement */
|
||||||
if (joyaxis == AXIS_NONE || port_num >= DEFAULT_MAX_PADS) { }
|
if (port_num >= DEFAULT_MAX_PADS) { }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||||
|
@ -655,11 +655,8 @@ static void udev_joypad_get_buttons(unsigned port, input_bits_t *state)
|
|||||||
static int16_t udev_joypad_axis(unsigned port, uint32_t joyaxis)
|
static int16_t udev_joypad_axis(unsigned port, uint32_t joyaxis)
|
||||||
{
|
{
|
||||||
int16_t val = 0;
|
int16_t val = 0;
|
||||||
const struct udev_joypad *pad;
|
const struct udev_joypad *pad = (const struct udev_joypad*)
|
||||||
if (joyaxis == AXIS_NONE)
|
&udev_pads[port];
|
||||||
return 0;
|
|
||||||
|
|
||||||
pad = (const struct udev_joypad*)&udev_pads[port];
|
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) < NUM_AXES)
|
if (AXIS_NEG_GET(joyaxis) < NUM_AXES)
|
||||||
{
|
{
|
||||||
|
@ -325,7 +325,7 @@ static int16_t wpad_axis(unsigned pad, uint32_t axis)
|
|||||||
axis_data data;
|
axis_data data;
|
||||||
VPADChan channel;
|
VPADChan channel;
|
||||||
|
|
||||||
if (!wpad_query_pad(pad) || axis == AXIS_NONE)
|
if (!wpad_query_pad(pad))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
channel = to_gamepad_channel(pad);
|
channel = to_gamepad_channel(pad);
|
||||||
|
@ -203,7 +203,7 @@ static int16_t xdk_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
XINPUT_GAMEPAD *pad = NULL;
|
XINPUT_GAMEPAD *pad = NULL;
|
||||||
|
|
||||||
if (joyaxis == AXIS_NONE || port_num >= DEFAULT_MAX_PADS)
|
if (port_num >= DEFAULT_MAX_PADS)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (AXIS_NEG_GET(joyaxis) <= 3)
|
if (AXIS_NEG_GET(joyaxis) <= 3)
|
||||||
|
@ -479,17 +479,12 @@ static int16_t xinput_joypad_button(unsigned port_num, uint16_t joykey)
|
|||||||
|
|
||||||
static int16_t xinput_joypad_axis (unsigned port_num, uint32_t joyaxis)
|
static int16_t xinput_joypad_axis (unsigned port_num, uint32_t joyaxis)
|
||||||
{
|
{
|
||||||
int xuser;
|
|
||||||
int16_t val = 0;
|
int16_t val = 0;
|
||||||
int axis = -1;
|
int axis = -1;
|
||||||
bool is_neg = false;
|
bool is_neg = false;
|
||||||
bool is_pos = false;
|
bool is_pos = false;
|
||||||
XINPUT_GAMEPAD* pad = NULL;
|
XINPUT_GAMEPAD* pad = NULL;
|
||||||
|
int xuser = pad_index_to_xuser_index(port_num);
|
||||||
if (joyaxis == AXIS_NONE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
xuser = pad_index_to_xuser_index(port_num);
|
|
||||||
|
|
||||||
#ifdef HAVE_DINPUT
|
#ifdef HAVE_DINPUT
|
||||||
if (xuser == -1)
|
if (xuser == -1)
|
||||||
|
69
retroarch.c
69
retroarch.c
@ -3539,17 +3539,26 @@ static void menu_input_key_bind_poll_bind_get_rested_axes(
|
|||||||
|
|
||||||
/* poll only the relevant port */
|
/* poll only the relevant port */
|
||||||
for (a = 0; a < MENU_MAX_AXES; a++)
|
for (a = 0; a < MENU_MAX_AXES; a++)
|
||||||
state->axis_state[port].rested_axes[a] =
|
{
|
||||||
joypad->axis(port, AXIS_POS(a)) +
|
if (AXIS_POS(a) != AXIS_NONE)
|
||||||
joypad->axis(port, AXIS_NEG(a));
|
state->axis_state[port].rested_axes[a] =
|
||||||
|
joypad->axis(port, AXIS_POS(a));
|
||||||
|
if (AXIS_NEG(a) != AXIS_NONE)
|
||||||
|
state->axis_state[port].rested_axes[a] +=
|
||||||
|
joypad->axis(port, AXIS_NEG(a));
|
||||||
|
}
|
||||||
|
|
||||||
if (sec_joypad)
|
if (sec_joypad)
|
||||||
{
|
{
|
||||||
/* poll only the relevant port */
|
/* poll only the relevant port */
|
||||||
for (a = 0; a < MENU_MAX_AXES; a++)
|
for (a = 0; a < MENU_MAX_AXES; a++)
|
||||||
state->axis_state[port].rested_axes[a] =
|
{
|
||||||
sec_joypad->axis(port, AXIS_POS(a)) +
|
if (AXIS_POS(a) != AXIS_NONE)
|
||||||
sec_joypad->axis(port, AXIS_NEG(a));
|
state->axis_state[port].rested_axes[a] = sec_joypad->axis(port, AXIS_POS(a));
|
||||||
|
|
||||||
|
if (AXIS_NEG(a) != AXIS_NONE)
|
||||||
|
state->axis_state[port].rested_axes[a] += sec_joypad->axis(port, AXIS_NEG(a));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3571,9 +3580,13 @@ static void menu_input_key_bind_poll_bind_state_internal(
|
|||||||
state->state[port].buttons[b] = joypad->button(port, b);
|
state->state[port].buttons[b] = joypad->button(port, b);
|
||||||
|
|
||||||
for (a = 0; a < MENU_MAX_AXES; a++)
|
for (a = 0; a < MENU_MAX_AXES; a++)
|
||||||
state->state[port].axes[a] =
|
{
|
||||||
joypad->axis(port, AXIS_POS(a)) +
|
if (AXIS_POS(a) != AXIS_NONE)
|
||||||
joypad->axis(port, AXIS_NEG(a));
|
state->state[port].axes[a] = joypad->axis(port, AXIS_POS(a));
|
||||||
|
|
||||||
|
if (AXIS_NEG(a) != AXIS_NONE)
|
||||||
|
state->state[port].axes[a] += joypad->axis(port, AXIS_NEG(a));
|
||||||
|
}
|
||||||
|
|
||||||
for (h = 0; h < MENU_MAX_HATS; h++)
|
for (h = 0; h < MENU_MAX_HATS; h++)
|
||||||
{
|
{
|
||||||
@ -24111,7 +24124,7 @@ static int16_t input_joypad_axis(
|
|||||||
settings_t *settings = p_rarch->configuration_settings;
|
settings_t *settings = p_rarch->configuration_settings;
|
||||||
float input_analog_deadzone = settings->floats.input_analog_deadzone;
|
float input_analog_deadzone = settings->floats.input_analog_deadzone;
|
||||||
float input_analog_sensitivity = settings->floats.input_analog_sensitivity;
|
float input_analog_sensitivity = settings->floats.input_analog_sensitivity;
|
||||||
int16_t val = drv->axis(port, joyaxis);
|
int16_t val = (joyaxis != AXIS_NONE) ? drv->axis(port, joyaxis) : 0;
|
||||||
|
|
||||||
if (input_analog_deadzone)
|
if (input_analog_deadzone)
|
||||||
{
|
{
|
||||||
@ -26117,8 +26130,9 @@ int16_t button_is_pressed(
|
|||||||
if ((uint16_t)joykey != NO_BTN && joypad->button(
|
if ((uint16_t)joykey != NO_BTN && joypad->button(
|
||||||
joypad_info->joy_idx, (uint16_t)joykey))
|
joypad_info->joy_idx, (uint16_t)joykey))
|
||||||
return 1;
|
return 1;
|
||||||
if (((float)abs(joypad->axis(joypad_info->joy_idx, joyaxis))
|
if (joyaxis != AXIS_NONE &&
|
||||||
/ 0x8000) > joypad_info->axis_threshold)
|
((float)abs(joypad->axis(joypad_info->joy_idx, joyaxis))
|
||||||
|
/ 0x8000) > joypad_info->axis_threshold)
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -26165,8 +26179,13 @@ static int16_t input_joypad_analog_button(
|
|||||||
|
|
||||||
/* Analog button. */
|
/* Analog button. */
|
||||||
if (input_analog_deadzone)
|
if (input_analog_deadzone)
|
||||||
normal_mag = fabs((1.0f / 0x7fff) * drv->axis(
|
{
|
||||||
joypad_info->joy_idx, axis));
|
int16_t mult = 0;
|
||||||
|
if (axis != AXIS_NONE)
|
||||||
|
mult = drv->axis(
|
||||||
|
joypad_info->joy_idx, axis);
|
||||||
|
normal_mag = fabs((1.0f / 0x7fff) * mult);
|
||||||
|
}
|
||||||
res = abs(input_joypad_axis(p_rarch, drv,
|
res = abs(input_joypad_axis(p_rarch, drv,
|
||||||
joypad_info->joy_idx, axis, normal_mag));
|
joypad_info->joy_idx, axis, normal_mag));
|
||||||
|
|
||||||
@ -26251,6 +26270,8 @@ static int16_t input_joypad_analog_axis(
|
|||||||
* radial deadzone */
|
* radial deadzone */
|
||||||
if (input_analog_deadzone)
|
if (input_analog_deadzone)
|
||||||
{
|
{
|
||||||
|
float x = 0.0f;
|
||||||
|
float y = 0.0f;
|
||||||
uint32_t x_axis_minus = (bind_x_minus->joyaxis == AXIS_NONE)
|
uint32_t x_axis_minus = (bind_x_minus->joyaxis == AXIS_NONE)
|
||||||
? joypad_info->auto_binds[ident_x_minus].joyaxis
|
? joypad_info->auto_binds[ident_x_minus].joyaxis
|
||||||
: bind_x_minus->joyaxis;
|
: bind_x_minus->joyaxis;
|
||||||
@ -26264,13 +26285,19 @@ static int16_t input_joypad_analog_axis(
|
|||||||
? joypad_info->auto_binds[ident_y_plus].joyaxis
|
? joypad_info->auto_binds[ident_y_plus].joyaxis
|
||||||
: bind_y_plus->joyaxis;
|
: bind_y_plus->joyaxis;
|
||||||
/* normalized magnitude for radial scaled analog deadzone */
|
/* normalized magnitude for radial scaled analog deadzone */
|
||||||
float x = drv->axis(
|
if (x_axis_plus != AXIS_NONE)
|
||||||
joypad_info->joy_idx, x_axis_plus)
|
x = drv->axis(
|
||||||
+ drv->axis(joypad_info->joy_idx, x_axis_minus);
|
joypad_info->joy_idx, x_axis_plus);
|
||||||
float y = drv->axis(
|
if (x_axis_minus != AXIS_NONE)
|
||||||
joypad_info->joy_idx, y_axis_plus)
|
x += drv->axis(joypad_info->joy_idx,
|
||||||
+ drv->axis(joypad_info->joy_idx, y_axis_minus);
|
x_axis_minus);
|
||||||
normal_mag = (1.0f / 0x7fff) * sqrt(x * x + y * y);
|
if (y_axis_plus != AXIS_NONE)
|
||||||
|
y = drv->axis(
|
||||||
|
joypad_info->joy_idx, y_axis_plus);
|
||||||
|
if (y_axis_minus != AXIS_NONE)
|
||||||
|
y += drv->axis(
|
||||||
|
joypad_info->joy_idx, y_axis_minus);
|
||||||
|
normal_mag = (1.0f / 0x7fff) * sqrt(x * x + y * y);
|
||||||
}
|
}
|
||||||
|
|
||||||
pressed_minus = abs(
|
pressed_minus = abs(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user