From 27ef0cf9c72cb31b9daadfde8f042f7cb67471ea Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jun 2016 22:11:10 +0200 Subject: [PATCH 001/371] Get rid of menu_hash_calculate dependency in find_first_core --- menu/cbs/menu_cbs_ok.c | 4 ++-- menu/menu_content.c | 8 ++------ menu/menu_content.h | 2 ++ 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index e914303908..d13e6b9af9 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -492,7 +492,7 @@ static int file_load_with_detect_core_wrapper(size_t idx, size_t entry_idx, def_info.s = menu->deferred_path; def_info.len = sizeof(menu->deferred_path); - if (menu_content_ctl(MENU_CONTENT_CTL_FIND_FIRST_CORE, &def_info)) + if (menu_content_find_first_core(&def_info, false)) ret = -1; if ( !is_carchive && !string_is_empty(path) @@ -2208,7 +2208,7 @@ static int action_ok_load_archive_detect_core(const char *path, def_info.s = menu->deferred_path; def_info.len = sizeof(menu->deferred_path); - if (menu_content_ctl(MENU_CONTENT_CTL_FIND_FIRST_CORE, &def_info)) + if (menu_content_find_first_core(&def_info, false)) ret = -1; fill_pathname_join(detect_content_path, menu_path, content_path, diff --git a/menu/menu_content.c b/menu/menu_content.c index 165fcde7b3..2a04a9bb83 100644 --- a/menu/menu_content.c +++ b/menu/menu_content.c @@ -125,18 +125,16 @@ error: * selection needs to be made from a list, otherwise * returns true and fills in @s with path to core. **/ -static bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info) +bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool load_content_with_current_core) { char new_core_path[PATH_MAX_LENGTH] = {0}; const core_info_t *info = NULL; core_info_list_t *core_info = NULL; const char *default_info_dir = NULL; size_t supported = 0; - uint32_t menu_label_hash = 0; if (def_info) { - menu_label_hash = menu_hash_calculate(def_info->menu_label); core_info = (core_info_list_t*)def_info->data; default_info_dir = def_info->dir; } @@ -170,7 +168,7 @@ static bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info /* We started the menu with 'Load Content', we are * going to use the current core to load this. */ - if (menu_label_hash == MENU_LABEL_LOAD_CONTENT) + if (load_content_with_current_core) { core_info_get_current_core((core_info_t**)&info); if (info) @@ -201,8 +199,6 @@ bool menu_content_ctl(enum menu_content_ctl_state state, void *data) { switch (state) { - case MENU_CONTENT_CTL_FIND_FIRST_CORE: - return menu_content_find_first_core((menu_content_ctx_defer_info_t*)data); case MENU_CONTENT_CTL_LOAD_PLAYLIST: return menu_content_load_from_playlist((menu_content_ctx_playlist_info_t*)data); case MENU_CONTENT_CTL_NONE: diff --git a/menu/menu_content.h b/menu/menu_content.h index 12561f04c4..69aaac1706 100644 --- a/menu/menu_content.h +++ b/menu/menu_content.h @@ -60,6 +60,8 @@ typedef struct menu_content_ctx_defer_info size_t len; } menu_content_ctx_defer_info_t; +bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool load_content_with_current_core); + bool menu_content_ctl(enum menu_content_ctl_state state, void *data); RETRO_END_DECLS From 69503880f5698195a3711dc5e6682f65def84e51 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jun 2016 22:16:07 +0200 Subject: [PATCH 002/371] Get rid of menu_hash_calculate dependencies for menu keyboard callback functions for settings --- menu/cbs/menu_cbs_ok.c | 52 ++++++++++++++++++++++++++++++++++++++++-- menu/menu_input.c | 39 +------------------------------ menu/menu_input.h | 3 ++- menu/menu_setting.c | 22 ++++++++++++++++++ 4 files changed, 75 insertions(+), 41 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index d13e6b9af9..d7746e10c0 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -969,6 +969,30 @@ static int action_ok_cheat(const char *path, return 0; } +static void menu_input_st_string_cb_save_preset(void *userdata, const char *str) +{ + if (str && *str) + { + rarch_setting_t *setting = NULL; + const char *label = NULL; + + menu_input_ctl(MENU_INPUT_CTL_KEYBOARD_LABEL_SETTING, &label); + + if (!string_is_empty(label)) + setting = menu_setting_find(label); + + if (setting) + { + menu_setting_set_with_string_representation(setting, str); + menu_setting_generic(setting, false); + } + else if (!string_is_empty(label)) + menu_shader_manager_save_preset(str, false); + } + + menu_input_key_end_line(); +} + static int action_ok_shader_preset_save_as(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -978,13 +1002,37 @@ static int action_ok_shader_preset_save_as(const char *path, line.label_setting = label; line.type = type; line.idx = idx; - line.cb = menu_input_st_string_cb; + line.cb = menu_input_st_string_cb_save_preset; if (!menu_input_ctl(MENU_INPUT_CTL_START_LINE, &line)) return -1; return 0; } +static void menu_input_st_string_cb_cheat_file_save_as(void *userdata, const char *str) +{ + if (str && *str) + { + rarch_setting_t *setting = NULL; + const char *label = NULL; + + menu_input_ctl(MENU_INPUT_CTL_KEYBOARD_LABEL_SETTING, &label); + + if (!string_is_empty(label)) + setting = menu_setting_find(label); + + if (setting) + { + menu_setting_set_with_string_representation(setting, str); + menu_setting_generic(setting, false); + } + else if (!string_is_empty(label)) + cheat_manager_save(str); + } + + menu_input_key_end_line(); +} + static int action_ok_cheat_file_save_as(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -994,7 +1042,7 @@ static int action_ok_cheat_file_save_as(const char *path, line.label_setting = label; line.type = type; line.idx = idx; - line.cb = menu_input_st_string_cb; + line.cb = menu_input_st_string_cb_cheat_file_save_as; if (!menu_input_ctl(MENU_INPUT_CTL_START_LINE, &line)) return -1; diff --git a/menu/menu_input.c b/menu/menu_input.c index 734cda4312..30abcaadfd 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -134,7 +134,7 @@ static menu_input_t *menu_input_get_ptr(void) return &menu_input_state; } -static void menu_input_key_end_line(void) +void menu_input_key_end_line(void) { bool keyboard_display = false; @@ -204,43 +204,6 @@ void menu_input_st_hex_cb(void *userdata, const char *str) menu_input_key_end_line(); } - -void menu_input_st_string_cb(void *userdata, const char *str) -{ - if (str && *str) - { - rarch_setting_t *setting = NULL; - const char *label = NULL; - - menu_input_ctl(MENU_INPUT_CTL_KEYBOARD_LABEL_SETTING, &label); - - if (!string_is_empty(label)) - setting = menu_setting_find(label); - - if (setting) - { - menu_setting_set_with_string_representation(setting, str); - menu_setting_generic(setting, false); - } - else if (!string_is_empty(label)) - { - uint32_t hash_label = menu_hash_calculate(label); - - switch (hash_label) - { - case MENU_LABEL_VIDEO_SHADER_PRESET_SAVE_AS: - menu_shader_manager_save_preset(str, false); - break; - case MENU_LABEL_CHEAT_FILE_SAVE_AS: - cheat_manager_save(str); - break; - } - } - } - - menu_input_key_end_line(); -} - void menu_input_st_cheat_cb(void *userdata, const char *str) { menu_input_t *menu_input = menu_input_get_ptr(); diff --git a/menu/menu_input.h b/menu/menu_input.h index 0d665dcb37..b8cef6817b 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -128,7 +128,6 @@ typedef struct menu_input_ctx_bind_limits /* Keyboard input callbacks */ void menu_input_st_uint_cb (void *userdata, const char *str); void menu_input_st_hex_cb (void *userdata, const char *str); -void menu_input_st_string_cb(void *userdata, const char *str); void menu_input_st_cheat_cb (void *userdata, const char *str); unsigned menu_input_frame_retropad(retro_input_t input, retro_input_t trigger_state); @@ -139,6 +138,8 @@ int16_t menu_input_pointer_state(enum menu_input_pointer_state state); int16_t menu_input_mouse_state(enum menu_input_mouse_state state); +void menu_input_key_end_line(void); + bool menu_input_ctl(enum menu_input_ctl_state state, void *data); RETRO_END_DECLS diff --git a/menu/menu_setting.c b/menu/menu_setting.c index a3e3dd5dea..6b9b728600 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2768,6 +2768,28 @@ static int setting_action_ok_video_refresh_rate_auto(void *data, bool wraparound return 0; } +static void menu_input_st_string_cb(void *userdata, const char *str) +{ + if (str && *str) + { + rarch_setting_t *setting = NULL; + const char *label = NULL; + + menu_input_ctl(MENU_INPUT_CTL_KEYBOARD_LABEL_SETTING, &label); + + if (!string_is_empty(label)) + setting = menu_setting_find(label); + + if (setting) + { + menu_setting_set_with_string_representation(setting, str); + menu_setting_generic(setting, false); + } + } + + menu_input_key_end_line(); +} + static int setting_generic_action_ok_linefeed(void *data, bool wraparound) { menu_input_ctx_line_t line; From 042ebca2ef9f835cceede0ff8f8bb3623612e9fb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jun 2016 22:48:25 +0200 Subject: [PATCH 003/371] Create action_ok_playlist_entry_collection --- menu/cbs/menu_cbs_ok.c | 117 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 1 deletion(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index d7746e10c0..147d08f087 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -565,6 +565,116 @@ static int action_ok_file_load_detect_core(const char *path, return 0; } +static int action_ok_playlist_entry_collection(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + size_t selection; + menu_content_ctx_playlist_info_t playlist_info; + uint32_t core_name_hash, core_path_hash; + size_t selection_ptr = 0; + playlist_t *playlist = g_defaults.history; + bool is_history = true; + const char *entry_path = NULL; + const char *entry_label = NULL; + const char *core_path = NULL; + const char *core_name = NULL; + playlist_t *tmp_playlist = NULL; + menu_handle_t *menu = NULL; + + if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) + return menu_cbs_exit(); + if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection)) + return menu_cbs_exit(); + + menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &tmp_playlist); + + if (!tmp_playlist) + { + tmp_playlist = playlist_init( + menu->db_playlist_file, COLLECTION_SIZE); + + if (!tmp_playlist) + return menu_cbs_exit(); + } + + playlist = tmp_playlist; + is_history = false; + + selection_ptr = entry_idx; + + playlist_get_index(playlist, selection_ptr, + &entry_path, &entry_label, &core_path, &core_name, NULL, NULL); + +#if 0 + RARCH_LOG("path: %s, label: %s, core path: %s, core name: %s, idx: %d\n", + entry_path, entry_label, + core_path, core_name, selection_ptr); + RARCH_LOG("playlist file: %s\n", menu->db_playlist_file); +#endif + + core_path_hash = core_path ? menu_hash_calculate(core_path) : 0; + core_name_hash = core_name ? menu_hash_calculate(core_name) : 0; + + if ( + (core_path_hash == MENU_VALUE_DETECT) && + (core_name_hash == MENU_VALUE_DETECT) + ) + { + core_info_ctx_find_t core_info; + char new_core_path[PATH_MAX_LENGTH] = {0}; + char new_display_name[PATH_MAX_LENGTH] = {0}; + const char *entry_path = NULL; + const char *entry_crc32 = NULL; + const char *db_name = NULL; + const char *path_base = path_basename(menu->db_playlist_file); + bool found_associated_core = menu_playlist_find_associated_core( + path_base, new_core_path, sizeof(new_core_path)); + + core_info.inf = NULL; + core_info.path = new_core_path; + + if (!core_info_find(&core_info)) + found_associated_core = false; + + if (!found_associated_core) + return action_ok_file_load_with_detect_core(entry_path, + label, type, selection_ptr, entry_idx); + + menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &tmp_playlist); + + playlist_get_index(tmp_playlist, selection_ptr, + &entry_path, &entry_label, NULL, NULL, &entry_crc32, &db_name); + + strlcpy(new_display_name, core_info.inf->display_name, sizeof(new_display_name)); + playlist_update(tmp_playlist, + selection_ptr, + entry_path, + entry_label, + new_core_path, + new_display_name, + entry_crc32, + db_name); + playlist_write_file(tmp_playlist); + } + + playlist_info.data = playlist; + playlist_info.idx = selection_ptr; + + menu_content_ctl(MENU_CONTENT_CTL_LOAD_PLAYLIST, &playlist_info); + + if (is_history) + { + menu_entries_pop_stack(&selection, 0, 1); + menu_navigation_ctl(MENU_NAVIGATION_CTL_SET_SELECTION, + &selection); + + generic_action_ok_displaylist_push("", + "", 0, 0, 0, ACTION_OK_DL_CONTENT_SETTINGS); + } + + return menu_cbs_exit(); +} + static int action_ok_playlist_entry(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -2677,7 +2787,12 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, BIND_ACTION_OK(cbs, action_ok_push_default); break; case MENU_FILE_PLAYLIST_ENTRY: - BIND_ACTION_OK(cbs, action_ok_playlist_entry); + if (label_hash == MENU_LABEL_COLLECTION) + { + BIND_ACTION_OK(cbs, action_ok_playlist_entry_collection); + } + else + BIND_ACTION_OK(cbs, action_ok_playlist_entry); break; case MENU_FILE_RPL_ENTRY: BIND_ACTION_OK(cbs, action_ok_rpl_entry); From 53dac26509d2f73520d14968e2fc631b3244200e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jun 2016 22:54:43 +0200 Subject: [PATCH 004/371] Get rid of menu_hash_calculate for detecting if a playlist entry has core_name and core_path set to 'DETECT' --- menu/cbs/menu_cbs_ok.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 147d08f087..02edf7d2a7 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -570,7 +570,6 @@ static int action_ok_playlist_entry_collection(const char *path, { size_t selection; menu_content_ctx_playlist_info_t playlist_info; - uint32_t core_name_hash, core_path_hash; size_t selection_ptr = 0; playlist_t *playlist = g_defaults.history; bool is_history = true; @@ -612,13 +611,8 @@ static int action_ok_playlist_entry_collection(const char *path, RARCH_LOG("playlist file: %s\n", menu->db_playlist_file); #endif - core_path_hash = core_path ? menu_hash_calculate(core_path) : 0; - core_name_hash = core_name ? menu_hash_calculate(core_name) : 0; - - if ( - (core_path_hash == MENU_VALUE_DETECT) && - (core_name_hash == MENU_VALUE_DETECT) - ) + if ( string_is_equal(core_path, "DETECT") + && string_is_equal(core_name, "DETECT")) { core_info_ctx_find_t core_info; char new_core_path[PATH_MAX_LENGTH] = {0}; @@ -680,7 +674,6 @@ static int action_ok_playlist_entry(const char *path, { size_t selection; menu_content_ctx_playlist_info_t playlist_info; - uint32_t core_name_hash, core_path_hash; size_t selection_ptr = 0; playlist_t *playlist = g_defaults.history; bool is_history = true; @@ -736,13 +729,8 @@ static int action_ok_playlist_entry(const char *path, RARCH_LOG("playlist file: %s\n", menu->db_playlist_file); #endif - core_path_hash = core_path ? menu_hash_calculate(core_path) : 0; - core_name_hash = core_name ? menu_hash_calculate(core_name) : 0; - - if ( - (core_path_hash == MENU_VALUE_DETECT) && - (core_name_hash == MENU_VALUE_DETECT) - ) + if ( string_is_equal(core_path, "DETECT") + && string_is_equal(core_name, "DETECT")) { core_info_ctx_find_t core_info; char new_core_path[PATH_MAX_LENGTH] = {0}; From 95087306822eb741d06a4794ca536deb5c8a36a0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jun 2016 23:04:53 +0200 Subject: [PATCH 005/371] Create enum_idx --- menu/menu_hash.h | 1157 +++++++++++++++++++++++++++++++++++++++++++ menu/menu_setting.c | 1 + 2 files changed, 1158 insertions(+) diff --git a/menu/menu_hash.h b/menu/menu_hash.h index 2080248a21..b937b38c98 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -20,6 +20,1163 @@ RETRO_BEGIN_DECLS +enum menu_hash_enums +{ + MENU_ENUM_LABEL_UNKNOWN = 0, + MENU_ENUM_LABEL_START_NET_RETROPAD, + MENU_ENUM_LABEL_VALUE_START_NET_RETROPAD, + + MENU_ENUM_LABEL_CB_THUMBNAILS_UPDATER_DOWNLOAD, + + MENU_ENUM_LABEL_THUMBNAILS_UPDATER_LIST, + MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST, + + MENU_ENUM_LABEL_DEFERRED_THUMBNAILS_UPDATER_LIST, + + MENU_ENUM_LABEL_MENU_ENUM_LINEAR_FILTER, + MENU_ENUM_LABEL_VALUE_MENU_ENUM_LINEAR_FILTER, + + MENU_ENUM_LABEL_MENU_ENUM_THROTTLE_FRAMERATE, + MENU_ENUM_LABEL_VALUE_MENU_ENUM_THROTTLE_FRAMERATE, + + MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, + MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR, + + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT, + + MENU_ENUM_LABEL_UI_COMPANION_ENABLE, + MENU_ENUM_LABEL_VALUE_UI_COMPANION_ENABLE, + + MENU_ENUM_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE, + MENU_ENUM_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE, + + MENU_ENUM_LABEL_CHEEVOS_TEST_UNOFFICIAL, + MENU_ENUM_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL, + + MENU_ENUM_LABEL_VALUE_ENABLE, + + MENU_ENUM_LABEL_VALUE_CHEEVOS_SETTINGS, + + MENU_ENUM_LABEL_CHEEVOS_ENABLE, + + MENU_ENUM_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, + MENU_ENUM_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, + + MENU_ENUM_LABEL_CHEEVOS_DESCRIPTION, + + MENU_ENUM_LABEL_VALUE_CHEEVOS_DESCRIPTION, + + MENU_ENUM_LABEL_VALUE_STATE_SLOT, + + MENU_ENUM_LABEL_STATE_SLOT, + + MENU_ENUM_LABEL_INPUT_HOTKEY_BINDS_BEGIN, + + MENU_ENUM_LABEL_INPUT_SETTINGS, + + MENU_ENUM_LABEL_PLAYLIST_SETTINGS_BEGIN, + MENU_ENUM_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST, + + MENU_ENUM_LABEL_INPUT_SETTINGS_BEGIN, + MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST, + + MENU_ENUM_LABEL_DEFERRED_USER_BINDS_LIST, + + MENU_ENUM_LABEL_CHEEVOS_USERNAME, + MENU_ENUM_LABEL_CHEEVOS_PASSWORD, + + MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS, + MENU_ENUM_LABEL_ACCOUNTS_CHEEVOS_PASSWORD, + MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD, + + MENU_ENUM_LABEL_ACCOUNTS_CHEEVOS_USERNAME, + MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME, + + MENU_ENUM_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS, + MENU_ENUM_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS, + + MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST, + MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_LIST, + MENU_ENUM_LABEL_ACCOUNTS_LIST, + MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST, + MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST_END, + + MENU_ENUM_LABEL_DEBUG_PANEL_ENABLE, + MENU_ENUM_LABEL_VALUE_DEBUG_PANEL_ENABLE, + + MENU_ENUM_LABEL_VALUE_MENU_ENUM_CONTROLS_PROLOG, + + MENU_ENUM_LABEL_VALUE_HELP_WHAT_IS_A_CORE, + MENU_ENUM_LABEL_HELP_WHAT_IS_A_CORE, + + MENU_ENUM_LABEL_HELP_LOADING_CONTENT, + MENU_ENUM_LABEL_VALUE_HELP_LOADING_CONTENT, + + MENU_ENUM_LABEL_HELP_LIST, + MENU_ENUM_LABEL_VALUE_HELP_LIST, + + MENU_ENUM_LABEL_VALUE_HELP_CONTROLS, + MENU_ENUM_LABEL_HELP_CONTROLS, + + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_SCROLL_UP, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_SCROLL_DOWN, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_CONFIRM, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_BACK, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_START, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_INFO, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_MENU, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_QUIT, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_KEYBOARD, + + MENU_ENUM_LABEL_VALUE_EXTRACTING_PLEASE_WAIT, + + MENU_ENUM_LABEL_WELCOME_TO_RETROARCH, + + MENU_ENUM_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE, + MENU_ENUM_LABEL_DEFERRED_ARCHIVE_ACTION, + MENU_ENUM_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE, + MENU_ENUM_LABEL_DEFERRED_ARCHIVE_OPEN, + + MENU_ENUM_LABEL_VALUE_INPUT_BACK_AS_MENU_ENUM_TOGGLE_ENABLE, + MENU_ENUM_LABEL_INPUT_BACK_AS_MENU_ENUM_TOGGLE_ENABLE, + + MENU_ENUM_LABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, + MENU_ENUM_LABEL_VALUE_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, + + MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU, + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, + + MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST, + MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST, + + MENU_ENUM_LABEL_VALUE_UPDATE_CORE_INFO_FILES, + MENU_ENUM_LABEL_UPDATE_CORE_INFO_FILES, + + MENU_ENUM_LABEL_VALUE_SEARCH, + + MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_LIST, + MENU_ENUM_LABEL_DEFERRED_LAKKA_LIST, + + MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE_CONTENT, + MENU_ENUM_LABEL_DOWNLOAD_CORE_CONTENT, + + MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY, + MENU_ENUM_LABEL_VALUE_SCAN_THIS_DIRECTORY, + + MENU_ENUM_LABEL_SCAN_DIRECTORY, + MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY, + + MENU_ENUM_LABEL_VALUE_SCAN_FILE, + MENU_ENUM_LABEL_SCAN_FILE, + + MENU_ENUM_LABEL_ADD_CONTENT_LIST, + MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST, + + MENU_ENUM_LABEL_UPDATE_AUTOCONFIG_PROFILES_HID, + MENU_ENUM_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES_HID, + + MENU_ENUM_LABEL_VALUE_DONT_CARE, + MENU_ENUM_LABEL_VALUE_LINEAR, + MENU_ENUM_LABEL_VALUE_NEAREST, + MENU_ENUM_LABEL_VALUE_UNKNOWN, + MENU_ENUM_LABEL_VALUE_USER, + MENU_ENUM_LABEL_VALUE_CHEAT, + MENU_ENUM_LABEL_VALUE_SHADER, + MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, + MENU_ENUM_LABEL_VALUE_DIRECTORY_NONE, + MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, + MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE, + MENU_ENUM_LABEL_VALUE_ASK_ARCHIVE, + + MENU_ENUM_LABEL_UPDATE_ASSETS, + MENU_ENUM_LABEL_VALUE_UPDATE_ASSETS, + + MENU_ENUM_LABEL_UPDATE_LAKKA, + MENU_ENUM_LABEL_VALUE_UPDATE_LAKKA, + + MENU_ENUM_LABEL_UPDATE_CHEATS, + MENU_ENUM_LABEL_VALUE_UPDATE_CHEATS, + + MENU_ENUM_LABEL_UPDATE_AUTOCONFIG_PROFILES, + MENU_ENUM_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES, + + MENU_ENUM_LABEL_UPDATE_DATABASES, + MENU_ENUM_LABEL_VALUE_UPDATE_DATABASES, + + MENU_ENUM_LABEL_UPDATE_OVERLAYS, + MENU_ENUM_LABEL_VALUE_UPDATE_OVERLAYS, + + MENU_ENUM_LABEL_UPDATE_CG_SHADERS, + MENU_ENUM_LABEL_VALUE_UPDATE_CG_SHADERS, + + MENU_ENUM_LABEL_UPDATE_GLSL_SHADERS, + MENU_ENUM_LABEL_VALUE_UPDATE_GLSL_SHADERS, + + MENU_ENUM_LABEL_INFORMATION_LIST, + MENU_ENUM_LABEL_VALUE_INFORMATION_LIST, + + MENU_ENUM_LABEL_USE_BUILTIN_PLAYER, + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + + MENU_ENUM_LABEL_CONTENT_SETTINGS, + MENU_ENUM_LABEL_VALUE_CONTENT_SETTINGS, + + MENU_ENUM_LABEL_LOAD_CONTENT_LIST, + MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, + + MENU_ENUM_LABEL_NO_SETTINGS_FOUND, + MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND, + MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS, + + MENU_ENUM_LABEL_VIDEO_FONT_ENABLE, + MENU_ENUM_LABEL_VALUE_VIDEO_FONT_ENABLE, + MENU_ENUM_LABEL_VIDEO_FONT_PATH, + MENU_ENUM_LABEL_VALUE_VIDEO_FONT_PATH, + MENU_ENUM_LABEL_VIDEO_FONT_SIZE, + MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE, + MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_X, + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_X, + MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_Y, + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_Y, + + MENU_ENUM_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST, + MENU_ENUM_LABEL_INPUT_HOTKEY_BINDS, + MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BINDS, + + MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_SETTINGS, + + MENU_ENUM_LABEL_FRAME_THROTTLE_ENABLE, + MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_ENABLE, + + MENU_ENUM_LABEL_VIDEO_FILTER_FLICKER, + MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_FLICKER, + + MENU_ENUM_LABEL_VIDEO_SOFT_FILTER, + MENU_ENUM_LABEL_VALUE_VIDEO_SOFT_FILTER, + + MENU_ENUM_LABEL_CORE_ENABLE, + MENU_ENUM_LABEL_VALUE_CORE_ENABLE, + + MENU_ENUM_LABEL_MOUSE_ENABLE, + MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE, + + MENU_ENUM_LABEL_SHOW_ADVANCED_SETTINGS, + MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS, + + MENU_ENUM_LABEL_POINTER_ENABLE, + MENU_ENUM_LABEL_VALUE_POINTER_ENABLE, + + MENU_ENUM_LABEL_COLLAPSE_SUBGROUPS_ENABLE, + MENU_ENUM_LABEL_VALUE_COLLAPSE_SUBGROUPS_ENABLE, + + MENU_ENUM_LABEL_RESET, + MENU_ENUM_LABEL_SLOWMOTION, + MENU_ENUM_LABEL_HOLD_FAST_FORWARD, + MENU_ENUM_LABEL_CHEAT_TOGGLE, + MENU_ENUM_LABEL_PAUSE_TOGGLE, + + MENU_ENUM_LABEL_PAUSE_LIBRETRO, + MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, + + MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, + MENU_ENUM_LABEL_VALUE_NO_ITEMS, + + MENU_ENUM_LABEL_UI_MENUBAR_ENABLE, + MENU_ENUM_LABEL_VALUE_UI_MENUBAR_ENABLE, + + MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT, + MENU_ENUM_LABEL_VALUE_UI_COMPANION_START_ON_BOOT, + + MENU_ENUM_LABEL_ARCHIVE_MODE, + MENU_ENUM_LABEL_VALUE_ARCHIVE_MODE, + MENU_ENUM_LABEL_VALUE_SHADER_OPTIONS, + MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY, + MENU_ENUM_LABEL_USE_THIS_DIRECTORY, + MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, + MENU_ENUM_LABEL_VALUE_NO_SHADER_PARAMETERS, + MENU_ENUM_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE, + MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE, + MENU_ENUM_LABEL_SAVE_STATE, + MENU_ENUM_LABEL_VALUE_LOAD_STATE, + MENU_ENUM_LABEL_VALUE_UNDO_LOAD_STATE, + MENU_ENUM_LABEL_VALUE_UNDO_SAVE_STATE, + MENU_ENUM_LABEL_VALUE_SAVE_STATE, + MENU_ENUM_LABEL_LOAD_STATE, + MENU_ENUM_LABEL_UNDO_LOAD_STATE, + MENU_ENUM_LABEL_UNDO_SAVE_STATE, + MENU_ENUM_LABEL_REWIND, + MENU_ENUM_LABEL_NETPLAY_FLIP_PLAYERS, + MENU_ENUM_LABEL_CHEAT_INDEX_MINUS, + MENU_ENUM_LABEL_CHEAT_INDEX_PLUS, + MENU_ENUM_LABEL_AUDIO_ENABLE, + MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE, + MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY, + MENU_ENUM_LABEL_SHADER_NEXT, + MENU_ENUM_LABEL_SHADER_PREV, + MENU_ENUM_LABEL_FRAME_ADVANCE, + MENU_ENUM_LABEL_FPS_SHOW, + MENU_ENUM_LABEL_VALUE_FPS_SHOW, + MENU_ENUM_LABEL_MOVIE_RECORD_TOGGLE, + MENU_ENUM_LABEL_L_X_PLUS, + MENU_ENUM_LABEL_L_X_MINUS, + MENU_ENUM_LABEL_L_Y_PLUS, + MENU_ENUM_LABEL_L_Y_MINUS, + MENU_ENUM_LABEL_R_X_PLUS, + MENU_ENUM_LABEL_R_X_MINUS, + MENU_ENUM_LABEL_R_Y_MINUS, + MENU_ENUM_LABEL_R_Y_PLUS, + MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL, + MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL, + MENU_ENUM_LABEL_VIDEO_GPU_SCREENSHOT, + MENU_ENUM_LABEL_VALUE_VIDEO_GPU_SCREENSHOT, + MENU_ENUM_LABEL_PAUSE_NONACTIVE, + MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE, + MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE, + MENU_ENUM_LABEL_VALUE_BLOCK_SRAM_OVERWRITE, + MENU_ENUM_LABEL_VIDEO_FULLSCREEN, + MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN, + MENU_ENUM_LABEL_CORE_SPECIFIC_CONFIG, + MENU_ENUM_LABEL_VALUE_CORE_SPECIFIC_CONFIG, + MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS, + MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS, + MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE, + MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE, + MENU_ENUM_LABEL_AUTO_OVERRIDES_ENABLE, + MENU_ENUM_LABEL_VALUE_AUTO_OVERRIDES_ENABLE, + MENU_ENUM_LABEL_AUTO_REMAPS_ENABLE, + MENU_ENUM_LABEL_VALUE_AUTO_REMAPS_ENABLE, + MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN, + MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN, + MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION, + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, + MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES, + MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES, + MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, + MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, + MENU_ENUM_LABEL_SCREENSHOT, + MENU_ENUM_LABEL_REWIND_GRANULARITY, + MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY, + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION, + MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE, + MENU_ENUM_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE, + MENU_ENUM_LABEL_VIDEO_THREADED, + MENU_ENUM_LABEL_VALUE_VIDEO_THREADED, + MENU_ENUM_LABEL_VALUE_RUN, + MENU_ENUM_LABEL_SCREEN_RESOLUTION, + MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION, + + MENU_ENUM_LABEL_TITLE_COLOR, + MENU_ENUM_LABEL_VALUE_TITLE_COLOR, + MENU_ENUM_LABEL_TIMEDATE_ENABLE, + MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE, + MENU_ENUM_LABEL_ENTRY_NORMAL_COLOR, + MENU_ENUM_LABEL_VALUE_ENTRY_NORMAL_COLOR, + MENU_ENUM_LABEL_ENTRY_HOVER_COLOR, + MENU_ENUM_LABEL_VALUE_ENTRY_HOVER_COLOR, + MENU_ENUM_LABEL_AUDIO_SYNC, + MENU_ENUM_LABEL_VALUE_AUDIO_SYNC, + MENU_ENUM_LABEL_VIDEO_VSYNC, + MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, + MENU_ENUM_LABEL_VIDEO_HARD_SYNC, + MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC, + MENU_ENUM_LABEL_SAVESTATE_AUTO_SAVE, + MENU_ENUM_LABEL_SAVESTATE_AUTO_LOAD, + MENU_ENUM_LABEL_SAVESTATE_AUTO_INDEX, + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_INDEX, + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_SAVE, + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_LOAD, + MENU_ENUM_LABEL_SYSTEM_DIRECTORY, + MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION, + MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION, + MENU_ENUM_LABEL_SUSPEND_SCREENSAVER_ENABLE, + MENU_ENUM_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE, + MENU_ENUM_LABEL_DPI_OVERRIDE_ENABLE, + MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_ENABLE, + MENU_ENUM_LABEL_DPI_OVERRIDE_VALUE, + MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_VALUE, + MENU_ENUM_LABEL_XMB_SCALE_FACTOR, + MENU_ENUM_LABEL_VALUE_XMB_SCALE_FACTOR, + MENU_ENUM_LABEL_XMB_ALPHA_FACTOR, + MENU_ENUM_LABEL_VALUE_XMB_ALPHA_FACTOR, + MENU_ENUM_LABEL_XMB_FONT, + MENU_ENUM_LABEL_VALUE_XMB_FONT, + MENU_ENUM_LABEL_XMB_THEME, + MENU_ENUM_LABEL_VALUE_XMB_THEME, + MENU_ENUM_LABEL_XMB_GRADIENT, + MENU_ENUM_LABEL_VALUE_XMB_GRADIENT, + MENU_ENUM_LABEL_XMB_SHADOWS_ENABLE, + MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE, + MENU_ENUM_LABEL_XMB_RIBBON_ENABLE, + MENU_ENUM_LABEL_VALUE_XMB_RIBBON_ENABLE, + MENU_ENUM_LABEL_VOLUME_UP, + MENU_ENUM_LABEL_VOLUME_DOWN, + MENU_ENUM_LABEL_LOG_VERBOSITY, + MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY, + MENU_ENUM_LABEL_OVERLAY_NEXT, + MENU_ENUM_LABEL_AUDIO_VOLUME, + MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, + MENU_ENUM_LABEL_AUDIO_LATENCY, + MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY, + MENU_ENUM_LABEL_NETPLAY_ENABLE, + MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE, + MENU_ENUM_LABEL_SSH_ENABLE, + MENU_ENUM_LABEL_VALUE_SSH_ENABLE, + MENU_ENUM_LABEL_SAMBA_ENABLE, + MENU_ENUM_LABEL_VALUE_SAMBA_ENABLE, + MENU_ENUM_LABEL_BLUETOOTH_ENABLE, + MENU_ENUM_LABEL_VALUE_BLUETOOTH_ENABLE, + MENU_ENUM_LABEL_NETPLAY_CLIENT_SWAP_INPUT, + MENU_ENUM_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT, + MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES, + MENU_ENUM_LABEL_VALUE_NETPLAY_DELAY_FRAMES, + MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE, + MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE, + MENU_ENUM_LABEL_NETPLAY_TCP_UDP_PORT, + MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT, + MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE, + MENU_ENUM_LABEL_VALUE_SORT_SAVEFILES_ENABLE, + MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE, + MENU_ENUM_LABEL_VALUE_SORT_SAVESTATES_ENABLE, + MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS, + MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS, + MENU_ENUM_LABEL_NETPLAY_MODE, + MENU_ENUM_LABEL_VALUE_NETPLAY_MODE, + MENU_ENUM_LABEL_PERFCNT_ENABLE, + MENU_ENUM_LABEL_VALUE_PERFCNT_ENABLE, + MENU_ENUM_LABEL_OVERLAY_SCALE, + MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE, + MENU_ENUM_LABEL_KEYBOARD_OVERLAY_PRESET, + MENU_ENUM_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET, + MENU_ENUM_LABEL_OVERLAY_PRESET, + MENU_ENUM_LABEL_VALUE_OVERLAY_PRESET, + MENU_ENUM_LABEL_OVERLAY_OPACITY, + MENU_ENUM_LABEL_VALUE_OVERLAY_OPACITY, + + MENU_ENUM_LABEL_MENU_ENUM_WALLPAPER, + MENU_ENUM_LABEL_VALUE_MENU_ENUM_WALLPAPER, + MENU_ENUM_LABEL_DYNAMIC_WALLPAPER, + MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, + MENU_ENUM_LABEL_THUMBNAILS, + MENU_ENUM_LABEL_VALUE_THUMBNAILS, + + MENU_ENUM_LABEL_FASTFORWARD_RATIO, + MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO, + MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX, + MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, + MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE, + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE, + MENU_ENUM_LABEL_INPUT_OSK_OVERLAY_ENABLE, + MENU_ENUM_LABEL_VALUE_INPUT_OSK_OVERLAY_ENABLE, + MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_AUTO, + MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO, + MENU_ENUM_LABEL_VIDEO_REFRESH_RATE, + MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE, + MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN, + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, + MENU_ENUM_LABEL_VIDEO_FORCE_SRGB_DISABLE, + MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE, + MENU_ENUM_LABEL_VIDEO_ROTATION, + MENU_ENUM_LABEL_VIDEO_SCALE, + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE, + MENU_ENUM_LABEL_VIDEO_SMOOTH, + MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH, + MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN, + MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN, + MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER, + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, + + MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA, + MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA, + MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW, + MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW, + + MENU_ENUM_LABEL_INPUT_PLAYER1_JOYPAD_INDEX, + MENU_ENUM_LABEL_INPUT_PLAYER2_JOYPAD_INDEX, + MENU_ENUM_LABEL_INPUT_PLAYER3_JOYPAD_INDEX, + MENU_ENUM_LABEL_INPUT_PLAYER4_JOYPAD_INDEX, + MENU_ENUM_LABEL_INPUT_PLAYER5_JOYPAD_INDEX, + + MENU_ENUM_LABEL_AUDIO_DEVICE, + MENU_ENUM_LABEL_VALUE_AUDIO_DEVICE, + + MENU_ENUM_LABEL_REWIND_ENABLE, + MENU_ENUM_LABEL_VALUE_REWIND_ENABLE, + MENU_ENUM_LABEL_ENABLE_HOTKEY, + MENU_ENUM_LABEL_DISK_EJECT_TOGGLE, + MENU_ENUM_LABEL_DISK_NEXT, + MENU_ENUM_LABEL_GRAB_MOUSE_TOGGLE, + MENU_ENUM_LABEL_MENU_ENUM_TOGGLE, + MENU_ENUM_LABEL_STATE_SLOT_DECREASE, + MENU_ENUM_LABEL_STATE_SLOT_INCREASE, + + MENU_ENUM_LABEL_LIBRETRO_LOG_LEVEL, + MENU_ENUM_LABEL_VALUE_LIBRETRO_LOG_LEVEL, + + MENU_ENUM_LABEL_INPUT_BIND_DEVICE_ID, + MENU_ENUM_LABEL_INPUT_BIND_DEVICE_TYPE, + + MENU_ENUM_LABEL_AUTOSAVE_INTERVAL, + MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL, + MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT, + MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT, + + MENU_ENUM_LABEL_AUDIO_DRIVER, + MENU_ENUM_LABEL_VALUE_AUDIO_DRIVER, + + MENU_ENUM_LABEL_JOYPAD_DRIVER, + MENU_ENUM_LABEL_VALUE_JOYPAD_DRIVER, + + MENU_ENUM_LABEL_INPUT_DRIVER, + MENU_ENUM_LABEL_VALUE_INPUT_DRIVER, + MENU_ENUM_LABEL_INPUT_DRIVER_LINUXRAW, + MENU_ENUM_LABEL_INPUT_DRIVER_UDEV, + + MENU_ENUM_LABEL_VIDEO_DRIVER, + MENU_ENUM_LABEL_VALUE_VIDEO_DRIVER, + MENU_ENUM_LABEL_VIDEO_DRIVER_GL, + MENU_ENUM_LABEL_VIDEO_DRIVER_SDL2, + MENU_ENUM_LABEL_VIDEO_DRIVER_SDL1, + MENU_ENUM_LABEL_VIDEO_DRIVER_D3D, + MENU_ENUM_LABEL_VIDEO_DRIVER_EXYNOS, + MENU_ENUM_LABEL_VIDEO_DRIVER_SUNXI, + + MENU_ENUM_LABEL_LOCATION_DRIVER, + MENU_ENUM_LABEL_VALUE_LOCATION_DRIVER, + + MENU_ENUM_LABEL_MENU_ENUM_DRIVER, + MENU_ENUM_LABEL_VALUE_MENU_ENUM_DRIVER, + + MENU_ENUM_LABEL_CAMERA_DRIVER, + MENU_ENUM_LABEL_VALUE_CAMERA_DRIVER, + + MENU_ENUM_LABEL_RECORD_DRIVER, + MENU_ENUM_LABEL_VALUE_RECORD_DRIVER, + + MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER, + MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER, + MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER_SINC, + MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER_CC, + + MENU_ENUM_LABEL_SAVEFILE_DIRECTORY, + MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY, + MENU_ENUM_LABEL_SAVESTATE_DIRECTORY, + MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY, + MENU_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY, + MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY, + MENU_ENUM_LABEL_THUMBNAILS_DIRECTORY, + MENU_ENUM_LABEL_VALUE_THUMBNAILS_DIRECTORY, + + MENU_ENUM_LABEL_SLOWMOTION_RATIO, + MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO, + MENU_ENUM_LABEL_INPUT_MAX_USERS, + MENU_ENUM_LABEL_VALUE_INPUT_MAX_USERS, + MENU_ENUM_LABEL_INPUT_REMAP_BINDS_ENABLE, + MENU_ENUM_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE, + MENU_ENUM_LABEL_INPUT_AXIS_THRESHOLD, + MENU_ENUM_LABEL_VALUE_INPUT_AXIS_THRESHOLD, + MENU_ENUM_LABEL_INPUT_TURBO_PERIOD, + MENU_ENUM_LABEL_VALUE_INPUT_TURBO_PERIOD, + + MENU_ENUM_LABEL_VIDEO_GAMMA, + MENU_ENUM_LABEL_VALUE_VIDEO_GAMMA, + + MENU_ENUM_LABEL_VIDEO_ALLOW_ROTATE, + MENU_ENUM_LABEL_VALUE_VIDEO_ALLOW_ROTATE, + + MENU_ENUM_LABEL_CAMERA_ALLOW, + MENU_ENUM_LABEL_VALUE_CAMERA_ALLOW, + MENU_ENUM_LABEL_LOCATION_ALLOW, + MENU_ENUM_LABEL_VALUE_LOCATION_ALLOW, + + MENU_ENUM_LABEL_TURBO, + + MENU_ENUM_LABEL_NO_PLAYLIST_ENTRIES_AVAILABLE, + MENU_ENUM_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_START_CONTENT, + MENU_ENUM_LABEL_RDB_ENTRY_ANALOG, + MENU_ENUM_LABEL_RDB_ENTRY_RUMBLE, + MENU_ENUM_LABEL_RDB_ENTRY_COOP, + MENU_ENUM_LABEL_RDB_ENTRY_START_CONTENT, + MENU_ENUM_LABEL_RDB_ENTRY_DESCRIPTION, + MENU_ENUM_LABEL_RDB_ENTRY_GENRE, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DESCRIPTION, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_GENRE, + MENU_ENUM_LABEL_RDB_ENTRY_NAME, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_NAME, + MENU_ENUM_LABEL_RDB_ENTRY_PUBLISHER, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PUBLISHER, + MENU_ENUM_LABEL_RDB_ENTRY_DEVELOPER, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DEVELOPER, + MENU_ENUM_LABEL_RDB_ENTRY_ORIGIN, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ORIGIN, + MENU_ENUM_LABEL_RDB_ENTRY_FRANCHISE, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FRANCHISE, + MENU_ENUM_LABEL_RDB_ENTRY_ENHANCEMENT_HW, + MENU_ENUM_LABEL_RDB_ENTRY_ESRB_RATING, + MENU_ENUM_LABEL_RDB_ENTRY_BBFC_RATING, + MENU_ENUM_LABEL_RDB_ENTRY_ELSPA_RATING, + MENU_ENUM_LABEL_RDB_ENTRY_PEGI_RATING, + MENU_ENUM_LABEL_RDB_ENTRY_CERO_RATING, + MENU_ENUM_LABEL_RDB_ENTRY_EDGE_MAGAZINE_RATING, + MENU_ENUM_LABEL_RDB_ENTRY_EDGE_MAGAZINE_ISSUE, + MENU_ENUM_LABEL_RDB_ENTRY_EDGE_MAGAZINE_REVIEW, + MENU_ENUM_LABEL_RDB_ENTRY_FAMITSU_MAGAZINE_RATING, + MENU_ENUM_LABEL_RDB_ENTRY_TGDB_RATING, + MENU_ENUM_LABEL_RDB_ENTRY_RELEASE_MONTH, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH, + MENU_ENUM_LABEL_RDB_ENTRY_RELEASE_YEAR, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR, + MENU_ENUM_LABEL_RDB_ENTRY_MAX_USERS, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_MAX_USERS, + MENU_ENUM_LABEL_RDB_ENTRY_SHA1, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SHA1, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_MD5, + MENU_ENUM_LABEL_RDB_ENTRY_MD5, + MENU_ENUM_LABEL_RDB_ENTRY_CRC32, + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CRC32, + + MENU_ENUM_LABEL_VIDEO_SHADER_DEFAULT_FILTER, + MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS, + MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS, + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES, + MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES, + MENU_ENUM_LABEL_VALUE_CHEAT_NUM_PASSES, + MENU_ENUM_LABEL_CHEAT_NUM_PASSES, + + MENU_ENUM_LABEL_VALUE_NO_DISK, + + MENU_ENUM_LABEL_VALUE_MD5, + MENU_ENUM_LABEL_VALUE_SHA1, + MENU_ENUM_LABEL_VALUE_CRC, + MENU_ENUM_LABEL_VALUE_MORE, + MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU, + MENU_ENUM_LABEL_VALUE_SETTINGS_TAB, + MENU_ENUM_LABEL_VALUE_HISTORY_TAB, + MENU_ENUM_LABEL_VALUE_ADD_TAB, + MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB, + MENU_ENUM_LABEL_VALUE_MAIN_MENU, + MENU_ENUM_LABEL_VALUE_SETTINGS, + MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS, + MENU_ENUM_LABEL_VALUE_ON, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_TRUE, + MENU_ENUM_LABEL_VALUE_FALSE, + MENU_ENUM_LABEL_VALUE_COMP, + MENU_ENUM_LABEL_VALUE_MUSIC, + MENU_ENUM_LABEL_VALUE_IMAGE, + MENU_ENUM_LABEL_VALUE_MOVIE, + MENU_ENUM_LABEL_VALUE_CORE, + MENU_ENUM_LABEL_VALUE_CURSOR, + MENU_ENUM_LABEL_VALUE_FILE, + MENU_ENUM_LABEL_VALUE_MISSING, + MENU_ENUM_LABEL_VALUE_PRESENT, + MENU_ENUM_LABEL_VALUE_OPTIONAL, + MENU_ENUM_LABEL_VALUE_REQUIRED, + MENU_ENUM_LABEL_VALUE_RDB, + MENU_ENUM_LABEL_VALUE_DIR, + MENU_ENUM_LABEL_VALUE_NO_CORE, + MENU_ENUM_LABEL_VALUE_DETECT, + MENU_ENUM_LABEL_VALUE_GLSLP, + MENU_ENUM_LABEL_VALUE_CGP, + MENU_ENUM_LABEL_VALUE_GLSL, + MENU_ENUM_LABEL_VALUE_CG, + MENU_ENUM_LABEL_VALUE_SLANG, + MENU_ENUM_LABEL_VALUE_SLANGP, + + MENU_ENUM_LABEL_VALUE_RETROPAD, + MENU_ENUM_LABEL_VALUE_RETROKEYBOARD, + + MENU_ENUM_LABEL_SYSTEM_BGM_ENABLE, + MENU_ENUM_LABEL_VALUE_SYSTEM_BGM_ENABLE, + + MENU_ENUM_LABEL_AUDIO_BLOCK_FRAMES, + MENU_ENUM_LABEL_VALUE_AUDIO_BLOCK_FRAMES, + + MENU_ENUM_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW, + MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW, + + MENU_ENUM_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND, + MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND, + + MENU_ENUM_LABEL_INPUT_BIND_MODE, + MENU_ENUM_LABEL_VALUE_INPUT_BIND_MODE, + + MENU_ENUM_LABEL_NETWORK_CMD_ENABLE, + MENU_ENUM_LABEL_VALUE_NETWORK_CMD_ENABLE, + MENU_ENUM_LABEL_NETWORK_CMD_PORT, + MENU_ENUM_LABEL_VALUE_NETWORK_CMD_PORT, + MENU_ENUM_LABEL_STDIN_CMD_ENABLE, + MENU_ENUM_LABEL_NETWORK_REMOTE_ENABLE, + MENU_ENUM_LABEL_NETWORK_REMOTE_PORT, + + MENU_ENUM_LABEL_VALUE_STDIN_CMD_ENABLE, + MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_ENABLE, + MENU_ENUM_LABEL_HISTORY_LIST_ENABLE, + MENU_ENUM_LABEL_VALUE_HISTORY_LIST_ENABLE, + MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, + MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_SIZE, + MENU_ENUM_LABEL_CONTENT_ACTIONS, + MENU_ENUM_LABEL_DETECT_CORE_LIST, + MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, + MENU_ENUM_LABEL_DETECT_CORE_LIST_OK, + MENU_ENUM_LABEL_START_CORE, + MENU_ENUM_LABEL_VALUE_START_CORE, + MENU_ENUM_LABEL_LOAD_CONTENT, + MENU_ENUM_LABEL_VALUE_LOAD_CONTENT, + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST, + MENU_ENUM_LABEL_CORE_UPDATER_LIST, + MENU_ENUM_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, + MENU_ENUM_LABEL_CORE_UPDATER_BUILDBOT_URL, + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL, + MENU_ENUM_LABEL_BUILDBOT_ASSETS_URL, + MENU_ENUM_LABEL_VALUE_BUILDBOT_ASSETS_URL, + MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT, + MENU_ENUM_LABEL_VALUE_VIDEO_SHARED_CONTEXT, + MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN, + MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN, + MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND, + MENU_ENUM_LABEL_VALUE_NAVIGATION_WRAPAROUND, + MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, + MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, + MENU_ENUM_LABEL_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE, + MENU_ENUM_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE, + MENU_ENUM_LABEL_CLOSE_CONTENT, + MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, + MENU_ENUM_LABEL_QUIT_RETROARCH, + MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH, + MENU_ENUM_LABEL_SHUTDOWN, + MENU_ENUM_LABEL_VALUE_SHUTDOWN, + MENU_ENUM_LABEL_REBOOT, + MENU_ENUM_LABEL_VALUE_REBOOT, + MENU_ENUM_LABEL_DEFERRED_VIDEO_FILTER, + MENU_ENUM_LABEL_DEFERRED_CORE_LIST_SET, + MENU_ENUM_LABEL_VALUE_STARTING_DOWNLOAD, + MENU_ENUM_LABEL_DEFERRED_DATABASE_MANAGER_LIST, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_DEVELOPER, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PUBLISHER, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ORIGIN, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FRANCHISE, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_RATING, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_ISSUE, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FAMITSU_MAGAZINE_RATING, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ENHANCEMENT_HW, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEMONTH, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEYEAR, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ESRB_RATING, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ELSPA_RATING, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PEGI_RATING, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_CERO_RATING, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_BBFC_RATING, + MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS, + MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL, + MENU_ENUM_LABEL_DEFERRED_RPL_ENTRY_ACTIONS, + MENU_ENUM_LABEL_DEFERRED_CORE_LIST, + MENU_ENUM_LABEL_DEFERRED_CORE_UPDATER_LIST, + MENU_ENUM_LABEL_DISK_IMAGE_APPEND, + MENU_ENUM_LABEL_CORE_LIST, + MENU_ENUM_LABEL_VALUE_CORE_LIST, + MENU_ENUM_LABEL_MANAGEMENT, + MENU_ENUM_LABEL_VALUE_MANAGEMENT, + MENU_ENUM_LABEL_ONLINE_UPDATER, + MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER, + MENU_ENUM_LABEL_SETTINGS, + MENU_ENUM_LABEL_FRONTEND_COUNTERS, + MENU_ENUM_LABEL_VALUE_FRONTEND_COUNTERS, + MENU_ENUM_LABEL_VALUE_CORE_COUNTERS, + MENU_ENUM_LABEL_CORE_COUNTERS, + MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY, + MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, + MENU_ENUM_LABEL_NETWORK_INFORMATION, + MENU_ENUM_LABEL_VALUE_NETWORK_INFORMATION, + MENU_ENUM_LABEL_SYSTEM_INFORMATION, + MENU_ENUM_LABEL_DEBUG_INFORMATION, + MENU_ENUM_LABEL_ACHIEVEMENT_LIST, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFORMATION, + MENU_ENUM_LABEL_VALUE_DEBUG_INFORMATION, + MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST, + MENU_ENUM_LABEL_CORE_INFORMATION, + MENU_ENUM_LABEL_VALUE_CORE_INFORMATION, + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS, + MENU_ENUM_LABEL_VIDEO_SHADER_PARAMETERS, + MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_PARAMETERS, + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS, + MENU_ENUM_LABEL_DISK_OPTIONS, + MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, + MENU_ENUM_LABEL_CORE_OPTIONS, + MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS, + MENU_ENUM_LABEL_INPUT_DUTY_CYCLE, + MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE, + MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, + MENU_ENUM_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE, + MENU_ENUM_LABEL_VALUE_DISK_INDEX, + MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, + MENU_ENUM_LABEL_DISK_INDEX, + MENU_ENUM_LABEL_SHADER_OPTIONS, + MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, + MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS, + MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, + MENU_ENUM_LABEL_CORE_INPUT_REMAPPING_OPTIONS, + MENU_ENUM_LABEL_VALUE_CURSOR_MANAGER, + MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER, + MENU_ENUM_LABEL_DATABASE_MANAGER_LIST, + MENU_ENUM_LABEL_CURSOR_MANAGER_LIST, + MENU_ENUM_LABEL_VIDEO_SHADER_PASS, + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET, + MENU_ENUM_LABEL_VIDEO_SHADER_PRESET, + MENU_ENUM_LABEL_CHEAT_FILE_LOAD, + MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD, + MENU_ENUM_LABEL_REMAP_FILE_LOAD, + MENU_ENUM_LABEL_VALUE_REMAP_FILE_LOAD, + MENU_ENUM_LABEL_MESSAGE, + MENU_ENUM_LABEL_INFO_SCREEN, + MENU_ENUM_LABEL_LOAD_OPEN_ZIP, + MENU_ENUM_LABEL_CUSTOM_RATIO, + MENU_ENUM_LABEL_VALUE_CUSTOM_RATIO, + MENU_ENUM_LABEL_HELP, + MENU_ENUM_LABEL_VALUE_HELP, + MENU_ENUM_LABEL_INPUT_OVERLAY, + MENU_ENUM_LABEL_INPUT_OSK_OVERLAY, + MENU_ENUM_LABEL_CHEAT_DATABASE_PATH, + MENU_ENUM_LABEL_VALUE_CHEAT_DATABASE_PATH, + MENU_ENUM_LABEL_CURSOR_DIRECTORY, + MENU_ENUM_LABEL_VALUE_CURSOR_DIRECTORY, + MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE, + MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE, + MENU_ENUM_LABEL_OSK_OVERLAY_DIRECTORY, + MENU_ENUM_LABEL_VALUE_OSK_OVERLAY_DIRECTORY, + MENU_ENUM_LABEL_RECORDING_OUTPUT_DIRECTORY, + MENU_ENUM_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY, + MENU_ENUM_LABEL_RECORDING_CONFIG_DIRECTORY, + MENU_ENUM_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY, + MENU_ENUM_LABEL_VIDEO_FILTER, + MENU_ENUM_LABEL_VALUE_VIDEO_FILTER, + MENU_ENUM_LABEL_PAL60_ENABLE, + MENU_ENUM_LABEL_VALUE_PAL60_ENABLE, + MENU_ENUM_LABEL_CONTENT_HISTORY_PATH, + MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN, + MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN, + MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY, + MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, + MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY, + MENU_ENUM_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY, + MENU_ENUM_LABEL_PLAYLIST_DIRECTORY, + MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, + MENU_ENUM_LABEL_CORE_ASSETS_DIRECTORY, + MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY, + MENU_ENUM_LABEL_CONTENT_DIRECTORY, + MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY, + MENU_ENUM_LABEL_INPUT_REMAPPING_DIRECTORY, + MENU_ENUM_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY, + MENU_ENUM_LABEL_VIDEO_SHADER_DIR, + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_DIR, + MENU_ENUM_LABEL_VIDEO_FILTER_DIR, + MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_DIR, + MENU_ENUM_LABEL_AUDIO_FILTER_DIR, + MENU_ENUM_LABEL_VALUE_AUDIO_FILTER_DIR, + MENU_ENUM_LABEL_LIBRETRO_DIR_PATH, + MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH, + MENU_ENUM_LABEL_LIBRETRO_INFO_PATH, + MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH, + MENU_ENUM_LABEL_RGUI_CONFIG_DIRECTORY, + MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, + MENU_ENUM_LABEL_OVERLAY_DIRECTORY, + MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY, + MENU_ENUM_LABEL_VALUE_SYSTEM_DIRECTORY, + MENU_ENUM_LABEL_ASSETS_DIRECTORY, + MENU_ENUM_LABEL_VALUE_ASSETS_DIRECTORY, + MENU_ENUM_LABEL_CACHE_DIRECTORY, + MENU_ENUM_LABEL_VALUE_CACHE_DIRECTORY, + MENU_ENUM_LABEL_JOYPAD_AUTOCONFIG_DIR, + MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR, + MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE, + MENU_ENUM_LABEL_VALUE_INPUT_AUTODETECT_ENABLE, + MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS, + MENU_ENUM_LABEL_VALUE_CORE_SETTINGS, + MENU_ENUM_LABEL_VALUE_CONFIGURATION_SETTINGS, + MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, + MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS, + MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS, + MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS, + MENU_ENUM_LABEL_RECORDING_SETTINGS, + MENU_ENUM_LABEL_VALUE_RECORDING_SETTINGS, + MENU_ENUM_LABEL_SHADER_SETTINGS, + MENU_ENUM_LABEL_FONT_SETTINGS, + MENU_ENUM_LABEL_AUDIO_SETTINGS, + MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS, + MENU_ENUM_LABEL_INPUT_HOTKEY_SETTINGS, + MENU_ENUM_LABEL_OVERLAY_SETTINGS, + MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS, + MENU_ENUM_LABEL_ONSCREEN_KEYBOARD_OVERLAY_SETTINGS, + MENU_ENUM_LABEL_VALUE_MULTIMEDIA_SETTINGS, + MENU_ENUM_LABEL_VALUE_MENU_ENUM_FILE_BROWSER_SETTINGS, + MENU_ENUM_LABEL_MENU_ENUM_SETTINGS, + MENU_ENUM_LABEL_VALUE_MENU_ENUM_SETTINGS, + MENU_ENUM_LABEL_UI_SETTINGS, + MENU_ENUM_LABEL_VALUE_UI_SETTINGS, + MENU_ENUM_LABEL_PATCH_SETTINGS, + MENU_ENUM_LABEL_PLAYLIST_SETTINGS, + MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS, + MENU_ENUM_LABEL_CORE_UPDATER_SETTINGS, + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_SETTINGS, + MENU_ENUM_LABEL_NETWORK_SETTINGS, + MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS, + MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES, + MENU_ENUM_LABEL_ARCHIVE_SETTINGS, + MENU_ENUM_LABEL_USER_SETTINGS, + MENU_ENUM_LABEL_VALUE_USER_SETTINGS, + MENU_ENUM_LABEL_INPUT_USER_1_BINDS, + MENU_ENUM_LABEL_INPUT_USER_2_BINDS, + MENU_ENUM_LABEL_INPUT_USER_3_BINDS, + MENU_ENUM_LABEL_INPUT_USER_4_BINDS, + MENU_ENUM_LABEL_INPUT_USER_5_BINDS, + MENU_ENUM_LABEL_INPUT_USER_6_BINDS, + MENU_ENUM_LABEL_INPUT_USER_7_BINDS, + MENU_ENUM_LABEL_INPUT_USER_8_BINDS, + MENU_ENUM_LABEL_INPUT_USER_9_BINDS, + MENU_ENUM_LABEL_INPUT_USER_10_BINDS, + MENU_ENUM_LABEL_INPUT_USER_11_BINDS, + MENU_ENUM_LABEL_INPUT_USER_12_BINDS, + MENU_ENUM_LABEL_INPUT_USER_13_BINDS, + MENU_ENUM_LABEL_INPUT_USER_14_BINDS, + MENU_ENUM_LABEL_INPUT_USER_15_BINDS, + MENU_ENUM_LABEL_INPUT_USER_16_BINDS, + MENU_ENUM_LABEL_DIRECTORY_SETTINGS, + MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, + MENU_ENUM_LABEL_VALUE_PRIVACY_SETTINGS, + MENU_ENUM_LABEL_SHADER_APPLY_CHANGES, + MENU_ENUM_LABEL_VALUE_SHADER_APPLY_CHANGES, + MENU_ENUM_LABEL_SAVE_NEW_CONFIG, + MENU_ENUM_LABEL_VALUE_SAVE_NEW_CONFIG, + MENU_ENUM_LABEL_ONSCREEN_DISPLAY_SETTINGS, + MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS, + MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_CHANGES, + MENU_ENUM_LABEL_CHEAT_APPLY_CHANGES, + MENU_ENUM_LABEL_CUSTOM_BIND, + MENU_ENUM_LABEL_CUSTOM_BIND_ALL, + MENU_ENUM_LABEL_CUSTOM_BIND_DEFAULTS, + MENU_ENUM_LABEL_SAVESTATE, + MENU_ENUM_LABEL_LOADSTATE, + MENU_ENUM_LABEL_UNDOLOADSTATE, + MENU_ENUM_LABEL_UNDOSAVESTATE, + MENU_ENUM_LABEL_RESUME_CONTENT, + MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, + MENU_ENUM_LABEL_VALUE_RESUME, + MENU_ENUM_LABEL_RESTART_CONTENT, + MENU_ENUM_LABEL_RESTART_RETROARCH, + MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH, + MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, + MENU_ENUM_LABEL_TAKE_SCREENSHOT, + MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, + MENU_ENUM_LABEL_CONFIGURATIONS, + MENU_ENUM_LABEL_VALUE_CONFIGURATIONS, + MENU_ENUM_LABEL_VALUE_CHEAT_FILE_SAVE_AS, + MENU_ENUM_LABEL_CHEAT_FILE_SAVE_AS, + MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_AS, + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS, + MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CORE, + MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_GAME, + MENU_ENUM_LABEL_REMAP_FILE_SAVE_CORE, + MENU_ENUM_LABEL_REMAP_FILE_SAVE_GAME, + MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST, + MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST, + MENU_ENUM_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE, + MENU_ENUM_LABEL_OSK_ENABLE, + MENU_ENUM_LABEL_AUDIO_MUTE, + MENU_ENUM_LABEL_VALUE_AUDIO_MUTE, + MENU_ENUM_LABEL_EXIT_EMULATOR, + MENU_ENUM_LABEL_COLLECTION, + MENU_ENUM_LABEL_USER_LANGUAGE, + MENU_ENUM_LABEL_VALUE_USER_LANGUAGE, + MENU_ENUM_LABEL_NETPLAY_NICKNAME, + MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME, + MENU_ENUM_LABEL_VIDEO_VI_WIDTH, + MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, + + MENU_ENUM_LABEL_VIDEO_FORCE_ASPECT, + MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT, + + MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_AUTO, + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO, + + MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX, + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX, + + MENU_ENUM_LABEL_VIDEO_VFILTER, + MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER, + + MENU_ENUM_LABEL_VIDEO_GPU_RECORD, + MENU_ENUM_LABEL_VALUE_VIDEO_GPU_RECORD, + + MENU_ENUM_LABEL_RECORD_USE_OUTPUT_DIRECTORY, + MENU_ENUM_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY, + + MENU_ENUM_LABEL_RECORD_CONFIG, + MENU_ENUM_LABEL_VALUE_RECORD_CONFIG, + + MENU_ENUM_LABEL_RECORD_PATH, + MENU_ENUM_LABEL_VALUE_RECORD_PATH, + + MENU_ENUM_LABEL_VIDEO_POST_FILTER_RECORD, + MENU_ENUM_LABEL_VALUE_VIDEO_POST_FILTER_RECORD, + + MENU_ENUM_LABEL_RECORD_ENABLE, + MENU_ENUM_LABEL_VALUE_RECORD_ENABLE, + + MENU_ENUM_LABEL_VALUE_SECONDS, + MENU_ENUM_LABEL_VALUE_STATUS, + + MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_NAME, + MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_LABEL, + MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME, + MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER, + MENU_ENUM_LABEL_VALUE_CORE_INFO_CATEGORIES, + MENU_ENUM_LABEL_VALUE_CORE_INFO_AUTHORS, + MENU_ENUM_LABEL_VALUE_CORE_INFO_PERMISSIONS, + MENU_ENUM_LABEL_VALUE_CORE_INFO_LICENSES, + MENU_ENUM_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS, + MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE, + MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_NOTES, + + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_REMOTE_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RTGA_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RBMP_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RJPEG_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VULKAN_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT, + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT, + + MENU_ENUM_LABEL_VALUE_YES, + MENU_ENUM_LABEL_VALUE_NO, + + MENU_ENUM_LABEL_VALUE_BACK, + MENU_ENUM_LABEL_VALUE_DISABLED, + MENU_ENUM_LABEL_VALUE_PORT, + + MENU_ENUM_LABEL_VALUE_LEFT_ANALOG, + MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG, + + MENU_ENUM_LABEL_VALUE_LANG_ENGLISH, + MENU_ENUM_LABEL_VALUE_LANG_JAPANESE, + MENU_ENUM_LABEL_VALUE_LANG_FRENCH, + MENU_ENUM_LABEL_VALUE_LANG_SPANISH, + MENU_ENUM_LABEL_VALUE_LANG_GERMAN, + MENU_ENUM_LABEL_VALUE_LANG_ITALIAN, + MENU_ENUM_LABEL_VALUE_LANG_DUTCH, + MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE, + MENU_ENUM_LABEL_VALUE_LANG_RUSSIAN, + MENU_ENUM_LABEL_VALUE_LANG_KOREAN, + MENU_ENUM_LABEL_VALUE_LANG_CHINESE_TRADITIONAL, + MENU_ENUM_LABEL_VALUE_LANG_CHINESE_SIMPLIFIED, + MENU_ENUM_LABEL_VALUE_LANG_ESPERANTO, + MENU_ENUM_LABEL_VALUE_LANG_POLISH, + + MENU_ENUM_LABEL_VALUE_NONE, + + MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE, + + MENU_ENUM_LABEL_VALUE_INPUT_USER_BINDS, + + MENU_ENUM_LABEL_USE_BUILTIN_IMAGE_VIEWER, + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + + MENU_ENUM_LABEL_OVERLAY_AUTOLOAD_PREFERRED, + MENU_ENUM_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED, + + MENU_ENUM_LABEL_OPEN_ARCHIVE, + MENU_ENUM_LABEL_OPEN_ARCHIVE_DETECT_CORE, + MENU_ENUM_LABEL_LOAD_ARCHIVE_DETECT_CORE, + MENU_ENUM_LABEL_LOAD_ARCHIVE, + + MENU_ENUM_LABEL_VALUE_OPEN_ARCHIVE, + MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, + + MENU_ENUM_LABEL_VALUE_WHAT_IS_A_CORE_DESC, + + MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD, + MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD, + MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC, + + MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING, + MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING, + MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC, + + MENU_ENUM_LABEL_HELP_SCANNING_CONTENT, + MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT, + MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC, + + MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG, + + MENU_ENUM_LABEL_INPUT_SMALL_KEYBOARD_ENABLE, + MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE, + + MENU_ENUM_LABEL_INPUT_ICADE_ENABLE, + MENU_ENUM_LABEL_VALUE_INPUT_ICADE_ENABLE, + + MENU_ENUM_LABEL_CB_CORE_THUMBNAILS_DOWNLOAD +}; + #define MENU_LABEL_START_NET_RETROPAD 0xf2ae670dU #define MENU_LABEL_VALUE_START_NET_RETROPAD 0xad11a6a0U diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 6b9b728600..e7b42de3e6 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -82,6 +82,7 @@ struct rarch_setting_group_info struct rarch_setting { + enum menu_hash_enums enum_idx; enum setting_type type; uint32_t size; From 91e9b22b0284eb160562ea8648ebc43b5fc1a4ca Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jun 2016 23:07:10 +0200 Subject: [PATCH 006/371] Add menu_settings_list_current_add_enum_idx --- menu-refactor.diff | 2782 ------------------------------------------- menu/menu_setting.c | 10 + 2 files changed, 10 insertions(+), 2782 deletions(-) delete mode 100644 menu-refactor.diff diff --git a/menu-refactor.diff b/menu-refactor.diff deleted file mode 100644 index c850893eb3..0000000000 --- a/menu-refactor.diff +++ /dev/null @@ -1,2782 +0,0 @@ -diff --git a/menu/intl/menu_hash_de.c b/menu/intl/menu_hash_de.c -index 6ccd009..9ccf040 100644 ---- a/menu/intl/menu_hash_de.c -+++ b/menu/intl/menu_hash_de.c -@@ -30,9 +30,9 @@ - /* DO NOT REMOVE THIS. If it causes build failure, it's because you saved the file as UTF-8. Read the above comment. */ - extern const char force_iso_8859_1[sizeof("äÄöÖßüÜ")==7+1 ? 1 : -1]; - --const char *menu_hash_to_str_de(uint32_t hash) -+const char *menu_hash_to_str_de(enum menu_hash_enums msg) - { -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_INFORMATION_LIST: - return "Information"; -@@ -835,7 +835,7 @@ const char *menu_hash_to_str_de(uint32_t hash) - return "null"; - } - --int menu_hash_get_help_de(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help_de(enum menu_hash_enums msg, char *s, size_t len) - { - uint32_t driver_hash = 0; - settings_t *settings = config_get_ptr(); -@@ -843,7 +843,7 @@ int menu_hash_get_help_de(uint32_t hash, char *s, size_t len) - /* If this one throws errors, stop sledgehammering square pegs into round holes and */ - /* READ THE COMMENTS at the top of the file. */ (void)sizeof(force_iso_8859_1); - -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_INPUT_DRIVER: - driver_hash = menu_hash_calculate(settings->input.driver); -diff --git a/menu/intl/menu_hash_eo.c b/menu/intl/menu_hash_eo.c -index eb82427..d4c8262 100644 ---- a/menu/intl/menu_hash_eo.c -+++ b/menu/intl/menu_hash_eo.c -@@ -18,9 +18,9 @@ - - #include "../menu_hash.h" - --const char *menu_hash_to_str_eo(uint32_t hash) -+const char *menu_hash_to_str_eo(enum menu_hash_enums msg) - { -- switch (hash) -+ switch (msg) - { - case 0: - default: -@@ -30,11 +30,11 @@ const char *menu_hash_to_str_eo(uint32_t hash) - return "null"; - } - --int menu_hash_get_help_eo(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help_eo(enum menu_hash_enums msg, char *s, size_t len) - { - int ret = 0; - -- switch (hash) -+ switch (msg) - { - case 0: - default: -diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c -index f9e61b8..4db94b6 100644 ---- a/menu/intl/menu_hash_es.c -+++ b/menu/intl/menu_hash_es.c -@@ -31,10 +31,9 @@ - /* DO NOT REMOVE THIS. If it causes build failure, it's because you saved the file as UTF-8. Read the above comment. */ - extern const char force_iso_8859_1[sizeof("¿áéíÍñóºú")==9+1 ? 1 : -1]; - --const char *menu_hash_to_str_es(uint32_t hash) -+const char *menu_hash_to_str_es(enum menu_hash_enums msg) - { -- -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_MENU_LINEAR_FILTER: - return "Filtro lineal del menú"; -@@ -992,7 +991,7 @@ const char *menu_hash_to_str_es(uint32_t hash) - return "null"; - } - --int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help_es(enum menu_hash_enums msg, char *s, size_t len) - { - uint32_t driver_hash = 0; - settings_t *settings = config_get_ptr(); -@@ -1001,7 +1000,7 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) - /* READ THE COMMENTS at the top of the file. */ - (void)sizeof(force_iso_8859_1); - -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: - { -diff --git a/menu/intl/menu_hash_fr.c b/menu/intl/menu_hash_fr.c -index 121619b..f7c454e 100644 ---- a/menu/intl/menu_hash_fr.c -+++ b/menu/intl/menu_hash_fr.c -@@ -27,9 +27,9 @@ - /* DO NOT REMOVE THIS. If it causes build failure, it's because you saved the file as UTF-8. Read the above comment. */ - extern const char force_iso_8859_1[sizeof("àéÉèêô")==6+1 ? 1 : -1]; - --const char *menu_hash_to_str_fr(uint32_t hash) -+const char *menu_hash_to_str_fr(enum menu_hash_enums msg) - { -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED: - return "Charger l'overlay préféré automatiquement"; -@@ -848,14 +848,14 @@ const char *menu_hash_to_str_fr(uint32_t hash) - return "null"; - } - --int menu_hash_get_help_fr(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help_fr(enum menu_hash_enums msg, char *s, size_t len) - { - int ret = 0; - /* If this one throws errors, stop sledgehammering square pegs into round holes and */ - /* READ THE COMMENTS at the top of the file. */ - (void)sizeof(force_iso_8859_1); - -- switch (hash) -+ switch (msg) - { - case 0: - default: -diff --git a/menu/intl/menu_hash_it.c b/menu/intl/menu_hash_it.c -index b19195c..5da75df 100644 ---- a/menu/intl/menu_hash_it.c -+++ b/menu/intl/menu_hash_it.c -@@ -31,10 +31,9 @@ - /* DO NOT REMOVE THIS. If it causes build failure, it's because you saved the file as UTF-8. Read the above comment. */ - extern const char force_iso_8859_1[sizeof("àèéìòù")==6+1 ? 1 : -1]; - --const char *menu_hash_to_str_it(uint32_t hash) -+const char *menu_hash_to_str_it(enum menu_hash_enums msg) - { -- -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_INPUT_ICADE_ENABLE: - return "Abilita mappatura gamepad tastiera"; -@@ -984,7 +983,7 @@ const char *menu_hash_to_str_it(uint32_t hash) - return "null"; - } - --int menu_hash_get_help_it(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help_it(enum menu_hash_enums msg, char *s, size_t len) - { - uint32_t driver_hash = 0; - settings_t *settings = config_get_ptr(); -@@ -993,7 +992,7 @@ int menu_hash_get_help_it(uint32_t hash, char *s, size_t len) - /* READ THE COMMENTS at the top of the file. */ - (void)sizeof(force_iso_8859_1); - -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: - { -diff --git a/menu/intl/menu_hash_nl.c b/menu/intl/menu_hash_nl.c -index e12e823..18b3b6a 100644 ---- a/menu/intl/menu_hash_nl.c -+++ b/menu/intl/menu_hash_nl.c -@@ -20,9 +20,9 @@ - - #include "../menu_hash.h" - --const char *menu_hash_to_str_nl(uint32_t hash) -+const char *menu_hash_to_str_nl(enum menu_hash_enums msg) - { -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_HELP_SCANNING_CONTENT: - return "Scannen naar Content"; -@@ -885,11 +885,11 @@ const char *menu_hash_to_str_nl(uint32_t hash) - return "null"; - } - --int menu_hash_get_help_nl(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help_nl(enum menu_hash_enums msg, char *s, size_t len) - { - int ret = 0; - -- switch (hash) -+ switch (msg) - { - case 0: - default: -diff --git a/menu/intl/menu_hash_pl.c b/menu/intl/menu_hash_pl.c -index f325d5b..6ad8050 100644 ---- a/menu/intl/menu_hash_pl.c -+++ b/menu/intl/menu_hash_pl.c -@@ -26,9 +26,9 @@ - * (e.g. German "Umlauts" and Portugese diacritics). - */ - --const char *menu_hash_to_str_pl(uint32_t hash) -+const char *menu_hash_to_str_pl(enum menu_hash_enums msg) - { -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED: - return "Automatycznie wczytaj preferowan± nak³adkê"; -@@ -855,11 +855,11 @@ const char *menu_hash_to_str_pl(uint32_t hash) - return "null"; - } - --int menu_hash_get_help_pl(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help_pl(enum menu_hash_enums msg, char *s, size_t len) - { - int ret = 0; - -- switch (hash) -+ switch (msg) - { - case 0: - default: -diff --git a/menu/intl/menu_hash_pt.c b/menu/intl/menu_hash_pt.c -index 18f6c9b..3066d06 100644 ---- a/menu/intl/menu_hash_pt.c -+++ b/menu/intl/menu_hash_pt.c -@@ -31,9 +31,9 @@ - /* DO NOT REMOVE THIS. If it causes build failure, it's because you saved the file as UTF-8. Read the above comment. */ - extern const char force_iso_8859_1[sizeof("áÁâãçéêíÍóõú")==12+1 ? 1 : -1]; - --const char *menu_hash_to_str_pt(uint32_t hash) -+const char *menu_hash_to_str_pt(enum menu_hash_enums msg) - { -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_START_NET_RETROPAD: - return "Iniciar RetroPad Remoto"; -@@ -856,7 +856,7 @@ const char *menu_hash_to_str_pt(uint32_t hash) - return "null"; - } - --int menu_hash_get_help_pt(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help_pt(enum menu_hash_enums msg, char *s, size_t len) - { - uint32_t driver_hash = 0; - settings_t *settings = config_get_ptr(); -@@ -864,7 +864,7 @@ int menu_hash_get_help_pt(uint32_t hash, char *s, size_t len) - /* If this one throws errors, stop sledgehammering square pegs into round holes and */ - /* READ THE COMMENTS at the top of the file. */ (void)sizeof(force_iso_8859_1); - -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_INPUT_DRIVER: - driver_hash = menu_hash_calculate(settings->input.driver); -diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c -index b9b7990..c593ef7 100644 ---- a/menu/intl/menu_hash_us.c -+++ b/menu/intl/menu_hash_us.c -@@ -22,9 +22,9 @@ - #include "../menu_hash.h" - #include "../../configuration.h" - --static const char *menu_hash_to_str_us_label(uint32_t hash) -+static const char *menu_hash_to_str_us_label(enum menu_hash_enums msg) - { -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_MENU_LINEAR_FILTER: - return "menu_linear_filter"; -@@ -751,14 +751,14 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) - return "null"; - } - --const char *menu_hash_to_str_us(uint32_t hash) -+const char *menu_hash_to_str_us(enum menu_hash_enums msg) - { -- const char *ret = menu_hash_to_str_us_label(hash); -+ const char *ret = menu_hash_to_str_us_label(msg); - - if (ret && !string_is_equal(ret, "null")) - return ret; - -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_START_NET_RETROPAD: - return "Start Remote RetroPad"; -@@ -1749,12 +1749,12 @@ const char *menu_hash_to_str_us(uint32_t hash) - return "null"; - } - --int menu_hash_get_help_us(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help_us(enum menu_hash_enums msg, char *s, size_t len) - { - uint32_t driver_hash = 0; - settings_t *settings = config_get_ptr(); - -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: - { -diff --git a/menu/intl/menu_hash_uspseudo.c b/menu/intl/menu_hash_uspseudo.c -index 09f971c..71b4f7a 100644 ---- a/menu/intl/menu_hash_uspseudo.c -+++ b/menu/intl/menu_hash_uspseudo.c -@@ -23,9 +23,9 @@ - #include "../menu_hash.h" - #include "../../configuration.h" - --static const char *menu_hash_to_str_us_label(uint32_t hash) -+static const char *menu_hash_to_str_us_label(enum menu_hash_enums msg) - { -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_START_CORE: - return "start_core"; -@@ -723,14 +723,14 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) - return "null"; - } - --const char *menu_hash_to_str_us(uint32_t hash) -+const char *menu_hash_to_str_us(enum menu_hash_enums msg) - { -- const char *ret = menu_hash_to_str_us_label(hash); -+ const char *ret = menu_hash_to_str_us_label(msg); - - if (ret && !string_is_equal(ret, "null")) - return ret; - -- switch (hash) -+ switch (msg) - { - case MENU_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL: - return "Tëst unoffiçial"; -diff --git a/menu/menu_hash.c b/menu/menu_hash.c -index 8c7ed37..c645f63 100644 ---- a/menu/menu_hash.c -+++ b/menu/menu_hash.c -@@ -23,7 +23,7 @@ - - #include "../configuration.h" - --const char *menu_hash_to_str(uint32_t hash) -+const char *menu_hash_to_str(enum menu_hash_enums msg) - { - const char *ret = NULL; - settings_t *settings = config_get_ptr(); -@@ -35,28 +35,28 @@ const char *menu_hash_to_str(uint32_t hash) - switch (settings->user_language) - { - case RETRO_LANGUAGE_FRENCH: -- ret = menu_hash_to_str_fr(hash); -+ ret = menu_hash_to_str_fr(msg); - break; - case RETRO_LANGUAGE_GERMAN: -- ret = menu_hash_to_str_de(hash); -+ ret = menu_hash_to_str_de(msg); - break; - case RETRO_LANGUAGE_SPANISH: -- ret = menu_hash_to_str_es(hash); -+ ret = menu_hash_to_str_es(msg); - break; - case RETRO_LANGUAGE_ITALIAN: -- ret = menu_hash_to_str_it(hash); -+ ret = menu_hash_to_str_it(msg); - break; - case RETRO_LANGUAGE_PORTUGUESE: -- ret = menu_hash_to_str_pt(hash); -+ ret = menu_hash_to_str_pt(msg); - break; - case RETRO_LANGUAGE_DUTCH: -- ret = menu_hash_to_str_nl(hash); -+ ret = menu_hash_to_str_nl(msg); - break; - case RETRO_LANGUAGE_ESPERANTO: -- ret = menu_hash_to_str_eo(hash); -+ ret = menu_hash_to_str_eo(msg); - break; - case RETRO_LANGUAGE_POLISH: -- ret = menu_hash_to_str_pl(hash); -+ ret = menu_hash_to_str_pl(msg); - break; - default: - break; -@@ -66,10 +66,10 @@ const char *menu_hash_to_str(uint32_t hash) - if (ret && !string_is_equal(ret, "null")) - return ret; - -- return menu_hash_to_str_us(hash); -+ return menu_hash_to_str_us(msg); - } - --int menu_hash_get_help(uint32_t hash, char *s, size_t len) -+int menu_hash_get_help(enum menu_hash_enums msg, char *s, size_t len) - { - int ret = -1; - settings_t *settings = config_get_ptr(); -@@ -81,28 +81,28 @@ int menu_hash_get_help(uint32_t hash, char *s, size_t len) - switch (settings->user_language) - { - case RETRO_LANGUAGE_FRENCH: -- ret = menu_hash_get_help_fr(hash, s, len); -+ ret = menu_hash_get_help_fr(msg, s, len); - break; - case RETRO_LANGUAGE_GERMAN: -- ret = menu_hash_get_help_de(hash, s, len); -+ ret = menu_hash_get_help_de(msg, s, len); - break; - case RETRO_LANGUAGE_SPANISH: -- ret = menu_hash_get_help_es(hash, s, len); -+ ret = menu_hash_get_help_es(msg, s, len); - break; - case RETRO_LANGUAGE_ITALIAN: -- ret = menu_hash_get_help_it(hash, s, len); -+ ret = menu_hash_get_help_it(msg, s, len); - break; - case RETRO_LANGUAGE_PORTUGUESE: -- ret = menu_hash_get_help_pt(hash, s, len); -+ ret = menu_hash_get_help_pt(msg, s, len); - break; - case RETRO_LANGUAGE_DUTCH: -- ret = menu_hash_get_help_nl(hash, s, len); -+ ret = menu_hash_get_help_nl(msg, s, len); - break; - case RETRO_LANGUAGE_ESPERANTO: -- ret = menu_hash_get_help_eo(hash, s, len); -+ ret = menu_hash_get_help_eo(msg, s, len); - break; - case RETRO_LANGUAGE_POLISH: -- ret = menu_hash_get_help_pl(hash, s, len); -+ ret = menu_hash_get_help_pl(msg, s, len); - break; - default: - break; -@@ -112,7 +112,7 @@ int menu_hash_get_help(uint32_t hash, char *s, size_t len) - if (ret == 0) - return ret; - -- return menu_hash_get_help_us(hash, s, len); -+ return menu_hash_get_help_us(msg, s, len); - } - - uint32_t menu_hash_calculate(const char *s) -diff --git a/menu/menu_hash.h b/menu/menu_hash.h -index 2080248..e8e5c61 100644 ---- a/menu/menu_hash.h -+++ b/menu/menu_hash.h -@@ -20,1191 +20,1193 @@ - - RETRO_BEGIN_DECLS - --#define MENU_LABEL_START_NET_RETROPAD 0xf2ae670dU --#define MENU_LABEL_VALUE_START_NET_RETROPAD 0xad11a6a0U -+enum menu_hash_enums -+{ -+ MENU_LABEL_UNKNOWN = 0, -+ MENU_LABEL_START_NET_RETROPAD, -+ MENU_LABEL_VALUE_START_NET_RETROPAD, - --#define CB_THUMBNAILS_UPDATER_DOWNLOAD 0xf4ee156bU -+ CB_THUMBNAILS_UPDATER_DOWNLOAD, - --#define MENU_LABEL_THUMBNAILS_UPDATER_LIST 0xff70176bU --#define MENU_LABEL_VALUE_THUMBNAILS_UPDATER_LIST 0x75028b11U -+ MENU_LABEL_THUMBNAILS_UPDATER_LIST, -+ MENU_LABEL_VALUE_THUMBNAILS_UPDATER_LIST, - --#define MENU_LABEL_DEFERRED_THUMBNAILS_UPDATER_LIST 0x364dfa2bU -+ MENU_LABEL_DEFERRED_THUMBNAILS_UPDATER_LIST, - --#define MENU_LABEL_MENU_LINEAR_FILTER 0x5fe9128cU --#define MENU_LABEL_VALUE_MENU_LINEAR_FILTER 0x192de208U -+ MENU_LABEL_MENU_LINEAR_FILTER, -+ MENU_LABEL_VALUE_MENU_LINEAR_FILTER, - --#define MENU_LABEL_MENU_THROTTLE_FRAMERATE 0x9a8681c5U --#define MENU_LABEL_VALUE_MENU_THROTTLE_FRAMERATE 0x285bb667U -+ MENU_LABEL_MENU_THROTTLE_FRAMERATE, -+ MENU_LABEL_VALUE_MENU_THROTTLE_FRAMERATE, - --#define MENU_LABEL_INPUT_POLL_TYPE_BEHAVIOR 0x8360107bU --#define MENU_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR 0xaa23fc1eU -+ MENU_LABEL_INPUT_POLL_TYPE_BEHAVIOR, -+ MENU_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR, - --#define MENU_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT 0xe5f4b599U -+ MENU_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT, - --#define MENU_LABEL_UI_COMPANION_ENABLE 0xb2d7a20cU --#define MENU_LABEL_VALUE_UI_COMPANION_ENABLE 0xee4933ceU -+ MENU_LABEL_UI_COMPANION_ENABLE, -+ MENU_LABEL_VALUE_UI_COMPANION_ENABLE, - --#define MENU_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE 0xf71b3b16U --#define MENU_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE 0xa4d69592U -+ MENU_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE, -+ MENU_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE, - --#define MENU_LABEL_CHEEVOS_TEST_UNOFFICIAL 0xa1ae28f0U --#define MENU_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL 0x0698e665U -+ MENU_LABEL_CHEEVOS_TEST_UNOFFICIAL, -+ MENU_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL, - --#define MENU_LABEL_VALUE_ENABLE 0xb0d05f8cU -+ MENU_LABEL_VALUE_ENABLE, - --#define MENU_LABEL_VALUE_CHEEVOS_SETTINGS 0x1fe3be93U -+ MENU_LABEL_VALUE_CHEEVOS_SETTINGS, - --#define MENU_LABEL_CHEEVOS_ENABLE 0x2748f998U -+ MENU_LABEL_CHEEVOS_ENABLE, - --#define MENU_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE 0x507c52f3U --#define MENU_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE 0x3665cbb0U -+ MENU_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, -+ MENU_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, - --#define MENU_LABEL_CHEEVOS_DESCRIPTION 0x7e00e0f5U -+ MENU_LABEL_CHEEVOS_DESCRIPTION, - --#define MENU_LABEL_VALUE_CHEEVOS_DESCRIPTION 0xab3975d6U -+ MENU_LABEL_VALUE_CHEEVOS_DESCRIPTION, - --#define MENU_LABEL_VALUE_STATE_SLOT 0xa1dec768U -+ MENU_LABEL_VALUE_STATE_SLOT, - --#define MENU_LABEL_STATE_SLOT 0x27b67f67U -+ MENU_LABEL_STATE_SLOT, - --#define MENU_LABEL_INPUT_HOTKEY_BINDS_BEGIN 0x5a56139bU -+ MENU_LABEL_INPUT_HOTKEY_BINDS_BEGIN, - --#define MENU_LABEL_INPUT_SETTINGS 0x78b4a7c5U -+ MENU_LABEL_INPUT_SETTINGS, - --#define MENU_LABEL_PLAYLIST_SETTINGS_BEGIN 0x80a8d2cbU --#define MENU_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST 0x9518e0c7U -+ MENU_LABEL_PLAYLIST_SETTINGS_BEGIN, -+ MENU_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST, - --#define MENU_LABEL_INPUT_SETTINGS_BEGIN 0xddee308bU -+ MENU_LABEL_INPUT_SETTINGS_BEGIN, -+ MENU_LABEL_DEFERRED_INPUT_SETTINGS_LIST, - --#define MENU_LABEL_DEFERRED_INPUT_SETTINGS_LIST 0x050bec60U -+ MENU_LABEL_DEFERRED_USER_BINDS_LIST, - --#define MENU_LABEL_DEFERRED_USER_BINDS_LIST 0x28c5750eU -+ MENU_LABEL_CHEEVOS_USERNAME, -+ MENU_LABEL_CHEEVOS_PASSWORD, - --#define MENU_LABEL_CHEEVOS_USERNAME 0x6ce57e31U --#define MENU_LABEL_CHEEVOS_PASSWORD 0x86c38d24U -+ MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS, -+ MENU_LABEL_ACCOUNTS_CHEEVOS_PASSWORD, -+ MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD, - --#define MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS 0xe0b53ce3U -+ MENU_LABEL_ACCOUNTS_CHEEVOS_USERNAME, -+ MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME, - --#define MENU_LABEL_ACCOUNTS_CHEEVOS_PASSWORD 0x45cf62e3U --#define MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD 0xe5a73d05U -+ MENU_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS, -+ MENU_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS, - --#define MENU_LABEL_ACCOUNTS_CHEEVOS_USERNAME 0x2bf153f0U --#define MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME 0xcbc92e12U -+ MENU_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST, -+ MENU_LABEL_DEFERRED_ACCOUNTS_LIST, -+ MENU_LABEL_ACCOUNTS_LIST, -+ MENU_LABEL_VALUE_ACCOUNTS_LIST, -+ MENU_LABEL_VALUE_ACCOUNTS_LIST_END, - --#define MENU_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS 0xe6b7c16cU --#define MENU_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS 0x7d247a6dU -+ MENU_LABEL_DEBUG_PANEL_ENABLE, -+ MENU_LABEL_VALUE_DEBUG_PANEL_ENABLE, - --#define MENU_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST 0x1322324cU --#define MENU_LABEL_DEFERRED_ACCOUNTS_LIST 0x3d2b8860U --#define MENU_LABEL_ACCOUNTS_LIST 0x774c15a0U --#define MENU_LABEL_VALUE_ACCOUNTS_LIST 0x86e551a1U --#define MENU_LABEL_VALUE_ACCOUNTS_LIST_END 0x3d559522U -+ MENU_LABEL_VALUE_MENU_CONTROLS_PROLOG, - --#define MENU_LABEL_DEBUG_PANEL_ENABLE 0xbad176a1U --#define MENU_LABEL_VALUE_DEBUG_PANEL_ENABLE 0x15042803U -+ MENU_LABEL_VALUE_HELP_WHAT_IS_A_CORE, -+ MENU_LABEL_HELP_WHAT_IS_A_CORE, - --#define MENU_LABEL_VALUE_MENU_CONTROLS_PROLOG 0x72674cdfU -+ MENU_LABEL_HELP_LOADING_CONTENT, -+ MENU_LABEL_VALUE_HELP_LOADING_CONTENT, - --#define MENU_LABEL_VALUE_HELP_WHAT_IS_A_CORE 0xf3b0f77eU --#define MENU_LABEL_HELP_WHAT_IS_A_CORE 0x83fcbc44U -+ MENU_LABEL_HELP_LIST, -+ MENU_LABEL_VALUE_HELP_LIST, - --#define MENU_LABEL_HELP_LOADING_CONTENT 0x231d8245U --#define MENU_LABEL_VALUE_HELP_LOADING_CONTENT 0x70bab027U -+ MENU_LABEL_VALUE_HELP_CONTROLS, -+ MENU_LABEL_HELP_CONTROLS, - --#define MENU_LABEL_HELP_LIST 0x006af669U --#define MENU_LABEL_VALUE_HELP_LIST 0x6c57426aU -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS, -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP, -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN, -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM, -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK, -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_START, -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO, -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU, -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT, -+ MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD, - --#define MENU_LABEL_VALUE_HELP_CONTROLS 0xe5c9f6a2U --#define MENU_LABEL_HELP_CONTROLS 0x04859221U -+ MENU_LABEL_VALUE_EXTRACTING_PLEASE_WAIT, - --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS 0x7c05810eU --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP 0x8c2f7b00U --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN 0x55f0f413U --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM 0x40e50edbU --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK 0xd834d89eU --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_START 0xe00df0fbU --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO 0xd838e6f9U --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU 0x98159c23U --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT 0xd83d6830U --#define MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD 0xe408c2ffU -+ MENU_LABEL_WELCOME_TO_RETROARCH, - --#define MENU_LABEL_VALUE_EXTRACTING_PLEASE_WAIT 0xec5a348bU -+ MENU_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE, -+ MENU_LABEL_DEFERRED_ARCHIVE_ACTION, -+ MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE, -+ MENU_LABEL_DEFERRED_ARCHIVE_OPEN, - --#define MENU_LABEL_WELCOME_TO_RETROARCH 0xbcff0b3cU -+ MENU_LABEL_VALUE_INPUT_BACK_AS_MENU_TOGGLE_ENABLE, -+ MENU_LABEL_INPUT_BACK_AS_MENU_TOGGLE_ENABLE, - --#define MENU_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE 0xdc9c0064U --#define MENU_LABEL_DEFERRED_ARCHIVE_ACTION 0x7faf0284U --#define MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE 0xd9452498U --#define MENU_LABEL_DEFERRED_ARCHIVE_OPEN 0xfa0938b8U -+ MENU_LABEL_INPUT_MENU_TOGGLE_GAMEPAD_COMBO, -+ MENU_LABEL_VALUE_INPUT_MENU_TOGGLE_GAMEPAD_COMBO, - --#define MENU_LABEL_VALUE_INPUT_BACK_AS_MENU_TOGGLE_ENABLE 0x1cf1e6a8U --#define MENU_LABEL_INPUT_BACK_AS_MENU_TOGGLE_ENABLE 0x60bacd04U -+ MENU_LABEL_INPUT_OVERLAY_HIDE_IN_MENU, -+ MENU_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, - --#define MENU_LABEL_INPUT_MENU_TOGGLE_GAMEPAD_COMBO 0xc5b7aa47U --#define MENU_LABEL_VALUE_INPUT_MENU_TOGGLE_GAMEPAD_COMBO 0x0dedea3bU -+ MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST, -+ MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST, - --#define MENU_LABEL_INPUT_OVERLAY_HIDE_IN_MENU 0xf09e230aU --#define MENU_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU 0x39b5bd0dU -+ MENU_LABEL_VALUE_UPDATE_CORE_INFO_FILES, -+ MENU_LABEL_UPDATE_CORE_INFO_FILES, - --#define MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST 0x39310fc8U --#define MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST 0xb4f82700U -+ MENU_VALUE_SEARCH, - --#define MENU_LABEL_VALUE_UPDATE_CORE_INFO_FILES 0xba274810U --#define MENU_LABEL_UPDATE_CORE_INFO_FILES 0x620d758dU -+ MENU_LABEL_DEFERRED_CORE_CONTENT_LIST, -+ MENU_LABEL_DEFERRED_LAKKA_LIST, - --#define MENU_VALUE_SEARCH 0xd0d5febbU -+ MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT, -+ MENU_LABEL_DOWNLOAD_CORE_CONTENT, - --#define MENU_LABEL_DEFERRED_CORE_CONTENT_LIST 0x76150c63U --#define MENU_LABEL_DEFERRED_LAKKA_LIST 0x3db437c4U -+ MENU_LABEL_SCAN_THIS_DIRECTORY, -+ MENU_LABEL_VALUE_SCAN_THIS_DIRECTORY, - --#define MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT 0xa8bb22d8U --#define MENU_LABEL_DOWNLOAD_CORE_CONTENT 0xc63b1d3fU -+ MENU_LABEL_SCAN_DIRECTORY, -+ MENU_LABEL_VALUE_SCAN_DIRECTORY, - --#define MENU_LABEL_SCAN_THIS_DIRECTORY 0x6921b775U --#define MENU_LABEL_VALUE_SCAN_THIS_DIRECTORY 0x2911e177U -+ MENU_LABEL_VALUE_SCAN_FILE, -+ MENU_LABEL_SCAN_FILE, - --#define MENU_LABEL_SCAN_DIRECTORY 0x57de303eU --#define MENU_LABEL_VALUE_SCAN_DIRECTORY 0x61af24dfU -+ MENU_LABEL_ADD_CONTENT_LIST, -+ MENU_LABEL_VALUE_ADD_CONTENT_LIST, - --#define MENU_LABEL_VALUE_SCAN_FILE 0x41be3aeaU --#define MENU_LABEL_SCAN_FILE 0xd5d1eee9U -+ MENU_LABEL_UPDATE_AUTOCONFIG_PROFILES_HID, -+ MENU_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES_HID, - --#define MENU_LABEL_ADD_CONTENT_LIST 0x046f4668U --#define MENU_LABEL_VALUE_ADD_CONTENT_LIST 0x955da2c9U -+ MENU_VALUE_DONT_CARE, -+ MENU_VALUE_LINEAR, -+ MENU_VALUE_NEAREST, -+ MENU_VALUE_UNKNOWN, -+ MENU_VALUE_USER, -+ MENU_VALUE_CHEAT, -+ MENU_VALUE_SHADER, -+ MENU_VALUE_DIRECTORY_CONTENT, -+ MENU_VALUE_DIRECTORY_NONE, -+ MENU_VALUE_DIRECTORY_DEFAULT, -+ MENU_VALUE_NOT_AVAILABLE, -+ MENU_VALUE_ASK_ARCHIVE, - --#define MENU_LABEL_UPDATE_AUTOCONFIG_PROFILES_HID 0x1e94ee4dU --#define MENU_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES_HID 0x524f4590U -+ MENU_LABEL_UPDATE_ASSETS, -+ MENU_LABEL_VALUE_UPDATE_ASSETS, - --#define MENU_VALUE_DONT_CARE 0x19da07bcU --#define MENU_VALUE_LINEAR 0xc0d12dc0U --#define MENU_VALUE_NEAREST 0x6ab2b0b7U --#define MENU_VALUE_UNKNOWN 0x9b3bb635U --#define MENU_VALUE_USER 0x7c8da264U --#define MENU_VALUE_CHEAT 0x0cf62beaU --#define MENU_VALUE_SHADER 0xd10c0cfcU --#define MENU_VALUE_DIRECTORY_CONTENT 0x89a45bd9U --#define MENU_VALUE_DIRECTORY_NONE 0x9996c10fU --#define MENU_VALUE_DIRECTORY_DEFAULT 0xdcc3a2e4U --#define MENU_VALUE_NOT_AVAILABLE 0x0b880503U --#define MENU_VALUE_ASK_ARCHIVE 0x0b87d6a4U -+ MENU_LABEL_UPDATE_LAKKA, -+ MENU_LABEL_VALUE_UPDATE_LAKKA, - --#define MENU_LABEL_UPDATE_ASSETS 0x37fa42daU --#define MENU_LABEL_VALUE_UPDATE_ASSETS 0x0fdf0b1bU -+ MENU_LABEL_UPDATE_CHEATS, -+ MENU_LABEL_VALUE_UPDATE_CHEATS, - --#define MENU_LABEL_UPDATE_LAKKA 0x19b51eebU --#define MENU_LABEL_VALUE_UPDATE_LAKKA 0x6611630cU -+ MENU_LABEL_UPDATE_AUTOCONFIG_PROFILES, -+ MENU_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES, - --#define MENU_LABEL_UPDATE_CHEATS 0x3bd5c83fU --#define MENU_LABEL_VALUE_UPDATE_CHEATS 0x13ba9080U -+ MENU_LABEL_UPDATE_DATABASES, -+ MENU_LABEL_VALUE_UPDATE_DATABASES, - --#define MENU_LABEL_UPDATE_AUTOCONFIG_PROFILES 0xddfcf979U --#define MENU_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES 0x6ddaf7fbU -+ MENU_LABEL_UPDATE_OVERLAYS, -+ MENU_LABEL_VALUE_UPDATE_OVERLAYS, - --#define MENU_LABEL_UPDATE_DATABASES 0x158ee0cfU --#define MENU_LABEL_VALUE_UPDATE_DATABASES 0x00c24d70U -+ MENU_LABEL_UPDATE_CG_SHADERS, -+ MENU_LABEL_VALUE_UPDATE_CG_SHADERS, - --#define MENU_LABEL_UPDATE_OVERLAYS 0xd25d221cU --#define MENU_LABEL_VALUE_UPDATE_OVERLAYS 0x3694fe9dU -+ MENU_LABEL_UPDATE_GLSL_SHADERS, -+ MENU_LABEL_VALUE_UPDATE_GLSL_SHADERS, -+ -+ MENU_LABEL_INFORMATION_LIST, -+ MENU_LABEL_VALUE_INFORMATION_LIST, -+ -+ MENU_LABEL_USE_BUILTIN_PLAYER, -+ MENU_LABEL_VALUE_USE_BUILTIN_PLAYER, -+ -+ MENU_LABEL_CONTENT_SETTINGS, -+ MENU_LABEL_VALUE_CONTENT_SETTINGS, -+ -+ MENU_LABEL_LOAD_CONTENT_LIST, -+ MENU_LABEL_VALUE_LOAD_CONTENT_LIST, -+ -+ MENU_LABEL_NO_SETTINGS_FOUND, -+ MENU_LABEL_VALUE_NO_SETTINGS_FOUND, -+ MENU_LABEL_VALUE_NO_PERFORMANCE_COUNTERS, -+ -+ MENU_LABEL_VIDEO_FONT_ENABLE, -+ MENU_LABEL_VALUE_VIDEO_FONT_ENABLE, -+ MENU_LABEL_VIDEO_FONT_PATH, -+ MENU_LABEL_VALUE_VIDEO_FONT_PATH, -+ MENU_LABEL_VIDEO_FONT_SIZE, -+ MENU_LABEL_VALUE_VIDEO_FONT_SIZE, -+ MENU_LABEL_VIDEO_MESSAGE_POS_X, -+ MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_X, -+ MENU_LABEL_VIDEO_MESSAGE_POS_Y, -+ MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_Y, -+ -+ MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST, -+ MENU_LABEL_INPUT_HOTKEY_BINDS, -+ MENU_LABEL_VALUE_INPUT_HOTKEY_BINDS, -+ -+ MENU_LABEL_VALUE_FRAME_THROTTLE_SETTINGS, -+ -+ MENU_LABEL_FRAME_THROTTLE_ENABLE, -+ MENU_LABEL_VALUE_FRAME_THROTTLE_ENABLE, -+ -+ MENU_LABEL_VIDEO_FILTER_FLICKER, -+ MENU_LABEL_VALUE_VIDEO_FILTER_FLICKER, -+ -+ MENU_LABEL_VIDEO_SOFT_FILTER, -+ MENU_LABEL_VALUE_VIDEO_SOFT_FILTER, -+ -+ MENU_LABEL_CORE_ENABLE, -+ MENU_LABEL_VALUE_CORE_ENABLE, -+ -+ MENU_LABEL_MOUSE_ENABLE, -+ MENU_LABEL_VALUE_MOUSE_ENABLE, -+ -+ MENU_LABEL_SHOW_ADVANCED_SETTINGS, -+ MENU_LABEL_VALUE_SHOW_ADVANCED_SETTINGS, -+ -+ MENU_LABEL_POINTER_ENABLE, -+ MENU_LABEL_VALUE_POINTER_ENABLE, -+ -+ MENU_LABEL_COLLAPSE_SUBGROUPS_ENABLE, -+ MENU_LABEL_VALUE_COLLAPSE_SUBGROUPS_ENABLE, -+ -+ MENU_LABEL_RESET, -+ MENU_LABEL_SLOWMOTION, -+ MENU_LABEL_HOLD_FAST_FORWARD, -+ MENU_LABEL_CHEAT_TOGGLE, -+ MENU_LABEL_PAUSE_TOGGLE, -+ -+ MENU_LABEL_PAUSE_LIBRETRO, -+ MENU_LABEL_VALUE_PAUSE_LIBRETRO, -+ -+ MENU_LABEL_VALUE_DIRECTORY_NOT_FOUND, -+ MENU_LABEL_VALUE_NO_ITEMS, -+ -+ MENU_LABEL_UI_MENUBAR_ENABLE, -+ MENU_LABEL_VALUE_UI_MENUBAR_ENABLE, -+ -+ MENU_LABEL_UI_COMPANION_START_ON_BOOT, -+ MENU_LABEL_VALUE_UI_COMPANION_START_ON_BOOT, -+ -+ MENU_LABEL_ARCHIVE_MODE, -+ MENU_LABEL_VALUE_ARCHIVE_MODE, -+ MENU_LABEL_VALUE_SHADER_OPTIONS, -+ MENU_LABEL_VALUE_USE_THIS_DIRECTORY, -+ MENU_LABEL_USE_THIS_DIRECTORY, -+ MENU_LABEL_VALUE_CORE_OPTIONS, -+ MENU_LABEL_VALUE_NO_SHADER_PARAMETERS, -+ MENU_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE, -+ MENU_LABEL_VALUE_NO_CORES_AVAILABLE, -+ MENU_LABEL_SAVE_STATE, -+ MENU_LABEL_VALUE_LOAD_STATE, -+ MENU_LABEL_VALUE_UNDO_LOAD_STATE, -+ MENU_LABEL_VALUE_UNDO_SAVE_STATE, -+ MENU_LABEL_VALUE_SAVE_STATE, -+ MENU_LABEL_LOAD_STATE, -+ MENU_LABEL_UNDO_LOAD_STATE, -+ MENU_LABEL_UNDO_SAVE_STATE, -+ MENU_LABEL_REWIND, -+ MENU_LABEL_NETPLAY_FLIP_PLAYERS, -+ MENU_LABEL_CHEAT_INDEX_MINUS, -+ MENU_LABEL_CHEAT_INDEX_PLUS, -+ MENU_LABEL_AUDIO_ENABLE, -+ MENU_LABEL_VALUE_AUDIO_ENABLE, -+ MENU_LABEL_SCREENSHOT_DIRECTORY, -+ MENU_LABEL_SHADER_NEXT, -+ MENU_LABEL_SHADER_PREV, -+ MENU_LABEL_FRAME_ADVANCE, -+ MENU_LABEL_FPS_SHOW, -+ MENU_LABEL_VALUE_FPS_SHOW, -+ MENU_LABEL_MOVIE_RECORD_TOGGLE, -+ MENU_LABEL_L_X_PLUS, -+ MENU_LABEL_L_X_MINUS, -+ MENU_LABEL_L_Y_PLUS, -+ MENU_LABEL_L_Y_MINUS, -+ MENU_LABEL_R_X_PLUS, -+ MENU_LABEL_R_X_MINUS, -+ MENU_LABEL_R_Y_MINUS, -+ MENU_LABEL_R_Y_PLUS, -+ MENU_LABEL_VIDEO_SWAP_INTERVAL, -+ MENU_LABEL_VALUE_VIDEO_SWAP_INTERVAL, -+ MENU_LABEL_VIDEO_GPU_SCREENSHOT, -+ MENU_LABEL_VALUE_VIDEO_GPU_SCREENSHOT, -+ MENU_LABEL_PAUSE_NONACTIVE, -+ MENU_LABEL_VALUE_PAUSE_NONACTIVE, -+ MENU_LABEL_BLOCK_SRAM_OVERWRITE, -+ MENU_LABEL_VALUE_BLOCK_SRAM_OVERWRITE, -+ MENU_LABEL_VIDEO_FULLSCREEN, -+ MENU_LABEL_VALUE_VIDEO_FULLSCREEN, -+ MENU_LABEL_CORE_SPECIFIC_CONFIG, -+ MENU_LABEL_VALUE_CORE_SPECIFIC_CONFIG, -+ MENU_LABEL_GAME_SPECIFIC_OPTIONS, -+ MENU_LABEL_VALUE_GAME_SPECIFIC_OPTIONS, -+ MENU_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE, -+ MENU_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE, -+ MENU_LABEL_AUTO_OVERRIDES_ENABLE, -+ MENU_LABEL_VALUE_AUTO_OVERRIDES_ENABLE, -+ MENU_LABEL_AUTO_REMAPS_ENABLE, -+ MENU_LABEL_VALUE_AUTO_REMAPS_ENABLE, -+ MENU_LABEL_RGUI_SHOW_START_SCREEN, -+ MENU_LABEL_VALUE_RGUI_SHOW_START_SCREEN, -+ MENU_LABEL_VIDEO_BLACK_FRAME_INSERTION, -+ MENU_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, -+ MENU_LABEL_VIDEO_HARD_SYNC_FRAMES, -+ MENU_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES, -+ MENU_LABEL_VIDEO_FRAME_DELAY, -+ MENU_LABEL_VALUE_VIDEO_FRAME_DELAY, -+ MENU_LABEL_SCREENSHOT, -+ MENU_LABEL_REWIND_GRANULARITY, -+ MENU_LABEL_VALUE_REWIND_GRANULARITY, -+ MENU_LABEL_VALUE_VIDEO_ROTATION, -+ MENU_LABEL_THREADED_DATA_RUNLOOP_ENABLE, -+ MENU_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE, -+ MENU_LABEL_VIDEO_THREADED, -+ MENU_LABEL_VALUE_VIDEO_THREADED, -+ MENU_LABEL_VALUE_RUN, -+ MENU_LABEL_SCREEN_RESOLUTION, -+ MENU_LABEL_VALUE_SCREEN_RESOLUTION, -+ -+ MENU_LABEL_TITLE_COLOR, -+ MENU_LABEL_VALUE_TITLE_COLOR, -+ MENU_LABEL_TIMEDATE_ENABLE, -+ MENU_LABEL_VALUE_TIMEDATE_ENABLE, -+ MENU_LABEL_ENTRY_NORMAL_COLOR, -+ MENU_LABEL_VALUE_ENTRY_NORMAL_COLOR, -+ MENU_LABEL_ENTRY_HOVER_COLOR, -+ MENU_LABEL_VALUE_ENTRY_HOVER_COLOR, -+ MENU_LABEL_AUDIO_SYNC, -+ MENU_LABEL_VALUE_AUDIO_SYNC, -+ MENU_LABEL_VIDEO_VSYNC, -+ MENU_LABEL_VALUE_VIDEO_VSYNC, -+ MENU_LABEL_VIDEO_HARD_SYNC, -+ MENU_LABEL_VALUE_VIDEO_HARD_SYNC, -+ MENU_LABEL_SAVESTATE_AUTO_SAVE, -+ MENU_LABEL_SAVESTATE_AUTO_LOAD, -+ MENU_LABEL_SAVESTATE_AUTO_INDEX, -+ MENU_LABEL_VALUE_SAVESTATE_AUTO_INDEX, -+ MENU_LABEL_VALUE_SAVESTATE_AUTO_SAVE, -+ MENU_LABEL_VALUE_SAVESTATE_AUTO_LOAD, -+ MENU_LABEL_SYSTEM_DIRECTORY, -+ MENU_LABEL_VIDEO_DISABLE_COMPOSITION, -+ MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION, -+ MENU_LABEL_SUSPEND_SCREENSAVER_ENABLE, -+ MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE, -+ MENU_LABEL_DPI_OVERRIDE_ENABLE, -+ MENU_LABEL_VALUE_DPI_OVERRIDE_ENABLE, -+ MENU_LABEL_DPI_OVERRIDE_VALUE, -+ MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE, -+ MENU_LABEL_XMB_SCALE_FACTOR, -+ MENU_LABEL_VALUE_XMB_SCALE_FACTOR, -+ MENU_LABEL_XMB_ALPHA_FACTOR, -+ MENU_LABEL_VALUE_XMB_ALPHA_FACTOR, -+ MENU_LABEL_XMB_FONT, -+ MENU_LABEL_VALUE_XMB_FONT, -+ MENU_LABEL_XMB_THEME, -+ MENU_LABEL_VALUE_XMB_THEME, -+ MENU_LABEL_XMB_GRADIENT, -+ MENU_LABEL_VALUE_XMB_GRADIENT, -+ MENU_LABEL_XMB_SHADOWS_ENABLE, -+ MENU_LABEL_VALUE_XMB_SHADOWS_ENABLE, -+ MENU_LABEL_XMB_RIBBON_ENABLE, -+ MENU_LABEL_VALUE_XMB_RIBBON_ENABLE, -+ MENU_LABEL_VOLUME_UP, -+ MENU_LABEL_VOLUME_DOWN, -+ MENU_LABEL_LOG_VERBOSITY, -+ MENU_LABEL_VALUE_LOG_VERBOSITY, -+ MENU_LABEL_OVERLAY_NEXT, -+ MENU_LABEL_AUDIO_VOLUME, -+ MENU_LABEL_VALUE_AUDIO_VOLUME, -+ MENU_LABEL_AUDIO_LATENCY, -+ MENU_LABEL_VALUE_AUDIO_LATENCY, -+ MENU_LABEL_NETPLAY_ENABLE, -+ MENU_LABEL_VALUE_NETPLAY_ENABLE, -+ MENU_LABEL_SSH_ENABLE, -+ MENU_LABEL_VALUE_SSH_ENABLE, -+ MENU_LABEL_SAMBA_ENABLE, -+ MENU_LABEL_VALUE_SAMBA_ENABLE, -+ MENU_LABEL_BLUETOOTH_ENABLE, -+ MENU_LABEL_VALUE_BLUETOOTH_ENABLE, -+ MENU_LABEL_NETPLAY_CLIENT_SWAP_INPUT, -+ MENU_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT, -+ MENU_LABEL_NETPLAY_DELAY_FRAMES, -+ MENU_LABEL_VALUE_NETPLAY_DELAY_FRAMES, -+ MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE, -+ MENU_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE, -+ MENU_LABEL_NETPLAY_TCP_UDP_PORT, -+ MENU_LABEL_VALUE_NETPLAY_TCP_UDP_PORT, -+ MENU_LABEL_SORT_SAVEFILES_ENABLE, -+ MENU_LABEL_VALUE_SORT_SAVEFILES_ENABLE, -+ MENU_LABEL_SORT_SAVESTATES_ENABLE, -+ MENU_LABEL_VALUE_SORT_SAVESTATES_ENABLE, -+ MENU_LABEL_NETPLAY_IP_ADDRESS, -+ MENU_LABEL_VALUE_NETPLAY_IP_ADDRESS, -+ MENU_LABEL_NETPLAY_MODE, -+ MENU_LABEL_VALUE_NETPLAY_MODE, -+ MENU_LABEL_PERFCNT_ENABLE, -+ MENU_LABEL_VALUE_PERFCNT_ENABLE, -+ MENU_LABEL_OVERLAY_SCALE, -+ MENU_LABEL_VALUE_OVERLAY_SCALE, -+ MENU_LABEL_KEYBOARD_OVERLAY_PRESET, -+ MENU_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET, -+ MENU_LABEL_OVERLAY_PRESET, -+ MENU_LABEL_VALUE_OVERLAY_PRESET, -+ MENU_LABEL_OVERLAY_OPACITY, -+ MENU_LABEL_VALUE_OVERLAY_OPACITY, -+ -+ MENU_LABEL_MENU_WALLPAPER, -+ MENU_LABEL_VALUE_MENU_WALLPAPER, -+ MENU_LABEL_DYNAMIC_WALLPAPER, -+ MENU_LABEL_VALUE_DYNAMIC_WALLPAPER, -+ MENU_LABEL_THUMBNAILS, -+ MENU_LABEL_VALUE_THUMBNAILS, -+ -+ MENU_LABEL_FASTFORWARD_RATIO, -+ MENU_LABEL_VALUE_FASTFORWARD_RATIO, -+ MENU_LABEL_VIDEO_MONITOR_INDEX, -+ MENU_LABEL_VALUE_VIDEO_MONITOR_INDEX, -+ MENU_LABEL_INPUT_OVERLAY_ENABLE, -+ MENU_LABEL_VALUE_INPUT_OVERLAY_ENABLE, -+ MENU_LABEL_INPUT_OSK_OVERLAY_ENABLE, -+ MENU_LABEL_VALUE_INPUT_OSK_OVERLAY_ENABLE, -+ MENU_LABEL_VIDEO_REFRESH_RATE_AUTO, -+ MENU_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO, -+ MENU_LABEL_VIDEO_REFRESH_RATE, -+ MENU_LABEL_VALUE_VIDEO_REFRESH_RATE, -+ MENU_LABEL_VIDEO_WINDOWED_FULLSCREEN, -+ MENU_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, -+ MENU_LABEL_VIDEO_FORCE_SRGB_DISABLE, -+ MENU_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE, -+ MENU_LABEL_VIDEO_ROTATION, -+ MENU_LABEL_VIDEO_SCALE, -+ MENU_LABEL_VALUE_VIDEO_SCALE, -+ MENU_LABEL_VIDEO_SMOOTH, -+ MENU_LABEL_VALUE_VIDEO_SMOOTH, -+ MENU_LABEL_VIDEO_CROP_OVERSCAN, -+ MENU_LABEL_VALUE_VIDEO_CROP_OVERSCAN, -+ MENU_LABEL_VIDEO_SCALE_INTEGER, -+ MENU_LABEL_VALUE_VIDEO_SCALE_INTEGER, -+ -+ MENU_LABEL_AUDIO_RATE_CONTROL_DELTA, -+ MENU_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA, -+ MENU_LABEL_AUDIO_MAX_TIMING_SKEW, -+ MENU_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW, -+ -+ MENU_LABEL_INPUT_PLAYER1_JOYPAD_INDEX, -+ MENU_LABEL_INPUT_PLAYER2_JOYPAD_INDEX, -+ MENU_LABEL_INPUT_PLAYER3_JOYPAD_INDEX, -+ MENU_LABEL_INPUT_PLAYER4_JOYPAD_INDEX, -+ MENU_LABEL_INPUT_PLAYER5_JOYPAD_INDEX, -+ -+ MENU_LABEL_AUDIO_DEVICE, -+ MENU_LABEL_VALUE_AUDIO_DEVICE, -+ -+ MENU_LABEL_REWIND_ENABLE, -+ MENU_LABEL_VALUE_REWIND_ENABLE, -+ MENU_LABEL_ENABLE_HOTKEY, -+ MENU_LABEL_DISK_EJECT_TOGGLE, -+ MENU_LABEL_DISK_NEXT, -+ MENU_LABEL_GRAB_MOUSE_TOGGLE, -+ MENU_LABEL_MENU_TOGGLE, -+ MENU_LABEL_STATE_SLOT_DECREASE, -+ MENU_LABEL_STATE_SLOT_INCREASE, -+ -+ MENU_LABEL_LIBRETRO_LOG_LEVEL, -+ MENU_LABEL_VALUE_LIBRETRO_LOG_LEVEL, -+ -+ MENU_LABEL_INPUT_BIND_DEVICE_ID, -+ MENU_LABEL_INPUT_BIND_DEVICE_TYPE, -+ -+ MENU_LABEL_AUTOSAVE_INTERVAL, -+ MENU_LABEL_VALUE_AUTOSAVE_INTERVAL, -+ MENU_LABEL_CONFIG_SAVE_ON_EXIT, -+ MENU_LABEL_VALUE_CONFIG_SAVE_ON_EXIT, -+ -+ MENU_LABEL_AUDIO_DRIVER, -+ MENU_LABEL_VALUE_AUDIO_DRIVER, -+ -+ MENU_LABEL_JOYPAD_DRIVER, -+ MENU_LABEL_VALUE_JOYPAD_DRIVER, -+ -+ MENU_LABEL_INPUT_DRIVER, -+ MENU_LABEL_VALUE_INPUT_DRIVER, -+ MENU_LABEL_INPUT_DRIVER_LINUXRAW, -+ MENU_LABEL_INPUT_DRIVER_UDEV, -+ -+ MENU_LABEL_VIDEO_DRIVER, -+ MENU_LABEL_VALUE_VIDEO_DRIVER, -+ MENU_LABEL_VIDEO_DRIVER_GL, -+ MENU_LABEL_VIDEO_DRIVER_SDL2, -+ MENU_LABEL_VIDEO_DRIVER_SDL1, -+ MENU_LABEL_VIDEO_DRIVER_D3D, -+ MENU_LABEL_VIDEO_DRIVER_EXYNOS, -+ MENU_LABEL_VIDEO_DRIVER_SUNXI, -+ -+ MENU_LABEL_LOCATION_DRIVER, -+ MENU_LABEL_VALUE_LOCATION_DRIVER, -+ -+ MENU_LABEL_MENU_DRIVER, -+ MENU_LABEL_VALUE_MENU_DRIVER, -+ -+ MENU_LABEL_CAMERA_DRIVER, -+ MENU_LABEL_VALUE_CAMERA_DRIVER, -+ -+ MENU_LABEL_RECORD_DRIVER, -+ MENU_LABEL_VALUE_RECORD_DRIVER, -+ -+ MENU_LABEL_AUDIO_RESAMPLER_DRIVER, -+ MENU_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER, -+ MENU_LABEL_AUDIO_RESAMPLER_DRIVER_SINC, -+ MENU_LABEL_AUDIO_RESAMPLER_DRIVER_CC, -+ -+ MENU_LABEL_SAVEFILE_DIRECTORY, -+ MENU_LABEL_VALUE_SAVEFILE_DIRECTORY, -+ MENU_LABEL_SAVESTATE_DIRECTORY, -+ MENU_LABEL_VALUE_SAVESTATE_DIRECTORY, -+ MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY, -+ MENU_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY, -+ MENU_LABEL_THUMBNAILS_DIRECTORY, -+ MENU_LABEL_VALUE_THUMBNAILS_DIRECTORY, -+ -+ MENU_LABEL_SLOWMOTION_RATIO, -+ MENU_LABEL_VALUE_SLOWMOTION_RATIO, -+ MENU_LABEL_INPUT_MAX_USERS, -+ MENU_LABEL_VALUE_INPUT_MAX_USERS, -+ MENU_LABEL_INPUT_REMAP_BINDS_ENABLE, -+ MENU_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE, -+ MENU_LABEL_INPUT_AXIS_THRESHOLD, -+ MENU_LABEL_VALUE_INPUT_AXIS_THRESHOLD, -+ MENU_LABEL_INPUT_TURBO_PERIOD, -+ MENU_LABEL_VALUE_INPUT_TURBO_PERIOD, -+ -+ MENU_LABEL_VIDEO_GAMMA, -+ MENU_LABEL_VALUE_VIDEO_GAMMA, -+ -+ MENU_LABEL_VIDEO_ALLOW_ROTATE, -+ MENU_LABEL_VALUE_VIDEO_ALLOW_ROTATE, -+ -+ MENU_LABEL_CAMERA_ALLOW, -+ MENU_LABEL_VALUE_CAMERA_ALLOW, -+ MENU_LABEL_LOCATION_ALLOW, -+ MENU_LABEL_VALUE_LOCATION_ALLOW, -+ -+ MENU_LABEL_TURBO, -+ -+ MENU_LABEL_NO_PLAYLIST_ENTRIES_AVAILABLE, -+ MENU_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE, -+ MENU_LABEL_VALUE_RDB_ENTRY_START_CONTENT, -+ MENU_LABEL_RDB_ENTRY_ANALOG, -+ MENU_LABEL_RDB_ENTRY_RUMBLE, -+ MENU_LABEL_RDB_ENTRY_COOP, -+ MENU_LABEL_RDB_ENTRY_START_CONTENT, -+ MENU_LABEL_RDB_ENTRY_DESCRIPTION, -+ MENU_LABEL_RDB_ENTRY_GENRE, -+ MENU_LABEL_VALUE_RDB_ENTRY_DESCRIPTION, -+ MENU_LABEL_VALUE_RDB_ENTRY_GENRE, -+ MENU_LABEL_RDB_ENTRY_NAME, -+ MENU_LABEL_VALUE_RDB_ENTRY_NAME, -+ MENU_LABEL_RDB_ENTRY_PUBLISHER, -+ MENU_LABEL_VALUE_RDB_ENTRY_PUBLISHER, -+ MENU_LABEL_RDB_ENTRY_DEVELOPER, -+ MENU_LABEL_VALUE_RDB_ENTRY_DEVELOPER, -+ MENU_LABEL_RDB_ENTRY_ORIGIN, -+ MENU_LABEL_VALUE_RDB_ENTRY_ORIGIN, -+ MENU_LABEL_RDB_ENTRY_FRANCHISE, -+ MENU_LABEL_VALUE_RDB_ENTRY_FRANCHISE, -+ MENU_LABEL_RDB_ENTRY_ENHANCEMENT_HW, -+ MENU_LABEL_RDB_ENTRY_ESRB_RATING, -+ MENU_LABEL_RDB_ENTRY_BBFC_RATING, -+ MENU_LABEL_RDB_ENTRY_ELSPA_RATING, -+ MENU_LABEL_RDB_ENTRY_PEGI_RATING, -+ MENU_LABEL_RDB_ENTRY_CERO_RATING, -+ MENU_LABEL_RDB_ENTRY_EDGE_MAGAZINE_RATING, -+ MENU_LABEL_RDB_ENTRY_EDGE_MAGAZINE_ISSUE, -+ MENU_LABEL_RDB_ENTRY_EDGE_MAGAZINE_REVIEW, -+ MENU_LABEL_RDB_ENTRY_FAMITSU_MAGAZINE_RATING, -+ MENU_LABEL_RDB_ENTRY_TGDB_RATING, -+ MENU_LABEL_RDB_ENTRY_RELEASE_MONTH, -+ MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH, -+ MENU_LABEL_RDB_ENTRY_RELEASE_YEAR, -+ MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR, -+ MENU_LABEL_RDB_ENTRY_MAX_USERS, -+ MENU_LABEL_VALUE_RDB_ENTRY_MAX_USERS, -+ MENU_LABEL_RDB_ENTRY_SHA1, -+ MENU_LABEL_VALUE_RDB_ENTRY_SHA1, -+ MENU_LABEL_VALUE_RDB_ENTRY_MD5, -+ MENU_LABEL_RDB_ENTRY_MD5, -+ MENU_LABEL_RDB_ENTRY_CRC32, -+ MENU_LABEL_VALUE_RDB_ENTRY_CRC32, -+ -+ MENU_LABEL_VIDEO_SHADER_DEFAULT_FILTER, -+ MENU_LABEL_VIDEO_SHADER_FILTER_PASS, -+ MENU_LABEL_VIDEO_SHADER_SCALE_PASS, -+ MENU_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES, -+ MENU_LABEL_VIDEO_SHADER_NUM_PASSES, -+ MENU_LABEL_VALUE_CHEAT_NUM_PASSES, -+ MENU_LABEL_CHEAT_NUM_PASSES, -+ -+ MENU_VALUE_NO_DISK, -+ -+ MENU_VALUE_MD5, -+ MENU_VALUE_SHA1, -+ MENU_VALUE_CRC, -+ MENU_VALUE_MORE, -+ MENU_VALUE_HORIZONTAL_MENU, -+ MENU_VALUE_SETTINGS_TAB, -+ MENU_VALUE_HISTORY_TAB, -+ MENU_VALUE_ADD_TAB, -+ MENU_VALUE_PLAYLISTS_TAB, -+ MENU_VALUE_MAIN_MENU, -+ MENU_LABEL_VALUE_SETTINGS, -+ MENU_VALUE_INPUT_SETTINGS, -+ MENU_VALUE_ON, -+ MENU_VALUE_OFF, -+ MENU_VALUE_TRUE, -+ MENU_VALUE_FALSE, -+ MENU_VALUE_COMP, -+ MENU_VALUE_MUSIC, -+ MENU_VALUE_IMAGE, -+ MENU_VALUE_MOVIE, -+ MENU_VALUE_CORE, -+ MENU_VALUE_CURSOR, -+ MENU_VALUE_FILE, -+ MENU_VALUE_MISSING, -+ MENU_VALUE_PRESENT, -+ MENU_VALUE_OPTIONAL, -+ MENU_VALUE_REQUIRED, -+ MENU_VALUE_RDB, -+ MENU_VALUE_DIR, -+ MENU_VALUE_NO_CORE, -+ MENU_VALUE_DETECT, -+ MENU_VALUE_GLSLP, -+ MENU_VALUE_CGP, -+ MENU_VALUE_GLSL, -+ MENU_VALUE_CG, -+ MENU_VALUE_SLANG, -+ MENU_VALUE_SLANGP, -+ -+ MENU_VALUE_RETROPAD, -+ MENU_VALUE_RETROKEYBOARD, -+ -+ MENU_LABEL_SYSTEM_BGM_ENABLE, -+ MENU_LABEL_VALUE_SYSTEM_BGM_ENABLE, -+ -+ MENU_LABEL_AUDIO_BLOCK_FRAMES, -+ MENU_LABEL_VALUE_AUDIO_BLOCK_FRAMES, -+ -+ MENU_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW, -+ MENU_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW, -+ -+ MENU_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND, -+ MENU_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND, -+ -+ MENU_LABEL_INPUT_BIND_MODE, -+ MENU_LABEL_VALUE_INPUT_BIND_MODE, -+ -+ MENU_LABEL_NETWORK_CMD_ENABLE, -+ MENU_LABEL_VALUE_NETWORK_CMD_ENABLE, -+ MENU_LABEL_NETWORK_CMD_PORT, -+ MENU_LABEL_VALUE_NETWORK_CMD_PORT, -+ MENU_LABEL_STDIN_CMD_ENABLE, -+ MENU_LABEL_NETWORK_REMOTE_ENABLE, -+ MENU_LABEL_NETWORK_REMOTE_PORT, -+ -+ MENU_LABEL_VALUE_STDIN_CMD_ENABLE, -+ MENU_LABEL_VALUE_NETWORK_REMOTE_ENABLE, -+ MENU_LABEL_HISTORY_LIST_ENABLE, -+ MENU_LABEL_VALUE_HISTORY_LIST_ENABLE, -+ MENU_LABEL_CONTENT_HISTORY_SIZE, -+ MENU_LABEL_VALUE_CONTENT_HISTORY_SIZE, -+ MENU_LABEL_CONTENT_ACTIONS, -+ MENU_LABEL_DETECT_CORE_LIST, -+ MENU_LABEL_VALUE_DETECT_CORE_LIST, -+ MENU_LABEL_DETECT_CORE_LIST_OK, -+ MENU_LABEL_START_CORE, -+ MENU_LABEL_VALUE_START_CORE, -+ MENU_LABEL_LOAD_CONTENT, -+ MENU_LABEL_VALUE_LOAD_CONTENT, -+ MENU_LABEL_VALUE_CORE_UPDATER_LIST, -+ MENU_LABEL_CORE_UPDATER_LIST, -+ MENU_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, -+ MENU_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, -+ MENU_LABEL_CORE_UPDATER_BUILDBOT_URL, -+ MENU_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL, -+ MENU_LABEL_BUILDBOT_ASSETS_URL, -+ MENU_LABEL_VALUE_BUILDBOT_ASSETS_URL, -+ MENU_LABEL_VIDEO_SHARED_CONTEXT, -+ MENU_LABEL_VALUE_VIDEO_SHARED_CONTEXT, -+ MENU_LABEL_DUMMY_ON_CORE_SHUTDOWN, -+ MENU_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN, -+ MENU_LABEL_NAVIGATION_WRAPAROUND, -+ MENU_LABEL_VALUE_NAVIGATION_WRAPAROUND, -+ MENU_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, -+ MENU_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, -+ MENU_LABEL_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE, -+ MENU_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE, -+ MENU_LABEL_CLOSE_CONTENT, -+ MENU_LABEL_VALUE_CLOSE_CONTENT, -+ MENU_LABEL_QUIT_RETROARCH, -+ MENU_LABEL_VALUE_QUIT_RETROARCH, -+ MENU_LABEL_SHUTDOWN, -+ MENU_LABEL_VALUE_SHUTDOWN, -+ MENU_LABEL_REBOOT, -+ MENU_LABEL_VALUE_REBOOT, -+ MENU_LABEL_DEFERRED_VIDEO_FILTER, -+ MENU_LABEL_DEFERRED_CORE_LIST_SET, -+ MENU_LABEL_VALUE_STARTING_DOWNLOAD, -+ MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_DEVELOPER, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PUBLISHER, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ORIGIN, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FRANCHISE, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_RATING, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_ISSUE, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FAMITSU_MAGAZINE_RATING, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ENHANCEMENT_HW, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEMONTH, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEYEAR, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ESRB_RATING, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ELSPA_RATING, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PEGI_RATING, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_CERO_RATING, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_BBFC_RATING, -+ MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS, -+ MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL, -+ MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS, -+ MENU_LABEL_DEFERRED_CORE_LIST, -+ MENU_LABEL_DEFERRED_CORE_UPDATER_LIST, -+ MENU_LABEL_DISK_IMAGE_APPEND, -+ MENU_LABEL_CORE_LIST, -+ MENU_LABEL_VALUE_CORE_LIST, -+ MENU_LABEL_MANAGEMENT, -+ MENU_LABEL_VALUE_MANAGEMENT, -+ MENU_LABEL_ONLINE_UPDATER, -+ MENU_LABEL_VALUE_ONLINE_UPDATER, -+ MENU_LABEL_SETTINGS, -+ MENU_LABEL_FRONTEND_COUNTERS, -+ MENU_LABEL_VALUE_FRONTEND_COUNTERS, -+ MENU_LABEL_VALUE_CORE_COUNTERS, -+ MENU_LABEL_CORE_COUNTERS, -+ MENU_LABEL_LOAD_CONTENT_HISTORY, -+ MENU_LABEL_VALUE_LOAD_CONTENT_HISTORY, -+ MENU_LABEL_NETWORK_INFORMATION, -+ MENU_LABEL_VALUE_NETWORK_INFORMATION, -+ MENU_LABEL_SYSTEM_INFORMATION, -+ MENU_LABEL_DEBUG_INFORMATION, -+ MENU_LABEL_ACHIEVEMENT_LIST, -+ MENU_LABEL_VALUE_SYSTEM_INFORMATION, -+ MENU_LABEL_VALUE_DEBUG_INFORMATION, -+ MENU_LABEL_VALUE_ACHIEVEMENT_LIST, -+ MENU_LABEL_CORE_INFORMATION, -+ MENU_LABEL_VALUE_CORE_INFORMATION, -+ MENU_LABEL_VALUE_VIDEO_SHADER_PARAMETERS, -+ MENU_LABEL_VIDEO_SHADER_PARAMETERS, -+ MENU_LABEL_VIDEO_SHADER_PRESET_PARAMETERS, -+ MENU_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS, -+ MENU_LABEL_DISK_OPTIONS, -+ MENU_LABEL_VALUE_DISK_OPTIONS, -+ MENU_LABEL_CORE_OPTIONS, -+ MENU_LABEL_DISK_CYCLE_TRAY_STATUS, -+ MENU_LABEL_INPUT_DUTY_CYCLE, -+ MENU_LABEL_VALUE_INPUT_DUTY_CYCLE, -+ MENU_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, -+ MENU_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE, -+ MENU_LABEL_VALUE_DISK_INDEX, -+ MENU_LABEL_VALUE_DISK_IMAGE_APPEND, -+ MENU_LABEL_DISK_INDEX, -+ MENU_LABEL_SHADER_OPTIONS, -+ MENU_LABEL_VALUE_CORE_CHEAT_OPTIONS, -+ MENU_LABEL_CORE_CHEAT_OPTIONS, -+ MENU_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, -+ MENU_LABEL_CORE_INPUT_REMAPPING_OPTIONS, -+ MENU_LABEL_VALUE_CURSOR_MANAGER, -+ MENU_LABEL_VALUE_DATABASE_MANAGER, -+ MENU_LABEL_DATABASE_MANAGER_LIST, -+ MENU_LABEL_CURSOR_MANAGER_LIST, -+ MENU_LABEL_VIDEO_SHADER_PASS, -+ MENU_LABEL_VALUE_VIDEO_SHADER_PRESET, -+ MENU_LABEL_VIDEO_SHADER_PRESET, -+ MENU_LABEL_CHEAT_FILE_LOAD, -+ MENU_LABEL_VALUE_CHEAT_FILE_LOAD, -+ MENU_LABEL_REMAP_FILE_LOAD, -+ MENU_LABEL_VALUE_REMAP_FILE_LOAD, -+ MENU_LABEL_MESSAGE, -+ MENU_LABEL_INFO_SCREEN, -+ MENU_LABEL_LOAD_OPEN_ZIP, -+ MENU_LABEL_CUSTOM_RATIO, -+ MENU_LABEL_VALUE_CUSTOM_RATIO, -+ MENU_LABEL_HELP, -+ MENU_LABEL_VALUE_HELP, -+ MENU_LABEL_INPUT_OVERLAY, -+ MENU_LABEL_INPUT_OSK_OVERLAY, -+ MENU_LABEL_CHEAT_DATABASE_PATH, -+ MENU_LABEL_VALUE_CHEAT_DATABASE_PATH, -+ MENU_LABEL_CURSOR_DIRECTORY, -+ MENU_LABEL_VALUE_CURSOR_DIRECTORY, -+ MENU_LABEL_AUDIO_OUTPUT_RATE, -+ MENU_LABEL_VALUE_AUDIO_OUTPUT_RATE, -+ MENU_LABEL_OSK_OVERLAY_DIRECTORY, -+ MENU_LABEL_VALUE_OSK_OVERLAY_DIRECTORY, -+ MENU_LABEL_RECORDING_OUTPUT_DIRECTORY, -+ MENU_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY, -+ MENU_LABEL_RECORDING_CONFIG_DIRECTORY, -+ MENU_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY, -+ MENU_LABEL_VIDEO_FILTER, -+ MENU_LABEL_VALUE_VIDEO_FILTER, -+ MENU_LABEL_PAL60_ENABLE, -+ MENU_LABEL_VALUE_PAL60_ENABLE, -+ MENU_LABEL_CONTENT_HISTORY_PATH, -+ MENU_LABEL_AUDIO_DSP_PLUGIN, -+ MENU_LABEL_VALUE_AUDIO_DSP_PLUGIN, -+ MENU_LABEL_RGUI_BROWSER_DIRECTORY, -+ MENU_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, -+ MENU_LABEL_CONTENT_DATABASE_DIRECTORY, -+ MENU_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY, -+ MENU_LABEL_PLAYLIST_DIRECTORY, -+ MENU_LABEL_VALUE_PLAYLIST_DIRECTORY, -+ MENU_LABEL_CORE_ASSETS_DIRECTORY, -+ MENU_LABEL_VALUE_CORE_ASSETS_DIRECTORY, -+ MENU_LABEL_CONTENT_DIRECTORY, -+ MENU_LABEL_VALUE_SCREENSHOT_DIRECTORY, -+ MENU_LABEL_INPUT_REMAPPING_DIRECTORY, -+ MENU_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY, -+ MENU_LABEL_VIDEO_SHADER_DIR, -+ MENU_LABEL_VALUE_VIDEO_SHADER_DIR, -+ MENU_LABEL_VIDEO_FILTER_DIR, -+ MENU_LABEL_VALUE_VIDEO_FILTER_DIR, -+ MENU_LABEL_AUDIO_FILTER_DIR, -+ MENU_LABEL_VALUE_AUDIO_FILTER_DIR, -+ MENU_LABEL_LIBRETRO_DIR_PATH, -+ MENU_LABEL_VALUE_LIBRETRO_DIR_PATH, -+ MENU_LABEL_LIBRETRO_INFO_PATH, -+ MENU_LABEL_VALUE_LIBRETRO_INFO_PATH, -+ MENU_LABEL_RGUI_CONFIG_DIRECTORY, -+ MENU_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, -+ MENU_LABEL_OVERLAY_DIRECTORY, -+ MENU_LABEL_VALUE_OVERLAY_DIRECTORY, -+ MENU_LABEL_VALUE_SYSTEM_DIRECTORY, -+ MENU_LABEL_ASSETS_DIRECTORY, -+ MENU_LABEL_VALUE_ASSETS_DIRECTORY, -+ MENU_LABEL_CACHE_DIRECTORY, -+ MENU_LABEL_VALUE_CACHE_DIRECTORY, -+ MENU_LABEL_JOYPAD_AUTOCONFIG_DIR, -+ MENU_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR, -+ MENU_LABEL_INPUT_AUTODETECT_ENABLE, -+ MENU_LABEL_VALUE_INPUT_AUTODETECT_ENABLE, -+ MENU_LABEL_VALUE_DRIVER_SETTINGS, -+ MENU_LABEL_VALUE_CORE_SETTINGS, -+ MENU_LABEL_VALUE_CONFIGURATION_SETTINGS, -+ MENU_LABEL_VALUE_LOGGING_SETTINGS, -+ MENU_LABEL_VALUE_SAVING_SETTINGS, -+ MENU_LABEL_VALUE_REWIND_SETTINGS, -+ MENU_LABEL_VALUE_VIDEO_SETTINGS, -+ MENU_LABEL_RECORDING_SETTINGS, -+ MENU_LABEL_VALUE_RECORDING_SETTINGS, -+ MENU_LABEL_SHADER_SETTINGS, -+ MENU_LABEL_FONT_SETTINGS, -+ MENU_LABEL_AUDIO_SETTINGS, -+ MENU_LABEL_VALUE_AUDIO_SETTINGS, -+ MENU_LABEL_VALUE_INPUT_SETTINGS, -+ MENU_LABEL_INPUT_HOTKEY_SETTINGS, -+ MENU_LABEL_OVERLAY_SETTINGS, -+ MENU_LABEL_VALUE_OVERLAY_SETTINGS, -+ MENU_LABEL_ONSCREEN_KEYBOARD_OVERLAY_SETTINGS, -+ MENU_LABEL_VALUE_MULTIMEDIA_SETTINGS, -+ MENU_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS, -+ MENU_LABEL_MENU_SETTINGS, -+ MENU_LABEL_VALUE_MENU_SETTINGS, -+ MENU_LABEL_UI_SETTINGS, -+ MENU_LABEL_VALUE_UI_SETTINGS, -+ MENU_LABEL_PATCH_SETTINGS, -+ MENU_LABEL_PLAYLIST_SETTINGS, -+ MENU_LABEL_VALUE_PLAYLIST_SETTINGS, -+ MENU_LABEL_CORE_UPDATER_SETTINGS, -+ MENU_LABEL_VALUE_CORE_UPDATER_SETTINGS, -+ MENU_LABEL_NETWORK_SETTINGS, -+ MENU_LABEL_VALUE_NETWORK_SETTINGS, -+ MENU_LABEL_VALUE_LAKKA_SERVICES, -+ MENU_LABEL_ARCHIVE_SETTINGS, -+ MENU_LABEL_USER_SETTINGS, -+ MENU_LABEL_VALUE_USER_SETTINGS, -+ MENU_LABEL_INPUT_USER_1_BINDS, -+ MENU_LABEL_INPUT_USER_2_BINDS, -+ MENU_LABEL_INPUT_USER_3_BINDS, -+ MENU_LABEL_INPUT_USER_4_BINDS, -+ MENU_LABEL_INPUT_USER_5_BINDS, -+ MENU_LABEL_INPUT_USER_6_BINDS, -+ MENU_LABEL_INPUT_USER_7_BINDS, -+ MENU_LABEL_INPUT_USER_8_BINDS, -+ MENU_LABEL_INPUT_USER_9_BINDS, -+ MENU_LABEL_INPUT_USER_10_BINDS, -+ MENU_LABEL_INPUT_USER_11_BINDS, -+ MENU_LABEL_INPUT_USER_12_BINDS, -+ MENU_LABEL_INPUT_USER_13_BINDS, -+ MENU_LABEL_INPUT_USER_14_BINDS, -+ MENU_LABEL_INPUT_USER_15_BINDS, -+ MENU_LABEL_INPUT_USER_16_BINDS, -+ MENU_LABEL_DIRECTORY_SETTINGS, -+ MENU_LABEL_VALUE_DIRECTORY_SETTINGS, -+ MENU_LABEL_VALUE_PRIVACY_SETTINGS, -+ MENU_LABEL_SHADER_APPLY_CHANGES, -+ MENU_LABEL_VALUE_SHADER_APPLY_CHANGES, -+ MENU_LABEL_SAVE_NEW_CONFIG, -+ MENU_LABEL_VALUE_SAVE_NEW_CONFIG, -+ MENU_LABEL_ONSCREEN_DISPLAY_SETTINGS, -+ MENU_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS, -+ MENU_LABEL_VALUE_CHEAT_APPLY_CHANGES, -+ MENU_LABEL_CHEAT_APPLY_CHANGES, -+ MENU_LABEL_CUSTOM_BIND, -+ MENU_LABEL_CUSTOM_BIND_ALL, -+ MENU_LABEL_CUSTOM_BIND_DEFAULTS, -+ MENU_LABEL_SAVESTATE, -+ MENU_LABEL_LOADSTATE, -+ MENU_LABEL_UNDOLOADSTATE, -+ MENU_LABEL_UNDOSAVESTATE, -+ MENU_LABEL_RESUME_CONTENT, -+ MENU_LABEL_VALUE_RESUME_CONTENT, -+ MENU_LABEL_VALUE_RESUME, -+ MENU_LABEL_RESTART_CONTENT, -+ MENU_LABEL_RESTART_RETROARCH, -+ MENU_LABEL_VALUE_RESTART_RETROARCH, -+ MENU_LABEL_VALUE_RESTART_CONTENT, -+ MENU_LABEL_TAKE_SCREENSHOT, -+ MENU_LABEL_VALUE_TAKE_SCREENSHOT, -+ MENU_LABEL_CONFIGURATIONS, -+ MENU_LABEL_VALUE_CONFIGURATIONS, -+ MENU_LABEL_VALUE_CHEAT_FILE_SAVE_AS, -+ MENU_LABEL_CHEAT_FILE_SAVE_AS, -+ MENU_LABEL_VIDEO_SHADER_PRESET_SAVE_AS, -+ MENU_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS, -+ MENU_LABEL_VALUE_REMAP_FILE_SAVE_CORE, -+ MENU_LABEL_VALUE_REMAP_FILE_SAVE_GAME, -+ MENU_LABEL_REMAP_FILE_SAVE_CORE, -+ MENU_LABEL_REMAP_FILE_SAVE_GAME, -+ MENU_LABEL_CONTENT_COLLECTION_LIST, -+ MENU_LABEL_VALUE_CONTENT_COLLECTION_LIST, -+ MENU_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE, -+ MENU_LABEL_OSK_ENABLE, -+ MENU_LABEL_AUDIO_MUTE, -+ MENU_LABEL_VALUE_AUDIO_MUTE, -+ MENU_LABEL_EXIT_EMULATOR, -+ MENU_LABEL_COLLECTION, -+ MENU_LABEL_USER_LANGUAGE, -+ MENU_LABEL_VALUE_USER_LANGUAGE, -+ MENU_LABEL_NETPLAY_NICKNAME, -+ MENU_LABEL_VALUE_NETPLAY_NICKNAME, -+ MENU_LABEL_VIDEO_VI_WIDTH, -+ MENU_LABEL_VALUE_VIDEO_VI_WIDTH, -+ -+ MENU_LABEL_VIDEO_FORCE_ASPECT, -+ MENU_LABEL_VALUE_VIDEO_FORCE_ASPECT, -+ -+ MENU_LABEL_VIDEO_ASPECT_RATIO_AUTO, -+ MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO, -+ -+ MENU_LABEL_VIDEO_ASPECT_RATIO_INDEX, -+ MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX, -+ -+ MENU_LABEL_VIDEO_VFILTER, -+ MENU_LABEL_VALUE_VIDEO_VFILTER, -+ -+ MENU_LABEL_VIDEO_GPU_RECORD, -+ MENU_LABEL_VALUE_VIDEO_GPU_RECORD, -+ -+ MENU_LABEL_RECORD_USE_OUTPUT_DIRECTORY, -+ MENU_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY, -+ -+ MENU_LABEL_RECORD_CONFIG, -+ MENU_LABEL_VALUE_RECORD_CONFIG, -+ -+ MENU_LABEL_RECORD_PATH, -+ MENU_LABEL_VALUE_RECORD_PATH, -+ -+ MENU_LABEL_VIDEO_POST_FILTER_RECORD, -+ MENU_LABEL_VALUE_VIDEO_POST_FILTER_RECORD, -+ -+ MENU_LABEL_RECORD_ENABLE, -+ MENU_LABEL_VALUE_RECORD_ENABLE, -+ -+ MENU_VALUE_SECONDS, -+ MENU_VALUE_STATUS, -+ -+ MENU_LABEL_VALUE_CORE_INFO_CORE_NAME, -+ MENU_LABEL_VALUE_CORE_INFO_CORE_LABEL, -+ MENU_LABEL_VALUE_CORE_INFO_SYSTEM_NAME, -+ MENU_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER, -+ MENU_LABEL_VALUE_CORE_INFO_CATEGORIES, -+ MENU_LABEL_VALUE_CORE_INFO_AUTHORS, -+ MENU_LABEL_VALUE_CORE_INFO_PERMISSIONS, -+ MENU_LABEL_VALUE_CORE_INFO_LICENSES, -+ MENU_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS, -+ MENU_LABEL_VALUE_CORE_INFO_FIRMWARE, -+ MENU_LABEL_VALUE_CORE_INFO_CORE_NOTES, -+ -+ MENU_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE, -+ MENU_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION, -+ MENU_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES, -+ MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER, -+ MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME, -+ MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS, -+ MENU_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL, -+ MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE, -+ MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE, -+ MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING, -+ MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED, -+ MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING, -+ MENU_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER, -+ MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH, -+ MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI, -+ MENU_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_NETWORK_REMOTE_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_RTGA_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_RBMP_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_RJPEG_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_VULKAN_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT, -+ MENU_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT, -+ -+ MENU_LABEL_VALUE_YES, -+ MENU_LABEL_VALUE_NO, -+ -+ MENU_VALUE_BACK, -+ MENU_VALUE_DISABLED, -+ MENU_VALUE_PORT, -+ -+ MENU_VALUE_LEFT_ANALOG, -+ MENU_VALUE_RIGHT_ANALOG, -+ -+ MENU_VALUE_LANG_ENGLISH, -+ MENU_VALUE_LANG_JAPANESE, -+ MENU_VALUE_LANG_FRENCH, -+ MENU_VALUE_LANG_SPANISH, -+ MENU_VALUE_LANG_GERMAN, -+ MENU_VALUE_LANG_ITALIAN, -+ MENU_VALUE_LANG_DUTCH, -+ MENU_VALUE_LANG_PORTUGUESE, -+ MENU_VALUE_LANG_RUSSIAN, -+ MENU_VALUE_LANG_KOREAN, -+ MENU_VALUE_LANG_CHINESE_TRADITIONAL, -+ MENU_VALUE_LANG_CHINESE_SIMPLIFIED, -+ MENU_VALUE_LANG_ESPERANTO, -+ MENU_VALUE_LANG_POLISH, -+ -+ MENU_VALUE_NONE, -+ -+ MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE, -+ -+ MENU_LABEL_VALUE_INPUT_USER_BINDS, -+ -+ MENU_LABEL_USE_BUILTIN_IMAGE_VIEWER, -+ MENU_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, -+ -+ MENU_LABEL_OVERLAY_AUTOLOAD_PREFERRED, -+ MENU_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED, -+ -+ MENU_LABEL_OPEN_ARCHIVE, -+ MENU_LABEL_OPEN_ARCHIVE_DETECT_CORE, -+ MENU_LABEL_LOAD_ARCHIVE_DETECT_CORE, -+ MENU_LABEL_LOAD_ARCHIVE, -+ -+ MENU_LABEL_VALUE_OPEN_ARCHIVE, -+ MENU_LABEL_VALUE_LOAD_ARCHIVE, -+ -+ MENU_LABEL_VALUE_WHAT_IS_A_CORE_DESC, -+ -+ MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD, -+ MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD, -+ MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC, -+ -+ MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING, -+ MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING, -+ MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC, -+ -+ MENU_LABEL_HELP_SCANNING_CONTENT, -+ MENU_LABEL_VALUE_HELP_SCANNING_CONTENT, -+ MENU_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC, -+ -+ MENU_LABEL_SAVE_CURRENT_CONFIG, -+ MENU_LABEL_VALUE_SAVE_CURRENT_CONFIG, -+ -+ MENU_LABEL_INPUT_SMALL_KEYBOARD_ENABLE, -+ MENU_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE, -+ -+ MENU_LABEL_INPUT_ICADE_ENABLE, -+ MENU_LABEL_VALUE_INPUT_ICADE_ENABLE, -+ -+ CB_CORE_THUMBNAILS_DOWNLOAD -+}; -+ -+const char *menu_hash_to_str_de(enum menu_hash_enums msg); -+int menu_hash_get_help_de(enum menu_hash_enums msg, char *s, size_t len); -+ -+const char *menu_hash_to_str_es(enum menu_hash_enums msg); -+int menu_hash_get_help_es(enum menu_hash_enums msg, char *s, size_t len); -+ -+const char *menu_hash_to_str_fr(enum menu_hash_enums msg); -+int menu_hash_get_help_fr(enum menu_hash_enums msg, char *s, size_t len); -+ -+const char *menu_hash_to_str_it(enum menu_hash_enums msg); -+int menu_hash_get_help_it(enum menu_hash_enums msg, char *s, size_t len); - --#define MENU_LABEL_UPDATE_CG_SHADERS 0x9473991aU --#define MENU_LABEL_VALUE_UPDATE_CG_SHADERS 0x22999e5cU -+const char *menu_hash_to_str_nl(enum menu_hash_enums msg); -+int menu_hash_get_help_nl(enum menu_hash_enums msg, char *s, size_t len); - --#define MENU_LABEL_UPDATE_GLSL_SHADERS 0x2413b762U --#define MENU_LABEL_VALUE_UPDATE_GLSL_SHADERS 0xe2060484U -- --#define MENU_LABEL_INFORMATION_LIST 0x225e7606U --#define MENU_LABEL_VALUE_INFORMATION_LIST 0xd652344bU -- --#define MENU_LABEL_USE_BUILTIN_PLAYER 0x9927ca74U --#define MENU_LABEL_VALUE_USE_BUILTIN_PLAYER 0x038e4816U -- --#define MENU_LABEL_CONTENT_SETTINGS 0xe789f7f6U --#define MENU_LABEL_VALUE_CONTENT_SETTINGS 0x61b23ff7U -- --#define MENU_LABEL_LOAD_CONTENT_LIST 0x5745de1fU --#define MENU_LABEL_VALUE_LOAD_CONTENT_LIST 0x55ff08eaU -- --#define MENU_LABEL_NO_SETTINGS_FOUND 0xabf77040U --#define MENU_LABEL_VALUE_NO_SETTINGS_FOUND 0xffcc5b5dU --#define MENU_LABEL_VALUE_NO_PERFORMANCE_COUNTERS 0xb4b52b95U -- --#define MENU_LABEL_VIDEO_FONT_ENABLE 0x697d9b58U --#define MENU_LABEL_VALUE_VIDEO_FONT_ENABLE 0x272a12a6U --#define MENU_LABEL_VIDEO_FONT_PATH 0xd0de729eU --#define MENU_LABEL_VALUE_VIDEO_FONT_PATH 0x025c4de7U --#define MENU_LABEL_VIDEO_FONT_SIZE 0xd0e03a8cU --#define MENU_LABEL_VALUE_VIDEO_FONT_SIZE 0x026356cbU --#define MENU_LABEL_VIDEO_MESSAGE_POS_X 0xa133c368U --#define MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_X 0x4b1ac89dU --#define MENU_LABEL_VIDEO_MESSAGE_POS_Y 0xa133c369U --#define MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_Y 0x4f2559beU -- --#define MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST 0x10b41d97U --#define MENU_LABEL_INPUT_HOTKEY_BINDS 0x1b7ef2d7U --#define MENU_LABEL_VALUE_INPUT_HOTKEY_BINDS 0x1cb39c19U -- --#define MENU_LABEL_VALUE_FRAME_THROTTLE_SETTINGS 0x573b8837U -- --#define MENU_LABEL_FRAME_THROTTLE_ENABLE 0xbe52e701U --#define MENU_LABEL_VALUE_FRAME_THROTTLE_ENABLE 0x936f04a8U -- --#define MENU_LABEL_VIDEO_FILTER_FLICKER 0x2e21eba0U --#define MENU_LABEL_VALUE_VIDEO_FILTER_FLICKER 0x87c7226bU -- --#define MENU_LABEL_VIDEO_SOFT_FILTER 0x92819a46U --#define MENU_LABEL_VALUE_VIDEO_SOFT_FILTER 0xd035df8eU -- --#define MENU_LABEL_CORE_ENABLE 0x2f37fe48U --#define MENU_LABEL_VALUE_CORE_ENABLE 0x751e2065U -- --#define MENU_LABEL_MOUSE_ENABLE 0x1240fa88U --#define MENU_LABEL_VALUE_MOUSE_ENABLE 0xd5bf366bU -- --#define MENU_LABEL_SHOW_ADVANCED_SETTINGS 0xbc6ac8dfU --#define MENU_LABEL_VALUE_SHOW_ADVANCED_SETTINGS 0x851ee46dU -- --#define MENU_LABEL_POINTER_ENABLE 0xf051a7a0U --#define MENU_LABEL_VALUE_POINTER_ENABLE 0x1e24b9e5U -- --#define MENU_LABEL_COLLAPSE_SUBGROUPS_ENABLE 0x585ad75bU --#define MENU_LABEL_VALUE_COLLAPSE_SUBGROUPS_ENABLE 0xdb677262U -- --#define MENU_LABEL_RESET 0x10474288U --#define MENU_LABEL_SLOWMOTION 0x6a269ea0U --#define MENU_LABEL_HOLD_FAST_FORWARD 0xebe2e4cdU --#define MENU_LABEL_CHEAT_TOGGLE 0xe515e0cbU --#define MENU_LABEL_PAUSE_TOGGLE 0x557634e4U -- --#define MENU_LABEL_PAUSE_LIBRETRO 0xf954afb9U --#define MENU_LABEL_VALUE_PAUSE_LIBRETRO 0x632ea57fU -- --#define MENU_LABEL_VALUE_DIRECTORY_NOT_FOUND 0xcdf3c0d5U --#define MENU_LABEL_VALUE_NO_ITEMS 0x7d33e412U -- --#define MENU_LABEL_UI_MENUBAR_ENABLE 0x1ddc5492U --#define MENU_LABEL_VALUE_UI_MENUBAR_ENABLE 0x11927e13U -- --#define MENU_LABEL_UI_COMPANION_START_ON_BOOT 0x36b23782U --#define MENU_LABEL_VALUE_UI_COMPANION_START_ON_BOOT 0x94796ba6U -- --#define MENU_LABEL_ARCHIVE_MODE 0x7fac00cbU --#define MENU_LABEL_VALUE_ARCHIVE_MODE 0xe4c4b559U --#define MENU_LABEL_VALUE_SHADER_OPTIONS 0xf3fb0028U --#define MENU_LABEL_VALUE_USE_THIS_DIRECTORY 0xc5fc9ed9U --#define MENU_LABEL_USE_THIS_DIRECTORY 0xc51d351dU --#define MENU_LABEL_VALUE_CORE_OPTIONS 0x1477b95aU --#define MENU_LABEL_VALUE_NO_SHADER_PARAMETERS 0x8ccc809bU --#define MENU_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE 0x2a11fe80U --#define MENU_LABEL_VALUE_NO_CORES_AVAILABLE 0xe16bfd0dU --#define MENU_LABEL_SAVE_STATE 0x3a4849b5U --#define MENU_LABEL_VALUE_LOAD_STATE 0xd23ba706U --#define MENU_LABEL_VALUE_UNDO_LOAD_STATE 0xc83f09fcU --#define MENU_LABEL_VALUE_UNDO_SAVE_STATE 0x341b870bU --#define MENU_LABEL_VALUE_SAVE_STATE 0x3e182415U --#define MENU_LABEL_LOAD_STATE 0xa39eb286U --#define MENU_LABEL_UNDO_LOAD_STATE 0x464aaf5cU --#define MENU_LABEL_UNDO_SAVE_STATE 0xdcf4468bU --#define MENU_LABEL_REWIND 0x1931d5aeU --#define MENU_LABEL_NETPLAY_FLIP_PLAYERS 0x801425abU --#define MENU_LABEL_CHEAT_INDEX_MINUS 0x57f58b6cU --#define MENU_LABEL_CHEAT_INDEX_PLUS 0x678542a4U --#define MENU_LABEL_AUDIO_ENABLE 0x28614f5dU --#define MENU_LABEL_VALUE_AUDIO_ENABLE 0xcdbb9b9eU --#define MENU_LABEL_SCREENSHOT_DIRECTORY 0x552612d7U --#define MENU_LABEL_SHADER_NEXT 0x54d359baU --#define MENU_LABEL_SHADER_PREV 0x54d4a758U --#define MENU_LABEL_FRAME_ADVANCE 0xd80302a1U --#define MENU_LABEL_FPS_SHOW 0x5ea1e10eU --#define MENU_LABEL_VALUE_FPS_SHOW 0x92588792U --#define MENU_LABEL_MOVIE_RECORD_TOGGLE 0xa2d2ff04U --#define MENU_LABEL_L_X_PLUS 0xd7370d4bU --#define MENU_LABEL_L_X_MINUS 0xbde0aaf3U --#define MENU_LABEL_L_Y_PLUS 0xd98c35ecU --#define MENU_LABEL_L_Y_MINUS 0x0adae7b4U --#define MENU_LABEL_R_X_PLUS 0x60c20a91U --#define MENU_LABEL_R_X_MINUS 0x78cb50f9U --#define MENU_LABEL_R_Y_MINUS 0xc5c58dbaU --#define MENU_LABEL_R_Y_PLUS 0x63173332U --#define MENU_LABEL_VIDEO_SWAP_INTERVAL 0x5673ff9aU --#define MENU_LABEL_VALUE_VIDEO_SWAP_INTERVAL 0xe41b3878U --#define MENU_LABEL_VIDEO_GPU_SCREENSHOT 0xee2fcb44U --#define MENU_LABEL_VALUE_VIDEO_GPU_SCREENSHOT 0x4af80c36U --#define MENU_LABEL_PAUSE_NONACTIVE 0x580bf549U --#define MENU_LABEL_VALUE_PAUSE_NONACTIVE 0xe985d38dU --#define MENU_LABEL_BLOCK_SRAM_OVERWRITE 0xc4e88d08U --#define MENU_LABEL_VALUE_BLOCK_SRAM_OVERWRITE 0x9b38260aU --#define MENU_LABEL_VIDEO_FULLSCREEN 0x9506dd4eU --#define MENU_LABEL_VALUE_VIDEO_FULLSCREEN 0x232743caU --#define MENU_LABEL_CORE_SPECIFIC_CONFIG 0x3c9a55e8U --#define MENU_LABEL_VALUE_CORE_SPECIFIC_CONFIG 0x8b8bec5aU --#define MENU_LABEL_GAME_SPECIFIC_OPTIONS 0x142ec90fU --#define MENU_LABEL_VALUE_GAME_SPECIFIC_OPTIONS 0x6aed8a05U --#define MENU_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE 0xf8d2456cU --#define MENU_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE 0x06BF9E5F8 --#define MENU_LABEL_AUTO_OVERRIDES_ENABLE 0x35ff91b6U --#define MENU_LABEL_VALUE_AUTO_OVERRIDES_ENABLE 0xc21c3a11U --#define MENU_LABEL_AUTO_REMAPS_ENABLE 0x98c8f98bU --#define MENU_LABEL_VALUE_AUTO_REMAPS_ENABLE 0x390f9666U --#define MENU_LABEL_RGUI_SHOW_START_SCREEN 0x6b38f0e8U --#define MENU_LABEL_VALUE_RGUI_SHOW_START_SCREEN 0x76784454U --#define MENU_LABEL_VIDEO_BLACK_FRAME_INSERTION 0x53477f5cU --#define MENU_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION 0xb823faa8U --#define MENU_LABEL_VIDEO_HARD_SYNC_FRAMES 0xce0ece13U --#define MENU_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES 0x1edcab0bU --#define MENU_LABEL_VIDEO_FRAME_DELAY 0xd4aa9df4U --#define MENU_LABEL_VALUE_VIDEO_FRAME_DELAY 0x990d36bfU --#define MENU_LABEL_SCREENSHOT 0x9a37f083U --#define MENU_LABEL_REWIND_GRANULARITY 0xe859cbdfU --#define MENU_LABEL_VALUE_REWIND_GRANULARITY 0x6e1ae4c0U --#define MENU_LABEL_VALUE_VIDEO_ROTATION 0x9efcecf5U --#define MENU_LABEL_THREADED_DATA_RUNLOOP_ENABLE 0xdf5c6d33U --#define MENU_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE 0x04d8c10fU --#define MENU_LABEL_VIDEO_THREADED 0x0626179cU --#define MENU_LABEL_VALUE_VIDEO_THREADED 0xc7524afdU --#define MENU_LABEL_VALUE_RUN 0x0b881f3aU --#define MENU_LABEL_SCREEN_RESOLUTION 0x5c9b3a58U --#define MENU_LABEL_VALUE_SCREEN_RESOLUTION 0xae3c3b19U -- --#define MENU_LABEL_TITLE_COLOR 0x10059879U --#define MENU_LABEL_VALUE_TITLE_COLOR 0xea87e1dbU --#define MENU_LABEL_TIMEDATE_ENABLE 0xd3adcbecU --#define MENU_LABEL_VALUE_TIMEDATE_ENABLE 0x104bcdf7U --#define MENU_LABEL_ENTRY_NORMAL_COLOR 0x5154ffd1U --#define MENU_LABEL_VALUE_ENTRY_NORMAL_COLOR 0xa989a754U --#define MENU_LABEL_ENTRY_HOVER_COLOR 0x4143cfccU --#define MENU_LABEL_VALUE_ENTRY_HOVER_COLOR 0xb56f1b0fU --#define MENU_LABEL_AUDIO_SYNC 0xe0cd6bd3U --#define MENU_LABEL_VALUE_AUDIO_SYNC 0xcbeb903bU --#define MENU_LABEL_VIDEO_VSYNC 0x09c2d34eU --#define MENU_LABEL_VALUE_VIDEO_VSYNC 0xd69cd742U --#define MENU_LABEL_VIDEO_HARD_SYNC 0xdcd623b6U --#define MENU_LABEL_VALUE_VIDEO_HARD_SYNC 0x3012142dU --#define MENU_LABEL_SAVESTATE_AUTO_SAVE 0xf6f4a05bU --#define MENU_LABEL_SAVESTATE_AUTO_LOAD 0xf6f1028cU --#define MENU_LABEL_SAVESTATE_AUTO_INDEX 0xd4da8b84U --#define MENU_LABEL_VALUE_SAVESTATE_AUTO_INDEX 0x29b65b06U --#define MENU_LABEL_VALUE_SAVESTATE_AUTO_SAVE 0x07391f6eU --#define MENU_LABEL_VALUE_SAVESTATE_AUTO_LOAD 0x9b5ca25fU --#define MENU_LABEL_SYSTEM_DIRECTORY 0x35a6fb9eU --#define MENU_LABEL_VIDEO_DISABLE_COMPOSITION 0x5cbb6222U --#define MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION 0xa6200347U --#define MENU_LABEL_SUSPEND_SCREENSAVER_ENABLE 0x459fcb0dU --#define MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE 0xf423ff48U --#define MENU_LABEL_DPI_OVERRIDE_ENABLE 0xb4bf52c7U --#define MENU_LABEL_VALUE_DPI_OVERRIDE_ENABLE 0xd535f449U --#define MENU_LABEL_DPI_OVERRIDE_VALUE 0x543a3efdU --#define MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE 0x1462aba2U --#define MENU_LABEL_XMB_SCALE_FACTOR 0x0177E8DF1 --#define MENU_LABEL_VALUE_XMB_SCALE_FACTOR 0x0DCDBDB13 --#define MENU_LABEL_XMB_ALPHA_FACTOR 0x01049C5CF --#define MENU_LABEL_VALUE_XMB_ALPHA_FACTOR 0x0D5A712F1 --#define MENU_LABEL_XMB_FONT 0x0ECA56CA2 --#define MENU_LABEL_VALUE_XMB_FONT 0x0020337E7 --#define MENU_LABEL_XMB_THEME 0x824c5a7eU --#define MENU_LABEL_VALUE_XMB_THEME 0x3603f65fU --#define MENU_LABEL_XMB_GRADIENT 0x18e63099U --#define MENU_LABEL_VALUE_XMB_GRADIENT 0x8a520681U --#define MENU_LABEL_XMB_SHADOWS_ENABLE 0xd0fcc82aU --#define MENU_LABEL_VALUE_XMB_SHADOWS_ENABLE 0x5982498cU --#define MENU_LABEL_XMB_RIBBON_ENABLE 0x8e89c3edU --#define MENU_LABEL_VALUE_XMB_RIBBON_ENABLE 0xd53e09c8U --#define MENU_LABEL_VOLUME_UP 0xa66e9681U --#define MENU_LABEL_VOLUME_DOWN 0xfc64f3d4U --#define MENU_LABEL_LOG_VERBOSITY 0x6648c96dU --#define MENU_LABEL_VALUE_LOG_VERBOSITY 0x2f9f6013U --#define MENU_LABEL_OVERLAY_NEXT 0x7a459145U --#define MENU_LABEL_AUDIO_VOLUME 0x502173aeU --#define MENU_LABEL_VALUE_AUDIO_VOLUME 0x0fa6ccfeU --#define MENU_LABEL_AUDIO_LATENCY 0x32695386U --#define MENU_LABEL_VALUE_AUDIO_LATENCY 0x89900e38U --#define MENU_LABEL_NETPLAY_ENABLE 0x607fbd68U --#define MENU_LABEL_VALUE_NETPLAY_ENABLE 0xbc3e81a9U --#define MENU_LABEL_SSH_ENABLE 0xd9854a79U --#define MENU_LABEL_VALUE_SSH_ENABLE 0x0430627aU --#define MENU_LABEL_SAMBA_ENABLE 0x379e15efU --#define MENU_LABEL_VALUE_SAMBA_ENABLE 0x9846d9b0U --#define MENU_LABEL_BLUETOOTH_ENABLE 0xbac1e1e1U --#define MENU_LABEL_VALUE_BLUETOOTH_ENABLE 0xf7e31e22U --#define MENU_LABEL_NETPLAY_CLIENT_SWAP_INPUT 0xd87bbba9U --#define MENU_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT 0x57e5be2dU --#define MENU_LABEL_NETPLAY_DELAY_FRAMES 0x86b2c48dU --#define MENU_LABEL_VALUE_NETPLAY_DELAY_FRAMES 0x1ec3edefU --#define MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE 0x6f9a9440U --#define MENU_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE 0xd78ede3eU --#define MENU_LABEL_NETPLAY_TCP_UDP_PORT 0x98407774U --#define MENU_LABEL_VALUE_NETPLAY_TCP_UDP_PORT 0xf1a0cfc6U --#define MENU_LABEL_SORT_SAVEFILES_ENABLE 0xed0d0df4U --#define MENU_LABEL_VALUE_SORT_SAVEFILES_ENABLE 0x1a6db795U --#define MENU_LABEL_SORT_SAVESTATES_ENABLE 0x66ff2495U --#define MENU_LABEL_VALUE_SORT_SAVESTATES_ENABLE 0x82c5e076U --#define MENU_LABEL_NETPLAY_IP_ADDRESS 0xac9a53ffU --#define MENU_LABEL_VALUE_NETPLAY_IP_ADDRESS 0xc7ee4c84U --#define MENU_LABEL_NETPLAY_MODE 0xc1cf6506U --#define MENU_LABEL_VALUE_NETPLAY_MODE 0x2da6c748U --#define MENU_LABEL_PERFCNT_ENABLE 0x6823dbddU --#define MENU_LABEL_VALUE_PERFCNT_ENABLE 0x20eb18caU --#define MENU_LABEL_OVERLAY_SCALE 0x2dce2a3dU --#define MENU_LABEL_VALUE_OVERLAY_SCALE 0x4237794fU --#define MENU_LABEL_KEYBOARD_OVERLAY_PRESET 0x11f1c582U --#define MENU_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET 0x7bc03f8bU --#define MENU_LABEL_OVERLAY_PRESET 0x24e24796U --#define MENU_LABEL_VALUE_OVERLAY_PRESET 0x8338e89aU --#define MENU_LABEL_OVERLAY_OPACITY 0xc466fbaeU --#define MENU_LABEL_VALUE_OVERLAY_OPACITY 0x98605740U -- --#define MENU_LABEL_MENU_WALLPAPER 0x3b84de01U --#define MENU_LABEL_VALUE_MENU_WALLPAPER 0x4555d2a2U --#define MENU_LABEL_DYNAMIC_WALLPAPER 0xf011ccabU --#define MENU_LABEL_VALUE_DYNAMIC_WALLPAPER 0x66928c32U --#define MENU_LABEL_THUMBNAILS 0x0a3ec67cU --#define MENU_LABEL_VALUE_THUMBNAILS 0x88eca25cU -- --#define MENU_LABEL_FASTFORWARD_RATIO 0x3a0c2706U --#define MENU_LABEL_VALUE_FASTFORWARD_RATIO 0x3c719749U --#define MENU_LABEL_VIDEO_MONITOR_INDEX 0xb6fcdc9aU --#define MENU_LABEL_VALUE_VIDEO_MONITOR_INDEX 0x4cabbfe5U --#define MENU_LABEL_INPUT_OVERLAY_ENABLE 0xc7b21d5cU --#define MENU_LABEL_VALUE_INPUT_OVERLAY_ENABLE 0x95a716ddU --#define MENU_LABEL_INPUT_OSK_OVERLAY_ENABLE 0x7f8339c8U --#define MENU_LABEL_VALUE_INPUT_OSK_OVERLAY_ENABLE 0x44e487aeU --#define MENU_LABEL_VIDEO_REFRESH_RATE_AUTO 0x9addb6cdU --#define MENU_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO 0xaf24a804U --#define MENU_LABEL_VIDEO_REFRESH_RATE 0x56ccabf5U --#define MENU_LABEL_VALUE_VIDEO_REFRESH_RATE 0xdf36d1e0U --#define MENU_LABEL_VIDEO_WINDOWED_FULLSCREEN 0x6436d6f8U --#define MENU_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN 0x133c7afeU --#define MENU_LABEL_VIDEO_FORCE_SRGB_DISABLE 0x0a7b68aaU --#define MENU_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE 0xe5bfa9baU --#define MENU_LABEL_VIDEO_ROTATION 0x4ce6882bU --#define MENU_LABEL_VIDEO_SCALE 0x09835d63U --#define MENU_LABEL_VALUE_VIDEO_SCALE 0x5cde89ceU --#define MENU_LABEL_VIDEO_SMOOTH 0x3aabbb35U --#define MENU_LABEL_VALUE_VIDEO_SMOOTH 0xeb0723aeU --#define MENU_LABEL_VIDEO_CROP_OVERSCAN 0x861f7a2fU --#define MENU_LABEL_VALUE_VIDEO_CROP_OVERSCAN 0xc0b575e2U --#define MENU_LABEL_VIDEO_SCALE_INTEGER 0x65c4b090U --#define MENU_LABEL_VALUE_VIDEO_SCALE_INTEGER 0xca090a9bU -- --#define MENU_LABEL_AUDIO_RATE_CONTROL_DELTA 0xc8bde3cbU --#define MENU_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA 0x8d242b0eU --#define MENU_LABEL_AUDIO_MAX_TIMING_SKEW 0x4c96f75cU --#define MENU_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW 0x8e873f6eU -- --#define MENU_LABEL_INPUT_PLAYER1_JOYPAD_INDEX 0xfad6ab2fU --#define MENU_LABEL_INPUT_PLAYER2_JOYPAD_INDEX 0x3616e4d0U --#define MENU_LABEL_INPUT_PLAYER3_JOYPAD_INDEX 0x71571e71U --#define MENU_LABEL_INPUT_PLAYER4_JOYPAD_INDEX 0xac975812U --#define MENU_LABEL_INPUT_PLAYER5_JOYPAD_INDEX 0xe7d791b3U -- --#define MENU_LABEL_AUDIO_DEVICE 0x2574eac6U --#define MENU_LABEL_VALUE_AUDIO_DEVICE 0xcacf3707U -- --#define MENU_LABEL_REWIND_ENABLE 0x9761e074U --#define MENU_LABEL_VALUE_REWIND_ENABLE 0xce8cc18eU --#define MENU_LABEL_ENABLE_HOTKEY 0xc04037bfU --#define MENU_LABEL_DISK_EJECT_TOGGLE 0x49633fbbU --#define MENU_LABEL_DISK_NEXT 0xeeaf6c6eU --#define MENU_LABEL_GRAB_MOUSE_TOGGLE 0xb2869aaaU --#define MENU_LABEL_MENU_TOGGLE 0xfb22e3dbU --#define MENU_LABEL_STATE_SLOT_DECREASE 0xe48b8082U --#define MENU_LABEL_STATE_SLOT_INCREASE 0x36a0cbb0U -- --#define MENU_LABEL_LIBRETRO_LOG_LEVEL 0x57971ac0U --#define MENU_LABEL_VALUE_LIBRETRO_LOG_LEVEL 0x4455456dU -- --#define MENU_LABEL_INPUT_BIND_DEVICE_ID 0xd1ea94ecU --#define MENU_LABEL_INPUT_BIND_DEVICE_TYPE 0xf6e9f041U -- --#define MENU_LABEL_AUTOSAVE_INTERVAL 0xecc87351U --#define MENU_LABEL_VALUE_AUTOSAVE_INTERVAL 0x256f3981U --#define MENU_LABEL_CONFIG_SAVE_ON_EXIT 0x79b590feU --#define MENU_LABEL_VALUE_CONFIG_SAVE_ON_EXIT 0x4be88ae3U -- --#define MENU_LABEL_AUDIO_DRIVER 0x26594002U --#define MENU_LABEL_VALUE_AUDIO_DRIVER 0xcbb38c43U -- --#define MENU_LABEL_JOYPAD_DRIVER 0xab124146U --#define MENU_LABEL_VALUE_JOYPAD_DRIVER 0x18799878U -- --#define MENU_LABEL_INPUT_DRIVER 0x4c087840U --#define MENU_LABEL_VALUE_INPUT_DRIVER 0xf162c481U --#define MENU_LABEL_INPUT_DRIVER_LINUXRAW 0xc33c6b9fU --#define MENU_LABEL_INPUT_DRIVER_UDEV 0x7c9eeeb9U -- --#define MENU_LABEL_VIDEO_DRIVER 0x1805a5e7U --#define MENU_LABEL_VALUE_VIDEO_DRIVER 0xbd5ff228U --#define MENU_LABEL_VIDEO_DRIVER_GL 0x005977f8U --#define MENU_LABEL_VIDEO_DRIVER_SDL2 0x7c9dd69aU --#define MENU_LABEL_VIDEO_DRIVER_SDL1 0x0b88a968U --#define MENU_LABEL_VIDEO_DRIVER_D3D 0x0b886340U --#define MENU_LABEL_VIDEO_DRIVER_EXYNOS 0xfc37c54bU --#define MENU_LABEL_VIDEO_DRIVER_SUNXI 0x10620e3cU -- --#define MENU_LABEL_LOCATION_DRIVER 0x09189689U --#define MENU_LABEL_VALUE_LOCATION_DRIVER 0x63f0d6caU -- --#define MENU_LABEL_MENU_DRIVER 0xd607fb05U --#define MENU_LABEL_VALUE_MENU_DRIVER 0xee374b46U -- --#define MENU_LABEL_CAMERA_DRIVER 0xf25db959U --#define MENU_LABEL_VALUE_CAMERA_DRIVER 0xca42819aU -- --#define MENU_LABEL_RECORD_DRIVER 0x144cd2cfU --#define MENU_LABEL_VALUE_RECORD_DRIVER 0xec319b10U -- --#define MENU_LABEL_AUDIO_RESAMPLER_DRIVER 0xedcba9ecU --#define MENU_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER 0xb1c4f3ceU --#define MENU_LABEL_AUDIO_RESAMPLER_DRIVER_SINC 0x7c9dec52U --#define MENU_LABEL_AUDIO_RESAMPLER_DRIVER_CC 0x0059732bU -- --#define MENU_LABEL_SAVEFILE_DIRECTORY 0x92773488U --#define MENU_LABEL_VALUE_SAVEFILE_DIRECTORY 0x418b1929U --#define MENU_LABEL_SAVESTATE_DIRECTORY 0x90551289U --#define MENU_LABEL_VALUE_SAVESTATE_DIRECTORY 0xe6e0732aU --#define MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY 0x62f975b8U --#define MENU_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY 0x0a3a407aU --#define MENU_LABEL_THUMBNAILS_DIRECTORY 0xdea77410U --#define MENU_LABEL_VALUE_THUMBNAILS_DIRECTORY 0xcb99d0b1U -- --#define MENU_LABEL_SLOWMOTION_RATIO 0x626b3ffeU --#define MENU_LABEL_VALUE_SLOWMOTION_RATIO 0x81c6f8ecU --#define MENU_LABEL_INPUT_MAX_USERS 0x2720206bU --#define MENU_LABEL_VALUE_INPUT_MAX_USERS 0xe6b0aefdU --#define MENU_LABEL_INPUT_REMAP_BINDS_ENABLE 0x536dcafeU --#define MENU_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE 0x731709f1U --#define MENU_LABEL_INPUT_AXIS_THRESHOLD 0xe95c2095U --#define MENU_LABEL_VALUE_INPUT_AXIS_THRESHOLD 0x3fb34697U --#define MENU_LABEL_INPUT_TURBO_PERIOD 0xf7a97482U --#define MENU_LABEL_VALUE_INPUT_TURBO_PERIOD 0x9207b594U -- --#define MENU_LABEL_VIDEO_GAMMA 0x08a951beU --#define MENU_LABEL_VALUE_VIDEO_GAMMA 0xc7da99dfU -- --#define MENU_LABEL_VIDEO_ALLOW_ROTATE 0x2880f0e8U --#define MENU_LABEL_VALUE_VIDEO_ALLOW_ROTATE 0x29a66fb4U -- --#define MENU_LABEL_CAMERA_ALLOW 0xc14d302cU --#define MENU_LABEL_VALUE_CAMERA_ALLOW 0x553824adU --#define MENU_LABEL_LOCATION_ALLOW 0xf089275cU --#define MENU_LABEL_VALUE_LOCATION_ALLOW 0xf039239dU -- --#define MENU_LABEL_TURBO 0x107434f1U -- --#define MENU_LABEL_NO_PLAYLIST_ENTRIES_AVAILABLE 0x8888c5acU --#define MENU_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE 0xea82695dU --#define MENU_LABEL_VALUE_RDB_ENTRY_START_CONTENT 0x2cf73cceU --#define MENU_LABEL_RDB_ENTRY_ANALOG 0x9081c2ffU --#define MENU_LABEL_RDB_ENTRY_RUMBLE 0xb8ae8ad4U --#define MENU_LABEL_RDB_ENTRY_COOP 0x7c953ff6U --#define MENU_LABEL_RDB_ENTRY_START_CONTENT 0x95025a55U --#define MENU_LABEL_RDB_ENTRY_DESCRIPTION 0x26aa1f71U --#define MENU_LABEL_RDB_ENTRY_GENRE 0x9fefab3eU --#define MENU_LABEL_VALUE_RDB_ENTRY_DESCRIPTION 0xe61a1f69U --#define MENU_LABEL_VALUE_RDB_ENTRY_GENRE 0x0d3d1136U --#define MENU_LABEL_RDB_ENTRY_NAME 0xc6ccf92eU --#define MENU_LABEL_VALUE_RDB_ENTRY_NAME 0x7c898026U --#define MENU_LABEL_RDB_ENTRY_PUBLISHER 0x4d7bcdfbU --#define MENU_LABEL_VALUE_RDB_ENTRY_PUBLISHER 0xce7b6ff3U --#define MENU_LABEL_RDB_ENTRY_DEVELOPER 0x06f61093U --#define MENU_LABEL_VALUE_RDB_ENTRY_DEVELOPER 0x87f5b28bU --#define MENU_LABEL_RDB_ENTRY_ORIGIN 0xb176aad5U --#define MENU_LABEL_VALUE_RDB_ENTRY_ORIGIN 0xc870cfcdU --#define MENU_LABEL_RDB_ENTRY_FRANCHISE 0xb31764a0U --#define MENU_LABEL_VALUE_RDB_ENTRY_FRANCHISE 0x34170698U --#define MENU_LABEL_RDB_ENTRY_ENHANCEMENT_HW 0x79ee4f11U --#define MENU_LABEL_RDB_ENTRY_ESRB_RATING 0xe138fa3dU --#define MENU_LABEL_RDB_ENTRY_BBFC_RATING 0x82dbc01eU --#define MENU_LABEL_RDB_ENTRY_ELSPA_RATING 0x0def0906U --#define MENU_LABEL_RDB_ENTRY_PEGI_RATING 0xd814cb56U --#define MENU_LABEL_RDB_ENTRY_CERO_RATING 0x9d436f5aU --#define MENU_LABEL_RDB_ENTRY_EDGE_MAGAZINE_RATING 0x9735f631U --#define MENU_LABEL_RDB_ENTRY_EDGE_MAGAZINE_ISSUE 0xd5706415U --#define MENU_LABEL_RDB_ENTRY_EDGE_MAGAZINE_REVIEW 0x977f6fdeU --#define MENU_LABEL_RDB_ENTRY_FAMITSU_MAGAZINE_RATING 0x01a50315U --#define MENU_LABEL_RDB_ENTRY_TGDB_RATING 0x225a9d72U --#define MENU_LABEL_RDB_ENTRY_RELEASE_MONTH 0xad2f2c54U --#define MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH 0xb68af36aU --#define MENU_LABEL_RDB_ENTRY_RELEASE_YEAR 0x14c9c6bfU --#define MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR 0x439e0315U --#define MENU_LABEL_RDB_ENTRY_MAX_USERS 0xfae91cc4U --#define MENU_LABEL_VALUE_RDB_ENTRY_MAX_USERS 0xe6b0aefdU --#define MENU_LABEL_RDB_ENTRY_SHA1 0xc6cfd31aU --#define MENU_LABEL_VALUE_RDB_ENTRY_SHA1 0x2d142625U --#define MENU_LABEL_VALUE_RDB_ENTRY_MD5 0xf1ecb7deU --#define MENU_LABEL_RDB_ENTRY_MD5 0xdf3c7f93U --#define MENU_LABEL_RDB_ENTRY_CRC32 0x9fae330aU --#define MENU_LABEL_VALUE_RDB_ENTRY_CRC32 0xc326ab15U -- --#define MENU_LABEL_VIDEO_SHADER_DEFAULT_FILTER 0x4468cb1bU --#define MENU_LABEL_VIDEO_SHADER_FILTER_PASS 0x1906c38dU --#define MENU_LABEL_VIDEO_SHADER_SCALE_PASS 0x18f7b82fU --#define MENU_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES 0xb354b30bU --#define MENU_LABEL_VIDEO_SHADER_NUM_PASSES 0x79b2992fU --#define MENU_LABEL_VALUE_CHEAT_NUM_PASSES 0x8024fa39U --#define MENU_LABEL_CHEAT_NUM_PASSES 0x1910eb87U -- --#define MENU_VALUE_NO_DISK 0x7d54e5cdU -- --#define MENU_VALUE_MD5 0x0b888fabU --#define MENU_VALUE_SHA1 0x7c9de632U --#define MENU_VALUE_CRC 0x0b88671dU --#define MENU_VALUE_MORE 0x0b877cafU --#define MENU_VALUE_HORIZONTAL_MENU 0x35761704U --#define MENU_VALUE_SETTINGS_TAB 0x6548d16dU --#define MENU_VALUE_HISTORY_TAB 0xea9b0ceeU --#define MENU_VALUE_ADD_TAB 0x7fb20225U --#define MENU_VALUE_PLAYLISTS_TAB 0x092d3161U --#define MENU_VALUE_MAIN_MENU 0x1625971fU --#define MENU_LABEL_VALUE_SETTINGS 0x8aca3ff6U --#define MENU_VALUE_INPUT_SETTINGS 0xddd30846U --#define MENU_VALUE_ON 0x005974c2U --#define MENU_VALUE_OFF 0x0b880c40U --#define MENU_VALUE_TRUE 0x7c9e9fe5U --#define MENU_VALUE_FALSE 0x0f6bcef0U --#define MENU_VALUE_COMP 0x6a166ba5U --#define MENU_VALUE_MUSIC 0xc4a73997U --#define MENU_VALUE_IMAGE 0xbab7ebf9U --#define MENU_VALUE_MOVIE 0xc43c4bf6U --#define MENU_VALUE_CORE 0x6a167f7fU --#define MENU_VALUE_CURSOR 0x57bba8b4U --#define MENU_VALUE_FILE 0x6a496536U --#define MENU_VALUE_MISSING 0x28536c3fU --#define MENU_VALUE_PRESENT 0x23432826U --#define MENU_VALUE_OPTIONAL 0x27bfc4abU --#define MENU_VALUE_REQUIRED 0x979b1a66U --#define MENU_VALUE_RDB 0x0b00f54eU --#define MENU_VALUE_DIR 0x0af95f55U --#define MENU_VALUE_NO_CORE 0x7d5472cbU --#define MENU_VALUE_DETECT 0xab8da89eU --#define MENU_VALUE_GLSLP 0x0f840c87U --#define MENU_VALUE_CGP 0x0b8865bfU --#define MENU_VALUE_GLSL 0x7c976537U --#define MENU_VALUE_CG 0x0059776fU --#define MENU_VALUE_SLANG 0x105ce63aU --#define MENU_VALUE_SLANGP 0x1bf9adeaU -- --#define MENU_VALUE_RETROPAD 0x9e6703e6U --#define MENU_VALUE_RETROKEYBOARD 0x9d8b6ea2U -- --#define MENU_LABEL_SYSTEM_BGM_ENABLE 0x9287a1c5U --#define MENU_LABEL_VALUE_SYSTEM_BGM_ENABLE 0x9025dea7U -- --#define MENU_LABEL_AUDIO_BLOCK_FRAMES 0xa85a655eU --#define MENU_LABEL_VALUE_AUDIO_BLOCK_FRAMES 0x118c952eU -- --#define MENU_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW 0x7eefdf52U --#define MENU_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW 0x78d0ea06U -- --#define MENU_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND 0x7051d870U --#define MENU_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND 0xc26ddec5U -- --#define MENU_LABEL_INPUT_BIND_MODE 0x90281b55U --#define MENU_LABEL_VALUE_INPUT_BIND_MODE 0xe06b25c7U -- --#define MENU_LABEL_NETWORK_CMD_ENABLE 0xfdf03a08U --#define MENU_LABEL_VALUE_NETWORK_CMD_ENABLE 0xb822b7a1U --#define MENU_LABEL_NETWORK_CMD_PORT 0xc1b9e0a6U --#define MENU_LABEL_VALUE_NETWORK_CMD_PORT 0xee5773f3U --#define MENU_LABEL_STDIN_CMD_ENABLE 0x665069c0U --#define MENU_LABEL_NETWORK_REMOTE_ENABLE 0x99cd4420U --#define MENU_LABEL_NETWORK_REMOTE_PORT 0x9aef9e18U -- --#define MENU_LABEL_VALUE_STDIN_CMD_ENABLE 0xc98ecc46U --#define MENU_LABEL_VALUE_NETWORK_REMOTE_ENABLE 0x32f1f6f1U --#define MENU_LABEL_HISTORY_LIST_ENABLE 0xe1c2ae78U --#define MENU_LABEL_VALUE_HISTORY_LIST_ENABLE 0xd2c13bbaU --#define MENU_LABEL_CONTENT_HISTORY_SIZE 0x6f24c38bU --#define MENU_LABEL_VALUE_CONTENT_HISTORY_SIZE 0xda9c5a6eU --#define MENU_LABEL_CONTENT_ACTIONS 0xa0d76970U --#define MENU_LABEL_DETECT_CORE_LIST 0xaa07c341U --#define MENU_LABEL_VALUE_DETECT_CORE_LIST 0x2a2ebd1aU --#define MENU_LABEL_DETECT_CORE_LIST_OK 0xabba2a7aU --#define MENU_LABEL_START_CORE 0xb0b6ae5bU --#define MENU_LABEL_VALUE_START_CORE 0x2adef65cU --#define MENU_LABEL_LOAD_CONTENT 0x828943c3U --#define MENU_LABEL_VALUE_LOAD_CONTENT 0xf0e39e65U --#define MENU_LABEL_VALUE_CORE_UPDATER_LIST 0x0372767dU --#define MENU_LABEL_CORE_UPDATER_LIST 0xe12f4ee3U --#define MENU_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE 0xa3d605f5U --#define MENU_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE 0x5248591cU --#define MENU_LABEL_CORE_UPDATER_BUILDBOT_URL 0xe9ad8448U --#define MENU_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL 0x1bc80956U --#define MENU_LABEL_BUILDBOT_ASSETS_URL 0x1895c71eU --#define MENU_LABEL_VALUE_BUILDBOT_ASSETS_URL 0xaa0327a0U --#define MENU_LABEL_VIDEO_SHARED_CONTEXT 0x7d7dad16U --#define MENU_LABEL_VALUE_VIDEO_SHARED_CONTEXT 0x353d3287U --#define MENU_LABEL_DUMMY_ON_CORE_SHUTDOWN 0x78579f70U --#define MENU_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN 0xc50126d3U --#define MENU_LABEL_NAVIGATION_WRAPAROUND 0xe76ad251U --#define MENU_LABEL_VALUE_NAVIGATION_WRAPAROUND 0x2609b62fU --#define MENU_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE 0xea48426bU --#define MENU_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE 0x94af8500U --#define MENU_LABEL_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE 0x593d2623U --#define MENU_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE 0x9614c0b2U --#define MENU_LABEL_CLOSE_CONTENT 0x4b622170U --#define MENU_LABEL_VALUE_CLOSE_CONTENT 0x2b3d9556U --#define MENU_LABEL_QUIT_RETROARCH 0x84b0bc71U --#define MENU_LABEL_VALUE_QUIT_RETROARCH 0x8e7024f2U --#define MENU_LABEL_SHUTDOWN 0xfc460361U --#define MENU_LABEL_VALUE_SHUTDOWN 0x740b6741U --#define MENU_LABEL_REBOOT 0x19266b70U --#define MENU_LABEL_VALUE_REBOOT 0xce815750U --#define MENU_LABEL_DEFERRED_VIDEO_FILTER 0x966ad201U --#define MENU_LABEL_DEFERRED_CORE_LIST_SET 0xa6d5fdb4U --#define MENU_LABEL_VALUE_STARTING_DOWNLOAD 0x42e10f03U --#define MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST 0x7c0b704fU --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST 0x45446638U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_DEVELOPER 0xcbd89be5U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PUBLISHER 0x125e594dU --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ORIGIN 0x4ebaa767U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FRANCHISE 0x77f9eff2U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_RATING 0x1c7f8a43U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_ISSUE 0xaaeebde7U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FAMITSU_MAGAZINE_RATING 0xbf7ff5e7U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ENHANCEMENT_HW 0x9866bda3U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEMONTH 0x2b36ce66U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEYEAR 0x9c7c6e91U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ESRB_RATING 0x68eba20fU --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ELSPA_RATING 0x8bf6ab18U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PEGI_RATING 0x5fc77328U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_CERO_RATING 0x24f6172cU --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_BBFC_RATING 0x0a8e67f0U --#define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS 0xbfcba816U --#define MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL 0xc35416c0U --#define MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS 0x358a7494U --#define MENU_LABEL_DEFERRED_CORE_LIST 0xf157d289U --#define MENU_LABEL_DEFERRED_CORE_UPDATER_LIST 0xc315f682U --#define MENU_LABEL_DISK_IMAGE_APPEND 0x5af7d709U --#define MENU_LABEL_CORE_LIST 0xa22bb14dU --#define MENU_LABEL_VALUE_CORE_LIST 0x0e17fd4eU --#define MENU_LABEL_MANAGEMENT 0x2516c88aU --#define MENU_LABEL_VALUE_MANAGEMENT 0x97001d0bU --#define MENU_LABEL_ONLINE_UPDATER 0xcac0025eU --#define MENU_LABEL_VALUE_ONLINE_UPDATER 0x9f3dd2bfU --#define MENU_LABEL_SETTINGS 0x1304dc16U --#define MENU_LABEL_FRONTEND_COUNTERS 0xe5696877U --#define MENU_LABEL_VALUE_FRONTEND_COUNTERS 0x5752bcf8U --#define MENU_LABEL_VALUE_CORE_COUNTERS 0x4610e861U --#define MENU_LABEL_CORE_COUNTERS 0x64cc83e0U --#define MENU_LABEL_LOAD_CONTENT_HISTORY 0xfe1d79e5U --#define MENU_LABEL_VALUE_LOAD_CONTENT_HISTORY 0x5b362286U --#define MENU_LABEL_NETWORK_INFORMATION 0x73ae3cb4U --#define MENU_LABEL_VALUE_NETWORK_INFORMATION 0xa0e6d195U --#define MENU_LABEL_SYSTEM_INFORMATION 0x206ebf0fU --#define MENU_LABEL_DEBUG_INFORMATION 0xeb0d82b1U --#define MENU_LABEL_ACHIEVEMENT_LIST 0x7b90fc49U --#define MENU_LABEL_VALUE_SYSTEM_INFORMATION 0xa62fd7f0U --#define MENU_LABEL_VALUE_DEBUG_INFORMATION 0xd8569f92U --#define MENU_LABEL_VALUE_ACHIEVEMENT_LIST 0xf066ac4aU --#define MENU_LABEL_CORE_INFORMATION 0xb638e0d3U --#define MENU_LABEL_VALUE_CORE_INFORMATION 0x781981b4U --#define MENU_LABEL_VALUE_VIDEO_SHADER_PARAMETERS 0x5ace99b3U --#define MENU_LABEL_VIDEO_SHADER_PARAMETERS 0x9895c3e5U --#define MENU_LABEL_VIDEO_SHADER_PRESET_PARAMETERS 0xd18158d7U --#define MENU_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS 0x57f696abU --#define MENU_LABEL_DISK_OPTIONS 0xc61ab5fbU --#define MENU_LABEL_VALUE_DISK_OPTIONS 0xbee508e5U --#define MENU_LABEL_CORE_OPTIONS 0xf65e60f9U --#define MENU_LABEL_DISK_CYCLE_TRAY_STATUS 0x3035cdc1U --#define MENU_LABEL_INPUT_DUTY_CYCLE 0xec787129U --#define MENU_LABEL_VALUE_INPUT_DUTY_CYCLE 0x451cc9dbU --#define MENU_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS 0xf44928c4U --#define MENU_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE 0xd064cbe6U --#define MENU_LABEL_VALUE_DISK_INDEX 0xadbce4a8U --#define MENU_LABEL_VALUE_DISK_IMAGE_APPEND 0x1cb28c6bU --#define MENU_LABEL_DISK_INDEX 0x6c14bf54U --#define MENU_LABEL_SHADER_OPTIONS 0x1f7d2fc7U --#define MENU_LABEL_VALUE_CORE_CHEAT_OPTIONS 0x8ba478bfU --#define MENU_LABEL_CORE_CHEAT_OPTIONS 0x9293171dU --#define MENU_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS 0x7c65016dU --#define MENU_LABEL_CORE_INPUT_REMAPPING_OPTIONS 0x7836a8caU --#define MENU_LABEL_VALUE_CURSOR_MANAGER 0xc3696afeU --#define MENU_LABEL_VALUE_DATABASE_MANAGER 0x6af9d2b5U --#define MENU_LABEL_DATABASE_MANAGER_LIST 0x7f853d8fU --#define MENU_LABEL_CURSOR_MANAGER_LIST 0xa969e378U --#define MENU_LABEL_VIDEO_SHADER_PASS 0x4fa31028U --#define MENU_LABEL_VALUE_VIDEO_SHADER_PRESET 0xd149336fU --#define MENU_LABEL_VIDEO_SHADER_PRESET 0xc5d3bae4U --#define MENU_LABEL_CHEAT_FILE_LOAD 0x57336148U --#define MENU_LABEL_VALUE_CHEAT_FILE_LOAD 0x5b983e0aU --#define MENU_LABEL_REMAP_FILE_LOAD 0x9c2799b8U --#define MENU_LABEL_VALUE_REMAP_FILE_LOAD 0xabdd415aU --#define MENU_LABEL_MESSAGE 0xbe463eeaU --#define MENU_LABEL_INFO_SCREEN 0xd97853d0U --#define MENU_LABEL_LOAD_OPEN_ZIP 0x8aa3c068U --#define MENU_LABEL_CUSTOM_RATIO 0xf038731eU --#define MENU_LABEL_VALUE_CUSTOM_RATIO 0x3c94b73fU --#define MENU_LABEL_HELP 0x7c97d2eeU --#define MENU_LABEL_VALUE_HELP 0x7c8646ceU --#define MENU_LABEL_INPUT_OVERLAY 0x24e24796U --#define MENU_LABEL_INPUT_OSK_OVERLAY 0x11f1c582U --#define MENU_LABEL_CHEAT_DATABASE_PATH 0x01388b8aU --#define MENU_LABEL_VALUE_CHEAT_DATABASE_PATH 0x0a883d9fU --#define MENU_LABEL_CURSOR_DIRECTORY 0xdee8d377U --#define MENU_LABEL_VALUE_CURSOR_DIRECTORY 0xca1c4018U --#define MENU_LABEL_AUDIO_OUTPUT_RATE 0x477b97b9U --#define MENU_LABEL_VALUE_AUDIO_OUTPUT_RATE 0x5d4b0372U --#define MENU_LABEL_OSK_OVERLAY_DIRECTORY 0xcce86287U --#define MENU_LABEL_VALUE_OSK_OVERLAY_DIRECTORY 0x8a4000a9U --#define MENU_LABEL_RECORDING_OUTPUT_DIRECTORY 0x30bece06U --#define MENU_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY 0x93a44152U --#define MENU_LABEL_RECORDING_CONFIG_DIRECTORY 0x3c3f274bU --#define MENU_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY 0x1f7d918dU --#define MENU_LABEL_VIDEO_FILTER 0x1c0eb741U --#define MENU_LABEL_VALUE_VIDEO_FILTER 0xc1690382U --#define MENU_LABEL_PAL60_ENABLE 0x62bc416eU --#define MENU_LABEL_VALUE_PAL60_ENABLE 0x05a5bc9aU --#define MENU_LABEL_CONTENT_HISTORY_PATH 0x6f22fb9dU --#define MENU_LABEL_AUDIO_DSP_PLUGIN 0x4a69572bU --#define MENU_LABEL_VALUE_AUDIO_DSP_PLUGIN 0x1c9f180dU --#define MENU_LABEL_RGUI_BROWSER_DIRECTORY 0xa86cba73U --#define MENU_LABEL_VALUE_RGUI_BROWSER_DIRECTORY 0x088d411eU --#define MENU_LABEL_CONTENT_DATABASE_DIRECTORY 0x6b443f80U --#define MENU_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY 0xccdcaacaU --#define MENU_LABEL_PLAYLIST_DIRECTORY 0x6361820bU --#define MENU_LABEL_VALUE_PLAYLIST_DIRECTORY 0x61223c36U --#define MENU_LABEL_CORE_ASSETS_DIRECTORY 0x8ba5ee54U --#define MENU_LABEL_VALUE_CORE_ASSETS_DIRECTORY 0x319b6c96U --#define MENU_LABEL_CONTENT_DIRECTORY 0x7738dc14U --#define MENU_LABEL_VALUE_SCREENSHOT_DIRECTORY 0x42186f78U --#define MENU_LABEL_INPUT_REMAPPING_DIRECTORY 0x5233c20bU --#define MENU_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY 0xe81058adU --#define MENU_LABEL_VIDEO_SHADER_DIR 0x30f53b10U --#define MENU_LABEL_VALUE_VIDEO_SHADER_DIR 0xc3770351U --#define MENU_LABEL_VIDEO_FILTER_DIR 0x67603f1fU --#define MENU_LABEL_VALUE_VIDEO_FILTER_DIR 0xbb865957U --#define MENU_LABEL_AUDIO_FILTER_DIR 0x4bd96ebaU --#define MENU_LABEL_VALUE_AUDIO_FILTER_DIR 0x509bb77cU --#define MENU_LABEL_LIBRETRO_DIR_PATH 0x1af1eb72U --#define MENU_LABEL_VALUE_LIBRETRO_DIR_PATH 0xf606d103U --#define MENU_LABEL_LIBRETRO_INFO_PATH 0xe552b25fU --#define MENU_LABEL_VALUE_LIBRETRO_INFO_PATH 0x3f39960fU --#define MENU_LABEL_RGUI_CONFIG_DIRECTORY 0x0cb3e005U --#define MENU_LABEL_VALUE_RGUI_CONFIG_DIRECTORY 0x20eb5170U --#define MENU_LABEL_OVERLAY_DIRECTORY 0xc4ed3d1bU --#define MENU_LABEL_VALUE_OVERLAY_DIRECTORY 0xdb8925bcU --#define MENU_LABEL_VALUE_SYSTEM_DIRECTORY 0x20da683fU --#define MENU_LABEL_ASSETS_DIRECTORY 0xde1ae8ecU --#define MENU_LABEL_VALUE_ASSETS_DIRECTORY 0xc94e558dU --#define MENU_LABEL_CACHE_DIRECTORY 0x851dfb8dU --#define MENU_LABEL_VALUE_CACHE_DIRECTORY 0x20a7bc9bU --#define MENU_LABEL_JOYPAD_AUTOCONFIG_DIR 0x2f4822d8U --#define MENU_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR 0x8bb1c2c9U --#define MENU_LABEL_INPUT_AUTODETECT_ENABLE 0xb1e07facU --#define MENU_LABEL_VALUE_INPUT_AUTODETECT_ENABLE 0xf5209bdbU --#define MENU_LABEL_VALUE_DRIVER_SETTINGS 0x81cd2d62U --#define MENU_LABEL_VALUE_CORE_SETTINGS 0xcddea047U --#define MENU_LABEL_VALUE_CONFIGURATION_SETTINGS 0x5a1558ceU --#define MENU_LABEL_VALUE_LOGGING_SETTINGS 0x902c003dU --#define MENU_LABEL_VALUE_SAVING_SETTINGS 0x32fea87eU --#define MENU_LABEL_VALUE_REWIND_SETTINGS 0xbff7775fU --#define MENU_LABEL_VALUE_VIDEO_SETTINGS 0x9dd23badU --#define MENU_LABEL_RECORDING_SETTINGS 0x1a80b313U --#define MENU_LABEL_VALUE_RECORDING_SETTINGS 0x1a80b313U --#define MENU_LABEL_SHADER_SETTINGS 0xd6657e8dU --#define MENU_LABEL_FONT_SETTINGS 0x67571029U --#define MENU_LABEL_AUDIO_SETTINGS 0x8f74c888U --#define MENU_LABEL_VALUE_AUDIO_SETTINGS 0x8f74c888U --#define MENU_LABEL_VALUE_INPUT_SETTINGS 0xddd30846U --#define MENU_LABEL_INPUT_HOTKEY_SETTINGS 0x1cb39c19U --#define MENU_LABEL_OVERLAY_SETTINGS 0x997b2fd5U --#define MENU_LABEL_VALUE_OVERLAY_SETTINGS 0x997b2fd5U --#define MENU_LABEL_ONSCREEN_KEYBOARD_OVERLAY_SETTINGS 0xa6de9ba6U --#define MENU_LABEL_VALUE_MULTIMEDIA_SETTINGS 0x77d23103U --#define MENU_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS 0x652cf7efU --#define MENU_LABEL_MENU_SETTINGS 0x61e4544bU --#define MENU_LABEL_VALUE_MENU_SETTINGS 0x61e4544bU --#define MENU_LABEL_UI_SETTINGS 0xf8da6ef4U --#define MENU_LABEL_VALUE_UI_SETTINGS 0x76ebdc06U --#define MENU_LABEL_PATCH_SETTINGS 0xa78b0986U --#define MENU_LABEL_PLAYLIST_SETTINGS 0xdb3e0e07U --#define MENU_LABEL_VALUE_PLAYLIST_SETTINGS 0x4d276288U --#define MENU_LABEL_CORE_UPDATER_SETTINGS 0x124ad454U --#define MENU_LABEL_VALUE_CORE_UPDATER_SETTINGS 0x124ad454U --#define MENU_LABEL_NETWORK_SETTINGS 0x8b50d180U --#define MENU_LABEL_VALUE_NETWORK_SETTINGS 0x8b50d180U --#define MENU_LABEL_VALUE_LAKKA_SERVICES 0x0c113d6dU --#define MENU_LABEL_ARCHIVE_SETTINGS 0x78e85398U --#define MENU_LABEL_USER_SETTINGS 0xcdc9a8f5U --#define MENU_LABEL_VALUE_USER_SETTINGS 0xcdc9a8f5U --#define MENU_LABEL_INPUT_USER_1_BINDS 0x4d2b4e35U --#define MENU_LABEL_INPUT_USER_2_BINDS 0x9a258af6U --#define MENU_LABEL_INPUT_USER_3_BINDS 0xe71fc7b7U --#define MENU_LABEL_INPUT_USER_4_BINDS 0x341a0478U --#define MENU_LABEL_INPUT_USER_5_BINDS 0x81144139U --#define MENU_LABEL_INPUT_USER_6_BINDS 0xce0e7dfaU --#define MENU_LABEL_INPUT_USER_7_BINDS 0x1b08babbU --#define MENU_LABEL_INPUT_USER_8_BINDS 0x6802f77cU --#define MENU_LABEL_INPUT_USER_9_BINDS 0xb4fd343dU --#define MENU_LABEL_INPUT_USER_10_BINDS 0x70252b05U --#define MENU_LABEL_INPUT_USER_11_BINDS 0xbd1f67c6U --#define MENU_LABEL_INPUT_USER_12_BINDS 0x0a19a487U --#define MENU_LABEL_INPUT_USER_13_BINDS 0x5713e148U --#define MENU_LABEL_INPUT_USER_14_BINDS 0xa40e1e09U --#define MENU_LABEL_INPUT_USER_15_BINDS 0xf1085acaU --#define MENU_LABEL_INPUT_USER_16_BINDS 0x3e02978bU --#define MENU_LABEL_DIRECTORY_SETTINGS 0xb817bd2bU --#define MENU_LABEL_VALUE_DIRECTORY_SETTINGS 0xb817bd2bU --#define MENU_LABEL_VALUE_PRIVACY_SETTINGS 0xce106254U --#define MENU_LABEL_SHADER_APPLY_CHANGES 0x4f7306b9U --#define MENU_LABEL_VALUE_SHADER_APPLY_CHANGES 0x5ecf945bU --#define MENU_LABEL_SAVE_NEW_CONFIG 0xcce9ab72U --#define MENU_LABEL_VALUE_SAVE_NEW_CONFIG 0xd49f2c94U --#define MENU_LABEL_ONSCREEN_DISPLAY_SETTINGS 0x67571029U --#define MENU_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS 0x67571029U --#define MENU_LABEL_VALUE_CHEAT_APPLY_CHANGES 0x7d5d3489U --#define MENU_LABEL_CHEAT_APPLY_CHANGES 0xde88aa27U --#define MENU_LABEL_CUSTOM_BIND 0x1e84b3fcU --#define MENU_LABEL_CUSTOM_BIND_ALL 0x79ac14f4U --#define MENU_LABEL_CUSTOM_BIND_DEFAULTS 0xe88f7b13U --#define MENU_LABEL_SAVESTATE 0x3a4849b5U --#define MENU_LABEL_LOADSTATE 0xa39eb286U --#define MENU_LABEL_UNDOLOADSTATE 0x464aaf5cU --#define MENU_LABEL_UNDOSAVESTATE 0xdcf4468bU --#define MENU_LABEL_RESUME_CONTENT 0xd9f088b0U --#define MENU_LABEL_VALUE_RESUME_CONTENT 0xae6e5911U --#define MENU_LABEL_VALUE_RESUME 0xce8ac2f6U --#define MENU_LABEL_RESTART_CONTENT 0x1ea2e224U --#define MENU_LABEL_RESTART_RETROARCH 0xb57d3d73U --#define MENU_LABEL_VALUE_RESTART_RETROARCH 0xcc0799f4U --#define MENU_LABEL_VALUE_RESTART_CONTENT 0xf23a2e85U --#define MENU_LABEL_TAKE_SCREENSHOT 0x6786e867U --#define MENU_LABEL_VALUE_TAKE_SCREENSHOT 0xab767128U --#define MENU_LABEL_CONFIGURATIONS 0x3e930a50U --#define MENU_LABEL_VALUE_CONFIGURATIONS 0xce036cfdU --#define MENU_LABEL_VALUE_CHEAT_FILE_SAVE_AS 0xf2498a2dU --#define MENU_LABEL_CHEAT_FILE_SAVE_AS 0x1f58dccaU --#define MENU_LABEL_VIDEO_SHADER_PRESET_SAVE_AS 0x3d6e5ce5U --#define MENU_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS 0x405d77b2U --#define MENU_LABEL_VALUE_REMAP_FILE_SAVE_CORE 0xd9891572U --#define MENU_LABEL_VALUE_REMAP_FILE_SAVE_GAME 0x9c487623U --#define MENU_LABEL_REMAP_FILE_SAVE_CORE 0x7c9d4c8fU --#define MENU_LABEL_REMAP_FILE_SAVE_GAME 0x7c9f41e0U --#define MENU_LABEL_CONTENT_COLLECTION_LIST 0x32d1df83U --#define MENU_LABEL_VALUE_CONTENT_COLLECTION_LIST 0xdb177ea0U --#define MENU_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE 0xbae7be3eU --#define MENU_LABEL_OSK_ENABLE 0x8e208498U --#define MENU_LABEL_AUDIO_MUTE 0xe0ca1151U --#define MENU_LABEL_VALUE_AUDIO_MUTE 0x5af25952U --#define MENU_LABEL_EXIT_EMULATOR 0x86d5d467U --#define MENU_LABEL_COLLECTION 0x5fea5991U --#define MENU_LABEL_USER_LANGUAGE 0x33ebaa27U --#define MENU_LABEL_VALUE_USER_LANGUAGE 0xd230a5a9U --#define MENU_LABEL_NETPLAY_NICKNAME 0x52204787U --#define MENU_LABEL_VALUE_NETPLAY_NICKNAME 0x75de3125U --#define MENU_LABEL_VIDEO_VI_WIDTH 0x6e4a6d3aU --#define MENU_LABEL_VALUE_VIDEO_VI_WIDTH 0x03c07e50U -- --#define MENU_LABEL_VIDEO_FORCE_ASPECT 0x8bbf9329U --#define MENU_LABEL_VALUE_VIDEO_FORCE_ASPECT 0xa5590df3U -- --#define MENU_LABEL_VIDEO_ASPECT_RATIO_AUTO 0xa7c31991U --#define MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO 0x40bd9f87U -- --#define MENU_LABEL_VIDEO_ASPECT_RATIO_INDEX 0x3b01a19aU --#define MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX 0x9ce00246U -- --#define MENU_LABEL_VIDEO_VFILTER 0x664f8397U --#define MENU_LABEL_VALUE_VIDEO_VFILTER 0xd58b0158U -- --#define MENU_LABEL_VIDEO_GPU_RECORD 0xb6059a65U --#define MENU_LABEL_VALUE_VIDEO_GPU_RECORD 0x2241deb7U -- --#define MENU_LABEL_RECORD_USE_OUTPUT_DIRECTORY 0x8343eff4U --#define MENU_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY 0x8282ff38U -- --#define MENU_LABEL_RECORD_CONFIG 0x11c3daf9U --#define MENU_LABEL_VALUE_RECORD_CONFIG 0xe9a8a33aU -- --#define MENU_LABEL_RECORD_PATH 0x016d7afaU --#define MENU_LABEL_VALUE_RECORD_PATH 0xeb15a0f1U -- --#define MENU_LABEL_VIDEO_POST_FILTER_RECORD 0xa7b6e724U --#define MENU_LABEL_VALUE_VIDEO_POST_FILTER_RECORD 0x1362eaf7U -- --#define MENU_LABEL_RECORD_ENABLE 0x1654e22aU --#define MENU_LABEL_VALUE_RECORD_ENABLE 0xee39aa6bU -- --#define MENU_VALUE_SECONDS 0x8b0028d4U --#define MENU_VALUE_STATUS 0xd1e57929U -- --#define MENU_LABEL_VALUE_CORE_INFO_CORE_NAME 0x2a031110U --#define MENU_LABEL_VALUE_CORE_INFO_CORE_LABEL 0x6a40d38fU --#define MENU_LABEL_VALUE_CORE_INFO_SYSTEM_NAME 0xaff88f0cU --#define MENU_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER 0x03be7018U --#define MENU_LABEL_VALUE_CORE_INFO_CATEGORIES 0xac3a39edU --#define MENU_LABEL_VALUE_CORE_INFO_AUTHORS 0x7167c44dU --#define MENU_LABEL_VALUE_CORE_INFO_PERMISSIONS 0x25d21423U --#define MENU_LABEL_VALUE_CORE_INFO_LICENSES 0x019b14bdU --#define MENU_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS 0xb8ff231cU --#define MENU_LABEL_VALUE_CORE_INFO_FIRMWARE 0x9ba2e164U --#define MENU_LABEL_VALUE_CORE_INFO_CORE_NOTES 0x6a6cfe78U -- --#define MENU_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE 0xbab040f0U --#define MENU_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION 0x333df14cU --#define MENU_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES 0x9515e369U --#define MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER 0x35817c25U --#define MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME 0x45d9b0e3U --#define MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS 0x412e46a4U --#define MENU_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL 0xcc6a17ebU --#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE 0xcda91ae0U --#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE 0x0ed5776cU --#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING 0x2b226d62U --#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED 0x75abb52dU --#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING 0x48c36402U --#define MENU_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER 0x32f901e9U --#define MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH 0x86a53f14U --#define MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT 0x3809e50dU --#define MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI 0xaf2540b8U --#define MENU_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT 0x3e91f988U --#define MENU_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT 0x9e893c21U --#define MENU_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT 0x91a47d95U --#define MENU_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT 0x9c9c8e3eU --#define MENU_LABEL_VALUE_SYSTEM_INFO_NETWORK_REMOTE_SUPPORT 0x1a817f5bU --#define MENU_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT 0x89849204U --#define MENU_LABEL_VALUE_SYSTEM_INFO_RTGA_SUPPORT 0x9615b53eU --#define MENU_LABEL_VALUE_SYSTEM_INFO_RBMP_SUPPORT 0x211afc81U --#define MENU_LABEL_VALUE_SYSTEM_INFO_RJPEG_SUPPORT 0xc70a5ea8U --#define MENU_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT 0xe1dcea36U --#define MENU_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT 0xf9bc2a42U --#define MENU_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT 0x3c2d6134U --#define MENU_LABEL_VALUE_SYSTEM_INFO_VULKAN_SUPPORT 0x6a06e373U --#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT 0xa4d164a4U --#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT 0xe2e627dcU --#define MENU_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT 0x282bf995U --#define MENU_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT 0x229cb16aU --#define MENU_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT 0xe34a0833U --#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT 0x9b01b08eU --#define MENU_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT 0xbac9f417U --#define MENU_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT 0xfea303f9U --#define MENU_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT 0xd590cd8fU --#define MENU_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT 0x79dc360eU --#define MENU_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT 0xe58b1160U --#define MENU_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT 0x504eed34U --#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT 0x8c91fddeU --#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT 0xd5503230U --#define MENU_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT 0x4c20387aU --#define MENU_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT 0xb7793da5U --#define MENU_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT 0x2f50e7f8U --#define MENU_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT 0xe8d32f1aU --#define MENU_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT 0x0e9d11acU --#define MENU_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT 0xb1f1735bU --#define MENU_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT 0xf961f590U --#define MENU_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT 0xf1fc48e9U --#define MENU_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT 0xcee4aad3U --#define MENU_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT 0xef0baba9U --#define MENU_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT 0x0c981cb1U --#define MENU_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT 0x3d8b7a12U --#define MENU_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT 0xdce2d3f9U --#define MENU_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT 0x98b4d864U --#define MENU_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT 0x896726b6U --#define MENU_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT 0xb9a9fd34U --#define MENU_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT 0x7d248acdU --#define MENU_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT 0x00f65983U --#define MENU_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT 0x50a8ce7cU --#define MENU_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT 0x71cc9801U --#define MENU_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT 0x793c2547U --#define MENU_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT 0x7dc8b560U -- --#define MENU_LABEL_VALUE_YES 0x957cbc05U --#define MENU_LABEL_VALUE_NO 0x521b0c11U -- --#define MENU_VALUE_BACK 0x7c825df6U --#define MENU_VALUE_DISABLED 0xe326e01dU --#define MENU_VALUE_PORT 0x7c8ad52aU -- --#define MENU_VALUE_LEFT_ANALOG 0xd168d0e2U --#define MENU_VALUE_RIGHT_ANALOG 0xf9244335U -- --#define MENU_VALUE_LANG_ENGLISH 0xcb4e554fU --#define MENU_VALUE_LANG_JAPANESE 0xfde6f60cU --#define MENU_VALUE_LANG_FRENCH 0xb3704d9bU --#define MENU_VALUE_LANG_SPANISH 0x053c7edbU --#define MENU_VALUE_LANG_GERMAN 0xb4e1541fU --#define MENU_VALUE_LANG_ITALIAN 0x0cc9a6c7U --#define MENU_VALUE_LANG_DUTCH 0x0d0fa55dU --#define MENU_VALUE_LANG_PORTUGUESE 0x2a19df58U --#define MENU_VALUE_LANG_RUSSIAN 0xc53481eaU --#define MENU_VALUE_LANG_KOREAN 0xbeeac9a5U --#define MENU_VALUE_LANG_CHINESE_TRADITIONAL 0x43f172d0U --#define MENU_VALUE_LANG_CHINESE_SIMPLIFIED 0x1ae5ee5bU --#define MENU_VALUE_LANG_ESPERANTO 0x1a933a76U --#define MENU_VALUE_LANG_POLISH 0xca915dd4U -- --#define MENU_VALUE_NONE 0x7c89bbd5U -- --#define MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE 0xbae2c7f6U -- --#define MENU_LABEL_VALUE_INPUT_USER_BINDS 0x75fda711U -- --#define MENU_LABEL_USE_BUILTIN_IMAGE_VIEWER 0x5203b5bbU --#define MENU_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER 0x1ab45d3eU -- --#define MENU_LABEL_OVERLAY_AUTOLOAD_PREFERRED 0xc9298cbdU --#define MENU_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED 0x0e27e33fU -- --#define MENU_LABEL_OPEN_ARCHIVE 0x78c0ca58U --#define MENU_LABEL_OPEN_ARCHIVE_DETECT_CORE 0x92442638U --#define MENU_LABEL_LOAD_ARCHIVE_DETECT_CORE 0x681f2f46U --#define MENU_LABEL_LOAD_ARCHIVE 0xc3834e66U -- --#define MENU_LABEL_VALUE_OPEN_ARCHIVE 0x96da22b9U --#define MENU_LABEL_VALUE_LOAD_ARCHIVE 0xe19ca6c7U -- --#define MENU_LABEL_VALUE_WHAT_IS_A_CORE_DESC 0xc832957eU -- --#define MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD 0x6e66ef07U --#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 -- --#define MENU_LABEL_SAVE_CURRENT_CONFIG 0x8840ba8bU --#define MENU_LABEL_VALUE_SAVE_CURRENT_CONFIG 0x9a1eb42dU -- --#define MENU_LABEL_INPUT_SMALL_KEYBOARD_ENABLE 0xe6736fc3U --#define MENU_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE 0xc5eefd76U -- --#define MENU_LABEL_INPUT_ICADE_ENABLE 0xcd534dd0U --#define MENU_LABEL_VALUE_INPUT_ICADE_ENABLE 0x67b18ee2U -- --#define CB_CORE_THUMBNAILS_DOWNLOAD 0xc9d6519fU -- --const char *menu_hash_to_str_de(uint32_t hash); --int menu_hash_get_help_de(uint32_t hash, char *s, size_t len); -- --const char *menu_hash_to_str_es(uint32_t hash); --int menu_hash_get_help_es(uint32_t hash, char *s, size_t len); -- --const char *menu_hash_to_str_fr(uint32_t hash); --int menu_hash_get_help_fr(uint32_t hash, char *s, size_t len); -- --const char *menu_hash_to_str_it(uint32_t hash); --int menu_hash_get_help_it(uint32_t hash, char *s, size_t len); -+const char *menu_hash_to_str_pl(enum menu_hash_enums msg); -+int menu_hash_get_help_pl(enum menu_hash_enums msg, char *s, size_t len); - --const char *menu_hash_to_str_nl(uint32_t hash); --int menu_hash_get_help_nl(uint32_t hash, char *s, size_t len); -+const char *menu_hash_to_str_pt(enum menu_hash_enums msg); -+int menu_hash_get_help_pt(enum menu_hash_enums msg, char *s, size_t len); - --const char *menu_hash_to_str_pl(uint32_t hash); --int menu_hash_get_help_pl(uint32_t hash, char *s, size_t len); -+const char *menu_hash_to_str_eo(enum menu_hash_enums msg); -+int menu_hash_get_help_eo(enum menu_hash_enums msg, char *s, size_t len); - --const char *menu_hash_to_str_pt(uint32_t hash); --int menu_hash_get_help_pt(uint32_t hash, char *s, size_t len); -+const char *menu_hash_to_str_us(enum menu_hash_enums msg); -+int menu_hash_get_help_us(enum menu_hash_enums msg, char *s, size_t len); - --const char *menu_hash_to_str_eo(uint32_t hash); --int menu_hash_get_help_eo(uint32_t hash, char *s, size_t len); -- --const char *menu_hash_to_str_us(uint32_t hash); --int menu_hash_get_help_us(uint32_t hash, char *s, size_t len); -- --const char *menu_hash_to_str(uint32_t hash); --int menu_hash_get_help(uint32_t hash, char *s, size_t len); -+const char *menu_hash_to_str(enum menu_hash_enums msg); -+int menu_hash_get_help(enum menu_hash_enums msg, char *s, size_t len); - - uint32_t menu_hash_calculate(const char *s); - -diff --git a/menu/menu_setting.c b/menu/menu_setting.c -index a3e3dd5..9c2de91 100644 ---- a/menu/menu_setting.c -+++ b/menu/menu_setting.c -@@ -82,6 +82,7 @@ struct rarch_setting_group_info - - struct rarch_setting - { -+ enum menu_hash_enums idx; - enum setting_type type; - - uint32_t size; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index e7b42de3e6..678236382a 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1833,6 +1833,15 @@ void menu_settings_list_current_add_cmd( (*list)[idx].cmd_trigger.idx = values; } +static void menu_settings_list_current_add_enum_idx( + rarch_setting_t **list, + rarch_setting_info_t *list_info, + enum menu_hash_enums enum_idx) +{ + unsigned idx = list_info->index - 1; + (*list)[idx].enum_idx = enum_idx; +} + int menu_setting_generic(rarch_setting_t *setting, bool wraparound) { @@ -3780,6 +3789,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_SETTINGS); CONFIG_ACTION( list, list_info, From 8910e66eb05136bf3efbb5a9d53d7ced7b31bcf6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jun 2016 23:47:42 +0200 Subject: [PATCH 007/371] Add more enum idxs --- menu/menu_hash.h | 2 + menu/menu_setting.c | 106 ++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 105 insertions(+), 3 deletions(-) diff --git a/menu/menu_hash.h b/menu/menu_hash.h index b937b38c98..8a1f157070 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -532,6 +532,8 @@ enum menu_hash_enums MENU_ENUM_LABEL_INPUT_DRIVER_LINUXRAW, MENU_ENUM_LABEL_INPUT_DRIVER_UDEV, + MENU_ENUM_LABEL_MENU_DRIVER, + MENU_ENUM_LABEL_VIDEO_DRIVER, MENU_ENUM_LABEL_VALUE_VIDEO_DRIVER, MENU_ENUM_LABEL_VIDEO_DRIVER_GL, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 678236382a..25aa6a4fb5 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3598,6 +3598,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, -1, 0, 1, true, false); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_STATE_SLOT); CONFIG_ACTION( list, list_info, @@ -3606,6 +3607,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_START_CORE); #if defined(HAVE_NETPLAY) && defined(HAVE_NETWORKGAMEPAD) CONFIG_ACTION( @@ -3615,6 +3617,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_START_NET_RETROPAD); #endif CONFIG_ACTION( @@ -3624,6 +3627,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CONTENT_SETTINGS); #ifndef HAVE_DYNAMIC if (frontend_driver_has_fork()) @@ -3645,6 +3649,7 @@ static bool setting_append_list( (*list)[list_info->index - 1].values = ext_name; menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_LOAD_CORE); settings_data_list_current_add_flags(list, list_info, SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_LIST); } } @@ -3655,6 +3660,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LOAD_CONTENT_LIST); if (settings->history_list_enable) { @@ -3665,6 +3671,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY); } @@ -3678,6 +3685,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_ADD_CONTENT_LIST); #endif CONFIG_ACTION( @@ -3687,6 +3695,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_ONLINE_UPDATER); #endif CONFIG_ACTION( @@ -3696,6 +3705,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SETTINGS); CONFIG_ACTION( list, list_info, @@ -3704,6 +3714,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INFORMATION_LIST); #ifndef HAVE_DYNAMIC CONFIG_ACTION( @@ -3714,6 +3725,7 @@ static bool setting_append_list( &subgroup_info, parent_group); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_RESTART_RETROARCH); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RESTART_RETROARCH); #endif CONFIG_ACTION( @@ -3723,6 +3735,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CONFIGURATIONS); CONFIG_ACTION( list, list_info, @@ -3732,6 +3745,7 @@ static bool setting_append_list( &subgroup_info, parent_group); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG); CONFIG_ACTION( list, list_info, @@ -3741,6 +3755,7 @@ static bool setting_append_list( &subgroup_info, parent_group); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CONFIG); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_NEW_CONFIG); CONFIG_ACTION( list, list_info, @@ -3749,6 +3764,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_HELP_LIST); #if !defined(IOS) /* Apple rejects iOS apps that lets you forcibly quit an application. */ @@ -3760,6 +3776,7 @@ static bool setting_append_list( &subgroup_info, parent_group); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_QUIT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_QUIT_RETROARCH); #endif #if defined(HAVE_LAKKA) @@ -3771,6 +3788,7 @@ static bool setting_append_list( &subgroup_info, parent_group); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_SHUTDOWN); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SHUTDOWN); CONFIG_ACTION( list, list_info, @@ -3780,6 +3798,7 @@ static bool setting_append_list( &subgroup_info, parent_group); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REBOOT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_REBOOT); #endif CONFIG_ACTION( @@ -3798,6 +3817,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PLAYLIST_SETTINGS); for (user = 0; user < MAX_USERS; user++) setting_append_list_input_player_options(list, list_info, parent_group, user); @@ -3829,6 +3849,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); (*list)[list_info->index - 1].action_left = setting_string_action_left_driver; (*list)[list_info->index - 1].action_right = setting_string_action_right_driver; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_DRIVER); CONFIG_STRING_OPTIONS( list, list_info, @@ -3846,6 +3867,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); (*list)[list_info->index - 1].action_left = setting_string_action_left_driver; (*list)[list_info->index - 1].action_right = setting_string_action_right_driver; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_JOYPAD_DRIVER); CONFIG_STRING_OPTIONS( list, list_info, @@ -3863,6 +3885,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); (*list)[list_info->index - 1].action_left = setting_string_action_left_driver; (*list)[list_info->index - 1].action_right = setting_string_action_right_driver; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_DRIVER); CONFIG_STRING_OPTIONS( list, list_info, @@ -3880,6 +3903,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); (*list)[list_info->index - 1].action_left = setting_string_action_left_driver; (*list)[list_info->index - 1].action_right = setting_string_action_right_driver; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_DRIVER); CONFIG_STRING_OPTIONS( list, list_info, @@ -3897,6 +3921,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); (*list)[list_info->index - 1].action_left = setting_string_action_left_driver; (*list)[list_info->index - 1].action_right = setting_string_action_right_driver; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER); CONFIG_STRING_OPTIONS( list, list_info, @@ -3914,6 +3939,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); (*list)[list_info->index - 1].action_left = setting_string_action_left_driver; (*list)[list_info->index - 1].action_right = setting_string_action_right_driver; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CAMERA_DRIVER); CONFIG_STRING_OPTIONS( list, list_info, @@ -3931,6 +3957,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); (*list)[list_info->index - 1].action_left = setting_string_action_left_driver; (*list)[list_info->index - 1].action_right = setting_string_action_right_driver; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LOCATION_DRIVER); CONFIG_STRING_OPTIONS( list, list_info, @@ -3948,6 +3975,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); (*list)[list_info->index - 1].action_left = setting_string_action_left_driver; (*list)[list_info->index - 1].action_right = setting_string_action_right_driver; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MENU_DRIVER); CONFIG_STRING_OPTIONS( list, list_info, @@ -3965,6 +3993,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); (*list)[list_info->index - 1].action_left = setting_string_action_left_driver; (*list)[list_info->index - 1].action_right = setting_string_action_right_driver; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORD_DRIVER); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -3992,6 +4021,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT); CONFIG_BOOL( list, list_info, @@ -4007,6 +4037,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN); CONFIG_BOOL( list, list_info, @@ -4022,6 +4053,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -4048,6 +4080,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT); CONFIG_BOOL( list, list_info, @@ -4062,6 +4095,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_SPECIFIC_CONFIG); CONFIG_BOOL( list, list_info, @@ -4076,7 +4110,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS); CONFIG_BOOL( list, list_info, @@ -4091,6 +4125,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUTO_OVERRIDES_ENABLE); CONFIG_BOOL( list, list_info, @@ -4105,6 +4140,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUTO_REMAPS_ENABLE); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -4134,6 +4170,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LOG_VERBOSITY); CONFIG_UINT( list, list_info, @@ -4150,6 +4187,7 @@ static bool setting_append_list( (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_libretro_log_level; settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LIBRETRO_LOG_LEVEL); CONFIG_BOOL( list, list_info, @@ -4165,6 +4203,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DEBUG_PANEL_ENABLE); END_SUB_GROUP(list, list_info, parent_group); @@ -4187,6 +4226,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PERFCNT_ENABLE); } END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -4212,6 +4252,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE); CONFIG_BOOL( list, list_info, @@ -4226,6 +4267,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE); CONFIG_BOOL( list, list_info, @@ -4241,6 +4283,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE); #ifdef HAVE_THREADS CONFIG_UINT( @@ -4259,6 +4302,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_autosave_interval; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUTOSAVE_INTERVAL); #endif CONFIG_BOOL( @@ -4274,6 +4318,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVESTATE_AUTO_INDEX); CONFIG_BOOL( list, list_info, @@ -4288,6 +4333,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVESTATE_AUTO_SAVE); CONFIG_BOOL( list, list_info, @@ -4302,6 +4348,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVESTATE_AUTO_LOAD); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -4329,6 +4376,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REWIND_TOGGLE); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_REWIND_ENABLE); #if 0 CONFIG_SIZE( @@ -4355,6 +4403,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 32768, 1, true, false); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_REWIND_GRANULARITY); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -4379,6 +4428,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SUSPEND_SCREENSAVER_ENABLE); CONFIG_BOOL( list, list_info, @@ -4393,6 +4443,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_FPS_SHOW); END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP(list, list_info, "Platform-specific", &group_info, &subgroup_info, parent_group); @@ -4420,6 +4471,7 @@ static bool setting_append_list( (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_video_monitor_index; settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX); if (video_driver_has_windowed()) { @@ -4438,6 +4490,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FULLSCREEN); } if (video_driver_has_windowed()) { @@ -4454,6 +4507,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN); } CONFIG_FLOAT( @@ -4469,6 +4523,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 0, 0.001, true, false); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_REFRESH_RATE); CONFIG_FLOAT( list, list_info, @@ -4487,6 +4542,7 @@ static bool setting_append_list( (*list)[list_info->index - 1].action_select = &setting_action_ok_video_refresh_rate_auto; (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_st_float_video_refresh_rate_auto; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_AUTO); if (string_is_equal(settings->video.driver, "gl")) { @@ -4505,6 +4561,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FORCE_SRGB_DISABLE); } END_SUB_GROUP(list, list_info, parent_group); @@ -4535,6 +4592,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_aspect_ratio_index; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX); CONFIG_INT( list, list_info, @@ -4552,6 +4610,7 @@ static bool setting_append_list( list, list_info, CMD_EVENT_VIDEO_APPLY_STATE_CHANGES); + /* TODO - add enum idx */ CONFIG_INT( list, list_info, @@ -4569,6 +4628,7 @@ static bool setting_append_list( list, list_info, CMD_EVENT_VIDEO_APPLY_STATE_CHANGES); + /* TODO - add enum idx */ CONFIG_UINT( list, list_info, @@ -4589,6 +4649,7 @@ static bool setting_append_list( list, list_info, CMD_EVENT_VIDEO_APPLY_STATE_CHANGES); + /* TODO - add enum idx */ CONFIG_UINT( list, list_info, @@ -4609,6 +4670,7 @@ static bool setting_append_list( list, list_info, CMD_EVENT_VIDEO_APPLY_STATE_CHANGES); + /* TODO - add enum idx */ END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP(list, list_info, "Scaling", &group_info, &subgroup_info, parent_group); @@ -4628,6 +4690,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1.0, 10.0, 1.0, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SCALE); } CONFIG_BOOL( @@ -4647,6 +4710,7 @@ static bool setting_append_list( list, list_info, CMD_EVENT_VIDEO_APPLY_STATE_CHANGES); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER); #ifdef GEKKO CONFIG_UINT( @@ -4661,6 +4725,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 640, 720, 2, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_VI_WIDTH); CONFIG_BOOL( list, list_info, @@ -4675,6 +4740,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_VFILTER); #endif CONFIG_BOOL( @@ -4690,7 +4756,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SMOOTH); CONFIG_UINT( list, list_info, @@ -4707,6 +4773,7 @@ static bool setting_append_list( (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_video_rotation; settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_ROTATION); END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP( @@ -4733,6 +4800,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_THREADED); #endif CONFIG_BOOL( @@ -4748,6 +4816,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_VSYNC); CONFIG_UINT( list, list_info, @@ -4763,6 +4832,7 @@ static bool setting_append_list( menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_VIDEO_SET_BLOCKING_STATE); menu_settings_list_current_add_range(list, list_info, 1, 4, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL); CONFIG_BOOL( list, list_info, @@ -4777,6 +4847,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_HARD_SYNC); CONFIG_UINT( list, list_info, @@ -4791,6 +4862,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES); CONFIG_UINT( list, list_info, @@ -4805,6 +4877,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 15, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FRAME_DELAY); #if !defined(RARCH_MOBILE) CONFIG_BOOL( @@ -4820,6 +4893,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION); #endif END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP( @@ -4844,6 +4918,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_GPU_SCREENSHOT); CONFIG_BOOL( list, list_info, @@ -4859,6 +4934,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_ALLOW_ROTATE); CONFIG_BOOL( list, list_info, @@ -4873,7 +4949,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN); CONFIG_PATH( list, list_info, @@ -4890,6 +4966,7 @@ static bool setting_append_list( menu_settings_list_current_add_values(list, list_info, "filt"); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FILTER); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -4916,6 +4993,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_ENABLE); CONFIG_BOOL( list, list_info, @@ -4930,6 +5008,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_MUTE); CONFIG_FLOAT( list, list_info, @@ -4944,6 +5023,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, -80, 12, 1.0, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_VOLUME); #ifdef __CELLOS_LV2__ CONFIG_BOOL( @@ -4959,6 +5039,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SYSTEM_BGM_ENABLE); #endif END_SUB_GROUP(list, list_info, parent_group); @@ -4986,6 +5067,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_SYNC); CONFIG_UINT( list, list_info, @@ -5000,6 +5082,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 8, 512, 16.0, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_LATENCY); CONFIG_FLOAT( list, list_info, @@ -5022,6 +5105,7 @@ static bool setting_append_list( true, false); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA); CONFIG_FLOAT( list, list_info, @@ -5044,6 +5128,7 @@ static bool setting_append_list( true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW); CONFIG_UINT( list, list_info, @@ -5057,6 +5142,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_BLOCK_FRAMES); END_SUB_GROUP(list, list_info, parent_group); @@ -5085,6 +5171,7 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT | SD_FLAG_ADVANCED); (*list)[list_info->index - 1].action_left = &setting_string_action_left_audio_device; (*list)[list_info->index - 1].action_right = &setting_string_action_right_audio_device; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_DEVICE); CONFIG_UINT( list, list_info, @@ -5098,6 +5185,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE); CONFIG_PATH( list, list_info, @@ -5114,6 +5202,7 @@ static bool setting_append_list( menu_settings_list_current_add_values(list, list_info, "dsp"); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_DSP_FILTER_INIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -5141,6 +5230,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, MAX_USERS, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_MAX_USERS); CONFIG_UINT( list, list_info, @@ -5154,6 +5244,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR); #if TARGET_OS_IPHONE CONFIG_BOOL( @@ -5169,6 +5260,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR); CONFIG_UINT( list, list_info, @@ -5182,6 +5274,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE); CONFIG_BOOL( list, list_info, @@ -5196,6 +5289,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_SMALL_KEYBOARD_ENABLE); #endif #ifdef ANDROID @@ -5212,6 +5306,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_BACK_AS_MENU_TOGGLE); #endif CONFIG_UINT( @@ -5226,6 +5321,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true); + /* TODO - add enum idx */ CONFIG_BOOL( list, list_info, @@ -5240,6 +5336,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_REMAP_BINDS_ENABLE); CONFIG_BOOL( list, list_info, @@ -5254,6 +5351,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE); CONFIG_BOOL( list, list_info, @@ -5269,6 +5367,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW); CONFIG_BOOL( list, list_info, @@ -5284,6 +5383,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND); END_SUB_GROUP(list, list_info, parent_group); From fa46693f77bff2d242ed479807f70aaa35e3afd6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 00:52:15 +0200 Subject: [PATCH 008/371] Add enum_idx values --- menu/menu_hash.h | 4 ++ menu/menu_setting.c | 127 ++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 127 insertions(+), 4 deletions(-) diff --git a/menu/menu_hash.h b/menu/menu_hash.h index 8a1f157070..b2c2af89bf 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -28,6 +28,10 @@ enum menu_hash_enums MENU_ENUM_LABEL_CB_THUMBNAILS_UPDATER_DOWNLOAD, + MENU_ENUM_LABEL_MENU_THROTTLE_FRAMERATE, + MENU_ENUM_LABEL_MENU_WALLPAPER, + MENU_ENUM_LABEL_MENU_LINEAR_FILTER, + MENU_ENUM_LABEL_THUMBNAILS_UPDATER_LIST, MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 25aa6a4fb5..a69d908731 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -5385,7 +5385,6 @@ static bool setting_append_list( settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND); - END_SUB_GROUP(list, list_info, parent_group); @@ -5410,6 +5409,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 1.00, 0.001, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_AXIS_THRESHOLD); CONFIG_UINT( list, list_info, @@ -5424,6 +5424,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 0, 1, true, false); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_TURBO_PERIOD); CONFIG_UINT( list, list_info, @@ -5438,6 +5439,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 0, 1, true, false); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_DUTY_CYCLE); END_SUB_GROUP(list, list_info, parent_group); @@ -5450,6 +5452,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_HOTKEY_BINDS); for (user = 0; user < MAX_USERS; user++) { @@ -5468,6 +5471,7 @@ static bool setting_append_list( parent_group); (*list)[list_info->index - 1].index = user + 1; (*list)[list_info->index - 1].index_offset = user; + /* add enum_idx */ } END_SUB_GROUP(list, list_info, parent_group); @@ -5499,6 +5503,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORD_ENABLE); CONFIG_PATH( list, list_info, @@ -5514,6 +5519,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_values(list, list_info, "cfg"); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORD_CONFIG); CONFIG_STRING( list, list_info, @@ -5528,6 +5534,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORD_PATH); CONFIG_BOOL( list, list_info, @@ -5542,6 +5549,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORD_USE_OUTPUT_DIRECTORY); END_SUB_GROUP(list, list_info, parent_group); @@ -5560,6 +5568,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_POST_FILTER_RECORD); CONFIG_BOOL( list, list_info, @@ -5574,6 +5583,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_GPU_RECORD); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -5604,6 +5614,7 @@ static bool setting_append_list( &retro_keybinds_1[i], &group_info, &subgroup_info, parent_group); (*list)[list_info->index - 1].bind_type = i + MENU_SETTINGS_BIND_BEGIN; + /* TODO - add enum_idx */ } END_SUB_GROUP(list, list_info, parent_group); @@ -5633,6 +5644,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_SET_FRAME_LIMIT); menu_settings_list_current_add_range(list, list_info, 0, 10, 1.0, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_FASTFORWARD_RATIO); CONFIG_FLOAT( list, list_info, @@ -5647,6 +5659,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 10, 1.0, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SLOWMOTION_RATIO); CONFIG_BOOL( list, list_info, @@ -5661,6 +5674,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MENU_THROTTLE_FRAMERATE); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -5690,6 +5704,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FONT_ENABLE); CONFIG_PATH( list, list_info, @@ -5704,6 +5719,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FONT_PATH); CONFIG_FLOAT( list, list_info, @@ -5718,6 +5734,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1.00, 100.00, 1.0, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FONT_SIZE); CONFIG_FLOAT( list, list_info, @@ -5732,6 +5749,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_X); CONFIG_FLOAT( list, list_info, @@ -5746,6 +5764,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_Y); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -5774,6 +5793,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE); CONFIG_BOOL( list, list_info, @@ -5789,6 +5809,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OVERLAY_AUTOLOAD_PREFERRED); CONFIG_BOOL( list, list_info, @@ -5804,6 +5825,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU); CONFIG_BOOL( list, list_info, @@ -5818,6 +5840,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE); CONFIG_PATH( list, list_info, @@ -5834,6 +5857,7 @@ static bool setting_append_list( menu_settings_list_current_add_values(list, list_info, "cfg"); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_OVERLAY_INIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OVERLAY_PRESET); CONFIG_FLOAT( list, list_info, @@ -5850,6 +5874,7 @@ static bool setting_append_list( menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_OVERLAY_SET_ALPHA_MOD); menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OVERLAY_OPACITY); CONFIG_FLOAT( list, list_info, @@ -5866,6 +5891,7 @@ static bool setting_append_list( menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_OVERLAY_SET_SCALE_FACTOR); menu_settings_list_current_add_range(list, list_info, 0, 2, 0.01, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OVERLAY_SCALE); END_SUB_GROUP(list, list_info, parent_group); @@ -5885,6 +5911,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_values(list, list_info, "cfg"); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_KEYBOARD_OVERLAY_PRESET); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -5913,6 +5940,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_values(list, list_info, "png"); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MENU_WALLPAPER); CONFIG_BOOL( list, list_info, @@ -5927,6 +5955,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DYNAMIC_WALLPAPER); CONFIG_BOOL( @@ -5944,6 +5973,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_PAUSE_LIBRETRO); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PAUSE_LIBRETRO); CONFIG_BOOL( list, list_info, @@ -5958,6 +5988,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MOUSE_ENABLE); CONFIG_BOOL( list, list_info, @@ -5972,6 +6003,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_POINTER_ENABLE); CONFIG_BOOL( list, list_info, @@ -5986,6 +6018,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MENU_LINEAR_FILTER); #ifdef RARCH_MOBILE /* We don't want mobile users being able to switch this off. */ @@ -6012,6 +6045,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND); END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP(list, list_info, "Settings View", &group_info, &subgroup_info, parent_group); @@ -6029,6 +6063,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SHOW_ADVANCED_SETTINGS); #ifdef HAVE_THREADS CONFIG_BOOL( @@ -6045,6 +6080,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE); #endif /* These colors are hints. The menu driver is not required to use them. */ @@ -6061,6 +6097,7 @@ static bool setting_append_list( general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_ENTRY_NORMAL_COLOR); CONFIG_HEX( list, list_info, @@ -6075,6 +6112,7 @@ static bool setting_append_list( general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_ENTRY_HOVER_COLOR); CONFIG_HEX( list, list_info, @@ -6089,13 +6127,13 @@ static bool setting_append_list( general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_TITLE_COLOR); END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP(list, list_info, "Display", &group_info, &subgroup_info, parent_group); - /* only glui uses these values, don't show them on other drivers */ + /* only GLUI uses these values, don't show them on other drivers */ if (string_is_equal(settings->menu.driver, "glui")) { CONFIG_BOOL( @@ -6111,6 +6149,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DPI_OVERRIDE_ENABLE); CONFIG_UINT( list, list_info, @@ -6124,7 +6163,9 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 72, 999, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DPI_OVERRIDE_VALUE); } + /* only XMB uses these values, don't show them on other drivers */ if (string_is_equal(settings->menu.driver, "xmb")) { @@ -6140,6 +6181,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 100, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_ALPHA_FACTOR); CONFIG_UINT( list, list_info, @@ -6153,6 +6195,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 100, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_SCALE_FACTOR); CONFIG_PATH( list, list_info, @@ -6167,6 +6210,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_FONT); CONFIG_UINT( list, list_info, @@ -6180,6 +6224,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 4, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_THEME); CONFIG_BOOL( list, list_info, @@ -6194,6 +6239,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_SHADOWS_ENABLE); #ifdef HAVE_SHADERPIPELINE CONFIG_UINT( @@ -6208,6 +6254,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_RIBBON_ENABLE); #endif CONFIG_UINT( @@ -6222,6 +6269,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 8, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_GRADIENT); } CONFIG_BOOL( @@ -6237,6 +6285,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN); CONFIG_UINT( list, list_info, @@ -6250,6 +6299,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_THUMBNAILS); CONFIG_BOOL( list, list_info, @@ -6264,6 +6314,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_TIMEDATE_ENABLE); CONFIG_BOOL( list, list_info, @@ -6278,6 +6329,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_ENABLE); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -6304,6 +6356,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -6318,6 +6371,7 @@ static bool setting_append_list( START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); if (!string_is_equal(settings->record.driver, "null")) + { CONFIG_BOOL( list, list_info, &settings->multimedia.builtin_mediaplayer_enable, @@ -6331,6 +6385,8 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_USE_BUILTIN_PLAYER); + } #ifdef HAVE_IMAGEVIEWER @@ -6347,6 +6403,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_USE_BUILTIN_IMAGE_VIEWER); #endif END_SUB_GROUP(list, list_info, parent_group); @@ -6375,6 +6432,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PAUSE_NONACTIVE); CONFIG_BOOL( list, list_info, @@ -6391,6 +6449,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION); CONFIG_BOOL( list, list_info, @@ -6406,6 +6465,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_UI_COMPANION_ENABLE); CONFIG_BOOL( list, list_info, @@ -6421,6 +6481,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT); CONFIG_BOOL( list, list_info, @@ -6435,6 +6496,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_UI_MENUBAR_ENABLE); END_SUB_GROUP(list, list_info, parent_group); @@ -6465,6 +6527,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_HISTORY_LIST_ENABLE); #endif CONFIG_UINT( @@ -6479,6 +6542,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 0, 1.0, true, false); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -6503,6 +6567,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEEVOS_ENABLE); CONFIG_BOOL( list, list_info, @@ -6517,6 +6582,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEEVOS_TEST_UNOFFICIAL); CONFIG_BOOL( list, list_info, @@ -6532,6 +6598,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -6557,6 +6624,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_UPDATER_BUILDBOT_URL); CONFIG_STRING( list, list_info, @@ -6571,6 +6639,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_BUILDBOT_ASSETS_URL); CONFIG_BOOL( list, list_info, @@ -6585,6 +6654,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -6617,6 +6687,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_ENABLE); CONFIG_BOOL( list, list_info, @@ -6631,6 +6702,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_CLIENT_SWAP_INPUT); CONFIG_STRING( list, list_info, @@ -6645,6 +6717,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS); CONFIG_BOOL( list, list_info, @@ -6659,6 +6732,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_MODE); CONFIG_BOOL( list, list_info, @@ -6673,6 +6747,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE); CONFIG_UINT( list, list_info, @@ -6687,6 +6762,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 10, 1, true, false); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES); CONFIG_UINT( list, list_info, @@ -6701,6 +6777,7 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_TCP_UDP_PORT); END_SUB_GROUP(list, list_info, parent_group); @@ -6728,6 +6805,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETWORK_CMD_ENABLE); CONFIG_UINT( list, list_info, @@ -6742,6 +6820,7 @@ static bool setting_append_list( NULL); menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETWORK_CMD_PORT); CONFIG_BOOL( list, list_info, @@ -6757,6 +6836,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETWORK_REMOTE_ENABLE); CONFIG_UINT( list, list_info, @@ -6772,6 +6852,7 @@ static bool setting_append_list( NULL); menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + /* TODO/FIXME - add enum_idx */ for(user = 0; user < settings->input.max_users; user++) { @@ -6797,6 +6878,7 @@ static bool setting_append_list( general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); settings_data_list_current_add_free_flags(list, list_info, SD_FREE_FLAG_NAME | SD_FREE_FLAG_SHORT); + /* TODO/FIXME - add enum_idx */ } CONFIG_BOOL( @@ -6813,6 +6895,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_STDIN_CMD_ENABLE); #endif END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -6844,6 +6927,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); (*list)[list_info->index - 1].change_handler = ssh_enable_toggle_change_handler; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SSH_ENABLE); CONFIG_BOOL( list, list_info, @@ -6859,6 +6943,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); (*list)[list_info->index - 1].change_handler = samba_enable_toggle_change_handler; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAMBA_ENABLE); CONFIG_BOOL( list, list_info, @@ -6874,6 +6959,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); (*list)[list_info->index - 1].change_handler = bluetooth_enable_toggle_change_handler; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_BLUETOOTH_ENABLE); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -6896,6 +6982,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_ACCOUNTS_LIST); CONFIG_STRING( list, list_info, @@ -6910,6 +6997,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_NICKNAME); #ifdef HAVE_LANGEXTRA CONFIG_UINT( @@ -6935,6 +7023,7 @@ static bool setting_append_list( menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_REFRESH); (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_user_language; + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_USER_LANGUAGE); #endif END_SUB_GROUP(list, list_info, parent_group); @@ -6957,6 +7046,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS); #endif END_SUB_GROUP(list, list_info, parent_group); @@ -6985,6 +7075,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEEVOS_USERNAME); CONFIG_STRING( list, list_info, @@ -6999,6 +7090,7 @@ static bool setting_append_list( general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEEVOS_PASSWORD); #endif END_SUB_GROUP(list, list_info, parent_group); @@ -7030,6 +7122,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SYSTEM_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7048,6 +7141,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_ASSETS_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7066,6 +7160,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_ASSETS_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7084,6 +7179,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7102,6 +7198,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_THUMBNAILS_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7120,7 +7217,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7139,6 +7236,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RGUI_CONFIG_DIRECTORY); CONFIG_DIR( @@ -7159,6 +7257,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LIBRETRO_DIR_PATH); CONFIG_DIR( list, list_info, @@ -7178,6 +7277,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LIBRETRO_INFO_PATH); #ifdef HAVE_LIBRETRODB CONFIG_DIR( @@ -7197,6 +7297,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7215,6 +7316,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CURSOR_DIRECTORY); #endif CONFIG_DIR( @@ -7234,6 +7336,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEAT_DATABASE_PATH); CONFIG_DIR( list, list_info, @@ -7252,6 +7355,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FILTER_DIR); CONFIG_DIR( list, list_info, @@ -7270,6 +7374,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_FILTER_DIR); CONFIG_DIR( list, list_info, @@ -7288,6 +7393,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SHADER_DIR); if (!string_is_equal(settings->record.driver, "null")) { @@ -7308,6 +7414,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORDING_OUTPUT_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7326,6 +7433,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORDING_CONFIG_DIRECTORY); } #ifdef HAVE_OVERLAY CONFIG_DIR( @@ -7345,6 +7453,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OVERLAY_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7363,6 +7472,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OSK_OVERLAY_DIRECTORY); #endif CONFIG_DIR( @@ -7382,6 +7492,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7400,6 +7511,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_JOYPAD_AUTOCONFIG_DIR); CONFIG_DIR( list, list_info, @@ -7418,6 +7530,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_REMAPPING_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7436,6 +7549,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PLAYLIST_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7454,6 +7568,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVEFILE_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7472,6 +7587,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVESTATE_DIRECTORY); CONFIG_DIR( list, list_info, @@ -7490,6 +7606,7 @@ static bool setting_append_list( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CACHE_DIRECTORY); END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); @@ -7518,6 +7635,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CAMERA_ALLOW); } if (!string_is_equal(settings->location.driver, "null")) @@ -7535,6 +7653,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LOCATION_ALLOW); } END_SUB_GROUP(list, list_info, parent_group); From 49a2a61354de91d960102573bb13ac740df627fc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 00:57:09 +0200 Subject: [PATCH 009/371] (Android) Buildfix --- menu/menu_hash.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/menu/menu_hash.h b/menu/menu_hash.h index b2c2af89bf..7b21d5a390 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -28,6 +28,8 @@ enum menu_hash_enums MENU_ENUM_LABEL_CB_THUMBNAILS_UPDATER_DOWNLOAD, + MENU_ENUM_LABEL_INPUT_BACK_AS_MENU_TOGGLE, + MENU_ENUM_LABEL_MENU_THROTTLE_FRAMERATE, MENU_ENUM_LABEL_MENU_WALLPAPER, MENU_ENUM_LABEL_MENU_LINEAR_FILTER, From 0ee7eeb450512616b3402271f0745db0a09db922 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 00:57:54 +0200 Subject: [PATCH 010/371] Cleanup unused variable warning --- frontend/drivers/platform_linux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/drivers/platform_linux.c b/frontend/drivers/platform_linux.c index 7742a0140f..5a39196ea3 100644 --- a/frontend/drivers/platform_linux.c +++ b/frontend/drivers/platform_linux.c @@ -1173,7 +1173,6 @@ static void frontend_linux_get_os(char *s, static void frontend_linux_get_env(int *argc, char *argv[], void *data, void *params_data) { - char base_path[PATH_MAX] = {0}; #ifdef ANDROID int32_t major, minor, rel; char device_model[PROP_VALUE_MAX] = {0}; @@ -1632,6 +1631,7 @@ static void frontend_linux_get_env(int *argc, snprintf(g_defaults.settings.menu, sizeof(g_defaults.settings.menu), "xmb"); #else + char base_path[PATH_MAX] = {0}; const char *xdg = getenv("XDG_CONFIG_HOME"); const char *home = getenv("HOME"); From fef343ff9ef93ced4ac908f2c1f178f68660b17e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 01:06:58 +0200 Subject: [PATCH 011/371] Create menu_setting_find_enum --- menu/menu_setting.c | 35 +++++++++++++++++++++++++++++++++++ menu/menu_setting.h | 4 ++++ 2 files changed, 39 insertions(+) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index a69d908731..9952eca247 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2040,6 +2040,29 @@ static rarch_setting_t *menu_setting_find_internal(rarch_setting_t *setting, return NULL; } +static rarch_setting_t *menu_setting_find_internal_enum(rarch_setting_t *setting, + enum menu_hash_enums enum_idx) +{ + for (; menu_setting_get_type(setting) != ST_NONE; menu_settings_list_increment(&setting)) + { + const char *name = menu_setting_get_name(setting); + const char *short_description = menu_setting_get_short_description(setting); + + if (setting->enum_idx == enum_idx && menu_setting_get_type(setting) <= ST_GROUP) + { + if (string_is_empty(short_description)) + return NULL; + + if (setting->read_handler) + setting->read_handler(setting); + + return setting; + } + } + + return NULL; +} + /** * menu_setting_find: * @settings : pointer to settings @@ -2064,6 +2087,18 @@ rarch_setting_t *menu_setting_find(const char *label) return menu_setting_find_internal(setting, label, needle); } +rarch_setting_t *menu_setting_find_enum(enum menu_hash_enums enum_idx) +{ + rarch_setting_t *setting = NULL; + + menu_entries_ctl(MENU_ENTRIES_CTL_SETTINGS_GET, &setting); + + if (!setting || enum_idx == 0) + return NULL; + + return menu_setting_find_internal_enum(setting, enum_idx); +} + int menu_setting_set_flags(rarch_setting_t *setting) { if (!setting) diff --git a/menu/menu_setting.h b/menu/menu_setting.h index bc91dfb00b..9e5b5395a9 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -26,6 +26,8 @@ #include "../command.h" #include "../input/input_driver.h" +#include "menu_hash.h" + RETRO_BEGIN_DECLS enum setting_type @@ -286,6 +288,8 @@ int menu_setting_set(unsigned type, const char *label, **/ rarch_setting_t *menu_setting_find(const char *label); +rarch_setting_t *menu_setting_find_enum(enum menu_hash_enums enum_idx); + /** * setting_set_with_string_representation: * @setting : pointer to setting From 1159ca17ffd1199d517dca53ae0ab61185bbd2a6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 01:15:37 +0200 Subject: [PATCH 012/371] Start using menu_entries_add_enum --- menu/menu_displaylist.c | 12 ++++++++---- menu/menu_entries.c | 35 +++++++++++++++++++++++++++++++++++ menu/menu_entries.h | 4 ++++ 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index f35b233eba..e009da08db 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2331,24 +2331,28 @@ static int menu_displaylist_parse_load_content_settings( runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_RESUME_CONTENT), menu_hash_to_str(MENU_LABEL_RESUME_CONTENT), + MENU_ENUM_LABEL_RESUME_CONTENT, MENU_SETTING_ACTION_RUN, 0, 0); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_RESTART_CONTENT), menu_hash_to_str(MENU_LABEL_RESTART_CONTENT), + MENU_ENUM_LABEL_RESTART_CONTENT, MENU_SETTING_ACTION_RUN, 0, 0); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_CLOSE_CONTENT), menu_hash_to_str(MENU_LABEL_CLOSE_CONTENT), + MENU_ENUM_LABEL_CLOSE_CONTENT, MENU_SETTING_ACTION_CLOSE, 0, 0); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_TAKE_SCREENSHOT), menu_hash_to_str(MENU_LABEL_TAKE_SCREENSHOT), + MENU_ENUM_LABEL_TAKE_SCREENSHOT, MENU_SETTING_ACTION_SCREENSHOT, 0, 0); menu_displaylist_parse_settings(menu, info, diff --git a/menu/menu_entries.c b/menu/menu_entries.c index e526d8a522..c02043b8b0 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -538,6 +538,41 @@ void menu_entries_add(file_list_t *list, const char *path, const char *label, menu_cbs_init(list, cbs, path, label, type, idx); } +void menu_entries_add_enum(file_list_t *list, const char *path, const char *label, + enum menu_hash_enums enum_idx, + unsigned type, size_t directory_ptr, size_t entry_idx) +{ + menu_ctx_list_t list_info; + size_t idx; + menu_file_list_cbs_t *cbs = NULL; + if (!list || !label) + return; + + file_list_append(list, path, label, type, directory_ptr, entry_idx); + + idx = list->size - 1; + + list_info.list = list; + list_info.path = path; + list_info.label = label; + list_info.idx = idx; + + menu_driver_ctl(RARCH_MENU_CTL_LIST_INSERT, &list_info); + + file_list_free_actiondata(list, idx); + cbs = (menu_file_list_cbs_t*) + calloc(1, sizeof(menu_file_list_cbs_t)); + + if (!cbs) + return; + + file_list_set_actiondata(list, idx, cbs); + + cbs->setting = menu_setting_find_enum(enum_idx); + + menu_cbs_init(list, cbs, path, label, type, idx); +} + void menu_entries_prepend(file_list_t *list, const char *path, const char *label, unsigned type, size_t directory_ptr, size_t entry_idx) { diff --git a/menu/menu_entries.h b/menu/menu_entries.h index e651cc2054..2df1ee06c7 100644 --- a/menu/menu_entries.h +++ b/menu/menu_entries.h @@ -176,6 +176,10 @@ rarch_setting_t *menu_entries_get_setting(uint32_t i); void menu_entries_prepend(file_list_t *list, const char *path, const char *label, unsigned type, size_t directory_ptr, size_t entry_idx); +void menu_entries_add_enum(file_list_t *list, const char *path, const char *label, + enum menu_hash_enums enum_idx, + unsigned type, size_t directory_ptr, size_t entry_idx); + bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data); RETRO_END_DECLS From aeffde9b3e84131cf90db348126b035d1cf5c0d0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 01:33:43 +0200 Subject: [PATCH 013/371] Create menu_displaylist_parse_settings_enum --- menu/menu_displaylist.c | 157 +++++++++++++++++++++++----------------- 1 file changed, 92 insertions(+), 65 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index e009da08db..fecf67c9fa 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2097,16 +2097,16 @@ static int deferred_push_video_shader_parameters_common( } #endif -static int menu_displaylist_parse_settings(void *data, +static int menu_displaylist_parse_settings_internal(void *data, menu_displaylist_info_t *info, - const char *info_label, enum menu_displaylist_parse_type parse_type, - bool add_empty_entry) + bool add_empty_entry, + rarch_setting_t *setting + ) { enum setting_type precond; size_t count = 0; settings_t *settings = config_get_ptr(); - rarch_setting_t *setting = menu_setting_find(info_label); uint64_t flags = menu_setting_get_flags(setting); if (!setting) @@ -2240,6 +2240,34 @@ loop: return 0; } +static int menu_displaylist_parse_settings(void *data, + menu_displaylist_info_t *info, + const char *info_label, + enum menu_displaylist_parse_type parse_type, + bool add_empty_entry) +{ + return menu_displaylist_parse_settings_internal(data, + info, + parse_type, + add_empty_entry, + menu_setting_find(info_label) + ); +} + +static int menu_displaylist_parse_settings_enum(void *data, + menu_displaylist_info_t *info, + enum menu_hash_enums label, + enum menu_displaylist_parse_type parse_type, + bool add_empty_entry) +{ + return menu_displaylist_parse_settings_internal(data, + info, + parse_type, + add_empty_entry, + menu_setting_find_enum(label) + ); +} + static int menu_displaylist_sort_playlist(const playlist_entry_t *a, const playlist_entry_t *b) { @@ -2355,8 +2383,8 @@ static int menu_displaylist_parse_load_content_settings( MENU_ENUM_LABEL_TAKE_SCREENSHOT, MENU_SETTING_ACTION_SCREENSHOT, 0, 0); - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_STATE_SLOT), PARSE_ONLY_INT, true); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_STATE_SLOT, PARSE_ONLY_INT, true); menu_entries_add(info->list, menu_hash_to_str(MENU_LABEL_VALUE_SAVE_STATE), @@ -3516,83 +3544,83 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_CONTENT_SETTINGS, PARSE_ACTION, false); - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_START_CORE), PARSE_ACTION, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_START_CORE, PARSE_ACTION, false); - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_START_NET_RETROPAD), PARSE_ACTION, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_START_NET_RETROPAD, PARSE_ACTION, false); #ifndef HAVE_DYNAMIC if (frontend_driver_has_fork()) #endif { - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_CORE_LIST), PARSE_ACTION, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_CORE_LIST, PARSE_ACTION, false); } - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_LOAD_CONTENT_LIST), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_LOAD_CONTENT_LIST, PARSE_ACTION, false); - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_LOAD_CONTENT_HISTORY), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY, PARSE_ACTION, false); #if defined(HAVE_NETWORKING) #if defined(HAVE_LIBRETRODB) - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_ADD_CONTENT_LIST), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_ADD_CONTENT_LIST, PARSE_ACTION, false); #endif - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_ONLINE_UPDATER), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_ONLINE_UPDATER, PARSE_ACTION, false); #endif - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_SETTINGS), PARSE_ACTION, false); - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_INFORMATION_LIST), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_SETTINGS, PARSE_ACTION, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INFORMATION_LIST, PARSE_ACTION, false); #ifndef HAVE_DYNAMIC - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_RESTART_RETROARCH), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_RESTART_RETROARCH, PARSE_ACTION, false); #endif - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_CONFIGURATIONS), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_CONFIGURATIONS, PARSE_ACTION, false); - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_SAVE_CURRENT_CONFIG), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, PARSE_ACTION, false); - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_SAVE_NEW_CONFIG), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_SAVE_NEW_CONFIG, PARSE_ACTION, false); - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_HELP_LIST), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_HELP_LIST, PARSE_ACTION, false); #if !defined(IOS) - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_QUIT_RETROARCH), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_QUIT_RETROARCH, PARSE_ACTION, false); #endif #if defined(HAVE_LAKKA) - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_SHUTDOWN), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_SHUTDOWN, PARSE_ACTION, false); - menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_REBOOT), + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_REBOOT, PARSE_ACTION, false); #endif info->need_push = true; } break; case DISPLAYLIST_PLAYLIST_SETTINGS_LIST: - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_HISTORY_LIST_ENABLE), + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_HISTORY_LIST_ENABLE, PARSE_ONLY_BOOL, false); - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_CONTENT_HISTORY_SIZE), + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, PARSE_ONLY_UINT, false); menu_displaylist_parse_playlist_associations(info); @@ -3612,27 +3640,26 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->need_push = true; break; case DISPLAYLIST_INPUT_SETTINGS_LIST: - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_INPUT_MAX_USERS), + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_MAX_USERS, PARSE_ONLY_UINT, false); #if TARGET_OS_IPHONE - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_INPUT_SMALL_KEYBOARD_ENABLE), + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_SMALL_KEYBOARD_ENABLE, PARSE_ONLY_BOOL, false); #endif - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_INPUT_POLL_TYPE_BEHAVIOR), + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, PARSE_ONLY_UINT, false); - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_INPUT_ICADE_ENABLE), + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_ICADE_ENABLE, PARSE_ONLY_BOOL, false); - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str( - MENU_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE), + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, PARSE_ONLY_UINT, false); #ifdef ANDROID - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_INPUT_BACK_AS_MENU_TOGGLE_ENABLE), + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_BACK_AS_MENU_TOGGLE_ENABLE, PARSE_ONLY_BOOL, false); #endif ret = menu_displaylist_parse_settings(menu, info, @@ -3649,12 +3676,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) menu_hash_to_str(MENU_LABEL_INPUT_AXIS_THRESHOLD), PARSE_ONLY_FLOAT, false); ret = menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_INPUT_TURBO_PERIOD), PARSE_ONLY_UINT, false); - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_INPUT_DUTY_CYCLE), PARSE_ONLY_UINT, false); - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_INPUT_BIND_MODE), PARSE_ONLY_UINT, false); - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_INPUT_HOTKEY_BINDS), PARSE_ACTION, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_DUTY_CYCLE, PARSE_ONLY_UINT, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_BIND_MODE, PARSE_ONLY_UINT, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_HOTKEY_BINDS, PARSE_ACTION, false); { unsigned user; From 3625158e63908cdf70630019c44a4fbb2f1fbe0c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 01:36:47 +0200 Subject: [PATCH 014/371] Revert "Create menu_displaylist_parse_settings_enum" This reverts commit aeffde9b3e84131cf90db348126b035d1cf5c0d0. --- menu/menu_displaylist.c | 157 +++++++++++++++++----------------------- 1 file changed, 65 insertions(+), 92 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index fecf67c9fa..e009da08db 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2097,16 +2097,16 @@ static int deferred_push_video_shader_parameters_common( } #endif -static int menu_displaylist_parse_settings_internal(void *data, +static int menu_displaylist_parse_settings(void *data, menu_displaylist_info_t *info, + const char *info_label, enum menu_displaylist_parse_type parse_type, - bool add_empty_entry, - rarch_setting_t *setting - ) + bool add_empty_entry) { enum setting_type precond; size_t count = 0; settings_t *settings = config_get_ptr(); + rarch_setting_t *setting = menu_setting_find(info_label); uint64_t flags = menu_setting_get_flags(setting); if (!setting) @@ -2240,34 +2240,6 @@ loop: return 0; } -static int menu_displaylist_parse_settings(void *data, - menu_displaylist_info_t *info, - const char *info_label, - enum menu_displaylist_parse_type parse_type, - bool add_empty_entry) -{ - return menu_displaylist_parse_settings_internal(data, - info, - parse_type, - add_empty_entry, - menu_setting_find(info_label) - ); -} - -static int menu_displaylist_parse_settings_enum(void *data, - menu_displaylist_info_t *info, - enum menu_hash_enums label, - enum menu_displaylist_parse_type parse_type, - bool add_empty_entry) -{ - return menu_displaylist_parse_settings_internal(data, - info, - parse_type, - add_empty_entry, - menu_setting_find_enum(label) - ); -} - static int menu_displaylist_sort_playlist(const playlist_entry_t *a, const playlist_entry_t *b) { @@ -2383,8 +2355,8 @@ static int menu_displaylist_parse_load_content_settings( MENU_ENUM_LABEL_TAKE_SCREENSHOT, MENU_SETTING_ACTION_SCREENSHOT, 0, 0); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_STATE_SLOT, PARSE_ONLY_INT, true); + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_STATE_SLOT), PARSE_ONLY_INT, true); menu_entries_add(info->list, menu_hash_to_str(MENU_LABEL_VALUE_SAVE_STATE), @@ -3544,83 +3516,83 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_CONTENT_SETTINGS, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_START_CORE, PARSE_ACTION, false); + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_START_CORE), PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_START_NET_RETROPAD, PARSE_ACTION, false); + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_START_NET_RETROPAD), PARSE_ACTION, false); #ifndef HAVE_DYNAMIC if (frontend_driver_has_fork()) #endif { - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_CORE_LIST, PARSE_ACTION, false); + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_CORE_LIST), PARSE_ACTION, false); } - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_LOAD_CONTENT_LIST, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_LOAD_CONTENT_LIST), PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_LOAD_CONTENT_HISTORY), PARSE_ACTION, false); #if defined(HAVE_NETWORKING) #if defined(HAVE_LIBRETRODB) - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_ADD_CONTENT_LIST, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_ADD_CONTENT_LIST), PARSE_ACTION, false); #endif - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_ONLINE_UPDATER, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_ONLINE_UPDATER), PARSE_ACTION, false); #endif - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_SETTINGS, PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INFORMATION_LIST, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_SETTINGS), PARSE_ACTION, false); + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INFORMATION_LIST), PARSE_ACTION, false); #ifndef HAVE_DYNAMIC - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_RESTART_RETROARCH, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_RESTART_RETROARCH), PARSE_ACTION, false); #endif - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_CONFIGURATIONS, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_CONFIGURATIONS), PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_SAVE_CURRENT_CONFIG), PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_SAVE_NEW_CONFIG, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_SAVE_NEW_CONFIG), PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_HELP_LIST, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_HELP_LIST), PARSE_ACTION, false); #if !defined(IOS) - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_QUIT_RETROARCH, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_QUIT_RETROARCH), PARSE_ACTION, false); #endif #if defined(HAVE_LAKKA) - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_SHUTDOWN, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_SHUTDOWN), PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_REBOOT, + menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_REBOOT), PARSE_ACTION, false); #endif info->need_push = true; } break; case DISPLAYLIST_PLAYLIST_SETTINGS_LIST: - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_HISTORY_LIST_ENABLE, + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_HISTORY_LIST_ENABLE), PARSE_ONLY_BOOL, false); - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_CONTENT_HISTORY_SIZE), PARSE_ONLY_UINT, false); menu_displaylist_parse_playlist_associations(info); @@ -3640,26 +3612,27 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->need_push = true; break; case DISPLAYLIST_INPUT_SETTINGS_LIST: - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_MAX_USERS, + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INPUT_MAX_USERS), PARSE_ONLY_UINT, false); #if TARGET_OS_IPHONE - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_SMALL_KEYBOARD_ENABLE, + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INPUT_SMALL_KEYBOARD_ENABLE), PARSE_ONLY_BOOL, false); #endif - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INPUT_POLL_TYPE_BEHAVIOR), PARSE_ONLY_UINT, false); - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_ICADE_ENABLE, + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INPUT_ICADE_ENABLE), PARSE_ONLY_BOOL, false); - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str( + MENU_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE), PARSE_ONLY_UINT, false); #ifdef ANDROID - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_BACK_AS_MENU_TOGGLE_ENABLE, + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INPUT_BACK_AS_MENU_TOGGLE_ENABLE), PARSE_ONLY_BOOL, false); #endif ret = menu_displaylist_parse_settings(menu, info, @@ -3676,12 +3649,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) menu_hash_to_str(MENU_LABEL_INPUT_AXIS_THRESHOLD), PARSE_ONLY_FLOAT, false); ret = menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_INPUT_TURBO_PERIOD), PARSE_ONLY_UINT, false); - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_DUTY_CYCLE, PARSE_ONLY_UINT, false); - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_BIND_MODE, PARSE_ONLY_UINT, false); - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_HOTKEY_BINDS, PARSE_ACTION, false); + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INPUT_DUTY_CYCLE), PARSE_ONLY_UINT, false); + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INPUT_BIND_MODE), PARSE_ONLY_UINT, false); + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INPUT_HOTKEY_BINDS), PARSE_ACTION, false); { unsigned user; From 2071f8eaaff7c225c2ce4d635634699bbb76398c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 01:41:31 +0200 Subject: [PATCH 015/371] Refactor menu_displaylist_parse_settings --- menu/menu_displaylist.c | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index e009da08db..80a36852ab 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2097,16 +2097,16 @@ static int deferred_push_video_shader_parameters_common( } #endif -static int menu_displaylist_parse_settings(void *data, +static int menu_displaylist_parse_settings_internal(void *data, menu_displaylist_info_t *info, - const char *info_label, enum menu_displaylist_parse_type parse_type, - bool add_empty_entry) + bool add_empty_entry, + rarch_setting_t *setting + ) { enum setting_type precond; size_t count = 0; settings_t *settings = config_get_ptr(); - rarch_setting_t *setting = menu_setting_find(info_label); uint64_t flags = menu_setting_get_flags(setting); if (!setting) @@ -2240,6 +2240,34 @@ loop: return 0; } +static int menu_displaylist_parse_settings(void *data, + menu_displaylist_info_t *info, + const char *info_label, + enum menu_displaylist_parse_type parse_type, + bool add_empty_entry) +{ + return menu_displaylist_parse_settings_internal(data, + info, + parse_type, + add_empty_entry, + menu_setting_find(info_label) + ); +} + +static int menu_displaylist_parse_settings_enum(void *data, + menu_displaylist_info_t *info, + enum menu_hash_enums label, + enum menu_displaylist_parse_type parse_type, + bool add_empty_entry) +{ + return menu_displaylist_parse_settings_internal(data, + info, + parse_type, + add_empty_entry, + menu_setting_find_enum(label) + ); +} + static int menu_displaylist_sort_playlist(const playlist_entry_t *a, const playlist_entry_t *b) { From ef808b6591c9be542ddfcf072ac8b7c695cd60af Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 01:44:30 +0200 Subject: [PATCH 016/371] Add DISPLAYLIST_SETTING_ENUM --- menu/menu_displaylist.c | 13 +++++++++++++ menu/menu_displaylist.h | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 80a36852ab..db64315547 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3533,6 +3533,19 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) } return true; + case DISPLAYLIST_SETTING_ENUM: + { + menu_displaylist_ctx_parse_entry_t *entry = + (menu_displaylist_ctx_parse_entry_t*)data; + + if (menu_displaylist_parse_settings_enum(entry->data, + entry->info, + entry->enum_idx, + entry->parse_type, + entry->add_empty_entry) == -1) + goto error; + } + return true; case DISPLAYLIST_SETTINGS: ret = menu_displaylist_parse_settings(menu, info, info->label, PARSE_NONE, true); diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 4fac743eae..a67b81730d 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -22,6 +22,8 @@ #include #include +#include "menu_hash.h" + #ifndef COLLECTION_SIZE #define COLLECTION_SIZE 99999 #endif @@ -51,6 +53,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_MAIN_MENU, DISPLAYLIST_GENERIC, DISPLAYLIST_SETTING, + DISPLAYLIST_SETTING_ENUM, DISPLAYLIST_SETTINGS, DISPLAYLIST_SETTINGS_ALL, DISPLAYLIST_HORIZONTAL, @@ -146,6 +149,7 @@ typedef struct menu_displaylist_ctx_parse_entry void *data; menu_displaylist_info_t *info; const char *info_label; + enum menu_hash_enums enum_idx; enum menu_displaylist_parse_type parse_type; bool add_empty_entry; } menu_displaylist_ctx_parse_entry_t; From e64b5cc62f02ae973d733498e20298712ca1c8e2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 01:49:34 +0200 Subject: [PATCH 017/371] Use DISPLAYLIST_SETTING_ENUM --- menu/drivers/xmb.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index cdbacbc9e8..90a7579b51 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -3138,38 +3138,38 @@ static int xmb_list_push(void *data, void *userdata, if (frontend_driver_has_fork()) #endif { - entry.info_label = menu_hash_to_str(MENU_LABEL_CORE_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); } - entry.info_label = menu_hash_to_str(MENU_LABEL_LOAD_CONTENT_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #if defined(HAVE_NETWORKING) #if defined(HAVE_LIBRETRODB) - entry.info_label = menu_hash_to_str(MENU_LABEL_ADD_CONTENT_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif - entry.info_label = menu_hash_to_str(MENU_LABEL_ONLINE_UPDATER); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif - entry.info_label = menu_hash_to_str(MENU_LABEL_INFORMATION_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #ifndef HAVE_DYNAMIC - entry.info_label = menu_hash_to_str(MENU_LABEL_RESTART_RETROARCH); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif - entry.info_label = menu_hash_to_str(MENU_LABEL_CONFIGURATIONS); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_SAVE_CURRENT_CONFIG); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_SAVE_NEW_CONFIG); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_SAVE_NEW_CONFIG; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_HELP_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #if !defined(IOS) entry.info_label = menu_hash_to_str(MENU_LABEL_QUIT_RETROARCH); menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); From 5435a1ad7ddb0754f55d088881b277a2e19b25d4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 01:52:42 +0200 Subject: [PATCH 018/371] (XMB) Start using DISPLAYLIST_SETTING_ENUM --- menu/drivers/xmb.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 90a7579b51..9355691d92 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -3128,11 +3128,11 @@ static int xmb_list_push(void *data, void *userdata, menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); } - entry.info_label = menu_hash_to_str(MENU_LABEL_START_CORE); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_START_CORE; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_START_NET_RETROPAD); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_START_NET_RETROPAD; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #ifndef HAVE_DYNAMIC if (frontend_driver_has_fork()) @@ -3171,14 +3171,14 @@ static int xmb_list_push(void *data, void *userdata, entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #if !defined(IOS) - entry.info_label = menu_hash_to_str(MENU_LABEL_QUIT_RETROARCH); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif - entry.info_label = menu_hash_to_str(MENU_LABEL_SHUTDOWN); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_REBOOT); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_REBOOT; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); info->need_push = true; ret = 0; break; From 277e46badcf626ed6911a2ea05888cbd6c4f66e3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 10:57:59 +0200 Subject: [PATCH 019/371] (XMB/MaterialUI) Use DISPLAYLIST_SETTING_ENUM --- menu/drivers/materialui.c | 64 +++++++++++++++++++-------------------- menu/drivers/xmb.c | 4 +-- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 93746bbb8f..baec76b70d 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -1380,62 +1380,62 @@ static int mui_list_push(void *data, void *userdata, if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) { - entry.info_label = menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); } - entry.info_label = menu_hash_to_str(MENU_LABEL_START_CORE); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_START_CORE; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_START_NET_RETROPAD); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_START_NET_RETROPAD; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #ifndef HAVE_DYNAMIC if (frontend_driver_has_fork()) #endif { - entry.info_label = menu_hash_to_str(MENU_LABEL_CORE_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); } - entry.info_label = menu_hash_to_str(MENU_LABEL_LOAD_CONTENT_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_LOAD_CONTENT_HISTORY); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #if defined(HAVE_NETWORKING) #if defined(HAVE_LIBRETRODB) - entry.info_label = menu_hash_to_str(MENU_LABEL_ADD_CONTENT_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif - entry.info_label = menu_hash_to_str(MENU_LABEL_ONLINE_UPDATER); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif - entry.info_label = menu_hash_to_str(MENU_LABEL_INFORMATION_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #ifndef HAVE_DYNAMIC - entry.info_label = menu_hash_to_str(MENU_LABEL_RESTART_RETROARCH); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif - entry.info_label = menu_hash_to_str(MENU_LABEL_CONFIGURATIONS); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_SAVE_CURRENT_CONFIG); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_SAVE_NEW_CONFIG); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_SAVE_NEW_CONFIG; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - entry.info_label = menu_hash_to_str(MENU_LABEL_HELP_LIST); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #if !defined(IOS) - entry.info_label = menu_hash_to_str(MENU_LABEL_QUIT_RETROARCH); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif #if defined(HAVE_LAKKA) - entry.info_label = menu_hash_to_str(MENU_LABEL_SHUTDOWN); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif info->need_push = true; ret = 0; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 9355691d92..d33af22b5b 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -3124,8 +3124,8 @@ static int xmb_list_push(void *data, void *userdata, if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) { - entry.info_label = menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS); - menu_displaylist_ctl(DISPLAYLIST_SETTING, &entry); + entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; + menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); } entry.enum_idx = MENU_ENUM_LABEL_START_CORE; From 8adda6e8221a4833382b6eb37c8e62db315174e0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 13:04:16 +0200 Subject: [PATCH 020/371] Create menu_hash_to_str_us_enum --- menu/intl/menu_hash_us.c | 1727 ++++++++++++++++++++++++++++++++++++++ menu/menu_hash.c | 48 ++ menu/menu_hash.h | 11 + 3 files changed, 1786 insertions(+) diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index b9b79900bd..f7f879cf13 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -22,6 +22,735 @@ #include "../menu_hash.h" #include "../../configuration.h" +static const char *menu_hash_to_str_us_label_enum(enum menu_hash_enums msg) +{ + switch (msg) + { + case MENU_ENUM_LABEL_MENU_LINEAR_FILTER: + return "menu_linear_filter"; + case MENU_ENUM_LABEL_MENU_ENUM_THROTTLE_FRAMERATE: + return "menu_throttle_framerate"; + case MENU_ENUM_LABEL_START_CORE: + return "start_core"; + case MENU_ENUM_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE: + return "cheevos_hardcore_mode_enable"; + case MENU_ENUM_LABEL_CHEEVOS_TEST_UNOFFICIAL: + return "cheevos_test_unofficial"; + case MENU_ENUM_LABEL_CHEEVOS_ENABLE: + return "cheevos_enable"; + case MENU_ENUM_LABEL_INPUT_ICADE_ENABLE: + return "input_icade_enable"; + case MENU_ENUM_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE: + return "keyboard_gamepad_mapping_type"; + case MENU_ENUM_LABEL_INPUT_SMALL_KEYBOARD_ENABLE: + return "input_small_keyboard_enable"; + case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG: + return "save_current_config"; + case MENU_ENUM_LABEL_STATE_SLOT: + return "state_slot"; + case MENU_ENUM_LABEL_CHEEVOS_USERNAME: + return "cheevos_username"; + case MENU_ENUM_LABEL_CHEEVOS_PASSWORD: + return "cheevos_password"; + case MENU_ENUM_LABEL_ACCOUNTS_CHEEVOS_USERNAME: + return "accounts_cheevos_username"; + case MENU_ENUM_LABEL_ACCOUNTS_CHEEVOS_PASSWORD: + return "accounts_cheevos_password"; + case MENU_ENUM_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS: + return "retro_achievements"; + case MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST: + return "deferred_accounts_cheevos_list"; + case MENU_ENUM_LABEL_DEFERRED_USER_BINDS_LIST: + return "deferred_user_binds_list"; + case MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_LIST: + return "deferred_accounts_list"; + case MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST: + return "deferred_input_settings_list"; + case MENU_ENUM_LABEL_ACCOUNTS_LIST: + return "accounts_list"; + case MENU_ENUM_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST: + return "deferred_input_hotkey_binds"; + case MENU_ENUM_LABEL_INPUT_HOTKEY_BINDS: + return "input_hotkey_binds"; + case MENU_ENUM_LABEL_INPUT_HOTKEY_BINDS_BEGIN: + return "input_hotkey_binds_begin"; + case MENU_ENUM_LABEL_INPUT_SETTINGS_BEGIN: + return "input_settings_begin"; + case MENU_ENUM_LABEL_PLAYLIST_SETTINGS_BEGIN: + return "playlist_settings_begin"; + case MENU_ENUM_LABEL_PLAYLIST_SETTINGS: + return "playlist_settings"; + case MENU_ENUM_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST: + return "deferred_playlist_settings"; + case MENU_ENUM_LABEL_INPUT_SETTINGS: + return "input_settings"; + case MENU_ENUM_LABEL_DEBUG_PANEL_ENABLE: + return "debug_panel_enable"; + case MENU_ENUM_LABEL_HELP_SCANNING_CONTENT: + return "help_scanning_content"; + case MENU_ENUM_LABEL_CHEEVOS_DESCRIPTION: + return "cheevos_description"; + case MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + return "help_audio_video_troubleshooting"; + case MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD: + return "help_change_virtual_gamepad"; + case MENU_ENUM_LABEL_HELP_WHAT_IS_A_CORE: + return "help_what_is_a_core"; + case MENU_ENUM_LABEL_HELP_LOADING_CONTENT: + return "help_loading_content"; + case MENU_ENUM_LABEL_HELP_LIST: + return "help_list"; + case MENU_ENUM_LABEL_HELP_CONTROLS: + return "help_controls"; + case MENU_ENUM_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE: + return "deferred_archive_open_detect_core"; + case MENU_ENUM_LABEL_DEFERRED_ARCHIVE_OPEN: + return "deferred_archive_open"; + case MENU_ENUM_LABEL_LOAD_ARCHIVE_DETECT_CORE: + return "load_archive_detect_core"; + case MENU_ENUM_LABEL_LOAD_ARCHIVE: + return "load_archive"; + case MENU_ENUM_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE: + return "deferred_archive_action_detect_core"; + case MENU_ENUM_LABEL_DEFERRED_ARCHIVE_ACTION: + return "deferred_archive_action"; + case MENU_ENUM_LABEL_OPEN_ARCHIVE_DETECT_CORE: + return "open_archive_detect_core"; + case MENU_ENUM_LABEL_OPEN_ARCHIVE: + return "open_archive"; + case MENU_ENUM_LABEL_INPUT_BACK_AS_MENU_ENUM_TOGGLE_ENABLE: + return "back_as_menu_toggle_enable"; + case MENU_ENUM_LABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO: + return "input_menu_toggle_gamepad_combo"; + case MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU: + return "overlay_hide_in_menu"; + case MENU_ENUM_LABEL_NO_PLAYLIST_ENTRIES_AVAILABLE: + return "no_playlist_entries_available"; + case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: + return "downloaded_file_detect_core_list"; + case MENU_ENUM_LABEL_UPDATE_CORE_INFO_FILES: + return "update_core_info_files"; + case MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_LIST: + return "deferred_core_content_list"; + case MENU_ENUM_LABEL_DEFERRED_LAKKA_LIST: + return "deferred_lakka_list"; + case MENU_ENUM_LABEL_DOWNLOAD_CORE_CONTENT: + return "download_core_content"; + case MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY: + return "scan_this_directory"; + case MENU_ENUM_LABEL_SCAN_FILE: + return "scan_file"; + case MENU_ENUM_LABEL_SCAN_DIRECTORY: + return "scan_directory"; + case MENU_ENUM_LABEL_ADD_CONTENT_LIST: + return "add_content"; + case MENU_ENUM_LABEL_OVERLAY_AUTOLOAD_PREFERRED: + return "overlay_autoload_preferred"; + case MENU_ENUM_LABEL_INFORMATION_LIST: + return "information_list"; + case MENU_ENUM_LABEL_USE_BUILTIN_PLAYER: + return "use_builtin_player"; + case MENU_ENUM_LABEL_CONTENT_SETTINGS: + return "quick_menu"; + case MENU_ENUM_LABEL_LOAD_CONTENT_LIST: + return "load_content"; + case MENU_ENUM_LABEL_NO_SETTINGS_FOUND: + return "menu_label_no_settings_found"; + case MENU_ENUM_LABEL_SYSTEM_BGM_ENABLE: + return "system_bgm_enable"; + case MENU_ENUM_LABEL_AUDIO_BLOCK_FRAMES: + return "audio_block_frames"; + case MENU_ENUM_LABEL_INPUT_BIND_MODE: + return "input_bind_mode"; + case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW: + return "input_descriptor_label_show"; + case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND: + return "input_descriptor_hide_unbound"; + case MENU_ENUM_LABEL_VIDEO_FONT_ENABLE: + return "video_font_enable"; + case MENU_ENUM_LABEL_VIDEO_FONT_PATH: + return "video_font_path"; + case MENU_ENUM_LABEL_VIDEO_FONT_SIZE: + return "video_font_size"; + case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_X: + return "video_message_pos_x"; + case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_Y: + return "video_message_pos_y"; + case MENU_ENUM_LABEL_VIDEO_SOFT_FILTER: + return "soft_filter"; + case MENU_ENUM_LABEL_VIDEO_FILTER_FLICKER: + return "video_filter_flicker"; + case MENU_ENUM_LABEL_INPUT_REMAPPING_DIRECTORY: + return "input_remapping_directory"; + case MENU_ENUM_LABEL_JOYPAD_AUTOCONFIG_DIR: + return "joypad_autoconfig_dir"; + case MENU_ENUM_LABEL_RECORDING_CONFIG_DIRECTORY: + return "recording_config_directory"; + case MENU_ENUM_LABEL_RECORDING_OUTPUT_DIRECTORY: + return "recording_output_directory"; + case MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY: + return "screenshot_directory"; + case MENU_ENUM_LABEL_PLAYLIST_DIRECTORY: + return "playlist_directory"; + case MENU_ENUM_LABEL_SAVEFILE_DIRECTORY: + return "savefile_directory"; + case MENU_ENUM_LABEL_SAVESTATE_DIRECTORY: + return "savestate_directory"; + case MENU_ENUM_LABEL_STDIN_CMD_ENABLE: + return "stdin_commands"; + case MENU_ENUM_LABEL_NETWORK_REMOTE_ENABLE: + return "network_remote_enable"; + case MENU_ENUM_LABEL_NETWORK_REMOTE_PORT: + return "network_remote_base_port"; + case MENU_ENUM_LABEL_VIDEO_DRIVER: + return "video_driver"; + case MENU_ENUM_LABEL_RECORD_ENABLE: + return "record_enable"; + case MENU_ENUM_LABEL_VIDEO_GPU_RECORD: + return "video_gpu_record"; + case MENU_ENUM_LABEL_RECORD_PATH: + return "record_path"; + case MENU_ENUM_LABEL_RECORD_USE_OUTPUT_DIRECTORY: + return "record_use_output_directory"; + case MENU_ENUM_LABEL_RECORD_CONFIG: + return "record_config"; + case MENU_ENUM_LABEL_VIDEO_POST_FILTER_RECORD: + return "video_post_filter_record"; + case MENU_ENUM_LABEL_CORE_ASSETS_DIRECTORY: + return "core_assets_directory"; + case MENU_ENUM_LABEL_ASSETS_DIRECTORY: + return "assets_directory"; + case MENU_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY: + return "dynamic_wallpapers_directory"; + case MENU_ENUM_LABEL_THUMBNAILS_DIRECTORY: + return "thumbnails_directory"; + case MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY: + return "rgui_browser_directory"; + case MENU_ENUM_LABEL_RGUI_CONFIG_DIRECTORY: + return "rgui_config_directory"; + case MENU_ENUM_LABEL_LIBRETRO_INFO_PATH: + return "libretro_info_path"; + case MENU_ENUM_LABEL_LIBRETRO_DIR_PATH: + return "libretro_dir_path"; + case MENU_ENUM_LABEL_CURSOR_DIRECTORY: + return "cursor_directory"; + case MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY: + return "content_database_path"; + case MENU_ENUM_LABEL_SYSTEM_DIRECTORY: + return "system_directory"; + case MENU_ENUM_LABEL_CACHE_DIRECTORY: + return "cache_directory"; + case MENU_ENUM_LABEL_CHEAT_DATABASE_PATH: + return "cheat_database_path"; + case MENU_ENUM_LABEL_AUDIO_FILTER_DIR: + return "audio_filter_dir"; + case MENU_ENUM_LABEL_VIDEO_FILTER_DIR: + return "video_filter_dir"; + case MENU_ENUM_LABEL_VIDEO_SHADER_DIR: + return "video_shader_dir"; + case MENU_ENUM_LABEL_OVERLAY_DIRECTORY: + return "overlay_directory"; + case MENU_ENUM_LABEL_OSK_OVERLAY_DIRECTORY: + return "osk_overlay_directory"; + case MENU_ENUM_LABEL_NETPLAY_CLIENT_SWAP_INPUT: + return "netplay_client_swap_input"; + case MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE: + return "netplay_spectator_mode_enable"; + case MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS: + return "netplay_ip_address"; + case MENU_ENUM_LABEL_NETPLAY_TCP_UDP_PORT: + return "netplay_tcp_udp_port"; + case MENU_ENUM_LABEL_NETPLAY_ENABLE: + return "netplay_enable"; + case MENU_ENUM_LABEL_SSH_ENABLE: + return "ssh_enable"; + case MENU_ENUM_LABEL_SAMBA_ENABLE: + return "samba_enable"; + case MENU_ENUM_LABEL_BLUETOOTH_ENABLE: + return "bluetooth_enable"; + case MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES: + return "netplay_delay_frames"; + case MENU_ENUM_LABEL_NETPLAY_MODE: + return "netplay_mode"; + case MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN: + return "rgui_show_start_screen"; + case MENU_ENUM_LABEL_TITLE_COLOR: + return "menu_title_color"; + case MENU_ENUM_LABEL_ENTRY_HOVER_COLOR: + return "menu_entry_hover_color"; + case MENU_ENUM_LABEL_TIMEDATE_ENABLE: + return "menu_timedate_enable"; + case MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE: + return "threaded_data_runloop_enable"; + case MENU_ENUM_LABEL_ENTRY_NORMAL_COLOR: + return "menu_entry_normal_color"; + case MENU_ENUM_LABEL_SHOW_ADVANCED_SETTINGS: + return "menu_show_advanced_settings"; + case MENU_ENUM_LABEL_MOUSE_ENABLE: + return "menu_mouse_enable"; + case MENU_ENUM_LABEL_POINTER_ENABLE: + return "menu_pointer_enable"; + case MENU_ENUM_LABEL_CORE_ENABLE: + return "menu_core_enable"; + case MENU_ENUM_LABEL_DPI_OVERRIDE_ENABLE: + return "dpi_override_enable"; + case MENU_ENUM_LABEL_DPI_OVERRIDE_VALUE: + return "dpi_override_value"; + case MENU_ENUM_LABEL_XMB_FONT: + return "xmb_font"; + case MENU_ENUM_LABEL_XMB_THEME: + return "xmb_theme"; + case MENU_ENUM_LABEL_XMB_GRADIENT: + return "xmb_gradient"; + case MENU_ENUM_LABEL_XMB_SHADOWS_ENABLE: + return "xmb_shadows_enable"; + case MENU_ENUM_LABEL_XMB_RIBBON_ENABLE: + return "xmb_ribbon_enable"; + case MENU_ENUM_LABEL_XMB_SCALE_FACTOR: + return "xmb_scale_factor"; + case MENU_ENUM_LABEL_XMB_ALPHA_FACTOR: + return "xmb_alpha_factor"; + case MENU_ENUM_LABEL_SUSPEND_SCREENSAVER_ENABLE: + return "suspend_screensaver_enable"; + case MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION: + return "video_disable_composition"; + case MENU_ENUM_LABEL_PAUSE_NONACTIVE: + return "pause_nonactive"; + case MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT: + return "ui_companion_start_on_boot"; + case MENU_ENUM_LABEL_UI_COMPANION_ENABLE: + return "ui_companion_enable"; + case MENU_ENUM_LABEL_UI_MENUBAR_ENABLE: + return "ui_menubar_enable"; + case MENU_ENUM_LABEL_ARCHIVE_MODE: + return "archive_mode"; + case MENU_ENUM_LABEL_NETWORK_CMD_ENABLE: + return "network_cmd_enable"; + case MENU_ENUM_LABEL_NETWORK_CMD_PORT: + return "network_cmd_port"; + case MENU_ENUM_LABEL_HISTORY_LIST_ENABLE: + return "history_list_enable"; + case MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE: + return "Content History Size"; + case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_AUTO: + return "video_refresh_rate_auto"; + case MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN: + return "dummy_on_core_shutdown"; + case MENU_ENUM_LABEL_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE: + return "core_set_supports_no_content_enable"; + case MENU_ENUM_LABEL_FRAME_THROTTLE_ENABLE: + return "fastforward_ratio_throttle_enable"; + case MENU_ENUM_LABEL_FASTFORWARD_RATIO: + return "fastforward_ratio"; + case MENU_ENUM_LABEL_AUTO_REMAPS_ENABLE: + return "auto_remaps_enable"; + case MENU_ENUM_LABEL_SLOWMOTION_RATIO: + return "slowmotion_ratio"; + case MENU_ENUM_LABEL_CORE_SPECIFIC_CONFIG: + return "core_specific_config"; + case MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS: + return "game_specific_options"; + case MENU_ENUM_LABEL_AUTO_OVERRIDES_ENABLE: + return "auto_overrides_enable"; + case MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT: + return "config_save_on_exit"; + case MENU_ENUM_LABEL_VIDEO_SMOOTH: + return "video_smooth"; + case MENU_ENUM_LABEL_VIDEO_GAMMA: + return "video_gamma"; + case MENU_ENUM_LABEL_VIDEO_ALLOW_ROTATE: + return "video_allow_rotate"; + case MENU_ENUM_LABEL_VIDEO_HARD_SYNC: + return "video_hard_sync"; + case MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL: + return "video_swap_interval"; + case MENU_ENUM_LABEL_VIDEO_VSYNC: + return "video_vsync"; + case MENU_ENUM_LABEL_VIDEO_THREADED: + return "video_threaded"; + case MENU_ENUM_LABEL_VIDEO_ROTATION: + return "video_rotation"; + case MENU_ENUM_LABEL_VIDEO_GPU_SCREENSHOT: + return "video_gpu_screenshot"; + case MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN: + return "video_crop_overscan"; + case MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX: + return "aspect_ratio_index"; + case MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_AUTO: + return "video_aspect_ratio_auto"; + case MENU_ENUM_LABEL_VIDEO_FORCE_ASPECT: + return "video_force_aspect"; + case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE: + return "video_refresh_rate"; + case MENU_ENUM_LABEL_VIDEO_FORCE_SRGB_DISABLE: + return "video_force_srgb_disable"; + case MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN: + return "video_windowed_fullscreen"; + case MENU_ENUM_LABEL_PAL60_ENABLE: + return "pal60_enable"; + case MENU_ENUM_LABEL_VIDEO_VFILTER: + return "video_vfilter"; + case MENU_ENUM_LABEL_VIDEO_VI_WIDTH: + return "video_vi_width"; + case MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION: + return "video_black_frame_insertion"; + case MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES: + return "video_hard_sync_frames"; + case MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE: + return "sort_savefiles_enable"; + case MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE: + return "sort_savestates_enable"; + case MENU_ENUM_LABEL_VIDEO_FULLSCREEN: + return "video_fullscreen"; + case MENU_ENUM_LABEL_PERFCNT_ENABLE: + return "perfcnt_enable"; + case MENU_ENUM_LABEL_VIDEO_SCALE: + return "video_scale"; + case MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER: + return "video_scale_integer"; + case MENU_ENUM_LABEL_LIBRETRO_LOG_LEVEL: + return "libretro_log_level"; + case MENU_ENUM_LABEL_LOG_VERBOSITY: + return "log_verbosity"; + case MENU_ENUM_LABEL_SAVESTATE_AUTO_SAVE: + return "savestate_auto_save"; + case MENU_ENUM_LABEL_SAVESTATE_AUTO_LOAD: + return "savestate_auto_load"; + case MENU_ENUM_LABEL_SAVESTATE_AUTO_INDEX: + return "savestate_auto_index"; + case MENU_ENUM_LABEL_AUTOSAVE_INTERVAL: + return "autosave_interval"; + case MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE: + return "block_sram_overwrite"; + case MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT: + return "video_shared_context"; + case MENU_ENUM_LABEL_RESTART_RETROARCH: + return "restart_retroarch"; + case MENU_ENUM_LABEL_NETPLAY_NICKNAME: + return "netplay_nickname"; + case MENU_ENUM_LABEL_USER_LANGUAGE: + return "user_language"; + case MENU_ENUM_LABEL_CAMERA_ALLOW: + return "camera_allow"; + case MENU_ENUM_LABEL_LOCATION_ALLOW: + return "location_allow"; + case MENU_ENUM_LABEL_PAUSE_LIBRETRO: + return "menu_pause_libretro"; + case MENU_ENUM_LABEL_INPUT_OSK_OVERLAY_ENABLE: + return "input_osk_overlay_enable"; + case MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE: + return "input_overlay_enable"; + case MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX: + return "video_monitor_index"; + case MENU_ENUM_LABEL_VIDEO_FRAME_DELAY: + return "video_frame_delay"; + case MENU_ENUM_LABEL_INPUT_DUTY_CYCLE: + return "input_duty_cycle"; + case MENU_ENUM_LABEL_INPUT_TURBO_PERIOD: + return "input_turbo_period"; + case MENU_ENUM_LABEL_INPUT_AXIS_THRESHOLD: + return "input_axis_threshold"; + case MENU_ENUM_LABEL_INPUT_REMAP_BINDS_ENABLE: + return "input_remap_binds_enable"; + case MENU_ENUM_LABEL_INPUT_MAX_USERS: + return "input_max_users"; + case MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE: + return "input_autodetect_enable"; + case MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE: + return "audio_output_rate"; + case MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW: + return "audio_max_timing_skew"; + case MENU_ENUM_LABEL_CHEAT_APPLY_CHANGES: + return "cheat_apply_changes"; + case MENU_ENUM_LABEL_REMAP_FILE_SAVE_CORE: + return "remap_file_save_core"; + case MENU_ENUM_LABEL_REMAP_FILE_SAVE_GAME: + return "remap_file_save_game"; + case MENU_ENUM_LABEL_CHEAT_NUM_PASSES: + return "cheat_num_passes"; + case MENU_ENUM_LABEL_SHADER_APPLY_CHANGES: + return "shader_apply_changes"; + case MENU_ENUM_LABEL_COLLECTION: + return "collection"; + case MENU_ENUM_LABEL_REWIND_ENABLE: + return "rewind_enable"; + case MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST: + return "select_from_collection"; + case MENU_ENUM_LABEL_DETECT_CORE_LIST: + return "detect_core_list"; + case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: + return "load_recent"; + case MENU_ENUM_LABEL_AUDIO_ENABLE: + return "audio_enable"; + case MENU_ENUM_LABEL_FPS_SHOW: + return "fps_show"; + case MENU_ENUM_LABEL_AUDIO_MUTE: + return "audio_mute_enable"; + case MENU_ENUM_LABEL_VIDEO_SHADER_PASS: + return "video_shader_pass"; + case MENU_ENUM_LABEL_AUDIO_VOLUME: + return "audio_volume"; + case MENU_ENUM_LABEL_AUDIO_SYNC: + return "audio_sync"; + case MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA: + return "audio_rate_control_delta"; + case MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS: + return "video_shader_filter_pass"; + case MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS: + return "video_shader_scale_pass"; + case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES: + return "video_shader_num_passes"; + case MENU_ENUM_LABEL_RDB_ENTRY_DESCRIPTION: + return "rdb_entry_description"; + case MENU_ENUM_LABEL_RDB_ENTRY_GENRE: + return "rdb_entry_genre"; + case MENU_ENUM_LABEL_RDB_ENTRY_ORIGIN: + return "rdb_entry_origin"; + case MENU_ENUM_LABEL_RDB_ENTRY_PUBLISHER: + return "rdb_entry_publisher"; + case MENU_ENUM_LABEL_RDB_ENTRY_DEVELOPER: + return "rdb_entry_developer"; + case MENU_ENUM_LABEL_RDB_ENTRY_FRANCHISE: + return "rdb_entry_franchise"; + case MENU_ENUM_LABEL_RDB_ENTRY_MAX_USERS: + return "rdb_entry_max_users"; + case MENU_ENUM_LABEL_RDB_ENTRY_NAME: + return "rdb_entry_name"; + case MENU_ENUM_LABEL_RDB_ENTRY_EDGE_MAGAZINE_RATING: + return "rdb_entry_edge_magazine_rating"; + case MENU_ENUM_LABEL_RDB_ENTRY_EDGE_MAGAZINE_REVIEW: + return "rdb_entry_edge_magazine_review"; + case MENU_ENUM_LABEL_RDB_ENTRY_FAMITSU_MAGAZINE_RATING: + return "rdb_entry_famitsu_magazine_rating"; + case MENU_ENUM_LABEL_RDB_ENTRY_TGDB_RATING: + return "rdb_entry_tgdb_rating"; + case MENU_ENUM_LABEL_RDB_ENTRY_EDGE_MAGAZINE_ISSUE: + return "rdb_entry_edge_magazine_issue"; + case MENU_ENUM_LABEL_RDB_ENTRY_RELEASE_MONTH: + return "rdb_entry_releasemonth"; + case MENU_ENUM_LABEL_RDB_ENTRY_RELEASE_YEAR: + return "rdb_entry_releaseyear"; + case MENU_ENUM_LABEL_RDB_ENTRY_ENHANCEMENT_HW: + return "rdb_entry_enhancement_hw"; + case MENU_ENUM_LABEL_RDB_ENTRY_SHA1: + return "rdb_entry_sha1"; + case MENU_ENUM_LABEL_RDB_ENTRY_CRC32: + return "rdb_entry_crc32"; + case MENU_ENUM_LABEL_RDB_ENTRY_MD5: + return "rdb_entry_md5"; + case MENU_ENUM_LABEL_RDB_ENTRY_BBFC_RATING: + return "rdb_entry_bbfc_rating"; + case MENU_ENUM_LABEL_RDB_ENTRY_ESRB_RATING: + return "rdb_entry_esrb_rating"; + case MENU_ENUM_LABEL_RDB_ENTRY_ELSPA_RATING: + return "rdb_entry_elspa_rating"; + case MENU_ENUM_LABEL_RDB_ENTRY_PEGI_RATING: + return "rdb_entry_pegi_rating"; + case MENU_ENUM_LABEL_RDB_ENTRY_CERO_RATING: + return "rdb_entry_cero_rating"; + case MENU_ENUM_LABEL_RDB_ENTRY_ANALOG: + return "rdb_entry_analog"; + case MENU_ENUM_LABEL_CONFIGURATIONS: + return "configurations"; + case MENU_ENUM_LABEL_LOAD_OPEN_ZIP: + return "load_open_zip"; + case MENU_ENUM_LABEL_REWIND_GRANULARITY: + return "rewind_granularity"; + case MENU_ENUM_LABEL_REMAP_FILE_LOAD: + return "remap_file_load"; + case MENU_ENUM_LABEL_CUSTOM_RATIO: + return "custom_ratio"; + case MENU_ENUM_LABEL_USE_THIS_DIRECTORY: + return "use_this_directory"; + case MENU_ENUM_LABEL_RDB_ENTRY_START_CONTENT: + return "rdb_entry_start_content"; + case MENU_ENUM_LABEL_CUSTOM_BIND: + return "custom_bind"; + case MENU_ENUM_LABEL_CUSTOM_BIND_ALL: + return "custom_bind_all"; + case MENU_ENUM_LABEL_DISK_OPTIONS: + return "core_disk_options"; + case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS: + return "core_cheat_options"; + case MENU_ENUM_LABEL_CORE_OPTIONS: + return "core_options"; + case MENU_ENUM_LABEL_DATABASE_MANAGER_LIST: + return "database_manager_list"; + case MENU_ENUM_LABEL_DEFERRED_DATABASE_MANAGER_LIST: + return "deferred_database_manager_list"; + case MENU_ENUM_LABEL_CURSOR_MANAGER_LIST: + return "cursor_manager_list"; + case MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST: + return "deferred_cursor_manager_list"; + case MENU_ENUM_LABEL_CHEAT_FILE_LOAD: + return "cheat_file_load"; + case MENU_ENUM_LABEL_CHEAT_FILE_SAVE_AS: + return "cheat_file_save_as"; + case MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL: + return "deferred_rdb_entry_detail"; + case MENU_ENUM_LABEL_FRONTEND_COUNTERS: + return "frontend_counters"; + case MENU_ENUM_LABEL_CORE_COUNTERS: + return "core_counters"; + case MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS: + return "disk_cycle_tray_status"; + case MENU_ENUM_LABEL_DISK_IMAGE_APPEND: + return "disk_image_append"; + case MENU_ENUM_LABEL_DEFERRED_CORE_LIST: + return "deferred_core_list"; + case MENU_ENUM_LABEL_DEFERRED_CORE_LIST_SET: + return "deferred_core_list_set"; + case MENU_ENUM_LABEL_INFO_SCREEN: + return "info_screen"; + case MENU_ENUM_LABEL_SETTINGS: + return "settings"; + case MENU_ENUM_LABEL_QUIT_RETROARCH: + return "quit_retroarch"; + case MENU_ENUM_LABEL_SHUTDOWN: + return "shutdown"; + case MENU_ENUM_LABEL_REBOOT: + return "reboot"; + case MENU_ENUM_LABEL_HELP: + return "help"; + case MENU_ENUM_LABEL_SAVE_NEW_CONFIG: + return "save_new_config"; + case MENU_ENUM_LABEL_RESTART_CONTENT: + return "restart_content"; + case MENU_ENUM_LABEL_TAKE_SCREENSHOT: + return "take_screenshot"; + case MENU_ENUM_LABEL_CORE_UPDATER_LIST: + return "core_updater_list"; + case MENU_ENUM_LABEL_START_NET_RETROPAD: + return "menu_start_net_retropad"; + case MENU_ENUM_LABEL_THUMBNAILS_UPDATER_LIST: + return "thumbnails_updater_list"; + case MENU_ENUM_LABEL_CORE_UPDATER_BUILDBOT_URL: + return "core_updater_buildbot_url"; + case MENU_ENUM_LABEL_BUILDBOT_ASSETS_URL: + return "buildbot_assets_url"; + case MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND: + return "menu_navigation_wraparound_enable"; + case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE: + return "menu_navigation_browser_filter_supported_extensions_enable"; + case MENU_ENUM_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE: + return "core_updater_auto_extract_archive"; + case MENU_ENUM_LABEL_DEBUG_INFORMATION: + return "debug_information"; + case MENU_ENUM_LABEL_ACHIEVEMENT_LIST: + return "achievement_list"; + case MENU_ENUM_LABEL_SYSTEM_INFORMATION: + return "system_information"; + case MENU_ENUM_LABEL_NETWORK_INFORMATION: + return "network_information"; + case MENU_ENUM_LABEL_ONLINE_UPDATER: + return "online_updater"; + case MENU_ENUM_LABEL_CORE_INFORMATION: + return "core_information"; + case MENU_ENUM_LABEL_CORE_LIST: + return "load_core"; + case MENU_ENUM_LABEL_LOAD_CONTENT: + return "load_content_default"; + case MENU_ENUM_LABEL_CLOSE_CONTENT: + return "unload_core"; + case MENU_ENUM_LABEL_MANAGEMENT: + return "database_settings"; + case MENU_ENUM_LABEL_SAVE_STATE: + return "savestate"; + case MENU_ENUM_LABEL_LOAD_STATE: + return "loadstate"; + case MENU_ENUM_LABEL_UNDO_LOAD_STATE: + return "undoloadstate"; + case MENU_ENUM_LABEL_UNDO_SAVE_STATE: + return "undosavestate"; + case MENU_ENUM_LABEL_RESUME_CONTENT: + return "resume_content"; + case MENU_ENUM_LABEL_INPUT_DRIVER: + return "input_driver"; + case MENU_ENUM_LABEL_AUDIO_DRIVER: + return "audio_driver"; + case MENU_ENUM_LABEL_JOYPAD_DRIVER: + return "input_joypad_driver"; + case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER: + return "audio_resampler_driver"; + case MENU_ENUM_LABEL_RECORD_DRIVER: + return "record_driver"; + case MENU_ENUM_LABEL_MENU_DRIVER: + return "menu_driver"; + case MENU_ENUM_LABEL_CAMERA_DRIVER: + return "camera_driver"; + case MENU_ENUM_LABEL_LOCATION_DRIVER: + return "location_driver"; + case MENU_ENUM_LABEL_OVERLAY_SCALE: + return "input_overlay_scale"; + case MENU_ENUM_LABEL_OVERLAY_PRESET: + return "input_overlay"; + case MENU_ENUM_LABEL_KEYBOARD_OVERLAY_PRESET: + return "input_osk_overlay"; + case MENU_ENUM_LABEL_AUDIO_DEVICE: + return "audio_device"; + case MENU_ENUM_LABEL_AUDIO_LATENCY: + return "audio_latency"; + case MENU_ENUM_LABEL_OVERLAY_OPACITY: + return "input_overlay_opacity"; + case MENU_ENUM_LABEL_MENU_WALLPAPER: + return "menu_wallpaper"; + case MENU_ENUM_LABEL_DYNAMIC_WALLPAPER: + return "menu_dynamic_wallpaper_enable"; + case MENU_ENUM_LABEL_THUMBNAILS: + return "thumbnails"; + case MENU_ENUM_LABEL_CORE_INPUT_REMAPPING_OPTIONS: + return "core_input_remapping_options"; + case MENU_ENUM_LABEL_SHADER_OPTIONS: + return "shader_options"; + case MENU_ENUM_LABEL_VIDEO_SHADER_PARAMETERS: + return "video_shader_parameters"; + case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_PARAMETERS: + return "video_shader_preset_parameters"; + case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_AS: + return "video_shader_preset_save_as"; + case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET: + return "video_shader_preset"; + case MENU_ENUM_LABEL_VIDEO_FILTER: + return "video_filter"; + case MENU_ENUM_LABEL_DEFERRED_VIDEO_FILTER: + return "deferred_video_filter"; + case MENU_ENUM_LABEL_DEFERRED_CORE_UPDATER_LIST: + return "core_updater"; + case MENU_ENUM_LABEL_DEFERRED_THUMBNAILS_UPDATER_LIST: + return "deferred_thumbnails_updater_list"; + case MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN: + return "audio_dsp_plugin"; + case MENU_ENUM_LABEL_UPDATE_ASSETS: + return "update_assets"; + case MENU_ENUM_LABEL_UPDATE_LAKKA: + return "update_lakka"; + case MENU_ENUM_LABEL_UPDATE_CHEATS: + return "update_cheats"; + case MENU_ENUM_LABEL_UPDATE_AUTOCONFIG_PROFILES: + return "update_autoconfig_profiles"; + case MENU_ENUM_LABEL_UPDATE_AUTOCONFIG_PROFILES_HID: + return "update_autoconfig_profiles_hid"; + case MENU_ENUM_LABEL_UPDATE_DATABASES: + return "update_databases"; + case MENU_ENUM_LABEL_UPDATE_OVERLAYS: + return "update_overlays"; + case MENU_ENUM_LABEL_UPDATE_CG_SHADERS: + return "update_cg_shaders"; + case MENU_ENUM_LABEL_UPDATE_GLSL_SHADERS: + return "update_glsl_shaders"; + case MENU_ENUM_LABEL_SCREEN_RESOLUTION: + return "screen_resolution"; + case MENU_ENUM_LABEL_USE_BUILTIN_IMAGE_VIEWER: + return "use_builtin_image_viewer"; + case MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR: + return "input_poll_type_behavior"; + default: + break; + } + + return "null"; +} + static const char *menu_hash_to_str_us_label(uint32_t hash) { switch (hash) @@ -751,6 +1480,1004 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) return "null"; } +const char *menu_hash_to_str_us_enum(enum menu_hash_enums msg) +{ + const char *ret = menu_hash_to_str_us_label_enum(msg); + + if (ret && !string_is_equal(ret, "null")) + return ret; + + switch (msg) + { + case MENU_ENUM_LABEL_VALUE_START_NET_RETROPAD: + return "Start Remote RetroPad"; + case MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST: + return "Thumbnails Updater"; + case MENU_ENUM_LABEL_VALUE_MENU_LINEAR_FILTER: + return "Menu Linear Filter"; + case MENU_ENUM_LABEL_VALUE_MENU_ENUM_THROTTLE_FRAMERATE: + return "Throttle Menu Framerate"; + case MENU_ENUM_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE: + return "Hardcore Mode"; + case MENU_ENUM_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL: + return "Test unofficial"; + case MENU_ENUM_LABEL_VALUE_CHEEVOS_SETTINGS: + return "Retro Achievements"; + case MENU_ENUM_LABEL_VALUE_INPUT_ICADE_ENABLE: + return "Keyboard Gamepad Mapping Enable"; + case MENU_ENUM_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE: + return "Keyboard Gamepad Mapping Type"; + case MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE: + return "Small Keyboard Enable"; + case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG: + return "Save Current Config"; + case MENU_ENUM_LABEL_VALUE_STATE_SLOT: + return "State Slot"; + case MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS: + return "Accounts Cheevos"; + case MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME: + return "Username"; + case MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD: + return "Password"; + case MENU_ENUM_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS: + return "Retro Achievements"; + case MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST: + return "Accounts"; + case MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST_END: + return "Accounts List Endpoint"; + case MENU_ENUM_LABEL_VALUE_DEBUG_PANEL_ENABLE: + return "Debug Panel Enable"; + case MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT: + return "Scanning For Content"; + case MENU_ENUM_LABEL_VALUE_CHEEVOS_DESCRIPTION: + return "Description"; + case MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + return "Audio/Video Troubleshooting"; + case MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD: + return "Changing Virtual Gamepad Overlay"; + case MENU_ENUM_LABEL_VALUE_HELP_WHAT_IS_A_CORE: + return "What Is A Core?"; + case MENU_ENUM_LABEL_VALUE_HELP_LOADING_CONTENT: + return "Loading Content"; + case MENU_ENUM_LABEL_VALUE_HELP_LIST: + return "Help"; + case MENU_ENUM_LABEL_VALUE_HELP_CONTROLS: + return "Basic Menu Controls"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS: + return "Basic menu controls"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_SCROLL_UP: + return "Scroll Up"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_SCROLL_DOWN: + return "Scroll Down"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_CONFIRM: + return "Confirm/OK"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_BACK: + return "Back"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_START: + return "Defaults"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_INFO: + return "Info"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_MENU: + return "Toggle Menu"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_QUIT: + return "Quit"; + case MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_KEYBOARD: + return "Toggle Keyboard"; + case MENU_ENUM_LABEL_VALUE_OPEN_ARCHIVE: + return "Open Archive As Folder"; + case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE: + return "Load Archive With Core"; + case MENU_ENUM_LABEL_VALUE_INPUT_BACK_AS_MENU_ENUM_TOGGLE_ENABLE: + return "Back As Menu Toggle Enable"; + case MENU_ENUM_LABEL_VALUE_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO: + return "Menu Toggle Gamepad Combo"; + case MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU: + return "Hide Overlay In Menu"; + case MENU_ENUM_LABEL_VALUE_LANG_POLISH: + return "Polish"; + case MENU_ENUM_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED: + return "Autoload Preferred Overlay"; + case MENU_ENUM_LABEL_VALUE_UPDATE_CORE_INFO_FILES: + return "Update Core Info Files"; + case MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE_CONTENT: + return "Download Content"; + case MENU_ENUM_LABEL_VALUE_SCAN_THIS_DIRECTORY: + return ""; + case MENU_ENUM_LABEL_VALUE_SCAN_FILE: + return "Scan File"; + case MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY: + return "Scan Directory"; + case MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST: + return "Add Content"; + case MENU_ENUM_LABEL_VALUE_INFORMATION_LIST: + return "Information"; + case MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER: + return "Use Builtin Media Player"; + case MENU_ENUM_LABEL_VALUE_CONTENT_SETTINGS: + return "Quick Menu"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CRC32: + return "CRC32"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_MD5: + return "MD5"; + case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST: + return "Load Content"; + case MENU_ENUM_LABEL_VALUE_ASK_ARCHIVE: + return "Ask"; + case MENU_ENUM_LABEL_VALUE_PRIVACY_SETTINGS: + return "Privacy"; + case MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU: + return "Horizontal Menu"; + case MENU_ENUM_LABEL_VALUE_SETTINGS_TAB: + return "Settings tab"; + case MENU_ENUM_LABEL_VALUE_HISTORY_TAB: + return "History tab"; + case MENU_ENUM_LABEL_VALUE_ADD_TAB: + return "Add tab"; + case MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB: + return "Playlists tab"; + case MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND: + return "No settings found."; + case MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS: + return "No performance counters."; + case MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS: + return "Driver"; + case MENU_ENUM_LABEL_VALUE_CONFIGURATION_SETTINGS: + return "Configuration"; + case MENU_ENUM_LABEL_VALUE_CORE_SETTINGS: + return "Core"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS: + return "Video"; + case MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS: + return "Logging"; + case MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS: + return "Saving"; + case MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS: + return "Rewind"; + case MENU_ENUM_LABEL_VALUE_SHADER: + return "Shader"; + case MENU_ENUM_LABEL_VALUE_CHEAT: + return "Cheat"; + case MENU_ENUM_LABEL_VALUE_USER: + return "User"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_BGM_ENABLE: + return "System BGM Enable"; + case MENU_ENUM_LABEL_VALUE_RETROPAD: + return "RetroPad"; + case MENU_ENUM_LABEL_VALUE_RETROKEYBOARD: + return "RetroKeyboard"; + case MENU_ENUM_LABEL_VALUE_AUDIO_BLOCK_FRAMES: + return "Block Frames"; + case MENU_ENUM_LABEL_VALUE_INPUT_BIND_MODE: + return "Bind Mode"; + case MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW: + return "Display Input Descriptor Labels"; + case MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND: + return "Hide Unbound Core Input Descriptors"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FONT_ENABLE: + return "Display OSD Message"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FONT_PATH: + return "OSD Message Font"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE: + return "OSD Message Size"; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_X: + return "OSD Message X Position"; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_Y: + return "OSD Message Y Position"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SOFT_FILTER: + return "Soft Filter Enable"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_FLICKER: + return "Flicker filter"; + case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: + return ""; + case MENU_ENUM_LABEL_VALUE_UNKNOWN: + return "Unknown"; + case MENU_ENUM_LABEL_VALUE_DONT_CARE: + return "Don't care"; + case MENU_ENUM_LABEL_VALUE_LINEAR: + return "Linear"; + case MENU_ENUM_LABEL_VALUE_NEAREST: + return "Nearest"; + case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT: + return ""; + case MENU_ENUM_LABEL_VALUE_DIRECTORY_NONE: + return ""; + case MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE: + return "N/A"; + case MENU_ENUM_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY: + return "Input Remapping Dir"; + case MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR: + return "Input Device Autoconfig Dir"; + case MENU_ENUM_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY: + return "Recording Config Dir"; + case MENU_ENUM_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY: + return "Recording Output Dir"; + case MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY: + return "Screenshot Dir"; + case MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY: + return "Playlist Dir"; + case MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY: + return "Savefile Dir"; + case MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY: + return "Savestate Dir"; + case MENU_ENUM_LABEL_VALUE_STDIN_CMD_ENABLE: + return "stdin Commands"; + case MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_ENABLE: + return "Network Gamepad"; + case MENU_ENUM_LABEL_VALUE_VIDEO_DRIVER: + return "Video Driver"; + case MENU_ENUM_LABEL_VALUE_RECORD_ENABLE: + return "Record Enable"; + case MENU_ENUM_LABEL_VALUE_VIDEO_GPU_RECORD: + return "GPU Record Enable"; + case MENU_ENUM_LABEL_VALUE_RECORD_PATH: + return "Output File"; + case MENU_ENUM_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY: + return "Use Output Dir"; + case MENU_ENUM_LABEL_VALUE_RECORD_CONFIG: + return "Record Config"; + case MENU_ENUM_LABEL_VALUE_VIDEO_POST_FILTER_RECORD: + return "Post filter record Enable"; + case MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY: + return "Downloads Dir"; + case MENU_ENUM_LABEL_VALUE_ASSETS_DIRECTORY: + return "Assets Dir"; + case MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY: + return "Dynamic Wallpapers Dir"; + case MENU_ENUM_LABEL_VALUE_THUMBNAILS_DIRECTORY: + return "Thumbnails Dir"; + case MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY: + return "File Browser Dir"; + case MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY: + return "Config Dir"; + case MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH: + return "Core Info Dir"; + case MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH: + return "Core Dir"; + case MENU_ENUM_LABEL_VALUE_CURSOR_DIRECTORY: + return "Cursor Dir"; + case MENU_ENUM_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY: + return "Content Database Dir"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_DIRECTORY: + return "System/BIOS Dir"; + case MENU_ENUM_LABEL_VALUE_CHEAT_DATABASE_PATH: + return "Cheat File Dir"; + case MENU_ENUM_LABEL_VALUE_CACHE_DIRECTORY: + return "Cache Dir"; + case MENU_ENUM_LABEL_VALUE_AUDIO_FILTER_DIR: + return "Audio Filter Dir"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_DIR: + return "Video Shader Dir"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_DIR: + return "Video Filter Dir"; + case MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY: + return "Overlay Dir"; + case MENU_ENUM_LABEL_VALUE_OSK_OVERLAY_DIRECTORY: + return "OSK Overlay Dir"; + case MENU_ENUM_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT: + return "Swap Netplay Input"; + case MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE: + return "Netplay Spectator Enable"; + case MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS: + return "IP Address"; + case MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT: + return "Netplay TCP/UDP Port"; + case MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE: + return "Netplay Enable"; + case MENU_ENUM_LABEL_VALUE_SSH_ENABLE: + return "SSH Enable"; + case MENU_ENUM_LABEL_VALUE_SAMBA_ENABLE: + return "SAMBA Enable"; + case MENU_ENUM_LABEL_VALUE_BLUETOOTH_ENABLE: + return "Bluetooth Enable"; + case MENU_ENUM_LABEL_VALUE_NETPLAY_DELAY_FRAMES: + return "Netplay Delay Frames"; + case MENU_ENUM_LABEL_VALUE_NETPLAY_MODE: + return "Netplay Client Enable"; + case MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN: + return "Show Start Screen"; + case MENU_ENUM_LABEL_VALUE_TITLE_COLOR: + return "Menu title color"; + case MENU_ENUM_LABEL_VALUE_ENTRY_HOVER_COLOR: + return "Menu entry hover color"; + case MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE: + return "Display time / date"; + case MENU_ENUM_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE: + return "Threaded data runloop"; + case MENU_ENUM_LABEL_VALUE_ENTRY_NORMAL_COLOR: + return "Menu entry normal color"; + case MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS: + return "Show Advanced Settings"; + case MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE: + return "Mouse Support"; + case MENU_ENUM_LABEL_VALUE_POINTER_ENABLE: + return "Touch Support"; + case MENU_ENUM_LABEL_VALUE_CORE_ENABLE: + return "Display core name"; + case MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_ENABLE: + return "DPI Override Enable"; + case MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_VALUE: + return "DPI Override"; + case MENU_ENUM_LABEL_VALUE_XMB_SCALE_FACTOR: + return "XMB Scale Factor"; + case MENU_ENUM_LABEL_VALUE_XMB_ALPHA_FACTOR: + return "XMB Alpha Factor"; + case MENU_ENUM_LABEL_VALUE_XMB_FONT: + return "XMB Font"; + case MENU_ENUM_LABEL_VALUE_XMB_THEME: + return "XMB Theme"; + case MENU_ENUM_LABEL_VALUE_XMB_GRADIENT: + return "Background Gradient"; + case MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE: + return "Icon Shadows Enable"; + case MENU_ENUM_LABEL_VALUE_XMB_RIBBON_ENABLE: + return "Menu Shader Pipeline"; + case MENU_ENUM_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE: + return "Suspend Screensaver"; + case MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION: + return "Disable Desktop Composition"; + case MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE: + return "Don't run in background"; + case MENU_ENUM_LABEL_VALUE_UI_COMPANION_START_ON_BOOT: + return "UI Companion Start On Boot"; + case MENU_ENUM_LABEL_VALUE_UI_COMPANION_ENABLE: + return "UI Companion Enable"; + case MENU_ENUM_LABEL_VALUE_UI_MENUBAR_ENABLE: + return "Menubar"; + case MENU_ENUM_LABEL_VALUE_ARCHIVE_MODE: + return "Archive File Assocation Action"; + case MENU_ENUM_LABEL_VALUE_NETWORK_CMD_ENABLE: + return "Network Commands"; + case MENU_ENUM_LABEL_VALUE_NETWORK_CMD_PORT: + return "Network Command Port"; + case MENU_ENUM_LABEL_VALUE_HISTORY_LIST_ENABLE: + return "History List Enable"; + case MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_SIZE: + return "History List Size"; + case MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO: + return "Estimated Monitor Framerate"; + case MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN: + return "Dummy On Core Shutdown"; + case MENU_ENUM_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE: + return "Automatically start a core"; + case MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_ENABLE: + return "Limit Maximum Run Speed"; + case MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO: + return "Maximum Run Speed"; + case MENU_ENUM_LABEL_VALUE_AUTO_REMAPS_ENABLE: + return "Load Remap Files Automatically"; + case MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO: + return "Slow-Motion Ratio"; + case MENU_ENUM_LABEL_VALUE_CORE_SPECIFIC_CONFIG: + return "Configuration Per-Core"; + case MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS: + return "Use per-game core options if available"; + case MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE: + return "Create game-options file"; + case MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE: + return "Game-options file"; + case MENU_ENUM_LABEL_VALUE_AUTO_OVERRIDES_ENABLE: + return "Load Override Files Automatically"; + case MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT: + return "Save Configuration On Exit"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH: + return "HW Bilinear Filtering"; + case MENU_ENUM_LABEL_VALUE_VIDEO_GAMMA: + return "Video Gamma"; + case MENU_ENUM_LABEL_VALUE_VIDEO_ALLOW_ROTATE: + return "Allow rotation"; + case MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC: + return "Hard GPU Sync"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL: + return "VSync Swap Interval"; + case MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC: + return "VSync"; + case MENU_ENUM_LABEL_VALUE_VIDEO_THREADED: + return "Threaded Video"; + case MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION: + return "Rotation"; + case MENU_ENUM_LABEL_VALUE_VIDEO_GPU_SCREENSHOT: + return "GPU Screenshot Enable"; + case MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN: + return "Crop Overscan (Reload)"; + case MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX: + return "Aspect Ratio Index"; + case MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO: + return "Auto Aspect Ratio"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT: + return "Force aspect ratio"; + case MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE: + return "Refresh Rate"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE: + return "Force-disable sRGB FBO"; + case MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN: + return "Windowed Fullscreen Mode"; + case MENU_ENUM_LABEL_VALUE_PAL60_ENABLE: + return "Use PAL60 Mode"; + case MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER: + return "Deflicker"; + case MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH: + return "Set VI Screen Width"; + case MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION: + return "Black Frame Insertion"; + case MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES: + return "Hard GPU Sync Frames"; + case MENU_ENUM_LABEL_VALUE_SORT_SAVEFILES_ENABLE: + return "Sort Saves In Folders"; + case MENU_ENUM_LABEL_VALUE_SORT_SAVESTATES_ENABLE: + return "Sort Savestates In Folders"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN: + return "Use Fullscreen Mode"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SCALE: + return "Windowed Scale"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER: + return "Integer Scale"; + case MENU_ENUM_LABEL_VALUE_PERFCNT_ENABLE: + return "Performance Counters"; + case MENU_ENUM_LABEL_VALUE_LIBRETRO_LOG_LEVEL: + return "Core Logging Level"; + case MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY: + return "Logging Verbosity"; + case MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_LOAD: + return "Auto Load State"; + case MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_INDEX: + return "Save State Auto Index"; + case MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_SAVE: + return "Auto Save State"; + case MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL: + return "SaveRAM Autosave Interval"; + case MENU_ENUM_LABEL_VALUE_BLOCK_SRAM_OVERWRITE: + return "Don't overwrite SaveRAM on loading savestate"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SHARED_CONTEXT: + return "HW Shared Context Enable"; + case MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH: + return "Restart RetroArch"; + case MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME: + return "Username"; + case MENU_ENUM_LABEL_VALUE_USER_LANGUAGE: + return "Language"; + case MENU_ENUM_LABEL_VALUE_CAMERA_ALLOW: + return "Allow Camera"; + case MENU_ENUM_LABEL_VALUE_LOCATION_ALLOW: + return "Allow Location"; + case MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO: + return "Pause when menu activated"; + case MENU_ENUM_LABEL_VALUE_INPUT_OSK_OVERLAY_ENABLE: + return "Display Keyboard Overlay"; + case MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE: + return "Display Overlay"; + case MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX: + return "Monitor Index"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY: + return "Frame Delay"; + case MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE: + return "Duty Cycle"; + case MENU_ENUM_LABEL_VALUE_INPUT_TURBO_PERIOD: + return "Turbo Period"; + case MENU_ENUM_LABEL_VALUE_INPUT_AXIS_THRESHOLD: + return "Input Axis Threshold"; + case MENU_ENUM_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE: + return "Remap Binds Enable"; + case MENU_ENUM_LABEL_VALUE_INPUT_MAX_USERS: + return "Max Users"; + case MENU_ENUM_LABEL_VALUE_INPUT_AUTODETECT_ENABLE: + return "Autoconfig Enable"; + case MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE: + return "Audio Output Rate (KHz)"; + case MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW: + return "Audio Maximum Timing Skew"; + case MENU_ENUM_LABEL_VALUE_CHEAT_NUM_PASSES: + return "Cheat Passes"; + case MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CORE: + return "Save Core Remap File"; + case MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_GAME: + return "Save Game Remap File"; + case MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_CHANGES: + return "Apply Cheat Changes"; + case MENU_ENUM_LABEL_VALUE_SHADER_APPLY_CHANGES: + return "Apply Shader Changes"; + case MENU_ENUM_LABEL_VALUE_REWIND_ENABLE: + return "Rewind Enable"; + case MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST: + return "Select From Collection"; + case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: + return "Select File And Detect Core"; + case MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST: + return "Select Downloaded File And Detect Core"; + case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: + return "Load Recent"; + case MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE: + return "Audio Enable"; + case MENU_ENUM_LABEL_VALUE_FPS_SHOW: + return "Display Framerate"; + case MENU_ENUM_LABEL_VALUE_AUDIO_MUTE: + return "Audio Mute"; + case MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME: + return "Audio Volume Level (dB)"; + case MENU_ENUM_LABEL_VALUE_AUDIO_SYNC: + return "Audio Sync Enable"; + case MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA: + return "Audio Rate Control Delta"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES: + return "Shader Passes"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SHA1: + return "SHA1"; + case MENU_ENUM_LABEL_VALUE_CONFIGURATIONS: + return "Load Configuration"; + case MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY: + return "Rewind Granularity"; + case MENU_ENUM_LABEL_VALUE_REMAP_FILE_LOAD: + return "Load Remap File"; + case MENU_ENUM_LABEL_VALUE_CUSTOM_RATIO: + return "Custom Ratio"; + case MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY: + return ""; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_START_CONTENT: + return "Start Content"; + case MENU_ENUM_LABEL_VALUE_DISK_OPTIONS: + return "Disk Control"; + case MENU_ENUM_LABEL_VALUE_CORE_OPTIONS: + return "Options"; + case MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS: + return "Cheats"; + case MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD: + return "Cheat File Load"; + case MENU_ENUM_LABEL_VALUE_CHEAT_FILE_SAVE_AS: + return "Cheat File Save As"; + case MENU_ENUM_LABEL_VALUE_CORE_COUNTERS: + return "Core Counters"; + case MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT: + return "Take Screenshot"; + case MENU_ENUM_LABEL_VALUE_RESUME: + return "Resume"; + case MENU_ENUM_LABEL_VALUE_DISK_INDEX: + return "Disk Index"; + case MENU_ENUM_LABEL_VALUE_FRONTEND_COUNTERS: + return "Frontend Counters"; + case MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND: + return "Disk Image Append"; + case MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS: + return "Disk Cycle Tray Status"; + case MENU_ENUM_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE: + return "No playlist entries available."; + case MENU_ENUM_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE: + return "No core information available."; + case MENU_ENUM_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE: + return "No core options available."; + case MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE: + return "No cores available."; + case MENU_ENUM_LABEL_VALUE_NO_CORE: + return "No Core"; + case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER: + return "Database Manager"; + case MENU_ENUM_LABEL_VALUE_CURSOR_MANAGER: + return "Cursor Manager"; + case MENU_ENUM_LABEL_VALUE_MAIN_MENU: + return "Main Menu"; + case MENU_ENUM_LABEL_VALUE_SETTINGS: + return "Settings"; + case MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH: + return "Quit RetroArch"; + case MENU_ENUM_LABEL_VALUE_SHUTDOWN: + return "Shutdown"; + case MENU_ENUM_LABEL_VALUE_REBOOT: + return "Reboot"; + case MENU_ENUM_LABEL_VALUE_HELP: + return "help"; + case MENU_ENUM_LABEL_VALUE_SAVE_NEW_CONFIG: + return "Save New Config"; + case MENU_ENUM_LABEL_VALUE_RESTART_CONTENT: + return "Restart"; + case MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST: + return "Core Updater"; + case MENU_ENUM_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL: + return "Buildbot Cores URL"; + case MENU_ENUM_LABEL_VALUE_BUILDBOT_ASSETS_URL: + return "Buildbot Assets URL"; + case MENU_ENUM_LABEL_VALUE_NAVIGATION_WRAPAROUND: + return "Navigation Wrap-Around"; + case MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE: + return "Filter by supported extensions"; + case MENU_ENUM_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE: + return "Automatically extract downloaded archive"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFORMATION: + return "System Information"; + case MENU_ENUM_LABEL_VALUE_NETWORK_INFORMATION: + return "Network Information"; + case MENU_ENUM_LABEL_VALUE_DEBUG_INFORMATION: + return "Debug Information"; + case MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST: + return "Achievement List"; + case MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER: + return "Online Updater"; + case MENU_ENUM_LABEL_VALUE_CORE_INFORMATION: + return "Core Information"; + case MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND: + return "Directory not found."; + case MENU_ENUM_LABEL_VALUE_NO_ITEMS: + return "No items."; + case MENU_ENUM_LABEL_VALUE_CORE_LIST: + return "Load Core"; + case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT: + return "Select File"; + case MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT: + return "Close"; + case MENU_ENUM_LABEL_VALUE_MANAGEMENT: + return "Database Settings"; + case MENU_ENUM_LABEL_VALUE_SAVE_STATE: + return "Save State"; + case MENU_ENUM_LABEL_VALUE_LOAD_STATE: + return "Load State"; + case MENU_ENUM_LABEL_VALUE_UNDO_LOAD_STATE: + return "Undo Load State"; + case MENU_ENUM_LABEL_VALUE_UNDO_SAVE_STATE: + return "Undo Save State"; + case MENU_ENUM_LABEL_VALUE_RESUME_CONTENT: + return "Resume"; + case MENU_ENUM_LABEL_VALUE_INPUT_DRIVER: + return "Input Driver"; + case MENU_ENUM_LABEL_VALUE_AUDIO_DRIVER: + return "Audio Driver"; + case MENU_ENUM_LABEL_VALUE_JOYPAD_DRIVER: + return "Joypad Driver"; + case MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER: + return "Audio Resampler Driver"; + case MENU_ENUM_LABEL_VALUE_RECORD_DRIVER: + return "Record Driver"; + case MENU_ENUM_LABEL_VALUE_MENU_DRIVER: + return "Menu Driver"; + case MENU_ENUM_LABEL_VALUE_CAMERA_DRIVER: + return "Camera Driver"; + case MENU_ENUM_LABEL_VALUE_LOCATION_DRIVER: + return "Location Driver"; + case MENU_ENUM_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE: + return "Unable to read compressed file."; + case MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE: + return "Overlay Scale"; + case MENU_ENUM_LABEL_VALUE_OVERLAY_PRESET: + return "Overlay Preset"; + case MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY: + return "Audio Latency (ms)"; + case MENU_ENUM_LABEL_VALUE_AUDIO_DEVICE: + return "Audio Device"; + case MENU_ENUM_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET: + return "Keyboard Overlay Preset"; + case MENU_ENUM_LABEL_VALUE_OVERLAY_OPACITY: + return "Overlay Opacity"; + case MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER: + return "Menu Wallpaper"; + case MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER: + return "Dynamic Wallpaper"; + case MENU_ENUM_LABEL_VALUE_THUMBNAILS: + return "Thumbnails"; + case MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS: + return "Controls"; + case MENU_ENUM_LABEL_VALUE_SHADER_OPTIONS: + return "Shaders"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS: + return "Preview Shader Parameters"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS: + return "Menu Shader Parameters"; + case MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS: + return "Shader Preset Save As"; + case MENU_ENUM_LABEL_VALUE_NO_SHADER_PARAMETERS: + return "No shader parameters."; + case MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET: + return "Load Shader Preset"; + case MENU_ENUM_LABEL_VALUE_VIDEO_FILTER: + return "Video Filter"; + case MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN: + return "Audio DSP Plugin"; + case MENU_ENUM_LABEL_VALUE_STARTING_DOWNLOAD: + return "Starting download: "; + case MENU_ENUM_LABEL_VALUE_SECONDS: + return "seconds"; + case MENU_ENUM_LABEL_VALUE_OFF: + return "OFF"; + case MENU_ENUM_LABEL_VALUE_ON: + return "ON"; + case MENU_ENUM_LABEL_VALUE_UPDATE_ASSETS: + return "Update Assets"; + case MENU_ENUM_LABEL_VALUE_UPDATE_LAKKA: + return "Update Lakka"; + case MENU_ENUM_LABEL_VALUE_UPDATE_CHEATS: + return "Update Cheats"; + case MENU_ENUM_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES: + return "Update Autoconfig Profiles"; + case MENU_ENUM_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES_HID: + return "Update Autoconfig Profiles (HID)"; + case MENU_ENUM_LABEL_VALUE_UPDATE_DATABASES: + return "Update Databases"; + case MENU_ENUM_LABEL_VALUE_UPDATE_OVERLAYS: + return "Update Overlays"; + case MENU_ENUM_LABEL_VALUE_UPDATE_CG_SHADERS: + return "Update Cg Shaders"; + case MENU_ENUM_LABEL_VALUE_UPDATE_GLSL_SHADERS: + return "Update GLSL Shaders"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_NAME: + return "Core name"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_LABEL: + return "Core label"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME: + return "System name"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER: + return "System manufacturer"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_CATEGORIES: + return "Categories"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_AUTHORS: + return "Authors"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_PERMISSIONS: + return "Permissions"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_LICENSES: + return "License(s)"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS: + return "Supported extensions"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE: + return "Firmware"; + case MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_NOTES: + return "Core notes"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE: + return "Build date"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION: + return "Git version"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES: + return "CPU Features"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER: + return "Frontend identifier"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME: + return "Frontend name"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS: + return "Frontend OS"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL: + return "RetroRating level"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE: + return "Power source"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE: + return "No source"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING: + return "Charging"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED: + return "Charged"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING: + return "Discharging"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER: + return "Video context driver"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH: + return "Display metric width (mm)"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT: + return "Display metric height (mm)"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI: + return "Display metric DPI"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT: + return "LibretroDB support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT: + return "Overlay support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT: + return "Command interface support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_REMOTE_SUPPORT: + return "Network Gamepad support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT: + return "Network Command interface support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT: + return "Cocoa support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT: + return "PNG support (RPNG)"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RJPEG_SUPPORT: + return "JPEG support (RJPEG)"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RBMP_SUPPORT: + return "BMP support (RBMP)"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RTGA_SUPPORT: + return "RTGA support (RTGA)"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT: + return "SDL1.2 support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT: + return "SDL2 support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VULKAN_SUPPORT: + return "Vulkan support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT: + return "OpenGL support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT: + return "OpenGL ES support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT: + return "Threading support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT: + return "KMS/EGL support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT: + return "Udev support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT: + return "OpenVG support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT: + return "EGL support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT: + return "X11 support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT: + return "Wayland support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT: + return "XVideo support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT: + return "ALSA support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT: + return "OSS support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT: + return "OpenAL support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT: + return "OpenSL support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT: + return "RSound support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT: + return "RoarAudio support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT: + return "JACK support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT: + return "PulseAudio support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT: + return "DirectSound support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT: + return "XAudio2 support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT: + return "Zlib support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT: + return "7zip support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT: + return "Dynamic library support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT: + return "Cg support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT: + return "GLSL support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT: + return "HLSL support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT: + return "libxml2 XML parsing support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT: + return "SDL image support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT: + return "OpenGL/Direct3D render-to-texture (multi-pass shaders) support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT: + return "Dynamic run-time loading of libretro library"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT: + return "FFmpeg support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT: + return "CoreText support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT: + return "FreeType support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT: + return "Netplay (peer-to-peer) support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT: + return "Python (script support in shaders) support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT: + return "Video4Linux2 support"; + case MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT: + return "Libusb support"; + case MENU_ENUM_LABEL_VALUE_YES: + return "Yes"; + case MENU_ENUM_LABEL_VALUE_NO: + return "No"; + case MENU_ENUM_LABEL_VALUE_BACK: + return "BACK"; + case MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION: + return "Screen Resolution"; + case MENU_ENUM_LABEL_VALUE_DISABLED: + return "Disabled"; + case MENU_ENUM_LABEL_VALUE_PORT: + return "Port"; + case MENU_ENUM_LABEL_VALUE_NONE: + return "None"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DEVELOPER: + return "Developer"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PUBLISHER: + return "Publisher"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DESCRIPTION: + return "Description"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_GENRE: + return "Genre"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_NAME: + return "Name"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ORIGIN: + return "Origin"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FRANCHISE: + return "Franchise"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH: + return "Releasedate Month"; + case MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR: + return "Releasedate Year"; + case MENU_ENUM_LABEL_VALUE_TRUE: + return "True"; + case MENU_ENUM_LABEL_VALUE_FALSE: + return "False"; + case MENU_ENUM_LABEL_VALUE_MISSING: + return "Missing"; + case MENU_ENUM_LABEL_VALUE_PRESENT: + return "Present"; + case MENU_ENUM_LABEL_VALUE_OPTIONAL: + return "Optional"; + case MENU_ENUM_LABEL_VALUE_REQUIRED: + return "Required"; + case MENU_ENUM_LABEL_VALUE_STATUS: + return "Status"; + case MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS: + return "Audio"; + case MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS: + return "Input"; + case MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS: + return "Onscreen Display"; + case MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS: + return "Onscreen Overlay"; + case MENU_ENUM_LABEL_VALUE_MENU_SETTINGS: + return "Menu"; + case MENU_ENUM_LABEL_VALUE_MULTIMEDIA_SETTINGS: + return "Multimedia"; + case MENU_ENUM_LABEL_VALUE_UI_SETTINGS: + return "User Interface"; + case MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS: + return "Menu File Browser"; + case MENU_ENUM_LABEL_VALUE_CORE_UPDATER_SETTINGS: + return "Updater"; + case MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS: + return "Network"; + case MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES: + return "Lakka Services"; + case MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS: + return "Playlists"; + case MENU_ENUM_LABEL_VALUE_USER_SETTINGS: + return "User"; + case MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS: + return "Directory"; + case MENU_ENUM_LABEL_VALUE_RECORDING_SETTINGS: + return "Recording"; + case MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE: + return "No information is available."; + case MENU_ENUM_LABEL_VALUE_INPUT_USER_BINDS: + return "Input User %u Binds"; + case MENU_ENUM_LABEL_VALUE_LANG_ENGLISH: + return "English"; + case MENU_ENUM_LABEL_VALUE_LANG_JAPANESE: + return "Japanese"; + case MENU_ENUM_LABEL_VALUE_LANG_FRENCH: + return "French"; + case MENU_ENUM_LABEL_VALUE_LANG_SPANISH: + return "Spanish"; + case MENU_ENUM_LABEL_VALUE_LANG_GERMAN: + return "German"; + case MENU_ENUM_LABEL_VALUE_LANG_ITALIAN: + return "Italian"; + case MENU_ENUM_LABEL_VALUE_LANG_DUTCH: + return "Dutch"; + case MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE: + return "Portuguese"; + case MENU_ENUM_LABEL_VALUE_LANG_RUSSIAN: + return "Russian"; + case MENU_ENUM_LABEL_VALUE_LANG_KOREAN: + return "Korean"; + case MENU_ENUM_LABEL_VALUE_LANG_CHINESE_TRADITIONAL: + return "Chinese (Traditional)"; + case MENU_ENUM_LABEL_VALUE_LANG_CHINESE_SIMPLIFIED: + return "Chinese (Simplified)"; + case MENU_ENUM_LABEL_VALUE_LANG_ESPERANTO: + return "Esperanto"; + case MENU_ENUM_LABEL_VALUE_LEFT_ANALOG: + return "Left Analog"; + case MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG: + return "Right Analog"; + case MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BINDS: + return "Input Hotkey Binds"; + case MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_SETTINGS: + return "Frame Throttle"; + case MENU_ENUM_LABEL_VALUE_SEARCH: + return "Search:"; + case MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER: + return "Use Builtin Image Viewer"; + case MENU_ENUM_LABEL_VALUE_ENABLE: + return "Enable"; + case MENU_ENUM_LABEL_VALUE_START_CORE: + return "Start Core"; + case MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR: + return "Poll Type Behavior"; + default: + break; + } + + return "null"; +} + const char *menu_hash_to_str_us(uint32_t hash) { const char *ret = menu_hash_to_str_us_label(hash); diff --git a/menu/menu_hash.c b/menu/menu_hash.c index 8c7ed377b0..39791640a9 100644 --- a/menu/menu_hash.c +++ b/menu/menu_hash.c @@ -69,6 +69,54 @@ const char *menu_hash_to_str(uint32_t hash) return menu_hash_to_str_us(hash); } +const char *menu_hash_to_str_enum(enum menu_hash_enums msg) +{ + const char *ret = NULL; + settings_t *settings = config_get_ptr(); + + if (!settings) + return "null"; + +#if 0 +#ifdef HAVE_LANGEXTRA + switch (settings->user_language) + { + case RETRO_LANGUAGE_FRENCH: + ret = menu_hash_to_str_fr_enum(msg); + break; + case RETRO_LANGUAGE_GERMAN: + ret = menu_hash_to_str_de_enum(msg); + break; + case RETRO_LANGUAGE_SPANISH: + ret = menu_hash_to_str_es_enum(msg); + break; + case RETRO_LANGUAGE_ITALIAN: + ret = menu_hash_to_str_it_enum(msg); + break; + case RETRO_LANGUAGE_PORTUGUESE: + ret = menu_hash_to_str_pt_enum(msg); + break; + case RETRO_LANGUAGE_DUTCH: + ret = menu_hash_to_str_nl_enum(msg); + break; + case RETRO_LANGUAGE_ESPERANTO: + ret = menu_hash_to_str_eo_enum(msg); + break; + case RETRO_LANGUAGE_POLISH: + ret = menu_hash_to_str_pl_enum(msg); + break; + default: + break; + } +#endif +#endif + + if (ret && !string_is_equal(ret, "null")) + return ret; + + return menu_hash_to_str_us_enum(msg); +} + int menu_hash_get_help(uint32_t hash, char *s, size_t len) { int ret = -1; diff --git a/menu/menu_hash.h b/menu/menu_hash.h index 7b21d5a390..e51956e2e6 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -32,7 +32,16 @@ enum menu_hash_enums MENU_ENUM_LABEL_MENU_THROTTLE_FRAMERATE, MENU_ENUM_LABEL_MENU_WALLPAPER, + MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER, MENU_ENUM_LABEL_MENU_LINEAR_FILTER, + MENU_ENUM_LABEL_VALUE_MENU_LINEAR_FILTER, + + MENU_ENUM_LABEL_VALUE_MENU_DRIVER, + + MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS, + + MENU_ENUM_LABEL_MENU_SETTINGS, + MENU_ENUM_LABEL_VALUE_MENU_SETTINGS, MENU_ENUM_LABEL_THUMBNAILS_UPDATER_LIST, MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST, @@ -2366,9 +2375,11 @@ const char *menu_hash_to_str_eo(uint32_t hash); int menu_hash_get_help_eo(uint32_t hash, char *s, size_t len); const char *menu_hash_to_str_us(uint32_t hash); +const char *menu_hash_to_str_us_enum(enum menu_hash_enums msg); int menu_hash_get_help_us(uint32_t hash, char *s, size_t len); const char *menu_hash_to_str(uint32_t hash); +const char *menu_hash_to_str_enum(enum menu_hash_enums msg); int menu_hash_get_help(uint32_t hash, char *s, size_t len); uint32_t menu_hash_calculate(const char *s); From 34d9daf7e35ca03a323e9537348f87d7de2db9d0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 14:23:13 +0200 Subject: [PATCH 021/371] Start using menu_entries_add_enum for most entries --- menu/drivers/materialui.c | 9 ++++--- menu/menu_displaylist.c | 54 ++++++++++++++++++++++++++------------- 2 files changed, 42 insertions(+), 21 deletions(-) diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index baec76b70d..22295bea56 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -1347,22 +1347,25 @@ static int mui_list_push(void *data, void *userdata, { case DISPLAYLIST_LOAD_CONTENT_LIST: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_LOAD_CONTENT), menu_hash_to_str(MENU_LABEL_LOAD_CONTENT), + MENU_ENUM_LABEL_LOAD_CONTENT, MENU_SETTING_ACTION, 0, 0); core_info_get_list(&list); if (core_info_list_num_info_files(list)) { - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DETECT_CORE_LIST), menu_hash_to_str(MENU_LABEL_DETECT_CORE_LIST), + MENU_ENUM_LABEL_DETECT_CORE_LIST, MENU_SETTING_ACTION, 0, 0); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST), menu_hash_to_str(MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST), + MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST, MENU_SETTING_ACTION, 0, 0); } diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index db64315547..5ff7a82be2 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3483,33 +3483,39 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->need_push = true; break; case DISPLAYLIST_HELP_SCREEN_LIST: - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_HELP_CONTROLS), menu_hash_to_str(MENU_LABEL_HELP_CONTROLS), + MENU_ENUM_LABEL_HELP_CONTROLS, 0, 0, 0); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_HELP_WHAT_IS_A_CORE), menu_hash_to_str(MENU_LABEL_HELP_WHAT_IS_A_CORE), + MENU_ENUM_LABEL_HELP_WHAT_IS_A_CORE, 0, 0, 0); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_HELP_LOADING_CONTENT), menu_hash_to_str(MENU_LABEL_HELP_LOADING_CONTENT), + MENU_ENUM_LABEL_HELP_LOADING_CONTENT, 0, 0, 0); #ifdef HAVE_LIBRETRODB - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_HELP_SCANNING_CONTENT), menu_hash_to_str(MENU_LABEL_HELP_SCANNING_CONTENT), + MENU_ENUM_LABEL_HELP_SCANNING_CONTENT, 0, 0, 0); #endif #ifdef HAVE_OVERLAY - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD), menu_hash_to_str(MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD), + MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD, 0, 0, 0); #endif - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING), menu_hash_to_str(MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING), + MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING, 0, 0, 0); info->need_refresh = true; info->need_push = true; @@ -3803,30 +3809,34 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->need_refresh = true; break; case DISPLAYLIST_LOAD_CONTENT_LIST: - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_LOAD_CONTENT), menu_hash_to_str(MENU_LABEL_LOAD_CONTENT), + MENU_ENUM_LABEL_LOAD_CONTENT, MENU_SETTING_ACTION, 0, 0); if (core_info_list_num_info_files(list)) { - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DETECT_CORE_LIST), menu_hash_to_str(MENU_LABEL_DETECT_CORE_LIST), + MENU_ENUM_LABEL_DETECT_CORE_LIST, MENU_SETTING_ACTION, 0, 0); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str( MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST), menu_hash_to_str( MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST), + MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST, MENU_SETTING_ACTION, 0, 0); } #ifdef HAVE_LIBRETRODB - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_COLLECTION_LIST), menu_hash_to_str(MENU_LABEL_CONTENT_COLLECTION_LIST), + MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST, MENU_SETTING_ACTION, 0, 0); #endif @@ -4030,17 +4040,20 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) } break; case DISPLAYLIST_OPTIONS_DISK: - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DISK_INDEX), menu_hash_to_str(MENU_LABEL_DISK_INDEX), + MENU_ENUM_LABEL_DISK_INDEX, MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX, 0, 0); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS), menu_hash_to_str(MENU_LABEL_DISK_CYCLE_TRAY_STATUS), + MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS, MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS, 0, 0); - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DISK_IMAGE_APPEND), menu_hash_to_str(MENU_LABEL_DISK_IMAGE_APPEND), + MENU_ENUM_LABEL_DISK_IMAGE_APPEND, MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_IMAGE_APPEND, 0, 0); info->need_push = true; @@ -4112,8 +4125,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) MENU_FILE_CORE, 0, 0); break; default: - menu_entries_add(info->list, cores_paths->elems[i].data, + menu_entries_add_enum(info->list, cores_paths->elems[i].data, menu_hash_to_str(MENU_LABEL_DETECT_CORE_LIST_OK), + MENU_LABEL_DETECT_CORE_LIST_OK, MENU_FILE_CORE, 0, 0); break; } @@ -4184,27 +4198,31 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) break; case DISPLAYLIST_ARCHIVE_ACTION: #ifdef HAVE_COMPRESSION - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_OPEN_ARCHIVE), menu_hash_to_str(MENU_LABEL_OPEN_ARCHIVE), + MENU_ENUM_LABEL_OPEN_ARCHIVE, 0, 0, 0); #endif - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_LOAD_ARCHIVE), menu_hash_to_str(MENU_LABEL_LOAD_ARCHIVE), + MENU_ENUM_LABEL_LOAD_ARCHIVE, 0, 0, 0); info->need_push = true; break; case DISPLAYLIST_ARCHIVE_ACTION_DETECT_CORE: #ifdef HAVE_COMPRESSION - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_OPEN_ARCHIVE), menu_hash_to_str(MENU_LABEL_OPEN_ARCHIVE_DETECT_CORE), + MENU_ENUM_LABEL_OPEN_ARCHIVE_DETECT_CORE, 0, 0, 0); #endif - menu_entries_add(info->list, + menu_entries_add_enum(info->list, menu_hash_to_str(MENU_LABEL_VALUE_LOAD_ARCHIVE), menu_hash_to_str(MENU_LABEL_LOAD_ARCHIVE_DETECT_CORE), + MENU_ENUM_LABEL_LOAD_ARCHIVE_DETECT_CORE, 0, 0, 0); info->need_push = true; break; From 03dd7d4b5109352c2ef619fc15565a3466c26b04 Mon Sep 17 00:00:00 2001 From: vanfanel Date: Wed, 15 Jun 2016 14:28:13 +0200 Subject: [PATCH 022/371] VIDEO/DISPMANX: Fixed segfault when loading new core and content from RGUI --- gfx/drivers/dispmanx_gfx.c | 88 ++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 46 deletions(-) diff --git a/gfx/drivers/dispmanx_gfx.c b/gfx/drivers/dispmanx_gfx.c index 8e36ef1031..ae1344b259 100644 --- a/gfx/drivers/dispmanx_gfx.c +++ b/gfx/drivers/dispmanx_gfx.c @@ -118,7 +118,7 @@ struct dispmanx_video int menu_pitch; /* Both main and menu surfaces are going to have the same aspect, * so we keep it here for future reference. */ - float aspect; + float aspect_ratio; }; /* If no free page is available when called, wait for a page flip. */ @@ -378,7 +378,7 @@ static void *dispmanx_gfx_init(const video_info_t *video, * call seq when a core is loaded is gfx_init()->set_aspect()->gfx_frame() * and we don't want the main surface to be setup in set_aspect() * before we get to gfx_frame(). */ - _dispvars->aspect = video_driver_get_aspect_ratio(); + _dispvars->aspect_ratio = video_driver_get_aspect_ratio(); /* Initialize the rest of the mutexes and conditions. */ _dispvars->vsync_condition = scond_new(); @@ -404,21 +404,24 @@ static bool dispmanx_gfx_frame(void *data, const void *frame, unsigned width, unsigned height, uint64_t frame_count, unsigned pitch, const char *msg) { struct dispmanx_video *_dispvars = data; + float aspect = video_driver_get_aspect_ratio(); - if (width != _dispvars->core_width || height != _dispvars->core_height) + if (width != _dispvars->core_width || height != _dispvars->core_height || _dispvars->aspect_ratio != aspect) { /* Sanity check. */ if (width == 0 || height == 0) return true; - _dispvars->core_width = width; - _dispvars->core_height = height; - _dispvars->core_pitch = pitch; + _dispvars->core_width = width; + _dispvars->core_height = height; + _dispvars->core_pitch = pitch; + _dispvars->aspect_ratio = aspect; if (_dispvars->main_surface != NULL) dispmanx_surface_free(_dispvars, &_dispvars->main_surface); - /* We need to recreate the main surface. */ + /* Internal resolution or ratio has changed, so we need + * to recreate the main surface. */ dispmanx_surface_setup(_dispvars, width, height, @@ -426,10 +429,16 @@ static bool dispmanx_gfx_frame(void *data, const void *frame, unsigned width, _dispvars->rgb32 ? 32 : 16, _dispvars->rgb32 ? VC_IMAGE_XRGB8888 : VC_IMAGE_RGB565, 255, - _dispvars->aspect, + _dispvars->aspect_ratio, 3, 0, &_dispvars->main_surface); + + /* We need to recreate the menu surface too, if it exists already, so we + * free it and let dispmanx_set_texture_frame() recreate it as it detects it's NULL.*/ + if (_dispvars->menu_active && _dispvars->menu_surface) { + dispmanx_surface_free(_dispvars, &_dispvars->menu_surface); + } } if (_dispvars->menu_active) @@ -462,7 +471,7 @@ static void dispmanx_set_texture_frame(void *data, const void *frame, bool rgb32 if (!_dispvars->menu_active) return; - /* If menu is active in this frame but out menu surface is NULL, we allocate a new one.*/ + /* If menu is active in this frame but our menu surface is NULL, we allocate a new one.*/ if (_dispvars->menu_surface == NULL) { _dispvars->menu_width = width; @@ -473,10 +482,10 @@ static void dispmanx_set_texture_frame(void *data, const void *frame, bool rgb32 width, height, _dispvars->menu_pitch, - rgb32 ? 32 : 16, + 16, VC_IMAGE_RGBA16, 210, - _dispvars->aspect, + _dispvars->aspect_ratio, 3, 0, &_dispvars->menu_surface); @@ -562,45 +571,32 @@ static bool dispmanx_gfx_read_viewport(void *data, uint8_t *buffer) static void dispmanx_set_aspect_ratio (void *data, unsigned aspect_ratio_idx) { - struct dispmanx_video *_dispvars = data; - /* Here we obtain the new aspect ratio. */ - float new_aspect = aspectratio_lut[aspect_ratio_idx].value; - if (_dispvars->aspect != new_aspect) - { - _dispvars->aspect = new_aspect; - if (_dispvars->main_surface != NULL) - dispmanx_surface_free(_dispvars, &_dispvars->main_surface); + /* Due to RetroArch setting the data pointer to NULL internally + * on core change, data is going to be NULL here after we load + * a new core from the GUI, so we can't count on accessing it + * to store the aspect ratio we are going to use, so we tell RA + * to keep track of the new aspect ratio and we get it in gfx_frame() + * with video_driver_get_aspect_ratio() to find out if it has changed. */ + + switch (aspect_ratio_idx) + { + case ASPECT_RATIO_SQUARE: + video_driver_set_viewport_square_pixel(); + break; - dispmanx_surface_setup(_dispvars, - _dispvars->core_width, - _dispvars->core_height, - _dispvars->core_pitch, - _dispvars->rgb32 ? 32 : 16, - _dispvars->rgb32 ? VC_IMAGE_XRGB8888 : VC_IMAGE_RGB565, - 255, - _dispvars->aspect, - 3, - 0, - &_dispvars->main_surface); + case ASPECT_RATIO_CORE: + video_driver_set_viewport_core(); + break; - if (_dispvars->menu_active) - { - if (_dispvars->menu_surface != NULL) - dispmanx_surface_free(_dispvars, &_dispvars->menu_surface); + case ASPECT_RATIO_CONFIG: + video_driver_set_viewport_config(); + break; - dispmanx_surface_setup(_dispvars, - _dispvars->menu_width, - _dispvars->menu_height, - _dispvars->menu_pitch, - 16, - VC_IMAGE_RGBA16, - 210, - _dispvars->aspect, - 3, - 0, - &_dispvars->menu_surface); - } + default: + break; } + + video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value); } static const video_poke_interface_t dispmanx_poke_interface = { From 5f064245c80444bc29ac85de9381cdbe93d24d77 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 14:41:26 +0200 Subject: [PATCH 023/371] xmb_menu_init_list - use menu_entries_add_enum --- menu/drivers/xmb.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index d33af22b5b..bcd1cc204f 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -3195,8 +3195,10 @@ static bool xmb_menu_init_list(void *data) strlcpy(info.label, menu_hash_to_str(MENU_VALUE_MAIN_MENU), sizeof(info.label)); - menu_entries_add(menu_stack, info.path, - info.label, info.type, info.flags, 0); + menu_entries_add_enum(menu_stack, info.path, + info.label, + MENU_ENUM_LABEL_VALUE_MAIN_MENU, + info.type, info.flags, 0); info.list = selection_buf; From 386457454179bb4cd82c9852817b9031e67939f6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 14:55:13 +0200 Subject: [PATCH 024/371] Remove DISPLAYLIST_SETTING --- menu/menu_displaylist.c | 14 -------------- menu/menu_displaylist.h | 1 - 2 files changed, 15 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 5ff7a82be2..b0d26ff3bf 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3525,20 +3525,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->label, info->type, info->directory_ptr, 0); menu->push_help_screen = false; break; - case DISPLAYLIST_SETTING: - { - menu_displaylist_ctx_parse_entry_t *entry = - (menu_displaylist_ctx_parse_entry_t*)data; - - if (menu_displaylist_parse_settings(entry->data, - entry->info, - entry->info_label, - entry->parse_type, - entry->add_empty_entry) == -1) - goto error; - - } - return true; case DISPLAYLIST_SETTING_ENUM: { menu_displaylist_ctx_parse_entry_t *entry = diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index a67b81730d..7327b1f30d 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -52,7 +52,6 @@ enum menu_displaylist_ctl_state DISPLAYLIST_HELP_SCREEN_LIST, DISPLAYLIST_MAIN_MENU, DISPLAYLIST_GENERIC, - DISPLAYLIST_SETTING, DISPLAYLIST_SETTING_ENUM, DISPLAYLIST_SETTINGS, DISPLAYLIST_SETTINGS_ALL, From e1002719c09b48bb4350eb9da0eaedcb9ae3e770 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 14:59:49 +0200 Subject: [PATCH 025/371] Use menu_entries_add_enum --- menu/cbs/menu_cbs_ok.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 02edf7d2a7..b0d5a1f3ef 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -436,7 +436,9 @@ int generic_action_ok_displaylist_push(const char *path, info.list = selection_buf; info_path = menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_SETTINGS); info_label = menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS); - menu_entries_add(menu_stack, info_path, info_label, 0, 0, 0); + menu_entries_add_enum(menu_stack, info_path, info_label, + MENU_ENUM_LABEL_CONTENT_SETTINGS, + 0, 0, 0); break; } From 6f3b8c4049a44c4aca6a6b12e3650a0639929187 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 16:43:02 +0200 Subject: [PATCH 026/371] Set cbs->enum_idx when setting a menu entry with menu_entries_add_enum --- menu/menu_entries.c | 3 ++- menu/menu_entries.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/menu/menu_entries.c b/menu/menu_entries.c index c02043b8b0..a2eef81c6d 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -568,7 +568,8 @@ void menu_entries_add_enum(file_list_t *list, const char *path, const char *labe file_list_set_actiondata(list, idx, cbs); - cbs->setting = menu_setting_find_enum(enum_idx); + cbs->enum_idx = enum_idx ; + cbs->setting = menu_setting_find_enum(enum_idx); menu_cbs_init(list, cbs, path, label, type, idx); } diff --git a/menu/menu_entries.h b/menu/menu_entries.h index 2df1ee06c7..57daa4bba1 100644 --- a/menu/menu_entries.h +++ b/menu/menu_entries.h @@ -61,6 +61,7 @@ enum menu_entries_ctl_state typedef struct menu_file_list_cbs { rarch_setting_t *setting; + enum menu_hash_enums enum_idx; int (*action_iterate)(const char *label, unsigned action); const char *action_iterate_ident; From 8720048b4e2a1bf6556a0c8f2857746b841b92a7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 16:45:27 +0200 Subject: [PATCH 027/371] menu_entries_prepend - use menu_setting_find_enum if enum_idx is set --- menu/menu_entries.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/menu/menu_entries.c b/menu/menu_entries.c index a2eef81c6d..1f52edd5f2 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -603,7 +603,10 @@ void menu_entries_prepend(file_list_t *list, const char *path, const char *label file_list_set_actiondata(list, idx, cbs); - cbs->setting = menu_setting_find(label); + if (cbs->enum_idx == MENU_ENUM_LABEL_UNKNOWN) + cbs->setting = menu_setting_find(label); + else + cbs->setting = menu_setting_find_enum(cbs->enum_idx); menu_cbs_init(list, cbs, path, label, type, idx); } From f8448dc7f30bf11c7e4f05948db427ff41920202 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 17:04:22 +0200 Subject: [PATCH 028/371] Bugfix - should pass exact enum type --- menu/menu_displaylist.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index b0d26ff3bf..45c397e86d 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4113,7 +4113,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) default: menu_entries_add_enum(info->list, cores_paths->elems[i].data, menu_hash_to_str(MENU_LABEL_DETECT_CORE_LIST_OK), - MENU_LABEL_DETECT_CORE_LIST_OK, + MENU_ENUM_LABEL_DETECT_CORE_LIST_OK, MENU_FILE_CORE, 0, 0); break; } From 8e1e20fc5da70721b3df95ef66b34bf949b96ac1 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jun 2016 17:06:20 +0200 Subject: [PATCH 029/371] remove unused variable name --- menu/menu_setting.c | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 9952eca247..f5a881c364 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2045,7 +2045,6 @@ static rarch_setting_t *menu_setting_find_internal_enum(rarch_setting_t *setting { for (; menu_setting_get_type(setting) != ST_NONE; menu_settings_list_increment(&setting)) { - const char *name = menu_setting_get_name(setting); const char *short_description = menu_setting_get_short_description(setting); if (setting->enum_idx == enum_idx && menu_setting_get_type(setting) <= ST_GROUP) From 177c96a382b40ced2a085ce35eb8a1ad71a2560b Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jun 2016 17:07:10 +0200 Subject: [PATCH 030/371] Fix 'value stored to variable 'playlist' is never read' warning --- menu/cbs/menu_cbs_ok.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index b0d5a1f3ef..1726aeba53 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -573,7 +573,7 @@ static int action_ok_playlist_entry_collection(const char *path, size_t selection; menu_content_ctx_playlist_info_t playlist_info; size_t selection_ptr = 0; - playlist_t *playlist = g_defaults.history; + playlist_t *playlist = NULL; bool is_history = true; const char *entry_path = NULL; const char *entry_label = NULL; From dd04705d25aacb650508e82073e060b331eb326d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 17:13:04 +0200 Subject: [PATCH 031/371] Turn menu_settings_list_current_add_enum_idx into public scope function so we can use it in gfx/video_driver.c --- gfx/video_driver.c | 5 +++++ menu/menu_setting.c | 2 +- menu/menu_setting.h | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 8856d36376..beaecf8193 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -1191,6 +1191,7 @@ void video_driver_menu_settings(void **list_data, void *list_info_data, group_info, subgroup_info, parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SCREEN_RESOLUTION); #endif #if defined(__CELLOS_LV2__) CONFIG_BOOL( @@ -1206,6 +1207,7 @@ void video_driver_menu_settings(void **list_data, void *list_info_data, parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PAL60_ENABLE); #endif #if defined(GEKKO) || defined(_XBOX360) CONFIG_UINT( @@ -1233,6 +1235,7 @@ void video_driver_menu_settings(void **list_data, void *list_info_data, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_GAMMA); #endif #if defined(_XBOX1) || defined(HW_RVL) CONFIG_BOOL( @@ -1252,6 +1255,7 @@ void video_driver_menu_settings(void **list_data, void *list_info_data, list, list_info, CMD_EVENT_VIDEO_APPLY_STATE_CHANGES); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SOFT_FILTER); #endif #ifdef _XBOX1 CONFIG_UINT( @@ -1266,6 +1270,7 @@ void video_driver_menu_settings(void **list_data, void *list_info_data, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 5, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FILTER_FLICKER); #endif #endif } diff --git a/menu/menu_setting.c b/menu/menu_setting.c index f5a881c364..0c5888d5cf 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1833,7 +1833,7 @@ void menu_settings_list_current_add_cmd( (*list)[idx].cmd_trigger.idx = values; } -static void menu_settings_list_current_add_enum_idx( +void menu_settings_list_current_add_enum_idx( rarch_setting_t **list, rarch_setting_info_t *list_info, enum menu_hash_enums enum_idx) diff --git a/menu/menu_setting.h b/menu/menu_setting.h index 9e5b5395a9..07bc4b176d 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -386,6 +386,11 @@ void settings_data_list_current_add_free_flags( rarch_setting_info_t *list_info, unsigned values); +void menu_settings_list_current_add_enum_idx( + rarch_setting_t **list, + rarch_setting_info_t *list_info, + enum menu_hash_enums enum_idx); + bool menu_setting_ctl(enum menu_setting_ctl_state state, void *data); RETRO_END_DECLS From 61b7d13086800cd42d38d4461c849d2157250f4a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 17:15:05 +0200 Subject: [PATCH 032/371] Cleanup to menu_settings_find_internal functions --- menu/menu_setting.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 0c5888d5cf..e545147f75 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2018,11 +2018,10 @@ static rarch_setting_t *menu_setting_find_internal(rarch_setting_t *setting, { for (; menu_setting_get_type(setting) != ST_NONE; menu_settings_list_increment(&setting)) { - const char *name = menu_setting_get_name(setting); - const char *short_description = menu_setting_get_short_description(setting); - if (needle == setting->name_hash && menu_setting_get_type(setting) <= ST_GROUP) { + const char *name = menu_setting_get_name(setting); + const char *short_description = menu_setting_get_short_description(setting); /* make sure this isn't a collision */ if (!string_is_equal(label, name)) continue; @@ -2045,10 +2044,9 @@ static rarch_setting_t *menu_setting_find_internal_enum(rarch_setting_t *setting { for (; menu_setting_get_type(setting) != ST_NONE; menu_settings_list_increment(&setting)) { - const char *short_description = menu_setting_get_short_description(setting); - if (setting->enum_idx == enum_idx && menu_setting_get_type(setting) <= ST_GROUP) { + const char *short_description = menu_setting_get_short_description(setting); if (string_is_empty(short_description)) return NULL; From 5b5cde28ce61e5eef6273ae7e031ea75a74e19c6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 17:38:59 +0200 Subject: [PATCH 033/371] Add enum setting_flags parameter to CONFIG_BOOL function --- menu/menu_setting.c | 350 +++++++++++++++++++++++++++++--------------- menu/menu_setting.h | 6 +- 2 files changed, 239 insertions(+), 117 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index e545147f75..4a77d3eabb 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1583,7 +1583,9 @@ bool CONFIG_BOOL( rarch_setting_group_info_t *group_info, rarch_setting_group_info_t *subgroup_info, const char *parent_group, - change_handler_t change_handler, change_handler_t read_handler) + change_handler_t change_handler, + change_handler_t read_handler, + enum setting_flags flags) { rarch_setting_t value = setting_bool_setting (name, SHORT, target, default_value, off, on, @@ -1595,6 +1597,8 @@ bool CONFIG_BOOL( if (value.name) value.name_hash = menu_hash_calculate(value.name); (*list)[list_info->index++] = value; + if (flags != SD_FLAG_NONE) + settings_data_list_current_add_flags(list, list_info, flags); return true; } @@ -4051,8 +4055,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT); CONFIG_BOOL( @@ -4067,8 +4071,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN); CONFIG_BOOL( @@ -4083,8 +4087,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE); END_SUB_GROUP(list, list_info, parent_group); @@ -4111,7 +4115,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT); CONFIG_BOOL( @@ -4126,7 +4131,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_SPECIFIC_CONFIG); CONFIG_BOOL( @@ -4141,7 +4147,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS); CONFIG_BOOL( @@ -4156,7 +4163,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUTO_OVERRIDES_ENABLE); CONFIG_BOOL( @@ -4171,7 +4179,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUTO_REMAPS_ENABLE); END_SUB_GROUP(list, list_info, parent_group); @@ -4200,8 +4209,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LOG_VERBOSITY); CONFIG_UINT( @@ -4233,8 +4242,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DEBUG_PANEL_ENABLE); END_SUB_GROUP(list, list_info, parent_group); @@ -4256,8 +4265,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PERFCNT_ENABLE); } END_SUB_GROUP(list, list_info, parent_group); @@ -4283,7 +4292,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE); CONFIG_BOOL( @@ -4298,7 +4308,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE); CONFIG_BOOL( @@ -4313,7 +4324,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE); @@ -4349,7 +4361,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVESTATE_AUTO_INDEX); CONFIG_BOOL( @@ -4364,7 +4377,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVESTATE_AUTO_SAVE); CONFIG_BOOL( @@ -4379,7 +4393,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVESTATE_AUTO_LOAD); END_SUB_GROUP(list, list_info, parent_group); @@ -4405,9 +4420,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_CMD_APPLY_AUTO); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REWIND_TOGGLE); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_REWIND_ENABLE); #if 0 @@ -4459,7 +4474,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SUSPEND_SCREENSAVER_ENABLE); CONFIG_BOOL( @@ -4474,7 +4490,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_FPS_SHOW); END_SUB_GROUP(list, list_info, parent_group); @@ -4519,9 +4536,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_CMD_APPLY_AUTO); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FULLSCREEN); } if (video_driver_has_windowed()) @@ -4538,7 +4555,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN); } @@ -4590,9 +4608,10 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_CMD_APPLY_AUTO | SD_FLAG_ADVANCED + ); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FORCE_SRGB_DISABLE); } @@ -4737,7 +4756,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_cmd( list, list_info, @@ -4771,7 +4791,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_VFILTER); #endif @@ -4787,7 +4808,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SMOOTH); CONFIG_UINT( @@ -4829,9 +4852,10 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_CMD_APPLY_AUTO | SD_FLAG_ADVANCED + ); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_THREADED); #endif @@ -4847,7 +4871,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_VSYNC); CONFIG_UINT( @@ -4878,7 +4904,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_HARD_SYNC); CONFIG_UINT( @@ -4924,7 +4952,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION); #endif END_SUB_GROUP(list, list_info, parent_group); @@ -4948,7 +4978,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_GPU_SCREENSHOT); @@ -4964,7 +4996,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_ALLOW_ROTATE); @@ -4980,7 +5014,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN); CONFIG_PATH( @@ -5023,7 +5059,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_ENABLE); @@ -5039,7 +5077,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_MUTE); CONFIG_FLOAT( @@ -5070,7 +5110,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SYSTEM_BGM_ENABLE); #endif @@ -5098,7 +5140,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_SYNC); CONFIG_UINT( @@ -5291,7 +5335,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR); CONFIG_UINT( @@ -5320,7 +5366,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_SMALL_KEYBOARD_ENABLE); #endif @@ -5337,7 +5385,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_BACK_AS_MENU_TOGGLE); #endif @@ -5367,7 +5417,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_REMAP_BINDS_ENABLE); CONFIG_BOOL( @@ -5382,7 +5434,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE); CONFIG_BOOL( @@ -5397,8 +5451,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW); CONFIG_BOOL( @@ -5413,8 +5468,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND); END_SUB_GROUP(list, list_info, parent_group); @@ -5534,7 +5590,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORD_ENABLE); CONFIG_PATH( @@ -5580,7 +5638,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORD_USE_OUTPUT_DIRECTORY); END_SUB_GROUP(list, list_info, parent_group); @@ -5599,7 +5659,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_POST_FILTER_RECORD); CONFIG_BOOL( @@ -5614,7 +5676,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_GPU_RECORD); END_SUB_GROUP(list, list_info, parent_group); @@ -5705,7 +5769,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MENU_THROTTLE_FRAMERATE); END_SUB_GROUP(list, list_info, parent_group); @@ -5735,7 +5801,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FONT_ENABLE); CONFIG_PATH( @@ -5823,7 +5891,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE); @@ -5839,7 +5909,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OVERLAY_AUTOLOAD_PREFERRED); @@ -5855,7 +5927,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU); @@ -5871,7 +5945,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE); CONFIG_PATH( @@ -5986,7 +6062,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DYNAMIC_WALLPAPER); @@ -6002,9 +6080,10 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_CMD_APPLY_AUTO + ); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_PAUSE_LIBRETRO); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PAUSE_LIBRETRO); CONFIG_BOOL( @@ -6019,7 +6098,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MOUSE_ENABLE); CONFIG_BOOL( @@ -6034,7 +6115,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_POINTER_ENABLE); CONFIG_BOOL( @@ -6049,7 +6132,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MENU_LINEAR_FILTER); #ifdef RARCH_MOBILE @@ -6075,8 +6160,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND); END_SUB_GROUP(list, list_info, parent_group); @@ -6094,7 +6180,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SHOW_ADVANCED_SETTINGS); #ifdef HAVE_THREADS @@ -6110,8 +6197,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE); #endif @@ -6180,7 +6268,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DPI_OVERRIDE_ENABLE); CONFIG_UINT( @@ -6270,7 +6359,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_SHADOWS_ENABLE); #ifdef HAVE_SHADERPIPELINE @@ -6316,7 +6406,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN); CONFIG_UINT( @@ -6345,7 +6436,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_TIMEDATE_ENABLE); CONFIG_BOOL( @@ -6360,7 +6452,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_ENABLE); END_SUB_GROUP(list, list_info, parent_group); @@ -6387,7 +6480,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE); END_SUB_GROUP(list, list_info, parent_group); @@ -6416,7 +6510,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_USE_BUILTIN_PLAYER); } @@ -6434,7 +6529,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_USE_BUILTIN_IMAGE_VIEWER); #endif @@ -6463,7 +6559,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PAUSE_NONACTIVE); CONFIG_BOOL( @@ -6478,9 +6575,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_CMD_APPLY_AUTO); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION); CONFIG_BOOL( @@ -6495,8 +6592,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_UI_COMPANION_ENABLE); CONFIG_BOOL( @@ -6511,8 +6608,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT); CONFIG_BOOL( @@ -6527,7 +6624,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_UI_MENUBAR_ENABLE); @@ -6558,7 +6656,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_HISTORY_LIST_ENABLE); #endif @@ -6598,7 +6698,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEEVOS_ENABLE); CONFIG_BOOL( @@ -6613,7 +6715,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEEVOS_TEST_UNOFFICIAL); CONFIG_BOOL( @@ -6628,7 +6732,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE); @@ -6685,7 +6791,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE); END_SUB_GROUP(list, list_info, parent_group); @@ -6718,7 +6826,9 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE + ); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_ENABLE); CONFIG_BOOL( @@ -6733,7 +6843,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_CLIENT_SWAP_INPUT); CONFIG_STRING( @@ -6763,7 +6874,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_MODE); CONFIG_BOOL( @@ -6778,7 +6890,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE); CONFIG_UINT( @@ -6835,8 +6948,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETWORK_CMD_ENABLE); CONFIG_UINT( @@ -6866,8 +6979,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETWORK_REMOTE_ENABLE); CONFIG_UINT( @@ -6907,8 +7020,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); settings_data_list_current_add_free_flags(list, list_info, SD_FREE_FLAG_NAME | SD_FREE_FLAG_SHORT); /* TODO/FIXME - add enum_idx */ } @@ -6925,8 +7038,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + general_read_handler, + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_STDIN_CMD_ENABLE); #endif END_SUB_GROUP(list, list_info, parent_group); @@ -6957,7 +7070,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); (*list)[list_info->index - 1].change_handler = ssh_enable_toggle_change_handler; menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SSH_ENABLE); @@ -6973,7 +7087,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); (*list)[list_info->index - 1].change_handler = samba_enable_toggle_change_handler; menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAMBA_ENABLE); @@ -6989,7 +7104,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); (*list)[list_info->index - 1].change_handler = bluetooth_enable_toggle_change_handler; menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_BLUETOOTH_ENABLE); @@ -7666,7 +7782,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CAMERA_ALLOW); } @@ -7684,7 +7801,8 @@ static bool setting_append_list( &subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LOCATION_ALLOW); } diff --git a/menu/menu_setting.h b/menu/menu_setting.h index 07bc4b176d..290735b0eb 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -52,6 +52,7 @@ enum setting_type enum setting_flags { + SD_FLAG_NONE = 0, SD_FLAG_PATH_DIR = (1 << 0), SD_FLAG_PATH_FILE = (1 << 1), SD_FLAG_ALLOW_EMPTY = (1 << 2), @@ -169,7 +170,10 @@ bool CONFIG_BOOL( rarch_setting_group_info_t *group_info, rarch_setting_group_info_t *subgroup_info, const char *parent_group, - change_handler_t change_handler, change_handler_t read_handler); + change_handler_t change_handler, + change_handler_t read_handler, + enum setting_flags flags + ); bool CONFIG_INT( rarch_setting_t **list, From d3d5d80e6279c29877e8a3fddfb4a27b658854a9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 17:40:09 +0200 Subject: [PATCH 034/371] (video_driver.c) Buildfix --- gfx/video_driver.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index beaecf8193..30e225888a 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -1206,7 +1206,8 @@ void video_driver_menu_settings(void **list_data, void *list_info_data, subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PAL60_ENABLE); #endif #if defined(GEKKO) || defined(_XBOX360) @@ -1250,7 +1251,8 @@ void video_driver_menu_settings(void **list_data, void *list_info_data, subgroup_info, parent_group, general_write_handler, - general_read_handler); + general_read_handler, + SD_FLAG_NONE); menu_settings_list_current_add_cmd( list, list_info, From c6196152e9ef593550b38002a6d300cbacaf6238 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 17:43:08 +0200 Subject: [PATCH 035/371] Get rid of some unnecessary calls --- menu/menu_setting.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 4a77d3eabb..0d6d853e70 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4325,8 +4325,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler, - SD_FLAG_NONE); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE); #ifdef HAVE_THREADS @@ -4997,9 +4996,8 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler, - SD_FLAG_NONE + SD_FLAG_ADVANCED ); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_ALLOW_ROTATE); CONFIG_BOOL( @@ -5060,9 +5058,8 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler, - SD_FLAG_NONE + SD_FLAG_ADVANCED ); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_ENABLE); CONFIG_BOOL( From f7d3ded79ce6b8d40739a656d6c2d21098e31e10 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 17:52:22 +0200 Subject: [PATCH 036/371] Start grouping CONFIG_DIR behavior together --- menu/menu_setting.c | 108 ++------------------------------------------ 1 file changed, 4 insertions(+), 104 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 0d6d853e70..fcb6b68303 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1705,6 +1705,10 @@ bool CONFIG_DIR( if (value.name) value.name_hash = menu_hash_calculate(value.name); (*list)[list_info->index++] = value; + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); return true; } @@ -7263,10 +7267,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SYSTEM_DIRECTORY); CONFIG_DIR( @@ -7282,10 +7282,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CORE_ASSETS_DIRECTORY); CONFIG_DIR( @@ -7301,10 +7297,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_ASSETS_DIRECTORY); CONFIG_DIR( @@ -7320,10 +7312,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY); CONFIG_DIR( @@ -7339,10 +7327,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_THUMBNAILS_DIRECTORY); CONFIG_DIR( @@ -7358,10 +7342,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY); CONFIG_DIR( @@ -7377,10 +7357,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RGUI_CONFIG_DIRECTORY); @@ -7398,10 +7374,6 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_CORE_INFO_INIT); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LIBRETRO_DIR_PATH); CONFIG_DIR( @@ -7418,10 +7390,6 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_CORE_INFO_INIT); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LIBRETRO_INFO_PATH); #ifdef HAVE_LIBRETRODB @@ -7438,10 +7406,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY); CONFIG_DIR( @@ -7457,10 +7421,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CURSOR_DIRECTORY); #endif @@ -7477,10 +7437,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CHEAT_DATABASE_PATH); CONFIG_DIR( @@ -7496,10 +7452,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FILTER_DIR); CONFIG_DIR( @@ -7515,10 +7467,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_FILTER_DIR); CONFIG_DIR( @@ -7534,10 +7482,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_SHADER_DIR); if (!string_is_equal(settings->record.driver, "null")) @@ -7555,10 +7499,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORDING_OUTPUT_DIRECTORY); CONFIG_DIR( @@ -7574,10 +7514,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORDING_CONFIG_DIRECTORY); } #ifdef HAVE_OVERLAY @@ -7594,10 +7530,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OVERLAY_DIRECTORY); CONFIG_DIR( @@ -7613,10 +7545,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OSK_OVERLAY_DIRECTORY); #endif @@ -7633,10 +7561,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY); CONFIG_DIR( @@ -7652,10 +7576,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_JOYPAD_AUTOCONFIG_DIR); CONFIG_DIR( @@ -7671,10 +7591,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_INPUT_REMAPPING_DIRECTORY); CONFIG_DIR( @@ -7690,10 +7606,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_PLAYLIST_DIRECTORY); CONFIG_DIR( @@ -7709,10 +7621,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVEFILE_DIRECTORY); CONFIG_DIR( @@ -7728,10 +7636,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVESTATE_DIRECTORY); CONFIG_DIR( @@ -7747,10 +7651,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_CACHE_DIRECTORY); END_SUB_GROUP(list, list_info, parent_group); From 53e46676f58dfbbb6969d0f32f3e16b6cdad28f7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 17:56:15 +0200 Subject: [PATCH 037/371] Group CONFIG_PATH behavior together --- menu/menu_setting.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index fcb6b68303..56c2c56dfb 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1684,6 +1684,7 @@ bool CONFIG_PATH( if (value.name) value.name_hash = menu_hash_calculate(value.name); (*list)[list_info->index++] = value; + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); return true; } @@ -5035,7 +5036,6 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_values(list, list_info, "filt"); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FILTER); END_SUB_GROUP(list, list_info, parent_group); @@ -5278,7 +5278,6 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_values(list, list_info, "dsp"); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_DSP_FILTER_INIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN); END_SUB_GROUP(list, list_info, parent_group); @@ -5609,7 +5608,6 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_values(list, list_info, "cfg"); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_RECORD_CONFIG); CONFIG_STRING( @@ -5819,7 +5817,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_VIDEO_FONT_PATH); CONFIG_FLOAT( @@ -5965,7 +5962,6 @@ static bool setting_append_list( general_read_handler); menu_settings_list_current_add_values(list, list_info, "cfg"); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_OVERLAY_INIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_OVERLAY_PRESET); CONFIG_FLOAT( @@ -6019,7 +6015,6 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_values(list, list_info, "cfg"); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_KEYBOARD_OVERLAY_PRESET); END_SUB_GROUP(list, list_info, parent_group); @@ -6048,7 +6043,6 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_values(list, list_info, "png"); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MENU_WALLPAPER); CONFIG_BOOL( @@ -6331,7 +6325,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_FONT); CONFIG_UINT( From 49ceee120680e1e9fe0cd61aede7d72008ab7ee9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 18:07:00 +0200 Subject: [PATCH 038/371] Rename two callbacks --- menu/cbs/menu_cbs_ok.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 1726aeba53..1dfde08313 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -969,7 +969,7 @@ static int action_ok_menu_wallpaper_load(const char *path, ACTION_OK_LOAD_WALLPAPER, MENU_SETTINGS); } -static int action_ok_core_load(const char *path, +static int action_ok_load_core(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { return generic_action_ok(path, label, type, idx, entry_idx, @@ -1276,7 +1276,7 @@ static int action_ok_core_deferred_set(const char *path, return menu_cbs_exit(); } -static int action_ok_core_load_deferred(const char *path, +static int action_ok_load_core_deferred(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { content_ctx_info_t content_info = {0}; @@ -2866,13 +2866,13 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, switch (menu_label_hash) { case MENU_LABEL_DEFERRED_CORE_LIST: - BIND_ACTION_OK(cbs, action_ok_core_load_deferred); + BIND_ACTION_OK(cbs, action_ok_load_core_deferred); break; case MENU_LABEL_DEFERRED_CORE_LIST_SET: BIND_ACTION_OK(cbs, action_ok_core_deferred_set); break; case MENU_LABEL_CORE_LIST: - BIND_ACTION_OK(cbs, action_ok_core_load); + BIND_ACTION_OK(cbs, action_ok_load_core); break; case MENU_LABEL_CORE_UPDATER_LIST: BIND_ACTION_OK(cbs, action_ok_deferred_list_stub); From a8042bdc0c0f458054d2cc770840c06f5ca2e84f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 18:17:01 +0200 Subject: [PATCH 039/371] Create CONTENT_MODE_LOAD_NOTHING_WITH_NEW_CORE_FROM_MENU --- menu/cbs/menu_cbs_ok.c | 10 ++++++---- tasks/task_content.c | 20 ++++++++++++++++++-- tasks/tasks_internal.h | 1 + 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 1dfde08313..81aa533697 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -863,12 +863,14 @@ static int generic_action_ok(const char *path, case ACTION_OK_LOAD_CORE: flush_char = NULL; flush_type = MENU_SETTINGS; - runloop_ctl(RUNLOOP_CTL_SET_LIBRETRO_PATH, action_path); - if (command_event(CMD_EVENT_LOAD_CORE, NULL)) + + if (task_push_content_load_default(action_path, + NULL, NULL, CORE_TYPE_PLAIN, + CONTENT_MODE_LOAD_NOTHING_WITH_NEW_CORE_FROM_MENU, + NULL, NULL)) { #ifndef HAVE_DYNAMIC - if (frontend_driver_set_fork(FRONTEND_FORK_CORE)) - ret = -1; + ret = -1; #endif } break; diff --git a/tasks/task_content.c b/tasks/task_content.c index 7ffe33ef43..63e6200ee1 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -1713,6 +1713,7 @@ bool task_push_content_load_default( /* First we determine if we are loading from a menu */ switch (mode) { + case CONTENT_MODE_LOAD_NOTHING_WITH_NEW_CORE_FROM_MENU: #if defined(HAVE_NETPLAY) && defined(HAVE_NETWORKGAMEPAD) case CONTENT_MODE_LOAD_NOTHING_WITH_NET_RETROPAD_CORE_FROM_MENU: #endif @@ -1782,6 +1783,7 @@ bool task_push_content_load_default( /* Set libretro core path */ switch (mode) { + case CONTENT_MODE_LOAD_NOTHING_WITH_NEW_CORE_FROM_MENU: case CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU: case CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_COMPANION_UI: case CONTENT_MODE_LOAD_CONTENT_FROM_PLAYLIST_FROM_MENU: @@ -1822,17 +1824,29 @@ bool task_push_content_load_default( /* Load core */ switch (mode) { + case CONTENT_MODE_LOAD_NOTHING_WITH_NEW_CORE_FROM_MENU: +#ifdef HAVE_DYNAMIC case CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU: case CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_COMPANION_UI: case CONTENT_MODE_LOAD_CONTENT_FROM_PLAYLIST_FROM_MENU: -#ifdef HAVE_DYNAMIC - command_event(CMD_EVENT_LOAD_CORE, NULL); #endif + command_event(CMD_EVENT_LOAD_CORE, NULL); break; default: break; } +#ifndef HAVE_DYNAMIC + /* Fork core? */ + switch (mode) + { + default: + if (!frontend_driver_set_fork(FRONTEND_FORK_CORE)) + return false; + break; + } +#endif + /* Preliminary stuff that has to be done before we * load the actual content. Can differ per mode. */ switch (mode) @@ -1898,6 +1912,8 @@ bool task_push_content_load_default( case CONTENT_MODE_LOAD_NOTHING_WITH_NET_RETROPAD_CORE_FROM_MENU: #endif break; + case CONTENT_MODE_LOAD_NOTHING_WITH_NEW_CORE_FROM_MENU: + break; default: #ifdef HAVE_MENU if (type != CORE_TYPE_DUMMY && mode != CONTENT_MODE_LOAD_FROM_CLI) diff --git a/tasks/tasks_internal.h b/tasks/tasks_internal.h index 1c8c7c8d59..4f4d3a9adc 100644 --- a/tasks/tasks_internal.h +++ b/tasks/tasks_internal.h @@ -36,6 +36,7 @@ enum content_mode_load CONTENT_MODE_LOAD_NOTHING_WITH_DUMMY_CORE, CONTENT_MODE_LOAD_FROM_CLI, CONTENT_MODE_LOAD_NOTHING_WITH_CURRENT_CORE_FROM_MENU, + CONTENT_MODE_LOAD_NOTHING_WITH_NEW_CORE_FROM_MENU, CONTENT_MODE_LOAD_NOTHING_WITH_NET_RETROPAD_CORE_FROM_MENU, CONTENT_MODE_LOAD_CONTENT_WITH_CURRENT_CORE_FROM_MENU, CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, From df9f1585de6f4344b0656b73c0ce2f0cd513740e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 18:52:27 +0200 Subject: [PATCH 040/371] Simplify menu_content_find_first_core --- menu/cbs/menu_cbs_ok.c | 28 ++++++++++++++-------------- menu/menu_content.c | 9 +++------ menu/menu_content.h | 3 ++- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 81aa533697..5665516744 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -461,6 +461,7 @@ static int file_load_with_detect_core_wrapper(size_t idx, size_t entry_idx, { menu_content_ctx_defer_info_t def_info; content_ctx_info_t content_info = {0}; + char new_core_path[PATH_MAX_LENGTH] = {0}; char menu_path_new[PATH_MAX_LENGTH] = {0}; int ret = 0; const char *menu_path = NULL; @@ -494,7 +495,8 @@ static int file_load_with_detect_core_wrapper(size_t idx, size_t entry_idx, def_info.s = menu->deferred_path; def_info.len = sizeof(menu->deferred_path); - if (menu_content_find_first_core(&def_info, false)) + if (menu_content_find_first_core(&def_info, false, new_core_path, + sizeof(new_core_path))) ret = -1; if ( !is_carchive && !string_is_empty(path) @@ -509,9 +511,7 @@ static int file_load_with_detect_core_wrapper(size_t idx, size_t entry_idx, switch (ret) { case -1: - command_event(CMD_EVENT_LOAD_CORE, NULL); - - task_push_content_load_default(NULL, NULL, + task_push_content_load_default(new_core_path, NULL, &content_info, CORE_TYPE_PLAIN, CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, NULL, NULL); @@ -2333,12 +2333,13 @@ static int action_ok_load_archive_detect_core(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { menu_content_ctx_defer_info_t def_info; - content_ctx_info_t content_info = {0}; - int ret = 0; - core_info_list_t *list = NULL; - menu_handle_t *menu = NULL; - const char *menu_path = NULL; - const char *content_path = NULL; + content_ctx_info_t content_info = {0}; + char new_core_path[PATH_MAX_LENGTH] = {0}; + int ret = 0; + core_info_list_t *list = NULL; + menu_handle_t *menu = NULL; + const char *menu_path = NULL; + const char *content_path = NULL; if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return menu_cbs_exit(); @@ -2358,7 +2359,7 @@ static int action_ok_load_archive_detect_core(const char *path, def_info.s = menu->deferred_path; def_info.len = sizeof(menu->deferred_path); - if (menu_content_find_first_core(&def_info, false)) + if (menu_content_find_first_core(&def_info, false, new_core_path, sizeof(new_core_path))) ret = -1; fill_pathname_join(detect_content_path, menu_path, content_path, @@ -2367,11 +2368,10 @@ static int action_ok_load_archive_detect_core(const char *path, switch (ret) { case -1: - command_event(CMD_EVENT_LOAD_CORE, NULL); - task_push_content_load_default(NULL, NULL, + task_push_content_load_default(new_core_path, NULL, &content_info, CORE_TYPE_PLAIN, - CONTENT_MODE_LOAD_CONTENT_WITH_CURRENT_CORE_FROM_MENU, + CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, NULL, NULL); return 0; case 0: diff --git a/menu/menu_content.c b/menu/menu_content.c index 2a04a9bb83..4f0d18a5d8 100644 --- a/menu/menu_content.c +++ b/menu/menu_content.c @@ -125,9 +125,9 @@ error: * selection needs to be made from a list, otherwise * returns true and fills in @s with path to core. **/ -bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool load_content_with_current_core) +bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool load_content_with_current_core, + char *new_core_path, size_t len) { - char new_core_path[PATH_MAX_LENGTH] = {0}; const core_info_t *info = NULL; core_info_list_t *core_info = NULL; const char *default_info_dir = NULL; @@ -185,13 +185,10 @@ bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool return false; if (info) - strlcpy(new_core_path, info->path, sizeof(new_core_path)); + strlcpy(new_core_path, info->path, len); runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, def_info->s); - if (path_file_exists(new_core_path)) - runloop_ctl(RUNLOOP_CTL_SET_LIBRETRO_PATH, new_core_path); - return true; } diff --git a/menu/menu_content.h b/menu/menu_content.h index 69aaac1706..2123d444ce 100644 --- a/menu/menu_content.h +++ b/menu/menu_content.h @@ -60,7 +60,8 @@ typedef struct menu_content_ctx_defer_info size_t len; } menu_content_ctx_defer_info_t; -bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool load_content_with_current_core); +bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool load_content_with_current_core, + char *new_core_path, size_t len); bool menu_content_ctl(enum menu_content_ctl_state state, void *data); From 0e5e45595e10364154bbd590d42b3bc41bc71985 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 18:55:20 +0200 Subject: [PATCH 041/371] Cleanup --- menu/cbs/menu_cbs_ok.c | 4 ++-- menu/menu_content.c | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 5665516744..028abdbae2 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -511,7 +511,7 @@ static int file_load_with_detect_core_wrapper(size_t idx, size_t entry_idx, switch (ret) { case -1: - task_push_content_load_default(new_core_path, NULL, + task_push_content_load_default(new_core_path, def_info.s, &content_info, CORE_TYPE_PLAIN, CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, NULL, NULL); @@ -2368,7 +2368,7 @@ static int action_ok_load_archive_detect_core(const char *path, switch (ret) { case -1: - task_push_content_load_default(new_core_path, NULL, + task_push_content_load_default(new_core_path, def_info.s, &content_info, CORE_TYPE_PLAIN, CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, diff --git a/menu/menu_content.c b/menu/menu_content.c index 4f0d18a5d8..9c7485c105 100644 --- a/menu/menu_content.c +++ b/menu/menu_content.c @@ -125,7 +125,8 @@ error: * selection needs to be made from a list, otherwise * returns true and fills in @s with path to core. **/ -bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool load_content_with_current_core, +bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, + bool load_content_with_current_core, char *new_core_path, size_t len) { const core_info_t *info = NULL; @@ -187,8 +188,6 @@ bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool if (info) strlcpy(new_core_path, info->path, len); - runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, def_info->s); - return true; } From 5ddec4efc2ba47d1f704fd51d2ca419f4eada7d7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 18:58:18 +0200 Subject: [PATCH 042/371] Create menu_content_load_from_playlist --- menu/cbs/menu_cbs_ok.c | 4 ++-- menu/menu_content.c | 16 +--------------- menu/menu_content.h | 31 +++++++++---------------------- 3 files changed, 12 insertions(+), 39 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 028abdbae2..ccf984243c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -656,7 +656,7 @@ static int action_ok_playlist_entry_collection(const char *path, playlist_info.data = playlist; playlist_info.idx = selection_ptr; - menu_content_ctl(MENU_CONTENT_CTL_LOAD_PLAYLIST, &playlist_info); + menu_content_load_from_playlist(&playlist_info); if (is_history) { @@ -774,7 +774,7 @@ static int action_ok_playlist_entry(const char *path, playlist_info.data = playlist; playlist_info.idx = selection_ptr; - menu_content_ctl(MENU_CONTENT_CTL_LOAD_PLAYLIST, &playlist_info); + menu_content_load_from_playlist(&playlist_info); if (is_history) { diff --git a/menu/menu_content.c b/menu/menu_content.c index 9c7485c105..e869e2f0f1 100644 --- a/menu/menu_content.c +++ b/menu/menu_content.c @@ -45,7 +45,7 @@ * * Initializes core and loads content based on playlist entry. **/ -static bool menu_content_load_from_playlist(menu_content_ctx_playlist_info_t *info) +bool menu_content_load_from_playlist(menu_content_ctx_playlist_info_t *info) { unsigned idx; playlist_t *playlist = NULL; @@ -190,17 +190,3 @@ bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, return true; } - -bool menu_content_ctl(enum menu_content_ctl_state state, void *data) -{ - switch (state) - { - case MENU_CONTENT_CTL_LOAD_PLAYLIST: - return menu_content_load_from_playlist((menu_content_ctx_playlist_info_t*)data); - case MENU_CONTENT_CTL_NONE: - default: - break; - } - - return true; -} diff --git a/menu/menu_content.h b/menu/menu_content.h index 2123d444ce..c2bfb847ae 100644 --- a/menu/menu_content.h +++ b/menu/menu_content.h @@ -24,26 +24,6 @@ RETRO_BEGIN_DECLS -enum menu_content_ctl_state -{ - MENU_CONTENT_CTL_NONE = 0, - - /* Initializes core and loads content - * (based on playlist entry). */ - MENU_CONTENT_CTL_LOAD_PLAYLIST, - - /* Find first core that is compatible with the - * content. - * - * Returns false if there are multiple compatible - * cores and a selection needs to be made from - * a list. - * - * Returns true and fills in @s with path to core. - */ - MENU_CONTENT_CTL_FIND_FIRST_CORE -}; - typedef struct menu_content_ctx_playlist_info { void *data; @@ -60,11 +40,18 @@ typedef struct menu_content_ctx_defer_info size_t len; } menu_content_ctx_defer_info_t; +/** + * menu_content_load_from_playlist: + * @playlist : Playlist handle. + * @idx : Index in playlist. + * + * Initializes core and loads content based on playlist entry. + **/ +bool menu_content_load_from_playlist(menu_content_ctx_playlist_info_t *info); + bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info, bool load_content_with_current_core, char *new_core_path, size_t len); -bool menu_content_ctl(enum menu_content_ctl_state state, void *data); - RETRO_END_DECLS #endif From 2f08e760ff01e942a4a000db7011755c7c66ff68 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jun 2016 19:16:27 +0200 Subject: [PATCH 043/371] Start adding FFT visualizer for libretro-ffmpeg - unforunately depends on glm for now and is C++-based, no way around that for now --- cores/libretro-ffmpeg/fft/fft.cpp | 915 ++++++ cores/libretro-ffmpeg/fft/fft.h | 26 + deps/glm/common.hpp | 34 + deps/glm/detail/_features.hpp | 427 +++ deps/glm/detail/_fixes.hpp | 55 + deps/glm/detail/_literals.hpp | 51 + deps/glm/detail/_noise.hpp | 130 + deps/glm/detail/_swizzle.hpp | 840 ++++++ deps/glm/detail/_swizzle_func.hpp | 724 +++++ deps/glm/detail/_vectorize.hpp | 217 ++ deps/glm/detail/dummy.cpp | 190 ++ deps/glm/detail/func_common.hpp | 472 +++ deps/glm/detail/func_common.inl | 1036 +++++++ deps/glm/detail/func_exponential.hpp | 132 + deps/glm/detail/func_exponential.inl | 247 ++ deps/glm/detail/func_geometric.hpp | 151 + deps/glm/detail/func_geometric.inl | 340 +++ deps/glm/detail/func_integer.hpp | 203 ++ deps/glm/detail/func_integer.inl | 654 +++++ deps/glm/detail/func_matrix.hpp | 179 ++ deps/glm/detail/func_matrix.inl | 460 +++ deps/glm/detail/func_noise.hpp | 92 + deps/glm/detail/func_noise.inl | 384 +++ deps/glm/detail/func_packing.hpp | 195 ++ deps/glm/detail/func_packing.inl | 116 + deps/glm/detail/func_trigonometric.hpp | 203 ++ deps/glm/detail/func_trigonometric.inl | 246 ++ deps/glm/detail/func_vector_relational.hpp | 145 + deps/glm/detail/func_vector_relational.inl | 159 + deps/glm/detail/glm.cpp | 288 ++ deps/glm/detail/hint.hpp | 40 + deps/glm/detail/intrinsic_common.hpp | 89 + deps/glm/detail/intrinsic_common.inl | 313 ++ deps/glm/detail/intrinsic_exponential.hpp | 79 + deps/glm/detail/intrinsic_exponential.inl | 27 + deps/glm/detail/intrinsic_geometric.hpp | 76 + deps/glm/detail/intrinsic_geometric.inl | 146 + deps/glm/detail/intrinsic_integer.hpp | 50 + deps/glm/detail/intrinsic_integer.inl | 139 + deps/glm/detail/intrinsic_matrix.hpp | 69 + deps/glm/detail/intrinsic_matrix.inl | 1070 +++++++ deps/glm/detail/intrinsic_trigonometric.hpp | 48 + deps/glm/detail/intrinsic_trigonometric.inl | 27 + .../detail/intrinsic_vector_relational.hpp | 48 + .../detail/intrinsic_vector_relational.inl | 366 +++ deps/glm/detail/precision.hpp | 43 + deps/glm/detail/precision.inl | 0 deps/glm/detail/setup.hpp | 773 +++++ deps/glm/detail/type_float.hpp | 95 + deps/glm/detail/type_gentype.hpp | 223 ++ deps/glm/detail/type_gentype.inl | 366 +++ deps/glm/detail/type_half.hpp | 51 + deps/glm/detail/type_half.inl | 274 ++ deps/glm/detail/type_int.hpp | 191 ++ deps/glm/detail/type_mat.hpp | 795 +++++ deps/glm/detail/type_mat.inl | 27 + deps/glm/detail/type_mat2x2.hpp | 249 ++ deps/glm/detail/type_mat2x2.inl | 654 +++++ deps/glm/detail/type_mat2x3.hpp | 211 ++ deps/glm/detail/type_mat2x3.inl | 588 ++++ deps/glm/detail/type_mat2x4.hpp | 213 ++ deps/glm/detail/type_mat2x4.inl | 607 ++++ deps/glm/detail/type_mat3x2.hpp | 216 ++ deps/glm/detail/type_mat3x2.inl | 621 ++++ deps/glm/detail/type_mat3x3.hpp | 253 ++ deps/glm/detail/type_mat3x3.inl | 784 +++++ deps/glm/detail/type_mat3x4.hpp | 216 ++ deps/glm/detail/type_mat3x4.inl | 653 +++++ deps/glm/detail/type_mat4x2.hpp | 222 ++ deps/glm/detail/type_mat4x2.inl | 672 +++++ deps/glm/detail/type_mat4x3.hpp | 222 ++ deps/glm/detail/type_mat4x3.inl | 704 +++++ deps/glm/detail/type_mat4x4.hpp | 259 ++ deps/glm/detail/type_mat4x4.inl | 902 ++++++ deps/glm/detail/type_vec.hpp | 516 ++++ deps/glm/detail/type_vec.inl | 27 + deps/glm/detail/type_vec1.hpp | 277 ++ deps/glm/detail/type_vec1.inl | 811 +++++ deps/glm/detail/type_vec2.hpp | 315 ++ deps/glm/detail/type_vec2.inl | 831 ++++++ deps/glm/detail/type_vec3.hpp | 333 +++ deps/glm/detail/type_vec3.inl | 881 ++++++ deps/glm/detail/type_vec4.hpp | 376 +++ deps/glm/detail/type_vec4.inl | 992 +++++++ deps/glm/exponential.hpp | 34 + deps/glm/ext.hpp | 138 + deps/glm/fwd.hpp | 2598 +++++++++++++++++ deps/glm/geometric.hpp | 34 + deps/glm/glm.hpp | 117 + deps/glm/gtc/constants.hpp | 185 ++ deps/glm/gtc/constants.inl | 182 ++ deps/glm/gtc/epsilon.hpp | 101 + deps/glm/gtc/epsilon.inl | 150 + deps/glm/gtc/matrix_access.hpp | 87 + deps/glm/gtc/matrix_access.inl | 88 + deps/glm/gtc/matrix_integer.hpp | 514 ++++ deps/glm/gtc/matrix_inverse.hpp | 74 + deps/glm/gtc/matrix_inverse.inl | 163 ++ deps/glm/gtc/matrix_transform.hpp | 294 ++ deps/glm/gtc/matrix_transform.inl | 429 +++ deps/glm/gtc/noise.hpp | 81 + deps/glm/gtc/noise.inl | 838 ++++++ deps/glm/gtc/packing.hpp | 478 +++ deps/glm/gtc/packing.inl | 467 +++ deps/glm/gtc/quaternion.hpp | 403 +++ deps/glm/gtc/quaternion.inl | 930 ++++++ deps/glm/gtc/random.hpp | 114 + deps/glm/gtc/random.inl | 171 ++ deps/glm/gtc/reciprocal.hpp | 133 + deps/glm/gtc/reciprocal.inl | 202 ++ deps/glm/gtc/type_precision.hpp | 874 ++++++ deps/glm/gtc/type_precision.inl | 32 + deps/glm/gtc/type_ptr.hpp | 179 ++ deps/glm/gtc/type_ptr.inl | 475 +++ deps/glm/gtc/ulp.hpp | 92 + deps/glm/gtc/ulp.inl | 338 +++ deps/glm/gtx/associated_min_max.hpp | 106 + deps/glm/gtx/associated_min_max.inl | 912 ++++++ deps/glm/gtx/bit.hpp | 234 ++ deps/glm/gtx/bit.inl | 782 +++++ deps/glm/gtx/closest_point.hpp | 66 + deps/glm/gtx/closest_point.inl | 36 + deps/glm/gtx/color_space.hpp | 96 + deps/glm/gtx/color_space.inl | 149 + deps/glm/gtx/color_space_YCoCg.hpp | 84 + deps/glm/gtx/color_space_YCoCg.inl | 64 + deps/glm/gtx/compatibility.hpp | 160 + deps/glm/gtx/compatibility.inl | 58 + deps/glm/gtx/component_wise.hpp | 82 + deps/glm/gtx/component_wise.inl | 47 + deps/glm/gtx/constants.hpp | 33 + deps/glm/gtx/dual_quaternion.hpp | 295 ++ deps/glm/gtx/dual_quaternion.inl | 421 +++ deps/glm/gtx/epsilon.hpp | 29 + deps/glm/gtx/euler_angles.hpp | 155 + deps/glm/gtx/euler_angles.inl | 264 ++ deps/glm/gtx/extend.hpp | 66 + deps/glm/gtx/extend.inl | 55 + deps/glm/gtx/extented_min_max.hpp | 161 + deps/glm/gtx/extented_min_max.inl | 146 + deps/glm/gtx/fast_exponential.hpp | 98 + deps/glm/gtx/fast_exponential.inl | 148 + deps/glm/gtx/fast_square_root.hpp | 90 + deps/glm/gtx/fast_square_root.inl | 150 + deps/glm/gtx/fast_trigonometry.hpp | 100 + deps/glm/gtx/fast_trigonometry.inl | 75 + deps/glm/gtx/gradient_paint.hpp | 76 + deps/glm/gtx/gradient_paint.inl | 43 + deps/glm/gtx/handed_coordinate_space.hpp | 74 + deps/glm/gtx/handed_coordinate_space.inl | 33 + deps/glm/gtx/inertia.hpp | 116 + deps/glm/gtx/inertia.inl | 116 + deps/glm/gtx/int_10_10_10_2.hpp | 44 + deps/glm/gtx/int_10_10_10_2.inl | 33 + deps/glm/gtx/integer.hpp | 104 + deps/glm/gtx/integer.inl | 202 ++ deps/glm/gtx/intersect.hpp | 111 + deps/glm/gtx/intersect.inl | 217 ++ deps/glm/gtx/io.hpp | 150 + deps/glm/gtx/io.inl | 328 +++ deps/glm/gtx/log_base.hpp | 65 + deps/glm/gtx/log_base.inl | 24 + deps/glm/gtx/matrix_cross_product.hpp | 71 + deps/glm/gtx/matrix_cross_product.inl | 44 + deps/glm/gtx/matrix_interpolation.hpp | 88 + deps/glm/gtx/matrix_interpolation.inl | 140 + deps/glm/gtx/matrix_major_storage.hpp | 143 + deps/glm/gtx/matrix_major_storage.inl | 173 ++ deps/glm/gtx/matrix_operation.hpp | 112 + deps/glm/gtx/matrix_operation.inl | 124 + deps/glm/gtx/matrix_query.hpp | 101 + deps/glm/gtx/matrix_query.inl | 123 + deps/glm/gtx/matrix_transform_2d.hpp | 105 + deps/glm/gtx/matrix_transform_2d.inl | 97 + deps/glm/gtx/mixed_product.hpp | 65 + deps/glm/gtx/mixed_product.inl | 22 + deps/glm/gtx/multiple.hpp | 83 + deps/glm/gtx/multiple.inl | 152 + deps/glm/gtx/noise.hpp | 29 + deps/glm/gtx/norm.hpp | 127 + deps/glm/gtx/norm.inl | 147 + deps/glm/gtx/normal.hpp | 67 + deps/glm/gtx/normal.inl | 22 + deps/glm/gtx/normalize_dot.hpp | 76 + deps/glm/gtx/normalize_dot.inl | 115 + deps/glm/gtx/number_precision.hpp | 85 + deps/glm/gtx/number_precision.inl | 13 + deps/glm/gtx/optimum_pow.hpp | 94 + deps/glm/gtx/optimum_pow.inl | 61 + deps/glm/gtx/orthonormalize.hpp | 72 + deps/glm/gtx/orthonormalize.inl | 43 + deps/glm/gtx/perpendicular.hpp | 67 + deps/glm/gtx/perpendicular.inl | 21 + deps/glm/gtx/polar_coordinates.hpp | 72 + deps/glm/gtx/polar_coordinates.inl | 57 + deps/glm/gtx/projection.hpp | 65 + deps/glm/gtx/projection.inl | 21 + deps/glm/gtx/quaternion.hpp | 213 ++ deps/glm/gtx/quaternion.inl | 256 ++ deps/glm/gtx/random.hpp | 29 + deps/glm/gtx/raw_data.hpp | 75 + deps/glm/gtx/raw_data.inl | 11 + deps/glm/gtx/reciprocal.hpp | 26 + deps/glm/gtx/rotate_normalized_axis.hpp | 92 + deps/glm/gtx/rotate_normalized_axis.inl | 94 + deps/glm/gtx/rotate_vector.hpp | 132 + deps/glm/gtx/rotate_vector.inl | 223 ++ deps/glm/gtx/scalar_relational.hpp | 60 + deps/glm/gtx/scalar_relational.inl | 95 + deps/glm/gtx/simd_mat4.hpp | 205 ++ deps/glm/gtx/simd_mat4.inl | 579 ++++ deps/glm/gtx/simd_quat.hpp | 341 +++ deps/glm/gtx/simd_quat.inl | 629 ++++ deps/glm/gtx/simd_vec4.hpp | 574 ++++ deps/glm/gtx/simd_vec4.inl | 727 +++++ deps/glm/gtx/spline.hpp | 90 + deps/glm/gtx/spline.inl | 70 + deps/glm/gtx/std_based_type.hpp | 83 + deps/glm/gtx/std_based_type.inl | 13 + deps/glm/gtx/string_cast.hpp | 74 + deps/glm/gtx/string_cast.inl | 444 +++ deps/glm/gtx/transform.hpp | 84 + deps/glm/gtx/transform.inl | 37 + deps/glm/gtx/transform2.hpp | 135 + deps/glm/gtx/transform2.inl | 154 + deps/glm/gtx/ulp.hpp | 29 + deps/glm/gtx/unsigned_int.hpp | 26 + deps/glm/gtx/unsigned_int.inl | 13 + deps/glm/gtx/vec1.hpp | 166 ++ deps/glm/gtx/vec1.inl | 27 + deps/glm/gtx/vector_angle.hpp | 88 + deps/glm/gtx/vector_angle.inl | 99 + deps/glm/gtx/vector_query.hpp | 90 + deps/glm/gtx/vector_query.inl | 202 ++ deps/glm/gtx/wrap.hpp | 73 + deps/glm/gtx/wrap.inl | 165 ++ deps/glm/integer.hpp | 34 + deps/glm/mat2x2.hpp | 80 + deps/glm/mat2x3.hpp | 59 + deps/glm/mat2x4.hpp | 59 + deps/glm/mat3x2.hpp | 59 + deps/glm/mat3x3.hpp | 80 + deps/glm/mat3x4.hpp | 59 + deps/glm/mat4x2.hpp | 59 + deps/glm/mat4x3.hpp | 59 + deps/glm/mat4x4.hpp | 80 + deps/glm/matrix.hpp | 34 + deps/glm/packing.hpp | 34 + deps/glm/trigonometric.hpp | 34 + deps/glm/vec2.hpp | 34 + deps/glm/vec3.hpp | 34 + deps/glm/vec4.hpp | 34 + deps/glm/vector_relational.hpp | 34 + deps/glm/virtrev/xstream.hpp | 166 ++ menu/cbs/menu_cbs_ok.c | 6 +- 255 files changed, 56690 insertions(+), 2 deletions(-) create mode 100644 cores/libretro-ffmpeg/fft/fft.cpp create mode 100644 cores/libretro-ffmpeg/fft/fft.h create mode 100644 deps/glm/common.hpp create mode 100644 deps/glm/detail/_features.hpp create mode 100644 deps/glm/detail/_fixes.hpp create mode 100644 deps/glm/detail/_literals.hpp create mode 100644 deps/glm/detail/_noise.hpp create mode 100644 deps/glm/detail/_swizzle.hpp create mode 100644 deps/glm/detail/_swizzle_func.hpp create mode 100644 deps/glm/detail/_vectorize.hpp create mode 100644 deps/glm/detail/dummy.cpp create mode 100644 deps/glm/detail/func_common.hpp create mode 100644 deps/glm/detail/func_common.inl create mode 100644 deps/glm/detail/func_exponential.hpp create mode 100644 deps/glm/detail/func_exponential.inl create mode 100644 deps/glm/detail/func_geometric.hpp create mode 100644 deps/glm/detail/func_geometric.inl create mode 100644 deps/glm/detail/func_integer.hpp create mode 100644 deps/glm/detail/func_integer.inl create mode 100644 deps/glm/detail/func_matrix.hpp create mode 100644 deps/glm/detail/func_matrix.inl create mode 100644 deps/glm/detail/func_noise.hpp create mode 100644 deps/glm/detail/func_noise.inl create mode 100644 deps/glm/detail/func_packing.hpp create mode 100644 deps/glm/detail/func_packing.inl create mode 100644 deps/glm/detail/func_trigonometric.hpp create mode 100644 deps/glm/detail/func_trigonometric.inl create mode 100644 deps/glm/detail/func_vector_relational.hpp create mode 100644 deps/glm/detail/func_vector_relational.inl create mode 100644 deps/glm/detail/glm.cpp create mode 100644 deps/glm/detail/hint.hpp create mode 100644 deps/glm/detail/intrinsic_common.hpp create mode 100644 deps/glm/detail/intrinsic_common.inl create mode 100644 deps/glm/detail/intrinsic_exponential.hpp create mode 100644 deps/glm/detail/intrinsic_exponential.inl create mode 100644 deps/glm/detail/intrinsic_geometric.hpp create mode 100644 deps/glm/detail/intrinsic_geometric.inl create mode 100644 deps/glm/detail/intrinsic_integer.hpp create mode 100644 deps/glm/detail/intrinsic_integer.inl create mode 100644 deps/glm/detail/intrinsic_matrix.hpp create mode 100644 deps/glm/detail/intrinsic_matrix.inl create mode 100644 deps/glm/detail/intrinsic_trigonometric.hpp create mode 100644 deps/glm/detail/intrinsic_trigonometric.inl create mode 100644 deps/glm/detail/intrinsic_vector_relational.hpp create mode 100644 deps/glm/detail/intrinsic_vector_relational.inl create mode 100644 deps/glm/detail/precision.hpp create mode 100644 deps/glm/detail/precision.inl create mode 100644 deps/glm/detail/setup.hpp create mode 100644 deps/glm/detail/type_float.hpp create mode 100644 deps/glm/detail/type_gentype.hpp create mode 100644 deps/glm/detail/type_gentype.inl create mode 100644 deps/glm/detail/type_half.hpp create mode 100644 deps/glm/detail/type_half.inl create mode 100644 deps/glm/detail/type_int.hpp create mode 100644 deps/glm/detail/type_mat.hpp create mode 100644 deps/glm/detail/type_mat.inl create mode 100644 deps/glm/detail/type_mat2x2.hpp create mode 100644 deps/glm/detail/type_mat2x2.inl create mode 100644 deps/glm/detail/type_mat2x3.hpp create mode 100644 deps/glm/detail/type_mat2x3.inl create mode 100644 deps/glm/detail/type_mat2x4.hpp create mode 100644 deps/glm/detail/type_mat2x4.inl create mode 100644 deps/glm/detail/type_mat3x2.hpp create mode 100644 deps/glm/detail/type_mat3x2.inl create mode 100644 deps/glm/detail/type_mat3x3.hpp create mode 100644 deps/glm/detail/type_mat3x3.inl create mode 100644 deps/glm/detail/type_mat3x4.hpp create mode 100644 deps/glm/detail/type_mat3x4.inl create mode 100644 deps/glm/detail/type_mat4x2.hpp create mode 100644 deps/glm/detail/type_mat4x2.inl create mode 100644 deps/glm/detail/type_mat4x3.hpp create mode 100644 deps/glm/detail/type_mat4x3.inl create mode 100644 deps/glm/detail/type_mat4x4.hpp create mode 100644 deps/glm/detail/type_mat4x4.inl create mode 100644 deps/glm/detail/type_vec.hpp create mode 100644 deps/glm/detail/type_vec.inl create mode 100644 deps/glm/detail/type_vec1.hpp create mode 100644 deps/glm/detail/type_vec1.inl create mode 100644 deps/glm/detail/type_vec2.hpp create mode 100644 deps/glm/detail/type_vec2.inl create mode 100644 deps/glm/detail/type_vec3.hpp create mode 100644 deps/glm/detail/type_vec3.inl create mode 100644 deps/glm/detail/type_vec4.hpp create mode 100644 deps/glm/detail/type_vec4.inl create mode 100644 deps/glm/exponential.hpp create mode 100644 deps/glm/ext.hpp create mode 100644 deps/glm/fwd.hpp create mode 100644 deps/glm/geometric.hpp create mode 100644 deps/glm/glm.hpp create mode 100644 deps/glm/gtc/constants.hpp create mode 100644 deps/glm/gtc/constants.inl create mode 100644 deps/glm/gtc/epsilon.hpp create mode 100644 deps/glm/gtc/epsilon.inl create mode 100644 deps/glm/gtc/matrix_access.hpp create mode 100644 deps/glm/gtc/matrix_access.inl create mode 100644 deps/glm/gtc/matrix_integer.hpp create mode 100644 deps/glm/gtc/matrix_inverse.hpp create mode 100644 deps/glm/gtc/matrix_inverse.inl create mode 100644 deps/glm/gtc/matrix_transform.hpp create mode 100644 deps/glm/gtc/matrix_transform.inl create mode 100644 deps/glm/gtc/noise.hpp create mode 100644 deps/glm/gtc/noise.inl create mode 100644 deps/glm/gtc/packing.hpp create mode 100644 deps/glm/gtc/packing.inl create mode 100644 deps/glm/gtc/quaternion.hpp create mode 100644 deps/glm/gtc/quaternion.inl create mode 100644 deps/glm/gtc/random.hpp create mode 100644 deps/glm/gtc/random.inl create mode 100644 deps/glm/gtc/reciprocal.hpp create mode 100644 deps/glm/gtc/reciprocal.inl create mode 100644 deps/glm/gtc/type_precision.hpp create mode 100644 deps/glm/gtc/type_precision.inl create mode 100644 deps/glm/gtc/type_ptr.hpp create mode 100644 deps/glm/gtc/type_ptr.inl create mode 100644 deps/glm/gtc/ulp.hpp create mode 100644 deps/glm/gtc/ulp.inl create mode 100644 deps/glm/gtx/associated_min_max.hpp create mode 100644 deps/glm/gtx/associated_min_max.inl create mode 100644 deps/glm/gtx/bit.hpp create mode 100644 deps/glm/gtx/bit.inl create mode 100644 deps/glm/gtx/closest_point.hpp create mode 100644 deps/glm/gtx/closest_point.inl create mode 100644 deps/glm/gtx/color_space.hpp create mode 100644 deps/glm/gtx/color_space.inl create mode 100644 deps/glm/gtx/color_space_YCoCg.hpp create mode 100644 deps/glm/gtx/color_space_YCoCg.inl create mode 100644 deps/glm/gtx/compatibility.hpp create mode 100644 deps/glm/gtx/compatibility.inl create mode 100644 deps/glm/gtx/component_wise.hpp create mode 100644 deps/glm/gtx/component_wise.inl create mode 100644 deps/glm/gtx/constants.hpp create mode 100644 deps/glm/gtx/dual_quaternion.hpp create mode 100644 deps/glm/gtx/dual_quaternion.inl create mode 100644 deps/glm/gtx/epsilon.hpp create mode 100644 deps/glm/gtx/euler_angles.hpp create mode 100644 deps/glm/gtx/euler_angles.inl create mode 100644 deps/glm/gtx/extend.hpp create mode 100644 deps/glm/gtx/extend.inl create mode 100644 deps/glm/gtx/extented_min_max.hpp create mode 100644 deps/glm/gtx/extented_min_max.inl create mode 100644 deps/glm/gtx/fast_exponential.hpp create mode 100644 deps/glm/gtx/fast_exponential.inl create mode 100644 deps/glm/gtx/fast_square_root.hpp create mode 100644 deps/glm/gtx/fast_square_root.inl create mode 100644 deps/glm/gtx/fast_trigonometry.hpp create mode 100644 deps/glm/gtx/fast_trigonometry.inl create mode 100644 deps/glm/gtx/gradient_paint.hpp create mode 100644 deps/glm/gtx/gradient_paint.inl create mode 100644 deps/glm/gtx/handed_coordinate_space.hpp create mode 100644 deps/glm/gtx/handed_coordinate_space.inl create mode 100644 deps/glm/gtx/inertia.hpp create mode 100644 deps/glm/gtx/inertia.inl create mode 100644 deps/glm/gtx/int_10_10_10_2.hpp create mode 100644 deps/glm/gtx/int_10_10_10_2.inl create mode 100644 deps/glm/gtx/integer.hpp create mode 100644 deps/glm/gtx/integer.inl create mode 100644 deps/glm/gtx/intersect.hpp create mode 100644 deps/glm/gtx/intersect.inl create mode 100644 deps/glm/gtx/io.hpp create mode 100644 deps/glm/gtx/io.inl create mode 100644 deps/glm/gtx/log_base.hpp create mode 100644 deps/glm/gtx/log_base.inl create mode 100644 deps/glm/gtx/matrix_cross_product.hpp create mode 100644 deps/glm/gtx/matrix_cross_product.inl create mode 100644 deps/glm/gtx/matrix_interpolation.hpp create mode 100644 deps/glm/gtx/matrix_interpolation.inl create mode 100644 deps/glm/gtx/matrix_major_storage.hpp create mode 100644 deps/glm/gtx/matrix_major_storage.inl create mode 100644 deps/glm/gtx/matrix_operation.hpp create mode 100644 deps/glm/gtx/matrix_operation.inl create mode 100644 deps/glm/gtx/matrix_query.hpp create mode 100644 deps/glm/gtx/matrix_query.inl create mode 100644 deps/glm/gtx/matrix_transform_2d.hpp create mode 100644 deps/glm/gtx/matrix_transform_2d.inl create mode 100644 deps/glm/gtx/mixed_product.hpp create mode 100644 deps/glm/gtx/mixed_product.inl create mode 100644 deps/glm/gtx/multiple.hpp create mode 100644 deps/glm/gtx/multiple.inl create mode 100644 deps/glm/gtx/noise.hpp create mode 100644 deps/glm/gtx/norm.hpp create mode 100644 deps/glm/gtx/norm.inl create mode 100644 deps/glm/gtx/normal.hpp create mode 100644 deps/glm/gtx/normal.inl create mode 100644 deps/glm/gtx/normalize_dot.hpp create mode 100644 deps/glm/gtx/normalize_dot.inl create mode 100644 deps/glm/gtx/number_precision.hpp create mode 100644 deps/glm/gtx/number_precision.inl create mode 100644 deps/glm/gtx/optimum_pow.hpp create mode 100644 deps/glm/gtx/optimum_pow.inl create mode 100644 deps/glm/gtx/orthonormalize.hpp create mode 100644 deps/glm/gtx/orthonormalize.inl create mode 100644 deps/glm/gtx/perpendicular.hpp create mode 100644 deps/glm/gtx/perpendicular.inl create mode 100644 deps/glm/gtx/polar_coordinates.hpp create mode 100644 deps/glm/gtx/polar_coordinates.inl create mode 100644 deps/glm/gtx/projection.hpp create mode 100644 deps/glm/gtx/projection.inl create mode 100644 deps/glm/gtx/quaternion.hpp create mode 100644 deps/glm/gtx/quaternion.inl create mode 100644 deps/glm/gtx/random.hpp create mode 100644 deps/glm/gtx/raw_data.hpp create mode 100644 deps/glm/gtx/raw_data.inl create mode 100644 deps/glm/gtx/reciprocal.hpp create mode 100644 deps/glm/gtx/rotate_normalized_axis.hpp create mode 100644 deps/glm/gtx/rotate_normalized_axis.inl create mode 100644 deps/glm/gtx/rotate_vector.hpp create mode 100644 deps/glm/gtx/rotate_vector.inl create mode 100644 deps/glm/gtx/scalar_relational.hpp create mode 100644 deps/glm/gtx/scalar_relational.inl create mode 100644 deps/glm/gtx/simd_mat4.hpp create mode 100644 deps/glm/gtx/simd_mat4.inl create mode 100644 deps/glm/gtx/simd_quat.hpp create mode 100644 deps/glm/gtx/simd_quat.inl create mode 100644 deps/glm/gtx/simd_vec4.hpp create mode 100644 deps/glm/gtx/simd_vec4.inl create mode 100644 deps/glm/gtx/spline.hpp create mode 100644 deps/glm/gtx/spline.inl create mode 100644 deps/glm/gtx/std_based_type.hpp create mode 100644 deps/glm/gtx/std_based_type.inl create mode 100644 deps/glm/gtx/string_cast.hpp create mode 100644 deps/glm/gtx/string_cast.inl create mode 100644 deps/glm/gtx/transform.hpp create mode 100644 deps/glm/gtx/transform.inl create mode 100644 deps/glm/gtx/transform2.hpp create mode 100644 deps/glm/gtx/transform2.inl create mode 100644 deps/glm/gtx/ulp.hpp create mode 100644 deps/glm/gtx/unsigned_int.hpp create mode 100644 deps/glm/gtx/unsigned_int.inl create mode 100644 deps/glm/gtx/vec1.hpp create mode 100644 deps/glm/gtx/vec1.inl create mode 100644 deps/glm/gtx/vector_angle.hpp create mode 100644 deps/glm/gtx/vector_angle.inl create mode 100644 deps/glm/gtx/vector_query.hpp create mode 100644 deps/glm/gtx/vector_query.inl create mode 100644 deps/glm/gtx/wrap.hpp create mode 100644 deps/glm/gtx/wrap.inl create mode 100644 deps/glm/integer.hpp create mode 100644 deps/glm/mat2x2.hpp create mode 100644 deps/glm/mat2x3.hpp create mode 100644 deps/glm/mat2x4.hpp create mode 100644 deps/glm/mat3x2.hpp create mode 100644 deps/glm/mat3x3.hpp create mode 100644 deps/glm/mat3x4.hpp create mode 100644 deps/glm/mat4x2.hpp create mode 100644 deps/glm/mat4x3.hpp create mode 100644 deps/glm/mat4x4.hpp create mode 100644 deps/glm/matrix.hpp create mode 100644 deps/glm/packing.hpp create mode 100644 deps/glm/trigonometric.hpp create mode 100644 deps/glm/vec2.hpp create mode 100644 deps/glm/vec3.hpp create mode 100644 deps/glm/vec4.hpp create mode 100644 deps/glm/vector_relational.hpp create mode 100644 deps/glm/virtrev/xstream.hpp diff --git a/cores/libretro-ffmpeg/fft/fft.cpp b/cores/libretro-ffmpeg/fft/fft.cpp new file mode 100644 index 0000000000..db4995a14c --- /dev/null +++ b/cores/libretro-ffmpeg/fft/fft.cpp @@ -0,0 +1,915 @@ +#include +#include +#include +#include + +#include +#include "../libretro.h" + +#define GLM_SWIZZLE +#define GLM_FORCE_RADIANS +#include "glm/glm.hpp" +#include "glm/gtc/matrix_transform.hpp" +#include "glm/gtc/type_ptr.hpp" +using namespace glm; + +#define GL_DEBUG 0 +#if GL_DEBUG +#define GL_CHECK_ERROR() do { \ + if (glGetError() != GL_NO_ERROR) \ + { \ + log_cb(RETRO_LOG_ERROR, "GL error at line: %d\n", __LINE__); \ + abort(); \ + } \ +} while(0) +#else +#define GL_CHECK_ERROR() +#endif + +#ifndef MAX +#define MAX(a, b) ((b > a) ? (b) : (a)) +#endif + +#ifndef M_HALF_PI +#define M_HALF_PI 1.57079632679489661923132169163975144 +#endif + +#ifndef M_PI +#define M_PI 3.14159265359 +#endif + +extern retro_log_printf_t log_cb; + +typedef struct target +{ + GLuint tex; + GLuint fbo; +} target_t; + +struct Pass +{ + target_t target; + GLuint parameter_tex; +}; + +typedef struct GLFFT +{ + GLuint ms_rb_color; + GLuint ms_rb_ds; + GLuint ms_fbo; + + Pass *passes; + unsigned passes_size; + + GLuint input_tex; + GLuint window_tex; + GLuint prog_real; + GLuint prog_complex; + GLuint prog_resolve; + GLuint prog_blur; + + GLuint quad; + GLuint vao; + + unsigned output_ptr; + + target_t output, resolve, blur; + + struct Block + { + GLuint prog; + GLuint vao; + GLuint vbo; + GLuint ibo; + unsigned elems; + } block; + + GLuint pbo; + GLshort *sliding; + unsigned sliding_size; + + unsigned steps; + unsigned size; + unsigned block_size; + unsigned depth; +} glfft_t; + +static const char vertex_program_heightmap[] = + "#version 300 es\n" + "layout(location = 0) in vec2 aVertex;\n" + "uniform sampler2D sHeight;\n" + "uniform mat4 uMVP;\n" + "uniform ivec2 uOffset;\n" + "uniform vec4 uHeightmapParams;\n" + "uniform float uAngleScale;\n" + "out vec3 vWorldPos;\n" + "out vec3 vHeight;\n" + + "#define PI 3.141592653\n" + + "void main() {\n" + " vec2 tex_coord = vec2(aVertex.x + float(uOffset.x) + 0.5, -aVertex.y + float(uOffset.y) + 0.5) / vec2(textureSize(sHeight, 0));\n" + + " vec3 world_pos = vec3(aVertex.x, 0.0, aVertex.y);\n" + " world_pos.xz += uHeightmapParams.xy;\n" + + " float angle = world_pos.x * uAngleScale;\n" + " world_pos.xz *= uHeightmapParams.zw;\n" + + " float lod = log2(world_pos.z + 1.0) - 6.0;\n" + " vec4 heights = textureLod(sHeight, tex_coord, lod);\n" + + " float cangle = cos(angle);\n" + " float sangle = sin(angle);\n" + + " int c = int(-sign(world_pos.x) + 1.0);\n" + " float height = mix(heights[c], heights[1], abs(angle) / PI);\n" + " height = height * 80.0 - 40.0;\n" + + " vec3 up = vec3(-sangle, cangle, 0.0);\n" + + " float base_y = 80.0 - 80.0 * cangle;\n" + " float base_x = 80.0 * sangle;\n" + " world_pos.xy = vec2(base_x, base_y);\n" + " world_pos += up * height;\n" + + " vWorldPos = world_pos;\n" + " vHeight = vec3(height, heights.yw * 80.0 - 40.0);\n" + " gl_Position = uMVP * vec4(world_pos, 1.0);\n" + "}"; + +static const char fragment_program_heightmap[] = + "#version 300 es\n" + "precision mediump float;\n" + "out vec4 FragColor;\n" + "in vec3 vWorldPos;\n" + "in vec3 vHeight;\n" + + "vec3 colormap(vec3 height) {\n" + " return 1.0 / (1.0 + exp(-0.08 * height));\n" + "}" + + "void main() {\n" + " vec3 color = mix(vec3(1.0, 0.7, 0.7) * colormap(vHeight), vec3(0.1, 0.15, 0.1), clamp(vWorldPos.z / 400.0, 0.0, 1.0));\n" + " color = mix(color, vec3(0.1, 0.15, 0.1), clamp(1.0 - vWorldPos.z / 2.0, 0.0, 1.0));\n" + " FragColor = vec4(color, 1.0);\n" + "}"; + +static const char vertex_program[] = + "#version 300 es\n" + "layout(location = 0) in vec2 aVertex;\n" + "layout(location = 1) in vec2 aTexCoord;\n" + "uniform vec4 uOffsetScale;\n" + "out vec2 vTex;\n" + "void main() {\n" + " vTex = uOffsetScale.xy + aTexCoord * uOffsetScale.zw;\n" + " gl_Position = vec4(aVertex, 0.0, 1.0);\n" + "}"; + +static const char fragment_program_resolve[] = + "#version 300 es\n" + "precision mediump float;\n" + "precision highp int;\n" + "precision highp usampler2D;\n" + "precision highp isampler2D;\n" + "in vec2 vTex;\n" + "out vec4 FragColor;\n" + "uniform usampler2D sFFT;\n" + + "vec4 get_heights(highp uvec2 h) {\n" + " vec2 l = unpackHalf2x16(h.x);\n" + " vec2 r = unpackHalf2x16(h.y);\n" + " vec2 channels[4] = vec2[4](\n" + " l, 0.5 * (l + r), r, 0.5 * (l - r));\n" + " vec4 amps;\n" + " for (int i = 0; i < 4; i++)\n" + " amps[i] = dot(channels[i], channels[i]);\n" + + " return 9.0 * log(amps + 0.0001) - 22.0;\n" + "}\n" + + "void main() {\n" + " uvec2 h = textureLod(sFFT, vTex, 0.0).rg;\n" + " vec4 height = get_heights(h);\n" + " height = (height + 40.0) / 80.0;\n" + " FragColor = height;\n" + "}"; + +static const char fragment_program_blur[] = + "#version 300 es\n" + "precision mediump float;\n" + "precision highp int;\n" + "precision highp usampler2D;\n" + "precision highp isampler2D;\n" + "in vec2 vTex;\n" + "out vec4 FragColor;\n" + "uniform sampler2D sHeight;\n" + "void main() {\n" + " float k = 0.0;\n" + " float t;\n" + " vec4 res = vec4(0.0);\n" + " #define kernel(x, y) t = exp(-0.35 * float((x) * (x) + (y) * (y))); k += t; res += t * textureLodOffset(sHeight, vTex, 0.0, ivec2(x, y))\n" + " kernel(-1, -2);\n" + " kernel(-1, -1);\n" + " kernel(-1, 0);\n" + " kernel( 0, -2);\n" + " kernel( 0, -1);\n" + " kernel( 0, 0);\n" + " kernel( 1, -2);\n" + " kernel( 1, -1);\n" + " kernel( 1, 0);\n" + " FragColor = res / k;\n" + "}"; + +static const char fragment_program_real[] = + "#version 300 es\n" + "precision mediump float;\n" + "precision highp int;\n" + "precision highp usampler2D;\n" + "precision highp isampler2D;\n" + + "in vec2 vTex;\n" + "uniform isampler2D sTexture;\n" + "uniform usampler2D sParameterTexture;\n" + "uniform usampler2D sWindow;\n" + "uniform int uViewportOffset;\n" + "out uvec2 FragColor;\n" + + "vec2 compMul(vec2 a, vec2 b) { return vec2(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x); }\n" + + "void main() {\n" + " uvec2 params = texture(sParameterTexture, vec2(vTex.x, 0.5)).rg;\n" + " uvec2 coord = uvec2((params.x >> 16u) & 0xffffu, params.x & 0xffffu);\n" + " int ycoord = int(gl_FragCoord.y) - uViewportOffset;\n" + " vec2 twiddle = unpackHalf2x16(params.y);\n" + + " float window_a = float(texelFetch(sWindow, ivec2(coord.x, 0), 0).r) / float(0x10000);\n" + " float window_b = float(texelFetch(sWindow, ivec2(coord.y, 0), 0).r) / float(0x10000);\n" + + " vec2 a = window_a * vec2(texelFetch(sTexture, ivec2(int(coord.x), ycoord), 0).rg) / vec2(0x8000);\n" + " vec2 a_l = vec2(a.x, 0.0);\n" + " vec2 a_r = vec2(a.y, 0.0);\n" + " vec2 b = window_b * vec2(texelFetch(sTexture, ivec2(int(coord.y), ycoord), 0).rg) / vec2(0x8000);\n" + " vec2 b_l = vec2(b.x, 0.0);\n" + " vec2 b_r = vec2(b.y, 0.0);\n" + " b_l = compMul(b_l, twiddle);\n" + " b_r = compMul(b_r, twiddle);\n" + + " vec2 res_l = a_l + b_l;\n" + " vec2 res_r = a_r + b_r;\n" + " FragColor = uvec2(packHalf2x16(res_l), packHalf2x16(res_r));\n" + "}"; + +static const char fragment_program_complex[] = + "#version 300 es\n" + "precision mediump float;\n" + "precision highp int;\n" + "precision highp usampler2D;\n" + "precision highp isampler2D;\n" + + "in vec2 vTex;\n" + "uniform usampler2D sTexture;\n" + "uniform usampler2D sParameterTexture;\n" + "uniform int uViewportOffset;\n" + "out uvec2 FragColor;\n" + + "vec2 compMul(vec2 a, vec2 b) { return vec2(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x); }\n" + + "void main() {\n" + " uvec2 params = texture(sParameterTexture, vec2(vTex.x, 0.5)).rg;\n" + " uvec2 coord = uvec2((params.x >> 16u) & 0xffffu, params.x & 0xffffu);\n" + " int ycoord = int(gl_FragCoord.y) - uViewportOffset;\n" + " vec2 twiddle = unpackHalf2x16(params.y);\n" + + " uvec2 x = texelFetch(sTexture, ivec2(int(coord.x), ycoord), 0).rg;\n" + " uvec2 y = texelFetch(sTexture, ivec2(int(coord.y), ycoord), 0).rg;\n" + " vec4 a = vec4(unpackHalf2x16(x.x), unpackHalf2x16(x.y));\n" + " vec4 b = vec4(unpackHalf2x16(y.x), unpackHalf2x16(y.y));\n" + " b.xy = compMul(b.xy, twiddle);\n" + " b.zw = compMul(b.zw, twiddle);\n" + + " vec4 res = a + b;\n" + " FragColor = uvec2(packHalf2x16(res.xy), packHalf2x16(res.zw));\n" + "}"; + +static GLuint fft_compile_shader(glfft_t *fft, GLenum type, const char *source) +{ + GLint status = 0; + GLuint shader = glCreateShader(type); + + glShaderSource(shader, 1, (const GLchar**)&source, NULL); + glCompileShader(shader); + + glGetShaderiv(shader, GL_COMPILE_STATUS, &status); + + if (!status) + { + char log_info[8 * 1024]; + GLsizei log_len; + + log_cb(RETRO_LOG_ERROR, "Failed to compile.\n"); + glGetShaderInfoLog(shader, sizeof(log_info), &log_len, log_info); + log_cb(RETRO_LOG_ERROR, "ERROR: %s\n", log_info); + return 0; + } + + return shader; +} + +static GLuint fft_compile_program(glfft_t *fft, + const char *vertex_source, const char *fragment_source) +{ + GLint status = 0; + GLuint prog = glCreateProgram(); + GLuint vert = fft_compile_shader(fft, GL_VERTEX_SHADER, vertex_source); + GLuint frag = fft_compile_shader(fft, GL_FRAGMENT_SHADER, fragment_source); + + glAttachShader(prog, vert); + glAttachShader(prog, frag); + glLinkProgram(prog); + + glGetProgramiv(prog, GL_LINK_STATUS, &status); + + if (!status) + { + char log_info[8 * 1024]; + GLsizei log_len; + + log_cb(RETRO_LOG_ERROR, "Failed to link.\n"); + glGetProgramInfoLog(prog, sizeof(log_info), &log_len, log_info); + log_cb(RETRO_LOG_ERROR, "ERROR: %s\n", log_info); + } + + glDeleteShader(vert); + glDeleteShader(frag); + return prog; +} + +static void fft_render(glfft_t *fft, GLuint backbuffer, unsigned width, unsigned height) +{ + mat4 mvp; + + /* Render scene. */ + glBindFramebuffer(GL_FRAMEBUFFER, fft->ms_fbo ? fft->ms_fbo : backbuffer); + glViewport(0, 0, width, height); + glClearColor(0.1f, 0.15f, 0.1f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); + + vec3 eye(0, 80, -60); + mvp = perspective((float)M_HALF_PI, (float)width / height, 1.0f, 500.0f) * + lookAt(eye, eye + vec3(0.0f, 0.0f, 1.0f), vec3(0.0f, 1.0f, 0.0f)); + + glUseProgram(fft->block.prog); + glUniformMatrix4fv(glGetUniformLocation(fft->block.prog, "uMVP"), 1, GL_FALSE, value_ptr(mvp)); + glUniform2i(glGetUniformLocation(fft->block.prog, "uOffset"), (-int(fft->block_size) + 1) / 2, fft->output_ptr); + glUniform4f(glGetUniformLocation(fft->block.prog, "uHeightmapParams"), -(fft->block_size - 1.0f) / 2.0f, 0.0f, 3.0f, 2.0f); + glUniform1f(glGetUniformLocation(fft->block.prog, "uAngleScale"), M_PI / ((fft->block_size - 1) / 2)); + + glBindVertexArray(fft->block.vao); + glBindTexture(GL_TEXTURE_2D, fft->blur.tex); + glDrawElements(GL_TRIANGLE_STRIP, fft->block.elems, GL_UNSIGNED_INT, NULL); + glBindVertexArray(0); + glUseProgram(0); + + if (fft->ms_fbo) + { + glBindFramebuffer(GL_READ_FRAMEBUFFER, fft->ms_fbo); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, backbuffer); + glBlitFramebuffer(0, 0, width, height, 0, 0, width, height, GL_COLOR_BUFFER_BIT, GL_NEAREST); + + static const GLenum attachments[] = { GL_COLOR_ATTACHMENT0, GL_DEPTH_STENCIL_ATTACHMENT }; + glBindFramebuffer(GL_FRAMEBUFFER, fft->ms_fbo); + glInvalidateFramebuffer(GL_FRAMEBUFFER, 2, attachments); + GL_CHECK_ERROR(); + } + + glBindFramebuffer(GL_FRAMEBUFFER, 0); + GL_CHECK_ERROR(); +} + +static void fft_step(glfft_t *fft, const GLshort *audio_buffer, unsigned frames) +{ + unsigned i; + GLshort *buffer; + GLshort *slide = (GLshort*)&fft->sliding[0]; + + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glBindVertexArray(fft->vao); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, fft->window_tex); + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, fft->input_tex); + glUseProgram(fft->prog_real); + + memmove(slide, slide + frames * 2, (fft->sliding_size - 2 * frames) * sizeof(GLshort)); + memcpy(slide + fft->sliding_size - frames * 2, audio_buffer, 2 * frames * sizeof(GLshort)); + + /* Upload audio data to GPU. */ + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, fft->pbo); + + buffer = (GLshort*)(glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, + 2 * fft->size * sizeof(GLshort), GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT)); + + if (buffer) + { + memcpy(buffer, slide, fft->sliding_size * sizeof(GLshort)); + glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER); + } + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, fft->size, 1, GL_RG_INTEGER, GL_SHORT, NULL); + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + + /* Perform FFT of new block. */ + glViewport(0, 0, fft->size, 1); + + for (i = 0; i < fft->steps; i++) + { + if (i == fft->steps - 1) + { + glBindFramebuffer(GL_FRAMEBUFFER, fft->output.fbo); + glUniform1i(glGetUniformLocation(i == 0 ? fft->prog_real : fft->prog_complex, "uViewportOffset"), fft->output_ptr); + glViewport(0, fft->output_ptr, fft->size, 1); + } + else + { + glUniform1i(glGetUniformLocation(i == 0 ? fft->prog_real : fft->prog_complex, "uViewportOffset"), 0); + glBindFramebuffer(GL_FRAMEBUFFER, fft->passes[i].target.fbo); + glClear(GL_COLOR_BUFFER_BIT); + } + + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, fft->passes[i].parameter_tex); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, fft->passes[i].target.tex); + + if (i == 0) + glUseProgram(fft->prog_complex); + } + glActiveTexture(GL_TEXTURE0); + + /* Resolve new chunk to heightmap. */ + glViewport(0, fft->output_ptr, fft->size, 1); + glUseProgram(fft->prog_resolve); + glBindFramebuffer(GL_FRAMEBUFFER, fft->resolve.fbo); + const GLfloat resolve_offset[] = { 0.0f, float(fft->output_ptr) / fft->depth, 1.0f, 1.0f / fft->depth }; + glUniform4fv(glGetUniformLocation(fft->prog_resolve, "uOffsetScale"), 1, resolve_offset); + glBindTexture(GL_TEXTURE_2D, fft->output.tex); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + /* Re-blur damaged regions of heightmap. */ + glUseProgram(fft->prog_blur); + glBindTexture(GL_TEXTURE_2D, fft->resolve.tex); + glBindFramebuffer(GL_FRAMEBUFFER, fft->blur.fbo); + glUniform4fv(glGetUniformLocation(fft->prog_blur, "uOffsetScale"), 1, resolve_offset); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + /* Mipmap the heightmap. */ + glBindTexture(GL_TEXTURE_2D, fft->blur.tex); + glGenerateMipmap(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, 0); + + fft->output_ptr++; + fft->output_ptr &= fft->depth - 1; + + glBindVertexArray(0); + glUseProgram(0); + GL_CHECK_ERROR(); +} + +static inline unsigned log2i(unsigned x) +{ + unsigned res; + for (res = 0; x; x >>= 1) + res++; + return res - 1; +} + +static inline unsigned bitinverse(unsigned x, unsigned size) +{ + unsigned i; + unsigned size_log2 = log2i(size); + unsigned ret = 0; + + for (i = 0; i < size_log2; i++) + ret |= ((x >> i) & 0x1) << (size_log2 - 1 - i); + return ret; +} + +void fft_build_params(glfft_t *fft, GLuint *buffer, unsigned step, unsigned size) +{ + unsigned i, j; + unsigned step_size = 1 << step; + + for (i = 0; i < size; i += step_size << 1) + { + for (j = i; j < i + step_size; j++) + { + int s = j - i; + float phase = -1.0f * (float)s / step_size; + + float twiddle_real = cos(M_PI * phase); + float twiddle_imag = sin(M_PI * phase); + + unsigned a = j; + unsigned b = j + step_size; + + unsigned read_a = (step == 0) ? bitinverse(a, size) : a; + unsigned read_b = (step == 0) ? bitinverse(b, size) : b; + vec2 tmp = vec2(twiddle_real, twiddle_imag); + + buffer[2 * a + 0] = (read_a << 16) | read_b; + buffer[2 * a + 1] = packHalf2x16(tmp); + buffer[2 * b + 0] = (read_a << 16) | read_b; + buffer[2 * b + 1] = packHalf2x16(-tmp); + } + } +} + +static void fft_init_quad_vao(glfft_t *fft) +{ + static const GLbyte quad_buffer[] = { + -1, -1, 1, -1, -1, 1, 1, 1, + 0, 0, 1, 0, 0, 1, 1, 1, + }; + glGenBuffers(1, &fft->quad); + glBindBuffer(GL_ARRAY_BUFFER, fft->quad); + glBufferData(GL_ARRAY_BUFFER, + sizeof(quad_buffer), quad_buffer, GL_STATIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, 0); + + glGenVertexArrays(1, &fft->vao); + glBindVertexArray(fft->vao); + glBindBuffer(GL_ARRAY_BUFFER, fft->quad); + glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); + glVertexAttribPointer(0, 2, GL_BYTE, GL_FALSE, 0, 0); + glVertexAttribPointer(1, 2, GL_BYTE, GL_FALSE, 0, reinterpret_cast(uintptr_t(8))); + glBindVertexArray(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); +} + +/* Modified Bessel function of first order. + * Check Wiki for mathematical definition ... */ +static inline double kaiser_besseli0(double x) +{ + unsigned i; + double sum = 0.0; + + double factorial = 1.0; + double factorial_mult = 0.0; + double x_pow = 1.0; + double two_div_pow = 1.0; + double x_sqr = x * x; + + /* Approximate. This is an infinite sum. + * Luckily, it converges rather fast. */ + for (i = 0; i < 18; i++) + { + sum += + x_pow * two_div_pow / (factorial * factorial); + + factorial_mult += 1.0; + x_pow *= x_sqr; + two_div_pow *= 0.25; + factorial *= factorial_mult; + } + + return sum; +} + +static inline double kaiser_window(double index, double beta) +{ + return kaiser_besseli0(beta * sqrtf(1 - index * index)); +} + +static void fft_init_texture(glfft_t *fft, GLuint *tex, GLenum format, + unsigned width, unsigned height, unsigned levels, GLenum mag, GLenum min) +{ + glGenTextures(1, tex); + glBindTexture(GL_TEXTURE_2D, *tex); + glTexStorage2D(GL_TEXTURE_2D, levels, format, width, height); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min); + glBindTexture(GL_TEXTURE_2D, 0); +} + +static void fft_init_target(glfft_t *fft, target_t *target, GLenum format, + unsigned width, unsigned height, unsigned levels, GLenum mag, GLenum min) +{ + fft_init_texture(fft, &target->tex, format, width, height, levels, mag, min); + glGenFramebuffers(1, &target->fbo); + glBindFramebuffer(GL_FRAMEBUFFER, target->fbo); + + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, + target->tex, 0); + + if (format == GL_RGBA8) + { + glClearColor(0, 0, 0, 0); + glClear(GL_COLOR_BUFFER_BIT); + } + else if (format == GL_RG16I) + { + static const GLint v[] = { 0, 0, 0, 0 }; + glClearBufferiv(GL_COLOR, 0, v); + } + else + { + static const GLuint v[] = { 0, 0, 0, 0 }; + glClearBufferuiv(GL_COLOR, 0, v); + } + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + +#define KAISER_BETA 12.0 + +static void fft_init(glfft_t *fft) +{ + unsigned i; + double window_mod; + GLushort *window; + static const GLfloat unity[] = { 0.0f, 0.0f, 1.0f, 1.0f }; + + fft->prog_real = fft_compile_program(fft, vertex_program, fragment_program_real); + fft->prog_complex = fft_compile_program(fft, vertex_program, fragment_program_complex); + fft->prog_resolve = fft_compile_program(fft, vertex_program, fragment_program_resolve); + fft->prog_blur = fft_compile_program(fft, vertex_program, fragment_program_blur); + GL_CHECK_ERROR(); + + glUseProgram(fft->prog_real); + glUniform1i(glGetUniformLocation(fft->prog_real, "sTexture"), 0); + glUniform1i(glGetUniformLocation(fft->prog_real, "sParameterTexture"), 1); + glUniform1i(glGetUniformLocation(fft->prog_real, "sWindow"), 2); + glUniform4fv(glGetUniformLocation(fft->prog_real, "uOffsetScale"), 1, unity); + + glUseProgram(fft->prog_complex); + glUniform1i(glGetUniformLocation(fft->prog_complex, "sTexture"), 0); + glUniform1i(glGetUniformLocation(fft->prog_complex, "sParameterTexture"), 1); + glUniform4fv(glGetUniformLocation(fft->prog_complex, "uOffsetScale"), 1, unity); + + glUseProgram(fft->prog_resolve); + glUniform1i(glGetUniformLocation(fft->prog_resolve, "sFFT"), 0); + glUniform4fv(glGetUniformLocation(fft->prog_resolve, "uOffsetScale"), 1, unity); + + glUseProgram(fft->prog_blur); + glUniform1i(glGetUniformLocation(fft->prog_blur, "sHeight"), 0); + glUniform4fv(glGetUniformLocation(fft->prog_blur, "uOffsetScale"), 1, unity); + + GL_CHECK_ERROR(); + + fft_init_texture(fft, &fft->window_tex, GL_R16UI, fft->size, 1, 1, GL_NEAREST, GL_NEAREST); + GL_CHECK_ERROR(); + + window = (GLushort*)calloc(fft->size, sizeof(GLushort)); + + window_mod = 1.0 / kaiser_window(0.0, KAISER_BETA); + + for (i = 0; i < fft->size; i++) + { + double phase = (double)(i - int(fft->size) / 2) / (int(fft->size) / 2); + double w = kaiser_window(phase, KAISER_BETA); + window[i] = round(0xffff * w * window_mod); + } + glBindTexture(GL_TEXTURE_2D, fft->window_tex); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, fft->size, 1, GL_RED_INTEGER, GL_UNSIGNED_SHORT, &window[0]); + glBindTexture(GL_TEXTURE_2D, 0); + + GL_CHECK_ERROR(); + fft_init_texture(fft, &fft->input_tex, GL_RG16I, fft->size, 1, 1, GL_NEAREST, GL_NEAREST); + fft_init_target(fft, &fft->output, GL_RG32UI, fft->size, fft->depth, 1, GL_NEAREST, GL_NEAREST); + fft_init_target(fft, &fft->resolve, GL_RGBA8, fft->size, fft->depth, 1, GL_NEAREST, GL_NEAREST); + fft_init_target(fft, &fft->blur, GL_RGBA8, fft->size, fft->depth, + log2i(MAX(fft->size, fft->depth)) + 1, GL_NEAREST, GL_LINEAR_MIPMAP_LINEAR); + + GL_CHECK_ERROR(); + + for (i = 0; i < fft->steps; i++) + { + GLuint *param_buffer = NULL; + fft_init_target(fft, &fft->passes[i].target, GL_RG32UI, fft->size, 1, 1, GL_NEAREST, GL_NEAREST); + fft_init_texture(fft, &fft->passes[i].parameter_tex, GL_RG32UI, fft->size, 1, 1, GL_NEAREST, GL_NEAREST); + + param_buffer = (GLuint*)calloc(2 * fft->size, sizeof(GLuint)); + + fft_build_params(fft, ¶m_buffer[0], i, fft->size); + + glBindTexture(GL_TEXTURE_2D, fft->passes[i].parameter_tex); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, + fft->size, 1, GL_RG_INTEGER, GL_UNSIGNED_INT, ¶m_buffer[0]); + glBindTexture(GL_TEXTURE_2D, 0); + + free(param_buffer); + } + + GL_CHECK_ERROR(); + glGenBuffers(1, &fft->pbo); + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, fft->pbo); + glBufferData(GL_PIXEL_UNPACK_BUFFER, fft->size * 2 * sizeof(GLshort), 0, GL_DYNAMIC_DRAW); + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + + free(window); +} + +static void fft_init_block(glfft_t *fft) +{ + unsigned x, y; + GLuint *bp; + GLushort *block_vertices; + GLuint *block_indices; + unsigned block_vertices_size; + unsigned block_indices_size; + int pos = 0; + + fft->block.prog = fft_compile_program(fft, vertex_program_heightmap, fragment_program_heightmap); + glUseProgram(fft->block.prog); + glUniform1i(glGetUniformLocation(fft->block.prog, "sHeight"), 0); + + block_vertices_size = 2 * fft->block_size * fft->depth; + block_vertices = (GLushort*)calloc(block_vertices_size, sizeof(GLushort)); + + for (y = 0; y < fft->depth; y++) + { + for (x = 0; x < fft->block_size; x++) + { + block_vertices[2 * (y * fft->block_size + x) + 0] = x; + block_vertices[2 * (y * fft->block_size + x) + 1] = y; + } + } + glGenBuffers(1, &fft->block.vbo); + glBindBuffer(GL_ARRAY_BUFFER, fft->block.vbo); + glBufferData(GL_ARRAY_BUFFER, block_vertices_size * sizeof(GLushort), &block_vertices[0], GL_STATIC_DRAW); + + fft->block.elems = (2 * fft->block_size - 1) * (fft->depth - 1) + 1; + + block_indices_size = fft->block.elems; + block_indices = (GLuint*)calloc(block_indices_size, sizeof(GLuint)); + + bp = &block_indices[0]; + + for (y = 0; y < fft->depth - 1; y++) + { + int x; + int step_odd = -int(fft->block_size) + ((y & 1) ? -1 : 1); + int step_even = fft->block_size; + + for (x = 0; x < 2 * int(fft->block_size) - 1; x++) + { + *bp++ = pos; + pos += (x & 1) ? step_odd : step_even; + } + } + *bp++ = pos; + + glGenVertexArrays(1, &fft->block.vao); + glBindVertexArray(fft->block.vao); + + glGenBuffers(1, &fft->block.ibo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, fft->block.ibo); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, block_indices_size * sizeof(GLuint), &block_indices[0], GL_STATIC_DRAW); + + glEnableVertexAttribArray(0); + glVertexAttribPointer(0, 2, GL_UNSIGNED_SHORT, GL_FALSE, 0, 0); + glBindVertexArray(0); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + + free(block_vertices); + free(block_indices); +} + +static bool fft_context_reset(glfft_t *fft, unsigned fft_steps, + rglgen_proc_address_t proc, unsigned fft_depth) +{ + rglgen_resolve_symbols(proc); + + fft->steps = fft_steps; + fft->depth = fft_depth; + fft->size = 1 << fft_steps; + fft->block_size = fft->size / 4 + 1; + + fft->passes_size = fft_steps; + fft->passes = (Pass*)calloc(fft->passes_size, sizeof(Pass)); + + if (!fft->passes) + return false; + + fft->sliding_size = 2 * fft->size; + fft->sliding = (GLshort*)calloc(fft->sliding_size, sizeof(GLshort)); + + if (!fft->sliding) + return false; + + GL_CHECK_ERROR(); + fft_init_quad_vao(fft); + GL_CHECK_ERROR(); + fft_init(fft); + GL_CHECK_ERROR(); + fft_init_block(fft); + GL_CHECK_ERROR(); + + return true; +} + +/* GLFFT requires either GLES3 or + * desktop GL with ES3_compat (supported by MESA on Linux) extension. */ +extern "C" glfft_t *glfft_new(unsigned fft_steps, rglgen_proc_address_t proc) +{ +#ifdef HAVE_OPENGLES3 + const char *ver = (const char*)(glGetString(GL_VERSION)); + if (ver) + { + unsigned major, minor; + if (sscanf(ver, "OpenGL ES %u.%u", &major, &minor) != 2 || major < 3) + return NULL; + } + else + return NULL; +#else + const char *exts = (const char*)(glGetString(GL_EXTENSIONS)); + if (!exts || !strstr(exts, "ARB_ES3_compatibility")) + return NULL; +#endif + + glfft_t *fft = (glfft_t*)calloc(1, sizeof(*fft)); + if (!fft) + return NULL; + + if (!fft_context_reset(fft, fft_steps, proc, 256)) + goto error; + + return fft; + +error: + if (fft) + free(fft); + return NULL; +} + +extern "C" void glfft_init_multisample(glfft_t *fft, unsigned width, unsigned height, unsigned samples) +{ + if (fft->ms_rb_color) + glDeleteRenderbuffers(1, &fft->ms_rb_color); + fft->ms_rb_color = 0; + if (fft->ms_rb_ds) + glDeleteRenderbuffers(1, &fft->ms_rb_ds); + fft->ms_rb_ds = 0; + if (fft->ms_fbo) + glDeleteFramebuffers(1, &fft->ms_fbo); + fft->ms_fbo = 0; + + if (samples > 1) + { + glGenRenderbuffers(1, &fft->ms_rb_color); + glGenRenderbuffers(1, &fft->ms_rb_ds); + glGenFramebuffers (1, &fft->ms_fbo); + + glBindRenderbuffer(GL_RENDERBUFFER, fft->ms_rb_color); + glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_RGBA8, width, height); + glBindRenderbuffer(GL_RENDERBUFFER, fft->ms_rb_ds); + glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_DEPTH24_STENCIL8, width, height); + glBindRenderbuffer(GL_RENDERBUFFER, 0); + + glBindFramebuffer(GL_FRAMEBUFFER, fft->ms_fbo); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, fft->ms_rb_color); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, fft->ms_rb_ds); + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) + glfft_init_multisample(fft, 0, 0, 0); + } + + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + +static void fft_context_destroy(glfft_t *fft) +{ + glfft_init_multisample(fft, 0, 0, 0); + if (fft->passes) + free(fft->passes); + fft->passes = NULL; + if (fft->sliding) + free(fft->sliding); + fft->sliding = NULL; +} + +extern "C" void glfft_free(glfft_t *fft) +{ + fft_context_destroy(fft); + if (fft) + free(fft); + fft = NULL; +} + +extern "C" void glfft_step_fft(glfft_t *fft, const GLshort *buffer, unsigned frames) +{ + fft_step(fft, buffer, frames); +} + +extern "C" void glfft_render(glfft_t *fft, GLuint backbuffer, unsigned width, unsigned height) +{ + fft_render(fft, backbuffer, width, height); +} diff --git a/cores/libretro-ffmpeg/fft/fft.h b/cores/libretro-ffmpeg/fft/fft.h new file mode 100644 index 0000000000..5af215d8b8 --- /dev/null +++ b/cores/libretro-ffmpeg/fft/fft.h @@ -0,0 +1,26 @@ +#ifndef FFT_H__ +#define FFT_H__ + +#include "../glsym/glsym.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct glfft glfft_t; + +glfft_t *glfft_new(unsigned fft_steps, rglgen_proc_address_t proc); + +void glfft_free(glfft_t *fft); + +void glfft_init_multisample(glfft_t *fft, unsigned width, unsigned height, unsigned samples); + +void glfft_step_fft(glfft_t *fft, const GLshort *buffer, unsigned frames); +void glfft_render(glfft_t *fft, GLuint backbuffer, unsigned width, unsigned height); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/deps/glm/common.hpp b/deps/glm/common.hpp new file mode 100644 index 0000000000..b8bb14e72d --- /dev/null +++ b/deps/glm/common.hpp @@ -0,0 +1,34 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/common.hpp +/// @date 2013-12-24 / 2013-12-24 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef GLM_COMMON_INCLUDED +#define GLM_COMMON_INCLUDED + +#include "detail/func_common.hpp" + +#endif//GLM_COMMON_INCLUDED diff --git a/deps/glm/detail/_features.hpp b/deps/glm/detail/_features.hpp new file mode 100644 index 0000000000..f11876acd5 --- /dev/null +++ b/deps/glm/detail/_features.hpp @@ -0,0 +1,427 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/core/_features.hpp +/// @date 2013-02-20 / 2013-02-20 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef glm_core_features +#define glm_core_features + +// #define GLM_CXX98_EXCEPTIONS +// #define GLM_CXX98_RTTI + +// #define GLM_CXX11_RVALUE_REFERENCES +// Rvalue references - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html + +// GLM_CXX11_TRAILING_RETURN +// Rvalue references for *this - GCC not supported +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm + +// GLM_CXX11_NONSTATIC_MEMBER_INIT +// Initialization of class objects by rvalues - GCC any +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html + +// GLM_CXX11_NONSTATIC_MEMBER_INIT +// Non-static data member initializers - GCC 4.7 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm + +// #define GLM_CXX11_VARIADIC_TEMPLATE +// Variadic templates - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf + +// +// Extending variadic template template parameters - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf + +// #define GLM_CXX11_GENERALIZED_INITIALIZERS +// Initializer lists - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm + +// #define GLM_CXX11_STATIC_ASSERT +// Static assertions - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html + +// #define GLM_CXX11_AUTO_TYPE +// auto-typed variables - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf + +// #define GLM_CXX11_AUTO_TYPE +// Multi-declarator auto - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf + +// #define GLM_CXX11_AUTO_TYPE +// Removal of auto as a storage-class specifier - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm + +// #define GLM_CXX11_AUTO_TYPE +// New function declarator syntax - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm + +// #define GLM_CXX11_LAMBDAS +// New wording for C++0x lambdas - GCC 4.5 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf + +// #define GLM_CXX11_DECLTYPE +// Declared type of an expression - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf + +// +// Right angle brackets - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html + +// +// Default template arguments for function templates DR226 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226 + +// +// Solving the SFINAE problem for expressions DR339 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html + +// #define GLM_CXX11_ALIAS_TEMPLATE +// Template aliases N2258 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf + +// +// Extern templates N1987 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm + +// #define GLM_CXX11_NULLPTR +// Null pointer constant N2431 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf + +// #define GLM_CXX11_STRONG_ENUMS +// Strongly-typed enums N2347 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf + +// +// Forward declarations for enums N2764 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf + +// +// Generalized attributes N2761 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf + +// +// Generalized constant expressions N2235 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf + +// +// Alignment support N2341 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf + +// #define GLM_CXX11_DELEGATING_CONSTRUCTORS +// Delegating constructors N1986 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf + +// +// Inheriting constructors N2540 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm + +// #define GLM_CXX11_EXPLICIT_CONVERSIONS +// Explicit conversion operators N2437 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf + +// +// New character types N2249 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html + +// +// Unicode string literals N2442 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm + +// +// Raw string literals N2442 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm + +// +// Universal character name literals N2170 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html + +// #define GLM_CXX11_USER_LITERALS +// User-defined literals N2765 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf + +// +// Standard Layout Types N2342 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm + +// #define GLM_CXX11_DEFAULTED_FUNCTIONS +// #define GLM_CXX11_DELETED_FUNCTIONS +// Defaulted and deleted functions N2346 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm + +// +// Extended friend declarations N1791 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf + +// +// Extending sizeof N2253 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html + +// #define GLM_CXX11_INLINE_NAMESPACES +// Inline namespaces N2535 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm + +// #define GLM_CXX11_UNRESTRICTED_UNIONS +// Unrestricted unions N2544 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf + +// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS +// Local and unnamed types as template arguments N2657 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm + +// #define GLM_CXX11_RANGE_FOR +// Range-based for N2930 GCC 4.6 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html + +// #define GLM_CXX11_OVERRIDE_CONTROL +// Explicit virtual overrides N2928 N3206 N3272 GCC 4.7 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm + +// +// Minimal support for garbage collection and reachability-based leak detection N2670 No +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm + +// #define GLM_CXX11_NOEXCEPT +// Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only) +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html + +// +// Defining move special member functions N3053 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html + +// +// Sequence points N2239 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html + +// +// Atomic operations N2427 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html + +// +// Strong Compare and Exchange N2748 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html + +// +// Bidirectional Fences N2752 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm + +// +// Memory model N2429 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm + +// +// Data-dependency ordering: atomics and memory model N2664 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm + +// +// Propagating exceptions N2179 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html + +// +// Abandoning a process and at_quick_exit N2440 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm + +// +// Allow atomics use in signal handlers N2547 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm + +// +// Thread-local storage N2659 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm + +// +// Dynamic initialization and destruction with concurrency N2660 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm + +// +// __func__ predefined identifier N2340 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm + +// +// C99 preprocessor N1653 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm + +// +// long long N1811 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf + +// +// Extended integral types N1988 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf + +#if(GLM_COMPILER & GLM_COMPILER_GCC) + +# if(GLM_COMPILER >= GLM_COMPILER_GCC43) +# define GLM_CXX11_STATIC_ASSERT +# endif + +#elif(GLM_COMPILER & GLM_COMPILER_CLANG) +# if(__has_feature(cxx_exceptions)) +# define GLM_CXX98_EXCEPTIONS +# endif + +# if(__has_feature(cxx_rtti)) +# define GLM_CXX98_RTTI +# endif + +# if(__has_feature(cxx_access_control_sfinae)) +# define GLM_CXX11_ACCESS_CONTROL_SFINAE +# endif + +# if(__has_feature(cxx_alias_templates)) +# define GLM_CXX11_ALIAS_TEMPLATE +# endif + +# if(__has_feature(cxx_alignas)) +# define GLM_CXX11_ALIGNAS +# endif + +# if(__has_feature(cxx_attributes)) +# define GLM_CXX11_ATTRIBUTES +# endif + +# if(__has_feature(cxx_constexpr)) +# define GLM_CXX11_CONSTEXPR +# endif + +# if(__has_feature(cxx_decltype)) +# define GLM_CXX11_DECLTYPE +# endif + +# if(__has_feature(cxx_default_function_template_args)) +# define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS +# endif + +# if(__has_feature(cxx_defaulted_functions)) +# define GLM_CXX11_DEFAULTED_FUNCTIONS +# endif + +# if(__has_feature(cxx_delegating_constructors)) +# define GLM_CXX11_DELEGATING_CONSTRUCTORS +# endif + +# if(__has_feature(cxx_deleted_functions)) +# define GLM_CXX11_DELETED_FUNCTIONS +# endif + +# if(__has_feature(cxx_explicit_conversions)) +# define GLM_CXX11_EXPLICIT_CONVERSIONS +# endif + +# if(__has_feature(cxx_generalized_initializers)) +# define GLM_CXX11_GENERALIZED_INITIALIZERS +# endif + +# if(__has_feature(cxx_implicit_moves)) +# define GLM_CXX11_IMPLICIT_MOVES +# endif + +# if(__has_feature(cxx_inheriting_constructors)) +# define GLM_CXX11_INHERITING_CONSTRUCTORS +# endif + +# if(__has_feature(cxx_inline_namespaces)) +# define GLM_CXX11_INLINE_NAMESPACES +# endif + +# if(__has_feature(cxx_lambdas)) +# define GLM_CXX11_LAMBDAS +# endif + +# if(__has_feature(cxx_local_type_template_args)) +# define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS +# endif + +# if(__has_feature(cxx_noexcept)) +# define GLM_CXX11_NOEXCEPT +# endif + +# if(__has_feature(cxx_nonstatic_member_init)) +# define GLM_CXX11_NONSTATIC_MEMBER_INIT +# endif + +# if(__has_feature(cxx_nullptr)) +# define GLM_CXX11_NULLPTR +# endif + +# if(__has_feature(cxx_override_control)) +# define GLM_CXX11_OVERRIDE_CONTROL +# endif + +# if(__has_feature(cxx_reference_qualified_functions)) +# define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS +# endif + +# if(__has_feature(cxx_range_for)) +# define GLM_CXX11_RANGE_FOR +# endif + +# if(__has_feature(cxx_raw_string_literals)) +# define GLM_CXX11_RAW_STRING_LITERALS +# endif + +# if(__has_feature(cxx_rvalue_references)) +# define GLM_CXX11_RVALUE_REFERENCES +# endif + +# if(__has_feature(cxx_static_assert)) +# define GLM_CXX11_STATIC_ASSERT +# endif + +# if(__has_feature(cxx_auto_type)) +# define GLM_CXX11_AUTO_TYPE +# endif + +# if(__has_feature(cxx_strong_enums)) +# define GLM_CXX11_STRONG_ENUMS +# endif + +# if(__has_feature(cxx_trailing_return)) +# define GLM_CXX11_TRAILING_RETURN +# endif + +# if(__has_feature(cxx_unicode_literals)) +# define GLM_CXX11_UNICODE_LITERALS +# endif + +# if(__has_feature(cxx_unrestricted_unions)) +# define GLM_CXX11_UNRESTRICTED_UNIONS +# endif + +# if(__has_feature(cxx_user_literals)) +# define GLM_CXX11_USER_LITERALS +# endif + +# if(__has_feature(cxx_variadic_templates)) +# define GLM_CXX11_VARIADIC_TEMPLATES +# endif + +#endif//(GLM_COMPILER & GLM_COMPILER_CLANG) + +#endif//glm_core_features diff --git a/deps/glm/detail/_fixes.hpp b/deps/glm/detail/_fixes.hpp new file mode 100644 index 0000000000..95be0e720c --- /dev/null +++ b/deps/glm/detail/_fixes.hpp @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/core/_fixes.hpp +/// @date 2011-02-21 / 2011-11-22 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#include + +//! Workaround for compatibility with other libraries +#ifdef max +#undef max +#endif + +//! Workaround for compatibility with other libraries +#ifdef min +#undef min +#endif + +//! Workaround for Android +#ifdef isnan +#undef isnan +#endif + +//! Workaround for Android +#ifdef isinf +#undef isinf +#endif + +//! Workaround for Chrone Native Client +#ifdef log2 +#undef log2 +#endif + diff --git a/deps/glm/detail/_literals.hpp b/deps/glm/detail/_literals.hpp new file mode 100644 index 0000000000..f46098140e --- /dev/null +++ b/deps/glm/detail/_literals.hpp @@ -0,0 +1,51 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/core/_literals.hpp +/// @date 2013-05-06 / 2013-05-06 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef glm_core_literals +#define glm_core_literals + +namespace glm +{ +#define GLM_CXX11_USER_LITERALS +#ifdef GLM_CXX11_USER_LITERALS +/* + GLM_FUNC_QUALIFIER detail::half operator "" _h(long double const s) + { + return detail::half(s); + } + + GLM_FUNC_QUALIFIER float operator "" _f(long double const s) + { + return static_cast(s); + } +*/ +#endif//GLM_CXX11_USER_LITERALS + +}//namespace glm + +#endif//glm_core_literals diff --git a/deps/glm/detail/_noise.hpp b/deps/glm/detail/_noise.hpp new file mode 100644 index 0000000000..bf779bf691 --- /dev/null +++ b/deps/glm/detail/_noise.hpp @@ -0,0 +1,130 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/detail/_noise.hpp +/// @date 2013-12-24 / 2013-12-24 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef GLM_DETAIL_NOISE_INCLUDED +#define GLM_DETAIL_NOISE_INCLUDED + +namespace glm{ +namespace detail +{ + template + GLM_FUNC_QUALIFIER T mod289(T const & x) + { + return x - floor(x * static_cast(1.0) / static_cast(289.0)) * static_cast(289.0); + } + + template + GLM_FUNC_QUALIFIER T permute(T const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } + + template + GLM_FUNC_QUALIFIER tvec2 permute(tvec2 const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } + + template + GLM_FUNC_QUALIFIER tvec3 permute(tvec3 const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } + + template + GLM_FUNC_QUALIFIER tvec4 permute(tvec4 const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } +/* + template class vecType> + GLM_FUNC_QUALIFIER vecType permute(vecType const & x) + { + return mod289(((x * T(34)) + T(1)) * x); + } +*/ + template + GLM_FUNC_QUALIFIER T taylorInvSqrt(T const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } + + template + GLM_FUNC_QUALIFIER detail::tvec2 taylorInvSqrt(detail::tvec2 const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } + + template + GLM_FUNC_QUALIFIER detail::tvec3 taylorInvSqrt(detail::tvec3 const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } + + template + GLM_FUNC_QUALIFIER detail::tvec4 taylorInvSqrt(detail::tvec4 const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } +/* + template class vecType> + GLM_FUNC_QUALIFIER vecType taylorInvSqrt(vecType const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } +*/ + + template + GLM_FUNC_QUALIFIER detail::tvec2 fade(detail::tvec2 const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } + + template + GLM_FUNC_QUALIFIER detail::tvec3 fade(detail::tvec3 const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } + + template + GLM_FUNC_QUALIFIER detail::tvec4 fade(detail::tvec4 const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } +/* + template class vecType> + GLM_FUNC_QUALIFIER vecType fade(vecType const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } +*/ +}//namespace detail +}//namespace glm + +#endif//GLM_DETAIL_NOISE_INCLUDED + diff --git a/deps/glm/detail/_swizzle.hpp b/deps/glm/detail/_swizzle.hpp new file mode 100644 index 0000000000..1be3786b98 --- /dev/null +++ b/deps/glm/detail/_swizzle.hpp @@ -0,0 +1,840 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/core/_swizzle.hpp +/// @date 2006-04-20 / 2011-02-16 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef glm_core_swizzle +#define glm_core_swizzle + +namespace glm{ +namespace detail +{ + // Internal class for implementing swizzle operators + template + struct _swizzle_base0 + { + typedef T value_type; + + protected: + GLM_FUNC_QUALIFIER value_type& elem (size_t i) { return (reinterpret_cast(_buffer))[i]; } + GLM_FUNC_QUALIFIER const value_type& elem (size_t i) const { return (reinterpret_cast(_buffer))[i]; } + + // Use an opaque buffer to *ensure* the compiler doesn't call a constructor. + // The size 1 buffer is assumed to aligned to the actual members so that the + // elem() + char _buffer[1]; + }; + + template + struct _swizzle_base1 : public _swizzle_base0 + { + }; + + template + struct _swizzle_base1 : public _swizzle_base0 + { + GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1)); } + }; + + template + struct _swizzle_base1 : public _swizzle_base0 + { + GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); } + }; + + template + struct _swizzle_base1 : public _swizzle_base0 + { + GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); } + }; + + // Internal class for implementing swizzle operators + /* + Template parameters: + + ValueType = type of scalar values (e.g. float, double) + VecType = class the swizzle is applies to (e.g. tvec3) + N = number of components in the vector (e.g. 3) + E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec + + DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles + containing duplicate elements so that they cannot be used as r-values). + */ + template + struct _swizzle_base2 : public _swizzle_base1 + { + typedef VecType vec_type; + typedef ValueType value_type; + + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const ValueType& t) + { + for (int i = 0; i < N; ++i) + (*this)[i] = t; + return *this; + } + + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e = t; } + }; + _apply_op(that, op()); + return *this; + } + + GLM_FUNC_QUALIFIER void operator -= (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e -= t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER void operator += (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e += t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER void operator *= (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e *= t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER void operator /= (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e /= t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER value_type& operator[] (size_t i) + { +#ifndef __CUDA_ARCH__ + static +#endif + const int offset_dst[4] = { E0, E1, E2, E3 }; + return this->elem(offset_dst[i]); + } + GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const + { +#ifndef __CUDA_ARCH__ + static +#endif + const int offset_dst[4] = { E0, E1, E2, E3 }; + return this->elem(offset_dst[i]); + } + protected: + template + GLM_FUNC_QUALIFIER void _apply_op(const VecType& that, T op) + { + // Make a copy of the data in this == &that. + // The copier should optimize out the copy in cases where the function is + // properly inlined and the copy is not necessary. + ValueType t[N]; + for (int i = 0; i < N; ++i) + t[i] = that[i]; + for (int i = 0; i < N; ++i) + op( (*this)[i], t[i] ); + } + }; + + // Specialization for swizzles containing duplicate elements. These cannot be modified. + template + struct _swizzle_base2 : public _swizzle_base1 + { + typedef VecType vec_type; + typedef ValueType value_type; + + struct Stub {}; + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const &) { return *this; } + + GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const + { +#ifndef __CUDA_ARCH__ + static +#endif + const int offset_dst[4] = { E0, E1, E2, E3 }; + return this->elem(offset_dst[i]); + } + }; + + template + struct _swizzle : public _swizzle_base2 + { + typedef _swizzle_base2 base_type; + + using base_type::operator=; + + GLM_FUNC_QUALIFIER operator VecType () const { return (*this)(); } + }; + +// +// To prevent the C++ syntax from getting entirely overwhelming, define some alias macros +// +#define _GLM_SWIZZLE_TEMPLATE1 template +#define _GLM_SWIZZLE_TEMPLATE2 template +#define _GLM_SWIZZLE_TYPE1 _swizzle +#define _GLM_SWIZZLE_TYPE2 _swizzle + +// +// Wrapper for a binary operator (e.g. u.yy + v.zy) +// +#define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ + _GLM_SWIZZLE_TEMPLATE2 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ + { \ + return a() OPERAND b(); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b) \ + { \ + return a() OPERAND b; \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return a OPERAND b(); \ + } + +// +// Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz) +// +#define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \ + { \ + return a() OPERAND b; \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return a OPERAND b(); \ + } + +// +// Macro for wrapping a function taking one argument (e.g. abs()) +// +#define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \ + { \ + return FUNCTION(a()); \ + } + +// +// Macro for wrapping a function taking two vector arguments (e.g. dot()). +// +#define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \ + _GLM_SWIZZLE_TEMPLATE2 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ + { \ + return FUNCTION(a(), b()); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return FUNCTION(a(), b()); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \ + { \ + return FUNCTION(a(), b); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return FUNCTION(a, b()); \ + } + +// +// Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()). +// +#define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \ + _GLM_SWIZZLE_TEMPLATE2 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \ + { \ + return FUNCTION(a(), b(), c); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ + { \ + return FUNCTION(a(), b(), c); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\ + { \ + return FUNCTION(a(), b, c); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ + { \ + return FUNCTION(a, b(), c); \ + } + +}//namespace detail +}//namespace glm + +namespace glm +{ + namespace detail + { + _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-) + _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/) + } + + // + // Swizzles are distinct types from the unswizzled type. The below macros will + // provide template specializations for the swizzle types for the given functions + // so that the compiler does not have any ambiguity to choosing how to handle + // the function. + // + // The alternative is to use the operator()() when calling the function in order + // to explicitly convert the swizzled type to the unswizzled type. + // + + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any); + + //_GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot); + //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross); + //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step); + //_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix); +} + +#define _GLM_SWIZZLE2_2_MEMBERS(T, P, V, E0,E1) \ + struct { _swizzle<2, T, P, V, 0,0,-1,-2> E0 ## E0; }; \ + struct { _swizzle<2, T, P, V, 0,1,-1,-2> E0 ## E1; }; \ + struct { _swizzle<2, T, P, V, 1,0,-1,-2> E1 ## E0; }; \ + struct { _swizzle<2, T, P, V, 1,1,-1,-2> E1 ## E1; }; + +#define _GLM_SWIZZLE2_3_MEMBERS(T, P, V, E0,E1) \ + struct { _swizzle<3,T, P, V, 0,0,0,-1> E0 ## E0 ## E0; }; \ + struct { _swizzle<3,T, P, V, 0,0,1,-1> E0 ## E0 ## E1; }; \ + struct { _swizzle<3,T, P, V, 0,1,0,-1> E0 ## E1 ## E0; }; \ + struct { _swizzle<3,T, P, V, 0,1,1,-1> E0 ## E1 ## E1; }; \ + struct { _swizzle<3,T, P, V, 1,0,0,-1> E1 ## E0 ## E0; }; \ + struct { _swizzle<3,T, P, V, 1,0,1,-1> E1 ## E0 ## E1; }; \ + struct { _swizzle<3,T, P, V, 1,1,0,-1> E1 ## E1 ## E0; }; \ + struct { _swizzle<3,T, P, V, 1,1,1,-1> E1 ## E1 ## E1; }; + +#define _GLM_SWIZZLE2_4_MEMBERS(T, P, V, E0,E1) \ + struct { _swizzle<4,T, P, V, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; + +#define _GLM_SWIZZLE3_2_MEMBERS(T, P, V, E0,E1,E2) \ + struct { _swizzle<2,T, P, V, 0,0,-1,-2> E0 ## E0; }; \ + struct { _swizzle<2,T, P, V, 0,1,-1,-2> E0 ## E1; }; \ + struct { _swizzle<2,T, P, V, 0,2,-1,-2> E0 ## E2; }; \ + struct { _swizzle<2,T, P, V, 1,0,-1,-2> E1 ## E0; }; \ + struct { _swizzle<2,T, P, V, 1,1,-1,-2> E1 ## E1; }; \ + struct { _swizzle<2,T, P, V, 1,2,-1,-2> E1 ## E2; }; \ + struct { _swizzle<2,T, P, V, 2,0,-1,-2> E2 ## E0; }; \ + struct { _swizzle<2,T, P, V, 2,1,-1,-2> E2 ## E1; }; \ + struct { _swizzle<2,T, P, V, 2,2,-1,-2> E2 ## E2; }; + +#define _GLM_SWIZZLE3_3_MEMBERS(T, P, V ,E0,E1,E2) \ + struct { _swizzle<3,T,P, V, 0,0,0,-1> E0 ## E0 ## E0; }; \ + struct { _swizzle<3,T,P, V, 0,0,1,-1> E0 ## E0 ## E1; }; \ + struct { _swizzle<3,T,P, V, 0,0,2,-1> E0 ## E0 ## E2; }; \ + struct { _swizzle<3,T,P, V, 0,1,0,-1> E0 ## E1 ## E0; }; \ + struct { _swizzle<3,T,P, V, 0,1,1,-1> E0 ## E1 ## E1; }; \ + struct { _swizzle<3,T,P, V, 0,1,2,-1> E0 ## E1 ## E2; }; \ + struct { _swizzle<3,T,P, V, 0,2,0,-1> E0 ## E2 ## E0; }; \ + struct { _swizzle<3,T,P, V, 0,2,1,-1> E0 ## E2 ## E1; }; \ + struct { _swizzle<3,T,P, V, 0,2,2,-1> E0 ## E2 ## E2; }; \ + struct { _swizzle<3,T,P, V, 1,0,0,-1> E1 ## E0 ## E0; }; \ + struct { _swizzle<3,T,P, V, 1,0,1,-1> E1 ## E0 ## E1; }; \ + struct { _swizzle<3,T,P, V, 1,0,2,-1> E1 ## E0 ## E2; }; \ + struct { _swizzle<3,T,P, V, 1,1,0,-1> E1 ## E1 ## E0; }; \ + struct { _swizzle<3,T,P, V, 1,1,1,-1> E1 ## E1 ## E1; }; \ + struct { _swizzle<3,T,P, V, 1,1,2,-1> E1 ## E1 ## E2; }; \ + struct { _swizzle<3,T,P, V, 1,2,0,-1> E1 ## E2 ## E0; }; \ + struct { _swizzle<3,T,P, V, 1,2,1,-1> E1 ## E2 ## E1; }; \ + struct { _swizzle<3,T,P, V, 1,2,2,-1> E1 ## E2 ## E2; }; \ + struct { _swizzle<3,T,P, V, 2,0,0,-1> E2 ## E0 ## E0; }; \ + struct { _swizzle<3,T,P, V, 2,0,1,-1> E2 ## E0 ## E1; }; \ + struct { _swizzle<3,T,P, V, 2,0,2,-1> E2 ## E0 ## E2; }; \ + struct { _swizzle<3,T,P, V, 2,1,0,-1> E2 ## E1 ## E0; }; \ + struct { _swizzle<3,T,P, V, 2,1,1,-1> E2 ## E1 ## E1; }; \ + struct { _swizzle<3,T,P, V, 2,1,2,-1> E2 ## E1 ## E2; }; \ + struct { _swizzle<3,T,P, V, 2,2,0,-1> E2 ## E2 ## E0; }; \ + struct { _swizzle<3,T,P, V, 2,2,1,-1> E2 ## E2 ## E1; }; \ + struct { _swizzle<3,T,P, V, 2,2,2,-1> E2 ## E2 ## E2; }; + +#define _GLM_SWIZZLE3_4_MEMBERS(T, P, V, E0,E1,E2) \ + struct { _swizzle<4,T, P, V, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \ + struct { _swizzle<4,T, P, V, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \ + struct { _swizzle<4,T, P, V, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \ + struct { _swizzle<4,T, P, V, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \ + struct { _swizzle<4,T, P, V, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \ + struct { _swizzle<4,T, P, V, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \ + struct { _swizzle<4,T, P, V, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \ + struct { _swizzle<4,T, P, V, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \ + struct { _swizzle<4,T, P, V, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \ + struct { _swizzle<4,T, P, V, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \ + struct { _swizzle<4,T, P, V, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \ + struct { _swizzle<4,T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ + struct { _swizzle<4,T, P, V, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \ + struct { _swizzle<4,T, P, V, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \ + struct { _swizzle<4,T, P, V, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \ + struct { _swizzle<4,T, P, V, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \ + struct { _swizzle<4,T, P, V, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \ + struct { _swizzle<4,T, P, V, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \ + struct { _swizzle<4,T, P, V, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \ + struct { _swizzle<4,T, P, V, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \ + struct { _swizzle<4,T, P, V, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \ + struct { _swizzle<4,T, P, V, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \ + struct { _swizzle<4,T, P, V, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \ + struct { _swizzle<4,T, P, V, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \ + struct { _swizzle<4,T, P, V, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \ + struct { _swizzle<4,T, P, V, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \ + struct { _swizzle<4,T, P, V, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \ + struct { _swizzle<4,T, P, V, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \ + struct { _swizzle<4,T, P, V, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \ + struct { _swizzle<4,T, P, V, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \ + struct { _swizzle<4,T, P, V, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \ + struct { _swizzle<4,T, P, V, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \ + struct { _swizzle<4,T, P, V, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \ + struct { _swizzle<4,T, P, V, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \ + struct { _swizzle<4,T, P, V, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \ + struct { _swizzle<4,T, P, V, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \ + struct { _swizzle<4,T, P, V, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \ + struct { _swizzle<4,T, P, V, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \ + struct { _swizzle<4,T, P, V, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \ + struct { _swizzle<4,T, P, V, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \ + struct { _swizzle<4,T, P, V, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; + +#define _GLM_SWIZZLE4_2_MEMBERS(T, P, V, E0,E1,E2,E3) \ + struct { _swizzle<2,T, P, V, 0,0,-1,-2> E0 ## E0; }; \ + struct { _swizzle<2,T, P, V, 0,1,-1,-2> E0 ## E1; }; \ + struct { _swizzle<2,T, P, V, 0,2,-1,-2> E0 ## E2; }; \ + struct { _swizzle<2,T, P, V, 0,3,-1,-2> E0 ## E3; }; \ + struct { _swizzle<2,T, P, V, 1,0,-1,-2> E1 ## E0; }; \ + struct { _swizzle<2,T, P, V, 1,1,-1,-2> E1 ## E1; }; \ + struct { _swizzle<2,T, P, V, 1,2,-1,-2> E1 ## E2; }; \ + struct { _swizzle<2,T, P, V, 1,3,-1,-2> E1 ## E3; }; \ + struct { _swizzle<2,T, P, V, 2,0,-1,-2> E2 ## E0; }; \ + struct { _swizzle<2,T, P, V, 2,1,-1,-2> E2 ## E1; }; \ + struct { _swizzle<2,T, P, V, 2,2,-1,-2> E2 ## E2; }; \ + struct { _swizzle<2,T, P, V, 2,3,-1,-2> E2 ## E3; }; \ + struct { _swizzle<2,T, P, V, 3,0,-1,-2> E3 ## E0; }; \ + struct { _swizzle<2,T, P, V, 3,1,-1,-2> E3 ## E1; }; \ + struct { _swizzle<2,T, P, V, 3,2,-1,-2> E3 ## E2; }; \ + struct { _swizzle<2,T, P, V, 3,3,-1,-2> E3 ## E3; }; + +#define _GLM_SWIZZLE4_3_MEMBERS(T,P, V, E0,E1,E2,E3) \ + struct { _swizzle<3,T,P, V, 0,0,0,-1> E0 ## E0 ## E0; }; \ + struct { _swizzle<3,T,P, V, 0,0,1,-1> E0 ## E0 ## E1; }; \ + struct { _swizzle<3,T,P, V, 0,0,2,-1> E0 ## E0 ## E2; }; \ + struct { _swizzle<3,T,P, V, 0,0,3,-1> E0 ## E0 ## E3; }; \ + struct { _swizzle<3,T,P, V, 0,1,0,-1> E0 ## E1 ## E0; }; \ + struct { _swizzle<3,T,P, V, 0,1,1,-1> E0 ## E1 ## E1; }; \ + struct { _swizzle<3,T,P, V, 0,1,2,-1> E0 ## E1 ## E2; }; \ + struct { _swizzle<3,T,P, V, 0,1,3,-1> E0 ## E1 ## E3; }; \ + struct { _swizzle<3,T,P, V, 0,2,0,-1> E0 ## E2 ## E0; }; \ + struct { _swizzle<3,T,P, V, 0,2,1,-1> E0 ## E2 ## E1; }; \ + struct { _swizzle<3,T,P, V, 0,2,2,-1> E0 ## E2 ## E2; }; \ + struct { _swizzle<3,T,P, V, 0,2,3,-1> E0 ## E2 ## E3; }; \ + struct { _swizzle<3,T,P, V, 0,3,0,-1> E0 ## E3 ## E0; }; \ + struct { _swizzle<3,T,P, V, 0,3,1,-1> E0 ## E3 ## E1; }; \ + struct { _swizzle<3,T,P, V, 0,3,2,-1> E0 ## E3 ## E2; }; \ + struct { _swizzle<3,T,P, V, 0,3,3,-1> E0 ## E3 ## E3; }; \ + struct { _swizzle<3,T,P, V, 1,0,0,-1> E1 ## E0 ## E0; }; \ + struct { _swizzle<3,T,P, V, 1,0,1,-1> E1 ## E0 ## E1; }; \ + struct { _swizzle<3,T,P, V, 1,0,2,-1> E1 ## E0 ## E2; }; \ + struct { _swizzle<3,T,P, V, 1,0,3,-1> E1 ## E0 ## E3; }; \ + struct { _swizzle<3,T,P, V, 1,1,0,-1> E1 ## E1 ## E0; }; \ + struct { _swizzle<3,T,P, V, 1,1,1,-1> E1 ## E1 ## E1; }; \ + struct { _swizzle<3,T,P, V, 1,1,2,-1> E1 ## E1 ## E2; }; \ + struct { _swizzle<3,T,P, V, 1,1,3,-1> E1 ## E1 ## E3; }; \ + struct { _swizzle<3,T,P, V, 1,2,0,-1> E1 ## E2 ## E0; }; \ + struct { _swizzle<3,T,P, V, 1,2,1,-1> E1 ## E2 ## E1; }; \ + struct { _swizzle<3,T,P, V, 1,2,2,-1> E1 ## E2 ## E2; }; \ + struct { _swizzle<3,T,P, V, 1,2,3,-1> E1 ## E2 ## E3; }; \ + struct { _swizzle<3,T,P, V, 1,3,0,-1> E1 ## E3 ## E0; }; \ + struct { _swizzle<3,T,P, V, 1,3,1,-1> E1 ## E3 ## E1; }; \ + struct { _swizzle<3,T,P, V, 1,3,2,-1> E1 ## E3 ## E2; }; \ + struct { _swizzle<3,T,P, V, 1,3,3,-1> E1 ## E3 ## E3; }; \ + struct { _swizzle<3,T,P, V, 2,0,0,-1> E2 ## E0 ## E0; }; \ + struct { _swizzle<3,T,P, V, 2,0,1,-1> E2 ## E0 ## E1; }; \ + struct { _swizzle<3,T,P, V, 2,0,2,-1> E2 ## E0 ## E2; }; \ + struct { _swizzle<3,T,P, V, 2,0,3,-1> E2 ## E0 ## E3; }; \ + struct { _swizzle<3,T,P, V, 2,1,0,-1> E2 ## E1 ## E0; }; \ + struct { _swizzle<3,T,P, V, 2,1,1,-1> E2 ## E1 ## E1; }; \ + struct { _swizzle<3,T,P, V, 2,1,2,-1> E2 ## E1 ## E2; }; \ + struct { _swizzle<3,T,P, V, 2,1,3,-1> E2 ## E1 ## E3; }; \ + struct { _swizzle<3,T,P, V, 2,2,0,-1> E2 ## E2 ## E0; }; \ + struct { _swizzle<3,T,P, V, 2,2,1,-1> E2 ## E2 ## E1; }; \ + struct { _swizzle<3,T,P, V, 2,2,2,-1> E2 ## E2 ## E2; }; \ + struct { _swizzle<3,T,P, V, 2,2,3,-1> E2 ## E2 ## E3; }; \ + struct { _swizzle<3,T,P, V, 2,3,0,-1> E2 ## E3 ## E0; }; \ + struct { _swizzle<3,T,P, V, 2,3,1,-1> E2 ## E3 ## E1; }; \ + struct { _swizzle<3,T,P, V, 2,3,2,-1> E2 ## E3 ## E2; }; \ + struct { _swizzle<3,T,P, V, 2,3,3,-1> E2 ## E3 ## E3; }; \ + struct { _swizzle<3,T,P, V, 3,0,0,-1> E3 ## E0 ## E0; }; \ + struct { _swizzle<3,T,P, V, 3,0,1,-1> E3 ## E0 ## E1; }; \ + struct { _swizzle<3,T,P, V, 3,0,2,-1> E3 ## E0 ## E2; }; \ + struct { _swizzle<3,T,P, V, 3,0,3,-1> E3 ## E0 ## E3; }; \ + struct { _swizzle<3,T,P, V, 3,1,0,-1> E3 ## E1 ## E0; }; \ + struct { _swizzle<3,T,P, V, 3,1,1,-1> E3 ## E1 ## E1; }; \ + struct { _swizzle<3,T,P, V, 3,1,2,-1> E3 ## E1 ## E2; }; \ + struct { _swizzle<3,T,P, V, 3,1,3,-1> E3 ## E1 ## E3; }; \ + struct { _swizzle<3,T,P, V, 3,2,0,-1> E3 ## E2 ## E0; }; \ + struct { _swizzle<3,T,P, V, 3,2,1,-1> E3 ## E2 ## E1; }; \ + struct { _swizzle<3,T,P, V, 3,2,2,-1> E3 ## E2 ## E2; }; \ + struct { _swizzle<3,T,P, V, 3,2,3,-1> E3 ## E2 ## E3; }; \ + struct { _swizzle<3,T,P, V, 3,3,0,-1> E3 ## E3 ## E0; }; \ + struct { _swizzle<3,T,P, V, 3,3,1,-1> E3 ## E3 ## E1; }; \ + struct { _swizzle<3,T,P, V, 3,3,2,-1> E3 ## E3 ## E2; }; \ + struct { _swizzle<3,T,P, V, 3,3,3,-1> E3 ## E3 ## E3; }; + +#define _GLM_SWIZZLE4_4_MEMBERS(T, P, V, E0,E1,E2,E3) \ + struct { _swizzle<4, T, P, V, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,0,0,3> E0 ## E0 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,0,1,3> E0 ## E0 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,0,2,3> E0 ## E0 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,0,3,0> E0 ## E0 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,0,3,1> E0 ## E0 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,0,3,2> E0 ## E0 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,0,3,3> E0 ## E0 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,1,0,3> E0 ## E1 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,1,1,3> E0 ## E1 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,1,2,3> E0 ## E1 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,1,3,0> E0 ## E1 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,1,3,1> E0 ## E1 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,1,3,2> E0 ## E1 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,1,3,3> E0 ## E1 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,2,0,3> E0 ## E2 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,2,1,3> E0 ## E2 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,2,2,3> E0 ## E2 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,2,3,0> E0 ## E2 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,0,0,3> E1 ## E0 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,0,1,3> E1 ## E0 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,0,2,3> E1 ## E0 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,0,3,0> E1 ## E0 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,0,3,1> E1 ## E0 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,0,3,2> E1 ## E0 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,0,3,3> E1 ## E0 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,1,0,3> E1 ## E1 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,1,1,3> E1 ## E1 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,1,2,3> E1 ## E1 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,1,3,0> E1 ## E1 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,1,3,1> E1 ## E1 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,1,3,2> E1 ## E1 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,1,3,3> E1 ## E1 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,2,0,3> E1 ## E2 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,2,1,3> E1 ## E2 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,2,2,3> E1 ## E2 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,2,3,0> E1 ## E2 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,2,3,1> E1 ## E2 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,2,3,2> E1 ## E2 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,2,3,3> E1 ## E2 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,3,0,0> E1 ## E3 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,3,0,1> E1 ## E3 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,3,0,2> E1 ## E3 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,3,0,3> E1 ## E3 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,3,1,0> E1 ## E3 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,3,1,1> E1 ## E3 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,3,1,2> E1 ## E3 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,3,1,3> E1 ## E3 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,3,2,0> E1 ## E3 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,3,2,1> E1 ## E3 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,3,2,2> E1 ## E3 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,3,2,3> E1 ## E3 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 1,3,3,0> E1 ## E3 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 1,3,3,1> E1 ## E3 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 1,3,3,2> E1 ## E3 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 1,3,3,3> E1 ## E3 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,0,0,3> E2 ## E0 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,0,1,3> E2 ## E0 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,0,2,3> E2 ## E0 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,0,3,0> E2 ## E0 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,0,3,1> E2 ## E0 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,0,3,2> E2 ## E0 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,0,3,3> E2 ## E0 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,1,0,3> E2 ## E1 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,1,1,3> E2 ## E1 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,1,2,3> E2 ## E1 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,1,3,0> E2 ## E1 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,1,3,1> E2 ## E1 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,1,3,2> E2 ## E1 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,1,3,3> E2 ## E1 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,2,0,3> E2 ## E2 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,2,1,3> E2 ## E2 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,2,2,3> E2 ## E2 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,2,3,0> E2 ## E2 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,2,3,1> E2 ## E2 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,2,3,2> E2 ## E2 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,2,3,3> E2 ## E2 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,3,0,0> E2 ## E3 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,3,0,1> E2 ## E3 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,3,0,2> E2 ## E3 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,3,0,3> E2 ## E3 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,3,1,0> E2 ## E3 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,3,1,1> E2 ## E3 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,3,1,2> E2 ## E3 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,3,1,3> E2 ## E3 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,3,2,0> E2 ## E3 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,3,2,1> E2 ## E3 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,3,2,2> E2 ## E3 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,3,2,3> E2 ## E3 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 2,3,3,0> E2 ## E3 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 2,3,3,1> E2 ## E3 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 2,3,3,2> E2 ## E3 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 2,3,3,3> E2 ## E3 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,0,0,0> E3 ## E0 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,0,0,1> E3 ## E0 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,0,0,2> E3 ## E0 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,0,0,3> E3 ## E0 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,0,1,0> E3 ## E0 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,0,1,1> E3 ## E0 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,0,1,2> E3 ## E0 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,0,1,3> E3 ## E0 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,0,2,0> E3 ## E0 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,0,2,1> E3 ## E0 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,0,2,2> E3 ## E0 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,0,2,3> E3 ## E0 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,0,3,0> E3 ## E0 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,0,3,1> E3 ## E0 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,0,3,2> E3 ## E0 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,0,3,3> E3 ## E0 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,1,0,0> E3 ## E1 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,1,0,1> E3 ## E1 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,1,0,2> E3 ## E1 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,1,0,3> E3 ## E1 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,1,1,0> E3 ## E1 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,1,1,1> E3 ## E1 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,1,1,2> E3 ## E1 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,1,1,3> E3 ## E1 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,1,2,0> E3 ## E1 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,1,2,1> E3 ## E1 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,1,2,2> E3 ## E1 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,1,2,3> E3 ## E1 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,1,3,0> E3 ## E1 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,1,3,1> E3 ## E1 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,1,3,2> E3 ## E1 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,1,3,3> E3 ## E1 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,2,0,0> E3 ## E2 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,2,0,1> E3 ## E2 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,2,0,2> E3 ## E2 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,2,0,3> E3 ## E2 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,2,1,0> E3 ## E2 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,2,1,1> E3 ## E2 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,2,1,2> E3 ## E2 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,2,1,3> E3 ## E2 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,2,2,0> E3 ## E2 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,2,2,1> E3 ## E2 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,2,2,2> E3 ## E2 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,2,2,3> E3 ## E2 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,2,3,0> E3 ## E2 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,2,3,1> E3 ## E2 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,2,3,2> E3 ## E2 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,2,3,3> E3 ## E2 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,3,0,0> E3 ## E3 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,3,0,1> E3 ## E3 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,3,0,2> E3 ## E3 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,3,0,3> E3 ## E3 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,3,1,0> E3 ## E3 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,3,1,1> E3 ## E3 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,3,1,2> E3 ## E3 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,3,1,3> E3 ## E3 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,3,2,0> E3 ## E3 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,3,2,1> E3 ## E3 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,3,2,2> E3 ## E3 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,3,2,3> E3 ## E3 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 3,3,3,3> E3 ## E3 ## E3 ## E3; }; + +#endif//glm_core_swizzle diff --git a/deps/glm/detail/_swizzle_func.hpp b/deps/glm/detail/_swizzle_func.hpp new file mode 100644 index 0000000000..471bcd8a71 --- /dev/null +++ b/deps/glm/detail/_swizzle_func.hpp @@ -0,0 +1,724 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/core/_swizzle_func.hpp +/// @date 2011-10-16 / 2011-10-16 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef glm_core_swizzle_func +#define glm_core_swizzle_func + +#define GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \ + SWIZZLED_TYPE A ## B() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B); \ + } + +#define GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \ + SWIZZLED_TYPE A ## B ## C() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C); \ + } + +#define GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \ + SWIZZLED_TYPE A ## B ## C ## D() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C, this->D); \ + } + +#define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \ + template \ + SWIZZLED_TYPE CLASS_TYPE::A ## B() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B); \ + } + +#define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \ + template \ + SWIZZLED_TYPE CLASS_TYPE::A ## B ## C() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C); \ + } + +#define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \ + template \ + SWIZZLED_TYPE CLASS_TYPE::A ## B ## C ## D() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C, this->D); \ + } + +#define GLM_MUTABLE + +#define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, x, y) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, r, g) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, s, t) + +//GLM_SWIZZLE_GEN_REF_FROM_VEC2(valType, detail::vec2, detail::ref2) + +#define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) + +#define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B, A) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, x, y, z) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, r, g, b) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, s, t, p) + +//GLM_SWIZZLE_GEN_REF_FROM_VEC3(valType, detail::vec3, detail::ref2, detail::ref3) + +#define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, C) + +#define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B) + +#define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C, A) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q) + +//GLM_SWIZZLE_GEN_REF_FROM_VEC4(valType, detail::vec4, detail::ref2, detail::ref3, detail::ref4) + +#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) + +#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) + +#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t) + +//GLM_SWIZZLE_GEN_VEC_FROM_VEC2(valType, detail::vec2, detail::vec2, detail::vec3, detail::vec4) + +#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) + +#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) + +#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p) + +//GLM_SWIZZLE_GEN_VEC_FROM_VEC3(valType, detail::vec3, detail::vec2, detail::vec3, detail::vec4) + +#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D) + +#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D) + +#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, D) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q) + +//GLM_SWIZZLE_GEN_VEC_FROM_VEC4(valType, detail::vec4, detail::vec2, detail::vec3, detail::vec4) + +#endif//glm_core_swizzle_func diff --git a/deps/glm/detail/_vectorize.hpp b/deps/glm/detail/_vectorize.hpp new file mode 100644 index 0000000000..6874a321bd --- /dev/null +++ b/deps/glm/detail/_vectorize.hpp @@ -0,0 +1,217 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/core/_vectorize.hpp +/// @date 2011-10-14 / 2011-10-14 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef GLM_CORE_DETAIL_INCLUDED +#define GLM_CORE_DETAIL_INCLUDED + +#include "type_vec1.hpp" +#include "type_vec2.hpp" +#include "type_vec3.hpp" +#include "type_vec4.hpp" + +#define VECTORIZE1_VEC(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec1 func( \ + detail::tvec1 const & v) \ + { \ + return detail::tvec1( \ + func(v.x)); \ + } + +#define VECTORIZE2_VEC(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec2 func( \ + detail::tvec2 const & v) \ + { \ + return detail::tvec2( \ + func(v.x), \ + func(v.y)); \ + } + +#define VECTORIZE3_VEC(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec3 func( \ + detail::tvec3 const & v) \ + { \ + return detail::tvec3( \ + func(v.x), \ + func(v.y), \ + func(v.z)); \ + } + +#define VECTORIZE4_VEC(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec4 func( \ + detail::tvec4 const & v) \ + { \ + return detail::tvec4( \ + func(v.x), \ + func(v.y), \ + func(v.z), \ + func(v.w)); \ + } + +#define VECTORIZE_VEC(func) \ + VECTORIZE1_VEC(func) \ + VECTORIZE2_VEC(func) \ + VECTORIZE3_VEC(func) \ + VECTORIZE4_VEC(func) + +#define VECTORIZE1_VEC_SCA(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec1 func \ + ( \ + detail::tvec1 const & x, \ + T const & y \ + ) \ + { \ + return detail::tvec1( \ + func(x.x, y)); \ + } + +#define VECTORIZE2_VEC_SCA(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec2 func \ + ( \ + detail::tvec2 const & x, \ + T const & y \ + ) \ + { \ + return detail::tvec2( \ + func(x.x, y), \ + func(x.y, y)); \ + } + +#define VECTORIZE3_VEC_SCA(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec3 func \ + ( \ + detail::tvec3 const & x, \ + T const & y \ + ) \ + { \ + return detail::tvec3( \ + func(x.x, y), \ + func(x.y, y), \ + func(x.z, y)); \ + } + +#define VECTORIZE4_VEC_SCA(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec4 func \ + ( \ + detail::tvec4 const & x, \ + T const & y \ + ) \ + { \ + return detail::tvec4( \ + func(x.x, y), \ + func(x.y, y), \ + func(x.z, y), \ + func(x.w, y)); \ + } + +#define VECTORIZE_VEC_SCA(func) \ + VECTORIZE1_VEC_SCA(func) \ + VECTORIZE2_VEC_SCA(func) \ + VECTORIZE3_VEC_SCA(func) \ + VECTORIZE4_VEC_SCA(func) + +#define VECTORIZE2_VEC_VEC(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec2 func \ + ( \ + detail::tvec2 const & x, \ + detail::tvec2 const & y \ + ) \ + { \ + return detail::tvec2( \ + func(x.x, y.x), \ + func(x.y, y.y)); \ + } + +#define VECTORIZE3_VEC_VEC(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec3 func \ + ( \ + detail::tvec3 const & x, \ + detail::tvec3 const & y \ + ) \ + { \ + return detail::tvec3( \ + func(x.x, y.x), \ + func(x.y, y.y), \ + func(x.z, y.z)); \ + } + +#define VECTORIZE4_VEC_VEC(func) \ + template \ + GLM_FUNC_QUALIFIER detail::tvec4 func \ + ( \ + detail::tvec4 const & x, \ + detail::tvec4 const & y \ + ) \ + { \ + return detail::tvec4( \ + func(x.x, y.x), \ + func(x.y, y.y), \ + func(x.z, y.z), \ + func(x.w, y.w)); \ + } + +#define VECTORIZE_VEC_VEC(func) \ + VECTORIZE2_VEC_VEC(func) \ + VECTORIZE3_VEC_VEC(func) \ + VECTORIZE4_VEC_VEC(func) + +namespace glm{ +namespace detail +{ + template + struct If + { + template + static GLM_FUNC_QUALIFIER T apply(F functor, const T& val) + { + return functor(val); + } + }; + + template<> + struct If + { + template + static GLM_FUNC_QUALIFIER T apply(F, const T& val) + { + return val; + } + }; +}//namespace detail +}//namespace glm + +#endif//GLM_CORE_DETAIL_INCLUDED diff --git a/deps/glm/detail/dummy.cpp b/deps/glm/detail/dummy.cpp new file mode 100644 index 0000000000..98ca022ceb --- /dev/null +++ b/deps/glm/detail/dummy.cpp @@ -0,0 +1,190 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/core/dummy.cpp +/// @date 2011-01-19 / 2011-06-15 +/// @author Christophe Riccio +/// +/// GLM is a header only library. There is nothing to compile. +/// dummy.cpp exist only a wordaround for CMake file. +/////////////////////////////////////////////////////////////////////////////////// + +#define GLM_FORCE_RADIANS +#define GLM_MESSAGES +#include "../glm.hpp" +#include + +struct material +{ + glm::vec4 emission; // Ecm + glm::vec4 ambient; // Acm + glm::vec4 diffuse; // Dcm + glm::vec4 specular; // Scm + float shininess; // Srm +}; +struct light +{ + glm::vec4 ambient; // Acli + glm::vec4 diffuse; // Dcli + glm::vec4 specular; // Scli + glm::vec4 position; // Ppli + glm::vec4 halfVector; // Derived: Hi + glm::vec3 spotDirection; // Sdli + float spotExponent; // Srli + float spotCutoff; // Crli + // (range: [0.0,90.0], 180.0) + float spotCosCutoff; // Derived: cos(Crli) + // (range: [1.0,0.0],-1.0) + float constantAttenuation; // K0 + float linearAttenuation; // K1 + float quadraticAttenuation;// K2 +}; + +// Sample 1 +#include // glm::vec3 +#include // glm::cross, glm::normalize + +glm::vec3 computeNormal +( + glm::vec3 const & a, + glm::vec3 const & b, + glm::vec3 const & c +) +{ + return glm::normalize(glm::cross(c - a, b - a)); +} + +typedef unsigned int GLuint; +#define GL_FALSE 0 +void glUniformMatrix4fv(GLuint, int, int, float*){} + +// Sample 2 +#include // glm::vec3 +#include // glm::vec4, glm::ivec4 +#include // glm::mat4 +#include // glm::translate, glm::rotate, glm::scale, glm::perspective +#include // glm::value_ptr +void func(GLuint LocationMVP, float Translate, glm::vec2 const & Rotate) +{ + glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f); + glm::mat4 ViewTranslate = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Translate)); + glm::mat4 ViewRotateX = glm::rotate(ViewTranslate, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f)); + glm::mat4 View = glm::rotate(ViewRotateX, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f)); + glm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f)); + glm::mat4 MVP = Projection * View * Model; + glUniformMatrix4fv(LocationMVP, 1, GL_FALSE, glm::value_ptr(MVP)); +} + +// Sample 3 +#include // glm::vec2 +#include // glm::packUnorm2x16 +#include // glm::uint +#include // glm::i8vec2, glm::i32vec2 +std::size_t const VertexCount = 4; +// Float quad geometry +std::size_t const PositionSizeF32 = VertexCount * sizeof(glm::vec2); +glm::vec2 const PositionDataF32[VertexCount] = +{ + glm::vec2(-1.0f,-1.0f), + glm::vec2( 1.0f,-1.0f), + glm::vec2( 1.0f, 1.0f), + glm::vec2(-1.0f, 1.0f) + }; +// Half-float quad geometry +std::size_t const PositionSizeF16 = VertexCount * sizeof(glm::uint); +glm::uint const PositionDataF16[VertexCount] = +{ + glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, -1.0f))), + glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, -1.0f))), + glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, 1.0f))), + glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, 1.0f))) +}; +// 8 bits signed integer quad geometry +std::size_t const PositionSizeI8 = VertexCount * sizeof(glm::i8vec2); +glm::i8vec2 const PositionDataI8[VertexCount] = +{ + glm::i8vec2(-1,-1), + glm::i8vec2( 1,-1), + glm::i8vec2( 1, 1), + glm::i8vec2(-1, 1) +}; +// 32 bits signed integer quad geometry +std::size_t const PositionSizeI32 = VertexCount * sizeof(glm::i32vec2); +glm::i32vec2 const PositionDataI32[VertexCount] = +{ + glm::i32vec2 (-1,-1), + glm::i32vec2 ( 1,-1), + glm::i32vec2 ( 1, 1), + glm::i32vec2 (-1, 1) +}; + +struct intersection +{ + glm::vec4 position; + glm::vec3 normal; +}; + +/* +// Sample 4 +#include // glm::vec3 +#include // glm::normalize, glm::dot, glm::reflect +#include // glm::pow +#include // glm::vecRand3 +glm::vec3 lighting +( + intersection const & Intersection, + material const & Material, + light const & Light, + glm::vec3 const & View +) +{ + glm::vec3 Color(0.0f); + glm::vec3 LightVertor(glm::normalize( + Light.position - Intersection.position + + glm::vecRand3(0.0f, Light.inaccuracy)); + + if(!shadow(Intersection.position, Light.position, LightVertor)) + { + float Diffuse = glm::dot(Intersection.normal, LightVector); + if(Diffuse <= 0.0f) + return Color; + if(Material.isDiffuse()) + Color += Light.color() * Material.diffuse * Diffuse; + if(Material.isSpecular()) + { + glm::vec3 Reflect(glm::reflect( + glm::normalize(-LightVector), + glm::normalize(Intersection.normal))); + float Dot = glm::dot(Reflect, View); + float Base = Dot > 0.0f ? Dot : 0.0f; + float Specular = glm::pow(Base, Material.exponent); + Color += Material.specular * Specular; + } + } + return Color; +} +*/ +int main() +{ + return 0; +} diff --git a/deps/glm/detail/func_common.hpp b/deps/glm/detail/func_common.hpp new file mode 100644 index 0000000000..41fe639d43 --- /dev/null +++ b/deps/glm/detail/func_common.hpp @@ -0,0 +1,472 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/core/func_common.hpp +/// @date 2008-03-08 / 2010-01-26 +/// @author Christophe Riccio +/// +/// @see GLSL 4.20.8 specification, section 8.3 Common Functions +/// +/// @defgroup core_func_common Common functions +/// @ingroup core +/// +/// These all operate component-wise. The description is per component. +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef GLM_FUNC_COMMON_INCLUDED +#define GLM_FUNC_COMMON_INCLUDED + +#include "setup.hpp" +#include "precision.hpp" +#include "type_int.hpp" +#include "_fixes.hpp" + +namespace glm +{ + /// @addtogroup core_func_common + /// @{ + + /// Returns x if x >= 0; otherwise, it returns -x. + /// + /// @tparam genType floating-point or signed integer; scalar or vector types. + /// + /// @see GLSL abs man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType abs(genType const & x); + + /// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. + /// + /// @tparam genType Floating-point or signed integer; scalar or vector types. + /// + /// @see GLSL sign man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType sign(genType const & x); + + /// Returns a value equal to the nearest integer that is less then or equal to x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL floor man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType floor(genType const & x); + + /// Returns a value equal to the nearest integer to x + /// whose absolute value is not larger than the absolute value of x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL trunc man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType trunc(genType const & x); + + /// Returns a value equal to the nearest integer to x. + /// The fraction 0.5 will round in a direction chosen by the + /// implementation, presumably the direction that is fastest. + /// This includes the possibility that round(x) returns the + /// same value as roundEven(x) for all values of x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL round man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType round(genType const & x); + + /// Returns a value equal to the nearest integer to x. + /// A fractional part of 0.5 will round toward the nearest even + /// integer. (Both 3.5 and 4.5 for x will return 4.0.) + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL roundEven man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + /// @see New round to even technique + template + GLM_FUNC_DECL genType roundEven(genType const & x); + + /// Returns a value equal to the nearest integer + /// that is greater than or equal to x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL ceil man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType ceil(genType const & x); + + /// Return x - floor(x). + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL fract man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType fract(genType const & x); + + /// Modulus. Returns x - y * floor(x / y) + /// for each component in x using the floating point value y. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL mod man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType mod( + genType const & x, + genType const & y); + + /// Modulus. Returns x - y * floor(x / y) + /// for each component in x using the floating point value y. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL mod man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType mod( + genType const & x, + typename genType::value_type const & y); + + /// Returns the fractional part of x and sets i to the integer + /// part (as a whole number floating point value). Both the + /// return value and the output parameter will have the same + /// sign as x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL modf man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType modf( + genType const & x, + genType & i); + + /// Returns y if y < x; otherwise, it returns x. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see GLSL min man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions<<<<<<< HEAD + template + GLM_FUNC_DECL genType min( + genType const & x, + genType const & y); + + template + GLM_FUNC_DECL genType min( + genType const & x, + typename genType::value_type const & y); + + /// Returns y if x < y; otherwise, it returns x. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see GLSL max man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType max( + genType const & x, + genType const & y); + + template + GLM_FUNC_DECL genType max( + genType const & x, + typename genType::value_type const & y); + + /// Returns min(max(x, minVal), maxVal) for each component in x + /// using the floating-point values minVal and maxVal. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see GLSL clamp man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType clamp( + genType const & x, + genType const & minVal, + genType const & maxVal); + + template + GLM_FUNC_DECL genType clamp( + genType const & x, + typename genType::value_type const & minVal, + typename genType::value_type const & maxVal); + + /// If genTypeU is a floating scalar or vector: + /// Returns x * (1.0 - a) + y * a, i.e., the linear blend of + /// x and y using the floating-point value a. + /// The value for a is not restricted to the range [0, 1]. + /// + /// If genTypeU is a boolean scalar or vector: + /// Selects which vector each returned component comes + /// from. For a component of that is false, the + /// corresponding component of x is returned. For a + /// component of a that is true, the corresponding + /// component of y is returned. Components of x and y that + /// are not selected are allowed to be invalid floating point + /// values and will have no effect on the results. Thus, this + /// provides different functionality than + /// genType mix(genType x, genType y, genType(a)) + /// where a is a Boolean vector. + /// + /// @see GLSL mix man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + /// + /// @param[in] x Value to interpolate. + /// @param[in] y Value to interpolate. + /// @param[in] a Interpolant. + /// + /// @tparam genTypeT Floating point scalar or vector. + /// @tparam genTypeU Floating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT. + /// + /// @code + /// #include + /// ... + /// float a; + /// bool b; + /// glm::dvec3 e; + /// glm::dvec3 f; + /// glm::vec4 g; + /// glm::vec4 h; + /// ... + /// glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors. + /// glm::vec4 s = glm::mix(g, h, b); // Teturns g or h; + /// glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second. + /// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter. + /// @endcode + template class vecType> + GLM_FUNC_DECL vecType mix( + vecType const & x, + vecType const & y, + vecType const & a); + + template class vecType> + GLM_FUNC_DECL vecType mix( + vecType const & x, + vecType const & y, + U const & a); + + template + GLM_FUNC_DECL genTypeT mix( + genTypeT const & x, + genTypeT const & y, + genTypeU const & a); + + /// Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType. + /// + /// @see GLSL step man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType step( + genType const & edge, + genType const & x); + + /// Returns 0.0 if x < edge, otherwise it returns 1.0. + /// + /// @see GLSL step man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template