From fb5f557d91cdfbee79a9baff9bcc79043ee49f95 Mon Sep 17 00:00:00 2001 From: parport0 Date: Mon, 9 Mar 2020 14:22:24 +0100 Subject: [PATCH] Add PSP-style menu scroll option --- config.def.h | 2 ++ configuration.c | 1 + configuration.h | 1 + intl/msg_hash_lbl.h | 2 ++ intl/msg_hash_us.h | 8 ++++++++ menu/cbs/menu_cbs_sublabel.c | 4 ++++ menu/menu_displaylist.c | 1 + menu/menu_setting.c | 15 +++++++++++++++ msg_hash.h | 1 + retroarch.c | 11 +++++++++-- 10 files changed, 44 insertions(+), 2 deletions(-) diff --git a/config.def.h b/config.def.h index fd86393c2b..a7c5e4a3a6 100644 --- a/config.def.h +++ b/config.def.h @@ -510,6 +510,8 @@ static const bool menu_show_core_updater = true; static const bool menu_show_legacy_thumbnail_updater = false; static const bool menu_show_sublabels = true; +static const bool menu_scroll_psp_style = false; + #define DEFAULT_MENU_TICKER_TYPE (TICKER_TYPE_BOUNCE) static const float menu_ticker_speed = 1.0f; diff --git a/configuration.c b/configuration.c index 157295aabb..a1913541ae 100644 --- a/configuration.c +++ b/configuration.c @@ -1465,6 +1465,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("menu_show_sublabels", &settings->bools.menu_show_sublabels, true, menu_show_sublabels, false); SETTING_BOOL("menu_dynamic_wallpaper_enable", &settings->bools.menu_dynamic_wallpaper_enable, true, false, false); SETTING_BOOL("menu_ticker_smooth", &settings->bools.menu_ticker_smooth, true, DEFAULT_MENU_TICKER_SMOOTH, false); + SETTING_BOOL("menu_scroll_psp_style", &settings->bools.menu_scroll_psp_style, true, false, false); SETTING_BOOL("settings_show_drivers", &settings->bools.settings_show_drivers, true, DEFAULT_SETTINGS_SHOW_DRIVERS, false); SETTING_BOOL("settings_show_video", &settings->bools.settings_show_video, true, DEFAULT_SETTINGS_SHOW_VIDEO, false); SETTING_BOOL("settings_show_audio", &settings->bools.settings_show_audio, true, DEFAULT_SETTINGS_SHOW_AUDIO, false); diff --git a/configuration.h b/configuration.h index 506c00067e..3396b7edc0 100644 --- a/configuration.h +++ b/configuration.h @@ -176,6 +176,7 @@ typedef struct settings bool menu_throttle_framerate; bool menu_linear_filter; bool menu_horizontal_animation; + bool menu_scroll_psp_style; bool menu_show_online_updater; bool menu_show_core_updater; bool menu_show_load_core; diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index b83471a93b..bc858bc0f5 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -1718,6 +1718,8 @@ MSG_HASH(MENU_ENUM_LABEL_MENU_SHOW_CORE_UPDATER, "menu_show_core_updater") MSG_HASH(MENU_ENUM_LABEL_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER, "menu_show_legacy_thumbnail_updater") +MSG_HASH(MENU_ENUM_LABEL_MENU_SCROLL_PSP_STYLE, + "menu_scroll_psp_style") MSG_HASH(MENU_ENUM_LABEL_CORE_DELETE, "core_delete") MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 582ca6dd8f..cad38e8674 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -7145,6 +7145,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER, "Show/hide the ability to download legacy thumbnail packages." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SCROLL_PSP_STYLE, + "PSP-style fast scroll" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SCROLL_PSP_STYLE, + "When holding a direction to scroll, cursor has a slower maximum speed." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_VIEWS_SETTINGS, "Views" diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index f47aba9483..2bf2ea6cb0 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -619,6 +619,7 @@ default_sublabel_macro(action_bind_sublabel_menu_show_shutdown, default_sublabel_macro(action_bind_sublabel_menu_show_online_updater, MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER) default_sublabel_macro(action_bind_sublabel_menu_show_core_updater, MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER) default_sublabel_macro(action_bind_sublabel_menu_show_legacy_thumbnail_updater, MENU_ENUM_SUBLABEL_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER) +default_sublabel_macro(action_bind_sublabel_menu_scroll_psp_style, MENU_ENUM_SUBLABEL_MENU_SCROLL_PSP_STYLE) default_sublabel_macro(action_bind_sublabel_menu_music_tab, MENU_ENUM_SUBLABEL_CONTENT_SHOW_MUSIC) default_sublabel_macro(action_bind_sublabel_menu_video_tab, MENU_ENUM_SUBLABEL_CONTENT_SHOW_VIDEO) default_sublabel_macro(action_bind_sublabel_menu_netplay_tab, MENU_ENUM_SUBLABEL_CONTENT_SHOW_NETPLAY) @@ -1759,6 +1760,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_show_legacy_thumbnail_updater); break; + case MENU_ENUM_LABEL_MENU_SCROLL_PSP_STYLE: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_scroll_psp_style); + break; case MENU_ENUM_LABEL_CONTENT_SHOW_NETPLAY: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_netplay_tab); break; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 9d93405bb1..e991a3335a 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -5994,6 +5994,7 @@ unsigned menu_displaylist_build_list( {MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_PAUSE_NONACTIVE, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION, PARSE_ONLY_BOOL, true}, + {MENU_ENUM_LABEL_MENU_SCROLL_PSP_STYLE, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_UI_COMPANION_ENABLE, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_UI_MENUBAR_ENABLE, PARSE_ONLY_BOOL, true}, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 6fa9c46e73..030e76f9bb 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -15212,6 +15212,21 @@ static bool setting_append_list( SD_FLAG_NONE); #endif + CONFIG_BOOL( + list, list_info, + &settings->bools.menu_scroll_psp_style, + MENU_ENUM_LABEL_MENU_SCROLL_PSP_STYLE, + MENU_ENUM_LABEL_VALUE_MENU_SCROLL_PSP_STYLE, + menu_scroll_psp_style, + 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); + CONFIG_BOOL( list, list_info, &settings->bools.ui_companion_enable, diff --git a/msg_hash.h b/msg_hash.h index e672c3ac90..e4dd925afc 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -973,6 +973,7 @@ enum msg_hash_enums MENU_LABEL(MENU_SHOW_ONLINE_UPDATER), MENU_LABEL(MENU_SHOW_CORE_UPDATER), MENU_LABEL(MENU_SHOW_LEGACY_THUMBNAIL_UPDATER), + MENU_LABEL(MENU_SCROLL_PSP_STYLE), MENU_LABEL(MENU_ENABLE_KIOSK_MODE), MENU_LABEL(MENU_DISABLE_KIOSK_MODE), MENU_LABEL(MENU_KIOSK_MODE_PASSWORD), diff --git a/retroarch.c b/retroarch.c index 469678a60e..dd1324c594 100644 --- a/retroarch.c +++ b/retroarch.c @@ -16510,6 +16510,7 @@ static unsigned menu_event( bool menu_mouse_enable = settings->bools.menu_mouse_enable; bool menu_pointer_enable = settings->bools.menu_pointer_enable; bool swap_ok_cancel_btns = settings->bools.input_menu_swap_ok_cancel_buttons; + bool scroll_psp_style = settings->bools.menu_scroll_psp_style; bool input_swap_override = input_autoconfigure_get_swap_override(); unsigned menu_ok_btn = (!input_swap_override && swap_ok_cancel_btns) ? @@ -16539,7 +16540,10 @@ static unsigned menu_event( * for old_input_state. */ first_held = true; - delay_timer = initial_held ? 200 : 100; + if (scroll_psp_style) + delay_timer = initial_held ? 400 : 20; + else + delay_timer = initial_held ? 200 : 100; delay_count = 0; } @@ -16560,7 +16564,10 @@ static unsigned menu_event( menu_driver_ctl(MENU_NAVIGATION_CTL_GET_SCROLL_ACCEL, &new_scroll_accel); - new_scroll_accel = MIN(new_scroll_accel + 1, 64); + if (scroll_psp_style) + new_scroll_accel = MIN(new_scroll_accel + 1, 5); + else + new_scroll_accel = MIN(new_scroll_accel + 1, 64); } initial_held = false;