mirror of
https://github.com/libretro/RetroArch
synced 2025-04-25 00:02:31 +00:00
(GX) Refactor controls
This commit is contained in:
parent
2bdce53651
commit
0107be2485
@ -525,7 +525,9 @@ static unsigned menu_toggle_gamepad_combo = 2;
|
|||||||
static unsigned menu_toggle_gamepad_combo = 0;
|
static unsigned menu_toggle_gamepad_combo = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
static bool back_as_menu_toggle_enable = true;
|
static bool back_as_menu_toggle_enable = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Crop overscanned frames. */
|
/* Crop overscanned frames. */
|
||||||
static const bool crop_overscan = true;
|
static const bool crop_overscan = true;
|
||||||
|
@ -37,7 +37,6 @@ typedef struct gx_input
|
|||||||
{
|
{
|
||||||
bool blocked;
|
bool blocked;
|
||||||
const input_device_driver_t *joypad;
|
const input_device_driver_t *joypad;
|
||||||
uint64_t lifecycle_state;
|
|
||||||
} gx_input_t;
|
} gx_input_t;
|
||||||
|
|
||||||
static int16_t gx_input_state(void *data, const struct retro_keybind **binds,
|
static int16_t gx_input_state(void *data, const struct retro_keybind **binds,
|
||||||
@ -96,8 +95,7 @@ static bool gx_input_key_pressed(void *data, int key)
|
|||||||
{
|
{
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
gx_input_t *gx = (gx_input_t*)data;
|
gx_input_t *gx = (gx_input_t*)data;
|
||||||
return (gx->lifecycle_state & (1ULL << key)) ||
|
return input_joypad_pressed(gx->joypad, 0, settings->input.binds[0], key);
|
||||||
input_joypad_pressed(gx->joypad, 0, settings->input.binds[0], key);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t gx_input_get_capabilities(void *data)
|
static uint64_t gx_input_get_capabilities(void *data)
|
||||||
|
@ -61,13 +61,13 @@ static bool ctr_joypad_init(void *data)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ctr_joypad_button(unsigned port_num, uint16_t joykey)
|
static bool ctr_joypad_button(unsigned port_num, uint16_t key)
|
||||||
{
|
{
|
||||||
if (port_num >= MAX_PADS)
|
if (port_num >= MAX_PADS)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return (ctr->lifecycle_state & (1ULL << key)) ||
|
return (ctr->lifecycle_state & (1ULL << key)) ||
|
||||||
(pad_state & (1ULL << joykey));
|
(pad_state & (1ULL << key));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t ctr_joypad_get_buttons(unsigned port_num)
|
static uint64_t ctr_joypad_get_buttons(unsigned port_num)
|
||||||
|
@ -114,6 +114,7 @@ enum
|
|||||||
#define GC_JOYSTICK_THRESHOLD (48 * 256)
|
#define GC_JOYSTICK_THRESHOLD (48 * 256)
|
||||||
#define WII_JOYSTICK_THRESHOLD (40 * 256)
|
#define WII_JOYSTICK_THRESHOLD (40 * 256)
|
||||||
|
|
||||||
|
static uint64_t lifecycle_state;
|
||||||
static uint64_t pad_state[MAX_PADS];
|
static uint64_t pad_state[MAX_PADS];
|
||||||
static uint32_t pad_type[MAX_PADS] = { WPAD_EXP_NOCONTROLLER, WPAD_EXP_NOCONTROLLER, WPAD_EXP_NOCONTROLLER, WPAD_EXP_NOCONTROLLER };
|
static uint32_t pad_type[MAX_PADS] = { WPAD_EXP_NOCONTROLLER, WPAD_EXP_NOCONTROLLER, WPAD_EXP_NOCONTROLLER, WPAD_EXP_NOCONTROLLER };
|
||||||
static int16_t analog_state[MAX_PADS][2][2];
|
static int16_t analog_state[MAX_PADS][2][2];
|
||||||
@ -196,11 +197,12 @@ static void handle_hotplug(unsigned port, uint32_t ptype)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool gx_joypad_button(unsigned port, uint16_t joykey)
|
static bool gx_joypad_button(unsigned port, uint16_t key)
|
||||||
{
|
{
|
||||||
if (port >= MAX_PADS)
|
if (port >= MAX_PADS)
|
||||||
return false;
|
return false;
|
||||||
return pad_state[port] & (1ULL << joykey);
|
return (lifecycle_state & (1ULL << key)) ||
|
||||||
|
(pad_state[port] & (1ULL << key));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t gx_joypad_get_buttons(unsigned port)
|
static uint64_t gx_joypad_get_buttons(unsigned port)
|
||||||
@ -350,7 +352,6 @@ static void gx_joypad_poll(void)
|
|||||||
{
|
{
|
||||||
unsigned i, j, port;
|
unsigned i, j, port;
|
||||||
uint8_t gcpad = 0;
|
uint8_t gcpad = 0;
|
||||||
gx_input_t *gx = (gx_input_t*)input_driver_get_ptr();
|
|
||||||
|
|
||||||
pad_state[0] = 0;
|
pad_state[0] = 0;
|
||||||
pad_state[1] = 0;
|
pad_state[1] = 0;
|
||||||
@ -541,7 +542,7 @@ static void gx_joypad_poll(void)
|
|||||||
|
|
||||||
uint64_t *state_p1 = &pad_state[0];
|
uint64_t *state_p1 = &pad_state[0];
|
||||||
|
|
||||||
gx->lifecycle_state &= ~((1ULL << RARCH_MENU_TOGGLE));
|
lifecycle_state &= ~((1ULL << RARCH_MENU_TOGGLE));
|
||||||
|
|
||||||
if (g_menu)
|
if (g_menu)
|
||||||
{
|
{
|
||||||
@ -554,7 +555,7 @@ static void gx_joypad_poll(void)
|
|||||||
| (1ULL << GX_CLASSIC_HOME)
|
| (1ULL << GX_CLASSIC_HOME)
|
||||||
#endif
|
#endif
|
||||||
))
|
))
|
||||||
gx->lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE);
|
lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool gx_joypad_init(void *data)
|
static bool gx_joypad_init(void *data)
|
||||||
|
@ -178,14 +178,6 @@ static const input_driver_t *input_get_ptr(driver_t *driver)
|
|||||||
return driver->input;
|
return driver->input;
|
||||||
}
|
}
|
||||||
|
|
||||||
input_driver_t *input_driver_get_ptr(void)
|
|
||||||
{
|
|
||||||
driver_t *driver = driver_get_ptr();
|
|
||||||
if (!driver)
|
|
||||||
return NULL;
|
|
||||||
return (input_driver_t*)driver->input_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* input_driver_set_rumble_state:
|
* input_driver_set_rumble_state:
|
||||||
* @port : User number.
|
* @port : User number.
|
||||||
|
@ -98,8 +98,6 @@ extern input_driver_t input_qnx;
|
|||||||
extern input_driver_t input_rwebinput;
|
extern input_driver_t input_rwebinput;
|
||||||
extern input_driver_t input_null;
|
extern input_driver_t input_null;
|
||||||
|
|
||||||
input_driver_t *input_driver_get_ptr(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* input_driver_find_handle:
|
* input_driver_find_handle:
|
||||||
* @index : index of driver to get handle to.
|
* @index : index of driver to get handle to.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user