mirror of
https://github.com/libretro/RetroArch
synced 2025-02-21 18:40:09 +00:00
Merge pull request #7037 from RetroSven/master
add an option to auto-apply cheats whenever they are toggled on/off
This commit is contained in:
commit
03854a0da1
@ -526,6 +526,9 @@ static const bool framecount_show = true;
|
|||||||
* depending on the save state buffer. */
|
* depending on the save state buffer. */
|
||||||
static const bool rewind_enable = false;
|
static const bool rewind_enable = false;
|
||||||
|
|
||||||
|
/* When set, any time a cheat is toggled it is immediately applied. */
|
||||||
|
static const bool apply_cheats_after_toggle = false;
|
||||||
|
|
||||||
/* The buffer size for the rewind buffer. This needs to be about
|
/* The buffer size for the rewind buffer. This needs to be about
|
||||||
* 15-20MB per minute. Very game dependant. */
|
* 15-20MB per minute. Very game dependant. */
|
||||||
static const unsigned rewind_buffer_size = 20 << 20; /* 20MiB */
|
static const unsigned rewind_buffer_size = 20 << 20; /* 20MiB */
|
||||||
|
@ -1280,6 +1280,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
|
|||||||
SETTING_BOOL("ui_menubar_enable", &settings->bools.ui_menubar_enable, true, true, false);
|
SETTING_BOOL("ui_menubar_enable", &settings->bools.ui_menubar_enable, true, true, false);
|
||||||
SETTING_BOOL("suspend_screensaver_enable", &settings->bools.ui_suspend_screensaver_enable, true, true, false);
|
SETTING_BOOL("suspend_screensaver_enable", &settings->bools.ui_suspend_screensaver_enable, true, true, false);
|
||||||
SETTING_BOOL("rewind_enable", &settings->bools.rewind_enable, true, rewind_enable, false);
|
SETTING_BOOL("rewind_enable", &settings->bools.rewind_enable, true, rewind_enable, false);
|
||||||
|
SETTING_BOOL("apply_cheats_after_toggle", &settings->bools.apply_cheats_after_toggle, true, apply_cheats_after_toggle, false);
|
||||||
SETTING_BOOL("run_ahead_enabled", &settings->bools.run_ahead_enabled, true, false, false);
|
SETTING_BOOL("run_ahead_enabled", &settings->bools.run_ahead_enabled, true, false, false);
|
||||||
SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, false, false);
|
SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, false, false);
|
||||||
SETTING_BOOL("run_ahead_hide_warnings", &settings->bools.run_ahead_hide_warnings, true, false, false);
|
SETTING_BOOL("run_ahead_hide_warnings", &settings->bools.run_ahead_hide_warnings, true, false, false);
|
||||||
|
@ -239,6 +239,7 @@ typedef struct settings
|
|||||||
bool playlist_entry_remove;
|
bool playlist_entry_remove;
|
||||||
bool playlist_entry_rename;
|
bool playlist_entry_rename;
|
||||||
bool rewind_enable;
|
bool rewind_enable;
|
||||||
|
bool apply_cheats_after_toggle;
|
||||||
bool run_ahead_enabled;
|
bool run_ahead_enabled;
|
||||||
bool run_ahead_secondary_instance;
|
bool run_ahead_secondary_instance;
|
||||||
bool run_ahead_hide_warnings;
|
bool run_ahead_hide_warnings;
|
||||||
|
@ -937,6 +937,8 @@ MSG_HASH(MENU_ENUM_LABEL_INPUT_META_REWIND,
|
|||||||
"input_meta_rewind")
|
"input_meta_rewind")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_REWIND_ENABLE,
|
MSG_HASH(MENU_ENUM_LABEL_REWIND_ENABLE,
|
||||||
"rewind_enable")
|
"rewind_enable")
|
||||||
|
MSG_HASH(MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE,
|
||||||
|
"cheat_apply_after_toggle")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_REWIND_GRANULARITY,
|
MSG_HASH(MENU_ENUM_LABEL_REWIND_GRANULARITY,
|
||||||
"rewind_granularity")
|
"rewind_granularity")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_REWIND_BUFFER_SIZE,
|
MSG_HASH(MENU_ENUM_LABEL_REWIND_BUFFER_SIZE,
|
||||||
@ -945,6 +947,8 @@ MSG_HASH(MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP,
|
|||||||
"rewind_buffer_size_step")
|
"rewind_buffer_size_step")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_REWIND_SETTINGS,
|
MSG_HASH(MENU_ENUM_LABEL_REWIND_SETTINGS,
|
||||||
"rewind_settings")
|
"rewind_settings")
|
||||||
|
MSG_HASH(MENU_ENUM_LABEL_CHEAT_SETTINGS,
|
||||||
|
"cheat_settings")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY,
|
MSG_HASH(MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY,
|
||||||
"rgui_browser_directory")
|
"rgui_browser_directory")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_RGUI_CONFIG_DIRECTORY,
|
MSG_HASH(MENU_ENUM_LABEL_RGUI_CONFIG_DIRECTORY,
|
||||||
|
@ -1181,6 +1181,10 @@ int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len)
|
|||||||
"This will take a performance hit, \n"
|
"This will take a performance hit, \n"
|
||||||
"so it is disabled by default.");
|
"so it is disabled by default.");
|
||||||
break;
|
break;
|
||||||
|
case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE:
|
||||||
|
snprintf(s, len,
|
||||||
|
"Apply cheat immediately after toggling.");
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_LIBRETRO_DIR_PATH:
|
case MENU_ENUM_LABEL_LIBRETRO_DIR_PATH:
|
||||||
snprintf(s, len,
|
snprintf(s, len,
|
||||||
"Core Directory. \n"
|
"Core Directory. \n"
|
||||||
|
@ -1395,6 +1395,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS,
|
|||||||
"Achievements")
|
"Achievements")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_ENABLE,
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_ENABLE,
|
||||||
"Rewind Enable")
|
"Rewind Enable")
|
||||||
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_TOGGLE,
|
||||||
|
"Apply After Toggle")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY,
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY,
|
||||||
"Rewind Granularity")
|
"Rewind Granularity")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE,
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE,
|
||||||
@ -1403,6 +1405,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP,
|
|||||||
"Rewind Buffer Size Step (MB)")
|
"Rewind Buffer Size Step (MB)")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS,
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS,
|
||||||
"Rewind")
|
"Rewind")
|
||||||
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_CHEAT_SETTINGS,
|
||||||
|
"Cheat Settings")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CHEAT_DETAILS_SETTINGS,
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_CHEAT_DETAILS_SETTINGS,
|
||||||
"Cheat Details")
|
"Cheat Details")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_SETTINGS,
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_SETTINGS,
|
||||||
@ -2822,6 +2826,10 @@ MSG_HASH(
|
|||||||
MENU_ENUM_SUBLABEL_REWIND_ENABLE,
|
MENU_ENUM_SUBLABEL_REWIND_ENABLE,
|
||||||
"Enable rewinding. This will take a performance hit when playing."
|
"Enable rewinding. This will take a performance hit when playing."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_TOGGLE,
|
||||||
|
"Apply cheat immediately after toggling."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_REWIND_GRANULARITY,
|
MENU_ENUM_SUBLABEL_REWIND_GRANULARITY,
|
||||||
"When rewinding a defined number of frames, you can rewind several frames at a time, increasing the rewind speed."
|
"When rewinding a defined number of frames, you can rewind several frames at a time, increasing the rewind speed."
|
||||||
|
@ -494,6 +494,15 @@ void cheat_manager_toggle_index(unsigned i)
|
|||||||
|
|
||||||
cheat_manager_state.cheats[i].state = !cheat_manager_state.cheats[i].state;
|
cheat_manager_state.cheats[i].state = !cheat_manager_state.cheats[i].state;
|
||||||
cheat_manager_update(&cheat_manager_state, i);
|
cheat_manager_update(&cheat_manager_state, i);
|
||||||
|
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
if ( !settings )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
if ( settings->bools.apply_cheats_after_toggle )
|
||||||
|
cheat_manager_apply_cheats();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cheat_manager_toggle(void)
|
void cheat_manager_toggle(void)
|
||||||
|
@ -206,6 +206,7 @@ default_sublabel_macro(action_bind_sublabel_run_ahead_secondary_instance, MENU_
|
|||||||
default_sublabel_macro(action_bind_sublabel_run_ahead_hide_warnings, MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS)
|
default_sublabel_macro(action_bind_sublabel_run_ahead_hide_warnings, MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS)
|
||||||
default_sublabel_macro(action_bind_sublabel_run_ahead_frames, MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES)
|
default_sublabel_macro(action_bind_sublabel_run_ahead_frames, MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES)
|
||||||
default_sublabel_macro(action_bind_sublabel_rewind, MENU_ENUM_SUBLABEL_REWIND_ENABLE)
|
default_sublabel_macro(action_bind_sublabel_rewind, MENU_ENUM_SUBLABEL_REWIND_ENABLE)
|
||||||
|
default_sublabel_macro(action_bind_sublabel_cheat_apply_after_toggle, MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_TOGGLE)
|
||||||
default_sublabel_macro(action_bind_sublabel_rewind_granularity, MENU_ENUM_SUBLABEL_REWIND_GRANULARITY)
|
default_sublabel_macro(action_bind_sublabel_rewind_granularity, MENU_ENUM_SUBLABEL_REWIND_GRANULARITY)
|
||||||
default_sublabel_macro(action_bind_sublabel_rewind_buffer_size, MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE)
|
default_sublabel_macro(action_bind_sublabel_rewind_buffer_size, MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE)
|
||||||
default_sublabel_macro(action_bind_sublabel_rewind_buffer_size_step, MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE_STEP)
|
default_sublabel_macro(action_bind_sublabel_rewind_buffer_size_step, MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE_STEP)
|
||||||
@ -1392,6 +1393,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
|||||||
case MENU_ENUM_LABEL_REWIND_ENABLE:
|
case MENU_ENUM_LABEL_REWIND_ENABLE:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_rewind);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_rewind);
|
||||||
break;
|
break;
|
||||||
|
case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheat_apply_after_toggle);
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_REWIND_GRANULARITY:
|
case MENU_ENUM_LABEL_REWIND_GRANULARITY:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_rewind_granularity);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_rewind_granularity);
|
||||||
break;
|
break;
|
||||||
|
@ -3157,7 +3157,7 @@ static unsigned menu_displaylist_parse_options(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int menu_displaylist_parse_options_cheats(
|
static int menu_displaylist_parse_options_cheats(
|
||||||
menu_displaylist_info_t *info)
|
menu_displaylist_info_t *info, menu_handle_t *menu)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
@ -3204,6 +3204,9 @@ static int menu_displaylist_parse_options_cheats(
|
|||||||
msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_DELETE_ALL),
|
msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_DELETE_ALL),
|
||||||
MENU_ENUM_LABEL_CHEAT_DELETE_ALL,
|
MENU_ENUM_LABEL_CHEAT_DELETE_ALL,
|
||||||
MENU_SETTING_ACTION, 0, 0);
|
MENU_SETTING_ACTION, 0, 0);
|
||||||
|
menu_displaylist_parse_settings_enum(menu, info,
|
||||||
|
MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE,
|
||||||
|
PARSE_ONLY_BOOL, false);
|
||||||
menu_entries_append_enum(info->list,
|
menu_entries_append_enum(info->list,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_CHANGES),
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_CHANGES),
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_APPLY_CHANGES),
|
msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_APPLY_CHANGES),
|
||||||
@ -6868,7 +6871,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||||||
break;
|
break;
|
||||||
case DISPLAYLIST_OPTIONS_CHEATS:
|
case DISPLAYLIST_OPTIONS_CHEATS:
|
||||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||||
ret = menu_displaylist_parse_options_cheats(info);
|
ret = menu_displaylist_parse_options_cheats(info, menu);
|
||||||
|
|
||||||
info->need_push = true;
|
info->need_push = true;
|
||||||
break;
|
break;
|
||||||
|
@ -105,7 +105,7 @@ enum settings_list_type
|
|||||||
SETTINGS_LIST_REWIND,
|
SETTINGS_LIST_REWIND,
|
||||||
SETTINGS_LIST_CHEAT_DETAILS,
|
SETTINGS_LIST_CHEAT_DETAILS,
|
||||||
SETTINGS_LIST_CHEAT_SEARCH,
|
SETTINGS_LIST_CHEAT_SEARCH,
|
||||||
SETTINGS_LIST_CHEAT_MATCHES,
|
SETTINGS_LIST_CHEATS,
|
||||||
SETTINGS_LIST_VIDEO,
|
SETTINGS_LIST_VIDEO,
|
||||||
SETTINGS_LIST_AUDIO,
|
SETTINGS_LIST_AUDIO,
|
||||||
SETTINGS_LIST_INPUT,
|
SETTINGS_LIST_INPUT,
|
||||||
@ -3295,6 +3295,33 @@ static bool setting_append_list(
|
|||||||
END_SUB_GROUP(list, list_info, parent_group);
|
END_SUB_GROUP(list, list_info, parent_group);
|
||||||
END_GROUP(list, list_info, parent_group);
|
END_GROUP(list, list_info, parent_group);
|
||||||
break;
|
break;
|
||||||
|
case SETTINGS_LIST_CHEATS:
|
||||||
|
{
|
||||||
|
START_GROUP(list, list_info, &group_info, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CHEAT_SETTINGS), parent_group);
|
||||||
|
|
||||||
|
parent_group = msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SETTINGS);
|
||||||
|
|
||||||
|
START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group);
|
||||||
|
|
||||||
|
CONFIG_BOOL(
|
||||||
|
list, list_info,
|
||||||
|
&settings->bools.apply_cheats_after_toggle,
|
||||||
|
MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE,
|
||||||
|
MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_TOGGLE,
|
||||||
|
rewind_enable,
|
||||||
|
MENU_ENUM_LABEL_VALUE_OFF,
|
||||||
|
MENU_ENUM_LABEL_VALUE_ON,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler,
|
||||||
|
SD_FLAG_CMD_APPLY_AUTO);
|
||||||
|
|
||||||
|
END_SUB_GROUP(list, list_info, parent_group);
|
||||||
|
END_GROUP(list, list_info, parent_group);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case SETTINGS_LIST_CHEAT_DETAILS:
|
case SETTINGS_LIST_CHEAT_DETAILS:
|
||||||
{
|
{
|
||||||
int max_bit_position;
|
int max_bit_position;
|
||||||
@ -8770,7 +8797,7 @@ static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_inf
|
|||||||
SETTINGS_LIST_REWIND,
|
SETTINGS_LIST_REWIND,
|
||||||
SETTINGS_LIST_CHEAT_DETAILS,
|
SETTINGS_LIST_CHEAT_DETAILS,
|
||||||
SETTINGS_LIST_CHEAT_SEARCH,
|
SETTINGS_LIST_CHEAT_SEARCH,
|
||||||
SETTINGS_LIST_CHEAT_MATCHES,
|
SETTINGS_LIST_CHEATS,
|
||||||
SETTINGS_LIST_VIDEO,
|
SETTINGS_LIST_VIDEO,
|
||||||
SETTINGS_LIST_AUDIO,
|
SETTINGS_LIST_AUDIO,
|
||||||
SETTINGS_LIST_INPUT,
|
SETTINGS_LIST_INPUT,
|
||||||
|
@ -1311,6 +1311,7 @@ enum msg_hash_enums
|
|||||||
|
|
||||||
MENU_LABEL(FASTFORWARD_RATIO),
|
MENU_LABEL(FASTFORWARD_RATIO),
|
||||||
MENU_LABEL(REWIND_ENABLE),
|
MENU_LABEL(REWIND_ENABLE),
|
||||||
|
MENU_LABEL(CHEAT_APPLY_AFTER_TOGGLE),
|
||||||
|
|
||||||
MENU_ENUM_LABEL_ENABLE_HOTKEY,
|
MENU_ENUM_LABEL_ENABLE_HOTKEY,
|
||||||
MENU_ENUM_LABEL_DISK_EJECT_TOGGLE,
|
MENU_ENUM_LABEL_DISK_EJECT_TOGGLE,
|
||||||
@ -1584,6 +1585,7 @@ enum msg_hash_enums
|
|||||||
MENU_LABEL(RECORDING_SETTINGS),
|
MENU_LABEL(RECORDING_SETTINGS),
|
||||||
MENU_LABEL(OVERLAY_SETTINGS),
|
MENU_LABEL(OVERLAY_SETTINGS),
|
||||||
MENU_LABEL(REWIND_SETTINGS),
|
MENU_LABEL(REWIND_SETTINGS),
|
||||||
|
MENU_LABEL(CHEAT_SETTINGS),
|
||||||
MENU_LABEL(CHEAT_DETAILS_SETTINGS),
|
MENU_LABEL(CHEAT_DETAILS_SETTINGS),
|
||||||
MENU_LABEL(CHEAT_SEARCH_SETTINGS),
|
MENU_LABEL(CHEAT_SEARCH_SETTINGS),
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user