From 26bcd42698c3af29c18f0aec576020f1e975ab73 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 20 Mar 2016 20:45:06 +0100 Subject: [PATCH] Cleanup menu_setting_new_internal --- menu/menu_setting.c | 7054 +++++++++++++++++++++---------------------- 1 file changed, 3382 insertions(+), 3672 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 3ce69077da..39cacb4d2a 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3079,6 +3079,152 @@ static void overlay_enable_toggle_change_handler(void *data) } #endif + +enum settings_list_type +{ + SETTINGS_LIST_NONE = 0, + SETTINGS_LIST_MAIN_MENU, + SETTINGS_LIST_DRIVERS, + SETTINGS_LIST_CORE, + SETTINGS_LIST_CONFIGURATION, + SETTINGS_LIST_LOGGING, + SETTINGS_LIST_SAVING, + SETTINGS_LIST_REWIND, + SETTINGS_LIST_VIDEO, + SETTINGS_LIST_AUDIO, + SETTINGS_LIST_INPUT, + SETTINGS_LIST_INPUT_HOTKEY, + SETTINGS_LIST_RECORDING, + SETTINGS_LIST_FRAME_THROTTLING, + SETTINGS_LIST_FONT, + SETTINGS_LIST_OVERLAY, + SETTINGS_LIST_MENU, + SETTINGS_LIST_MENU_FILE_BROWSER, + SETTINGS_LIST_MULTIMEDIA, + SETTINGS_LIST_USER_INTERFACE, + SETTINGS_LIST_PLAYLIST, + SETTINGS_LIST_CHEEVOS, + SETTINGS_LIST_CORE_UPDATER, + SETTINGS_LIST_NETPLAY, + SETTINGS_LIST_USER, + SETTINGS_LIST_USER_ACCOUNTS, + SETTINGS_LIST_USER_ACCOUNTS_CHEEVOS, + SETTINGS_LIST_DIRECTORY, + SETTINGS_LIST_PRIVACY +}; + +static bool setting_append_list_recording_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info, const char *parent_group) +{ + rarch_setting_group_info_t group_info = {0}; + rarch_setting_group_info_t subgroup_info = {0}; + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_RECORDING_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + recording_is_enabled(), + menu_hash_to_str(MENU_LABEL_RECORD_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_RECORD_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_PATH( + list, list_info, + global->record.config, + sizeof(global->record.config), + menu_hash_to_str(MENU_LABEL_RECORD_CONFIG), + menu_hash_to_str(MENU_LABEL_VALUE_RECORD_CONFIG), + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_values(list, list_info, "cfg"); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + + CONFIG_STRING( + list, list_info, + global->record.path, + sizeof(global->record.path), + menu_hash_to_str(MENU_LABEL_RECORD_PATH), + menu_hash_to_str(MENU_LABEL_VALUE_RECORD_PATH), + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + + CONFIG_BOOL( + list, list_info, + &global->record.use_output_dir, + menu_hash_to_str(MENU_LABEL_RECORD_USE_OUTPUT_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + END_SUB_GROUP(list, list_info, parent_group); + + START_SUB_GROUP(list, list_info, "Miscellaneous", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->video.post_filter_record, + menu_hash_to_str(MENU_LABEL_VIDEO_POST_FILTER_RECORD), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_POST_FILTER_RECORD), + post_filter_record, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->video.gpu_record, + menu_hash_to_str(MENU_LABEL_VIDEO_GPU_RECORD), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_GPU_RECORD), + gpu_record, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + + return true; +} + static bool setting_append_list_input_player_options( rarch_setting_t **list, rarch_setting_info_t *list_info, @@ -3316,14 +3462,6 @@ static bool setting_append_list_input_player_options( return true; } -enum settings_list_type -{ - SETTINGS_LIST_NONE = 0, - SETTINGS_LIST_MAIN_MENU, - SETTINGS_LIST_DRIVERS, - SETTINGS_LIST_CORE -}; - static bool setting_append_list( enum settings_list_type type, rarch_setting_t **list, @@ -3334,8 +3472,10 @@ static bool setting_append_list( rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); (void)settings; + (void)global; switch (type) { @@ -3804,6 +3944,3199 @@ static bool setting_append_list( general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_CONFIGURATION: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_CONFIGURATION_SETTINGS), parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, + parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->config_save_on_exit, + menu_hash_to_str(MENU_LABEL_CONFIG_SAVE_ON_EXIT), + menu_hash_to_str(MENU_LABEL_VALUE_CONFIG_SAVE_ON_EXIT), + config_save_on_exit, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->core_specific_config, + menu_hash_to_str(MENU_LABEL_CORE_SPECIFIC_CONFIG), + menu_hash_to_str(MENU_LABEL_VALUE_CORE_SPECIFIC_CONFIG), + default_core_specific_config, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->game_specific_options, + menu_hash_to_str(MENU_LABEL_GAME_SPECIFIC_OPTIONS), + menu_hash_to_str(MENU_LABEL_VALUE_GAME_SPECIFIC_OPTIONS), + default_game_specific_options, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + + CONFIG_BOOL( + list, list_info, + &settings->auto_overrides_enable, + menu_hash_to_str(MENU_LABEL_AUTO_OVERRIDES_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_AUTO_OVERRIDES_ENABLE), + default_auto_overrides_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->auto_remaps_enable, + menu_hash_to_str(MENU_LABEL_AUTO_REMAPS_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_AUTO_REMAPS_ENABLE), + default_auto_remaps_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_LOGGING: + { + bool *tmp_b = NULL; + START_GROUP(list, list_info, &group_info, menu_hash_to_str(MENU_LABEL_VALUE_LOGGING_SETTINGS), parent_group); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, + parent_group); + + CONFIG_BOOL( + list, list_info, + retro_main_verbosity(), + menu_hash_to_str(MENU_LABEL_LOG_VERBOSITY), + menu_hash_to_str(MENU_LABEL_VALUE_LOG_VERBOSITY), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_UINT( + list, list_info, + &settings->libretro_log_level, + menu_hash_to_str(MENU_LABEL_LIBRETRO_LOG_LEVEL), + menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_LOG_LEVEL), + libretro_log_level, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 3, 1.0, true, true); + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_libretro_log_level; + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_BOOL( + list, list_info, + &settings->debug_panel_enable, + menu_hash_to_str(MENU_LABEL_DEBUG_PANEL_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_DEBUG_PANEL_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + END_SUB_GROUP(list, list_info, parent_group); + + START_SUB_GROUP(list, list_info, "Performance Counters", &group_info, &subgroup_info, + parent_group); + + runloop_ctl(RUNLOOP_CTL_GET_PERFCNT, &tmp_b); + + CONFIG_BOOL( + list, list_info, + tmp_b, + menu_hash_to_str(MENU_LABEL_PERFCNT_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_PERFCNT_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + } + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_SAVING: + START_GROUP(list, list_info, &group_info, menu_hash_to_str(MENU_LABEL_VALUE_SAVING_SETTINGS), parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, + parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->sort_savefiles_enable, + menu_hash_to_str(MENU_LABEL_SORT_SAVEFILES_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_SORT_SAVEFILES_ENABLE), + default_sort_savefiles_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->sort_savestates_enable, + menu_hash_to_str(MENU_LABEL_SORT_SAVESTATES_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_SORT_SAVESTATES_ENABLE), + default_sort_savestates_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->block_sram_overwrite, + menu_hash_to_str(MENU_LABEL_BLOCK_SRAM_OVERWRITE), + menu_hash_to_str(MENU_LABEL_VALUE_BLOCK_SRAM_OVERWRITE), + block_sram_overwrite, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + +#ifdef HAVE_THREADS + CONFIG_UINT( + list, list_info, + &settings->autosave_interval, + menu_hash_to_str(MENU_LABEL_AUTOSAVE_INTERVAL), + menu_hash_to_str(MENU_LABEL_VALUE_AUTOSAVE_INTERVAL), + autosave_interval, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_AUTOSAVE_INIT); + menu_settings_list_current_add_range(list, list_info, 0, 0, 10, true, false); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_autosave_interval; +#endif + + CONFIG_BOOL( + list, list_info, + &settings->savestate_auto_index, + menu_hash_to_str(MENU_LABEL_SAVESTATE_AUTO_INDEX), + menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_AUTO_INDEX), + savestate_auto_index, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->savestate_auto_save, + menu_hash_to_str(MENU_LABEL_SAVESTATE_AUTO_SAVE), + menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_AUTO_SAVE), + savestate_auto_save, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->savestate_auto_load, + menu_hash_to_str(MENU_LABEL_SAVESTATE_AUTO_LOAD), + menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_AUTO_LOAD), + savestate_auto_load, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_REWIND: + START_GROUP(list, list_info, &group_info, menu_hash_to_str(MENU_LABEL_VALUE_REWIND_SETTINGS), parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + + CONFIG_BOOL( + list, list_info, + &settings->rewind_enable, + menu_hash_to_str(MENU_LABEL_REWIND_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_REWIND_ENABLE), + rewind_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REWIND_TOGGLE); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + +#if 0 + CONFIG_SIZE( + settings->rewind_buffer_size, + "rewind_buffer_size", + "Rewind Buffer Size", + rewind_buffer_size, + group_info, + subgroup_info, + parent_group, + general_write_handler, + general_read_handler) +#endif + CONFIG_UINT( + list, list_info, + &settings->rewind_granularity, + menu_hash_to_str(MENU_LABEL_REWIND_GRANULARITY), + menu_hash_to_str(MENU_LABEL_VALUE_REWIND_GRANULARITY), + rewind_granularity, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 1, 32768, 1, true, false); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_VIDEO: + START_GROUP(list, list_info, &group_info, menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SETTINGS), parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->ui.suspend_screensaver_enable, + menu_hash_to_str(MENU_LABEL_SUSPEND_SCREENSAVER_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->fps_show, + menu_hash_to_str(MENU_LABEL_FPS_SHOW), + menu_hash_to_str(MENU_LABEL_VALUE_FPS_SHOW), + fps_show, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Platform-specific", &group_info, &subgroup_info, parent_group); + + video_driver_menu_settings((void**)list, (void*)list_info, (void*)&group_info, (void*)&subgroup_info, parent_group); + + END_SUB_GROUP(list, list_info, parent_group); + + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Monitor", &group_info, &subgroup_info, parent_group); + + CONFIG_UINT( + list, list_info, + &settings->video.monitor_index, + menu_hash_to_str(MENU_LABEL_VIDEO_MONITOR_INDEX), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_MONITOR_INDEX), + monitor_index, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); + menu_settings_list_current_add_range(list, list_info, 0, 1, 1, true, false); + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_video_monitor_index; + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL)) + { + CONFIG_BOOL( + list, list_info, + &settings->video.fullscreen, + menu_hash_to_str(MENU_LABEL_VIDEO_FULLSCREEN), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FULLSCREEN), + fullscreen, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + } + if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL)) + { + CONFIG_BOOL( + list, list_info, + &settings->video.windowed_fullscreen, + menu_hash_to_str(MENU_LABEL_VIDEO_WINDOWED_FULLSCREEN), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN), + windowed_fullscreen, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + } + + CONFIG_FLOAT( + list, list_info, + &settings->video.refresh_rate, + menu_hash_to_str(MENU_LABEL_VIDEO_REFRESH_RATE), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_REFRESH_RATE), + refresh_rate, + "%.3f Hz", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 0, 0.001, true, false); + + CONFIG_FLOAT( + list, list_info, + &settings->video.refresh_rate, + menu_hash_to_str(MENU_LABEL_VIDEO_REFRESH_RATE_AUTO), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO), + refresh_rate, + "%.3f Hz", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].action_start = &setting_action_start_video_refresh_rate_auto; + (*list)[list_info->index - 1].action_ok = &setting_action_ok_video_refresh_rate_auto; + (*list)[list_info->index - 1].action_select = &setting_action_ok_video_refresh_rate_auto; + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_st_float_video_refresh_rate_auto; + + if (string_is_equal(settings->video.driver, "gl")) + { + CONFIG_BOOL( + list, list_info, + &settings->video.force_srgb_disable, + menu_hash_to_str(MENU_LABEL_VIDEO_FORCE_SRGB_DISABLE), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); + } + + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Aspect", &group_info, &subgroup_info, parent_group); + CONFIG_UINT( + list, list_info, + &settings->video.aspect_ratio_idx, + menu_hash_to_str(MENU_LABEL_VIDEO_ASPECT_RATIO_INDEX), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX), + aspect_ratio_idx, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd( + list, + list_info, + EVENT_CMD_VIDEO_SET_ASPECT_RATIO); + menu_settings_list_current_add_range( + list, + list_info, + 0, + LAST_ASPECT_RATIO, + 1, + true, + true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_aspect_ratio_index; + + CONFIG_INT( + list, list_info, + &settings->video_viewport_custom.x, + "video_viewport_custom_x", + "Custom Viewport X", + 0, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, -99999, 0, 1, false, false); + menu_settings_list_current_add_cmd( + list, + list_info, + EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); + + CONFIG_INT( + list, list_info, + &settings->video_viewport_custom.y, + "video_viewport_custom_y", + "Custom Viewport Y", + 0, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, -99999, 0, 1, false, false); + menu_settings_list_current_add_cmd( + list, + list_info, + EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); + + CONFIG_UINT( + list, list_info, + &settings->video_viewport_custom.width, + "video_viewport_custom_width", + "Custom Viewport Width", + 0, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 0, 1, true, false); + (*list)[list_info->index - 1].action_start = &setting_action_start_custom_viewport_width; + (*list)[list_info->index - 1].action_left = setting_uint_action_left_custom_viewport_width; + (*list)[list_info->index - 1].action_right = setting_uint_action_right_custom_viewport_width; + menu_settings_list_current_add_cmd( + list, + list_info, + EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); + + CONFIG_UINT( + list, list_info, + &settings->video_viewport_custom.height, + "video_viewport_custom_height", + "Custom Viewport Height", + 0, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 0, 1, true, false); + (*list)[list_info->index - 1].action_start = &setting_action_start_custom_viewport_height; + (*list)[list_info->index - 1].action_left = setting_uint_action_left_custom_viewport_height; + (*list)[list_info->index - 1].action_right = setting_uint_action_right_custom_viewport_height; + menu_settings_list_current_add_cmd( + list, + list_info, + EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); + + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Scaling", &group_info, &subgroup_info, parent_group); + + if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL)) + { + CONFIG_FLOAT( + list, list_info, + &settings->video.scale, + menu_hash_to_str(MENU_LABEL_VIDEO_SCALE), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SCALE), + scale, + "%.1fx", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 1.0, 10.0, 1.0, true, true); + } + + CONFIG_BOOL( + list, list_info, + &settings->video.scale_integer, + menu_hash_to_str(MENU_LABEL_VIDEO_SCALE_INTEGER), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SCALE_INTEGER), + scale_integer, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd( + list, + list_info, + EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); + +#ifdef GEKKO + CONFIG_UINT( + list, list_info, + &settings->video.viwidth, + menu_hash_to_str(MENU_LABEL_VIDEO_VI_WIDTH), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_VI_WIDTH), + video_viwidth, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 640, 720, 2, true, true); + + CONFIG_BOOL( + list, list_info, + &settings->video.vfilter, + menu_hash_to_str(MENU_LABEL_VIDEO_VFILTER), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_VFILTER), + video_vfilter, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); +#endif + + CONFIG_BOOL( + list, list_info, + &settings->video.smooth, + menu_hash_to_str(MENU_LABEL_VIDEO_SMOOTH), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SMOOTH), + video_smooth, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + + CONFIG_UINT( + list, list_info, + &settings->video.rotation, + menu_hash_to_str(MENU_LABEL_VIDEO_ROTATION), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_ROTATION), + 0, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_video_rotation; + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP( + list, + list_info, + "Synchronization", + &group_info, + &subgroup_info, + parent_group); + +#if defined(HAVE_THREADS) && !defined(RARCH_CONSOLE) + CONFIG_BOOL( + list, list_info, + &settings->video.threaded, + menu_hash_to_str(MENU_LABEL_VIDEO_THREADED), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_THREADED), + video_threaded, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); +#endif + + CONFIG_BOOL( + list, list_info, + &settings->video.vsync, + menu_hash_to_str(MENU_LABEL_VIDEO_VSYNC), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_VSYNC), + vsync, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_UINT( + list, list_info, + &settings->video.swap_interval, + menu_hash_to_str(MENU_LABEL_VIDEO_SWAP_INTERVAL), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SWAP_INTERVAL), + swap_interval, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_VIDEO_SET_BLOCKING_STATE); + menu_settings_list_current_add_range(list, list_info, 1, 4, 1, true, true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); + + CONFIG_BOOL( + list, list_info, + &settings->video.hard_sync, + menu_hash_to_str(MENU_LABEL_VIDEO_HARD_SYNC), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_HARD_SYNC), + hard_sync, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_UINT( + list, list_info, + &settings->video.hard_sync_frames, + menu_hash_to_str(MENU_LABEL_VIDEO_HARD_SYNC_FRAMES), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES), + hard_sync_frames, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_UINT( + list, list_info, + &settings->video.frame_delay, + menu_hash_to_str(MENU_LABEL_VIDEO_FRAME_DELAY), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FRAME_DELAY), + frame_delay, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 15, 1, true, true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + +#if !defined(RARCH_MOBILE) + CONFIG_BOOL( + list, list_info, + &settings->video.black_frame_insertion, + menu_hash_to_str(MENU_LABEL_VIDEO_BLACK_FRAME_INSERTION), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION), + black_frame_insertion, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); +#endif + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP( + list, + list_info, + "Miscellaneous", + &group_info, + &subgroup_info, + parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->video.gpu_screenshot, + menu_hash_to_str(MENU_LABEL_VIDEO_GPU_SCREENSHOT), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_GPU_SCREENSHOT), + gpu_screenshot, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_BOOL( + list, list_info, + &settings->video.allow_rotate, + menu_hash_to_str(MENU_LABEL_VIDEO_ALLOW_ROTATE), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_ALLOW_ROTATE), + allow_rotate, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_BOOL( + list, list_info, + &settings->video.crop_overscan, + menu_hash_to_str(MENU_LABEL_VIDEO_CROP_OVERSCAN), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_CROP_OVERSCAN), + crop_overscan, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + + CONFIG_PATH( + list, list_info, + settings->video.softfilter_plugin, + sizeof(settings->video.softfilter_plugin), + menu_hash_to_str(MENU_LABEL_VIDEO_FILTER), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FILTER), + settings->video.filter_dir, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_values(list, list_info, "filt"); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_AUDIO: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_SETTINGS), parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->audio.enable, + menu_hash_to_str(MENU_LABEL_AUDIO_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_ENABLE), + audio_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_BOOL( + list, list_info, + &settings->audio.mute_enable, + menu_hash_to_str(MENU_LABEL_AUDIO_MUTE), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_MUTE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_FLOAT( + list, list_info, + &settings->audio.volume, + menu_hash_to_str(MENU_LABEL_AUDIO_VOLUME), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_VOLUME), + audio_volume, + "%.1f", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, -80, 12, 1.0, true, true); + +#ifdef __CELLOS_LV2__ + CONFIG_BOOL( + list, list_info, + &global->console.sound.system_bgm_enable, + menu_hash_to_str(MENU_LABEL_SYSTEM_BGM_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_BGM_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); +#endif + + END_SUB_GROUP(list, list_info, parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP( + list, + list_info, + "Synchronization", + &group_info, + &subgroup_info, + parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->audio.sync, + menu_hash_to_str(MENU_LABEL_AUDIO_SYNC), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_SYNC), + audio_sync, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_UINT( + list, list_info, + &settings->audio.latency, + menu_hash_to_str(MENU_LABEL_AUDIO_LATENCY), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_LATENCY), + g_defaults.settings.out_latency ? + g_defaults.settings.out_latency : out_latency, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 8, 512, 16.0, true, true); + + CONFIG_FLOAT( + list, list_info, + &settings->audio.rate_control_delta, + menu_hash_to_str(MENU_LABEL_AUDIO_RATE_CONTROL_DELTA), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA), + rate_control_delta, + "%.3f", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range( + list, + list_info, + 0, + 0, + 0.001, + true, + false); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_FLOAT( + list, list_info, + &settings->audio.max_timing_skew, + menu_hash_to_str(MENU_LABEL_AUDIO_MAX_TIMING_SKEW), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW), + max_timing_skew, + "%.2f", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range( + list, + list_info, + 0.01, + 0.5, + 0.01, + true, + true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_UINT( + list, list_info, + &settings->audio.block_frames, + menu_hash_to_str(MENU_LABEL_AUDIO_BLOCK_FRAMES), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_BLOCK_FRAMES), + 0, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + END_SUB_GROUP(list, list_info, parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP( + list, + list_info, + "Miscellaneous", + &group_info, + &subgroup_info, + parent_group); + + CONFIG_STRING( + list, list_info, + settings->audio.device, + sizeof(settings->audio.device), + menu_hash_to_str(MENU_LABEL_AUDIO_DEVICE), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_DEVICE), + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT | SD_FLAG_ADVANCED); + + CONFIG_UINT( + list, list_info, + &settings->audio.out_rate, + menu_hash_to_str(MENU_LABEL_AUDIO_OUTPUT_RATE), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_OUTPUT_RATE), + out_rate, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_PATH( + list, list_info, + settings->audio.dsp_plugin, + sizeof(settings->audio.dsp_plugin), + menu_hash_to_str(MENU_LABEL_AUDIO_DSP_PLUGIN), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_DSP_PLUGIN), + settings->audio.filter_dir, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_values(list, list_info, "dsp"); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_DSP_FILTER_INIT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_INPUT: + { + unsigned user; + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_INPUT_SETTINGS_BEGIN), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_UINT( + list, list_info, + &settings->input.max_users, + menu_hash_to_str(MENU_LABEL_INPUT_MAX_USERS), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_MAX_USERS), + input_max_users, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 1, MAX_USERS, 1, true, true); + + CONFIG_UINT( + list, list_info, + &settings->input.poll_type_behavior, + menu_hash_to_str(MENU_LABEL_INPUT_POLL_TYPE_BEHAVIOR), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR), + input_poll_type_behavior, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true); + +#if TARGET_OS_IPHONE + CONFIG_BOOL( + list, list_info, + &settings->input.keyboard_gamepad_enable, + menu_hash_to_str(MENU_LABEL_INPUT_ICADE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_ICADE_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_UINT( + list, list_info, + &settings->input.keyboard_gamepad_mapping_type, + menu_hash_to_str(MENU_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE), + 1, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); + + CONFIG_BOOL( + list, list_info, + &settings->input.small_keyboard_enable, + menu_hash_to_str(MENU_LABEL_INPUT_SMALL_KEYBOARD_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); +#endif + +#ifdef ANDROID + CONFIG_BOOL( + list, list_info, + &settings->input.back_as_menu_toggle_enable, + menu_hash_to_str(MENU_LABEL_INPUT_BACK_AS_MENU_TOGGLE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_BACK_AS_MENU_TOGGLE_ENABLE), + back_as_menu_toggle_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); +#endif + + CONFIG_UINT( + list, list_info, + &settings->input.menu_toggle_gamepad_combo, + menu_hash_to_str(MENU_LABEL_INPUT_MENU_TOGGLE_GAMEPAD_COMBO), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_MENU_TOGGLE_GAMEPAD_COMBO), + menu_toggle_gamepad_combo, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true); + + CONFIG_BOOL( + list, list_info, + &settings->input.remap_binds_enable, + menu_hash_to_str(MENU_LABEL_INPUT_REMAP_BINDS_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->input.autodetect_enable, + menu_hash_to_str(MENU_LABEL_INPUT_AUTODETECT_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_AUTODETECT_ENABLE), + input_autodetect_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->input.input_descriptor_label_show, + menu_hash_to_str(MENU_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_BOOL( + list, list_info, + &settings->input.input_descriptor_hide_unbound, + menu_hash_to_str(MENU_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND), + input_descriptor_hide_unbound, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + + END_SUB_GROUP(list, list_info, parent_group); + + + START_SUB_GROUP( + list, + list_info, + "Turbo/Deadzone", + &group_info, + &subgroup_info, + parent_group); + + CONFIG_FLOAT( + list, list_info, + &settings->input.axis_threshold, + menu_hash_to_str(MENU_LABEL_INPUT_AXIS_THRESHOLD), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_AXIS_THRESHOLD), + axis_threshold, + "%.3f", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 1.00, 0.001, true, true); + + CONFIG_UINT( + list, list_info, + &settings->input.turbo_period, + menu_hash_to_str(MENU_LABEL_INPUT_TURBO_PERIOD), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_TURBO_PERIOD), + turbo_period, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 1, 0, 1, true, false); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_UINT( + list, list_info, + &settings->input.turbo_duty_cycle, + menu_hash_to_str(MENU_LABEL_INPUT_DUTY_CYCLE), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_DUTY_CYCLE), + turbo_duty_cycle, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 1, 0, 1, true, false); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + END_SUB_GROUP(list, list_info, parent_group); + + START_SUB_GROUP(list, list_info, "Binds", &group_info, &subgroup_info, parent_group); + + CONFIG_ACTION( + list, list_info, + menu_hash_to_str(MENU_LABEL_INPUT_HOTKEY_BINDS), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_HOTKEY_BINDS), + &group_info, + &subgroup_info, + parent_group); + + for (user = 0; user < MAX_USERS; user++) + { + static char binds_list[MAX_USERS][PATH_MAX_LENGTH]; + static char binds_label[MAX_USERS][PATH_MAX_LENGTH]; + + snprintf(binds_list[user], sizeof(binds_list[user]), "%d_input_binds_list", user + 1); + snprintf(binds_label[user], sizeof(binds_label[user]), "Input User %d Binds", user + 1); + + CONFIG_ACTION( + list, list_info, + binds_list[user], + binds_label[user], + &group_info, + &subgroup_info, + parent_group); + (*list)[list_info->index - 1].index = user + 1; + (*list)[list_info->index - 1].index_offset = user; + } + + END_SUB_GROUP(list, list_info, parent_group); + + END_GROUP(list, list_info, parent_group); + } + break; + case SETTINGS_LIST_RECORDING: + if (!string_is_equal(settings->record.driver, "null")) + { + if (!setting_append_list_recording_options(list, list_info, parent_group)) + return false; + } + break; + case SETTINGS_LIST_INPUT_HOTKEY: + { + unsigned i; + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_INPUT_HOTKEY_BINDS_BEGIN), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, + parent_group); + + for (i = 0; i < RARCH_BIND_LIST_END; i ++) + { + if (!input_config_bind_map_get_meta(i)) + continue; + + CONFIG_BIND( + list, list_info, + &settings->input.binds[0][i], 0, 0, + strdup(input_config_bind_map_get_base(i)), + strdup(input_config_bind_map_get_desc(i)), + &retro_keybinds_1[i], + &group_info, &subgroup_info, parent_group); + (*list)[list_info->index - 1].bind_type = i + MENU_SETTINGS_BIND_BEGIN; + } + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + } + break; + case SETTINGS_LIST_FRAME_THROTTLING: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_FRAME_THROTTLE_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_FLOAT( + list, list_info, + &settings->fastforward_ratio, + menu_hash_to_str(MENU_LABEL_FASTFORWARD_RATIO), + menu_hash_to_str(MENU_LABEL_VALUE_FASTFORWARD_RATIO), + fastforward_ratio, + "%.1fx", + &group_info, + &subgroup_info, + parent_group, + 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, 0, 10, 1.0, true, true); + + CONFIG_FLOAT( + list, list_info, + &settings->slowmotion_ratio, + menu_hash_to_str(MENU_LABEL_SLOWMOTION_RATIO), + menu_hash_to_str(MENU_LABEL_VALUE_SLOWMOTION_RATIO), + slowmotion_ratio, + "%.1fx", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 1, 10, 1.0, true, true); + + CONFIG_BOOL( + list, list_info, + &settings->menu.throttle_framerate, + menu_hash_to_str(MENU_LABEL_MENU_THROTTLE_FRAMERATE), + menu_hash_to_str(MENU_LABEL_VALUE_MENU_THROTTLE_FRAMERATE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_FONT: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "Messages", + &group_info, + &subgroup_info, + parent_group); + +#ifndef RARCH_CONSOLE + CONFIG_BOOL( + list, list_info, + &settings->video.font_enable, + menu_hash_to_str(MENU_LABEL_VIDEO_FONT_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FONT_ENABLE), + font_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); +#endif + + CONFIG_PATH( + list, list_info, + settings->video.font_path, + sizeof(settings->video.font_path), + menu_hash_to_str(MENU_LABEL_VIDEO_FONT_PATH), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FONT_PATH), + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + + CONFIG_FLOAT( + list, list_info, + &settings->video.font_size, + menu_hash_to_str(MENU_LABEL_VIDEO_FONT_SIZE), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FONT_SIZE), + font_size, + "%.1f", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 1.00, 100.00, 1.0, true, true); + + CONFIG_FLOAT( + list, list_info, + &settings->video.msg_pos_x, + menu_hash_to_str(MENU_LABEL_VIDEO_MESSAGE_POS_X), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_X), + message_pos_offset_x, + "%.3f", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); + + CONFIG_FLOAT( + list, list_info, + &settings->video.msg_pos_y, + menu_hash_to_str(MENU_LABEL_VIDEO_MESSAGE_POS_Y), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_Y), + message_pos_offset_y, + "%.3f", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_OVERLAY: +#ifdef HAVE_OVERLAY + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->input.overlay_enable, + menu_hash_to_str(MENU_LABEL_INPUT_OVERLAY_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_OVERLAY_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; + + CONFIG_BOOL( + list, list_info, + &settings->input.overlay_enable_autopreferred, + menu_hash_to_str(MENU_LABEL_OVERLAY_AUTOLOAD_PREFERRED), + menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; + + CONFIG_BOOL( + list, list_info, + &settings->input.overlay_hide_in_menu, + menu_hash_to_str(MENU_LABEL_INPUT_OVERLAY_HIDE_IN_MENU), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU), + overlay_hide_in_menu, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; + + CONFIG_BOOL( + list, list_info, + &settings->osk.enable, + menu_hash_to_str(MENU_LABEL_INPUT_OSK_OVERLAY_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_OSK_OVERLAY_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_PATH( + list, list_info, + settings->input.overlay, + sizeof(settings->input.overlay), + menu_hash_to_str(MENU_LABEL_OVERLAY_PRESET), + menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_PRESET), + settings->overlay_directory, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_values(list, list_info, "cfg"); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_OVERLAY_INIT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + + CONFIG_FLOAT( + list, list_info, + &settings->input.overlay_opacity, + menu_hash_to_str(MENU_LABEL_OVERLAY_OPACITY), + menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_OPACITY), + 0.7f, + "%.2f", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_OVERLAY_SET_ALPHA_MOD); + menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + + CONFIG_FLOAT( + list, list_info, + &settings->input.overlay_scale, + menu_hash_to_str(MENU_LABEL_OVERLAY_SCALE), + menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_SCALE), + 1.0f, + "%.2f", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_OVERLAY_SET_SCALE_FACTOR); + menu_settings_list_current_add_range(list, list_info, 0, 2, 0.01, true, true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + + END_SUB_GROUP(list, list_info, parent_group); + + START_SUB_GROUP(list, list_info, "Onscreen Keyboard Overlay", &group_info, &subgroup_info, parent_group); + + CONFIG_PATH( + list, list_info, + settings->osk.overlay, + sizeof(settings->osk.overlay), + menu_hash_to_str(MENU_LABEL_KEYBOARD_OVERLAY_PRESET), + menu_hash_to_str(MENU_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET), + global->dir.osk_overlay, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_values(list, list_info, "cfg"); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); +#endif + break; + case SETTINGS_LIST_MENU: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_MENU_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_PATH( + list, list_info, + settings->menu.wallpaper, + sizeof(settings->menu.wallpaper), + menu_hash_to_str(MENU_LABEL_MENU_WALLPAPER), + menu_hash_to_str(MENU_LABEL_VALUE_MENU_WALLPAPER), + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_values(list, list_info, "png"); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + + CONFIG_BOOL( + list, list_info, + &settings->menu.dynamic_wallpaper_enable, + menu_hash_to_str(MENU_LABEL_DYNAMIC_WALLPAPER), + menu_hash_to_str(MENU_LABEL_VALUE_DYNAMIC_WALLPAPER), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + + CONFIG_BOOL( + list, list_info, + &settings->menu.pause_libretro, + menu_hash_to_str(MENU_LABEL_PAUSE_LIBRETRO), + menu_hash_to_str(MENU_LABEL_VALUE_PAUSE_LIBRETRO), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_MENU_PAUSE_LIBRETRO); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + + CONFIG_BOOL( + list, list_info, + &settings->menu.mouse.enable, + menu_hash_to_str(MENU_LABEL_MOUSE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_MOUSE_ENABLE), + def_mouse_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->menu.pointer.enable, + menu_hash_to_str(MENU_LABEL_POINTER_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_POINTER_ENABLE), + pointer_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->menu.linear_filter, + menu_hash_to_str(MENU_LABEL_MENU_LINEAR_FILTER), + menu_hash_to_str(MENU_LABEL_VALUE_MENU_LINEAR_FILTER), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + +#ifdef RARCH_MOBILE + /* We don't want mobile users being able to switch this off. */ + (*list)[list_info->index - 1].action_left = NULL; + (*list)[list_info->index - 1].action_right = NULL; + (*list)[list_info->index - 1].action_start = NULL; +#endif + + END_SUB_GROUP(list, list_info, parent_group); + + START_SUB_GROUP(list, list_info, "Navigation", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->menu.navigation.wraparound.enable, + menu_hash_to_str(MENU_LABEL_NAVIGATION_WRAPAROUND), + menu_hash_to_str(MENU_LABEL_VALUE_NAVIGATION_WRAPAROUND), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Settings View", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->menu.show_advanced_settings, + menu_hash_to_str(MENU_LABEL_SHOW_ADVANCED_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_SHOW_ADVANCED_SETTINGS), + show_advanced_settings, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + +#ifdef HAVE_THREADS + CONFIG_BOOL( + list, list_info, + &settings->threaded_data_runloop_enable, + menu_hash_to_str(MENU_LABEL_THREADED_DATA_RUNLOOP_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE), + threaded_data_runloop_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); +#endif + + /* These colors are hints. The menu driver is not required to use them. */ + CONFIG_HEX( + list, list_info, + &settings->menu.entry_normal_color, + menu_hash_to_str(MENU_LABEL_ENTRY_NORMAL_COLOR), + menu_hash_to_str(MENU_LABEL_VALUE_ENTRY_NORMAL_COLOR), + menu_entry_normal_color, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_HEX( + list, list_info, + &settings->menu.entry_hover_color, + menu_hash_to_str(MENU_LABEL_ENTRY_HOVER_COLOR), + menu_hash_to_str(MENU_LABEL_VALUE_ENTRY_HOVER_COLOR), + menu_entry_hover_color, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_HEX( + list, list_info, + &settings->menu.title_color, + menu_hash_to_str(MENU_LABEL_TITLE_COLOR), + menu_hash_to_str(MENU_LABEL_VALUE_TITLE_COLOR), + menu_title_color, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + END_SUB_GROUP(list, list_info, parent_group); + + + START_SUB_GROUP(list, list_info, "Display", &group_info, &subgroup_info, parent_group); + + /* only glui uses these values, don't show them on other drivers */ + if (string_is_equal(settings->menu.driver, "glui")) + { + CONFIG_BOOL( + list, list_info, + &settings->menu.dpi.override_enable, + menu_hash_to_str(MENU_LABEL_DPI_OVERRIDE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_DPI_OVERRIDE_ENABLE), + menu_dpi_override_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_UINT( + list, list_info, + &settings->menu.dpi.override_value, + menu_hash_to_str(MENU_LABEL_DPI_OVERRIDE_VALUE), + menu_hash_to_str(MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE), + menu_dpi_override_value, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 72, 999, 1, true, true); + } + /* only XMB uses these values, don't show them on other drivers */ + if (string_is_equal(settings->menu.driver, "xmb")) + { + CONFIG_UINT( + list, list_info, + &settings->menu.xmb_alpha_factor, + menu_hash_to_str(MENU_LABEL_XMB_ALPHA_FACTOR), + menu_hash_to_str(MENU_LABEL_VALUE_XMB_ALPHA_FACTOR), + xmb_alpha_factor, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 100, 1, true, true); + + CONFIG_UINT( + list, list_info, + &settings->menu.xmb_scale_factor, + menu_hash_to_str(MENU_LABEL_XMB_SCALE_FACTOR), + menu_hash_to_str(MENU_LABEL_VALUE_XMB_SCALE_FACTOR), + xmb_scale_factor, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 100, 1, true, true); + + CONFIG_PATH( + list, list_info, + settings->menu.xmb_font, + sizeof(settings->menu.xmb_font), + menu_hash_to_str(MENU_LABEL_XMB_FONT), + menu_hash_to_str(MENU_LABEL_VALUE_XMB_FONT), + settings->menu.xmb_font, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); + } + + CONFIG_BOOL( + list, list_info, + &settings->menu_show_start_screen, + menu_hash_to_str(MENU_LABEL_RGUI_SHOW_START_SCREEN), + menu_hash_to_str(MENU_LABEL_VALUE_RGUI_SHOW_START_SCREEN), + default_menu_show_start_screen, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->menu.boxart_enable, + menu_hash_to_str(MENU_LABEL_BOXART), + menu_hash_to_str(MENU_LABEL_VALUE_BOXART), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->menu.timedate_enable, + menu_hash_to_str(MENU_LABEL_TIMEDATE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_TIMEDATE_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->menu.core_enable, + menu_hash_to_str(MENU_LABEL_CORE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_CORE_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_MENU_FILE_BROWSER: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->menu.navigation.browser.filter.supported_extensions_enable, + menu_hash_to_str(MENU_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_MULTIMEDIA: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_MULTIMEDIA_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + if (!string_is_equal(settings->record.driver, "null")) + CONFIG_BOOL( + list, list_info, + &settings->multimedia.builtin_mediaplayer_enable, + menu_hash_to_str(MENU_LABEL_USE_BUILTIN_PLAYER), + menu_hash_to_str(MENU_LABEL_VALUE_USE_BUILTIN_PLAYER), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + +#ifdef HAVE_IMAGEVIEWER + CONFIG_BOOL( + list, list_info, + &settings->multimedia.builtin_imageviewer_enable, + menu_hash_to_str(MENU_LABEL_USE_BUILTIN_IMAGE_VIEWER), + menu_hash_to_str(MENU_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); +#endif + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_USER_INTERFACE: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_UI_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->video.disable_composition, + menu_hash_to_str(MENU_LABEL_VIDEO_DISABLE_COMPOSITION), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION), + disable_composition, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); + + CONFIG_BOOL( + list, list_info, + &settings->pause_nonactive, + menu_hash_to_str(MENU_LABEL_PAUSE_NONACTIVE), + menu_hash_to_str(MENU_LABEL_VALUE_PAUSE_NONACTIVE), + pause_nonactive, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->ui.companion_enable, + menu_hash_to_str(MENU_LABEL_UI_COMPANION_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_UI_COMPANION_ENABLE), + ui_companion_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_BOOL( + list, list_info, + &settings->ui.companion_start_on_boot, + menu_hash_to_str(MENU_LABEL_UI_COMPANION_START_ON_BOOT), + menu_hash_to_str(MENU_LABEL_VALUE_UI_COMPANION_START_ON_BOOT), + ui_companion_start_on_boot, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_BOOL( + list, list_info, + &settings->ui.menubar_enable, + menu_hash_to_str(MENU_LABEL_UI_MENUBAR_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_UI_MENUBAR_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_PLAYLIST: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_PLAYLIST_SETTINGS_BEGIN), + parent_group); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "History", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->history_list_enable, + menu_hash_to_str(MENU_LABEL_HISTORY_LIST_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_HISTORY_LIST_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_UINT( + list, list_info, + &settings->content_history_size, + menu_hash_to_str(MENU_LABEL_CONTENT_HISTORY_SIZE), + menu_hash_to_str(MENU_LABEL_CONTENT_HISTORY_SIZE), + default_content_history_size, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 0, 1.0, true, false); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_CHEEVOS: +#ifdef HAVE_CHEEVOS + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_CHEEVOS_SETTINGS), + parent_group); + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->cheevos.enable, + menu_hash_to_str(MENU_LABEL_CHEEVOS_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->cheevos.test_unofficial, + menu_hash_to_str(MENU_LABEL_CHEEVOS_TEST_UNOFFICIAL), + menu_hash_to_str(MENU_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->cheevos.hardcore_mode_enable, + menu_hash_to_str(MENU_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_CHEEVOS_HARDCORE_MODE_TOGGLE); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); +#endif + break; + case SETTINGS_LIST_CORE_UPDATER: +#ifdef HAVE_NETWORKING + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_SETTINGS), + parent_group); + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_STRING( + list, list_info, + settings->network.buildbot_url, + sizeof(settings->network.buildbot_url), + menu_hash_to_str(MENU_LABEL_CORE_UPDATER_BUILDBOT_URL), + menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL), + buildbot_server_url, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + + CONFIG_STRING( + list, list_info, + settings->network.buildbot_assets_url, + sizeof(settings->network.buildbot_assets_url), + menu_hash_to_str(MENU_LABEL_BUILDBOT_ASSETS_URL), + menu_hash_to_str(MENU_LABEL_VALUE_BUILDBOT_ASSETS_URL), + buildbot_assets_server_url, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + + CONFIG_BOOL( + list, list_info, + &settings->network.buildbot_auto_extract_archive, + menu_hash_to_str(MENU_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE), + menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); +#endif + break; + case SETTINGS_LIST_NETPLAY: + { +#if defined(HAVE_NETWORK_CMD) + unsigned user; +#endif +#ifdef HAVE_NETPLAY + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_NETWORK_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "Netplay", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &global->netplay.enable, + menu_hash_to_str(MENU_LABEL_NETPLAY_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &settings->input.netplay_client_swap_input, + menu_hash_to_str(MENU_LABEL_NETPLAY_CLIENT_SWAP_INPUT), + menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT), + netplay_client_swap_input, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_STRING( + list, list_info, + global->netplay.server, + sizeof(global->netplay.server), + menu_hash_to_str(MENU_LABEL_NETPLAY_IP_ADDRESS), + menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_IP_ADDRESS), + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + + CONFIG_BOOL( + list, list_info, + &global->netplay.is_client, + menu_hash_to_str(MENU_LABEL_NETPLAY_MODE), + menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_MODE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_BOOL( + list, list_info, + &global->netplay.is_spectate, + menu_hash_to_str(MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + + CONFIG_UINT( + list, list_info, + &global->netplay.sync_frames, + menu_hash_to_str(MENU_LABEL_NETPLAY_DELAY_FRAMES), + menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_DELAY_FRAMES), + 0, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 10, 1, true, false); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_UINT( + list, list_info, + &global->netplay.port, + menu_hash_to_str(MENU_LABEL_NETPLAY_TCP_UDP_PORT), + menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_TCP_UDP_PORT), + RARCH_DEFAULT_PORT, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + + END_SUB_GROUP(list, list_info, parent_group); + + START_SUB_GROUP( + list, + list_info, + "Miscellaneous", + &group_info, + &subgroup_info, + parent_group); + + +#if defined(HAVE_NETWORK_CMD) + CONFIG_BOOL( + list, list_info, + &settings->network_cmd_enable, + menu_hash_to_str(MENU_LABEL_NETWORK_CMD_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_NETWORK_CMD_ENABLE), + network_cmd_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_UINT( + list, list_info, + &settings->network_cmd_port, + menu_hash_to_str(MENU_LABEL_NETWORK_CMD_PORT), + menu_hash_to_str(MENU_LABEL_VALUE_NETWORK_CMD_PORT), + network_cmd_port, + &group_info, + &subgroup_info, + parent_group, + NULL, + NULL); + menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_BOOL( + list, list_info, + &settings->network_remote_enable, + menu_hash_to_str(MENU_LABEL_NETWORK_REMOTE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_NETWORK_REMOTE_ENABLE), + "", /* todo: add default */ + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + CONFIG_UINT( + list, list_info, + &settings->network_remote_base_port, + menu_hash_to_str(MENU_LABEL_NETWORK_REMOTE_PORT), + /* todo: localization */ + "Network Remote Base Port", + network_remote_base_port, + &group_info, + &subgroup_info, + parent_group, + NULL, + NULL); + menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + + for(user = 0; user < settings->input.max_users; user++) + { + char s1[64], s2[64]; + + snprintf(s1, sizeof(s1), "%s_user_p%d", menu_hash_to_str(MENU_LABEL_NETWORK_REMOTE_ENABLE), user + 1); + snprintf(s2, sizeof(s2), "User %d Remote Enable", user + 1); + + + CONFIG_BOOL( + list, list_info, + &settings->network_remote_enable_user[user], + /* todo: figure out this value, it's working fine but I don't think this is correct */ + strdup(s1), + strdup(s2), + "", /* todo: add default */ + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); + } + + CONFIG_BOOL( + list, list_info, + &settings->stdin_cmd_enable, + menu_hash_to_str(MENU_LABEL_STDIN_CMD_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_STDIN_CMD_ENABLE), + stdin_cmd_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); +#endif + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); +#endif + } + break; + case SETTINGS_LIST_USER: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_USER_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_ACTION( + list, list_info, + menu_hash_to_str(MENU_LABEL_ACCOUNTS_LIST), + menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_LIST), + &group_info, + &subgroup_info, + parent_group); + + CONFIG_STRING( + list, list_info, + settings->username, + sizeof(settings->username), + menu_hash_to_str(MENU_LABEL_NETPLAY_NICKNAME), + menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_NICKNAME), + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + + CONFIG_UINT( + list, list_info, + &settings->user_language, + menu_hash_to_str(MENU_LABEL_USER_LANGUAGE), + menu_hash_to_str(MENU_LABEL_VALUE_USER_LANGUAGE), + def_user_language, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range( + list, + list_info, + 0, + RETRO_LANGUAGE_LAST-1, + 1, + true, + true); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_MENU_REFRESH); + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_user_language; + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_USER_ACCOUNTS: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_LIST_END), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + +#ifdef HAVE_CHEEVOS + CONFIG_ACTION( + list, list_info, + menu_hash_to_str(MENU_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS), + menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS), + &group_info, + &subgroup_info, + parent_group); +#endif + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_USER_ACCOUNTS_CHEEVOS: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_STRING( + list, list_info, + settings->cheevos.username, + sizeof(settings->cheevos.username), + menu_hash_to_str(MENU_LABEL_CHEEVOS_USERNAME), + menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME), + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + + CONFIG_STRING( + list, list_info, + settings->cheevos.password, + sizeof(settings->cheevos.password), + menu_hash_to_str(MENU_LABEL_CHEEVOS_PASSWORD), + menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD), + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_DIRECTORY: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_DIRECTORY_SETTINGS), + parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_DIR( + list, list_info, + settings->system_directory, + sizeof(settings->system_directory), + menu_hash_to_str(MENU_LABEL_SYSTEM_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_CONTENT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->core_assets_directory, + sizeof(settings->core_assets_directory), + menu_hash_to_str(MENU_LABEL_CORE_ASSETS_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_CORE_ASSETS_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->assets_directory, + sizeof(settings->assets_directory), + menu_hash_to_str(MENU_LABEL_ASSETS_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_ASSETS_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->dynamic_wallpapers_directory, + sizeof(settings->dynamic_wallpapers_directory), + menu_hash_to_str(MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->boxarts_directory, + sizeof(settings->boxarts_directory), + menu_hash_to_str(MENU_LABEL_BOXARTS_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_BOXARTS_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->menu_content_directory, + sizeof(settings->menu_content_directory), + menu_hash_to_str(MENU_LABEL_RGUI_BROWSER_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_RGUI_BROWSER_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + + CONFIG_DIR( + list, list_info, + settings->menu_config_directory, + sizeof(settings->menu_config_directory), + menu_hash_to_str(MENU_LABEL_RGUI_CONFIG_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_RGUI_CONFIG_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + + CONFIG_DIR( + list, list_info, + settings->libretro_directory, + sizeof(settings->libretro_directory), + menu_hash_to_str(MENU_LABEL_LIBRETRO_DIR_PATH), + menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH), + g_defaults.dir.core, + menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_CORE_INFO_INIT); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->libretro_info_path, + sizeof(settings->libretro_info_path), + menu_hash_to_str(MENU_LABEL_LIBRETRO_INFO_PATH), + menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_INFO_PATH), + g_defaults.dir.core_info, + menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_CORE_INFO_INIT); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + +#ifdef HAVE_LIBRETRODB + CONFIG_DIR( + list, list_info, + settings->content_database, + sizeof(settings->content_database), + menu_hash_to_str(MENU_LABEL_CONTENT_DATABASE_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->cursor_directory, + sizeof(settings->cursor_directory), + menu_hash_to_str(MENU_LABEL_CURSOR_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_CURSOR_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); +#endif + + CONFIG_DIR( + list, list_info, + settings->cheat_database, + sizeof(settings->cheat_database), + menu_hash_to_str(MENU_LABEL_CHEAT_DATABASE_PATH), + menu_hash_to_str(MENU_LABEL_VALUE_CHEAT_DATABASE_PATH), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->video.filter_dir, + sizeof(settings->video.filter_dir), + menu_hash_to_str(MENU_LABEL_VIDEO_FILTER_DIR), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FILTER_DIR), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->audio.filter_dir, + sizeof(settings->audio.filter_dir), + menu_hash_to_str(MENU_LABEL_AUDIO_FILTER_DIR), + menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_FILTER_DIR), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->video.shader_dir, + sizeof(settings->video.shader_dir), + menu_hash_to_str(MENU_LABEL_VIDEO_SHADER_DIR), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SHADER_DIR), + g_defaults.dir.shader, + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + if (!string_is_equal(settings->record.driver, "null")) + { + CONFIG_DIR( + list, list_info, + global->record.output_dir, + sizeof(global->record.output_dir), + menu_hash_to_str(MENU_LABEL_RECORDING_OUTPUT_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + global->record.config_dir, + sizeof(global->record.config_dir), + menu_hash_to_str(MENU_LABEL_RECORDING_CONFIG_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + } +#ifdef HAVE_OVERLAY + CONFIG_DIR( + list, list_info, + settings->overlay_directory, + sizeof(settings->overlay_directory), + menu_hash_to_str(MENU_LABEL_OVERLAY_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_DIRECTORY), + g_defaults.dir.overlay, + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + global->dir.osk_overlay, + sizeof(global->dir.osk_overlay), + menu_hash_to_str(MENU_LABEL_OSK_OVERLAY_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_OSK_OVERLAY_DIRECTORY), + g_defaults.dir.osk_overlay, + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); +#endif + + CONFIG_DIR( + list, list_info, + settings->screenshot_directory, + sizeof(settings->screenshot_directory), + menu_hash_to_str(MENU_LABEL_SCREENSHOT_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_SCREENSHOT_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_CONTENT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->input.autoconfig_dir, + sizeof(settings->input.autoconfig_dir), + menu_hash_to_str(MENU_LABEL_JOYPAD_AUTOCONFIG_DIR), + menu_hash_to_str(MENU_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->input_remapping_directory, + sizeof(settings->input_remapping_directory), + menu_hash_to_str(MENU_LABEL_INPUT_REMAPPING_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->playlist_directory, + sizeof(settings->playlist_directory), + menu_hash_to_str(MENU_LABEL_PLAYLIST_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_PLAYLIST_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + global->dir.savefile, + sizeof(global->dir.savefile), + menu_hash_to_str(MENU_LABEL_SAVEFILE_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_SAVEFILE_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_CONTENT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + global->dir.savestate, + sizeof(global->dir.savestate), + menu_hash_to_str(MENU_LABEL_SAVESTATE_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_CONTENT), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + CONFIG_DIR( + list, list_info, + settings->cache_directory, + sizeof(settings->cache_directory), + menu_hash_to_str(MENU_LABEL_CACHE_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_CACHE_DIRECTORY), + "", + menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags( + list, + list_info, + SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; + case SETTINGS_LIST_PRIVACY: + START_GROUP(list, list_info, &group_info, + menu_hash_to_str(MENU_LABEL_VALUE_PRIVACY_SETTINGS), parent_group); + + parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", + &group_info, &subgroup_info, parent_group); + + if (!string_is_equal(settings->camera.driver, "null")) + { + CONFIG_BOOL( + list, list_info, + &settings->camera.allow, + menu_hash_to_str(MENU_LABEL_CAMERA_ALLOW), + menu_hash_to_str(MENU_LABEL_VALUE_CAMERA_ALLOW), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + } + + if (!string_is_equal(settings->location.driver, "null")) + { + CONFIG_BOOL( + list, list_info, + &settings->location.allow, + menu_hash_to_str(MENU_LABEL_LOCATION_ALLOW), + menu_hash_to_str(MENU_LABEL_VALUE_LOCATION_ALLOW), + false, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + } + END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); break; @@ -3816,3574 +7149,6 @@ static bool setting_append_list( return true; } -static bool setting_append_list_configuration_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_CONFIGURATION_SETTINGS), parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, - parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->config_save_on_exit, - menu_hash_to_str(MENU_LABEL_CONFIG_SAVE_ON_EXIT), - menu_hash_to_str(MENU_LABEL_VALUE_CONFIG_SAVE_ON_EXIT), - config_save_on_exit, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->core_specific_config, - menu_hash_to_str(MENU_LABEL_CORE_SPECIFIC_CONFIG), - menu_hash_to_str(MENU_LABEL_VALUE_CORE_SPECIFIC_CONFIG), - default_core_specific_config, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->game_specific_options, - menu_hash_to_str(MENU_LABEL_GAME_SPECIFIC_OPTIONS), - menu_hash_to_str(MENU_LABEL_VALUE_GAME_SPECIFIC_OPTIONS), - default_game_specific_options, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - - CONFIG_BOOL( - list, list_info, - &settings->auto_overrides_enable, - menu_hash_to_str(MENU_LABEL_AUTO_OVERRIDES_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_AUTO_OVERRIDES_ENABLE), - default_auto_overrides_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->auto_remaps_enable, - menu_hash_to_str(MENU_LABEL_AUTO_REMAPS_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_AUTO_REMAPS_ENABLE), - default_auto_remaps_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_saving_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, menu_hash_to_str(MENU_LABEL_VALUE_SAVING_SETTINGS), parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, - parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->sort_savefiles_enable, - menu_hash_to_str(MENU_LABEL_SORT_SAVEFILES_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_SORT_SAVEFILES_ENABLE), - default_sort_savefiles_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->sort_savestates_enable, - menu_hash_to_str(MENU_LABEL_SORT_SAVESTATES_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_SORT_SAVESTATES_ENABLE), - default_sort_savestates_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->block_sram_overwrite, - menu_hash_to_str(MENU_LABEL_BLOCK_SRAM_OVERWRITE), - menu_hash_to_str(MENU_LABEL_VALUE_BLOCK_SRAM_OVERWRITE), - block_sram_overwrite, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - -#ifdef HAVE_THREADS - CONFIG_UINT( - list, list_info, - &settings->autosave_interval, - menu_hash_to_str(MENU_LABEL_AUTOSAVE_INTERVAL), - menu_hash_to_str(MENU_LABEL_VALUE_AUTOSAVE_INTERVAL), - autosave_interval, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_AUTOSAVE_INIT); - menu_settings_list_current_add_range(list, list_info, 0, 0, 10, true, false); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - (*list)[list_info->index - 1].get_string_representation = - &setting_get_string_representation_uint_autosave_interval; -#endif - - CONFIG_BOOL( - list, list_info, - &settings->savestate_auto_index, - menu_hash_to_str(MENU_LABEL_SAVESTATE_AUTO_INDEX), - menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_AUTO_INDEX), - savestate_auto_index, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->savestate_auto_save, - menu_hash_to_str(MENU_LABEL_SAVESTATE_AUTO_SAVE), - menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_AUTO_SAVE), - savestate_auto_save, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->savestate_auto_load, - menu_hash_to_str(MENU_LABEL_SAVESTATE_AUTO_LOAD), - menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_AUTO_LOAD), - savestate_auto_load, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_logging_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - bool *tmp_b = NULL; - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, menu_hash_to_str(MENU_LABEL_VALUE_LOGGING_SETTINGS), parent_group); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, - parent_group); - - CONFIG_BOOL( - list, list_info, - retro_main_verbosity(), - menu_hash_to_str(MENU_LABEL_LOG_VERBOSITY), - menu_hash_to_str(MENU_LABEL_VALUE_LOG_VERBOSITY), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_UINT( - list, list_info, - &settings->libretro_log_level, - menu_hash_to_str(MENU_LABEL_LIBRETRO_LOG_LEVEL), - menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_LOG_LEVEL), - libretro_log_level, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 3, 1.0, true, true); - (*list)[list_info->index - 1].get_string_representation = - &setting_get_string_representation_uint_libretro_log_level; - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_BOOL( - list, list_info, - &settings->debug_panel_enable, - menu_hash_to_str(MENU_LABEL_DEBUG_PANEL_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_DEBUG_PANEL_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - END_SUB_GROUP(list, list_info, parent_group); - - START_SUB_GROUP(list, list_info, "Performance Counters", &group_info, &subgroup_info, - parent_group); - - runloop_ctl(RUNLOOP_CTL_GET_PERFCNT, &tmp_b); - - CONFIG_BOOL( - list, list_info, - tmp_b, - menu_hash_to_str(MENU_LABEL_PERFCNT_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_PERFCNT_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_frame_throttling_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_FRAME_THROTTLE_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_FLOAT( - list, list_info, - &settings->fastforward_ratio, - menu_hash_to_str(MENU_LABEL_FASTFORWARD_RATIO), - menu_hash_to_str(MENU_LABEL_VALUE_FASTFORWARD_RATIO), - fastforward_ratio, - "%.1fx", - &group_info, - &subgroup_info, - parent_group, - 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, 0, 10, 1.0, true, true); - - CONFIG_FLOAT( - list, list_info, - &settings->slowmotion_ratio, - menu_hash_to_str(MENU_LABEL_SLOWMOTION_RATIO), - menu_hash_to_str(MENU_LABEL_VALUE_SLOWMOTION_RATIO), - slowmotion_ratio, - "%.1fx", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 1, 10, 1.0, true, true); - - CONFIG_BOOL( - list, list_info, - &settings->menu.throttle_framerate, - menu_hash_to_str(MENU_LABEL_MENU_THROTTLE_FRAMERATE), - menu_hash_to_str(MENU_LABEL_VALUE_MENU_THROTTLE_FRAMERATE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_rewind_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, menu_hash_to_str(MENU_LABEL_VALUE_REWIND_SETTINGS), parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - - CONFIG_BOOL( - list, list_info, - &settings->rewind_enable, - menu_hash_to_str(MENU_LABEL_REWIND_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_REWIND_ENABLE), - rewind_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REWIND_TOGGLE); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - -#if 0 - CONFIG_SIZE( - settings->rewind_buffer_size, - "rewind_buffer_size", - "Rewind Buffer Size", - rewind_buffer_size, - group_info, - subgroup_info, - parent_group, - general_write_handler, - general_read_handler) -#endif - CONFIG_UINT( - list, list_info, - &settings->rewind_granularity, - menu_hash_to_str(MENU_LABEL_REWIND_GRANULARITY), - menu_hash_to_str(MENU_LABEL_VALUE_REWIND_GRANULARITY), - rewind_granularity, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 1, 32768, 1, true, false); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_recording_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_RECORDING_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - recording_is_enabled(), - menu_hash_to_str(MENU_LABEL_RECORD_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_RECORD_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_PATH( - list, list_info, - global->record.config, - sizeof(global->record.config), - menu_hash_to_str(MENU_LABEL_RECORD_CONFIG), - menu_hash_to_str(MENU_LABEL_VALUE_RECORD_CONFIG), - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_values(list, list_info, "cfg"); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - - CONFIG_STRING( - list, list_info, - global->record.path, - sizeof(global->record.path), - menu_hash_to_str(MENU_LABEL_RECORD_PATH), - menu_hash_to_str(MENU_LABEL_VALUE_RECORD_PATH), - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - - CONFIG_BOOL( - list, list_info, - &global->record.use_output_dir, - menu_hash_to_str(MENU_LABEL_RECORD_USE_OUTPUT_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - END_SUB_GROUP(list, list_info, parent_group); - - START_SUB_GROUP(list, list_info, "Miscellaneous", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->video.post_filter_record, - menu_hash_to_str(MENU_LABEL_VIDEO_POST_FILTER_RECORD), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_POST_FILTER_RECORD), - post_filter_record, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->video.gpu_record, - menu_hash_to_str(MENU_LABEL_VIDEO_GPU_RECORD), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_GPU_RECORD), - gpu_record, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_video_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SETTINGS), parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->ui.suspend_screensaver_enable, - menu_hash_to_str(MENU_LABEL_SUSPEND_SCREENSAVER_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->fps_show, - menu_hash_to_str(MENU_LABEL_FPS_SHOW), - menu_hash_to_str(MENU_LABEL_VALUE_FPS_SHOW), - fps_show, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP(list, list_info, "Platform-specific", &group_info, &subgroup_info, parent_group); - - video_driver_menu_settings((void**)list, (void*)list_info, (void*)&group_info, (void*)&subgroup_info, parent_group); - - END_SUB_GROUP(list, list_info, parent_group); - - END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP(list, list_info, "Monitor", &group_info, &subgroup_info, parent_group); - - CONFIG_UINT( - list, list_info, - &settings->video.monitor_index, - menu_hash_to_str(MENU_LABEL_VIDEO_MONITOR_INDEX), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_MONITOR_INDEX), - monitor_index, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); - menu_settings_list_current_add_range(list, list_info, 0, 1, 1, true, false); - (*list)[list_info->index - 1].get_string_representation = - &setting_get_string_representation_uint_video_monitor_index; - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL)) - { - CONFIG_BOOL( - list, list_info, - &settings->video.fullscreen, - menu_hash_to_str(MENU_LABEL_VIDEO_FULLSCREEN), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FULLSCREEN), - fullscreen, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - } - if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL)) - { - CONFIG_BOOL( - list, list_info, - &settings->video.windowed_fullscreen, - menu_hash_to_str(MENU_LABEL_VIDEO_WINDOWED_FULLSCREEN), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN), - windowed_fullscreen, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - } - - CONFIG_FLOAT( - list, list_info, - &settings->video.refresh_rate, - menu_hash_to_str(MENU_LABEL_VIDEO_REFRESH_RATE), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_REFRESH_RATE), - refresh_rate, - "%.3f Hz", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 0, 0.001, true, false); - - CONFIG_FLOAT( - list, list_info, - &settings->video.refresh_rate, - menu_hash_to_str(MENU_LABEL_VIDEO_REFRESH_RATE_AUTO), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO), - refresh_rate, - "%.3f Hz", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - (*list)[list_info->index - 1].action_start = &setting_action_start_video_refresh_rate_auto; - (*list)[list_info->index - 1].action_ok = &setting_action_ok_video_refresh_rate_auto; - (*list)[list_info->index - 1].action_select = &setting_action_ok_video_refresh_rate_auto; - (*list)[list_info->index - 1].get_string_representation = - &setting_get_string_representation_st_float_video_refresh_rate_auto; - - if (string_is_equal(settings->video.driver, "gl")) - { - CONFIG_BOOL( - list, list_info, - &settings->video.force_srgb_disable, - menu_hash_to_str(MENU_LABEL_VIDEO_FORCE_SRGB_DISABLE), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); - } - - END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP(list, list_info, "Aspect", &group_info, &subgroup_info, parent_group); - CONFIG_UINT( - list, list_info, - &settings->video.aspect_ratio_idx, - menu_hash_to_str(MENU_LABEL_VIDEO_ASPECT_RATIO_INDEX), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX), - aspect_ratio_idx, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd( - list, - list_info, - EVENT_CMD_VIDEO_SET_ASPECT_RATIO); - menu_settings_list_current_add_range( - list, - list_info, - 0, - LAST_ASPECT_RATIO, - 1, - true, - true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - (*list)[list_info->index - 1].get_string_representation = - &setting_get_string_representation_uint_aspect_ratio_index; - - CONFIG_INT( - list, list_info, - &settings->video_viewport_custom.x, - "video_viewport_custom_x", - "Custom Viewport X", - 0, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, -99999, 0, 1, false, false); - menu_settings_list_current_add_cmd( - list, - list_info, - EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); - - CONFIG_INT( - list, list_info, - &settings->video_viewport_custom.y, - "video_viewport_custom_y", - "Custom Viewport Y", - 0, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, -99999, 0, 1, false, false); - menu_settings_list_current_add_cmd( - list, - list_info, - EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); - - CONFIG_UINT( - list, list_info, - &settings->video_viewport_custom.width, - "video_viewport_custom_width", - "Custom Viewport Width", - 0, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 0, 1, true, false); - (*list)[list_info->index - 1].action_start = &setting_action_start_custom_viewport_width; - (*list)[list_info->index - 1].action_left = setting_uint_action_left_custom_viewport_width; - (*list)[list_info->index - 1].action_right = setting_uint_action_right_custom_viewport_width; - menu_settings_list_current_add_cmd( - list, - list_info, - EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); - - CONFIG_UINT( - list, list_info, - &settings->video_viewport_custom.height, - "video_viewport_custom_height", - "Custom Viewport Height", - 0, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 0, 1, true, false); - (*list)[list_info->index - 1].action_start = &setting_action_start_custom_viewport_height; - (*list)[list_info->index - 1].action_left = setting_uint_action_left_custom_viewport_height; - (*list)[list_info->index - 1].action_right = setting_uint_action_right_custom_viewport_height; - menu_settings_list_current_add_cmd( - list, - list_info, - EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); - - END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP(list, list_info, "Scaling", &group_info, &subgroup_info, parent_group); - - if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL)) - { - CONFIG_FLOAT( - list, list_info, - &settings->video.scale, - menu_hash_to_str(MENU_LABEL_VIDEO_SCALE), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SCALE), - scale, - "%.1fx", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 1.0, 10.0, 1.0, true, true); - } - - CONFIG_BOOL( - list, list_info, - &settings->video.scale_integer, - menu_hash_to_str(MENU_LABEL_VIDEO_SCALE_INTEGER), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SCALE_INTEGER), - scale_integer, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd( - list, - list_info, - EVENT_CMD_VIDEO_APPLY_STATE_CHANGES); - -#ifdef GEKKO - CONFIG_UINT( - list, list_info, - &settings->video.viwidth, - menu_hash_to_str(MENU_LABEL_VIDEO_VI_WIDTH), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_VI_WIDTH), - video_viwidth, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 640, 720, 2, true, true); - - CONFIG_BOOL( - list, list_info, - &settings->video.vfilter, - menu_hash_to_str(MENU_LABEL_VIDEO_VFILTER), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_VFILTER), - video_vfilter, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); -#endif - - CONFIG_BOOL( - list, list_info, - &settings->video.smooth, - menu_hash_to_str(MENU_LABEL_VIDEO_SMOOTH), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SMOOTH), - video_smooth, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - - CONFIG_UINT( - list, list_info, - &settings->video.rotation, - menu_hash_to_str(MENU_LABEL_VIDEO_ROTATION), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_ROTATION), - 0, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); - (*list)[list_info->index - 1].get_string_representation = - &setting_get_string_representation_uint_video_rotation; - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP( - list, - list_info, - "Synchronization", - &group_info, - &subgroup_info, - parent_group); - -#if defined(HAVE_THREADS) && !defined(RARCH_CONSOLE) - CONFIG_BOOL( - list, list_info, - &settings->video.threaded, - menu_hash_to_str(MENU_LABEL_VIDEO_THREADED), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_THREADED), - video_threaded, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); -#endif - - CONFIG_BOOL( - list, list_info, - &settings->video.vsync, - menu_hash_to_str(MENU_LABEL_VIDEO_VSYNC), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_VSYNC), - vsync, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_UINT( - list, list_info, - &settings->video.swap_interval, - menu_hash_to_str(MENU_LABEL_VIDEO_SWAP_INTERVAL), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SWAP_INTERVAL), - swap_interval, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_VIDEO_SET_BLOCKING_STATE); - menu_settings_list_current_add_range(list, list_info, 1, 4, 1, true, true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); - - CONFIG_BOOL( - list, list_info, - &settings->video.hard_sync, - menu_hash_to_str(MENU_LABEL_VIDEO_HARD_SYNC), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_HARD_SYNC), - hard_sync, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_UINT( - list, list_info, - &settings->video.hard_sync_frames, - menu_hash_to_str(MENU_LABEL_VIDEO_HARD_SYNC_FRAMES), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES), - hard_sync_frames, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_UINT( - list, list_info, - &settings->video.frame_delay, - menu_hash_to_str(MENU_LABEL_VIDEO_FRAME_DELAY), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FRAME_DELAY), - frame_delay, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 15, 1, true, true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - -#if !defined(RARCH_MOBILE) - CONFIG_BOOL( - list, list_info, - &settings->video.black_frame_insertion, - menu_hash_to_str(MENU_LABEL_VIDEO_BLACK_FRAME_INSERTION), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION), - black_frame_insertion, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); -#endif - END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP( - list, - list_info, - "Miscellaneous", - &group_info, - &subgroup_info, - parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->video.gpu_screenshot, - menu_hash_to_str(MENU_LABEL_VIDEO_GPU_SCREENSHOT), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_GPU_SCREENSHOT), - gpu_screenshot, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_BOOL( - list, list_info, - &settings->video.allow_rotate, - menu_hash_to_str(MENU_LABEL_VIDEO_ALLOW_ROTATE), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_ALLOW_ROTATE), - allow_rotate, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_BOOL( - list, list_info, - &settings->video.crop_overscan, - menu_hash_to_str(MENU_LABEL_VIDEO_CROP_OVERSCAN), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_CROP_OVERSCAN), - crop_overscan, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - - CONFIG_PATH( - list, list_info, - settings->video.softfilter_plugin, - sizeof(settings->video.softfilter_plugin), - menu_hash_to_str(MENU_LABEL_VIDEO_FILTER), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FILTER), - settings->video.filter_dir, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_values(list, list_info, "filt"); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_font_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "Messages", - &group_info, - &subgroup_info, - parent_group); - -#ifndef RARCH_CONSOLE - CONFIG_BOOL( - list, list_info, - &settings->video.font_enable, - menu_hash_to_str(MENU_LABEL_VIDEO_FONT_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FONT_ENABLE), - font_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); -#endif - - CONFIG_PATH( - list, list_info, - settings->video.font_path, - sizeof(settings->video.font_path), - menu_hash_to_str(MENU_LABEL_VIDEO_FONT_PATH), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FONT_PATH), - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - - CONFIG_FLOAT( - list, list_info, - &settings->video.font_size, - menu_hash_to_str(MENU_LABEL_VIDEO_FONT_SIZE), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FONT_SIZE), - font_size, - "%.1f", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 1.00, 100.00, 1.0, true, true); - - CONFIG_FLOAT( - list, list_info, - &settings->video.msg_pos_x, - menu_hash_to_str(MENU_LABEL_VIDEO_MESSAGE_POS_X), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_X), - message_pos_offset_x, - "%.3f", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); - - CONFIG_FLOAT( - list, list_info, - &settings->video.msg_pos_y, - menu_hash_to_str(MENU_LABEL_VIDEO_MESSAGE_POS_Y), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_Y), - message_pos_offset_y, - "%.3f", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_audio_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_SETTINGS), parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - (void)global; - - CONFIG_BOOL( - list, list_info, - &settings->audio.enable, - menu_hash_to_str(MENU_LABEL_AUDIO_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_ENABLE), - audio_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_BOOL( - list, list_info, - &settings->audio.mute_enable, - menu_hash_to_str(MENU_LABEL_AUDIO_MUTE), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_MUTE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_FLOAT( - list, list_info, - &settings->audio.volume, - menu_hash_to_str(MENU_LABEL_AUDIO_VOLUME), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_VOLUME), - audio_volume, - "%.1f", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, -80, 12, 1.0, true, true); - -#ifdef __CELLOS_LV2__ - CONFIG_BOOL( - list, list_info, - &global->console.sound.system_bgm_enable, - menu_hash_to_str(MENU_LABEL_SYSTEM_BGM_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_BGM_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); -#endif - - END_SUB_GROUP(list, list_info, parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP( - list, - list_info, - "Synchronization", - &group_info, - &subgroup_info, - parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->audio.sync, - menu_hash_to_str(MENU_LABEL_AUDIO_SYNC), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_SYNC), - audio_sync, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_UINT( - list, list_info, - &settings->audio.latency, - menu_hash_to_str(MENU_LABEL_AUDIO_LATENCY), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_LATENCY), - g_defaults.settings.out_latency ? - g_defaults.settings.out_latency : out_latency, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 8, 512, 16.0, true, true); - - CONFIG_FLOAT( - list, list_info, - &settings->audio.rate_control_delta, - menu_hash_to_str(MENU_LABEL_AUDIO_RATE_CONTROL_DELTA), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA), - rate_control_delta, - "%.3f", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range( - list, - list_info, - 0, - 0, - 0.001, - true, - false); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_FLOAT( - list, list_info, - &settings->audio.max_timing_skew, - menu_hash_to_str(MENU_LABEL_AUDIO_MAX_TIMING_SKEW), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW), - max_timing_skew, - "%.2f", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range( - list, - list_info, - 0.01, - 0.5, - 0.01, - true, - true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_UINT( - list, list_info, - &settings->audio.block_frames, - menu_hash_to_str(MENU_LABEL_AUDIO_BLOCK_FRAMES), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_BLOCK_FRAMES), - 0, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - END_SUB_GROUP(list, list_info, parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP( - list, - list_info, - "Miscellaneous", - &group_info, - &subgroup_info, - parent_group); - - CONFIG_STRING( - list, list_info, - settings->audio.device, - sizeof(settings->audio.device), - menu_hash_to_str(MENU_LABEL_AUDIO_DEVICE), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_DEVICE), - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT | SD_FLAG_ADVANCED); - - CONFIG_UINT( - list, list_info, - &settings->audio.out_rate, - menu_hash_to_str(MENU_LABEL_AUDIO_OUTPUT_RATE), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_OUTPUT_RATE), - out_rate, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_PATH( - list, list_info, - settings->audio.dsp_plugin, - sizeof(settings->audio.dsp_plugin), - menu_hash_to_str(MENU_LABEL_AUDIO_DSP_PLUGIN), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_DSP_PLUGIN), - settings->audio.filter_dir, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_values(list, list_info, "dsp"); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_DSP_FILTER_INIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_input_hotkey_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - unsigned i; - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_INPUT_HOTKEY_BINDS_BEGIN), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, - parent_group); - - for (i = 0; i < RARCH_BIND_LIST_END; i ++) - { - if (!input_config_bind_map_get_meta(i)) - continue; - - CONFIG_BIND( - list, list_info, - &settings->input.binds[0][i], 0, 0, - strdup(input_config_bind_map_get_base(i)), - strdup(input_config_bind_map_get_desc(i)), - &retro_keybinds_1[i], - &group_info, &subgroup_info, parent_group); - (*list)[list_info->index - 1].bind_type = i + MENU_SETTINGS_BIND_BEGIN; - } - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - - -static bool setting_append_list_input_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - unsigned user; - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_INPUT_SETTINGS_BEGIN), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_UINT( - list, list_info, - &settings->input.max_users, - menu_hash_to_str(MENU_LABEL_INPUT_MAX_USERS), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_MAX_USERS), - input_max_users, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 1, MAX_USERS, 1, true, true); - - CONFIG_UINT( - list, list_info, - &settings->input.poll_type_behavior, - menu_hash_to_str(MENU_LABEL_INPUT_POLL_TYPE_BEHAVIOR), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR), - input_poll_type_behavior, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true); - -#if TARGET_OS_IPHONE - CONFIG_BOOL( - list, list_info, - &settings->input.keyboard_gamepad_enable, - menu_hash_to_str(MENU_LABEL_INPUT_ICADE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_ICADE_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_UINT( - list, list_info, - &settings->input.keyboard_gamepad_mapping_type, - menu_hash_to_str(MENU_LABEL_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE), - 1, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); - - CONFIG_BOOL( - list, list_info, - &settings->input.small_keyboard_enable, - menu_hash_to_str(MENU_LABEL_INPUT_SMALL_KEYBOARD_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); -#endif - -#ifdef ANDROID - CONFIG_BOOL( - list, list_info, - &settings->input.back_as_menu_toggle_enable, - menu_hash_to_str(MENU_LABEL_INPUT_BACK_AS_MENU_TOGGLE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_BACK_AS_MENU_TOGGLE_ENABLE), - back_as_menu_toggle_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); -#endif - - CONFIG_UINT( - list, list_info, - &settings->input.menu_toggle_gamepad_combo, - menu_hash_to_str(MENU_LABEL_INPUT_MENU_TOGGLE_GAMEPAD_COMBO), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_MENU_TOGGLE_GAMEPAD_COMBO), - menu_toggle_gamepad_combo, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true); - - CONFIG_BOOL( - list, list_info, - &settings->input.remap_binds_enable, - menu_hash_to_str(MENU_LABEL_INPUT_REMAP_BINDS_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->input.autodetect_enable, - menu_hash_to_str(MENU_LABEL_INPUT_AUTODETECT_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_AUTODETECT_ENABLE), - input_autodetect_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->input.input_descriptor_label_show, - menu_hash_to_str(MENU_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_BOOL( - list, list_info, - &settings->input.input_descriptor_hide_unbound, - menu_hash_to_str(MENU_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND), - input_descriptor_hide_unbound, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - - END_SUB_GROUP(list, list_info, parent_group); - - - START_SUB_GROUP( - list, - list_info, - "Turbo/Deadzone", - &group_info, - &subgroup_info, - parent_group); - - CONFIG_FLOAT( - list, list_info, - &settings->input.axis_threshold, - menu_hash_to_str(MENU_LABEL_INPUT_AXIS_THRESHOLD), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_AXIS_THRESHOLD), - axis_threshold, - "%.3f", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 1.00, 0.001, true, true); - - CONFIG_UINT( - list, list_info, - &settings->input.turbo_period, - menu_hash_to_str(MENU_LABEL_INPUT_TURBO_PERIOD), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_TURBO_PERIOD), - turbo_period, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 1, 0, 1, true, false); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_UINT( - list, list_info, - &settings->input.turbo_duty_cycle, - menu_hash_to_str(MENU_LABEL_INPUT_DUTY_CYCLE), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_DUTY_CYCLE), - turbo_duty_cycle, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 1, 0, 1, true, false); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - END_SUB_GROUP(list, list_info, parent_group); - - START_SUB_GROUP(list, list_info, "Binds", &group_info, &subgroup_info, parent_group); - - CONFIG_ACTION( - list, list_info, - menu_hash_to_str(MENU_LABEL_INPUT_HOTKEY_BINDS), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_HOTKEY_BINDS), - &group_info, - &subgroup_info, - parent_group); - - for (user = 0; user < MAX_USERS; user++) - { - static char binds_list[MAX_USERS][PATH_MAX_LENGTH]; - static char binds_label[MAX_USERS][PATH_MAX_LENGTH]; - - snprintf(binds_list[user], sizeof(binds_list[user]), "%d_input_binds_list", user + 1); - snprintf(binds_label[user], sizeof(binds_label[user]), "Input User %d Binds", user + 1); - - CONFIG_ACTION( - list, list_info, - binds_list[user], - binds_label[user], - &group_info, - &subgroup_info, - parent_group); - (*list)[list_info->index - 1].index = user + 1; - (*list)[list_info->index - 1].index_offset = user; - } - - END_SUB_GROUP(list, list_info, parent_group); - - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_overlay_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ -#ifdef HAVE_OVERLAY - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->input.overlay_enable, - menu_hash_to_str(MENU_LABEL_INPUT_OVERLAY_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_OVERLAY_ENABLE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; - - CONFIG_BOOL( - list, list_info, - &settings->input.overlay_enable_autopreferred, - menu_hash_to_str(MENU_LABEL_OVERLAY_AUTOLOAD_PREFERRED), - menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; - - CONFIG_BOOL( - list, list_info, - &settings->input.overlay_hide_in_menu, - menu_hash_to_str(MENU_LABEL_INPUT_OVERLAY_HIDE_IN_MENU), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU), - overlay_hide_in_menu, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; - - CONFIG_BOOL( - list, list_info, - &settings->osk.enable, - menu_hash_to_str(MENU_LABEL_INPUT_OSK_OVERLAY_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_OSK_OVERLAY_ENABLE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_PATH( - list, list_info, - settings->input.overlay, - sizeof(settings->input.overlay), - menu_hash_to_str(MENU_LABEL_OVERLAY_PRESET), - menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_PRESET), - settings->overlay_directory, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_values(list, list_info, "cfg"); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_OVERLAY_INIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - - CONFIG_FLOAT( - list, list_info, - &settings->input.overlay_opacity, - menu_hash_to_str(MENU_LABEL_OVERLAY_OPACITY), - menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_OPACITY), - 0.7f, - "%.2f", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_OVERLAY_SET_ALPHA_MOD); - menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - - CONFIG_FLOAT( - list, list_info, - &settings->input.overlay_scale, - menu_hash_to_str(MENU_LABEL_OVERLAY_SCALE), - menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_SCALE), - 1.0f, - "%.2f", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_OVERLAY_SET_SCALE_FACTOR); - menu_settings_list_current_add_range(list, list_info, 0, 2, 0.01, true, true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - - END_SUB_GROUP(list, list_info, parent_group); - - START_SUB_GROUP(list, list_info, "Onscreen Keyboard Overlay", &group_info, &subgroup_info, parent_group); - - CONFIG_PATH( - list, list_info, - settings->osk.overlay, - sizeof(settings->osk.overlay), - menu_hash_to_str(MENU_LABEL_KEYBOARD_OVERLAY_PRESET), - menu_hash_to_str(MENU_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET), - global->dir.osk_overlay, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_values(list, list_info, "cfg"); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); -#endif - - return true; -} - -static bool setting_append_list_menu_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_MENU_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_PATH( - list, list_info, - settings->menu.wallpaper, - sizeof(settings->menu.wallpaper), - menu_hash_to_str(MENU_LABEL_MENU_WALLPAPER), - menu_hash_to_str(MENU_LABEL_VALUE_MENU_WALLPAPER), - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_values(list, list_info, "png"); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - - CONFIG_BOOL( - list, list_info, - &settings->menu.dynamic_wallpaper_enable, - menu_hash_to_str(MENU_LABEL_DYNAMIC_WALLPAPER), - menu_hash_to_str(MENU_LABEL_VALUE_DYNAMIC_WALLPAPER), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - - CONFIG_BOOL( - list, list_info, - &settings->menu.pause_libretro, - menu_hash_to_str(MENU_LABEL_PAUSE_LIBRETRO), - menu_hash_to_str(MENU_LABEL_VALUE_PAUSE_LIBRETRO), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_MENU_PAUSE_LIBRETRO); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - - CONFIG_BOOL( - list, list_info, - &settings->menu.mouse.enable, - menu_hash_to_str(MENU_LABEL_MOUSE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_MOUSE_ENABLE), - def_mouse_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->menu.pointer.enable, - menu_hash_to_str(MENU_LABEL_POINTER_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_POINTER_ENABLE), - pointer_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->menu.linear_filter, - menu_hash_to_str(MENU_LABEL_MENU_LINEAR_FILTER), - menu_hash_to_str(MENU_LABEL_VALUE_MENU_LINEAR_FILTER), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - -#ifdef RARCH_MOBILE - /* We don't want mobile users being able to switch this off. */ - (*list)[list_info->index - 1].action_left = NULL; - (*list)[list_info->index - 1].action_right = NULL; - (*list)[list_info->index - 1].action_start = NULL; -#endif - - END_SUB_GROUP(list, list_info, parent_group); - - START_SUB_GROUP(list, list_info, "Navigation", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->menu.navigation.wraparound.enable, - menu_hash_to_str(MENU_LABEL_NAVIGATION_WRAPAROUND), - menu_hash_to_str(MENU_LABEL_VALUE_NAVIGATION_WRAPAROUND), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP(list, list_info, "Settings View", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->menu.show_advanced_settings, - menu_hash_to_str(MENU_LABEL_SHOW_ADVANCED_SETTINGS), - menu_hash_to_str(MENU_LABEL_VALUE_SHOW_ADVANCED_SETTINGS), - show_advanced_settings, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - -#ifdef HAVE_THREADS - CONFIG_BOOL( - list, list_info, - &settings->threaded_data_runloop_enable, - menu_hash_to_str(MENU_LABEL_THREADED_DATA_RUNLOOP_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE), - threaded_data_runloop_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); -#endif - - /* These colors are hints. The menu driver is not required to use them. */ - CONFIG_HEX( - list, list_info, - &settings->menu.entry_normal_color, - menu_hash_to_str(MENU_LABEL_ENTRY_NORMAL_COLOR), - menu_hash_to_str(MENU_LABEL_VALUE_ENTRY_NORMAL_COLOR), - menu_entry_normal_color, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_HEX( - list, list_info, - &settings->menu.entry_hover_color, - menu_hash_to_str(MENU_LABEL_ENTRY_HOVER_COLOR), - menu_hash_to_str(MENU_LABEL_VALUE_ENTRY_HOVER_COLOR), - menu_entry_hover_color, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_HEX( - list, list_info, - &settings->menu.title_color, - menu_hash_to_str(MENU_LABEL_TITLE_COLOR), - menu_hash_to_str(MENU_LABEL_VALUE_TITLE_COLOR), - menu_title_color, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - END_SUB_GROUP(list, list_info, parent_group); - - - START_SUB_GROUP(list, list_info, "Display", &group_info, &subgroup_info, parent_group); - - /* only glui uses these values, don't show them on other drivers */ - if (string_is_equal(settings->menu.driver, "glui")) - { - CONFIG_BOOL( - list, list_info, - &settings->menu.dpi.override_enable, - menu_hash_to_str(MENU_LABEL_DPI_OVERRIDE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_DPI_OVERRIDE_ENABLE), - menu_dpi_override_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_UINT( - list, list_info, - &settings->menu.dpi.override_value, - menu_hash_to_str(MENU_LABEL_DPI_OVERRIDE_VALUE), - menu_hash_to_str(MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE), - menu_dpi_override_value, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 72, 999, 1, true, true); - } - /* only XMB uses these values, don't show them on other drivers */ - if (string_is_equal(settings->menu.driver, "xmb")) - { - CONFIG_UINT( - list, list_info, - &settings->menu.xmb_alpha_factor, - menu_hash_to_str(MENU_LABEL_XMB_ALPHA_FACTOR), - menu_hash_to_str(MENU_LABEL_VALUE_XMB_ALPHA_FACTOR), - xmb_alpha_factor, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 100, 1, true, true); - - CONFIG_UINT( - list, list_info, - &settings->menu.xmb_scale_factor, - menu_hash_to_str(MENU_LABEL_XMB_SCALE_FACTOR), - menu_hash_to_str(MENU_LABEL_VALUE_XMB_SCALE_FACTOR), - xmb_scale_factor, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 100, 1, true, true); - - CONFIG_PATH( - list, list_info, - settings->menu.xmb_font, - sizeof(settings->menu.xmb_font), - menu_hash_to_str(MENU_LABEL_XMB_FONT), - menu_hash_to_str(MENU_LABEL_VALUE_XMB_FONT), - settings->menu.xmb_font, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - } - - CONFIG_BOOL( - list, list_info, - &settings->menu_show_start_screen, - menu_hash_to_str(MENU_LABEL_RGUI_SHOW_START_SCREEN), - menu_hash_to_str(MENU_LABEL_VALUE_RGUI_SHOW_START_SCREEN), - default_menu_show_start_screen, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->menu.boxart_enable, - menu_hash_to_str(MENU_LABEL_BOXART), - menu_hash_to_str(MENU_LABEL_VALUE_BOXART), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->menu.timedate_enable, - menu_hash_to_str(MENU_LABEL_TIMEDATE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_TIMEDATE_ENABLE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->menu.core_enable, - menu_hash_to_str(MENU_LABEL_CORE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_CORE_ENABLE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -#if defined(HAVE_IMAGEVIEWER) || defined(HAVE_FFMPEG) -static bool setting_append_list_multimedia_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - (void)settings; - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_MULTIMEDIA_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - if (!string_is_equal(settings->record.driver, "null")) - CONFIG_BOOL( - list, list_info, - &settings->multimedia.builtin_mediaplayer_enable, - menu_hash_to_str(MENU_LABEL_USE_BUILTIN_PLAYER), - menu_hash_to_str(MENU_LABEL_VALUE_USE_BUILTIN_PLAYER), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - -#ifdef HAVE_IMAGEVIEWER - CONFIG_BOOL( - list, list_info, - &settings->multimedia.builtin_imageviewer_enable, - menu_hash_to_str(MENU_LABEL_USE_BUILTIN_IMAGE_VIEWER), - menu_hash_to_str(MENU_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); -#endif - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} -#endif - -static bool setting_append_list_ui_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_UI_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->video.disable_composition, - menu_hash_to_str(MENU_LABEL_VIDEO_DISABLE_COMPOSITION), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION), - disable_composition, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - - CONFIG_BOOL( - list, list_info, - &settings->pause_nonactive, - menu_hash_to_str(MENU_LABEL_PAUSE_NONACTIVE), - menu_hash_to_str(MENU_LABEL_VALUE_PAUSE_NONACTIVE), - pause_nonactive, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->ui.companion_enable, - menu_hash_to_str(MENU_LABEL_UI_COMPANION_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_UI_COMPANION_ENABLE), - ui_companion_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_BOOL( - list, list_info, - &settings->ui.companion_start_on_boot, - menu_hash_to_str(MENU_LABEL_UI_COMPANION_START_ON_BOOT), - menu_hash_to_str(MENU_LABEL_VALUE_UI_COMPANION_START_ON_BOOT), - ui_companion_start_on_boot, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_BOOL( - list, list_info, - &settings->ui.menubar_enable, - menu_hash_to_str(MENU_LABEL_UI_MENUBAR_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_UI_MENUBAR_ENABLE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_menu_file_browser_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->menu.navigation.browser.filter.supported_extensions_enable, - menu_hash_to_str(MENU_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_cheevos_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ -#ifdef HAVE_CHEEVOS - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_CHEEVOS_SETTINGS), - parent_group); - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->cheevos.enable, - menu_hash_to_str(MENU_LABEL_CHEEVOS_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->cheevos.test_unofficial, - menu_hash_to_str(MENU_LABEL_CHEEVOS_TEST_UNOFFICIAL), - menu_hash_to_str(MENU_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->cheevos.hardcore_mode_enable, - menu_hash_to_str(MENU_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_CHEEVOS_HARDCORE_MODE_TOGGLE); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); -#endif - - return true; -} - -static bool setting_append_list_core_updater_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ -#ifdef HAVE_NETWORKING - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_SETTINGS), - parent_group); - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_STRING( - list, list_info, - settings->network.buildbot_url, - sizeof(settings->network.buildbot_url), - menu_hash_to_str(MENU_LABEL_CORE_UPDATER_BUILDBOT_URL), - menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL), - buildbot_server_url, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - - CONFIG_STRING( - list, list_info, - settings->network.buildbot_assets_url, - sizeof(settings->network.buildbot_assets_url), - menu_hash_to_str(MENU_LABEL_BUILDBOT_ASSETS_URL), - menu_hash_to_str(MENU_LABEL_VALUE_BUILDBOT_ASSETS_URL), - buildbot_assets_server_url, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - - CONFIG_BOOL( - list, list_info, - &settings->network.buildbot_auto_extract_archive, - menu_hash_to_str(MENU_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE), - menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); -#endif - - return true; -} - -static bool setting_append_list_netplay_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ -#if defined(HAVE_NETWORK_CMD) - unsigned user; -#endif -#ifdef HAVE_NETPLAY - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_NETWORK_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "Netplay", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &global->netplay.enable, - menu_hash_to_str(MENU_LABEL_NETPLAY_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &settings->input.netplay_client_swap_input, - menu_hash_to_str(MENU_LABEL_NETPLAY_CLIENT_SWAP_INPUT), - menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT), - netplay_client_swap_input, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_STRING( - list, list_info, - global->netplay.server, - sizeof(global->netplay.server), - menu_hash_to_str(MENU_LABEL_NETPLAY_IP_ADDRESS), - menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_IP_ADDRESS), - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - - CONFIG_BOOL( - list, list_info, - &global->netplay.is_client, - menu_hash_to_str(MENU_LABEL_NETPLAY_MODE), - menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_MODE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_BOOL( - list, list_info, - &global->netplay.is_spectate, - menu_hash_to_str(MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_UINT( - list, list_info, - &global->netplay.sync_frames, - menu_hash_to_str(MENU_LABEL_NETPLAY_DELAY_FRAMES), - menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_DELAY_FRAMES), - 0, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 10, 1, true, false); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_UINT( - list, list_info, - &global->netplay.port, - menu_hash_to_str(MENU_LABEL_NETPLAY_TCP_UDP_PORT), - menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_TCP_UDP_PORT), - RARCH_DEFAULT_PORT, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - - END_SUB_GROUP(list, list_info, parent_group); - - START_SUB_GROUP( - list, - list_info, - "Miscellaneous", - &group_info, - &subgroup_info, - parent_group); - - -#if defined(HAVE_NETWORK_CMD) - CONFIG_BOOL( - list, list_info, - &settings->network_cmd_enable, - menu_hash_to_str(MENU_LABEL_NETWORK_CMD_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_NETWORK_CMD_ENABLE), - network_cmd_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_UINT( - list, list_info, - &settings->network_cmd_port, - menu_hash_to_str(MENU_LABEL_NETWORK_CMD_PORT), - menu_hash_to_str(MENU_LABEL_VALUE_NETWORK_CMD_PORT), - network_cmd_port, - &group_info, - &subgroup_info, - parent_group, - NULL, - NULL); - menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_BOOL( - list, list_info, - &settings->network_remote_enable, - menu_hash_to_str(MENU_LABEL_NETWORK_REMOTE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_NETWORK_REMOTE_ENABLE), - "", /* todo: add default */ - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - CONFIG_UINT( - list, list_info, - &settings->network_remote_base_port, - menu_hash_to_str(MENU_LABEL_NETWORK_REMOTE_PORT), - /* todo: localization */ - "Network Remote Base Port", - network_remote_base_port, - &group_info, - &subgroup_info, - parent_group, - NULL, - NULL); - menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - for(user = 0; user < settings->input.max_users; user++) - { - char s1[64], s2[64]; - - snprintf(s1, sizeof(s1), "%s_user_p%d", menu_hash_to_str(MENU_LABEL_NETWORK_REMOTE_ENABLE), user + 1); - snprintf(s2, sizeof(s2), "User %d Remote Enable", user + 1); - - - CONFIG_BOOL( - list, list_info, - &settings->network_remote_enable_user[user], - /* todo: figure out this value, it's working fine but I don't think this is correct */ - strdup(s1), - strdup(s2), - "", /* todo: add default */ - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - } - - CONFIG_BOOL( - list, list_info, - &settings->stdin_cmd_enable, - menu_hash_to_str(MENU_LABEL_STDIN_CMD_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_STDIN_CMD_ENABLE), - stdin_cmd_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); -#endif - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); -#endif - - return true; -} - -static bool setting_append_list_playlist_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_PLAYLIST_SETTINGS_BEGIN), - parent_group); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "History", &group_info, &subgroup_info, parent_group); - - CONFIG_BOOL( - list, list_info, - &settings->history_list_enable, - menu_hash_to_str(MENU_LABEL_HISTORY_LIST_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_HISTORY_LIST_ENABLE), - true, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - - CONFIG_UINT( - list, list_info, - &settings->content_history_size, - menu_hash_to_str(MENU_LABEL_CONTENT_HISTORY_SIZE), - menu_hash_to_str(MENU_LABEL_CONTENT_HISTORY_SIZE), - default_content_history_size, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, 0, 1.0, true, false); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_accounts_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_LIST_END), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - (void)subgroup_info; - -#ifdef HAVE_CHEEVOS - CONFIG_ACTION( - list, list_info, - menu_hash_to_str(MENU_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS), - menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS), - &group_info, - &subgroup_info, - parent_group); -#endif - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -#ifdef HAVE_CHEEVOS -static bool setting_append_list_accounts_cheevos_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_STRING( - list, list_info, - settings->cheevos.username, - sizeof(settings->cheevos.username), - menu_hash_to_str(MENU_LABEL_CHEEVOS_USERNAME), - menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME), - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - - CONFIG_STRING( - list, list_info, - settings->cheevos.password, - sizeof(settings->cheevos.password), - menu_hash_to_str(MENU_LABEL_CHEEVOS_PASSWORD), - menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD), - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} -#endif - -static bool setting_append_list_user_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_USER_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_ACTION( - list, list_info, - menu_hash_to_str(MENU_LABEL_ACCOUNTS_LIST), - menu_hash_to_str(MENU_LABEL_VALUE_ACCOUNTS_LIST), - &group_info, - &subgroup_info, - parent_group); - - CONFIG_STRING( - list, list_info, - settings->username, - sizeof(settings->username), - menu_hash_to_str(MENU_LABEL_NETPLAY_NICKNAME), - menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_NICKNAME), - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - - CONFIG_UINT( - list, list_info, - &settings->user_language, - menu_hash_to_str(MENU_LABEL_USER_LANGUAGE), - menu_hash_to_str(MENU_LABEL_VALUE_USER_LANGUAGE), - def_user_language, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range( - list, - list_info, - 0, - RETRO_LANGUAGE_LAST-1, - 1, - true, - true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_MENU_REFRESH); - (*list)[list_info->index - 1].get_string_representation = - &setting_get_string_representation_uint_user_language; - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_directory_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_DIRECTORY_SETTINGS), - parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); - - CONFIG_DIR( - list, list_info, - settings->system_directory, - sizeof(settings->system_directory), - menu_hash_to_str(MENU_LABEL_SYSTEM_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_CONTENT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->core_assets_directory, - sizeof(settings->core_assets_directory), - menu_hash_to_str(MENU_LABEL_CORE_ASSETS_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_CORE_ASSETS_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->assets_directory, - sizeof(settings->assets_directory), - menu_hash_to_str(MENU_LABEL_ASSETS_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_ASSETS_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->dynamic_wallpapers_directory, - sizeof(settings->dynamic_wallpapers_directory), - menu_hash_to_str(MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->boxarts_directory, - sizeof(settings->boxarts_directory), - menu_hash_to_str(MENU_LABEL_BOXARTS_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_BOXARTS_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->menu_content_directory, - sizeof(settings->menu_content_directory), - menu_hash_to_str(MENU_LABEL_RGUI_BROWSER_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_RGUI_BROWSER_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - - CONFIG_DIR( - list, list_info, - settings->menu_config_directory, - sizeof(settings->menu_config_directory), - menu_hash_to_str(MENU_LABEL_RGUI_CONFIG_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_RGUI_CONFIG_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - - CONFIG_DIR( - list, list_info, - settings->libretro_directory, - sizeof(settings->libretro_directory), - menu_hash_to_str(MENU_LABEL_LIBRETRO_DIR_PATH), - menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH), - g_defaults.dir.core, - menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_CORE_INFO_INIT); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->libretro_info_path, - sizeof(settings->libretro_info_path), - menu_hash_to_str(MENU_LABEL_LIBRETRO_INFO_PATH), - menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_INFO_PATH), - g_defaults.dir.core_info, - menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_CORE_INFO_INIT); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - -#ifdef HAVE_LIBRETRODB - CONFIG_DIR( - list, list_info, - settings->content_database, - sizeof(settings->content_database), - menu_hash_to_str(MENU_LABEL_CONTENT_DATABASE_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->cursor_directory, - sizeof(settings->cursor_directory), - menu_hash_to_str(MENU_LABEL_CURSOR_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_CURSOR_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); -#endif - - CONFIG_DIR( - list, list_info, - settings->cheat_database, - sizeof(settings->cheat_database), - menu_hash_to_str(MENU_LABEL_CHEAT_DATABASE_PATH), - menu_hash_to_str(MENU_LABEL_VALUE_CHEAT_DATABASE_PATH), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->video.filter_dir, - sizeof(settings->video.filter_dir), - menu_hash_to_str(MENU_LABEL_VIDEO_FILTER_DIR), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_FILTER_DIR), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->audio.filter_dir, - sizeof(settings->audio.filter_dir), - menu_hash_to_str(MENU_LABEL_AUDIO_FILTER_DIR), - menu_hash_to_str(MENU_LABEL_VALUE_AUDIO_FILTER_DIR), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->video.shader_dir, - sizeof(settings->video.shader_dir), - menu_hash_to_str(MENU_LABEL_VIDEO_SHADER_DIR), - menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SHADER_DIR), - g_defaults.dir.shader, - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - if (!string_is_equal(settings->record.driver, "null")) - { - CONFIG_DIR( - list, list_info, - global->record.output_dir, - sizeof(global->record.output_dir), - menu_hash_to_str(MENU_LABEL_RECORDING_OUTPUT_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - global->record.config_dir, - sizeof(global->record.config_dir), - menu_hash_to_str(MENU_LABEL_RECORDING_CONFIG_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - } -#ifdef HAVE_OVERLAY - CONFIG_DIR( - list, list_info, - settings->overlay_directory, - sizeof(settings->overlay_directory), - menu_hash_to_str(MENU_LABEL_OVERLAY_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_DIRECTORY), - g_defaults.dir.overlay, - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - global->dir.osk_overlay, - sizeof(global->dir.osk_overlay), - menu_hash_to_str(MENU_LABEL_OSK_OVERLAY_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_OSK_OVERLAY_DIRECTORY), - g_defaults.dir.osk_overlay, - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); -#endif - - CONFIG_DIR( - list, list_info, - settings->screenshot_directory, - sizeof(settings->screenshot_directory), - menu_hash_to_str(MENU_LABEL_SCREENSHOT_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_SCREENSHOT_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_CONTENT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->input.autoconfig_dir, - sizeof(settings->input.autoconfig_dir), - menu_hash_to_str(MENU_LABEL_JOYPAD_AUTOCONFIG_DIR), - menu_hash_to_str(MENU_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->input_remapping_directory, - sizeof(settings->input_remapping_directory), - menu_hash_to_str(MENU_LABEL_INPUT_REMAPPING_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->playlist_directory, - sizeof(settings->playlist_directory), - menu_hash_to_str(MENU_LABEL_PLAYLIST_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_PLAYLIST_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - global->dir.savefile, - sizeof(global->dir.savefile), - menu_hash_to_str(MENU_LABEL_SAVEFILE_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_SAVEFILE_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_CONTENT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - global->dir.savestate, - sizeof(global->dir.savestate), - menu_hash_to_str(MENU_LABEL_SAVESTATE_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_CONTENT), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - CONFIG_DIR( - list, list_info, - settings->cache_directory, - sizeof(settings->cache_directory), - menu_hash_to_str(MENU_LABEL_CACHE_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_CACHE_DIRECTORY), - "", - menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - settings_data_list_current_add_flags( - list, - list_info, - SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - -static bool setting_append_list_privacy_options( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - const char *parent_group) -{ - rarch_setting_group_info_t group_info = {0}; - rarch_setting_group_info_t subgroup_info = {0}; - settings_t *settings = config_get_ptr(); - - START_GROUP(list, list_info, &group_info, - menu_hash_to_str(MENU_LABEL_VALUE_PRIVACY_SETTINGS), parent_group); - - parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); - - START_SUB_GROUP(list, list_info, "State", - &group_info, &subgroup_info, parent_group); - - if (!string_is_equal(settings->camera.driver, "null")) - { - CONFIG_BOOL( - list, list_info, - &settings->camera.allow, - menu_hash_to_str(MENU_LABEL_CAMERA_ALLOW), - menu_hash_to_str(MENU_LABEL_VALUE_CAMERA_ALLOW), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - } - - if (!string_is_equal(settings->location.driver, "null")) - { - CONFIG_BOOL( - list, list_info, - &settings->location.allow, - menu_hash_to_str(MENU_LABEL_LOCATION_ALLOW), - menu_hash_to_str(MENU_LABEL_VALUE_LOCATION_ALLOW), - false, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - } - - END_SUB_GROUP(list, list_info, parent_group); - END_GROUP(list, list_info, parent_group); - - return true; -} - static bool menu_setting_free(void *data) { rarch_setting_t *setting = (rarch_setting_t*)data; @@ -7421,110 +7186,55 @@ static bool menu_setting_free(void *data) static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_info) { unsigned i; - enum settings_list_type list_types[3]; - rarch_setting_t* resized_list = NULL; - rarch_setting_t terminator = { ST_NONE }; - const char *root = menu_hash_to_str(MENU_VALUE_MAIN_MENU); - rarch_setting_t *list = (rarch_setting_t*)calloc(list_info->size, sizeof(*list)); + rarch_setting_t* resized_list = NULL; + enum settings_list_type list_types[] = + { + SETTINGS_LIST_MAIN_MENU, + SETTINGS_LIST_DRIVERS, + SETTINGS_LIST_CORE, + SETTINGS_LIST_CONFIGURATION, + SETTINGS_LIST_LOGGING, + SETTINGS_LIST_SAVING, + SETTINGS_LIST_REWIND, + SETTINGS_LIST_VIDEO, + SETTINGS_LIST_AUDIO, + SETTINGS_LIST_INPUT, + SETTINGS_LIST_INPUT_HOTKEY, + SETTINGS_LIST_RECORDING, + SETTINGS_LIST_FRAME_THROTTLING, + SETTINGS_LIST_FONT, + SETTINGS_LIST_OVERLAY, + SETTINGS_LIST_MENU, + SETTINGS_LIST_MENU_FILE_BROWSER, + SETTINGS_LIST_MULTIMEDIA, + SETTINGS_LIST_USER_INTERFACE, + SETTINGS_LIST_PLAYLIST, + SETTINGS_LIST_CHEEVOS, + SETTINGS_LIST_CORE_UPDATER, + SETTINGS_LIST_NETPLAY, + SETTINGS_LIST_USER, + SETTINGS_LIST_USER_ACCOUNTS, + SETTINGS_LIST_USER_ACCOUNTS_CHEEVOS, + SETTINGS_LIST_DIRECTORY, + SETTINGS_LIST_PRIVACY + }; + rarch_setting_t terminator = + { + ST_NONE + }; + const char *root = menu_hash_to_str(MENU_VALUE_MAIN_MENU); + rarch_setting_t *list = (rarch_setting_t*)calloc( + list_info->size, sizeof(*list)); + if (!list) goto error; - list_types[0] = SETTINGS_LIST_MAIN_MENU; - list_types[1] = SETTINGS_LIST_DRIVERS; - list_types[2] = SETTINGS_LIST_CORE; - - for (i = 0; i < 3; i++) + for (i = 0; i < ARRAY_SIZE(list_types); i++) { if (!setting_append_list(list_types[i], &list, list_info, root)) goto error; } - if (!setting_append_list_configuration_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_logging_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_saving_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_rewind_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_video_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_audio_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_input_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_input_hotkey_options(&list, list_info, root)) - goto error; - - { - settings_t *settings = config_get_ptr(); - - if (!string_is_equal(settings->record.driver, "null")) - { - if (!setting_append_list_recording_options(&list, list_info, root)) - goto error; - } - } - - if (!setting_append_list_frame_throttling_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_font_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_overlay_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_menu_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_menu_file_browser_options(&list, list_info, root)) - goto error; - -#if defined(HAVE_IMAGEVIEWER) || defined(HAVE_FFMPEG) - if (!setting_append_list_multimedia_options(&list, list_info, root)) - goto error; -#endif - - if (!setting_append_list_ui_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_playlist_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_cheevos_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_core_updater_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_netplay_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_user_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_accounts_options(&list, list_info, root)) - goto error; - -#ifdef HAVE_CHEEVOS - if (!setting_append_list_accounts_cheevos_options(&list, list_info, root)) - goto error; -#endif - - if (!setting_append_list_directory_options(&list, list_info, root)) - goto error; - - if (!setting_append_list_privacy_options(&list, list_info, root)) - goto error; - if (!(menu_settings_list_append(&list, list_info, terminator))) goto error;