diff --git a/settings_data.c b/settings_data.c index a2af73e463..83c630d267 100644 --- a/settings_data.c +++ b/settings_data.c @@ -2182,19 +2182,19 @@ static void data_list_current_add_cmd( (*list)[list_info->index -1].cmd_trigger.idx = values; } -#define START_GROUP(group_info, NAME) group_info.name = NAME; if (!(data_list_append(&list, list_info, setting_data_group_setting (ST_GROUP, NAME)))) goto error -#define END_GROUP(list, list_info) if (!(data_list_append(&list, list_info, setting_data_group_setting (ST_END_GROUP, 0)))) goto error -#define START_SUB_GROUP(list, list_info, NAME, group_info, subgroup_info) subgroup_info.name = NAME; if (!(data_list_append(&list, list_info, setting_data_subgroup_setting (ST_SUB_GROUP, NAME, group_info)))) goto error -#define END_SUB_GROUP(list, list_info) if (!(data_list_append(&list, list_info, setting_data_group_setting (ST_END_SUB_GROUP, 0)))) goto error -#define CONFIG_BOOL(TARGET, NAME, SHORT, DEF, OFF, ON, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!data_list_append(&list, list_info, setting_data_bool_setting (NAME, SHORT, &TARGET, DEF, OFF, ON, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER))) goto error -#define CONFIG_INT(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(&list, list_info, setting_data_int_setting (NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) goto error -#define CONFIG_UINT(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(&list, list_info, setting_data_uint_setting (NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) goto error -#define CONFIG_FLOAT(TARGET, NAME, SHORT, DEF, ROUNDING, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(&list, list_info, setting_data_float_setting (NAME, SHORT, &TARGET, DEF, ROUNDING, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) goto error -#define CONFIG_PATH(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(&list, list_info, setting_data_string_setting(ST_PATH, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) goto error -#define CONFIG_DIR(TARGET, NAME, SHORT, DEF, EMPTY, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(&list, list_info, setting_data_string_setting(ST_DIR, NAME, SHORT, TARGET, sizeof(TARGET), DEF, EMPTY, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) goto error -#define CONFIG_STRING(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(&list, list_info, setting_data_string_setting(ST_STRING, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) goto error +#define START_GROUP(group_info, NAME) group_info.name = NAME; if (!(data_list_append(list, list_info, setting_data_group_setting (ST_GROUP, NAME)))) return false +#define END_GROUP(list, list_info) if (!(data_list_append(list, list_info, setting_data_group_setting (ST_END_GROUP, 0)))) return false +#define START_SUB_GROUP(list, list_info, NAME, group_info, subgroup_info) subgroup_info.name = NAME; if (!(data_list_append(list, list_info, setting_data_subgroup_setting (ST_SUB_GROUP, NAME, group_info)))) return false +#define END_SUB_GROUP(list, list_info) if (!(data_list_append(list, list_info, setting_data_group_setting (ST_END_SUB_GROUP, 0)))) return false +#define CONFIG_BOOL(TARGET, NAME, SHORT, DEF, OFF, ON, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!data_list_append(list, list_info, setting_data_bool_setting (NAME, SHORT, &TARGET, DEF, OFF, ON, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))return false +#define CONFIG_INT(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(list, list_info, setting_data_int_setting (NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false +#define CONFIG_UINT(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(list, list_info, setting_data_uint_setting (NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false +#define CONFIG_FLOAT(TARGET, NAME, SHORT, DEF, ROUNDING, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(list, list_info, setting_data_float_setting (NAME, SHORT, &TARGET, DEF, ROUNDING, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false +#define CONFIG_PATH(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(list, list_info, setting_data_string_setting(ST_PATH, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false +#define CONFIG_DIR(TARGET, NAME, SHORT, DEF, EMPTY, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(list, list_info, setting_data_string_setting(ST_DIR, NAME, SHORT, TARGET, sizeof(TARGET), DEF, EMPTY, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false +#define CONFIG_STRING(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) if (!(data_list_append(list, list_info, setting_data_string_setting(ST_STRING, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false #define CONFIG_HEX(TARGET, NAME, SHORT, group_info, subgroup_info) -#define CONFIG_BIND(TARGET, PLAYER, NAME, SHORT, DEF, group_info, subgroup_info) if (!(data_list_append(&list, list_info, setting_data_bind_setting (NAME, SHORT, &TARGET, PLAYER, DEF, group_info, subgroup_info)))) goto error +#define CONFIG_BIND(TARGET, PLAYER, NAME, SHORT, DEF, group_info, subgroup_info) if (!(data_list_append(list, list_info, setting_data_bind_setting (NAME, SHORT, &TARGET, PLAYER, DEF, group_info, subgroup_info)))) return false #ifdef GEKKO @@ -2203,6 +2203,90 @@ static void data_list_current_add_cmd( #define MAX_GAMMA_SETTING 1 #endif +bool setting_data_get_list_main_menu_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + static bool lists[32]; + + START_GROUP(group_info, "Main Menu"); + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); +#if defined(HAVE_DYNAMIC) || defined(HAVE_LIBRETRO_MANAGEMENT) + CONFIG_BOOL(lists[0], "core_list", "Core", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); +#endif + if (g_defaults.history) + { + CONFIG_BOOL(lists[1], "history_list", "Load Content (History)", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + } + if (driver.menu && g_extern.core_info && core_info_list_num_info_files(g_extern.core_info)) + { + CONFIG_BOOL(lists[2], "detect_core_list", "Load Content (Detect Core)", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + } + CONFIG_BOOL(lists[3], "load_content", "Load Content", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + CONFIG_BOOL(lists[4], "core_options", "Core Options", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + CONFIG_BOOL(lists[5], "core_information", "Core Information", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + if (g_extern.main_is_init + && !g_extern.libretro_dummy + && g_extern.system.disk_control.get_num_images) + { + CONFIG_BOOL(lists[6], "disk_options", "Core Disk Options", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + } + CONFIG_BOOL(lists[7], "settings", "Settings", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + if (g_extern.perfcnt_enable) + { + CONFIG_BOOL(lists[8], "performance_counters", "Performance Counters", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + } + if (g_extern.main_is_init && !g_extern.libretro_dummy) + { + CONFIG_BOOL(lists[9], "savestate", "Save State", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_cmd (list, list_info, RARCH_CMD_SAVE_STATE); + data_list_current_add_flags(list, list_info, SD_FLAG_EXIT); + CONFIG_BOOL(lists[10], "loadstate", "Load State", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_cmd (list, list_info, RARCH_CMD_LOAD_STATE); + data_list_current_add_flags(list, list_info, SD_FLAG_EXIT); + CONFIG_BOOL(lists[11], "take_screenshot", "Take Screenshot", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_cmd (list, list_info, RARCH_CMD_TAKE_SCREENSHOT); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + CONFIG_BOOL(lists[12], "resume_content", "Resume Content", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_cmd (list, list_info, RARCH_CMD_RESUME); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + data_list_current_add_flags(list, list_info, SD_FLAG_EXIT); + CONFIG_BOOL(lists[13], "restart_content", "Restart Content", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_cmd(list, list_info, RARCH_CMD_RESET); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + data_list_current_add_flags(list, list_info, SD_FLAG_EXIT); + } +#ifndef HAVE_DYNAMIC + CONFIG_BOOL(lists[14], "restart_retroarch", "Restart RetroArch", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_cmd(list, list_info, RARCH_CMD_RESTART_RETROARCH); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); +#endif + CONFIG_BOOL(lists[15], "configurations", "Configurations", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + CONFIG_BOOL(lists[16], "save_new_config", "Save New Config", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_cmd(list, list_info, RARCH_CMD_MENU_SAVE_CONFIG); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + CONFIG_BOOL(lists[17], "help", "Help", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + CONFIG_BOOL(lists[18], "quit_retroarch", "Quit RetroArch", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); + data_list_current_add_cmd(list, list_info, RARCH_CMD_QUIT_RETROARCH); + data_list_current_add_flags(list, list_info, SD_FLAG_PUSH_ACTION); + END_SUB_GROUP(list, list_info); + END_GROUP(list, list_info); + + return true; +} + #ifdef HAVE_MENU rarch_setting_t *setting_data_get_mainmenu(bool regenerate) { @@ -2210,7 +2294,6 @@ rarch_setting_t *setting_data_get_mainmenu(bool regenerate) rarch_setting_group_info_t group_info; rarch_setting_group_info_t subgroup_info; static rarch_setting_t* list = NULL; - static bool lists[32]; (void)group_info; (void)subgroup_info; @@ -2238,78 +2321,8 @@ rarch_setting_t *setting_data_get_mainmenu(bool regenerate) if (!list) goto error; - START_GROUP(group_info, "Main Menu"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); -#if defined(HAVE_DYNAMIC) || defined(HAVE_LIBRETRO_MANAGEMENT) - CONFIG_BOOL(lists[0], "core_list", "Core", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); -#endif - if (g_defaults.history) - { - CONFIG_BOOL(lists[1], "history_list", "Load Content (History)", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - } - if (driver.menu && g_extern.core_info && core_info_list_num_info_files(g_extern.core_info)) - { - CONFIG_BOOL(lists[2], "detect_core_list", "Load Content (Detect Core)", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - } - CONFIG_BOOL(lists[3], "load_content", "Load Content", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - CONFIG_BOOL(lists[4], "core_options", "Core Options", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - CONFIG_BOOL(lists[5], "core_information", "Core Information", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - if (g_extern.main_is_init - && !g_extern.libretro_dummy - && g_extern.system.disk_control.get_num_images) - { - CONFIG_BOOL(lists[6], "disk_options", "Core Disk Options", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - } - CONFIG_BOOL(lists[7], "settings", "Settings", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - if (g_extern.perfcnt_enable) - { - CONFIG_BOOL(lists[8], "performance_counters", "Performance Counters", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - } - if (g_extern.main_is_init && !g_extern.libretro_dummy) - { - CONFIG_BOOL(lists[9], "savestate", "Save State", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd (&list, list_info, RARCH_CMD_SAVE_STATE); - data_list_current_add_flags(&list, list_info, SD_FLAG_EXIT); - CONFIG_BOOL(lists[10], "loadstate", "Load State", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd (&list, list_info, RARCH_CMD_LOAD_STATE); - data_list_current_add_flags(&list, list_info, SD_FLAG_EXIT); - CONFIG_BOOL(lists[11], "take_screenshot", "Take Screenshot", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd (&list, list_info, RARCH_CMD_TAKE_SCREENSHOT); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - CONFIG_BOOL(lists[12], "resume_content", "Resume Content", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd (&list, list_info, RARCH_CMD_RESUME); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - data_list_current_add_flags(&list, list_info, SD_FLAG_EXIT); - CONFIG_BOOL(lists[13], "restart_content", "Restart Content", false, "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_RESET); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - data_list_current_add_flags(&list, list_info, SD_FLAG_EXIT); - } -#ifndef HAVE_DYNAMIC - CONFIG_BOOL(lists[14], "restart_retroarch", "Restart RetroArch", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_RESTART_RETROARCH); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); -#endif - CONFIG_BOOL(lists[15], "configurations", "Configurations", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - CONFIG_BOOL(lists[16], "save_new_config", "Save New Config", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_MENU_SAVE_CONFIG); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - CONFIG_BOOL(lists[17], "help", "Help", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - CONFIG_BOOL(lists[18], "quit_retroarch", "Quit RetroArch", false, "", "",group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_QUIT_RETROARCH); - data_list_current_add_flags(&list, list_info, SD_FLAG_PUSH_ACTION); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + if (!setting_data_get_list_main_menu_options(&list, list_info)) + goto error; rarch_setting_t terminator = { ST_NONE }; if (!(data_list_append(&list, list_info, terminator))) @@ -2340,68 +2353,57 @@ error: } #endif -rarch_setting_t *setting_data_get_list(void) +bool setting_data_get_list_driver_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) { - int i, player; rarch_setting_group_info_t group_info; rarch_setting_group_info_t subgroup_info; - rarch_setting_info_t *list_info = NULL; - static rarch_setting_t* list = NULL; - - (void)group_info; - (void)subgroup_info; - - if (list) - return list; - - list_info = (rarch_setting_info_t*)calloc(1, sizeof(*list_info)); - if (!list_info) - { - RARCH_ERR("Settings info list allocation failed.\n"); - return NULL; - } - - list_info->index = 0; - list_info->size = 512; - - list = (rarch_setting_t*)malloc(sizeof(rarch_setting_t) * list_info->size); - if (!list) - goto error; START_GROUP(group_info, "Driver Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_STRING(g_settings.input.driver, "input_driver", "Input Driver", config_get_default_input(), group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_IS_DRIVER); + data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); CONFIG_STRING(g_settings.video.driver, "video_driver", "Video Driver", config_get_default_video(), group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_IS_DRIVER); + data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); #ifdef HAVE_OPENGL CONFIG_STRING(g_settings.video.gl_context, "video_gl_context", "OpenGL Context Driver", "", group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_IS_DRIVER); + data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); #endif CONFIG_STRING(g_settings.audio.driver, "audio_driver", "Audio Driver", config_get_default_audio(), group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_IS_DRIVER); + data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); CONFIG_STRING(g_settings.audio.resampler, "audio_resampler_driver", "Audio Resampler Driver", config_get_default_audio_resampler(), group_info.name, subgroup_info.name, NULL, NULL); CONFIG_STRING(g_settings.camera.driver, "camera_driver", "Camera Driver", config_get_default_camera(), group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_IS_DRIVER); + data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); CONFIG_STRING(g_settings.location.driver, "location_driver", "Location Driver", config_get_default_location(), group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_IS_DRIVER); + data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); #ifdef HAVE_MENU CONFIG_STRING(g_settings.menu.driver, "menu_driver", "Menu Driver", config_get_default_menu(), group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_IS_DRIVER); + data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); #endif CONFIG_STRING(g_settings.input.joypad_driver, "input_joypad_driver", "Joypad Driver", config_get_default_joypad(), group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_IS_DRIVER); + data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); CONFIG_STRING(g_settings.input.keyboard_layout, "input_keyboard_layout", "Keyboard Layout", "", group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_IS_DRIVER); + data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +bool setting_data_get_list_general_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "General Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_BOOL(g_extern.verbosity, "log_verbosity", "Logging Verbosity", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_UINT(g_settings.libretro_log_level, "libretro_log_level", "Libretro Logging Level", libretro_log_level, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 3, 1.0, true, true); + data_list_current_add_range(list, list_info, 0, 3, 1.0, true, true); CONFIG_BOOL(g_extern.perfcnt_enable, "perfcnt_enable", "Performance Counters", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_settings.config_save_on_exit, "config_save_on_exit", "Configuration Save On Exit", config_save_on_exit, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); @@ -2409,29 +2411,29 @@ rarch_setting_t *setting_data_get_list(void) CONFIG_BOOL(g_settings.load_dummy_on_core_shutdown, "dummy_on_core_shutdown", "Dummy On Core Shutdown", load_dummy_on_core_shutdown, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_settings.fps_show, "fps_show", "Show Framerate", fps_show, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_settings.rewind_enable, "rewind_enable", "Rewind", rewind_enable, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_REWIND_TOGGLE); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_REWIND_TOGGLE); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); #if 0 CONFIG_SIZE(g_settings.rewind_buffer_size, "rewind_buffer_size", "Rewind Buffer Size", rewind_buffer_size, group_info.name, subgroup_info.name, general_write_handler, general_read_handler) #endif CONFIG_UINT(g_settings.rewind_granularity, "rewind_granularity", "Rewind Granularity", rewind_granularity, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 1, 32768, 1, true, false); + data_list_current_add_range(list, list_info, 1, 32768, 1, true, false); CONFIG_BOOL(g_settings.block_sram_overwrite, "block_sram_overwrite", "SRAM Block overwrite", block_sram_overwrite, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler);; #ifdef HAVE_THREADS CONFIG_UINT(g_settings.autosave_interval, "autosave_interval", "SRAM Autosave", autosave_interval, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_AUTOSAVE_INIT); - data_list_current_add_range(&list, list_info, 0, 0, 10, true, false); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_AUTOSAVE_INIT); + data_list_current_add_range(list, list_info, 0, 0, 10, true, false); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); #endif CONFIG_BOOL(g_settings.video.disable_composition, "video_disable_composition", "Window Compositing Disable", disable_composition, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_REINIT); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_REINIT); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); CONFIG_BOOL(g_settings.pause_nonactive, "pause_nonactive", "Window Unfocus Pause", pause_nonactive, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_settings.fastforward_ratio_throttle_enable, "fastforward_ratio_throttle_enable", "Limit Maximum Run Speed", fastforward_ratio_throttle_enable, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_FLOAT(g_settings.fastforward_ratio, "fastforward_ratio", "Maximum Run Speed", fastforward_ratio, "%.1fx", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 1, 10, 0.1, true, true); + data_list_current_add_range(list, list_info, 1, 10, 0.1, true, true); CONFIG_FLOAT(g_settings.slowmotion_ratio, "slowmotion_ratio", "Slow-Motion Ratio", slowmotion_ratio, "%.1fx", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 1, 10, 1.0, true, true); + data_list_current_add_range(list, list_info, 1, 10, 1.0, true, true); CONFIG_BOOL(g_settings.savestate_auto_index, "savestate_auto_index", "Save State Auto Index", savestate_auto_index, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_settings.savestate_auto_save, "savestate_auto_save", "Auto Save State", savestate_auto_save, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_settings.savestate_auto_load, "savestate_auto_load", "Auto Load State", savestate_auto_load, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); @@ -2448,28 +2450,38 @@ rarch_setting_t *setting_data_get_list(void) END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +bool setting_data_get_list_video_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "Video Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_BOOL(g_settings.video.shared_context, "video_shared_context", "HW Shared Context Enable", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); END_SUB_GROUP(list, list_info); START_SUB_GROUP(list, list_info, "Monitor", group_info.name, subgroup_info); CONFIG_UINT(g_settings.video.monitor_index, "video_monitor_index", "Monitor Index", monitor_index, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_REINIT); - data_list_current_add_range(&list, list_info, 0, 1, 1, true, false); + data_list_current_add_cmd(list, list_info, RARCH_CMD_REINIT); + data_list_current_add_range(list, list_info, 0, 1, 1, true, false); #if !defined(RARCH_CONSOLE) && !defined(RARCH_MOBILE) CONFIG_BOOL(g_settings.video.fullscreen, "video_fullscreen", "Use Fullscreen mode", fullscreen, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_REINIT); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_REINIT); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); #endif CONFIG_BOOL(g_settings.video.windowed_fullscreen, "video_windowed_fullscreen", "Windowed Fullscreen Mode", windowed_fullscreen, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_UINT(g_settings.video.fullscreen_x, "video_fullscreen_x", "Fullscreen Width", fullscreen_x, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_UINT(g_settings.video.fullscreen_y, "video_fullscreen_y", "Fullscreen Height", fullscreen_y, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_FLOAT(g_settings.video.refresh_rate, "video_refresh_rate", "Refresh Rate", refresh_rate, "%.3f Hz", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 0, 0.001, true, false); + data_list_current_add_range(list, list_info, 0, 0, 0.001, true, false); CONFIG_FLOAT(g_settings.video.refresh_rate, "video_refresh_rate_auto", "Estimated Monitor FPS", refresh_rate, "%.3f Hz", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_settings.video.force_srgb_disable, "video_force_srgb_disable", "Force-disable sRGB FBO", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_REINIT); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_REINIT); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); END_SUB_GROUP(list, list_info); START_SUB_GROUP(list, list_info, "Aspect", group_info.name, subgroup_info); @@ -2477,15 +2489,15 @@ rarch_setting_t *setting_data_get_list(void) CONFIG_FLOAT(g_settings.video.aspect_ratio, "video_aspect_ratio", "Aspect Ratio", aspect_ratio, "%.2f", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_settings.video.aspect_ratio_auto, "video_aspect_ratio_auto", "Use Auto Aspect Ratio", aspect_ratio_auto, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_UINT(g_settings.video.aspect_ratio_idx, "aspect_ratio_index", "Aspect Ratio Index", aspect_ratio_idx, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_VIDEO_SET_ASPECT_RATIO); - data_list_current_add_range(&list, list_info, 0, LAST_ASPECT_RATIO, 1, true, true); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_VIDEO_SET_ASPECT_RATIO); + data_list_current_add_range(list, list_info, 0, LAST_ASPECT_RATIO, 1, true, true); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); END_SUB_GROUP(list, list_info); START_SUB_GROUP(list, list_info, "Scaling", group_info.name, subgroup_info); #if !defined(RARCH_CONSOLE) && !defined(RARCH_MOBILE) CONFIG_FLOAT(g_settings.video.scale, "video_scale", "Windowed Scale", scale, "%.1fx", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 1.0, 10.0, 1.0, true, true); + data_list_current_add_range(list, list_info, 1.0, 10.0, 1.0, true, true); #endif CONFIG_BOOL(g_settings.video.scale_integer, "video_scale_integer", "Integer Scale", scale_integer, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_INT(g_extern.console.screen.viewports.custom_vp.x, "custom_viewport_x", "Custom Viewport X", 0, group_info.name, subgroup_info.name, NULL, NULL); @@ -2494,7 +2506,7 @@ rarch_setting_t *setting_data_get_list(void) CONFIG_UINT(g_extern.console.screen.viewports.custom_vp.height, "custom_viewport_height", "Custom Viewport Height", 0, group_info.name, subgroup_info.name, NULL, NULL); #ifdef GEKKO CONFIG_UINT(g_settings.video.viwidth, "video_viwidth", "Set Screen Width", video_viwidth, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 640, 720, 2, true, true); + data_list_current_add_range(list, list_info, 640, 720, 2, true, true); CONFIG_BOOL(g_settings.video.vfilter, "video_vfilter", "Deflicker", video_vfilter, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); #endif CONFIG_BOOL(g_settings.video.smooth, "video_smooth", "Use Bilinear Filtering", video_smooth, "Point filtering", "Bilinear filtering", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); @@ -2502,31 +2514,31 @@ rarch_setting_t *setting_data_get_list(void) CONFIG_BOOL(g_extern.console.screen.pal60_enable, "pal60_enable", "Use PAL60 Mode", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); #endif CONFIG_UINT(g_settings.video.rotation, "video_rotation", "Rotation", 0, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 3, 1, true, true); + data_list_current_add_range(list, list_info, 0, 3, 1, true, true); #if defined(HW_RVL) || defined(_XBOX360) CONFIG_UINT(g_extern.console.screen.gamma_correction, "video_gamma", "Gamma", 0, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_VIDEO_APPLY_STATE_CHANGES) - data_list_current_add_range(&list, list_info, 0, MAX_GAMMA_SETTING, 1, true, true); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_VIDEO_APPLY_STATE_CHANGES) + data_list_current_add_range(list, list_info, 0, MAX_GAMMA_SETTING, 1, true, true); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); #endif END_SUB_GROUP(list, list_info); START_SUB_GROUP(list, list_info, "Synchronization", group_info.name, subgroup_info); #if defined(HAVE_THREADS) && !defined(RARCH_CONSOLE) CONFIG_BOOL(g_settings.video.threaded, "video_threaded", "Threaded Video", video_threaded, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_REINIT); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_REINIT); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); #endif CONFIG_BOOL(g_settings.video.vsync, "video_vsync", "VSync", vsync, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_UINT(g_settings.video.swap_interval, "video_swap_interval", "VSync Swap Interval", swap_interval, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_VIDEO_SET_BLOCKING_STATE); - data_list_current_add_range(&list, list_info, 1, 4, 1, true, true); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_VIDEO_SET_BLOCKING_STATE); + data_list_current_add_range(list, list_info, 1, 4, 1, true, true); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); CONFIG_BOOL(g_settings.video.hard_sync, "video_hard_sync", "Hard GPU Sync", hard_sync, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_UINT(g_settings.video.hard_sync_frames, "video_hard_sync_frames", "Hard GPU Sync Frames", hard_sync_frames, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 3, 1, true, true); + data_list_current_add_range(list, list_info, 0, 3, 1, true, true); CONFIG_UINT(g_settings.video.frame_delay, "video_frame_delay", "Frame Delay", frame_delay, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 15, 1, true, true); + data_list_current_add_range(list, list_info, 0, 15, 1, true, true); #if !defined(RARCH_MOBILE) CONFIG_BOOL(g_settings.video.black_frame_insertion, "video_black_frame_insertion", "Black Frame Insertion", black_frame_insertion, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); #endif @@ -2540,49 +2552,79 @@ rarch_setting_t *setting_data_get_list(void) CONFIG_BOOL(g_settings.video.crop_overscan, "video_crop_overscan", "Crop Overscan (reload)", crop_overscan, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); #ifndef HAVE_FILTERS_BUILTIN CONFIG_PATH(g_settings.video.softfilter_plugin, "video_filter", "Software filter", g_settings.video.filter_dir, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_values(&list, list_info, "filt"); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_REINIT); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_values(list, list_info, "filt"); + data_list_current_add_cmd(list, list_info, RARCH_CMD_REINIT); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); #endif #if defined(_XBOX1) || defined(HW_RVL) CONFIG_BOOL(g_extern.console.softfilter_enable, "soft_filter", "Soft Filter Enable", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_VIDEO_APPLY_STATE_CHANGES); + data_list_current_add_cmd(list, list_info, RARCH_CMD_VIDEO_APPLY_STATE_CHANGES); #endif #ifdef _XBOX1 CONFIG_UINT(g_settings.video.swap_interval, "video_filter_flicker", "Flicker filter", 0, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 5, 1, true, true); + data_list_current_add_range(list, list_info, 0, 5, 1, true, true); #endif END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +bool setting_data_get_list_shader_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "Shader Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_BOOL(g_settings.video.shader_enable, "video_shader_enable", "Enable Shaders", shader_enable, "OFF", "ON", group_info.name, subgroup_info.name, NULL, NULL); CONFIG_PATH(g_settings.video.shader_path, "video_shader", "Shader", "", group_info.name, subgroup_info.name, NULL, NULL); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +bool setting_data_get_list_font_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "Font Options"); START_SUB_GROUP(list, list_info, "Messages", group_info.name, subgroup_info); CONFIG_PATH(g_settings.video.font_path, "video_font_path", "Font Path", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); CONFIG_FLOAT(g_settings.video.font_size, "video_font_size", "OSD Font Size", font_size, "%.1f", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 1.00, 100.00, 1.0, true, true); + data_list_current_add_range(list, list_info, 1.00, 100.00, 1.0, true, true); CONFIG_BOOL(g_settings.video.font_enable, "video_font_enable", "OSD Font Enable", font_enable, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_FLOAT(g_settings.video.msg_pos_x, "video_message_pos_x", "Message X Position", message_pos_offset_x, "%.3f", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 1, 0.01, true, true); + data_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); CONFIG_FLOAT(g_settings.video.msg_pos_y, "video_message_pos_y", "Message Y Position", message_pos_offset_y, "%.3f", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 1, 0.01, true, true); + data_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +bool setting_data_get_list_audio_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "Audio Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_BOOL(g_settings.audio.enable, "audio_enable", "Audio Enable", audio_enable, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_extern.audio_data.mute, "audio_mute_enable", "Audio Mute", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_FLOAT(g_settings.audio.volume, "audio_volume", "Volume Level", audio_volume, "%.1f", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, -80, 12, 1.0, true, true); + data_list_current_add_range(list, list_info, -80, 12, 1.0, true, true); #ifdef __CELLOS_LV2__ CONFIG_BOOL(g_extern.console.sound.system_bgm_enable, "system_bgm_enable", "System BGM Enable", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); #endif @@ -2592,21 +2634,32 @@ rarch_setting_t *setting_data_get_list(void) CONFIG_BOOL(g_settings.audio.sync, "audio_sync", "Audio Sync Enable", audio_sync, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_UINT(g_settings.audio.latency, "audio_latency", "Audio Latency", g_defaults.settings.out_latency ? g_defaults.settings.out_latency : out_latency, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_FLOAT(g_settings.audio.rate_control_delta, "audio_rate_control_delta", "Audio Rate Control Delta", rate_control_delta, "%.3f", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 0, 0.001, true, false); + data_list_current_add_range(list, list_info, 0, 0, 0.001, true, false); CONFIG_UINT(g_settings.audio.block_frames, "audio_block_frames", "Block Frames", 0, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); END_SUB_GROUP(list, list_info); START_SUB_GROUP(list, list_info, "Miscellaneous", group_info.name, subgroup_info); CONFIG_STRING(g_settings.audio.device, "audio_device", "Device", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_INPUT); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); CONFIG_UINT(g_settings.audio.out_rate, "audio_out_rate", "Audio Output Rate", out_rate, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_PATH(g_settings.audio.dsp_plugin, "audio_dsp_plugin", "DSP Plugin", g_settings.audio.filter_dir, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_values(&list, list_info, "dsp"); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_DSP_FILTER_INIT); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_values(list, list_info, "dsp"); + data_list_current_add_cmd(list, list_info, RARCH_CMD_DSP_FILTER_INIT); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +bool setting_data_get_list_input_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + unsigned i, player; + START_GROUP(group_info, "Input Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_BOOL(g_settings.input.autodetect_enable, "input_autodetect_enable", "Autodetect Enable", input_autodetect_enable, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); @@ -2623,11 +2676,11 @@ rarch_setting_t *setting_data_get_list(void) START_SUB_GROUP(list, list_info, "Turbo/Deadzone", group_info.name, subgroup_info); CONFIG_FLOAT(g_settings.input.axis_threshold, "input_axis_threshold", "Input Axis Threshold", axis_threshold, "%.3f", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 1.00, 0.001, true, true); + data_list_current_add_range(list, list_info, 0, 1.00, 0.001, true, true); CONFIG_UINT(g_settings.input.turbo_period, "input_turbo_period", "Turbo Period", turbo_period, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 1, 0, 1, true, false); + data_list_current_add_range(list, list_info, 1, 0, 1, true, false); CONFIG_UINT(g_settings.input.turbo_duty_cycle, "input_duty_cycle", "Duty Cycle", turbo_duty_cycle, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 1, 0, 1, true, false); + data_list_current_add_range(list, list_info, 1, 0, 1, true, false); END_SUB_GROUP(list, list_info); /* The second argument to config bind is 1 @@ -2678,118 +2731,168 @@ rarch_setting_t *setting_data_get_list(void) END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +bool setting_data_get_list_overlay_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ #ifdef HAVE_OVERLAY + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "Overlay Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_PATH(g_settings.input.overlay, "input_overlay", "Overlay Preset", g_extern.overlay_dir, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_values(&list, list_info, "cfg"); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_OVERLAY_INIT); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_values(list, list_info, "cfg"); + data_list_current_add_cmd(list, list_info, RARCH_CMD_OVERLAY_INIT); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); CONFIG_FLOAT(g_settings.input.overlay_opacity, "input_overlay_opacity", "Overlay Opacity", 0.7f, "%.2f", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_OVERLAY_SET_ALPHA_MOD); - data_list_current_add_range(&list, list_info, 0, 1, 0.01, true, true); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_OVERLAY_SET_ALPHA_MOD); + data_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); CONFIG_FLOAT(g_settings.input.overlay_scale, "input_overlay_scale", "Overlay Scale", 1.0f, "%.2f", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_OVERLAY_SET_SCALE_FACTOR); - data_list_current_add_range(&list, list_info, 0, 2, 0.01, true, true); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_OVERLAY_SET_SCALE_FACTOR); + data_list_current_add_range(list, list_info, 0, 2, 0.01, true, true); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); #endif + return true; +} + +bool setting_data_get_list_menu_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ #ifdef HAVE_MENU + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "Menu Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_BOOL(g_settings.menu_show_start_screen, "rgui_show_start_screen", "Show Start Screen", menu_show_start_screen, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_settings.menu.pause_libretro, "menu_pause_libretro", "Pause Libretro", true, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_MENU_PAUSE_LIBRETRO); - data_list_current_add_flags(&list, list_info, SD_FLAG_CMD_APPLY_AUTO); + data_list_current_add_cmd(list, list_info, RARCH_CMD_MENU_PAUSE_LIBRETRO); + data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); #endif + return true; +} + +bool setting_data_get_list_netplay_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ #ifdef HAVE_NETPLAY + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "Netplay Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_BOOL(g_extern.netplay_enable, "netplay_enable", "Netplay Enable", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_STRING(g_extern.netplay_server, "netplay_ip_address", "IP Address", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_INPUT); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); CONFIG_BOOL(g_extern.netplay_is_client, "netplay_mode", "Netplay Client Enable", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_BOOL(g_extern.netplay_is_spectate, "netplay_spectator_mode_enable", "Netplay Spectator Enable", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_UINT(g_extern.netplay_sync_frames, "netplay_delay_frames", "Netplay Delay Frames", 0, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 10, 1, true, false); + data_list_current_add_range(list, list_info, 0, 10, 1, true, false); CONFIG_UINT(g_extern.netplay_port, "netplay_tcp_udp_port", "Netplay TCP/UDP Port", RARCH_DEFAULT_PORT, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 1, 99999, 1, true, true); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_INPUT); + data_list_current_add_range(list, list_info, 1, 99999, 1, true, true); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); #endif + return true; +} + +bool setting_data_get_list_user_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "User Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_STRING(g_settings.username, "netplay_nickname", "Username", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_INPUT); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); CONFIG_UINT(g_settings.user_language, "user_language", "Language", def_user_language, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, RETRO_LANGUAGE_LAST-1, 1, true, true); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_INPUT); + data_list_current_add_range(list, list_info, 0, RETRO_LANGUAGE_LAST-1, 1, true, true); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +bool setting_data_get_list_path_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "Path Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_UINT(g_settings.content_history_size, "game_history_size", "Content History Size", default_content_history_size, group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_range(&list, list_info, 0, 0, 1.0, true, false); + data_list_current_add_range(list, list_info, 0, 0, 1.0, true, false); END_SUB_GROUP(list, list_info); START_SUB_GROUP(list, list_info, "Paths", group_info.name, subgroup_info); #ifdef HAVE_MENU CONFIG_DIR(g_settings.menu_content_directory, "rgui_browser_directory", "Browser Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_DIR(g_settings.content_directory, "content_directory", "Content Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_DIR(g_settings.assets_directory, "assets_directory", "Assets Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_DIR(g_settings.menu_config_directory, "rgui_config_directory", "Config Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); #endif CONFIG_PATH(g_settings.libretro, "libretro_path", "Libretro Path", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler) ; - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); CONFIG_DIR(g_settings.libretro_directory, "libretro_dir_path", "Core Directory", g_defaults.core_dir, "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_CORE_INFO_INIT); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_cmd(list, list_info, RARCH_CMD_CORE_INFO_INIT); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_DIR(g_settings.libretro_info_path, "libretro_info_path", "Core Info Directory", g_defaults.core_info_dir, "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_cmd(&list, list_info, RARCH_CMD_CORE_INFO_INIT); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_cmd(list, list_info, RARCH_CMD_CORE_INFO_INIT); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_PATH(g_settings.core_options_path, "core_options_path", "Core Options Path", "", "Paths", subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); CONFIG_PATH(g_settings.cheat_database, "cheat_database_path", "Cheat Database", "", "Paths", subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); CONFIG_PATH(g_settings.cheat_settings_path, "cheat_settings_path", "Cheat Settings", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); CONFIG_PATH(g_settings.content_history_path, "game_history_path", "Content History Path", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); CONFIG_DIR(g_settings.video.filter_dir, "video_filter_dir", "VideoFilter Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_DIR(g_settings.audio.filter_dir, "audio_filter_dir", "AudioFilter Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); #if defined(HAVE_DYLIB) && defined(HAVE_SHADER_MANAGER) CONFIG_DIR(g_settings.video.shader_dir, "video_shader_dir", "Shader Directory", g_defaults.shader_dir, "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); #endif #ifdef HAVE_OVERLAY CONFIG_DIR(g_extern.overlay_dir, "overlay_directory", "Overlay Directory", g_defaults.overlay_dir, "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); #endif CONFIG_DIR(g_settings.resampler_directory, "resampler_directory", "Resampler Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_DIR(g_settings.screenshot_directory, "screenshot_directory", "Screenshot Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_DIR(g_settings.input.autoconfig_dir, "joypad_autoconfig_dir", "Joypad Autoconfig Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_DIR(g_settings.playlist_directory, "playlist_directory", "Playlist Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); - data_list_current_add_flags(&list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); + data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR); CONFIG_DIR(g_extern.savefile_dir, "savefile_directory", "Savefile Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_DIR(g_extern.savestate_dir, "savestate_directory", "Savestate Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); CONFIG_DIR(g_settings.system_directory, "system_directory", "System Directory", "", "", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); @@ -2797,6 +2900,16 @@ rarch_setting_t *setting_data_get_list(void) END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +bool setting_data_get_list_privacy_options( + rarch_setting_t **list, + rarch_setting_info_t *list_info) +{ + rarch_setting_group_info_t group_info; + rarch_setting_group_info_t subgroup_info; + START_GROUP(group_info, "Privacy Options"); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_BOOL(g_settings.camera.allow, "camera_allow", "Allow Camera", false, "OFF", "ON", group_info.name, subgroup_info.name, general_write_handler, general_read_handler); @@ -2804,6 +2917,71 @@ rarch_setting_t *setting_data_get_list(void) END_SUB_GROUP(list, list_info); END_GROUP(list, list_info); + return true; +} + +rarch_setting_t *setting_data_get_list(void) +{ + rarch_setting_info_t *list_info = NULL; + static rarch_setting_t* list = NULL; + + if (list) + return list; + + list_info = (rarch_setting_info_t*)calloc(1, sizeof(*list_info)); + if (!list_info) + { + RARCH_ERR("Settings info list allocation failed.\n"); + return NULL; + } + + list_info->index = 0; + list_info->size = 512; + + list = (rarch_setting_t*)malloc(sizeof(rarch_setting_t) * list_info->size); + if (!list) + goto error; + + if (!setting_data_get_list_driver_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_general_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_video_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_shader_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_font_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_audio_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_input_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_overlay_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_menu_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_netplay_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_user_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_path_options(&list, list_info)) + goto error; + + if (!setting_data_get_list_privacy_options(&list, list_info)) + goto error; + + rarch_setting_t terminator = { ST_NONE }; if (!(data_list_append(&list, list_info, terminator))) goto error;