diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/cbs/menu_cbs_iterate.c index 2bf079ed82..dacb74d405 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/cbs/menu_cbs_iterate.c @@ -151,6 +151,14 @@ static int action_iterate_help(char *s, size_t len, const char *label) menu_hash_get_help(MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC, s, len); break; + case MENU_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + menu_hash_get_help(MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC, + s, len); + break; + case MENU_HELP_SCANNING_CONTENT: + menu_hash_get_help(MENU_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC, + s, len); + break; case MENU_HELP_EXTRACT: menu_hash_get_help(MENU_LABEL_VALUE_EXTRACTING_PLEASE_WAIT, s, len); @@ -160,6 +168,7 @@ static int action_iterate_help(char *s, size_t len, const char *label) break; } + return 0; } @@ -409,6 +418,8 @@ static enum action_iterate_type action_iterate_type(uint32_t hash) case MENU_LABEL_HELP_WHAT_IS_A_CORE: case MENU_LABEL_HELP_LOADING_CONTENT: case MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD: + case MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + case MENU_LABEL_HELP_SCANNING_CONTENT: return ITERATE_TYPE_HELP; case MENU_LABEL_INFO_SCREEN: return ITERATE_TYPE_INFO; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 8390a39c94..b971542053 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1886,6 +1886,44 @@ static int action_ok_help_what_is_a_core(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); } +static int action_ok_help_audio_video_troubleshooting(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + menu_displaylist_info_t info = {0}; + menu_list_t *menu_list = menu_list_get_ptr(); + menu_handle_t *menu = menu_driver_get_ptr(); + if (!menu_list) + return -1; + + info.list = menu_list->menu_stack; + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING), + sizeof(info.label)); + menu->push_help_screen = true; + menu->help_screen_type = MENU_HELP_AUDIO_VIDEO_TROUBLESHOOTING; + + return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); +} + +static int action_ok_help_scanning_content(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + menu_displaylist_info_t info = {0}; + menu_list_t *menu_list = menu_list_get_ptr(); + menu_handle_t *menu = menu_driver_get_ptr(); + if (!menu_list) + return -1; + + info.list = menu_list->menu_stack; + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_HELP_SCANNING_CONTENT), + sizeof(info.label)); + menu->push_help_screen = true; + menu->help_screen_type = MENU_HELP_SCANNING_CONTENT; + + return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); +} + static int action_ok_help_change_virtual_gamepad(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -2068,6 +2106,12 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD: cbs->action_ok = action_ok_help_change_virtual_gamepad; break; + case MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + cbs->action_ok = action_ok_help_audio_video_troubleshooting; + break; + case MENU_LABEL_HELP_SCANNING_CONTENT: + cbs->action_ok = action_ok_help_scanning_content; + break; case MENU_LABEL_HELP_LOADING_CONTENT: cbs->action_ok = action_ok_help_load_content; break; diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index a87e924c45..01ad59cffe 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -26,6 +26,10 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) { switch (hash) { + case MENU_LABEL_HELP_SCANNING_CONTENT: + return "help_scanning_content"; + case MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + return "help_audio_video_troubleshooting"; case MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD: return "help_change_virtual_gamepad"; case MENU_LABEL_HELP_WHAT_IS_A_CORE: @@ -646,6 +650,10 @@ const char *menu_hash_to_str_us(uint32_t hash) switch (hash) { + case MENU_LABEL_VALUE_HELP_SCANNING_CONTENT: + return "Scanning For Content"; + case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + return "Audio/Video Troubleshooting"; case MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD: return "Changing Virtual Gamepad Overlay"; case MENU_LABEL_VALUE_HELP_WHAT_IS_A_CORE: @@ -1532,6 +1540,57 @@ int menu_hash_get_help_us(uint32_t hash, char *s, size_t len) switch (hash) { + case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: + snprintf(s, len, + "RetroArch relies on an unique form of\n" + "audio/video synchronization where it needs to be\n" + "calibrated against the refresh rate of your\n" + "display for best performance results.\n" + " \n" + "If you experience any audio crackling or video\n" + "tearing, usually it means that you need to\n" + "calibrate the settings. Some choices below:\n" + " \n" + "a) Go to '%s' -> '%s', and enable\n" + "'Threaded Video'. Refresh rate will not matter\n" + "in this mode, framerate will be higher,\n" + "but video might be less smooth.\n" + "b) Go to '%s' -> '%s', and look at\n" + "'%s'. Let it run for\n" + "2048 frames, then press 'OK'.", + menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO) + ); + break; + case MENU_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC: + snprintf(s, len, + "To scan for content, go to '%s' and\n" + "select either '%s' or %s'.\n" + " \n" + "Files will be compared to database entries\n" + "If there is a match, it will add an entry\n" + "to a collection.\n" + " \n" + "You can then easily access this content by\n" + "going to '%s' ->\n" + "'%s'\n" + "instead of having to go through the\n" + "filebrowser everytime.\n" + " \n" + "NOTE: Content for some cores might still not be\n" + "scannable. Examples include: PlayStation,\n" + "MAME, FBA, and maybe others." + , + menu_hash_to_str(MENU_LABEL_VALUE_ADD_CONTENT_LIST), + menu_hash_to_str(MENU_LABEL_VALUE_SCAN_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_SCAN_FILE), + menu_hash_to_str(MENU_LABEL_VALUE_LOAD_CONTENT_LIST), + menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_COLLECTION_LIST) + ); + break; case MENU_LABEL_VALUE_MENU_CONTROLS_PROLOG: snprintf(s, len, "You can use the following controls below \n" diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index c7950cba03..eef24caeeb 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2190,12 +2190,22 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) menu_hash_to_str(MENU_LABEL_VALUE_HELP_LOADING_CONTENT), menu_hash_to_str(MENU_LABEL_HELP_LOADING_CONTENT), 0, 0, 0); +#ifdef HAVE_LIBRETRODB + menu_list_push(info->list, + menu_hash_to_str(MENU_LABEL_VALUE_HELP_SCANNING_CONTENT), + menu_hash_to_str(MENU_LABEL_HELP_SCANNING_CONTENT), + 0, 0, 0); +#endif #ifdef HAVE_OVERLAY menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD), menu_hash_to_str(MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD), 0, 0, 0); #endif + menu_list_push(info->list, + menu_hash_to_str(MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING), + menu_hash_to_str(MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING), + 0, 0, 0); need_refresh = true; need_push = true; break; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 289141a408..8ee4f5b721 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -59,6 +59,8 @@ typedef enum MENU_HELP_LOADING_CONTENT, MENU_HELP_WHAT_IS_A_CORE, MENU_HELP_CHANGE_VIRTUAL_GAMEPAD, + MENU_HELP_AUDIO_VIDEO_TROUBLESHOOTING, + MENU_HELP_SCANNING_CONTENT, MENU_HELP_LAST } menu_help_type_t; diff --git a/menu/menu_hash.h b/menu/menu_hash.h index b11c54c769..ca404efaa9 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -1034,6 +1034,14 @@ extern "C" { #define MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD 0x27ed0204U #define MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC 0x9d0e79dbU +#define MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING 0xd44d395cU +#define MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING 0xd0e5c3ffU +#define MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC 0x60031d7aU + +#define MENU_LABEL_HELP_SCANNING_CONTENT 0x1dec52b8U +#define MENU_LABEL_VALUE_HELP_SCANNING_CONTENT 0x74b36f11U +#define MENU_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC 0xac947056U + const char *menu_hash_to_str_de(uint32_t hash); int menu_hash_get_help_de(uint32_t hash, char *s, size_t len);