diff --git a/config.def.h b/config.def.h index 0d62f33a50..4f576d8b5c 100644 --- a/config.def.h +++ b/config.def.h @@ -677,10 +677,7 @@ static const bool savestate_auto_load = false; static const float slowmotion_ratio = 3.0; /* Maximum fast forward ratio. */ -static const float fastforward_ratio = 1.0; - -/* Throttle fast forward. */ -static const bool fastforward_ratio_throttle_enable = false; +static const float fastforward_ratio = 0.0; /* Enable stdin/network command interface. */ static const bool network_cmd_enable = false; diff --git a/configuration.c b/configuration.c index a3e050fde6..2f5df1fa0a 100644 --- a/configuration.c +++ b/configuration.c @@ -538,7 +538,6 @@ static void config_set_defaults(void) settings->rewind_granularity = rewind_granularity; settings->slowmotion_ratio = slowmotion_ratio; settings->fastforward_ratio = fastforward_ratio; - settings->fastforward_ratio_throttle_enable = fastforward_ratio_throttle_enable; settings->pause_nonactive = pause_nonactive; settings->autosave_interval = autosave_interval; @@ -1599,11 +1598,8 @@ static bool config_load_file(const char *path, bool set_defaults) /* Sanitize fastforward_ratio value - previously range was -1 * and up (with 0 being skipped) */ - if (settings->fastforward_ratio <= 0.0f) - settings->fastforward_ratio = 1.0f; - - CONFIG_GET_BOOL_BASE(conf, settings, fastforward_ratio_throttle_enable, - "fastforward_ratio_throttle_enable"); + if (settings->fastforward_ratio < 0.0f) + settings->fastforward_ratio = 0.0f; CONFIG_GET_BOOL_BASE(conf, settings, pause_nonactive, "pause_nonactive"); CONFIG_GET_INT_BASE(conf, settings, autosave_interval, "autosave_interval"); @@ -2709,8 +2705,6 @@ bool config_save_file(const char *path) settings->history_list_enable); config_set_float(conf, "fastforward_ratio", settings->fastforward_ratio); - config_set_bool(conf, "fastforward_ratio_throttle_enable", - settings->fastforward_ratio_throttle_enable); config_set_float(conf, "slowmotion_ratio", settings->slowmotion_ratio); config_set_bool(conf, "config_save_on_exit", diff --git a/configuration.h b/configuration.h index bcaa6dc5cc..895d9a7f3b 100644 --- a/configuration.h +++ b/configuration.h @@ -314,7 +314,6 @@ typedef struct settings float slowmotion_ratio; float fastforward_ratio; - bool fastforward_ratio_throttle_enable; bool pause_nonactive; unsigned autosave_interval; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index ace64b95cf..987c732c73 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2932,20 +2932,6 @@ static bool setting_append_list_frame_throttling_options( START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); - CONFIG_BOOL( - settings->fastforward_ratio_throttle_enable, - menu_hash_to_str(MENU_LABEL_FRAME_THROTTLE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_FRAME_THROTTLE_ENABLE), - fastforward_ratio_throttle_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - group_info.name, - subgroup_info.name, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_SET_FRAME_LIMIT); - CONFIG_FLOAT( settings->fastforward_ratio, menu_hash_to_str(MENU_LABEL_FASTFORWARD_RATIO), @@ -2958,7 +2944,7 @@ static bool setting_append_list_frame_throttling_options( general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_SET_FRAME_LIMIT); - menu_settings_list_current_add_range(list, list_info, 1, 10, 1.0, true, true); + menu_settings_list_current_add_range(list, list_info, 0, 10, 1.0, true, true); CONFIG_FLOAT( settings->slowmotion_ratio, diff --git a/retroarch.cfg b/retroarch.cfg index 81cf46a2e5..8a9909fa3f 100644 --- a/retroarch.cfg +++ b/retroarch.cfg @@ -760,10 +760,8 @@ # The maximum rate at which content will be run when using fast forward. (E.g. 5.0 for 60 fps content => 300 fps cap). # RetroArch will go to sleep to ensure that the maximum rate will not be exceeded. # Do not rely on this cap to be perfectly accurate. -# fastforward_ratio = 1.0 - -# Setting this to false equals no FPS cap and will override the fastforward_ratio value. -# fastforward_ratio_throttle_enable = false +# If this is set at 0, then fastforward ratio is unlimited (no FPS cap) +# fastforward_ratio = 0.0 # Enable stdin/network command interface. # network_cmd_enable = false diff --git a/runloop.c b/runloop.c index 80279b4489..98782bd9f4 100644 --- a/runloop.c +++ b/runloop.c @@ -653,11 +653,11 @@ static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio, system->frame_time.callback(delta); } -static int rarch_limit_frame_time(settings_t *settings) +static int rarch_limit_frame_time(float fastforward_ratio) { retro_time_t current, target, to_sleep_ms; - if (!settings->fastforward_ratio_throttle_enable) + if (!fastforward_ratio) return 0; current = rarch_get_time_usec(); @@ -834,6 +834,9 @@ void rarch_main_set_frame_limit_last_time(void) struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); float fastforward_ratio = settings->fastforward_ratio; + if (fastforward_ratio == 0.0f) + fastforward_ratio = 1.0f; + frame_limit_last_time = rarch_get_time_usec(); frame_limit_minimum_time = (retro_time_t)roundf(1000000.0f / (av_info->timing.fps * fastforward_ratio)); } @@ -1083,7 +1086,7 @@ int rarch_main_iterate(void) if (!input && settings->menu.pause_libretro) return 1; - return rarch_limit_frame_time(settings); + return rarch_limit_frame_time(settings->fastforward_ratio); } #endif @@ -1149,5 +1152,5 @@ int rarch_main_iterate(void) unlock_autosave(); #endif - return rarch_limit_frame_time(settings); + return rarch_limit_frame_time(settings->fastforward_ratio); }