Add a setting to allow turbo d-pad directions (#16006)

* Add option to allow turbo d-pad inputs

* fix macro tab and update comment
This commit is contained in:
hunterk 2023-12-13 20:36:09 -06:00 committed by GitHub
parent 87b6064160
commit 6513a023b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 43 additions and 2 deletions

View file

@ -1508,6 +1508,7 @@
#define DEFAULT_TURBO_DUTY_CYCLE 3
#define DEFAULT_TURBO_MODE 0
#define DEFAULT_TURBO_DEFAULT_BTN RETRO_DEVICE_ID_JOYPAD_B
#define DEFAULT_ALLOW_TURBO_DPAD false
#if TARGET_OS_IPHONE
#define DEFAULT_INPUT_KEYBOARD_GAMEPAD_ENABLE false

View file

@ -2069,6 +2069,7 @@ static struct config_bool_setting *populate_settings_bool(
#endif
SETTING_BOOL("keyboard_gamepad_enable", &settings->bools.input_keyboard_gamepad_enable, true, DEFAULT_INPUT_KEYBOARD_GAMEPAD_ENABLE, false);
SETTING_BOOL("input_autodetect_enable", &settings->bools.input_autodetect_enable, true, DEFAULT_INPUT_AUTODETECT_ENABLE, false);
SETTING_BOOL("input_allow_turbo_dpad", &settings->bools.input_allow_turbo_dpad, true, DEFAULT_ALLOW_TURBO_DPAD, false);
SETTING_BOOL("input_auto_mouse_grab", &settings->bools.input_auto_mouse_grab, true, false, false);
SETTING_BOOL("input_remap_binds_enable", &settings->bools.input_remap_binds_enable, true, true, false);
SETTING_BOOL("all_users_control_menu", &settings->bools.input_all_users_control_menu, true, DEFAULT_ALL_USERS_CONTROL_MENU, false);

View file

@ -671,6 +671,7 @@ typedef struct settings
bool input_small_keyboard_enable;
bool input_keyboard_gamepad_enable;
bool input_auto_mouse_grab;
bool input_allow_turbo_dpad;
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
bool input_nowinkey_enable;
#endif

View file

@ -1262,9 +1262,10 @@ static int16_t input_state_device(
#endif
}
/* Don't allow turbo for D-pad. */
/* Don't allow turbo for D-pad unless explicitly allowed. */
if ( (id < RETRO_DEVICE_ID_JOYPAD_UP)
|| ( (id > RETRO_DEVICE_ID_JOYPAD_RIGHT)
|| ( ((settings->bools.input_allow_turbo_dpad)
|| (id > RETRO_DEVICE_ID_JOYPAD_RIGHT))
&& (id <= RETRO_DEVICE_ID_JOYPAD_R3)))
{
/*

View file

@ -6378,6 +6378,10 @@ MSG_HASH(
MENU_ENUM_LABEL_INPUT_TURBO_DEFAULT_BUTTON,
"input_turbo_default_button"
)
MSG_HASH(
MENU_ENUM_LABEL_INPUT_ALLOW_TURBO_DPAD,
"input_allow_turbo_dpad"
)
MSG_HASH(
MENU_ENUM_LABEL_MENU_VIEWS_SETTINGS,
"menu_views_settings"

View file

@ -484,6 +484,9 @@ int msg_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len)
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
}
break;
case MENU_ENUM_LABEL_INPUT_ALLOW_TURBO_DPAD:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_ALLOW_TURBO_DPAD), len);
break;
default:
if (string_is_empty(s))
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);

View file

@ -3279,6 +3279,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_TURBO_DEFAULT_BUTTON,
"Default active button for Turbo Mode 'Single Button'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_ALLOW_TURBO_DPAD,
"Allow Turbo D-Pad Directions"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_ALLOW_TURBO_DPAD,
"If enabled, digital directional inputs (also known as d-pad or 'hatswitch') can be turbo."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_TURBO_FIRE_SETTINGS,
"Turbo Fire"

View file

@ -552,6 +552,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_turbo_period, MENU_
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_duty_cycle, MENU_ENUM_SUBLABEL_INPUT_DUTY_CYCLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_turbo_mode, MENU_ENUM_SUBLABEL_INPUT_TURBO_MODE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_turbo_default_button, MENU_ENUM_SUBLABEL_INPUT_TURBO_DEFAULT_BUTTON)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_allow_turbo_dpad, MENU_ENUM_SUBLABEL_INPUT_ALLOW_TURBO_DPAD)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_rumble_gain, MENU_ENUM_SUBLABEL_INPUT_RUMBLE_GAIN)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_vertical_sync, MENU_ENUM_SUBLABEL_VIDEO_VSYNC)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_adaptive_vsync, MENU_ENUM_SUBLABEL_VIDEO_ADAPTIVE_VSYNC)
@ -4436,6 +4437,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_INPUT_TURBO_DEFAULT_BUTTON:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_turbo_default_button);
break;
case MENU_ENUM_LABEL_INPUT_ALLOW_TURBO_DPAD:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_allow_turbo_dpad);
break;
case MENU_ENUM_LABEL_INPUT_RUMBLE_GAIN:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_rumble_gain);
break;

View file

@ -6759,6 +6759,7 @@ unsigned menu_displaylist_build_list(
{MENU_ENUM_LABEL_INPUT_DUTY_CYCLE, PARSE_ONLY_UINT},
{MENU_ENUM_LABEL_INPUT_TURBO_MODE, PARSE_ONLY_UINT},
{MENU_ENUM_LABEL_INPUT_TURBO_DEFAULT_BUTTON, PARSE_ONLY_UINT},
{MENU_ENUM_LABEL_INPUT_ALLOW_TURBO_DPAD, PARSE_ONLY_BOOL},
};
for (i = 0; i < ARRAY_SIZE(build_list); i++)

View file

@ -15241,6 +15241,22 @@ static bool setting_append_list(
&setting_get_string_representation_turbo_default_button;
menu_settings_list_current_add_range(list, list_info, 0, (INPUT_TURBO_DEFAULT_BUTTON_LAST-1), 1, true, true);
CONFIG_BOOL(
list, list_info,
&settings->bools.input_allow_turbo_dpad,
MENU_ENUM_LABEL_INPUT_ALLOW_TURBO_DPAD,
MENU_ENUM_LABEL_VALUE_INPUT_ALLOW_TURBO_DPAD,
DEFAULT_ALLOW_TURBO_DPAD,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE
);
END_SUB_GROUP(list, list_info, parent_group);
END_GROUP(list, list_info, parent_group);

View file

@ -887,6 +887,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_HELP_TURBO_MODE_SINGLEBUTTON,
MENU_ENUM_LABEL_HELP_TURBO_MODE_SINGLEBUTTON_HOLD,
MENU_LABEL(INPUT_TURBO_DEFAULT_BUTTON),
MENU_LABEL(INPUT_ALLOW_TURBO_DPAD),
MENU_ENUM_LABEL_INPUT_PLAYER1_JOYPAD_INDEX,
MENU_ENUM_LABEL_INPUT_PLAYER2_JOYPAD_INDEX,