diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index aeca7e13af..6f34fd306e 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -490,6 +490,8 @@ static uint64_t menu_input(void) #endif input_push_analog_dpad((struct retro_keybind*)binds[0], g_settings.input.analog_dpad_mode[0]); + for (i = 0; i < MAX_PLAYERS; i++) + input_push_analog_dpad(g_settings.input.autoconf_binds[i], g_settings.input.analog_dpad_mode[i]); for (i = 0; i < RETRO_DEVICE_ID_JOYPAD_R2; i++) { @@ -503,6 +505,8 @@ static uint64_t menu_input(void) input_state |= input_key_pressed_func(RARCH_MENU_TOGGLE) ? (1ULL << RARCH_MENU_TOGGLE) : 0; input_pop_analog_dpad((struct retro_keybind*)binds[0]); + for (i = 0; i < MAX_PLAYERS; i++) + input_pop_analog_dpad(g_settings.input.autoconf_binds[i]); rgui->trigger_state = input_state & ~rgui->old_input_state; diff --git a/gfx/py_state/py_state.c b/gfx/py_state/py_state.c index cea9048a9c..ad15a663c6 100644 --- a/gfx/py_state/py_state.c +++ b/gfx/py_state/py_state.c @@ -339,12 +339,18 @@ float py_state_get(py_state_t *handle, const char *id, { unsigned i; for (i = 0; i < MAX_PLAYERS; i++) + { input_push_analog_dpad(g_settings.input.binds[i], g_settings.input.analog_dpad_mode[i]); + input_push_analog_dpad(g_settings.input.autoconf_binds[i], g_settings.input.analog_dpad_mode[i]); + } PyObject *ret = PyObject_CallMethod(handle->inst, (char*)id, (char*)"I", frame_count); for (i = 0; i < MAX_PLAYERS; i++) + { input_pop_analog_dpad(g_settings.input.binds[i]); + input_pop_analog_dpad(g_settings.input.autoconf_binds[i]); + } if (!ret) { diff --git a/gfx/state_tracker.c b/gfx/state_tracker.c index e93011e65b..6c006ddcee 100644 --- a/gfx/state_tracker.c +++ b/gfx/state_tracker.c @@ -247,6 +247,8 @@ static void update_input(state_tracker_t *tracker) for (i = 0; i < 2; i++) input_push_analog_dpad(g_settings.input.binds[i], g_settings.input.analog_dpad_mode[i]); + for (i = 0; i < MAX_PLAYERS; i++) + input_push_analog_dpad(g_settings.input.autoconf_binds[i], g_settings.input.analog_dpad_mode[i]); uint16_t state[2] = {0}; for (i = 4; i < 16; i++) @@ -257,6 +259,8 @@ static void update_input(state_tracker_t *tracker) for (i = 0; i < 2; i++) input_pop_analog_dpad(g_settings.input.binds[i]); + for (i = 0; i < MAX_PLAYERS; i++) + input_pop_analog_dpad(g_settings.input.autoconf_binds[i]); for (i = 0; i < 2; i++) tracker->input_state[i] = state[i]; diff --git a/retroarch.c b/retroarch.c index b5df974fd7..7437bc3d1d 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3208,14 +3208,20 @@ bool rarch_main_iterate(void) // Update binds for analog dpad modes. for (i = 0; i < MAX_PLAYERS; i++) + { input_push_analog_dpad(g_settings.input.binds[i], g_settings.input.analog_dpad_mode[i]); + input_push_analog_dpad(g_settings.input.autoconf_binds[i], g_settings.input.analog_dpad_mode[i]); + } update_frame_time(); pretro_run(); limit_frame_time(); for (i = 0; i < MAX_PLAYERS; i++) + { input_pop_analog_dpad(g_settings.input.binds[i]); + input_pop_analog_dpad(g_settings.input.autoconf_binds[i]); + } #ifdef HAVE_BSV_MOVIE if (g_extern.bsv.movie)