diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index 4bfce535e3..6cf20a0473 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -2128,13 +2128,13 @@ static void menu_common_setting_set_current_path_selection(rarch_setting_t *sett setting->change_handler(setting); } -static void menu_common_setting_set_current_fraction(rarch_setting_t *setting, float step, unsigned action, +static void menu_common_setting_set_current_fraction(rarch_setting_t *setting, unsigned action, bool enforce_min_check, bool enforce_max_check) { switch (action) { case MENU_ACTION_LEFT: - *setting->value.fraction = *setting->value.fraction - step; + *setting->value.fraction = *setting->value.fraction - setting->step; if (enforce_min_check) { @@ -2145,7 +2145,7 @@ static void menu_common_setting_set_current_fraction(rarch_setting_t *setting, f case MENU_ACTION_RIGHT: case MENU_ACTION_OK: - *setting->value.fraction = *setting->value.fraction + step; + *setting->value.fraction = *setting->value.fraction + setting->step; if (enforce_max_check) { @@ -2163,14 +2163,14 @@ static void menu_common_setting_set_current_fraction(rarch_setting_t *setting, f setting->change_handler(setting); } -static void menu_common_setting_set_current_unsigned_integer(rarch_setting_t *setting, unsigned step, unsigned action, +static void menu_common_setting_set_current_unsigned_integer(rarch_setting_t *setting, unsigned action, bool enforce_min_check, bool enforce_max_check) { switch (action) { case MENU_ACTION_LEFT: if (*setting->value.unsigned_integer != setting->min) - *setting->value.unsigned_integer = *setting->value.unsigned_integer - step; + *setting->value.unsigned_integer = *setting->value.unsigned_integer - setting->step; if (enforce_min_check) { @@ -2181,7 +2181,7 @@ static void menu_common_setting_set_current_unsigned_integer(rarch_setting_t *se case MENU_ACTION_RIGHT: case MENU_ACTION_OK: - *setting->value.unsigned_integer = *setting->value.unsigned_integer + step; + *setting->value.unsigned_integer = *setting->value.unsigned_integer + setting->step; if (enforce_max_check) { @@ -3408,7 +3408,7 @@ static int menu_common_setting_set(unsigned id, unsigned action, rarch_setting_t case MENU_CONTENT_HISTORY_SIZE: case MENU_SETTINGS_NETPLAY_DELAY_FRAMES: if (setting) - menu_common_setting_set_current_unsigned_integer(setting, 1, action, true, false); + menu_common_setting_set_current_unsigned_integer(setting, action, true, false); break; case MENU_SETTINGS_LIBRETRO_LOG_LEVEL: case MENU_SETTINGS_USER_LANGUAGE: @@ -3417,11 +3417,11 @@ static int menu_common_setting_set(unsigned id, unsigned action, rarch_setting_t case MENU_SETTINGS_VIDEO_SWAP_INTERVAL: case MENU_SETTINGS_VIDEO_HARD_SYNC_FRAMES: if (setting) - menu_common_setting_set_current_unsigned_integer(setting, 1, action, true, true); + menu_common_setting_set_current_unsigned_integer(setting, action, true, true); break; case MENU_SETTINGS_VIDEO_MONITOR_INDEX: if (setting) - menu_common_setting_set_current_unsigned_integer(setting, 1, action, false, false); + menu_common_setting_set_current_unsigned_integer(setting, action, false, false); break; #if defined(HAVE_THREADS) case MENU_SETTINGS_SRAM_AUTOSAVE: @@ -3526,25 +3526,16 @@ static int menu_common_setting_set(unsigned id, unsigned action, rarch_setting_t case MENU_SETTINGS_OVERLAY_OPACITY: case MENU_SETTINGS_OVERLAY_SCALE: if (setting) - menu_common_setting_set_current_fraction(setting, 0.1f, action, true, true); + menu_common_setting_set_current_fraction(setting, action, true, true); break; case MENU_SETTINGS_SLOWMOTION_RATIO: - if (setting) - menu_common_setting_set_current_fraction(setting, 0.1f, action, false, false); - break; case MENU_SETTINGS_INPUT_AXIS_THRESHOLD: - if (setting) - menu_common_setting_set_current_fraction(setting, 0.01f, action, false, false); - break; case MENU_SETTINGS_VIDEO_WINDOW_SCALE_X: case MENU_SETTINGS_VIDEO_WINDOW_SCALE_Y: case MENU_SETTINGS_FONT_SIZE: - if (setting) - menu_common_setting_set_current_fraction(setting, 1.0f, action, false, false); - break; case MENU_SETTINGS_VIDEO_REFRESH_RATE: if (setting) - menu_common_setting_set_current_fraction(setting, 0.001f, action, false, false); + menu_common_setting_set_current_fraction(setting, action, false, false); break; case MENU_SETTINGS_DISK_INDEX: { diff --git a/settings_data.c b/settings_data.c index 48583096ff..0057d842d7 100644 --- a/settings_data.c +++ b/settings_data.c @@ -1434,9 +1434,10 @@ static void general_write_handler(const void *data) #define WITH_FLAGS(FLAGS) (list[index - 1]).flags |= FLAGS; -#define WITH_RANGE(MIN, MAX) \ +#define WITH_RANGE(MIN, MAX, STEP) \ (list[index - 1]).min = MIN; \ -(list[index - 1]).max = MAX; \ + (list[index - 1]).step = STEP; \ + (list[index - 1]).max = MAX; \ WITH_FLAGS(SD_FLAG_HAS_RANGE) #define WITH_VALUES(VALUES) (list[index -1]).values = VALUES; @@ -1501,7 +1502,7 @@ rarch_setting_t* setting_data_get_list(void) START_GROUP("General Options") START_SUB_GROUP("General Options") CONFIG_BOOL(g_extern.verbosity, "log_verbosity", "Logging Verbosity", false, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_UINT(g_settings.libretro_log_level, "libretro_log_level", "Libretro Logging Level", libretro_log_level, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 3) + CONFIG_UINT(g_settings.libretro_log_level, "libretro_log_level", "Libretro Logging Level", libretro_log_level, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 3, 1.0) CONFIG_BOOL(g_extern.perfcnt_enable, "perfcnt_enable", "Performance Counters", false, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_extern.config_save_on_exit, "config_save_on_exit", "Configuration Save On Exit", config_save_on_exit, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_settings.core_specific_config, "core_specific_config", "Configuration Per-Core", default_core_specific_config, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) @@ -1509,15 +1510,15 @@ rarch_setting_t* setting_data_get_list(void) CONFIG_BOOL(g_settings.fps_show, "fps_show", "Show Framerate", fps_show, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_settings.rewind_enable, "rewind_enable", "Rewind", rewind_enable, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) //CONFIG_SIZE(g_settings.rewind_buffer_size, "rewind_buffer_size", "Rewind Buffer Size", rewind_buffer_size, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_UINT(g_settings.rewind_granularity, "rewind_granularity", "Rewind Granularity", rewind_granularity, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(1, 32768) + CONFIG_UINT(g_settings.rewind_granularity, "rewind_granularity", "Rewind Granularity", rewind_granularity, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(1, 32768, 1) CONFIG_BOOL(g_settings.block_sram_overwrite, "block_sram_overwrite", "SRAM Block overwrite", block_sram_overwrite, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) #ifdef HAVE_THREADS CONFIG_UINT(g_settings.autosave_interval, "autosave_interval", "SRAM Autosave", autosave_interval, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) #endif CONFIG_BOOL(g_settings.video.disable_composition, "video_disable_composition", "Window Compositing", disable_composition, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_settings.pause_nonactive, "pause_nonactive", "Window Unfocus Pause", pause_nonactive, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_FLOAT(g_settings.fastforward_ratio, "fastforward_ratio", "Maximum Run Speed", fastforward_ratio, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(-1, 10) - CONFIG_FLOAT(g_settings.slowmotion_ratio, "slowmotion_ratio", "Slow-Motion Ratio", slowmotion_ratio, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 1) + CONFIG_FLOAT(g_settings.fastforward_ratio, "fastforward_ratio", "Maximum Run Speed", fastforward_ratio, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(-1, 10, 0.1) + CONFIG_FLOAT(g_settings.slowmotion_ratio, "slowmotion_ratio", "Slow-Motion Ratio", slowmotion_ratio, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 1, 0.1) CONFIG_BOOL(g_settings.savestate_auto_index, "savestate_auto_index", "Save State Auto Index", savestate_auto_index, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_settings.savestate_auto_save, "savestate_auto_save", "Auto Save State", savestate_auto_save, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_settings.savestate_auto_load, "savestate_auto_load", "Auto Load State", savestate_auto_load, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) @@ -1545,7 +1546,7 @@ rarch_setting_t* setting_data_get_list(void) CONFIG_BOOL(g_settings.video.windowed_fullscreen, "video_windowed_fullscreen", "Windowed Fullscreen Mode", windowed_fullscreen, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_UINT(g_settings.video.fullscreen_x, "video_fullscreen_x", "Fullscreen Width", fullscreen_x, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_UINT(g_settings.video.fullscreen_y, "video_fullscreen_y", "Fullscreen Height", fullscreen_y, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_FLOAT(g_settings.video.refresh_rate, "video_refresh_rate", "Refresh Rate", refresh_rate, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) + CONFIG_FLOAT(g_settings.video.refresh_rate, "video_refresh_rate", "Refresh Rate", refresh_rate, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 0, 0.001) CONFIG_FLOAT(g_settings.video.refresh_rate, "video_refresh_rate_auto", "Estimated Monitor FPS", refresh_rate, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) END_SUB_GROUP() @@ -1553,7 +1554,7 @@ rarch_setting_t* setting_data_get_list(void) CONFIG_BOOL(g_settings.video.force_aspect, "video_force_aspect", "Force aspect ratio", force_aspect, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_FLOAT(g_settings.video.aspect_ratio, "video_aspect_ratio", "Aspect Ratio", aspect_ratio, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_settings.video.aspect_ratio_auto, "video_aspect_ratio_auto", "Use Auto Aspect Ratio", aspect_ratio_auto, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_UINT(g_settings.video.aspect_ratio_idx, "aspect_ratio_index", "Aspect Ratio Index", aspect_ratio_idx, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, LAST_ASPECT_RATIO) + CONFIG_UINT(g_settings.video.aspect_ratio_idx, "aspect_ratio_index", "Aspect Ratio Index", aspect_ratio_idx, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, LAST_ASPECT_RATIO, 1) END_SUB_GROUP() START_SUB_GROUP("Scaling") @@ -1569,7 +1570,7 @@ rarch_setting_t* setting_data_get_list(void) CONFIG_UINT(g_extern.console.screen.viewports.custom_vp.height, "custom_viewport_height", "Custom Viewport Height", 0, GROUP_NAME, SUBGROUP_NAME, NULL, NULL) CONFIG_BOOL(g_settings.video.smooth, "video_smooth", "Use Bilinear Filtering", video_smooth, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_UINT(g_settings.video.rotation, "video_rotation", "Rotation", 0, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 3) + CONFIG_UINT(g_settings.video.rotation, "video_rotation", "Rotation", 0, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 3, 1) END_SUB_GROUP() @@ -1578,9 +1579,9 @@ rarch_setting_t* setting_data_get_list(void) CONFIG_BOOL(g_settings.video.threaded, "video_threaded", "Threaded Video", video_threaded, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) #endif CONFIG_BOOL(g_settings.video.vsync, "video_vsync", "VSync", vsync, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_UINT(g_settings.video.swap_interval, "video_swap_interval", "VSync Swap Interval", swap_interval, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(1, 4) + CONFIG_UINT(g_settings.video.swap_interval, "video_swap_interval", "VSync Swap Interval", swap_interval, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(1, 4, 1) CONFIG_BOOL(g_settings.video.hard_sync, "video_hard_sync", "Hard GPU Sync", hard_sync, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_UINT(g_settings.video.hard_sync_frames, "video_hard_sync_frames", "Hard GPU Sync Frames", hard_sync_frames, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 3) + CONFIG_UINT(g_settings.video.hard_sync_frames, "video_hard_sync_frames", "Hard GPU Sync Frames", hard_sync_frames, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 3, 1) #if !defined(RARCH_MOBILE) CONFIG_BOOL(g_settings.video.black_frame_insertion, "video_black_frame_insertion", "Black Frame Insertion", black_frame_insertion, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) #endif @@ -1709,8 +1710,8 @@ rarch_setting_t* setting_data_get_list(void) START_GROUP("Overlay Options") START_SUB_GROUP("State") CONFIG_PATH(g_settings.input.overlay, "input_overlay", "Overlay Preset", "", GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_FLAGS(SD_FLAG_ALLOW_EMPTY) WITH_VALUES("cfg") - CONFIG_FLOAT(g_settings.input.overlay_opacity, "input_overlay_opacity", "Overlay Opacity", 0.7f, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 1) - CONFIG_FLOAT(g_settings.input.overlay_scale, "input_overlay_scale", "Overlay Scale", 1.0f, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 2) + CONFIG_FLOAT(g_settings.input.overlay_opacity, "input_overlay_opacity", "Overlay Opacity", 0.7f, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 1, 0.1) + CONFIG_FLOAT(g_settings.input.overlay_scale, "input_overlay_scale", "Overlay Scale", 1.0f, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 2, 0.1) END_SUB_GROUP() END_GROUP() #endif @@ -1724,7 +1725,7 @@ rarch_setting_t* setting_data_get_list(void) CONFIG_BOOL(g_extern.netplay_enable, "netplay_enable", "Netplay Enable", false, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_extern.netplay_is_client, "netplay_mode", "Netplay Client Enable", false, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_extern.netplay_is_spectate, "netplay_spectator_mode_enable", "Netplay Spectator Enable", false, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_UINT(g_extern.netplay_sync_frames, "netplay_delay_frames", "Netplay Delay Frames", 0, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 10) + CONFIG_UINT(g_extern.netplay_sync_frames, "netplay_delay_frames", "Netplay Delay Frames", 0, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 10, 1) END_SUB_GROUP() END_GROUP() #endif @@ -1735,7 +1736,7 @@ rarch_setting_t* setting_data_get_list(void) START_GROUP("User Options") START_SUB_GROUP("State") CONFIG_PATH(g_settings.username, "netplay_nickname", "Username", "", GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) - CONFIG_UINT(g_settings.user_language, "user_language", "Language", def_user_language, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, RETRO_LANGUAGE_LAST-1) + CONFIG_UINT(g_settings.user_language, "user_language", "Language", def_user_language, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, RETRO_LANGUAGE_LAST-1, 1) END_SUB_GROUP() END_GROUP() @@ -1747,7 +1748,7 @@ rarch_setting_t* setting_data_get_list(void) #ifdef HAVE_MENU CONFIG_BOOL(g_settings.menu_show_start_screen, "rgui_show_start_screen", "Show Start Screen", menu_show_start_screen, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) #endif - CONFIG_UINT(g_settings.game_history_size, "game_history_size", "Content History Size", game_history_size, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 0) + CONFIG_UINT(g_settings.game_history_size, "game_history_size", "Content History Size", game_history_size, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 0, 1.0) END_SUB_GROUP() START_SUB_GROUP("Paths") #ifdef HAVE_MENU diff --git a/settings_data.h b/settings_data.h index eb14d860fb..1d85bcaeb2 100644 --- a/settings_data.h +++ b/settings_data.h @@ -93,6 +93,8 @@ typedef struct rarch_setting_t char* string; struct retro_keybind* keybind; } value; + + float step; } rarch_setting_t;