mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
Merge pull request #12078 from jdgleaver/core-options-reset
Add option to reset all core options for current core/content
This commit is contained in:
commit
5f5e11a0ba
@ -1286,6 +1286,10 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_CORE_OPTION_OVERRIDE_INFO,
|
||||
"core_option_override_info"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CORE_OPTIONS_RESET,
|
||||
"core_options_reset"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS_CREATE,
|
||||
"game_specific_options_create"
|
||||
|
@ -6248,7 +6248,7 @@ MSG_HASH(
|
||||
"Save or remove option overrides for the current content."
|
||||
)
|
||||
|
||||
/* Quick Menu > Options > Core Option Overrides */
|
||||
/* Quick Menu > Options > Manage Core Options */
|
||||
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_CORE_OPTIONS_CREATE,
|
||||
@ -6270,6 +6270,14 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CORE_OPTION_OVERRIDE_INFO,
|
||||
"Active Options File:"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CORE_OPTIONS_RESET,
|
||||
"Reset Options"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CORE_OPTIONS_RESET,
|
||||
"Set all core options to default values."
|
||||
)
|
||||
|
||||
/* - Legacy (unused) */
|
||||
MSG_HASH(
|
||||
@ -10676,6 +10684,10 @@ MSG_HASH(
|
||||
MSG_CORE_OPTIONS_FILE_REMOVED_SUCCESSFULLY,
|
||||
"Core options file removed successfully."
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_CORE_OPTIONS_RESET,
|
||||
"All core options reset to default."
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_COULD_NOT_FIND_ANY_NEXT_DRIVER,
|
||||
"Could not find any next driver"
|
||||
|
@ -5082,6 +5082,13 @@ static int action_ok_folder_specific_core_options_remove(const char *path,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_ok_core_options_reset(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
core_options_reset();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int action_ok_close_content(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
int ret;
|
||||
@ -8426,6 +8433,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
||||
case MENU_SETTING_ACTION_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE:
|
||||
BIND_ACTION_OK(cbs, action_ok_folder_specific_core_options_remove);
|
||||
break;
|
||||
case MENU_SETTING_ACTION_CORE_OPTIONS_RESET:
|
||||
BIND_ACTION_OK(cbs, action_ok_core_options_reset);
|
||||
break;
|
||||
case MENU_SETTING_ITEM_CORE_RESTORE_BACKUP:
|
||||
BIND_ACTION_OK(cbs, action_ok_core_restore_backup);
|
||||
break;
|
||||
|
@ -666,6 +666,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_shader_options,
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_input_remapping_options, MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_options, MENU_ENUM_SUBLABEL_CORE_OPTIONS)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_option_override_list, MENU_ENUM_SUBLABEL_CORE_OPTION_OVERRIDE_LIST)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_options_reset, MENU_ENUM_SUBLABEL_CORE_OPTIONS_RESET)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_show_advanced_settings, MENU_ENUM_SUBLABEL_SHOW_ADVANCED_SETTINGS)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_threaded_data_runloop_enable, MENU_ENUM_SUBLABEL_THREADED_DATA_RUNLOOP_ENABLE)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_playlist_entry_rename, MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME)
|
||||
@ -2490,6 +2491,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_CORE_OPTION_OVERRIDE_LIST:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_option_override_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CORE_OPTIONS_RESET:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_options_reset);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CORE_INPUT_REMAPPING_OPTIONS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_input_remapping_options);
|
||||
break;
|
||||
|
@ -9797,6 +9797,10 @@ static void materialui_list_insert(
|
||||
node->icon_texture_index = MUI_TEXTURE_LOAD_STATE;
|
||||
node->icon_type = MUI_ICON_TYPE_INTERNAL;
|
||||
break;
|
||||
case MENU_SETTING_ACTION_CORE_OPTIONS_RESET:
|
||||
node->icon_texture_index = MUI_TEXTURE_UNDO_SAVE_STATE;
|
||||
node->icon_type = MUI_ICON_TYPE_INTERNAL;
|
||||
break;
|
||||
case FILE_TYPE_RPL_ENTRY:
|
||||
case MENU_SETTING_DROPDOWN_ITEM:
|
||||
case MENU_SETTING_DROPDOWN_ITEM_RESOLUTION:
|
||||
|
@ -255,6 +255,8 @@ uintptr_t ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
||||
case MENU_ENUM_LABEL_GAME_SPECIFIC_CORE_OPTIONS_REMOVE:
|
||||
case MENU_ENUM_LABEL_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CLOSE];
|
||||
case MENU_ENUM_LABEL_CORE_OPTIONS_RESET:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_UNDO];
|
||||
case MENU_ENUM_LABEL_CORE_LOCK:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE];
|
||||
case MENU_ENUM_LABEL_ONSCREEN_DISPLAY_SETTINGS:
|
||||
|
@ -2700,6 +2700,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||
case MENU_ENUM_LABEL_GAME_SPECIFIC_CORE_OPTIONS_REMOVE:
|
||||
case MENU_ENUM_LABEL_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE:
|
||||
return xmb->textures.list[XMB_TEXTURE_CLOSE];
|
||||
case MENU_ENUM_LABEL_CORE_OPTIONS_RESET:
|
||||
return xmb->textures.list[XMB_TEXTURE_UNDO];
|
||||
case MENU_ENUM_LABEL_CORE_LOCK:
|
||||
return xmb->textures.list[XMB_TEXTURE_CORE];
|
||||
case MENU_ENUM_LABEL_ONSCREEN_DISPLAY_SETTINGS:
|
||||
|
@ -904,6 +904,8 @@ static unsigned menu_displaylist_parse_core_option_override_list(
|
||||
menu_displaylist_info_t *info)
|
||||
{
|
||||
unsigned count = 0;
|
||||
bool core_has_options = !rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL) &&
|
||||
rarch_ctl(RARCH_CTL_HAS_CORE_OPTIONS, NULL);
|
||||
bool game_options_active = rarch_ctl(RARCH_CTL_IS_GAME_OPTIONS_ACTIVE, NULL);
|
||||
bool folder_options_active = rarch_ctl(RARCH_CTL_IS_FOLDER_OPTIONS_ACTIVE, NULL);
|
||||
|
||||
@ -912,8 +914,7 @@ static unsigned menu_displaylist_parse_core_option_override_list(
|
||||
* - Core is 'dummy'
|
||||
* - Core has no options
|
||||
* - No content has been loaded */
|
||||
if (rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL) ||
|
||||
!rarch_ctl(RARCH_CTL_HAS_CORE_OPTIONS, NULL) ||
|
||||
if (!core_has_options ||
|
||||
string_is_empty(path_get(RARCH_PATH_CONTENT)))
|
||||
goto end;
|
||||
|
||||
@ -961,8 +962,17 @@ static unsigned menu_displaylist_parse_core_option_override_list(
|
||||
MENU_SETTING_ACTION_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE, 0, 0))
|
||||
count++;
|
||||
end:
|
||||
/* Reset core options */
|
||||
if (core_has_options)
|
||||
if (menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_OPTIONS_RESET),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_CORE_OPTIONS_RESET),
|
||||
MENU_ENUM_LABEL_CORE_OPTIONS_RESET,
|
||||
MENU_SETTING_ACTION_CORE_OPTIONS_RESET, 0, 0))
|
||||
count++;
|
||||
|
||||
/* Fallback, in case we open this menu while running
|
||||
* a content-less core */
|
||||
* a core without options */
|
||||
if (count == 0)
|
||||
if (menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND),
|
||||
|
@ -237,6 +237,7 @@ enum menu_settings_type
|
||||
MENU_SETTING_ACTION_GAME_SPECIFIC_CORE_OPTIONS_REMOVE,
|
||||
MENU_SETTING_ACTION_FOLDER_SPECIFIC_CORE_OPTIONS_CREATE,
|
||||
MENU_SETTING_ACTION_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE,
|
||||
MENU_SETTING_ACTION_CORE_OPTIONS_RESET,
|
||||
|
||||
MENU_SETTINGS_LAST
|
||||
};
|
||||
|
@ -356,6 +356,7 @@ enum msg_hash_enums
|
||||
MSG_ERROR_REMOVING_CORE_OPTIONS_FILE,
|
||||
MSG_CORE_OPTIONS_FILE_CREATED_SUCCESSFULLY,
|
||||
MSG_CORE_OPTIONS_FILE_REMOVED_SUCCESSFULLY,
|
||||
MSG_CORE_OPTIONS_RESET,
|
||||
MSG_DECOMPRESSION_ALREADY_IN_PROGRESS,
|
||||
MSG_DECOMPRESSION_FAILED,
|
||||
MSG_DISK_EJECTED,
|
||||
@ -1702,6 +1703,7 @@ enum msg_hash_enums
|
||||
MENU_LABEL(FOLDER_SPECIFIC_CORE_OPTIONS_CREATE),
|
||||
MENU_LABEL(FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE),
|
||||
MENU_LABEL(CORE_OPTION_OVERRIDE_INFO),
|
||||
MENU_LABEL(CORE_OPTIONS_RESET),
|
||||
|
||||
/* Legacy (unused)
|
||||
* > Cannot remove these because they are
|
||||
|
26
retroarch.c
26
retroarch.c
@ -39012,6 +39012,32 @@ error:
|
||||
return false;
|
||||
}
|
||||
|
||||
void core_options_reset(void)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
core_option_manager_t *coreopts = p_rarch->runloop_core_options;
|
||||
size_t i;
|
||||
|
||||
/* If there are no core options, there
|
||||
* is nothing to do */
|
||||
if (!coreopts || (coreopts->size < 1))
|
||||
return;
|
||||
|
||||
for (i = 0; i < coreopts->size; i++)
|
||||
coreopts->opts[i].index = coreopts->opts[i].default_index;
|
||||
|
||||
coreopts->updated = true;
|
||||
|
||||
#ifdef HAVE_CHEEVOS
|
||||
rcheevos_validate_config_settings();
|
||||
#endif
|
||||
|
||||
runloop_msg_queue_push(
|
||||
msg_hash_to_str(MSG_CORE_OPTIONS_RESET),
|
||||
1, 100, true,
|
||||
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
}
|
||||
|
||||
void menu_content_environment_get(int *argc, char *argv[],
|
||||
void *args, void *params_data)
|
||||
{
|
||||
|
@ -1995,6 +1995,7 @@ void *input_driver_init_wrap(input_driver_t *input, const char *name);
|
||||
/* Creates folder and core options stub file for subsequent runs */
|
||||
bool core_options_create_override(bool game_specific);
|
||||
bool core_options_remove_override(bool game_specific);
|
||||
void core_options_reset(void);
|
||||
|
||||
typedef enum apple_view_type
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user