mirror of
https://github.com/libretro/RetroArch.git
synced 2025-01-18 23:04:25 +00:00
Refactor fastforward ratio
This commit is contained in:
parent
805e2ffde3
commit
1ec90df165
@ -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;
|
||||
|
@ -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",
|
||||
|
@ -314,7 +314,6 @@ typedef struct settings
|
||||
|
||||
float slowmotion_ratio;
|
||||
float fastforward_ratio;
|
||||
bool fastforward_ratio_throttle_enable;
|
||||
|
||||
bool pause_nonactive;
|
||||
unsigned autosave_interval;
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
11
runloop.c
11
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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user