mirror of
https://github.com/libretro/RetroArch
synced 2025-02-19 12:41:00 +00:00
Rearrange structs
This commit is contained in:
parent
a31192c55a
commit
a70f09a90d
12
autosave.c
12
autosave.c
@ -196,10 +196,10 @@ void lock_autosave(void)
|
||||
unsigned i;
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
for (i = 0; i < global->num_autosave; i++)
|
||||
for (i = 0; i < global->autosave.num; i++)
|
||||
{
|
||||
if (global->autosave[i])
|
||||
autosave_lock(global->autosave[i]);
|
||||
if (global->autosave.list[i])
|
||||
autosave_lock(global->autosave.list[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -213,10 +213,10 @@ void unlock_autosave(void)
|
||||
unsigned i;
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
for (i = 0; i < global->num_autosave; i++)
|
||||
for (i = 0; i < global->autosave.num; i++)
|
||||
{
|
||||
if (global->autosave[i])
|
||||
autosave_unlock(global->autosave[i]);
|
||||
if (global->autosave.list[i])
|
||||
autosave_unlock(global->autosave.list[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
110
command_event.c
110
command_event.c
@ -102,11 +102,11 @@ static void event_init_autosave(void)
|
||||
if (settings->autosave_interval < 1 || !global->savefiles)
|
||||
return;
|
||||
|
||||
if (!(global->autosave = (autosave_t**)calloc(global->savefiles->size,
|
||||
sizeof(*global->autosave))))
|
||||
if (!(global->autosave.list = (autosave_t**)calloc(global->savefiles->size,
|
||||
sizeof(*global->autosave.list))))
|
||||
return;
|
||||
|
||||
global->num_autosave = global->savefiles->size;
|
||||
global->autosave.num = global->savefiles->size;
|
||||
|
||||
for (i = 0; i < global->savefiles->size; i++)
|
||||
{
|
||||
@ -116,12 +116,12 @@ static void event_init_autosave(void)
|
||||
if (pretro_get_memory_size(type) <= 0)
|
||||
continue;
|
||||
|
||||
global->autosave[i] = autosave_new(path,
|
||||
global->autosave.list[i] = autosave_new(path,
|
||||
pretro_get_memory_data(type),
|
||||
pretro_get_memory_size(type),
|
||||
settings->autosave_interval);
|
||||
|
||||
if (!global->autosave[i])
|
||||
if (!global->autosave.list[i])
|
||||
RARCH_WARN("%s\n", msg_hash_to_str(MSG_AUTOSAVE_FAILED));
|
||||
}
|
||||
}
|
||||
@ -131,14 +131,14 @@ static void event_deinit_autosave(void)
|
||||
unsigned i;
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
for (i = 0; i < global->num_autosave; i++)
|
||||
autosave_free(global->autosave[i]);
|
||||
for (i = 0; i < global->autosave.num; i++)
|
||||
autosave_free(global->autosave.list[i]);
|
||||
|
||||
if (global->autosave)
|
||||
free(global->autosave);
|
||||
global->autosave = NULL;
|
||||
if (global->autosave.list)
|
||||
free(global->autosave.list);
|
||||
|
||||
global->num_autosave = 0;
|
||||
global->autosave.list = NULL;
|
||||
global->autosave.num = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -147,7 +147,7 @@ static void event_save_files(void)
|
||||
unsigned i;
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
if (!global->savefiles || !global->use_sram)
|
||||
if (!global->savefiles || !global->sram.use)
|
||||
return;
|
||||
|
||||
for (i = 0; i < global->savefiles->size; i++)
|
||||
@ -543,9 +543,11 @@ static void event_deinit_core(bool reinit)
|
||||
|
||||
/* per-core saves: restore the original path so the config is not affected */
|
||||
if(settings->sort_savefiles_enable)
|
||||
strlcpy(global->savefile_dir,orig_savefile_dir,sizeof(global->savefile_dir));
|
||||
strlcpy(global->dir.savefile, orig_savefile_dir,
|
||||
sizeof(global->dir.savefile));
|
||||
if(settings->sort_savestates_enable)
|
||||
strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir));
|
||||
strlcpy(global->dir.savestate, orig_savestate_dir,
|
||||
sizeof(global->dir.savestate));
|
||||
|
||||
/* auto overrides: reload the original config */
|
||||
if(global->overrides_active)
|
||||
@ -583,7 +585,7 @@ static bool event_load_save_files(void)
|
||||
|
||||
if (!global)
|
||||
return false;
|
||||
if (!global->savefiles || global->sram_load_disable)
|
||||
if (!global->savefiles || global->sram.load_disable)
|
||||
return false;
|
||||
|
||||
for (i = 0; i < global->savefiles->size; i++)
|
||||
@ -602,14 +604,14 @@ static void event_load_auto_state(void)
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
#ifdef HAVE_NETPLAY
|
||||
if (global->netplay_enable && !global->netplay_is_spectate)
|
||||
if (global->netplay.enable && !global->netplay.is_spectate)
|
||||
return;
|
||||
#endif
|
||||
|
||||
if (!settings->savestate_auto_load)
|
||||
return;
|
||||
|
||||
fill_pathname_noext(savestate_name_auto, global->savestate_name,
|
||||
fill_pathname_noext(savestate_name_auto, global->name.savestate,
|
||||
".auto", sizeof(savestate_name_auto));
|
||||
|
||||
if (!path_file_exists(savestate_name_auto))
|
||||
@ -645,9 +647,9 @@ static void event_set_savestate_auto_index(void)
|
||||
* /foo/path/content.state%d, where %d is the largest number available.
|
||||
*/
|
||||
|
||||
fill_pathname_basedir(state_dir, global->savestate_name,
|
||||
fill_pathname_basedir(state_dir, global->name.savestate,
|
||||
sizeof(state_dir));
|
||||
fill_pathname_base(state_base, global->savestate_name,
|
||||
fill_pathname_base(state_base, global->name.savestate,
|
||||
sizeof(state_base));
|
||||
|
||||
if (!(dir_list = dir_list_new_special(state_dir, DIR_LIST_PLAIN)))
|
||||
@ -686,16 +688,16 @@ static bool event_init_content(void)
|
||||
|
||||
/* No content to be loaded for dummy core,
|
||||
* just successfully exit. */
|
||||
if (global->core_type == CORE_TYPE_DUMMY)
|
||||
if (global->inited.core.type == CORE_TYPE_DUMMY)
|
||||
return true;
|
||||
|
||||
if (!global->libretro_no_content)
|
||||
if (!global->inited.core.no_content)
|
||||
rarch_fill_pathnames();
|
||||
|
||||
if (!init_content_file())
|
||||
return false;
|
||||
|
||||
if (global->libretro_no_content)
|
||||
if (global->inited.core.no_content)
|
||||
return true;
|
||||
|
||||
event_set_savestate_auto_index();
|
||||
@ -719,9 +721,11 @@ static bool event_init_core(void)
|
||||
|
||||
/* per-core saves: save the original path */
|
||||
if(orig_savefile_dir[0] == '\0')
|
||||
strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(orig_savefile_dir));
|
||||
strlcpy(orig_savefile_dir, global->dir.savefile,
|
||||
sizeof(orig_savefile_dir));
|
||||
if(orig_savestate_dir[0] == '\0')
|
||||
strlcpy(orig_savestate_dir,global->savestate_dir,sizeof(orig_savestate_dir));
|
||||
strlcpy(orig_savestate_dir, global->dir.savestate,
|
||||
sizeof(orig_savestate_dir));
|
||||
|
||||
/* auto overrides: apply overrides */
|
||||
if(settings->auto_overrides_enable)
|
||||
@ -742,14 +746,14 @@ static bool event_init_core(void)
|
||||
config_load_remap();
|
||||
|
||||
/* per-core saves: reset redirection paths */
|
||||
if((settings->sort_savestates_enable || settings->sort_savefiles_enable) && !global->libretro_no_content)
|
||||
set_paths_redirect(global->basename);
|
||||
if((settings->sort_savestates_enable || settings->sort_savefiles_enable) && !global->inited.core.no_content)
|
||||
set_paths_redirect(global->name.base);
|
||||
|
||||
rarch_verify_api_version();
|
||||
pretro_init();
|
||||
|
||||
global->use_sram = (global->core_type == CORE_TYPE_PLAIN) &&
|
||||
!global->libretro_no_content;
|
||||
global->sram.use = (global->inited.core.type == CORE_TYPE_PLAIN) &&
|
||||
!global->inited.core.no_content;
|
||||
|
||||
if (!event_init_content())
|
||||
return false;
|
||||
@ -768,11 +772,11 @@ static bool event_save_auto_state(void)
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
if (!settings->savestate_auto_save ||
|
||||
(global->core_type == CORE_TYPE_DUMMY) ||
|
||||
global->libretro_no_content)
|
||||
(global->inited.core.type == CORE_TYPE_DUMMY) ||
|
||||
global->inited.core.no_content)
|
||||
return false;
|
||||
|
||||
fill_pathname_noext(savestate_name_auto, global->savestate_name,
|
||||
fill_pathname_noext(savestate_name_auto, global->name.savestate,
|
||||
".auto", sizeof(savestate_name_auto));
|
||||
|
||||
ret = save_state(savestate_name_auto);
|
||||
@ -817,8 +821,8 @@ static bool event_save_core_config(void)
|
||||
if (*settings->menu_config_directory)
|
||||
strlcpy(config_dir, settings->menu_config_directory,
|
||||
sizeof(config_dir));
|
||||
else if (*global->config_path) /* Fallback */
|
||||
fill_pathname_basedir(config_dir, global->config_path,
|
||||
else if (*global->path.config) /* Fallback */
|
||||
fill_pathname_basedir(config_dir, global->path.config,
|
||||
sizeof(config_dir));
|
||||
else
|
||||
{
|
||||
@ -878,8 +882,8 @@ static bool event_save_core_config(void)
|
||||
|
||||
if ((ret = config_save_file(config_path)))
|
||||
{
|
||||
strlcpy(global->config_path, config_path,
|
||||
sizeof(global->config_path));
|
||||
strlcpy(global->path.config, config_path,
|
||||
sizeof(global->path.config));
|
||||
snprintf(msg, sizeof(msg), "Saved new config to \"%s\".",
|
||||
config_path);
|
||||
RARCH_LOG("%s\n", msg);
|
||||
@ -960,12 +964,12 @@ static void event_main_state(unsigned cmd)
|
||||
|
||||
if (settings->state_slot > 0)
|
||||
snprintf(path, sizeof(path), "%s%d",
|
||||
global->savestate_name, settings->state_slot);
|
||||
global->name.savestate, settings->state_slot);
|
||||
else if (settings->state_slot < 0)
|
||||
fill_pathname_join_delim(path,
|
||||
global->savestate_name, "auto", '.', sizeof(path));
|
||||
global->name.savestate, "auto", '.', sizeof(path));
|
||||
else
|
||||
strlcpy(path, global->savestate_name, sizeof(path));
|
||||
strlcpy(path, global->name.savestate, sizeof(path));
|
||||
|
||||
if (pretro_serialize_size())
|
||||
{
|
||||
@ -999,11 +1003,11 @@ static bool event_update_system_info(struct retro_system_info *_info,
|
||||
libretro_get_system_info(settings->libretro, _info,
|
||||
load_no_content);
|
||||
#endif
|
||||
if (!global->core_info)
|
||||
if (!global->core_info.list)
|
||||
return false;
|
||||
|
||||
if (!core_info_list_get_info(global->core_info,
|
||||
global->core_info_current, settings->libretro))
|
||||
if (!core_info_list_get_info(global->core_info.list,
|
||||
global->core_info.current, settings->libretro))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@ -1052,7 +1056,7 @@ bool event_command(enum event_command cmd)
|
||||
rarch_environment_cb(RETRO_ENVIRONMENT_SET_LIBRETRO_PATH,
|
||||
(void*)settings->libretro);
|
||||
rarch_environment_cb(RETRO_ENVIRONMENT_EXEC,
|
||||
(void*)global->fullpath);
|
||||
(void*)global->path.fullpath);
|
||||
event_command(EVENT_CMD_QUIT);
|
||||
#endif
|
||||
break;
|
||||
@ -1138,7 +1142,7 @@ bool event_command(enum event_command cmd)
|
||||
#endif
|
||||
rarch_main_data_deinit();
|
||||
|
||||
*global->fullpath = '\0';
|
||||
*global->path.fullpath = '\0';
|
||||
|
||||
rarch_main_set_state(RARCH_ACTION_STATE_LOAD_CONTENT);
|
||||
}
|
||||
@ -1330,9 +1334,9 @@ bool event_command(enum event_command cmd)
|
||||
if (!global)
|
||||
break;
|
||||
|
||||
if (global->core_info)
|
||||
core_info_list_free(global->core_info);
|
||||
global->core_info = NULL;
|
||||
if (global->core_info.list)
|
||||
core_info_list_free(global->core_info.list);
|
||||
global->core_info.list = NULL;
|
||||
break;
|
||||
case EVENT_CMD_DATA_RUNLOOP_FREE:
|
||||
rarch_main_data_free();
|
||||
@ -1341,7 +1345,7 @@ bool event_command(enum event_command cmd)
|
||||
event_command(EVENT_CMD_CORE_INFO_DEINIT);
|
||||
|
||||
if (*settings->libretro_directory)
|
||||
global->core_info = core_info_list_new();
|
||||
global->core_info.list = core_info_list_new();
|
||||
break;
|
||||
case EVENT_CMD_CORE_DEINIT:
|
||||
{
|
||||
@ -1405,9 +1409,9 @@ bool event_command(enum event_command cmd)
|
||||
break;
|
||||
case EVENT_CMD_RESTART_RETROARCH:
|
||||
#if defined(GEKKO) && defined(HW_RVL)
|
||||
fill_pathname_join(global->fullpath, g_defaults.core_dir,
|
||||
fill_pathname_join(global->path.fullpath, g_defaults.dir.core,
|
||||
SALAMANDER_FILE,
|
||||
sizeof(global->fullpath));
|
||||
sizeof(global->path.fullpath));
|
||||
#endif
|
||||
if (driver->frontend_ctx && driver->frontend_ctx->set_fork)
|
||||
driver->frontend_ctx->set_fork(true, false);
|
||||
@ -1504,17 +1508,17 @@ bool event_command(enum event_command cmd)
|
||||
global->savefiles = NULL;
|
||||
break;
|
||||
case EVENT_CMD_SAVEFILES_INIT:
|
||||
global->use_sram = global->use_sram && !global->sram_save_disable
|
||||
global->sram.use = global->sram.use && !global->sram.save_disable
|
||||
#ifdef HAVE_NETPLAY
|
||||
&& (!driver->netplay_data || !global->netplay_is_client)
|
||||
&& (!driver->netplay_data || !global->netplay.is_client)
|
||||
#endif
|
||||
;
|
||||
|
||||
if (!global->use_sram)
|
||||
if (!global->sram.use)
|
||||
RARCH_LOG("%s\n",
|
||||
msg_hash_to_str(MSG_SRAM_WILL_NOT_BE_SAVED));
|
||||
|
||||
if (global->use_sram)
|
||||
if (global->sram.use)
|
||||
event_command(EVENT_CMD_AUTOSAVE_INIT);
|
||||
break;
|
||||
case EVENT_CMD_MSG_QUEUE_DEINIT:
|
||||
|
366
configuration.c
366
configuration.c
@ -645,7 +645,7 @@ static void config_set_defaults(void)
|
||||
{
|
||||
settings->input.joypad_map[i] = i;
|
||||
settings->input.analog_dpad_mode[i] = ANALOG_DPAD_NONE;
|
||||
if (!global->has_set_libretro_device[i])
|
||||
if (!global->has_set.libretro_device[i])
|
||||
settings->input.libretro_device[i] = RETRO_DEVICE_JOYPAD;
|
||||
}
|
||||
|
||||
@ -655,21 +655,21 @@ static void config_set_defaults(void)
|
||||
|
||||
/* Make sure settings from other configs carry over into defaults
|
||||
* for another config. */
|
||||
if (!global->has_set_save_path)
|
||||
*global->savefile_dir = '\0';
|
||||
if (!global->has_set_state_path)
|
||||
*global->savestate_dir = '\0';
|
||||
if (!global->has_set.save_path)
|
||||
*global->dir.savefile = '\0';
|
||||
if (!global->has_set.state_path)
|
||||
*global->dir.savestate = '\0';
|
||||
|
||||
*settings->libretro_info_path = '\0';
|
||||
if (!global->has_set_libretro_directory)
|
||||
if (!global->has_set.libretro_directory)
|
||||
*settings->libretro_directory = '\0';
|
||||
|
||||
if (!global->has_set_ups_pref)
|
||||
global->ups_pref = false;
|
||||
if (!global->has_set_bps_pref)
|
||||
global->bps_pref = false;
|
||||
if (!global->has_set_ips_pref)
|
||||
global->ips_pref = false;
|
||||
if (!global->has_set.ups_pref)
|
||||
global->patch.ups_pref = false;
|
||||
if (!global->has_set.bps_pref)
|
||||
global->patch.bps_pref = false;
|
||||
if (!global->has_set.ips_pref)
|
||||
global->patch.ips_pref = false;
|
||||
|
||||
*global->record.output_dir = '\0';
|
||||
*global->record.config_dir = '\0';
|
||||
@ -728,117 +728,117 @@ static void config_set_defaults(void)
|
||||
global->console.sound.mode = SOUND_MODE_NORMAL;
|
||||
#endif
|
||||
|
||||
if (*g_defaults.wallpapers_dir)
|
||||
if (*g_defaults.dir.wallpapers)
|
||||
strlcpy(settings->dynamic_wallpapers_directory,
|
||||
g_defaults.wallpapers_dir, sizeof(settings->dynamic_wallpapers_directory));
|
||||
if (*g_defaults.remap_dir)
|
||||
g_defaults.dir.wallpapers, sizeof(settings->dynamic_wallpapers_directory));
|
||||
if (*g_defaults.dir.remap)
|
||||
strlcpy(settings->input_remapping_directory,
|
||||
g_defaults.remap_dir, sizeof(settings->input_remapping_directory));
|
||||
if (*g_defaults.extraction_dir)
|
||||
g_defaults.dir.remap, sizeof(settings->input_remapping_directory));
|
||||
if (*g_defaults.dir.extraction)
|
||||
strlcpy(settings->extraction_directory,
|
||||
g_defaults.extraction_dir, sizeof(settings->extraction_directory));
|
||||
if (*g_defaults.audio_filter_dir)
|
||||
g_defaults.dir.extraction, sizeof(settings->extraction_directory));
|
||||
if (*g_defaults.dir.audio_filter)
|
||||
strlcpy(settings->audio.filter_dir,
|
||||
g_defaults.audio_filter_dir, sizeof(settings->audio.filter_dir));
|
||||
if (*g_defaults.video_filter_dir)
|
||||
g_defaults.dir.audio_filter, sizeof(settings->audio.filter_dir));
|
||||
if (*g_defaults.dir.video_filter)
|
||||
strlcpy(settings->video.filter_dir,
|
||||
g_defaults.video_filter_dir, sizeof(settings->video.filter_dir));
|
||||
if (*g_defaults.assets_dir)
|
||||
g_defaults.dir.video_filter, sizeof(settings->video.filter_dir));
|
||||
if (*g_defaults.dir.assets)
|
||||
strlcpy(settings->assets_directory,
|
||||
g_defaults.assets_dir, sizeof(settings->assets_directory));
|
||||
if (*g_defaults.core_assets_dir)
|
||||
g_defaults.dir.assets, sizeof(settings->assets_directory));
|
||||
if (*g_defaults.dir.core_assets)
|
||||
strlcpy(settings->core_assets_directory,
|
||||
g_defaults.core_assets_dir, sizeof(settings->core_assets_directory));
|
||||
if (*g_defaults.playlist_dir)
|
||||
g_defaults.dir.core_assets, sizeof(settings->core_assets_directory));
|
||||
if (*g_defaults.dir.playlist)
|
||||
strlcpy(settings->playlist_directory,
|
||||
g_defaults.playlist_dir, sizeof(settings->playlist_directory));
|
||||
if (*g_defaults.core_dir)
|
||||
g_defaults.dir.playlist, sizeof(settings->playlist_directory));
|
||||
if (*g_defaults.dir.core)
|
||||
fill_pathname_expand_special(settings->libretro_directory,
|
||||
g_defaults.core_dir, sizeof(settings->libretro_directory));
|
||||
if (*g_defaults.core_path)
|
||||
strlcpy(settings->libretro, g_defaults.core_path,
|
||||
g_defaults.dir.core, sizeof(settings->libretro_directory));
|
||||
if (*g_defaults.path.core)
|
||||
strlcpy(settings->libretro, g_defaults.path.core,
|
||||
sizeof(settings->libretro));
|
||||
if (*g_defaults.database_dir)
|
||||
strlcpy(settings->content_database, g_defaults.database_dir,
|
||||
if (*g_defaults.dir.database)
|
||||
strlcpy(settings->content_database, g_defaults.dir.database,
|
||||
sizeof(settings->content_database));
|
||||
if (*g_defaults.cursor_dir)
|
||||
strlcpy(settings->cursor_directory, g_defaults.cursor_dir,
|
||||
if (*g_defaults.dir.cursor)
|
||||
strlcpy(settings->cursor_directory, g_defaults.dir.cursor,
|
||||
sizeof(settings->cursor_directory));
|
||||
if (*g_defaults.cheats_dir)
|
||||
strlcpy(settings->cheat_database, g_defaults.cheats_dir,
|
||||
if (*g_defaults.dir.cheats)
|
||||
strlcpy(settings->cheat_database, g_defaults.dir.cheats,
|
||||
sizeof(settings->cheat_database));
|
||||
if (*g_defaults.core_info_dir)
|
||||
if (*g_defaults.dir.core_info)
|
||||
fill_pathname_expand_special(settings->libretro_info_path,
|
||||
g_defaults.core_info_dir, sizeof(settings->libretro_info_path));
|
||||
g_defaults.dir.core_info, sizeof(settings->libretro_info_path));
|
||||
#ifdef HAVE_OVERLAY
|
||||
if (*g_defaults.overlay_dir)
|
||||
if (*g_defaults.dir.overlay)
|
||||
{
|
||||
fill_pathname_expand_special(global->overlay_dir,
|
||||
g_defaults.overlay_dir, sizeof(global->overlay_dir));
|
||||
fill_pathname_expand_special(global->dir.overlay,
|
||||
g_defaults.dir.overlay, sizeof(global->dir.overlay));
|
||||
#ifdef RARCH_MOBILE
|
||||
if (!*settings->input.overlay)
|
||||
fill_pathname_join(settings->input.overlay,
|
||||
global->overlay_dir,
|
||||
global->dir.overlay,
|
||||
"gamepads/retropad/retropad.cfg",
|
||||
sizeof(settings->input.overlay));
|
||||
#endif
|
||||
}
|
||||
|
||||
if (*g_defaults.osk_overlay_dir)
|
||||
if (*g_defaults.dir.osk_overlay)
|
||||
{
|
||||
fill_pathname_expand_special(global->osk_overlay_dir,
|
||||
g_defaults.osk_overlay_dir, sizeof(global->osk_overlay_dir));
|
||||
fill_pathname_expand_special(global->dir.osk_overlay,
|
||||
g_defaults.dir.osk_overlay, sizeof(global->dir.osk_overlay));
|
||||
#ifdef RARCH_MOBILE
|
||||
if (!*settings->input.overlay)
|
||||
fill_pathname_join(settings->osk.overlay,
|
||||
global->osk_overlay_dir,
|
||||
global->dir.osk_overlay,
|
||||
"overlays/keyboards/US-101/US-101.cfg",
|
||||
sizeof(settings->osk.overlay));
|
||||
#endif
|
||||
}
|
||||
else
|
||||
strlcpy(global->osk_overlay_dir,
|
||||
global->overlay_dir, sizeof(global->osk_overlay_dir));
|
||||
strlcpy(global->dir.osk_overlay,
|
||||
global->dir.overlay, sizeof(global->dir.osk_overlay));
|
||||
#endif
|
||||
#ifdef HAVE_MENU
|
||||
if (*g_defaults.menu_config_dir)
|
||||
if (*g_defaults.dir.menu_config)
|
||||
strlcpy(settings->menu_config_directory,
|
||||
g_defaults.menu_config_dir,
|
||||
g_defaults.dir.menu_config,
|
||||
sizeof(settings->menu_config_directory));
|
||||
#endif
|
||||
if (*g_defaults.shader_dir)
|
||||
if (*g_defaults.dir.shader)
|
||||
fill_pathname_expand_special(settings->video.shader_dir,
|
||||
g_defaults.shader_dir, sizeof(settings->video.shader_dir));
|
||||
if (*g_defaults.autoconfig_dir)
|
||||
g_defaults.dir.shader, sizeof(settings->video.shader_dir));
|
||||
if (*g_defaults.dir.autoconfig)
|
||||
strlcpy(settings->input.autoconfig_dir,
|
||||
g_defaults.autoconfig_dir,
|
||||
g_defaults.dir.autoconfig,
|
||||
sizeof(settings->input.autoconfig_dir));
|
||||
|
||||
if (!global->has_set_state_path && *g_defaults.savestate_dir)
|
||||
strlcpy(global->savestate_dir,
|
||||
g_defaults.savestate_dir, sizeof(global->savestate_dir));
|
||||
if (!global->has_set_save_path && *g_defaults.sram_dir)
|
||||
strlcpy(global->savefile_dir,
|
||||
g_defaults.sram_dir, sizeof(global->savefile_dir));
|
||||
if (*g_defaults.system_dir)
|
||||
if (!global->has_set.state_path && *g_defaults.dir.savestate)
|
||||
strlcpy(global->dir.savestate,
|
||||
g_defaults.dir.savestate, sizeof(global->dir.savestate));
|
||||
if (!global->has_set.save_path && *g_defaults.dir.sram)
|
||||
strlcpy(global->dir.savefile,
|
||||
g_defaults.dir.sram, sizeof(global->dir.savefile));
|
||||
if (*g_defaults.dir.system)
|
||||
strlcpy(settings->system_directory,
|
||||
g_defaults.system_dir, sizeof(settings->system_directory));
|
||||
if (*g_defaults.screenshot_dir)
|
||||
g_defaults.dir.system, sizeof(settings->system_directory));
|
||||
if (*g_defaults.dir.screenshot)
|
||||
strlcpy(settings->screenshot_directory,
|
||||
g_defaults.screenshot_dir,
|
||||
g_defaults.dir.screenshot,
|
||||
sizeof(settings->screenshot_directory));
|
||||
if (*g_defaults.resampler_dir)
|
||||
if (*g_defaults.dir.resampler)
|
||||
strlcpy(settings->resampler_directory,
|
||||
g_defaults.resampler_dir,
|
||||
g_defaults.dir.resampler,
|
||||
sizeof(settings->resampler_directory));
|
||||
if (*g_defaults.content_history_dir)
|
||||
if (*g_defaults.dir.content_history)
|
||||
strlcpy(settings->content_history_directory,
|
||||
g_defaults.content_history_dir,
|
||||
g_defaults.dir.content_history,
|
||||
sizeof(settings->content_history_directory));
|
||||
|
||||
if (*g_defaults.config_path)
|
||||
fill_pathname_expand_special(global->config_path,
|
||||
g_defaults.config_path, sizeof(global->config_path));
|
||||
if (*g_defaults.path.config)
|
||||
fill_pathname_expand_special(global->path.config,
|
||||
g_defaults.path.config, sizeof(global->path.config));
|
||||
|
||||
settings->config_save_on_exit = config_save_on_exit;
|
||||
|
||||
@ -1050,8 +1050,8 @@ static config_file_t *open_default_config_file(void)
|
||||
if (!conf)
|
||||
return NULL;
|
||||
|
||||
strlcpy(global->config_path, conf_path,
|
||||
sizeof(global->config_path));
|
||||
strlcpy(global->path.config, conf_path,
|
||||
sizeof(global->path.config));
|
||||
|
||||
return conf;
|
||||
}
|
||||
@ -1199,7 +1199,7 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
if (set_defaults)
|
||||
config_set_defaults();
|
||||
|
||||
strlcpy(tmp_append_path, global->append_config_path,
|
||||
strlcpy(tmp_append_path, global->path.append_config,
|
||||
sizeof(tmp_append_path));
|
||||
extra_path = strtok_r(tmp_append_path, "|", &save);
|
||||
|
||||
@ -1420,24 +1420,24 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
snprintf(buf, sizeof(buf), "input_player%u_analog_dpad_mode", i + 1);
|
||||
CONFIG_GET_INT_BASE(conf, settings, input.analog_dpad_mode[i], buf);
|
||||
|
||||
if (!global->has_set_libretro_device[i])
|
||||
if (!global->has_set.libretro_device[i])
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1);
|
||||
CONFIG_GET_INT_BASE(conf, settings, input.libretro_device[i], buf);
|
||||
}
|
||||
}
|
||||
|
||||
if (!global->has_set_ups_pref)
|
||||
if (!global->has_set.ups_pref)
|
||||
{
|
||||
CONFIG_GET_BOOL_BASE(conf, global, ups_pref, "ups_pref");
|
||||
CONFIG_GET_BOOL_BASE(conf, global, patch.ups_pref, "ups_pref");
|
||||
}
|
||||
if (!global->has_set_bps_pref)
|
||||
if (!global->has_set.bps_pref)
|
||||
{
|
||||
CONFIG_GET_BOOL_BASE(conf, global, bps_pref, "bps_pref");
|
||||
CONFIG_GET_BOOL_BASE(conf, global, patch.bps_pref, "bps_pref");
|
||||
}
|
||||
if (!global->has_set_ips_pref)
|
||||
if (!global->has_set.ips_pref)
|
||||
{
|
||||
CONFIG_GET_BOOL_BASE(conf, global, ips_pref, "ips_pref");
|
||||
CONFIG_GET_BOOL_BASE(conf, global, patch.ips_pref, "ips_pref");
|
||||
}
|
||||
|
||||
/* Audio settings. */
|
||||
@ -1474,9 +1474,9 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
CONFIG_GET_STRING_BASE(conf, settings, input.joypad_driver, "input_joypad_driver");
|
||||
CONFIG_GET_STRING_BASE(conf, settings, input.keyboard_layout, "input_keyboard_layout");
|
||||
|
||||
if (!global->has_set_libretro)
|
||||
if (!global->has_set.libretro)
|
||||
config_get_path(conf, "libretro_path", settings->libretro, sizeof(settings->libretro));
|
||||
if (!global->has_set_libretro_directory)
|
||||
if (!global->has_set.libretro_directory)
|
||||
config_get_path(conf, "libretro_directory", settings->libretro_directory, sizeof(settings->libretro_directory));
|
||||
|
||||
/* Safe-guard against older behavior. */
|
||||
@ -1551,7 +1551,7 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
#endif
|
||||
CONFIG_GET_INT_BASE(conf, settings, libretro_log_level, "libretro_log_level");
|
||||
|
||||
if (!global->has_set_verbosity)
|
||||
if (!global->has_set.verbosity)
|
||||
CONFIG_GET_BOOL_BASE(conf, global, verbosity, "log_verbosity");
|
||||
|
||||
CONFIG_GET_BOOL_BASE(conf, global, perfcnt_enable, "perfcnt_enable");
|
||||
@ -1562,9 +1562,9 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
sizeof(global->record.config_dir));
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
config_get_path(conf, "overlay_directory", global->overlay_dir, sizeof(global->overlay_dir));
|
||||
if (!strcmp(global->overlay_dir, "default"))
|
||||
*global->overlay_dir = '\0';
|
||||
config_get_path(conf, "overlay_directory", global->dir.overlay, sizeof(global->dir.overlay));
|
||||
if (!strcmp(global->dir.overlay, "default"))
|
||||
*global->dir.overlay = '\0';
|
||||
|
||||
config_get_path(conf, "input_overlay", settings->input.overlay, sizeof(settings->input.overlay));
|
||||
CONFIG_GET_BOOL_BASE(conf, settings, input.overlay_enable, "input_overlay_enable");
|
||||
@ -1573,9 +1573,9 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
CONFIG_GET_FLOAT_BASE(conf, settings, input.overlay_opacity, "input_overlay_opacity");
|
||||
CONFIG_GET_FLOAT_BASE(conf, settings, input.overlay_scale, "input_overlay_scale");
|
||||
|
||||
config_get_path(conf, "osk_overlay_directory", global->osk_overlay_dir, sizeof(global->osk_overlay_dir));
|
||||
if (!strcmp(global->osk_overlay_dir, "default"))
|
||||
*global->osk_overlay_dir = '\0';
|
||||
config_get_path(conf, "osk_overlay_directory", global->dir.osk_overlay, sizeof(global->dir.osk_overlay));
|
||||
if (!strcmp(global->dir.osk_overlay, "default"))
|
||||
*global->dir.osk_overlay = '\0';
|
||||
|
||||
config_get_path(conf, "input_osk_overlay", settings->osk.overlay, sizeof(settings->osk.overlay));
|
||||
CONFIG_GET_BOOL_BASE(conf, settings, osk.enable, "input_osk_overlay_enable");
|
||||
@ -1635,58 +1635,58 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
CONFIG_GET_BOOL_BASE(conf, settings, input.autodetect_enable, "input_autodetect_enable");
|
||||
CONFIG_GET_PATH_BASE(conf, settings, input.autoconfig_dir, "joypad_autoconfig_dir");
|
||||
|
||||
if (!global->has_set_username)
|
||||
if (!global->has_set.username)
|
||||
CONFIG_GET_PATH_BASE(conf, settings, username, "netplay_nickname");
|
||||
CONFIG_GET_INT_BASE(conf, settings, user_language, "user_language");
|
||||
#ifdef HAVE_NETPLAY
|
||||
if (!global->has_set_netplay_mode)
|
||||
CONFIG_GET_BOOL_BASE(conf, global, netplay_is_spectate,
|
||||
if (!global->has_set.netplay_mode)
|
||||
CONFIG_GET_BOOL_BASE(conf, global, netplay.is_spectate,
|
||||
"netplay_spectator_mode_enable");
|
||||
if (!global->has_set_netplay_mode)
|
||||
CONFIG_GET_BOOL_BASE(conf, global, netplay_is_client, "netplay_mode");
|
||||
if (!global->has_set_netplay_ip_address)
|
||||
CONFIG_GET_PATH_BASE(conf, global, netplay_server, "netplay_ip_address");
|
||||
if (!global->has_set_netplay_delay_frames)
|
||||
CONFIG_GET_INT_BASE(conf, global, netplay_sync_frames, "netplay_delay_frames");
|
||||
if (!global->has_set_netplay_ip_port)
|
||||
CONFIG_GET_INT_BASE(conf, global, netplay_port, "netplay_ip_port");
|
||||
if (!global->has_set.netplay_mode)
|
||||
CONFIG_GET_BOOL_BASE(conf, global, netplay.is_client, "netplay_mode");
|
||||
if (!global->has_set.netplay_ip_address)
|
||||
CONFIG_GET_PATH_BASE(conf, global, netplay.server, "netplay_ip_address");
|
||||
if (!global->has_set.netplay_delay_frames)
|
||||
CONFIG_GET_INT_BASE(conf, global, netplay.sync_frames, "netplay_delay_frames");
|
||||
if (!global->has_set.netplay_ip_port)
|
||||
CONFIG_GET_INT_BASE(conf, global, netplay.port, "netplay_ip_port");
|
||||
#endif
|
||||
|
||||
CONFIG_GET_BOOL_BASE(conf, settings, config_save_on_exit, "config_save_on_exit");
|
||||
|
||||
if (!global->has_set_save_path &&
|
||||
if (!global->has_set.save_path &&
|
||||
config_get_path(conf, "savefile_directory", tmp_str, sizeof(tmp_str)))
|
||||
{
|
||||
if (!strcmp(tmp_str, "default"))
|
||||
strlcpy(global->savefile_dir, g_defaults.sram_dir,
|
||||
sizeof(global->savefile_dir));
|
||||
strlcpy(global->dir.savefile, g_defaults.dir.sram,
|
||||
sizeof(global->dir.savefile));
|
||||
else if (path_is_directory(tmp_str))
|
||||
{
|
||||
strlcpy(global->savefile_dir, tmp_str,
|
||||
sizeof(global->savefile_dir));
|
||||
strlcpy(global->savefile_name, tmp_str,
|
||||
sizeof(global->savefile_name));
|
||||
fill_pathname_dir(global->savefile_name, global->basename,
|
||||
".srm", sizeof(global->savefile_name));
|
||||
strlcpy(global->dir.savefile, tmp_str,
|
||||
sizeof(global->dir.savefile));
|
||||
strlcpy(global->name.savefile, tmp_str,
|
||||
sizeof(global->name.savefile));
|
||||
fill_pathname_dir(global->name.savefile, global->name.base,
|
||||
".srm", sizeof(global->name.savefile));
|
||||
}
|
||||
else
|
||||
RARCH_WARN("savefile_directory is not a directory, ignoring ...\n");
|
||||
}
|
||||
|
||||
if (!global->has_set_state_path &&
|
||||
if (!global->has_set.state_path &&
|
||||
config_get_path(conf, "savestate_directory", tmp_str, sizeof(tmp_str)))
|
||||
{
|
||||
if (!strcmp(tmp_str, "default"))
|
||||
strlcpy(global->savestate_dir, g_defaults.savestate_dir,
|
||||
sizeof(global->savestate_dir));
|
||||
strlcpy(global->dir.savestate, g_defaults.dir.savestate,
|
||||
sizeof(global->dir.savestate));
|
||||
else if (path_is_directory(tmp_str))
|
||||
{
|
||||
strlcpy(global->savestate_dir, tmp_str,
|
||||
sizeof(global->savestate_dir));
|
||||
strlcpy(global->savestate_name, tmp_str,
|
||||
sizeof(global->savestate_name));
|
||||
fill_pathname_dir(global->savestate_name, global->basename,
|
||||
".state", sizeof(global->savestate_name));
|
||||
strlcpy(global->dir.savestate, tmp_str,
|
||||
sizeof(global->dir.savestate));
|
||||
strlcpy(global->name.savestate, tmp_str,
|
||||
sizeof(global->name.savestate));
|
||||
fill_pathname_dir(global->name.savestate, global->name.base,
|
||||
".state", sizeof(global->name.savestate));
|
||||
}
|
||||
else
|
||||
RARCH_WARN("savestate_directory is not a directory, ignoring ...\n");
|
||||
@ -1704,7 +1704,7 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
else
|
||||
{
|
||||
fill_pathname_resolve_relative(settings->content_history_path,
|
||||
global->config_path, "content_history.lpl",
|
||||
global->path.config, "content_history.lpl",
|
||||
sizeof(settings->content_history_path));
|
||||
}
|
||||
}
|
||||
@ -1749,12 +1749,12 @@ static void config_load_core_specific(void)
|
||||
settings_t *settings = config_get_ptr();
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
*global->core_specific_config_path = '\0';
|
||||
*global->path.core_specific_config = '\0';
|
||||
|
||||
if (!*settings->libretro)
|
||||
return;
|
||||
#ifdef HAVE_DYNAMIC
|
||||
if (global->core_type == CORE_TYPE_DUMMY)
|
||||
if (global->inited.core.type == CORE_TYPE_DUMMY)
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -1763,34 +1763,34 @@ static void config_load_core_specific(void)
|
||||
{
|
||||
path_resolve_realpath(settings->menu_config_directory,
|
||||
sizeof(settings->menu_config_directory));
|
||||
strlcpy(global->core_specific_config_path,
|
||||
strlcpy(global->path.core_specific_config,
|
||||
settings->menu_config_directory,
|
||||
sizeof(global->core_specific_config_path));
|
||||
sizeof(global->path.core_specific_config));
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
/* Use original config file's directory as a fallback. */
|
||||
fill_pathname_basedir(global->core_specific_config_path,
|
||||
global->config_path, sizeof(global->core_specific_config_path));
|
||||
fill_pathname_basedir(global->path.core_specific_config,
|
||||
global->path.config, sizeof(global->path.core_specific_config));
|
||||
}
|
||||
|
||||
fill_pathname_dir(global->core_specific_config_path, settings->libretro,
|
||||
".cfg", sizeof(global->core_specific_config_path));
|
||||
fill_pathname_dir(global->path.core_specific_config, settings->libretro,
|
||||
".cfg", sizeof(global->path.core_specific_config));
|
||||
|
||||
if (settings->core_specific_config)
|
||||
{
|
||||
char tmp[PATH_MAX_LENGTH] = {0};
|
||||
|
||||
/* Toggle has_save_path to false so it resets */
|
||||
global->has_set_save_path = false;
|
||||
global->has_set_state_path = false;
|
||||
global->has_set.save_path = false;
|
||||
global->has_set.state_path = false;
|
||||
|
||||
strlcpy(tmp, settings->libretro, sizeof(tmp));
|
||||
RARCH_LOG("Loading core-specific config from: %s.\n",
|
||||
global->core_specific_config_path);
|
||||
global->path.core_specific_config);
|
||||
|
||||
if (!config_load_file(global->core_specific_config_path, true))
|
||||
if (!config_load_file(global->path.core_specific_config, true))
|
||||
RARCH_WARN("Core-specific config not found, reusing last config.\n");
|
||||
|
||||
/* Force some parameters which are implied when using core specific configs.
|
||||
@ -1801,8 +1801,8 @@ static void config_load_core_specific(void)
|
||||
settings->core_specific_config = true;
|
||||
|
||||
/* Reset save paths */
|
||||
global->has_set_save_path = true;
|
||||
global->has_set_state_path = true;
|
||||
global->has_set.save_path = true;
|
||||
global->has_set.state_path = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1839,7 +1839,7 @@ bool config_load_override(void)
|
||||
if (!info->info.library_name || !strcmp(info->info.library_name,"No Core"))
|
||||
return false;
|
||||
|
||||
RARCH_LOG("Game name: %s\n", global->basename);
|
||||
RARCH_LOG("Game name: %s\n", global->name.base);
|
||||
RARCH_LOG("Core name: %s\n", info->info.library_name);
|
||||
|
||||
if (!global || !settings )
|
||||
@ -1853,8 +1853,8 @@ bool config_load_override(void)
|
||||
* fallback to the location of the current configuration file. */
|
||||
if (settings->menu_config_directory[0] != '\0')
|
||||
strlcpy(config_directory, settings->menu_config_directory, PATH_MAX_LENGTH);
|
||||
else if (global->config_path[0] != '\0')
|
||||
fill_pathname_basedir(config_directory, global->config_path, PATH_MAX_LENGTH);
|
||||
else if (global->path.config[0] != '\0')
|
||||
fill_pathname_basedir(config_directory, global->path.config, PATH_MAX_LENGTH);
|
||||
else
|
||||
{
|
||||
RARCH_WARN("No config directory set under Settings > Path and retroarch.cfg not found.\n");
|
||||
@ -1864,7 +1864,7 @@ bool config_load_override(void)
|
||||
RARCH_LOG("Config directory: %s\n", config_directory);
|
||||
|
||||
core_name = info->info.library_name;
|
||||
game_name = path_basename(global->basename);
|
||||
game_name = path_basename(global->name.base);
|
||||
|
||||
/* Concatenate strings into full paths for core_path, game_path */
|
||||
fill_pathname_join(core_path, config_directory, core_name, PATH_MAX_LENGTH);
|
||||
@ -1887,7 +1887,7 @@ bool config_load_override(void)
|
||||
return false;
|
||||
}
|
||||
RARCH_LOG("Core-specific overrides found at %s. Appending.\n", core_path);
|
||||
strlcpy(global->append_config_path, core_path, sizeof(global->append_config_path));
|
||||
strlcpy(global->path.append_config, core_path, sizeof(global->path.append_config));
|
||||
should_append = true;
|
||||
}
|
||||
else
|
||||
@ -1902,11 +1902,11 @@ bool config_load_override(void)
|
||||
RARCH_LOG("Game-specific overrides found at %s. Appending.\n", game_path);
|
||||
if (should_append)
|
||||
{
|
||||
strlcat(global->append_config_path, "|", sizeof(global->append_config_path));
|
||||
strlcat(global->append_config_path, game_path, sizeof(global->append_config_path));
|
||||
strlcat(global->path.append_config, "|", sizeof(global->path.append_config));
|
||||
strlcat(global->path.append_config, game_path, sizeof(global->path.append_config));
|
||||
}
|
||||
else
|
||||
strlcpy(global->append_config_path, game_path, sizeof(global->append_config_path));
|
||||
strlcpy(global->path.append_config, game_path, sizeof(global->path.append_config));
|
||||
|
||||
should_append = true;
|
||||
}
|
||||
@ -1925,7 +1925,7 @@ bool config_load_override(void)
|
||||
}
|
||||
|
||||
#ifdef HAVE_NETPLAY
|
||||
if (global->netplay_enable)
|
||||
if (global->netplay.enable)
|
||||
{
|
||||
RARCH_WARN("Can't use overrides in conjunction with netplay, disabling overrides\n");
|
||||
return false;
|
||||
@ -1936,10 +1936,10 @@ bool config_load_override(void)
|
||||
strlcpy(buf,settings->libretro,sizeof(buf));
|
||||
|
||||
/* Toggle has_save_path to false so it resets */
|
||||
global->has_set_save_path = false;
|
||||
global->has_set_state_path = false;
|
||||
global->has_set.save_path = false;
|
||||
global->has_set.state_path = false;
|
||||
|
||||
if (config_load_file(global->config_path, false))
|
||||
if (config_load_file(global->path.config, false))
|
||||
{
|
||||
/* Restore the libretro_path we're using
|
||||
* since it will be overwritten by the override when reloading. */
|
||||
@ -1947,8 +1947,8 @@ bool config_load_override(void)
|
||||
rarch_main_msg_queue_push("Configuration override loaded", 1, 100, true);
|
||||
|
||||
/* Reset save paths */
|
||||
global->has_set_save_path = true;
|
||||
global->has_set_state_path = true;
|
||||
global->has_set.save_path = true;
|
||||
global->has_set.state_path = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -1971,19 +1971,19 @@ bool config_load_override(void)
|
||||
if (!global)
|
||||
return false;
|
||||
|
||||
*global->append_config_path = '\0';
|
||||
*global->path.append_config = '\0';
|
||||
|
||||
/* Toggle has_save_path to false so it resets */
|
||||
global->has_set_save_path = false;
|
||||
global->has_set_state_path = false;
|
||||
global->has_set.save_path = false;
|
||||
global->has_set.state_path = false;
|
||||
|
||||
if (config_load_file(global->config_path, false))
|
||||
if (config_load_file(global->path.config, false))
|
||||
{
|
||||
RARCH_LOG("Configuration overrides unloaded, original configuration reset\n");
|
||||
|
||||
/* Reset save paths */
|
||||
global->has_set_save_path = true;
|
||||
global->has_set_state_path = true;
|
||||
global->has_set.save_path = true;
|
||||
global->has_set.state_path = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -2020,7 +2020,7 @@ bool config_load_remap(void)
|
||||
if (!info->info.library_name || !strcmp(info->info.library_name,"No Core"))
|
||||
return false;
|
||||
|
||||
RARCH_LOG("Game name: %s\n", global->basename);
|
||||
RARCH_LOG("Game name: %s\n", global->name.base);
|
||||
RARCH_LOG("Core name: %s\n", info->info.library_name);
|
||||
|
||||
/* Remap directory: remap_directory.
|
||||
@ -2035,7 +2035,7 @@ bool config_load_remap(void)
|
||||
RARCH_LOG("Remap directory: %s\n", remap_directory);
|
||||
|
||||
core_name = info->info.library_name;
|
||||
game_name = path_basename(global->basename);
|
||||
game_name = path_basename(global->name.base);
|
||||
|
||||
/* Concatenate strings into full paths for core_path, game_path */
|
||||
fill_pathname_join(core_path, remap_directory, core_name, PATH_MAX_LENGTH);
|
||||
@ -2096,25 +2096,25 @@ bool config_load_remap(void)
|
||||
static void parse_config_file(void)
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
bool ret = config_load_file((*global->config_path)
|
||||
? global->config_path : NULL, false);
|
||||
bool ret = config_load_file((*global->path.config)
|
||||
? global->path.config : NULL, false);
|
||||
|
||||
if (*global->config_path)
|
||||
if (*global->path.config)
|
||||
{
|
||||
RARCH_LOG("Loading config from: %s.\n", global->config_path);
|
||||
RARCH_LOG("Loading config from: %s.\n", global->path.config);
|
||||
}
|
||||
else
|
||||
{
|
||||
RARCH_LOG("Loading default config.\n");
|
||||
if (*global->config_path)
|
||||
RARCH_LOG("Found default config: %s.\n", global->config_path);
|
||||
if (*global->path.config)
|
||||
RARCH_LOG("Found default config: %s.\n", global->path.config);
|
||||
}
|
||||
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
RARCH_ERR("Couldn't find config at path: \"%s\"\n",
|
||||
global->config_path);
|
||||
global->path.config);
|
||||
}
|
||||
|
||||
|
||||
@ -2287,12 +2287,12 @@ void config_load(void)
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
/* Flush out per-core configs before loading a new config. */
|
||||
if (*global->core_specific_config_path &&
|
||||
if (*global->path.core_specific_config &&
|
||||
settings->config_save_on_exit && settings->core_specific_config)
|
||||
config_save_file(global->core_specific_config_path);
|
||||
config_save_file(global->path.core_specific_config);
|
||||
|
||||
/* Flush out some states that could have been set by core environment variables */
|
||||
global->has_set_input_descriptors = false;
|
||||
global->has_set.input_descriptors = false;
|
||||
|
||||
if (!global->block_config_read)
|
||||
{
|
||||
@ -2562,12 +2562,12 @@ bool config_save_file(const char *path)
|
||||
config_set_float(conf, "video_font_size", settings->video.font_size);
|
||||
config_set_bool(conf, "video_font_enable", settings->video.font_enable);
|
||||
|
||||
if (!global->has_set_ups_pref)
|
||||
config_set_bool(conf, "ups_pref", global->ups_pref);
|
||||
if (!global->has_set_bps_pref)
|
||||
config_set_bool(conf, "bps_pref", global->bps_pref);
|
||||
if (!global->has_set_ips_pref)
|
||||
config_set_bool(conf, "ips_pref", global->ips_pref);
|
||||
if (!global->has_set.ups_pref)
|
||||
config_set_bool(conf, "ups_pref", global->patch.ups_pref);
|
||||
if (!global->has_set.bps_pref)
|
||||
config_set_bool(conf, "bps_pref", global->patch.bps_pref);
|
||||
if (!global->has_set.ips_pref)
|
||||
config_set_bool(conf, "ips_pref", global->patch.ips_pref);
|
||||
|
||||
config_set_path(conf, "system_directory",
|
||||
*settings->system_directory ?
|
||||
@ -2582,9 +2582,9 @@ bool config_save_file(const char *path)
|
||||
settings->resampler_directory);
|
||||
config_set_string(conf, "audio_resampler", settings->audio.resampler);
|
||||
config_set_path(conf, "savefile_directory",
|
||||
*global->savefile_dir ? global->savefile_dir : "default");
|
||||
*global->dir.savefile ? global->dir.savefile : "default");
|
||||
config_set_path(conf, "savestate_directory",
|
||||
*global->savestate_dir ? global->savestate_dir : "default");
|
||||
*global->dir.savestate ? global->dir.savestate : "default");
|
||||
config_set_path(conf, "video_shader_dir",
|
||||
*settings->video.shader_dir ?
|
||||
settings->video.shader_dir : "default");
|
||||
@ -2647,7 +2647,7 @@ bool config_save_file(const char *path)
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
config_set_path(conf, "overlay_directory",
|
||||
*global->overlay_dir ? global->overlay_dir : "default");
|
||||
*global->dir.overlay ? global->dir.overlay : "default");
|
||||
config_set_path(conf, "input_overlay", settings->input.overlay);
|
||||
config_set_bool(conf, "input_overlay_enable", settings->input.overlay_enable);
|
||||
config_set_bool(conf, "input_overlay_enable_autopreferred", settings->input.overlay_enable_autopreferred);
|
||||
@ -2658,7 +2658,7 @@ bool config_save_file(const char *path)
|
||||
settings->input.overlay_scale);
|
||||
|
||||
config_set_path(conf, "osk_overlay_directory",
|
||||
*global->osk_overlay_dir ? global->osk_overlay_dir : "default");
|
||||
*global->dir.osk_overlay ? global->dir.osk_overlay : "default");
|
||||
config_set_path(conf, "input_osk_overlay", settings->osk.overlay);
|
||||
config_set_bool(conf, "input_osk_overlay_enable", settings->osk.enable);
|
||||
#endif
|
||||
@ -2720,11 +2720,11 @@ bool config_save_file(const char *path)
|
||||
|
||||
#ifdef HAVE_NETPLAY
|
||||
config_set_bool(conf, "netplay_spectator_mode_enable",
|
||||
global->netplay_is_spectate);
|
||||
config_set_bool(conf, "netplay_mode", global->netplay_is_client);
|
||||
config_set_string(conf, "netplay_ip_address", global->netplay_server);
|
||||
config_set_int(conf, "netplay_ip_port", global->netplay_port);
|
||||
config_set_int(conf, "netplay_delay_frames", global->netplay_sync_frames);
|
||||
global->netplay.is_spectate);
|
||||
config_set_bool(conf, "netplay_mode", global->netplay.is_client);
|
||||
config_set_string(conf, "netplay_ip_address", global->netplay.server);
|
||||
config_set_int(conf, "netplay_ip_port", global->netplay.port);
|
||||
config_set_int(conf, "netplay_delay_frames", global->netplay.sync_frames);
|
||||
#endif
|
||||
config_set_string(conf, "netplay_nickname", settings->username);
|
||||
config_set_int(conf, "user_language", settings->user_language);
|
||||
|
@ -73,7 +73,7 @@ static bool read_content_file(unsigned i, const char *path, void **buf,
|
||||
return true;
|
||||
|
||||
/* Attempt to apply a patch. */
|
||||
if (!global->block_patch)
|
||||
if (!global->patch.block_patch)
|
||||
patch_content(&ret_buf, length);
|
||||
|
||||
#ifdef HAVE_ZLIB
|
||||
@ -610,7 +610,7 @@ bool init_content_file(void)
|
||||
attr.i |= system->info.need_fullpath << 1;
|
||||
attr.i |= (!system->no_content) << 2;
|
||||
string_list_append(content,
|
||||
(global->libretro_no_content && settings->core.set_supports_no_game_enable) ? "" : global->fullpath, attr);
|
||||
(global->inited.core.no_content && settings->core.set_supports_no_game_enable) ? "" : global->path.fullpath, attr);
|
||||
}
|
||||
|
||||
#ifdef HAVE_ZLIB
|
||||
@ -655,7 +655,7 @@ bool init_content_file(void)
|
||||
ret = load_content(special, content);
|
||||
|
||||
error:
|
||||
global->content_is_init = (ret) ? true : false;
|
||||
global->inited.content = (ret) ? true : false;
|
||||
|
||||
if (content)
|
||||
string_list_free(content);
|
||||
|
@ -39,7 +39,7 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty
|
||||
break;
|
||||
case DIR_LIST_CORE_INFO:
|
||||
dir = input_dir;
|
||||
exts = (global->core_info) ? core_info_list_get_all_extensions(global->core_info) : NULL;
|
||||
exts = (global->core_info.list) ? core_info_list_get_all_extensions(global->core_info.list) : NULL;
|
||||
break;
|
||||
case DIR_LIST_SHADERS:
|
||||
dir = settings->video.shader_dir;
|
||||
|
27
dynamic.c
27
dynamic.c
@ -704,9 +704,9 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
char buf[PATH_MAX_LENGTH] = {0};
|
||||
const char *options_path = settings->core_options_path;
|
||||
|
||||
if (!*options_path && *global->config_path)
|
||||
if (!*options_path && *global->path.config)
|
||||
{
|
||||
fill_pathname_resolve_relative(buf, global->config_path,
|
||||
fill_pathname_resolve_relative(buf, global->path.config,
|
||||
"retroarch-core-options.cfg", sizeof(buf));
|
||||
options_path = buf;
|
||||
}
|
||||
@ -754,8 +754,8 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY:
|
||||
if (!settings->system_directory || settings->system_directory[0] == '\0')
|
||||
{
|
||||
RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",global->fullpath);
|
||||
fill_pathname_basedir(buf, global->fullpath,
|
||||
RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",global->path.fullpath);
|
||||
fill_pathname_basedir(buf, global->path.fullpath,
|
||||
sizeof(buf));
|
||||
|
||||
}
|
||||
@ -767,10 +767,10 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
break;
|
||||
|
||||
case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY:
|
||||
*(const char**)data = *global->savefile_dir ?
|
||||
global->savefile_dir : NULL;
|
||||
*(const char**)data = *global->dir.savefile ?
|
||||
global->dir.savefile : NULL;
|
||||
RARCH_LOG("Environ SAVE_DIRECTORY: \"%s\".\n",
|
||||
global->savefile_dir);
|
||||
global->dir.savefile);
|
||||
break;
|
||||
|
||||
case RETRO_ENVIRONMENT_GET_USERNAME:
|
||||
@ -895,7 +895,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
}
|
||||
}
|
||||
|
||||
global->has_set_input_descriptors = true;
|
||||
global->has_set.input_descriptors = true;
|
||||
|
||||
break;
|
||||
}
|
||||
@ -1022,7 +1022,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
return false;
|
||||
|
||||
#ifdef HAVE_NETPLAY
|
||||
if (global->netplay_enable)
|
||||
if (global->netplay.enable)
|
||||
return false;
|
||||
#endif
|
||||
|
||||
@ -1041,7 +1041,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
#ifdef HAVE_NETPLAY
|
||||
/* retro_run() will be called in very strange and
|
||||
* mysterious ways, have to disable it. */
|
||||
if (global->netplay_enable)
|
||||
if (global->netplay.enable)
|
||||
return false;
|
||||
#endif
|
||||
|
||||
@ -1261,11 +1261,10 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
case RETRO_ENVIRONMENT_EXEC:
|
||||
case RETRO_ENVIRONMENT_EXEC_ESCAPE:
|
||||
|
||||
*global->path.fullpath = '\0';
|
||||
if (data)
|
||||
strlcpy(global->fullpath, (const char*)data,
|
||||
sizeof(global->fullpath));
|
||||
else
|
||||
*global->fullpath = '\0';
|
||||
strlcpy(global->path.fullpath, (const char*)data,
|
||||
sizeof(global->path.fullpath));
|
||||
|
||||
#if defined(RARCH_CONSOLE)
|
||||
if (driver->frontend_ctx && driver->frontend_ctx->set_fork)
|
||||
|
@ -744,93 +744,91 @@ static void frontend_android_get_environment_settings(int *argc,
|
||||
RARCH_LOG("Application location: [%s].\n", app_dir);
|
||||
if (args && *app_dir)
|
||||
{
|
||||
fill_pathname_join(g_defaults.assets_dir, app_dir,
|
||||
"assets", sizeof(g_defaults.savestate_dir));
|
||||
fill_pathname_join(g_defaults.extraction_dir, app_dir,
|
||||
"tmp", sizeof(g_defaults.extraction_dir));
|
||||
fill_pathname_join(g_defaults.shader_dir, app_dir,
|
||||
"shaders", sizeof(g_defaults.shader_dir));
|
||||
fill_pathname_join(g_defaults.overlay_dir, app_dir,
|
||||
"overlays", sizeof(g_defaults.overlay_dir));
|
||||
fill_pathname_join(g_defaults.core_dir, app_dir,
|
||||
"cores", sizeof(g_defaults.core_dir));
|
||||
fill_pathname_join(g_defaults.core_info_dir,
|
||||
app_dir, "info", sizeof(g_defaults.core_info_dir));
|
||||
fill_pathname_join(g_defaults.autoconfig_dir,
|
||||
app_dir, "autoconfig", sizeof(g_defaults.autoconfig_dir));
|
||||
fill_pathname_join(g_defaults.audio_filter_dir,
|
||||
app_dir, "audio_filters", sizeof(g_defaults.audio_filter_dir));
|
||||
fill_pathname_join(g_defaults.video_filter_dir,
|
||||
app_dir, "video_filters", sizeof(g_defaults.video_filter_dir));
|
||||
strlcpy(g_defaults.content_history_dir,
|
||||
app_dir, sizeof(g_defaults.content_history_dir));
|
||||
fill_pathname_join(g_defaults.database_dir,
|
||||
app_dir, "database/rdb", sizeof(g_defaults.database_dir));
|
||||
fill_pathname_join(g_defaults.cursor_dir,
|
||||
app_dir, "database/cursors", sizeof(g_defaults.cursor_dir));
|
||||
fill_pathname_join(g_defaults.cheats_dir,
|
||||
app_dir, "cheats", sizeof(g_defaults.cheats_dir));
|
||||
fill_pathname_join(g_defaults.playlist_dir,
|
||||
app_dir, "playlists", sizeof(g_defaults.playlist_dir));
|
||||
fill_pathname_join(g_defaults.remap_dir,
|
||||
app_dir, "remaps", sizeof(g_defaults.remap_dir));
|
||||
fill_pathname_join(g_defaults.wallpapers_dir,
|
||||
app_dir, "wallpapers", sizeof(g_defaults.wallpapers_dir));
|
||||
fill_pathname_join(g_defaults.dir.assets, app_dir,
|
||||
"assets", sizeof(g_defaults.dir.assets));
|
||||
fill_pathname_join(g_defaults.dir.extraction, app_dir,
|
||||
"tmp", sizeof(g_defaults.dir.extraction));
|
||||
fill_pathname_join(g_defaults.dir.shader, app_dir,
|
||||
"shaders", sizeof(g_defaults.dir.shader));
|
||||
fill_pathname_join(g_defaults.dir.overlay, app_dir,
|
||||
"overlays", sizeof(g_defaults.dir.overlay));
|
||||
fill_pathname_join(g_defaults.dir.core, app_dir,
|
||||
"cores", sizeof(g_defaults.dir.core));
|
||||
fill_pathname_join(g_defaults.dir.core_info,
|
||||
app_dir, "info", sizeof(g_defaults.dir.core_info));
|
||||
fill_pathname_join(g_defaults.dir.autoconfig,
|
||||
app_dir, "autoconfig", sizeof(g_defaults.dir.autoconfig));
|
||||
fill_pathname_join(g_defaults.dir.audio_filter,
|
||||
app_dir, "audio_filters", sizeof(g_defaults.dir.audio_filter));
|
||||
fill_pathname_join(g_defaults.dir.video_filter,
|
||||
app_dir, "video_filters", sizeof(g_defaults.dir.video_filter));
|
||||
strlcpy(g_defaults.dir.content_history,
|
||||
app_dir, sizeof(g_defaults.dir.content_history));
|
||||
fill_pathname_join(g_defaults.dir.database,
|
||||
app_dir, "database/rdb", sizeof(g_defaults.dir.database));
|
||||
fill_pathname_join(g_defaults.dir.cursor,
|
||||
app_dir, "database/cursors", sizeof(g_defaults.dir.cursor));
|
||||
fill_pathname_join(g_defaults.dir.cheats,
|
||||
app_dir, "cheats", sizeof(g_defaults.dir.cheats));
|
||||
fill_pathname_join(g_defaults.dir.playlist,
|
||||
app_dir, "playlists", sizeof(g_defaults.dir.playlist));
|
||||
fill_pathname_join(g_defaults.dir.remap,
|
||||
app_dir, "remaps", sizeof(g_defaults.dir.remap));
|
||||
fill_pathname_join(g_defaults.dir.wallpapers,
|
||||
app_dir, "wallpapers", sizeof(g_defaults.dir.wallpapers));
|
||||
if(*downloads_dir && test_permissions(downloads_dir))
|
||||
{
|
||||
fill_pathname_join(g_defaults.core_assets_dir,
|
||||
downloads_dir, "", sizeof(g_defaults.core_assets_dir));
|
||||
fill_pathname_join(g_defaults.dir.core_assets,
|
||||
downloads_dir, "", sizeof(g_defaults.dir.core_assets));
|
||||
}
|
||||
else
|
||||
{
|
||||
fill_pathname_join(g_defaults.core_assets_dir,
|
||||
app_dir, "downloads", sizeof(g_defaults.core_assets_dir));
|
||||
path_mkdir(g_defaults.core_assets_dir);
|
||||
fill_pathname_join(g_defaults.dir.core_assets,
|
||||
app_dir, "downloads", sizeof(g_defaults.dir.core_assets));
|
||||
path_mkdir(g_defaults.dir.core_assets);
|
||||
}
|
||||
|
||||
RARCH_LOG("Default download folder: [%s]", g_defaults.core_assets_dir);
|
||||
RARCH_LOG("Default download folder: [%s]", g_defaults.dir.core_assets);
|
||||
|
||||
if(*screenshot_dir && test_permissions(screenshot_dir))
|
||||
{
|
||||
fill_pathname_join(g_defaults.screenshot_dir,
|
||||
screenshot_dir, "", sizeof(g_defaults.screenshot_dir));
|
||||
fill_pathname_join(g_defaults.dir.screenshot,
|
||||
screenshot_dir, "", sizeof(g_defaults.dir.screenshot));
|
||||
}
|
||||
else
|
||||
{
|
||||
fill_pathname_join(g_defaults.screenshot_dir,
|
||||
app_dir, "screenshots", sizeof(g_defaults.screenshot_dir));
|
||||
path_mkdir(g_defaults.screenshot_dir);
|
||||
fill_pathname_join(g_defaults.dir.screenshot,
|
||||
app_dir, "screenshots", sizeof(g_defaults.dir.screenshot));
|
||||
path_mkdir(g_defaults.dir.screenshot);
|
||||
}
|
||||
|
||||
RARCH_LOG("Default screenshot folder: [%s]", g_defaults.screenshot_dir);
|
||||
RARCH_LOG("Default screenshot folder: [%s]", g_defaults.dir.screenshot);
|
||||
|
||||
switch (perms)
|
||||
{
|
||||
case SDCARD_EXT_DIR_WRITABLE:
|
||||
fill_pathname_join(g_defaults.sram_dir,
|
||||
ext_dir, "saves", sizeof(g_defaults.sram_dir));
|
||||
path_mkdir(g_defaults.sram_dir);
|
||||
fill_pathname_join(g_defaults.dir.sram,
|
||||
ext_dir, "saves", sizeof(g_defaults.dir.sram));
|
||||
path_mkdir(g_defaults.dir.sram);
|
||||
|
||||
fill_pathname_join(g_defaults.savestate_dir,
|
||||
ext_dir, "states", sizeof(g_defaults.savestate_dir));
|
||||
path_mkdir(g_defaults.savestate_dir);
|
||||
fill_pathname_join(g_defaults.dir.savestate,
|
||||
ext_dir, "states", sizeof(g_defaults.dir.savestate));
|
||||
path_mkdir(g_defaults.dir.savestate);
|
||||
|
||||
fill_pathname_join(g_defaults.system_dir,
|
||||
ext_dir, "system", sizeof(g_defaults.system_dir));
|
||||
path_mkdir(g_defaults.system_dir);
|
||||
fill_pathname_join(g_defaults.dir.system,
|
||||
ext_dir, "system", sizeof(g_defaults.dir.system));
|
||||
path_mkdir(g_defaults.dir.system);
|
||||
break;
|
||||
case SDCARD_NOT_WRITABLE:
|
||||
fill_pathname_join(g_defaults.sram_dir,
|
||||
app_dir, "saves", sizeof(g_defaults.sram_dir));
|
||||
path_mkdir(g_defaults.sram_dir);
|
||||
|
||||
fill_pathname_join(g_defaults.savestate_dir,
|
||||
app_dir, "states", sizeof(g_defaults.savestate_dir));
|
||||
path_mkdir(g_defaults.savestate_dir);
|
||||
|
||||
fill_pathname_join(g_defaults.system_dir,
|
||||
app_dir, "system", sizeof(g_defaults.system_dir));
|
||||
path_mkdir(g_defaults.system_dir);
|
||||
fill_pathname_join(g_defaults.dir.sram,
|
||||
app_dir, "saves", sizeof(g_defaults.dir.sram));
|
||||
path_mkdir(g_defaults.dir.sram);
|
||||
fill_pathname_join(g_defaults.dir.savestate,
|
||||
app_dir, "states", sizeof(g_defaults.dir.savestate));
|
||||
path_mkdir(g_defaults.dir.savestate);
|
||||
fill_pathname_join(g_defaults.dir.system,
|
||||
app_dir, "system", sizeof(g_defaults.dir.system));
|
||||
path_mkdir(g_defaults.dir.system);
|
||||
break;
|
||||
case SDCARD_ROOT_WRITABLE:
|
||||
default:
|
||||
@ -864,9 +862,9 @@ static void frontend_android_get_environment_settings(int *argc,
|
||||
ext_dir, "system", sizeof(buf));
|
||||
path_mkdir(buf);
|
||||
|
||||
RARCH_LOG("Default savefile folder: [%s]", g_defaults.sram_dir);
|
||||
RARCH_LOG("Default savestate folder: [%s]", g_defaults.savestate_dir);
|
||||
RARCH_LOG("Default system folder: [%s]", g_defaults.system_dir);
|
||||
RARCH_LOG("Default savefile folder: [%s]", g_defaults.dir.sram);
|
||||
RARCH_LOG("Default savestate folder: [%s]", g_defaults.dir.savestate);
|
||||
RARCH_LOG("Default system folder: [%s]", g_defaults.dir.system);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -56,27 +56,27 @@ static void frontend_ctr_get_environment_settings(int *argc, char *argv[],
|
||||
#endif
|
||||
#endif
|
||||
|
||||
fill_pathname_basedir(g_defaults.port_dir, elf_path_cst, sizeof(g_defaults.port_dir));
|
||||
RARCH_LOG("port dir: [%s]\n", g_defaults.port_dir);
|
||||
fill_pathname_basedir(g_defaults.dir.port, elf_path_cst, sizeof(g_defaults.dir.port));
|
||||
RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port);
|
||||
|
||||
fill_pathname_join(g_defaults.core_assets_dir, g_defaults.port_dir,
|
||||
"downloads", sizeof(g_defaults.core_assets_dir));
|
||||
fill_pathname_join(g_defaults.assets_dir, g_defaults.port_dir,
|
||||
"media", sizeof(g_defaults.assets_dir));
|
||||
fill_pathname_join(g_defaults.core_dir, g_defaults.port_dir,
|
||||
"cores", sizeof(g_defaults.core_dir));
|
||||
fill_pathname_join(g_defaults.core_info_dir, g_defaults.port_dir,
|
||||
"cores", sizeof(g_defaults.core_info_dir));
|
||||
fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir,
|
||||
"savestates", sizeof(g_defaults.savestate_dir));
|
||||
fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir,
|
||||
"savefiles", sizeof(g_defaults.sram_dir));
|
||||
fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir,
|
||||
"system", sizeof(g_defaults.system_dir));
|
||||
fill_pathname_join(g_defaults.playlist_dir, g_defaults.core_dir,
|
||||
"playlists", sizeof(g_defaults.playlist_dir));
|
||||
fill_pathname_join(g_defaults.config_path, g_defaults.port_dir,
|
||||
"retroarch.cfg", sizeof(g_defaults.config_path));
|
||||
fill_pathname_join(g_defaults.dir.core_assets, g_defaults.dir.port,
|
||||
"downloads", sizeof(g_defaults.dir.core_assets));
|
||||
fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port,
|
||||
"media", sizeof(g_defaults.dir.assets));
|
||||
fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port,
|
||||
"cores", sizeof(g_defaults.dir.core));
|
||||
fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port,
|
||||
"cores", sizeof(g_defaults.dir.core_info));
|
||||
fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core,
|
||||
"savestates", sizeof(g_defaults.dir.savestate));
|
||||
fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core,
|
||||
"savefiles", sizeof(g_defaults.dir.sram));
|
||||
fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core,
|
||||
"system", sizeof(g_defaults.dir.system));
|
||||
fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core,
|
||||
"playlists", sizeof(g_defaults.dir.playlist));
|
||||
fill_pathname_join(g_defaults.path.config, g_defaults.dir.port,
|
||||
"retroarch.cfg", sizeof(g_defaults.path.config));
|
||||
|
||||
#ifndef IS_SALAMANDER
|
||||
#if 0
|
||||
|
@ -337,52 +337,52 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[],
|
||||
#ifdef OSX
|
||||
strlcat(home_dir_buf, "/RetroArch", sizeof(home_dir_buf));
|
||||
#endif
|
||||
fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_glsl", sizeof(g_defaults.shader_dir));
|
||||
fill_pathname_join(g_defaults.core_dir, home_dir_buf, "cores", sizeof(g_defaults.core_dir));
|
||||
fill_pathname_join(g_defaults.core_info_dir, home_dir_buf, "info", sizeof(g_defaults.core_info_dir));
|
||||
fill_pathname_join(g_defaults.overlay_dir, home_dir_buf, "overlays", sizeof(g_defaults.overlay_dir));
|
||||
fill_pathname_join(g_defaults.autoconfig_dir, home_dir_buf, "autoconfig", sizeof(g_defaults.autoconfig_dir));
|
||||
fill_pathname_join(g_defaults.core_assets_dir, home_dir_buf, "downloads", sizeof(g_defaults.core_assets_dir));
|
||||
fill_pathname_join(g_defaults.assets_dir, home_dir_buf, "assets", sizeof(g_defaults.assets_dir));
|
||||
fill_pathname_join(g_defaults.system_dir, home_dir_buf, "system", sizeof(g_defaults.system_dir));
|
||||
fill_pathname_join(g_defaults.menu_config_dir, home_dir_buf, "configs", sizeof(g_defaults.menu_config_dir));
|
||||
fill_pathname_join(g_defaults.config_path, g_defaults.menu_config_dir, "retroarch.cfg", sizeof(g_defaults.config_path));
|
||||
fill_pathname_join(g_defaults.database_dir, home_dir_buf, "rdb", sizeof(g_defaults.database_dir));
|
||||
fill_pathname_join(g_defaults.cursor_dir, home_dir_buf, "cursors", sizeof(g_defaults.cursor_dir));
|
||||
fill_pathname_join(g_defaults.cheats_dir, home_dir_buf, "cht", sizeof(g_defaults.cheats_dir));
|
||||
fill_pathname_join(g_defaults.sram_dir, home_dir_buf, "saves", sizeof(g_defaults.sram_dir));
|
||||
fill_pathname_join(g_defaults.savestate_dir, home_dir_buf, "states", sizeof(g_defaults.savestate_dir));
|
||||
fill_pathname_join(g_defaults.remap_dir, home_dir_buf, "remaps", sizeof(g_defaults.remap_dir));
|
||||
fill_pathname_join(g_defaults.dir.shader, home_dir_buf, "shaders_glsl", sizeof(g_defaults.dir.shader));
|
||||
fill_pathname_join(g_defaults.dir.core, home_dir_buf, "cores", sizeof(g_defaults.dir.core));
|
||||
fill_pathname_join(g_defaults.dir.core_info, home_dir_buf, "info", sizeof(g_defaults.dir.core_info));
|
||||
fill_pathname_join(g_defaults.dir.overlay, home_dir_buf, "overlays", sizeof(g_defaults.dir.overlay));
|
||||
fill_pathname_join(g_defaults.dir.autoconfig, home_dir_buf, "autoconfig", sizeof(g_defaults.dir.autoconfig));
|
||||
fill_pathname_join(g_defaults.dir.core_assets, home_dir_buf, "downloads", sizeof(g_defaults.dir.core_assets));
|
||||
fill_pathname_join(g_defaults.dir.assets, home_dir_buf, "assets", sizeof(g_defaults.dir.assets));
|
||||
fill_pathname_join(g_defaults.dir.system, home_dir_buf, "system", sizeof(g_defaults.dir.system));
|
||||
fill_pathname_join(g_defaults.dir.menu_config, home_dir_buf, "configs", sizeof(g_defaults.dir.menu_config));
|
||||
fill_pathname_join(g_defaults.path.config, g_defaults.dir.menu_config, "retroarch.cfg", sizeof(g_defaults.path.config));
|
||||
fill_pathname_join(g_defaults.dir.database, home_dir_buf, "rdb", sizeof(g_defaults.dir.database));
|
||||
fill_pathname_join(g_defaults.dir.cursor, home_dir_buf, "cursors", sizeof(g_defaults.dir.cursor));
|
||||
fill_pathname_join(g_defaults.dir.cheats, home_dir_buf, "cht", sizeof(g_defaults.dir.cheats));
|
||||
fill_pathname_join(g_defaults.dir.sram, home_dir_buf, "saves", sizeof(g_defaults.dir.sram));
|
||||
fill_pathname_join(g_defaults.dir.savestate, home_dir_buf, "states", sizeof(g_defaults.dir.savestate));
|
||||
fill_pathname_join(g_defaults.dir.remap, home_dir_buf, "remaps", sizeof(g_defaults.dir.remap));
|
||||
#if defined(OSX)
|
||||
#ifdef HAVE_CG
|
||||
fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_cg", sizeof(g_defaults.shader_dir));
|
||||
fill_pathname_join(g_defaults.dir.shader, home_dir_buf, "shaders_cg", sizeof(g_defaults.dir.shader));
|
||||
#endif
|
||||
fill_pathname_join(g_defaults.audio_filter_dir, home_dir_buf, "audio_filters", sizeof(g_defaults.audio_filter_dir));
|
||||
fill_pathname_join(g_defaults.video_filter_dir, home_dir_buf, "video_filters", sizeof(g_defaults.video_filter_dir));
|
||||
fill_pathname_join(g_defaults.playlist_dir, home_dir_buf, "playlists", sizeof(g_defaults.playlist_dir));
|
||||
fill_pathname_join(g_defaults.dir.audio_filter, home_dir_buf, "audio_filters", sizeof(g_defaults.dir.audio_filter));
|
||||
fill_pathname_join(g_defaults.dir.video_filter, home_dir_buf, "video_filters", sizeof(g_defaults.dir.video_filter));
|
||||
fill_pathname_join(g_defaults.dir.playlist, home_dir_buf, "playlists", sizeof(g_defaults.dir.playlist));
|
||||
#endif
|
||||
#ifdef RELEASE_BUILD
|
||||
fill_pathname_join(g_defaults.remap_dir, bundle_path_buf, "Contents/Resources/remaps", sizeof(g_defaults.remap_dir));
|
||||
fill_pathname_join(g_defaults.playlist_dir, bundle_path_buf, "Contents/Resources/playlists", sizeof(g_defaults.playlist_dir));
|
||||
fill_pathname_join(g_defaults.shader_dir, bundle_path_buf, "Contents/Resources/shaders", sizeof(g_defaults.shader_dir));
|
||||
fill_pathname_join(g_defaults.core_dir, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.core_dir));
|
||||
fill_pathname_join(g_defaults.core_info_dir, bundle_path_buf, "Contents/Resources/info", sizeof(g_defaults.core_info_dir));
|
||||
fill_pathname_join(g_defaults.overlay_dir, bundle_path_buf, "Contents/Resources/overlays", sizeof(g_defaults.overlay_dir));
|
||||
fill_pathname_join(g_defaults.autoconfig_dir, bundle_path_buf, "Contents/Resources/autoconfig", sizeof(g_defaults.autoconfig_dir));
|
||||
fill_pathname_join(g_defaults.core_assets_dir, bundle_path_buf, "Contents/Resources/downloads", sizeof(g_defaults.core_assets_dir));
|
||||
fill_pathname_join(g_defaults.assets_dir, bundle_path_buf, "Contents/Resources/assets", sizeof(g_defaults.assets_dir));
|
||||
fill_pathname_join(g_defaults.system_dir, bundle_path_buf, "Contents/Resources/system", sizeof(g_defaults.system_dir));
|
||||
fill_pathname_join(g_defaults.menu_config_dir, bundle_path_buf, "Contents/Resources/configs", sizeof(g_defaults.menu_config_dir));
|
||||
fill_pathname_join(g_defaults.config_path, g_defaults.menu_config_dir, "retroarch.cfg", sizeof(g_defaults.config_path));
|
||||
fill_pathname_join(g_defaults.database_dir, bundle_path_buf, "Contents/Resources/rdb", sizeof(g_defaults.database_dir));
|
||||
fill_pathname_join(g_defaults.cursor_dir, bundle_path_buf, "Contents/Resources/cursors", sizeof(g_defaults.cursor_dir));
|
||||
fill_pathname_join(g_defaults.cheats_dir, bundle_path_buf, "Contents/Resources/cht", sizeof(g_defaults.cheats_dir));
|
||||
fill_pathname_join(g_defaults.sram_dir, bundle_path_buf, "Contents/Resources/saves", sizeof(g_defaults.sram_dir));
|
||||
fill_pathname_join(g_defaults.savestate_dir, bundle_path_buf, "Contents/Resources/states", sizeof(g_defaults.savestate_dir));
|
||||
fill_pathname_join(g_defaults.dir.remap, bundle_path_buf, "Contents/Resources/remaps", sizeof(g_defaults.dir.remap));
|
||||
fill_pathname_join(g_defaults.dir.playlist, bundle_path_buf, "Contents/Resources/playlists", sizeof(g_defaults.dir.playlist));
|
||||
fill_pathname_join(g_defaults.dir.shader, bundle_path_buf, "Contents/Resources/shaders", sizeof(g_defaults.dir.shader));
|
||||
fill_pathname_join(g_defaults.dir.core, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.dir.core));
|
||||
fill_pathname_join(g_defaults.dir.core_info, bundle_path_buf, "Contents/Resources/info", sizeof(g_defaults.dir.core_info));
|
||||
fill_pathname_join(g_defaults.dir.overlay, bundle_path_buf, "Contents/Resources/overlays", sizeof(g_defaults.dir.overlay));
|
||||
fill_pathname_join(g_defaults.dir.autoconfig, bundle_path_buf, "Contents/Resources/autoconfig", sizeof(g_defaults.dir.autoconfig));
|
||||
fill_pathname_join(g_defaults.dir.core_assets, bundle_path_buf, "Contents/Resources/downloads", sizeof(g_defaults.dir.core_assets));
|
||||
fill_pathname_join(g_defaults.dir.assets, bundle_path_buf, "Contents/Resources/assets", sizeof(g_defaults.dir.assets));
|
||||
fill_pathname_join(g_defaults.dir.system, bundle_path_buf, "Contents/Resources/system", sizeof(g_defaults.dir.system));
|
||||
fill_pathname_join(g_defaults.dir.menu_config, bundle_path_buf, "Contents/Resources/configs", sizeof(g_defaults.dir.menu_config));
|
||||
fill_pathname_join(g_defaults.path.config, g_defaults.dir.menu_config, "retroarch.cfg", sizeof(g_defaults.path.config));
|
||||
fill_pathname_join(g_defaults.dir.database, bundle_path_buf, "Contents/Resources/rdb", sizeof(g_defaults.dir.database));
|
||||
fill_pathname_join(g_defaults.dir.cursor, bundle_path_buf, "Contents/Resources/cursors", sizeof(g_defaults.dir.cursor));
|
||||
fill_pathname_join(g_defaults.dir.cheats, bundle_path_buf, "Contents/Resources/cht", sizeof(g_defaults.dir.cheats));
|
||||
fill_pathname_join(g_defaults.dir.sram, bundle_path_buf, "Contents/Resources/saves", sizeof(g_defaults.dir.sram));
|
||||
fill_pathname_join(g_defaults.dir.savestate, bundle_path_buf, "Contents/Resources/states", sizeof(g_defaults.dir.savestate));
|
||||
#endif
|
||||
|
||||
CFTemporaryDirectory(temp_dir, sizeof(temp_dir));
|
||||
strlcpy(g_defaults.extraction_dir, temp_dir, sizeof(g_defaults.extraction_dir));
|
||||
strlcpy(g_defaults.dir.extraction, temp_dir, sizeof(g_defaults.dir.extraction));
|
||||
|
||||
path_mkdir(bundle_path_buf);
|
||||
|
||||
@ -390,10 +390,10 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[],
|
||||
RARCH_ERR("Failed to create or access base directory: %s\n", bundle_path_buf);
|
||||
else
|
||||
{
|
||||
path_mkdir(g_defaults.system_dir);
|
||||
path_mkdir(g_defaults.dir.system);
|
||||
|
||||
if (access(g_defaults.system_dir, 0755) != 0)
|
||||
RARCH_ERR("Failed to create or access system directory: %s.\n", g_defaults.system_dir);
|
||||
if (access(g_defaults.dir.system, 0755) != 0)
|
||||
RARCH_ERR("Failed to create or access system directory: %s.\n", g_defaults.dir.system);
|
||||
}
|
||||
|
||||
CFRelease(bundle_path);
|
||||
@ -598,7 +598,7 @@ static int frontend_darwin_parse_drive_list(void *data)
|
||||
menu_list_push(list,
|
||||
"/var/mobile/", "", MENU_FILE_DIRECTORY, 0, 0);
|
||||
menu_list_push(list,
|
||||
g_defaults.core_dir, "", MENU_FILE_DIRECTORY, 0, 0);
|
||||
g_defaults.dir.core, "", MENU_FILE_DIRECTORY, 0, 0);
|
||||
menu_list_push(list, "/", "",
|
||||
MENU_FILE_DIRECTORY, 0, 0);
|
||||
|
||||
|
@ -183,30 +183,30 @@ static void frontend_gx_get_environment_settings(int *argc, char *argv[],
|
||||
#ifdef HW_DOL
|
||||
chdir("carda:/retroarch");
|
||||
#endif
|
||||
getcwd(g_defaults.core_dir, MAXPATHLEN);
|
||||
char *last_slash = strrchr(g_defaults.core_dir, '/');
|
||||
getcwd(g_defaults.dir.core, MAXPATHLEN);
|
||||
char *last_slash = strrchr(g_defaults.dir.core, '/');
|
||||
if (last_slash)
|
||||
*last_slash = 0;
|
||||
char *device_end = strchr(g_defaults.core_dir, '/');
|
||||
char *device_end = strchr(g_defaults.dir.core, '/');
|
||||
if (device_end)
|
||||
snprintf(g_defaults.port_dir, sizeof(g_defaults.port_dir),
|
||||
"%.*s/retroarch", device_end - g_defaults.core_dir,
|
||||
g_defaults.core_dir);
|
||||
snprintf(g_defaults.dir.port, sizeof(g_defaults.dir.port),
|
||||
"%.*s/retroarch", device_end - g_defaults.dir.core,
|
||||
g_defaults.dir.core);
|
||||
else
|
||||
fill_pathname_join(g_defaults.port_dir, g_defaults.port_dir,
|
||||
"retroarch", sizeof(g_defaults.port_dir));
|
||||
fill_pathname_join(g_defaults.overlay_dir, g_defaults.core_dir,
|
||||
"overlays", sizeof(g_defaults.overlay_dir));
|
||||
fill_pathname_join(g_defaults.config_path, g_defaults.port_dir,
|
||||
"retroarch.cfg", sizeof(g_defaults.config_path));
|
||||
fill_pathname_join(g_defaults.system_dir, g_defaults.port_dir,
|
||||
"system", sizeof(g_defaults.system_dir));
|
||||
fill_pathname_join(g_defaults.sram_dir, g_defaults.port_dir,
|
||||
"savefiles", sizeof(g_defaults.sram_dir));
|
||||
fill_pathname_join(g_defaults.savestate_dir, g_defaults.port_dir,
|
||||
"savefiles", sizeof(g_defaults.savestate_dir));
|
||||
fill_pathname_join(g_defaults.playlist_dir, g_defaults.port_dir,
|
||||
"playlists", sizeof(g_defaults.playlist_dir));
|
||||
fill_pathname_join(g_defaults.dir.port, g_defaults.dir.port,
|
||||
"retroarch", sizeof(g_defaults.dir.port));
|
||||
fill_pathname_join(g_defaults.dir.overlay, g_defaults.dir.core,
|
||||
"overlays", sizeof(g_defaults.dir.overlay));
|
||||
fill_pathname_join(g_defaults.path.config, g_defaults.dir.port,
|
||||
"retroarch.cfg", sizeof(g_defaults.path.config));
|
||||
fill_pathname_join(g_defaults.dir.system, g_defaults.dir.port,
|
||||
"system", sizeof(g_defaults.dir.system));
|
||||
fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.port,
|
||||
"savefiles", sizeof(g_defaults.dir.sram));
|
||||
fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.port,
|
||||
"savefiles", sizeof(g_defaults.dir.savestate));
|
||||
fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.port,
|
||||
"playlists", sizeof(g_defaults.dir.playlist));
|
||||
|
||||
#ifdef IS_SALAMANDER
|
||||
if (*argc > 2 && argv[1] != NULL && argv[2] != NULL)
|
||||
@ -340,7 +340,7 @@ static void frontend_gx_exitspawn(char *s, size_t len)
|
||||
/* FIXME/TODO - hack
|
||||
* direct loading failed (out of memory), try to jump to Salamander,
|
||||
* then load the correct core */
|
||||
fill_pathname_join(s, g_defaults.core_dir,
|
||||
fill_pathname_join(s, g_defaults.dir.core,
|
||||
"boot.dol", len);
|
||||
#endif
|
||||
frontend_gx_exec(s, should_load_game);
|
||||
|
@ -186,15 +186,15 @@ static void frontend_ps3_get_environment_settings(int *argc, char *argv[],
|
||||
== CELL_GAME_ATTRIBUTE_APP_HOME)
|
||||
RARCH_LOG("RetroArch was launched from host machine (APP_HOME).\n");
|
||||
|
||||
ret = cellGameContentPermit(contentInfoPath, g_defaults.port_dir);
|
||||
ret = cellGameContentPermit(contentInfoPath, g_defaults.dir.port);
|
||||
|
||||
#ifdef HAVE_MULTIMAN
|
||||
if (multiman_detected)
|
||||
{
|
||||
fill_pathname_join(contentInfoPath, "/dev_hdd0/game/",
|
||||
EMULATOR_CONTENT_DIR, sizeof(contentInfoPath));
|
||||
fill_pathname_join(g_defaults.port_dir, contentInfoPath,
|
||||
"USRDIR", sizeof(g_defaults.port_dir));
|
||||
fill_pathname_join(g_defaults.dir.port, contentInfoPath,
|
||||
"USRDIR", sizeof(g_defaults.dir.port));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -204,29 +204,29 @@ static void frontend_ps3_get_environment_settings(int *argc, char *argv[],
|
||||
{
|
||||
RARCH_LOG("cellGameContentPermit() OK.\n");
|
||||
RARCH_LOG("contentInfoPath : [%s].\n", contentInfoPath);
|
||||
RARCH_LOG("usrDirPath : [%s].\n", g_defaults.port_dir);
|
||||
RARCH_LOG("usrDirPath : [%s].\n", g_defaults.dir.port);
|
||||
}
|
||||
|
||||
fill_pathname_join(g_defaults.core_dir, g_defaults.port_dir,
|
||||
"cores", sizeof(g_defaults.core_dir));
|
||||
fill_pathname_join(g_defaults.core_info_dir, g_defaults.port_dir,
|
||||
"cores", sizeof(g_defaults.core_info_dir));
|
||||
fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir,
|
||||
"savestates", sizeof(g_defaults.savestate_dir));
|
||||
fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir,
|
||||
"savefiles", sizeof(g_defaults.sram_dir));
|
||||
fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir,
|
||||
"system", sizeof(g_defaults.system_dir));
|
||||
fill_pathname_join(g_defaults.shader_dir, g_defaults.core_dir,
|
||||
"shaders_cg", sizeof(g_defaults.shader_dir));
|
||||
fill_pathname_join(g_defaults.config_path, g_defaults.port_dir,
|
||||
"retroarch.cfg", sizeof(g_defaults.config_path));
|
||||
fill_pathname_join(g_defaults.overlay_dir, g_defaults.core_dir,
|
||||
"overlays", sizeof(g_defaults.overlay_dir));
|
||||
fill_pathname_join(g_defaults.assets_dir, g_defaults.core_dir,
|
||||
"media", sizeof(g_defaults.assets_dir));
|
||||
fill_pathname_join(g_defaults.playlist_dir, g_defaults.core_dir,
|
||||
"playlists", sizeof(g_defaults.playlist_dir));
|
||||
fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port,
|
||||
"cores", sizeof(g_defaults.dir.core));
|
||||
fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port,
|
||||
"cores", sizeof(g_defaults.dir.core_info));
|
||||
fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core,
|
||||
"savestates", sizeof(g_defaults.dir.savestate));
|
||||
fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core,
|
||||
"savefiles", sizeof(g_defaults.dir.sram));
|
||||
fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core,
|
||||
"system", sizeof(g_defaults.dir.system));
|
||||
fill_pathname_join(g_defaults.dir.shader, g_defaults.dir.core,
|
||||
"shaders_cg", sizeof(g_defaults.dir.shader));
|
||||
fill_pathname_join(g_defaults.path.config, g_defaults.dir.port,
|
||||
"retroarch.cfg", sizeof(g_defaults.path.config));
|
||||
fill_pathname_join(g_defaults.dir.overlay, g_defaults.dir.core,
|
||||
"overlays", sizeof(g_defaults.dir.overlay));
|
||||
fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.core,
|
||||
"media", sizeof(g_defaults.dir.assets));
|
||||
fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core,
|
||||
"playlists", sizeof(g_defaults.dir.playlist));
|
||||
}
|
||||
|
||||
#ifndef IS_SALAMANDER
|
||||
@ -364,9 +364,9 @@ static void frontend_ps3_exec(const char *path, bool should_load_game)
|
||||
NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M);
|
||||
}
|
||||
#else
|
||||
if (should_load_game && global->fullpath[0] != '\0')
|
||||
if (should_load_game && global->path.fullpath[0] != '\0')
|
||||
{
|
||||
strlcpy(game_path, global->fullpath, sizeof(game_path));
|
||||
strlcpy(game_path, global->path.fullpath, sizeof(game_path));
|
||||
|
||||
const char * const spawn_argv[] = {
|
||||
game_path,
|
||||
|
@ -68,29 +68,29 @@ static void frontend_psp_get_environment_settings(int *argc, char *argv[],
|
||||
|
||||
strlcpy(eboot_path, argv[0], sizeof(eboot_path));
|
||||
|
||||
fill_pathname_basedir(g_defaults.port_dir, argv[0], sizeof(g_defaults.port_dir));
|
||||
RARCH_LOG("port dir: [%s]\n", g_defaults.port_dir);
|
||||
fill_pathname_basedir(g_defaults.dir.port, argv[0], sizeof(g_defaults.dir.port));
|
||||
RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port);
|
||||
|
||||
fill_pathname_join(g_defaults.assets_dir, g_defaults.port_dir,
|
||||
"media", sizeof(g_defaults.assets_dir));
|
||||
fill_pathname_join(g_defaults.core_dir, g_defaults.port_dir,
|
||||
"cores", sizeof(g_defaults.core_dir));
|
||||
fill_pathname_join(g_defaults.core_info_dir, g_defaults.port_dir,
|
||||
"cores", sizeof(g_defaults.core_info_dir));
|
||||
fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir,
|
||||
"savestates", sizeof(g_defaults.savestate_dir));
|
||||
fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir,
|
||||
"savefiles", sizeof(g_defaults.sram_dir));
|
||||
fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir,
|
||||
"system", sizeof(g_defaults.system_dir));
|
||||
fill_pathname_join(g_defaults.playlist_dir, g_defaults.core_dir,
|
||||
"playlists", sizeof(g_defaults.playlist_dir));
|
||||
fill_pathname_join(g_defaults.config_path, g_defaults.port_dir,
|
||||
"retroarch.cfg", sizeof(g_defaults.config_path));
|
||||
fill_pathname_join(g_defaults.cheats_dir, g_defaults.cheats_dir,
|
||||
"cheats", sizeof(g_defaults.cheats_dir));
|
||||
fill_pathname_join(g_defaults.remap_dir, g_defaults.remap_dir,
|
||||
"remaps", sizeof(g_defaults.remap_dir));
|
||||
fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port,
|
||||
"media", sizeof(g_defaults.dir.assets));
|
||||
fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port,
|
||||
"cores", sizeof(g_defaults.dir.core));
|
||||
fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port,
|
||||
"cores", sizeof(g_defaults.dir.core_info));
|
||||
fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core,
|
||||
"savestates", sizeof(g_defaults.dir.savestate));
|
||||
fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core,
|
||||
"savefiles", sizeof(g_defaults.dir.sram));
|
||||
fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core,
|
||||
"system", sizeof(g_defaults.dir.system));
|
||||
fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core,
|
||||
"playlists", sizeof(g_defaults.dir.playlist));
|
||||
fill_pathname_join(g_defaults.path.config, g_defaults.dir.port,
|
||||
"retroarch.cfg", sizeof(g_defaults.path.config));
|
||||
fill_pathname_join(g_defaults.dir.cheats, g_defaults.dir.cheats,
|
||||
"cheats", sizeof(g_defaults.dir.cheats));
|
||||
fill_pathname_join(g_defaults.dir.remap, g_defaults.dir.remap,
|
||||
"remaps", sizeof(g_defaults.dir.remap));
|
||||
|
||||
#ifndef IS_SALAMANDER
|
||||
if (argv[1] && (argv[1][0] != '\0'))
|
||||
@ -205,10 +205,10 @@ static void frontend_psp_exec(const char *path, bool should_load_game)
|
||||
#ifndef IS_SALAMANDER
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
if (should_load_game && global->fullpath[0] != '\0')
|
||||
if (should_load_game && global->path.fullpath[0] != '\0')
|
||||
{
|
||||
argp[args] = '\0';
|
||||
strlcat(argp + args, global->fullpath, sizeof(argp) - args);
|
||||
strlcat(argp + args, global->path.fullpath, sizeof(argp) - args);
|
||||
args += strlen(argp + args) + 1;
|
||||
}
|
||||
#endif
|
||||
|
@ -45,18 +45,18 @@ static int frontend_qnx_get_rating(void)
|
||||
static void frontend_qnx_get_environment_settings(int *argc, char *argv[],
|
||||
void *data, void *params_data)
|
||||
{
|
||||
fill_pathname_join(g_defaults.config_path, "app/native",
|
||||
"retroarch.cfg", sizeof(g_defaults.config_path));
|
||||
fill_pathname_join(g_defaults.shader_dir, "app/native",
|
||||
"shaders_glsl", sizeof(g_defaults.shader_dir));
|
||||
fill_pathname_join(g_defaults.overlay_dir, "app/native",
|
||||
"overlays", sizeof(g_defaults.overlay_dir));
|
||||
fill_pathname_join(g_defaults.core_dir, "app/native",
|
||||
"lib", sizeof(g_defaults.core_dir));
|
||||
fill_pathname_join(g_defaults.core_info_dir, "app/native",
|
||||
"info", sizeof(g_defaults.core_info_dir));
|
||||
fill_pathname_join(g_defaults.playlist_dir, "app/native",
|
||||
"playlists", sizeof(g_defaults.playlist_dir));
|
||||
fill_pathname_join(g_defaults.path.config, "app/native",
|
||||
"retroarch.cfg", sizeof(g_defaults.path.config));
|
||||
fill_pathname_join(g_defaults.dir.shader, "app/native",
|
||||
"shaders_glsl", sizeof(g_defaults.dir.shader));
|
||||
fill_pathname_join(g_defaults.dir.overlay, "app/native",
|
||||
"overlays", sizeof(g_defaults.dir.overlay));
|
||||
fill_pathname_join(g_defaults.dir.core, "app/native",
|
||||
"lib", sizeof(g_defaults.dir.core));
|
||||
fill_pathname_join(g_defaults.dir.core_info, "app/native",
|
||||
"info", sizeof(g_defaults.dir.core_info));
|
||||
fill_pathname_join(g_defaults.dir.playlist, "app/native",
|
||||
"playlists", sizeof(g_defaults.dir.playlist));
|
||||
}
|
||||
|
||||
enum frontend_architecture frontend_qnx_get_architecture(void)
|
||||
|
@ -132,7 +132,7 @@ void system_exec_wii(const char *_path, bool should_load_game)
|
||||
#ifdef IS_SALAMANDER
|
||||
strlcpy(game_path, gx_rom_path, sizeof(game_path));
|
||||
#else
|
||||
strlcpy(game_path, global->fullpath, sizeof(game_path));
|
||||
strlcpy(game_path, global->path.fullpath, sizeof(game_path));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -176,34 +176,34 @@ static void frontend_xdk_get_environment_settings(int *argc, char *argv[],
|
||||
#endif
|
||||
|
||||
#if defined(_XBOX1)
|
||||
strlcpy(g_defaults.core_dir, "D:", sizeof(g_defaults.core_dir));
|
||||
strlcpy(g_defaults.core_info_dir, "D:", sizeof(g_defaults.core_info_dir));
|
||||
fill_pathname_join(g_defaults.config_path, g_defaults.core_dir,
|
||||
"retroarch.cfg", sizeof(g_defaults.config_path));
|
||||
fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir,
|
||||
"savestates", sizeof(g_defaults.savestate_dir));
|
||||
fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir,
|
||||
"savefiles", sizeof(g_defaults.sram_dir));
|
||||
fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir,
|
||||
"system", sizeof(g_defaults.system_dir));
|
||||
fill_pathname_join(g_defaults.screenshot_dir, g_defaults.core_dir,
|
||||
"screenshots", sizeof(g_defaults.screenshot_dir));
|
||||
strlcpy(g_defaults.dir.core, "D:", sizeof(g_defaults.dir.core));
|
||||
strlcpy(g_defaults.dir.core_info, "D:", sizeof(g_defaults.dir.core_info));
|
||||
fill_pathname_join(g_defaults.path.config, g_defaults.dir.core,
|
||||
"retroarch.cfg", sizeof(g_defaults.path.config));
|
||||
fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core,
|
||||
"savestates", sizeof(g_defaults.dir.savestate));
|
||||
fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core,
|
||||
"savefiles", sizeof(g_defaults.dir.sram));
|
||||
fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core,
|
||||
"system", sizeof(g_defaults.dir.system));
|
||||
fill_pathname_join(g_defaults.dir.screenshot, g_defaults.dir.core,
|
||||
"screenshots", sizeof(g_defaults.dir.screenshot));
|
||||
#elif defined(_XBOX360)
|
||||
strlcpy(g_defaults.core_dir, "game:", sizeof(g_defaults.core_dir));
|
||||
strlcpy(g_defaults.core_info_dir,
|
||||
"game:", sizeof(g_defaults.core_info_dir));
|
||||
strlcpy(g_defaults.config_path,
|
||||
"game:\\retroarch.cfg", sizeof(g_defaults.config_path));
|
||||
strlcpy(g_defaults.screenshot_dir,
|
||||
"game:", sizeof(g_defaults.screenshot_dir));
|
||||
strlcpy(g_defaults.savestate_dir,
|
||||
"game:\\savestates", sizeof(g_defaults.savestate_dir));
|
||||
strlcpy(g_defaults.playlist_dir,
|
||||
"game:\\playlists", sizeof(g_defaults.playlist_dir));
|
||||
strlcpy(g_defaults.sram_dir,
|
||||
"game:\\savefiles", sizeof(g_defaults.sram_dir));
|
||||
strlcpy(g_defaults.system_dir,
|
||||
"game:\\system", sizeof(g_defaults.system_dir));
|
||||
strlcpy(g_defaults.dir.core, "game:", sizeof(g_defaults.dir.core));
|
||||
strlcpy(g_defaults.dir.core_info,
|
||||
"game:", sizeof(g_defaults.dir.core_info));
|
||||
strlcpy(g_defaults.path.config,
|
||||
"game:\\retroarch.cfg", sizeof(g_defaults.path.config));
|
||||
strlcpy(g_defaults.dir.screenshot,
|
||||
"game:", sizeof(g_defaults.dir.screenshot));
|
||||
strlcpy(g_defaults.dir.savestate,
|
||||
"game:\\savestates", sizeof(g_defaults.dir.savestate));
|
||||
strlcpy(g_defaults.dir.playlist,
|
||||
"game:\\playlists", sizeof(g_defaults.dir.playlist));
|
||||
strlcpy(g_defaults.dir.sram,
|
||||
"game:\\savefiles", sizeof(g_defaults.dir.sram));
|
||||
strlcpy(g_defaults.dir.system,
|
||||
"game:\\system", sizeof(g_defaults.dir.system));
|
||||
#endif
|
||||
|
||||
#ifndef IS_SALAMANDER
|
||||
|
@ -40,24 +40,26 @@ void main_exit_save_config(void)
|
||||
global_t *global = global_get_ptr();
|
||||
rarch_system_info_t *info = rarch_system_info_get_ptr();
|
||||
|
||||
if (settings->config_save_on_exit && *global->config_path)
|
||||
if (settings->config_save_on_exit && *global->path.config)
|
||||
{
|
||||
/* restore original paths in case per-core organization is enabled */
|
||||
if (settings->sort_savefiles_enable && orig_savefile_dir[0] != '\0')
|
||||
strlcpy(global->savefile_dir,orig_savefile_dir,sizeof(global->savefile_dir));
|
||||
strlcpy(global->dir.savefile, orig_savefile_dir,
|
||||
sizeof(global->dir.savefile));
|
||||
if (settings->sort_savestates_enable && orig_savestate_dir[0] != '\0')
|
||||
strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir));
|
||||
strlcpy(global->dir.savestate, orig_savestate_dir,
|
||||
sizeof(global->dir.savestate));
|
||||
|
||||
/* Save last core-specific config to the default config location,
|
||||
* needed on consoles for core switching and reusing last good
|
||||
* config for new cores.
|
||||
*/
|
||||
config_save_file(global->config_path);
|
||||
config_save_file(global->path.config);
|
||||
|
||||
/* Flush out the core specific config. */
|
||||
if (*global->core_specific_config_path &&
|
||||
if (*global->path.core_specific_config &&
|
||||
settings->core_specific_config)
|
||||
config_save_file(global->core_specific_config_path);
|
||||
config_save_file(global->path.core_specific_config);
|
||||
}
|
||||
|
||||
event_command(EVENT_CMD_AUTOSAVE_STATE);
|
||||
@ -81,7 +83,7 @@ void main_exit(void *args)
|
||||
|
||||
main_exit_save_config();
|
||||
|
||||
if (global->main_is_init)
|
||||
if (global->inited.main)
|
||||
{
|
||||
#ifdef HAVE_MENU
|
||||
/* Do not want menu context to live any more. */
|
||||
@ -125,50 +127,50 @@ void main_exit(void *args)
|
||||
|
||||
static void check_defaults_dirs(void)
|
||||
{
|
||||
if (*g_defaults.core_assets_dir)
|
||||
path_mkdir(g_defaults.core_assets_dir);
|
||||
if (*g_defaults.remap_dir)
|
||||
path_mkdir(g_defaults.remap_dir);
|
||||
if (*g_defaults.autoconfig_dir)
|
||||
path_mkdir(g_defaults.autoconfig_dir);
|
||||
if (*g_defaults.audio_filter_dir)
|
||||
path_mkdir(g_defaults.audio_filter_dir);
|
||||
if (*g_defaults.video_filter_dir)
|
||||
path_mkdir(g_defaults.video_filter_dir);
|
||||
if (*g_defaults.assets_dir)
|
||||
path_mkdir(g_defaults.assets_dir);
|
||||
if (*g_defaults.playlist_dir)
|
||||
path_mkdir(g_defaults.playlist_dir);
|
||||
if (*g_defaults.core_dir)
|
||||
path_mkdir(g_defaults.core_dir);
|
||||
if (*g_defaults.core_info_dir)
|
||||
path_mkdir(g_defaults.core_info_dir);
|
||||
if (*g_defaults.overlay_dir)
|
||||
path_mkdir(g_defaults.overlay_dir);
|
||||
if (*g_defaults.port_dir)
|
||||
path_mkdir(g_defaults.port_dir);
|
||||
if (*g_defaults.shader_dir)
|
||||
path_mkdir(g_defaults.shader_dir);
|
||||
if (*g_defaults.savestate_dir)
|
||||
path_mkdir(g_defaults.savestate_dir);
|
||||
if (*g_defaults.sram_dir)
|
||||
path_mkdir(g_defaults.sram_dir);
|
||||
if (*g_defaults.system_dir)
|
||||
path_mkdir(g_defaults.system_dir);
|
||||
if (*g_defaults.resampler_dir)
|
||||
path_mkdir(g_defaults.resampler_dir);
|
||||
if (*g_defaults.menu_config_dir)
|
||||
path_mkdir(g_defaults.menu_config_dir);
|
||||
if (*g_defaults.content_history_dir)
|
||||
path_mkdir(g_defaults.content_history_dir);
|
||||
if (*g_defaults.extraction_dir)
|
||||
path_mkdir(g_defaults.extraction_dir);
|
||||
if (*g_defaults.database_dir)
|
||||
path_mkdir(g_defaults.database_dir);
|
||||
if (*g_defaults.cursor_dir)
|
||||
path_mkdir(g_defaults.cursor_dir);
|
||||
if (*g_defaults.cheats_dir)
|
||||
path_mkdir(g_defaults.cheats_dir);
|
||||
if (*g_defaults.dir.core_assets)
|
||||
path_mkdir(g_defaults.dir.core_assets);
|
||||
if (*g_defaults.dir.remap)
|
||||
path_mkdir(g_defaults.dir.remap);
|
||||
if (*g_defaults.dir.autoconfig)
|
||||
path_mkdir(g_defaults.dir.autoconfig);
|
||||
if (*g_defaults.dir.audio_filter)
|
||||
path_mkdir(g_defaults.dir.audio_filter);
|
||||
if (*g_defaults.dir.video_filter)
|
||||
path_mkdir(g_defaults.dir.video_filter);
|
||||
if (*g_defaults.dir.assets)
|
||||
path_mkdir(g_defaults.dir.assets);
|
||||
if (*g_defaults.dir.playlist)
|
||||
path_mkdir(g_defaults.dir.playlist);
|
||||
if (*g_defaults.dir.core)
|
||||
path_mkdir(g_defaults.dir.core);
|
||||
if (*g_defaults.dir.core_info)
|
||||
path_mkdir(g_defaults.dir.core_info);
|
||||
if (*g_defaults.dir.overlay)
|
||||
path_mkdir(g_defaults.dir.overlay);
|
||||
if (*g_defaults.dir.port)
|
||||
path_mkdir(g_defaults.dir.port);
|
||||
if (*g_defaults.dir.shader)
|
||||
path_mkdir(g_defaults.dir.shader);
|
||||
if (*g_defaults.dir.savestate)
|
||||
path_mkdir(g_defaults.dir.savestate);
|
||||
if (*g_defaults.dir.sram)
|
||||
path_mkdir(g_defaults.dir.sram);
|
||||
if (*g_defaults.dir.system)
|
||||
path_mkdir(g_defaults.dir.system);
|
||||
if (*g_defaults.dir.resampler)
|
||||
path_mkdir(g_defaults.dir.resampler);
|
||||
if (*g_defaults.dir.menu_config)
|
||||
path_mkdir(g_defaults.dir.menu_config);
|
||||
if (*g_defaults.dir.content_history)
|
||||
path_mkdir(g_defaults.dir.content_history);
|
||||
if (*g_defaults.dir.extraction)
|
||||
path_mkdir(g_defaults.dir.extraction);
|
||||
if (*g_defaults.dir.database)
|
||||
path_mkdir(g_defaults.dir.database);
|
||||
if (*g_defaults.dir.cursor)
|
||||
path_mkdir(g_defaults.dir.cursor);
|
||||
if (*g_defaults.dir.cheats)
|
||||
path_mkdir(g_defaults.dir.cheats);
|
||||
}
|
||||
|
||||
static void history_playlist_push(content_playlist_t *playlist,
|
||||
@ -179,7 +181,7 @@ static void history_playlist_push(content_playlist_t *playlist,
|
||||
global_t *global = global_get_ptr();
|
||||
rarch_system_info_t *system = rarch_system_info_get_ptr();
|
||||
|
||||
if (!playlist || (global->core_type == CORE_TYPE_DUMMY) || !info)
|
||||
if (!playlist || (global->inited.core.type == CORE_TYPE_DUMMY) || !info)
|
||||
return;
|
||||
|
||||
/* Path can be relative here.
|
||||
@ -251,7 +253,7 @@ bool main_load_content(int argc, char **argv, void *args,
|
||||
rarch_argc_ptr = (int*)&rarch_argc;
|
||||
}
|
||||
|
||||
if (global->main_is_init)
|
||||
if (global->inited.main)
|
||||
rarch_main_deinit();
|
||||
|
||||
if ((ret = rarch_main_init(*rarch_argc_ptr, rarch_argv_ptr)))
|
||||
@ -322,10 +324,10 @@ int rarch_main(int argc, char *argv[], void *data)
|
||||
global_t *global = global_get_ptr();
|
||||
rarch_system_info_t *system = rarch_system_info_get_ptr();
|
||||
|
||||
if (global->content_is_init || system->no_content)
|
||||
if (global->inited.content || system->no_content)
|
||||
history_playlist_push(
|
||||
g_defaults.history,
|
||||
global->fullpath,
|
||||
global->path.fullpath,
|
||||
settings->libretro,
|
||||
system ? &system->info : NULL);
|
||||
}
|
||||
|
@ -89,11 +89,11 @@ static void find_and_set_first_file(char *s, size_t len,
|
||||
|
||||
char first_file[PATH_MAX_LENGTH] = {0};
|
||||
find_first_libretro_core(first_file, sizeof(first_file),
|
||||
g_defaults.core_dir, ext);
|
||||
g_defaults.dir.core, ext);
|
||||
|
||||
if (first_file[0] != '\0')
|
||||
{
|
||||
fill_pathname_join(s, g_defaults.core_dir, first_file, len);
|
||||
fill_pathname_join(s, g_defaults.dir.core, first_file, len);
|
||||
RARCH_LOG("libretro_path now set to: %s.\n", s);
|
||||
}
|
||||
else
|
||||
@ -105,13 +105,13 @@ static void salamander_init(char *s, size_t len)
|
||||
/* normal executable loading path */
|
||||
bool config_file_exists = false;
|
||||
|
||||
if (path_file_exists(g_defaults.config_path))
|
||||
if (path_file_exists(g_defaults.path.config))
|
||||
config_file_exists = true;
|
||||
|
||||
if (config_file_exists)
|
||||
{
|
||||
char tmp_str[PATH_MAX_LENGTH];
|
||||
config_file_t * conf = (config_file_t*)config_file_new(g_defaults.config_path);
|
||||
config_file_t * conf = (config_file_t*)config_file_new(g_defaults.path.config);
|
||||
|
||||
if (conf)
|
||||
{
|
||||
@ -137,7 +137,7 @@ static void salamander_init(char *s, size_t len)
|
||||
if (conf)
|
||||
{
|
||||
config_set_string(conf, "libretro_path", s);
|
||||
config_file_write(conf, g_defaults.config_path);
|
||||
config_file_write(conf, g_defaults.path.config);
|
||||
config_file_free(conf);
|
||||
}
|
||||
}
|
||||
|
63
general.h
63
general.h
@ -71,33 +71,40 @@ enum sound_mode_enums
|
||||
|
||||
struct defaults
|
||||
{
|
||||
char core_assets_dir[PATH_MAX_LENGTH];
|
||||
char menu_config_dir[PATH_MAX_LENGTH];
|
||||
char config_path[PATH_MAX_LENGTH];
|
||||
char core_path[PATH_MAX_LENGTH];
|
||||
char autoconfig_dir[PATH_MAX_LENGTH];
|
||||
char audio_filter_dir[PATH_MAX_LENGTH];
|
||||
char video_filter_dir[PATH_MAX_LENGTH];
|
||||
char assets_dir[PATH_MAX_LENGTH];
|
||||
char core_dir[PATH_MAX_LENGTH];
|
||||
char core_info_dir[PATH_MAX_LENGTH];
|
||||
char overlay_dir[PATH_MAX_LENGTH];
|
||||
char osk_overlay_dir[PATH_MAX_LENGTH];
|
||||
char port_dir[PATH_MAX_LENGTH];
|
||||
char shader_dir[PATH_MAX_LENGTH];
|
||||
char savestate_dir[PATH_MAX_LENGTH];
|
||||
char resampler_dir[PATH_MAX_LENGTH];
|
||||
char sram_dir[PATH_MAX_LENGTH];
|
||||
char screenshot_dir[PATH_MAX_LENGTH];
|
||||
char system_dir[PATH_MAX_LENGTH];
|
||||
char playlist_dir[PATH_MAX_LENGTH];
|
||||
char content_history_dir[PATH_MAX_LENGTH];
|
||||
char remap_dir[PATH_MAX_LENGTH];
|
||||
char extraction_dir[PATH_MAX_LENGTH];
|
||||
char wallpapers_dir[PATH_MAX_LENGTH];
|
||||
char database_dir[PATH_MAX_LENGTH];
|
||||
char cursor_dir[PATH_MAX_LENGTH];
|
||||
char cheats_dir[PATH_MAX_LENGTH];
|
||||
struct
|
||||
{
|
||||
char core_assets[PATH_MAX_LENGTH];
|
||||
char menu_config[PATH_MAX_LENGTH];
|
||||
char autoconfig[PATH_MAX_LENGTH];
|
||||
char audio_filter[PATH_MAX_LENGTH];
|
||||
char video_filter[PATH_MAX_LENGTH];
|
||||
char assets[PATH_MAX_LENGTH];
|
||||
char core[PATH_MAX_LENGTH];
|
||||
char core_info[PATH_MAX_LENGTH];
|
||||
char overlay[PATH_MAX_LENGTH];
|
||||
char osk_overlay[PATH_MAX_LENGTH];
|
||||
char port[PATH_MAX_LENGTH];
|
||||
char shader[PATH_MAX_LENGTH];
|
||||
char savestate[PATH_MAX_LENGTH];
|
||||
char resampler[PATH_MAX_LENGTH];
|
||||
char sram[PATH_MAX_LENGTH];
|
||||
char screenshot[PATH_MAX_LENGTH];
|
||||
char system[PATH_MAX_LENGTH];
|
||||
char playlist[PATH_MAX_LENGTH];
|
||||
char content_history[PATH_MAX_LENGTH];
|
||||
char remap[PATH_MAX_LENGTH];
|
||||
char extraction[PATH_MAX_LENGTH];
|
||||
char wallpapers[PATH_MAX_LENGTH];
|
||||
char database[PATH_MAX_LENGTH];
|
||||
char cursor[PATH_MAX_LENGTH];
|
||||
char cheats[PATH_MAX_LENGTH];
|
||||
} dir;
|
||||
|
||||
struct
|
||||
{
|
||||
char config[PATH_MAX_LENGTH];
|
||||
char core[PATH_MAX_LENGTH];
|
||||
} path;
|
||||
|
||||
struct
|
||||
{
|
||||
@ -146,7 +153,7 @@ static INLINE void rarch_fail(int error_code, const char *error)
|
||||
/* We cannot longjmp unless we're in rarch_main_init().
|
||||
* If not, something went very wrong, and we should
|
||||
* just exit right away. */
|
||||
rarch_assert(global->error_in_init);
|
||||
rarch_assert(global->inited.error);
|
||||
|
||||
strlcpy(global->error_string, error,
|
||||
sizeof(global->error_string));
|
||||
|
@ -131,13 +131,13 @@ static bool input_apply_turbo(unsigned port, unsigned id, bool res)
|
||||
settings_t *settings = config_get_ptr();
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
if (res && global->turbo_frame_enable[port])
|
||||
global->turbo_enable[port] |= (1 << id);
|
||||
if (res && global->turbo.frame_enable[port])
|
||||
global->turbo.enable[port] |= (1 << id);
|
||||
else if (!res)
|
||||
global->turbo_enable[port] &= ~(1 << id);
|
||||
global->turbo.enable[port] &= ~(1 << id);
|
||||
|
||||
if (global->turbo_enable[port] & (1 << id))
|
||||
return res && ((global->turbo_count % settings->input.turbo_period)
|
||||
if (global->turbo.enable[port] & (1 << id))
|
||||
return res && ((global->turbo.count % settings->input.turbo_period)
|
||||
< settings->input.turbo_duty_cycle);
|
||||
return res;
|
||||
}
|
||||
@ -283,10 +283,10 @@ void retro_init_libretro_cbs(void *data)
|
||||
if (!driver->netplay_data)
|
||||
return;
|
||||
|
||||
if (global->netplay_is_spectate)
|
||||
if (global->netplay.is_spectate)
|
||||
{
|
||||
pretro_set_input_state(
|
||||
(global->netplay_is_client ?
|
||||
(global->netplay.is_client ?
|
||||
input_state_spectate_client : input_state_spectate)
|
||||
);
|
||||
}
|
||||
|
@ -330,9 +330,9 @@ static int deferred_archive_open_detect_core(menu_displaylist_info_t *info)
|
||||
info->setting = menu_setting_find(info->label);
|
||||
|
||||
|
||||
if (global->core_info)
|
||||
if (global->core_info.list)
|
||||
strlcpy(info->exts, core_info_list_get_all_extensions(
|
||||
global->core_info), sizeof(info->exts));
|
||||
global->core_info.list), sizeof(info->exts));
|
||||
else if (global->menu.info.valid_extensions)
|
||||
{
|
||||
if (*global->menu.info.valid_extensions)
|
||||
@ -585,9 +585,9 @@ static int deferred_push_detect_core_list(menu_displaylist_info_t *info)
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
info->type_default = MENU_FILE_PLAIN;
|
||||
if (global->core_info)
|
||||
if (global->core_info.list)
|
||||
strlcpy(info->exts, core_info_list_get_all_extensions(
|
||||
global->core_info), sizeof(info->exts));
|
||||
global->core_info.list), sizeof(info->exts));
|
||||
|
||||
(void)settings;
|
||||
|
||||
|
@ -80,8 +80,8 @@ static void menu_action_setting_disp_set_label_configurations(
|
||||
|
||||
*w = 19;
|
||||
strlcpy(s2, path, len2);
|
||||
if (global && *global->config_path)
|
||||
fill_pathname_base(s, global->config_path,
|
||||
if (global && *global->path.config)
|
||||
fill_pathname_base(s, global->path.config,
|
||||
len);
|
||||
else
|
||||
strlcpy(s, menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), len);
|
||||
|
@ -81,7 +81,7 @@ static int rarch_defer_core_wrapper(menu_displaylist_info_t *info,
|
||||
sizeof(menu_path_new));
|
||||
}
|
||||
|
||||
ret = rarch_defer_core(global->core_info,
|
||||
ret = rarch_defer_core(global->core_info.list,
|
||||
menu_path_new, path, menu_label, menu->deferred_path,
|
||||
sizeof(menu->deferred_path));
|
||||
|
||||
@ -165,7 +165,7 @@ static int action_ok_file_load_detect_core(const char *path,
|
||||
settings_t *settings = config_get_ptr();
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
strlcpy(global->fullpath, detect_content_path, sizeof(global->fullpath));
|
||||
strlcpy(global->path.fullpath, detect_content_path, sizeof(global->path.fullpath));
|
||||
strlcpy(settings->libretro, path, sizeof(settings->libretro));
|
||||
event_command(EVENT_CMD_LOAD_CORE);
|
||||
menu_common_load_content(false, CORE_TYPE_PLAIN);
|
||||
@ -910,7 +910,7 @@ static int action_ok_remap_file_save_game(const char *path,
|
||||
settings_t *settings = config_get_ptr();
|
||||
rarch_system_info_t *info = rarch_system_info_get_ptr();
|
||||
const char *core_name = info ? info->info.library_name : NULL;
|
||||
const char *game_name = global ? path_basename(global->basename) : NULL;
|
||||
const char *game_name = global ? path_basename(global->name.base) : NULL;
|
||||
|
||||
fill_pathname_join(directory,settings->input_remapping_directory,core_name,PATH_MAX_LENGTH);
|
||||
fill_pathname_join(file,core_name,game_name,PATH_MAX_LENGTH);
|
||||
@ -984,8 +984,8 @@ static int action_ok_core_load_deferred(const char *path,
|
||||
|
||||
if (path)
|
||||
strlcpy(settings->libretro, path, sizeof(settings->libretro));
|
||||
strlcpy(global->fullpath, menu->deferred_path,
|
||||
sizeof(global->fullpath));
|
||||
strlcpy(global->path.fullpath, menu->deferred_path,
|
||||
sizeof(global->path.fullpath));
|
||||
|
||||
menu_common_load_content(false, CORE_TYPE_PLAIN);
|
||||
|
||||
@ -1051,7 +1051,7 @@ static int action_ok_core_load(const char *path,
|
||||
|
||||
if (menu->load_no_content && settings->core.set_supports_no_game_enable)
|
||||
{
|
||||
*global->fullpath = '\0';
|
||||
*global->path.fullpath = '\0';
|
||||
|
||||
menu_common_load_content(false, CORE_TYPE_PLAIN);
|
||||
return -1;
|
||||
@ -1263,8 +1263,8 @@ static int action_ok_file_load_ffmpeg(const char *path,
|
||||
menu_list_get_last(menu_list->menu_stack,
|
||||
&menu_path, NULL, NULL, NULL);
|
||||
|
||||
fill_pathname_join(global->fullpath, menu_path, path,
|
||||
sizeof(global->fullpath));
|
||||
fill_pathname_join(global->path.fullpath, menu_path, path,
|
||||
sizeof(global->path.fullpath));
|
||||
|
||||
menu_common_load_content(true, CORE_TYPE_FFMPEG);
|
||||
|
||||
@ -1285,8 +1285,8 @@ static int action_ok_file_load_imageviewer(const char *path,
|
||||
menu_list_get_last(menu_list->menu_stack,
|
||||
&menu_path, NULL, NULL, NULL);
|
||||
|
||||
fill_pathname_join(global->fullpath, menu_path, path,
|
||||
sizeof(global->fullpath));
|
||||
fill_pathname_join(global->path.fullpath, menu_path, path,
|
||||
sizeof(global->path.fullpath));
|
||||
|
||||
menu_common_load_content(true, CORE_TYPE_IMAGEVIEWER);
|
||||
|
||||
@ -1331,11 +1331,11 @@ static int action_ok_file_load(const char *path,
|
||||
else
|
||||
{
|
||||
if (type == MENU_FILE_IN_CARCHIVE)
|
||||
fill_pathname_join_delim(global->fullpath, menu_path_new, path,
|
||||
'#',sizeof(global->fullpath));
|
||||
fill_pathname_join_delim(global->path.fullpath, menu_path_new, path,
|
||||
'#',sizeof(global->path.fullpath));
|
||||
else
|
||||
fill_pathname_join(global->fullpath, menu_path_new, path,
|
||||
sizeof(global->fullpath));
|
||||
fill_pathname_join(global->path.fullpath, menu_path_new, path,
|
||||
sizeof(global->path.fullpath));
|
||||
|
||||
menu_common_load_content(true, CORE_TYPE_PLAIN);
|
||||
|
||||
@ -1648,12 +1648,12 @@ static int action_ok_file_load_or_resume(const char *path,
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
if (!strcmp(menu->deferred_path, global->fullpath))
|
||||
if (!strcmp(menu->deferred_path, global->path.fullpath))
|
||||
return generic_action_ok_command(EVENT_CMD_RESUME);
|
||||
else
|
||||
{
|
||||
strlcpy(global->fullpath,
|
||||
menu->deferred_path, sizeof(global->fullpath));
|
||||
strlcpy(global->path.fullpath,
|
||||
menu->deferred_path, sizeof(global->path.fullpath));
|
||||
event_command(EVENT_CMD_LOAD_CORE);
|
||||
rarch_main_set_state(RARCH_ACTION_STATE_LOAD_CONTENT);
|
||||
return -1;
|
||||
@ -1804,7 +1804,7 @@ static int action_ok_load_archive(const char *path,
|
||||
fill_pathname_join(detect_content_path, menu_path, content_path,
|
||||
sizeof(detect_content_path));
|
||||
|
||||
strlcpy(global->fullpath, detect_content_path, sizeof(global->fullpath));
|
||||
strlcpy(global->path.fullpath, detect_content_path, sizeof(global->path.fullpath));
|
||||
event_command(EVENT_CMD_LOAD_CORE);
|
||||
menu_common_load_content(false, CORE_TYPE_PLAIN);
|
||||
|
||||
@ -1827,7 +1827,7 @@ static int action_ok_load_archive_detect_core(const char *path,
|
||||
if (!menu || !menu_list)
|
||||
return -1;
|
||||
|
||||
ret = rarch_defer_core(global->core_info, menu_path, content_path, label,
|
||||
ret = rarch_defer_core(global->core_info.list, menu_path, content_path, label,
|
||||
menu->deferred_path, sizeof(menu->deferred_path));
|
||||
|
||||
fill_pathname_join(detect_content_path, menu_path, content_path,
|
||||
|
42
menu/menu.c
42
menu/menu.c
@ -41,15 +41,15 @@ static void menu_environment_get(int *argc, char *argv[],
|
||||
return;
|
||||
|
||||
wrap_args->no_content = menu->load_no_content;
|
||||
if (!global->has_set_verbosity)
|
||||
if (!global->has_set.verbosity)
|
||||
wrap_args->verbose = global->verbosity;
|
||||
|
||||
wrap_args->config_path = *global->config_path ? global->config_path : NULL;
|
||||
wrap_args->sram_path = *global->savefile_dir ? global->savefile_dir : NULL;
|
||||
wrap_args->state_path = *global->savestate_dir ? global->savestate_dir : NULL;
|
||||
wrap_args->content_path = *global->fullpath ? global->fullpath : NULL;
|
||||
wrap_args->config_path = *global->path.config ? global->path.config : NULL;
|
||||
wrap_args->sram_path = *global->dir.savefile ? global->dir.savefile : NULL;
|
||||
wrap_args->state_path = *global->dir.savestate ? global->dir.savestate : NULL;
|
||||
wrap_args->content_path = *global->path.fullpath ? global->path.fullpath : NULL;
|
||||
|
||||
if (!global->has_set_libretro)
|
||||
if (!global->has_set.libretro)
|
||||
wrap_args->libretro_path = *settings->libretro ? settings->libretro : NULL;
|
||||
wrap_args->touched = true;
|
||||
}
|
||||
@ -62,18 +62,18 @@ static void menu_push_to_history_playlist(void)
|
||||
if (!settings->history_list_enable)
|
||||
return;
|
||||
|
||||
if (*global->fullpath)
|
||||
if (*global->path.fullpath)
|
||||
{
|
||||
char tmp[PATH_MAX_LENGTH] = {0};
|
||||
char str[PATH_MAX_LENGTH] = {0};
|
||||
|
||||
fill_pathname_base(tmp, global->fullpath, sizeof(tmp));
|
||||
fill_pathname_base(tmp, global->path.fullpath, sizeof(tmp));
|
||||
snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp);
|
||||
rarch_main_msg_queue_push(str, 1, 1, false);
|
||||
}
|
||||
|
||||
content_playlist_push(g_defaults.history,
|
||||
global->fullpath,
|
||||
global->path.fullpath,
|
||||
NULL,
|
||||
settings->libretro,
|
||||
global->menu.info.library_name,
|
||||
@ -110,7 +110,7 @@ bool menu_load_content(enum rarch_core_type type)
|
||||
char name[PATH_MAX_LENGTH] = {0};
|
||||
char msg[PATH_MAX_LENGTH] = {0};
|
||||
|
||||
fill_pathname_base(name, global->fullpath, sizeof(name));
|
||||
fill_pathname_base(name, global->path.fullpath, sizeof(name));
|
||||
snprintf(msg, sizeof(msg), "Failed to load %s.\n", name);
|
||||
rarch_main_msg_queue_push(msg, 1, 90, false);
|
||||
|
||||
@ -124,7 +124,7 @@ bool menu_load_content(enum rarch_core_type type)
|
||||
|
||||
event_command(EVENT_CMD_HISTORY_INIT);
|
||||
|
||||
if (*global->fullpath || (menu && menu->load_no_content))
|
||||
if (*global->path.fullpath || (menu && menu->load_no_content))
|
||||
menu_push_to_history_playlist();
|
||||
|
||||
event_command(EVENT_CMD_VIDEO_SET_ASPECT_RATIO);
|
||||
@ -218,8 +218,8 @@ void *menu_init(const void *data)
|
||||
if (menu_init_entries(&menu->entries) != 0)
|
||||
goto error;
|
||||
|
||||
global->core_info_current = (core_info_t*)calloc(1, sizeof(core_info_t));
|
||||
if (!global->core_info_current)
|
||||
global->core_info.current = (core_info_t*)calloc(1, sizeof(core_info_t));
|
||||
if (!global->core_info.current)
|
||||
goto error;
|
||||
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
@ -261,9 +261,9 @@ error:
|
||||
if (menu->entries.menu_list)
|
||||
menu_list_free(menu->entries.menu_list);
|
||||
menu->entries.menu_list = NULL;
|
||||
if (global->core_info_current)
|
||||
free(global->core_info_current);
|
||||
global->core_info_current = NULL;
|
||||
if (global->core_info.current)
|
||||
free(global->core_info.current);
|
||||
global->core_info.current = NULL;
|
||||
if (menu->shader)
|
||||
free(menu->shader);
|
||||
menu->shader = NULL;
|
||||
@ -324,12 +324,12 @@ void menu_free(menu_handle_t *menu)
|
||||
|
||||
event_command(EVENT_CMD_HISTORY_DEINIT);
|
||||
|
||||
if (global->core_info)
|
||||
core_info_list_free(global->core_info);
|
||||
if (global->core_info.list)
|
||||
core_info_list_free(global->core_info.list);
|
||||
|
||||
if (global->core_info_current)
|
||||
free(global->core_info_current);
|
||||
global->core_info_current = NULL;
|
||||
if (global->core_info.current)
|
||||
free(global->core_info.current);
|
||||
global->core_info.current = NULL;
|
||||
|
||||
menu_driver_unset_alive();
|
||||
|
||||
|
@ -79,7 +79,7 @@ void menu_display_fb(void)
|
||||
|
||||
if (!settings->menu.pause_libretro)
|
||||
{
|
||||
if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY))
|
||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||
{
|
||||
bool block_libretro_input = driver->block_libretro_input;
|
||||
driver->block_libretro_input = true;
|
||||
|
@ -145,7 +145,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
|
||||
char tmp[PATH_MAX_LENGTH] = {0};
|
||||
settings_t *settings = config_get_ptr();
|
||||
global_t *global = global_get_ptr();
|
||||
core_info_t *core_info = global ? (core_info_t*)global->core_info_current : NULL;
|
||||
core_info_t *core_info = global ? (core_info_t*)global->core_info.current : NULL;
|
||||
|
||||
if (!core_info || !core_info->data)
|
||||
{
|
||||
@ -241,7 +241,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
|
||||
if (core_info->firmware_count > 0)
|
||||
{
|
||||
core_info_list_update_missing_firmware(
|
||||
global->core_info, core_info->path,
|
||||
global->core_info.list, core_info->path,
|
||||
settings->system_directory);
|
||||
|
||||
strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_FIRMWARE), sizeof(tmp));
|
||||
@ -1582,7 +1582,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY))
|
||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||
{
|
||||
rarch_system_info_t *system = rarch_system_info_get_ptr();
|
||||
|
||||
@ -1621,7 +1621,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t
|
||||
menu_hash_to_str(MENU_LABEL_CORE_OPTIONS),
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
if (global->has_set_input_descriptors)
|
||||
if (global->has_set.input_descriptors)
|
||||
menu_list_push(info->list,
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS),
|
||||
menu_hash_to_str(MENU_LABEL_CORE_INPUT_REMAPPING_OPTIONS),
|
||||
@ -1630,7 +1630,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_CORE_CHEAT_OPTIONS),
|
||||
menu_hash_to_str(MENU_LABEL_CORE_CHEAT_OPTIONS),
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
if ((global->core_type != CORE_TYPE_DUMMY) && system && system->disk_control.get_num_images)
|
||||
if ((global->inited.core.type != CORE_TYPE_DUMMY) && system && system->disk_control.get_num_images)
|
||||
menu_list_push(info->list,
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_DISK_OPTIONS),
|
||||
menu_hash_to_str(MENU_LABEL_DISK_OPTIONS),
|
||||
@ -1664,8 +1664,8 @@ static int menu_displaylist_parse_horizontal_content_actions(menu_displaylist_in
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)
|
||||
&& !strcmp(menu->deferred_path, global->fullpath))
|
||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)
|
||||
&& !strcmp(menu->deferred_path, global->path.fullpath))
|
||||
menu_displaylist_parse_load_content_settings(info);
|
||||
else
|
||||
menu_list_push(info->list, "Run", "collection",
|
||||
@ -1766,7 +1766,7 @@ static int menu_displaylist_parse_load_content_list(menu_displaylist_info_t *inf
|
||||
menu_hash_to_str(MENU_LABEL_LOAD_CONTENT),
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
if (global->core_info && core_info_list_num_info_files(global->core_info))
|
||||
if (core_info_list_num_info_files(global->core_info.list))
|
||||
{
|
||||
menu_list_push(info->list,
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_DETECT_CORE_LIST),
|
||||
@ -2156,8 +2156,7 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n
|
||||
|
||||
fill_pathname_join(core_path, dir, path, sizeof(core_path));
|
||||
|
||||
if (global->core_info &&
|
||||
core_info_list_get_display_name(global->core_info,
|
||||
if (core_info_list_get_display_name(global->core_info.list,
|
||||
core_path, display_name, sizeof(display_name)))
|
||||
menu_list_set_alt_at_offset(info->list, i, display_name);
|
||||
}
|
||||
@ -2516,7 +2515,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type)
|
||||
|
||||
{
|
||||
const core_info_t *core_info = NULL;
|
||||
core_info_list_get_supported_cores(global->core_info,
|
||||
core_info_list_get_supported_cores(global->core_info.list,
|
||||
menu->deferred_path, &core_info, &list_size);
|
||||
|
||||
if (list_size <= 0)
|
||||
|
@ -2268,7 +2268,7 @@ static void general_write_handler(void *data)
|
||||
break;
|
||||
case MENU_LABEL_LOG_VERBOSITY:
|
||||
global->verbosity = *setting->value.boolean;
|
||||
global->has_set_verbosity = *setting->value.boolean;
|
||||
global->has_set.verbosity = *setting->value.boolean;
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SMOOTH:
|
||||
video_driver_set_filtering(1, settings->video.smooth);
|
||||
@ -2306,25 +2306,25 @@ static void general_write_handler(void *data)
|
||||
break;
|
||||
case MENU_LABEL_NETPLAY_IP_ADDRESS:
|
||||
#ifdef HAVE_NETPLAY
|
||||
global->has_set_netplay_ip_address = (setting->value.string[0] != '\0');
|
||||
global->has_set.netplay_ip_address = (setting->value.string[0] != '\0');
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_NETPLAY_MODE:
|
||||
#ifdef HAVE_NETPLAY
|
||||
if (!global->netplay_is_client)
|
||||
*global->netplay_server = '\0';
|
||||
global->has_set_netplay_mode = true;
|
||||
if (!global->netplay.is_client)
|
||||
*global->netplay.server = '\0';
|
||||
global->has_set.netplay_mode = true;
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE:
|
||||
#ifdef HAVE_NETPLAY
|
||||
if (global->netplay_is_spectate)
|
||||
*global->netplay_server = '\0';
|
||||
if (global->netplay.is_spectate)
|
||||
*global->netplay.server = '\0';
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_NETPLAY_DELAY_FRAMES:
|
||||
#ifdef HAVE_NETPLAY
|
||||
global->has_set_netplay_delay_frames = (global->netplay_sync_frames > 0);
|
||||
global->has_set.netplay_delay_frames = (global->netplay.sync_frames > 0);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
@ -2501,7 +2501,7 @@ static bool setting_append_list_main_menu_options(
|
||||
START_GROUP(group_info,main_menu, parent_group);
|
||||
START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group);
|
||||
|
||||
if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY))
|
||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||
{
|
||||
CONFIG_ACTION(
|
||||
menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS),
|
||||
@ -4633,7 +4633,7 @@ static bool setting_append_list_overlay_options(
|
||||
settings->input.overlay,
|
||||
menu_hash_to_str(MENU_LABEL_OVERLAY_PRESET),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_PRESET),
|
||||
global->overlay_dir,
|
||||
global->dir.overlay,
|
||||
group_info.name,
|
||||
subgroup_info.name,
|
||||
parent_group,
|
||||
@ -4681,7 +4681,7 @@ static bool setting_append_list_overlay_options(
|
||||
settings->osk.overlay,
|
||||
menu_hash_to_str(MENU_LABEL_KEYBOARD_OVERLAY_PRESET),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET),
|
||||
global->osk_overlay_dir,
|
||||
global->dir.osk_overlay,
|
||||
group_info.name,
|
||||
subgroup_info.name,
|
||||
parent_group,
|
||||
@ -5243,7 +5243,7 @@ static bool setting_append_list_netplay_options(
|
||||
START_SUB_GROUP(list, list_info, "Netplay", group_info.name, subgroup_info, parent_group);
|
||||
|
||||
CONFIG_BOOL(
|
||||
global->netplay_enable,
|
||||
global->netplay.enable,
|
||||
menu_hash_to_str(MENU_LABEL_NETPLAY_ENABLE),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_ENABLE),
|
||||
false,
|
||||
@ -5269,7 +5269,7 @@ static bool setting_append_list_netplay_options(
|
||||
general_read_handler);
|
||||
|
||||
CONFIG_STRING(
|
||||
global->netplay_server,
|
||||
global->netplay.server,
|
||||
menu_hash_to_str(MENU_LABEL_NETPLAY_IP_ADDRESS),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_IP_ADDRESS),
|
||||
"",
|
||||
@ -5281,7 +5281,7 @@ static bool setting_append_list_netplay_options(
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||
|
||||
CONFIG_BOOL(
|
||||
global->netplay_is_client,
|
||||
global->netplay.is_client,
|
||||
menu_hash_to_str(MENU_LABEL_NETPLAY_MODE),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_MODE),
|
||||
false,
|
||||
@ -5294,7 +5294,7 @@ static bool setting_append_list_netplay_options(
|
||||
general_read_handler);
|
||||
|
||||
CONFIG_BOOL(
|
||||
global->netplay_is_spectate,
|
||||
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,
|
||||
@ -5307,7 +5307,7 @@ static bool setting_append_list_netplay_options(
|
||||
general_read_handler);
|
||||
|
||||
CONFIG_UINT(
|
||||
global->netplay_sync_frames,
|
||||
global->netplay.sync_frames,
|
||||
menu_hash_to_str(MENU_LABEL_NETPLAY_DELAY_FRAMES),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_DELAY_FRAMES),
|
||||
0,
|
||||
@ -5320,7 +5320,7 @@ static bool setting_append_list_netplay_options(
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
|
||||
CONFIG_UINT(
|
||||
global->netplay_port,
|
||||
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,
|
||||
@ -5691,7 +5691,7 @@ static bool setting_append_list_directory_options(
|
||||
settings->libretro_directory,
|
||||
menu_hash_to_str(MENU_LABEL_LIBRETRO_DIR_PATH),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH),
|
||||
g_defaults.core_dir,
|
||||
g_defaults.dir.core,
|
||||
menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE),
|
||||
group_info.name,
|
||||
subgroup_info.name,
|
||||
@ -5708,7 +5708,7 @@ static bool setting_append_list_directory_options(
|
||||
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.core_info_dir,
|
||||
g_defaults.dir.core_info,
|
||||
menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE),
|
||||
group_info.name,
|
||||
subgroup_info.name,
|
||||
@ -5807,7 +5807,7 @@ static bool setting_append_list_directory_options(
|
||||
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.shader_dir,
|
||||
g_defaults.dir.shader,
|
||||
menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT),
|
||||
group_info.name,
|
||||
subgroup_info.name,
|
||||
@ -5855,10 +5855,10 @@ static bool setting_append_list_directory_options(
|
||||
}
|
||||
#ifdef HAVE_OVERLAY
|
||||
CONFIG_DIR(
|
||||
global->overlay_dir,
|
||||
global->dir.overlay,
|
||||
menu_hash_to_str(MENU_LABEL_OVERLAY_DIRECTORY),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_DIRECTORY),
|
||||
g_defaults.overlay_dir,
|
||||
g_defaults.dir.overlay,
|
||||
menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT),
|
||||
group_info.name,
|
||||
subgroup_info.name,
|
||||
@ -5871,10 +5871,10 @@ static bool setting_append_list_directory_options(
|
||||
SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION);
|
||||
|
||||
CONFIG_DIR(
|
||||
global->osk_overlay_dir,
|
||||
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.osk_overlay_dir,
|
||||
g_defaults.dir.osk_overlay,
|
||||
menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT),
|
||||
group_info.name,
|
||||
subgroup_info.name,
|
||||
@ -5952,7 +5952,7 @@ static bool setting_append_list_directory_options(
|
||||
SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION);
|
||||
|
||||
CONFIG_DIR(
|
||||
global->savefile_dir,
|
||||
global->dir.savefile,
|
||||
menu_hash_to_str(MENU_LABEL_SAVEFILE_DIRECTORY),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_SAVEFILE_DIRECTORY),
|
||||
"",
|
||||
@ -5968,7 +5968,7 @@ static bool setting_append_list_directory_options(
|
||||
SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION);
|
||||
|
||||
CONFIG_DIR(
|
||||
global->savestate_dir,
|
||||
global->dir.savestate,
|
||||
menu_hash_to_str(MENU_LABEL_SAVESTATE_DIRECTORY),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_DIRECTORY),
|
||||
"",
|
||||
@ -6115,7 +6115,7 @@ static bool setting_append_list_input_player_options(
|
||||
if (
|
||||
settings->input.input_descriptor_label_show
|
||||
&& (i < RARCH_FIRST_META_KEY)
|
||||
&& (global->has_set_input_descriptors)
|
||||
&& (global->has_set.input_descriptors)
|
||||
&& (i != RARCH_TURBO_ENABLE)
|
||||
)
|
||||
{
|
||||
|
@ -47,11 +47,11 @@ void menu_shader_manager_init(menu_handle_t *menu)
|
||||
|
||||
shader = (struct video_shader*)menu->shader;
|
||||
|
||||
if (*global->core_specific_config_path
|
||||
if (*global->path.core_specific_config
|
||||
&& settings->core_specific_config)
|
||||
config_path = global->core_specific_config_path;
|
||||
else if (*global->config_path)
|
||||
config_path = global->config_path;
|
||||
config_path = global->path.core_specific_config;
|
||||
else if (*global->path.config)
|
||||
config_path = global->path.config;
|
||||
|
||||
/* In a multi-config setting, we can't have
|
||||
* conflicts on menu.cgp/menu.glslp. */
|
||||
@ -236,9 +236,9 @@ void menu_shader_manager_save_preset(
|
||||
strlcpy(buffer, conf_path, sizeof(buffer));
|
||||
}
|
||||
|
||||
if (*global->config_path)
|
||||
if (*global->path.config)
|
||||
fill_pathname_basedir(config_directory,
|
||||
global->config_path, sizeof(config_directory));
|
||||
global->path.config, sizeof(config_directory));
|
||||
|
||||
dirs[0] = settings->video.shader_dir;
|
||||
dirs[1] = settings->menu_config_directory;
|
||||
|
@ -129,7 +129,7 @@ void menu_video_frame_background(
|
||||
menu_display_set_viewport();
|
||||
|
||||
if ((settings->menu.pause_libretro
|
||||
|| !global->main_is_init || (global->core_type == CORE_TYPE_DUMMY))
|
||||
|| !global->inited.main || (global->inited.core.type == CORE_TYPE_DUMMY))
|
||||
&& !force_transparency
|
||||
&& texture)
|
||||
coords.color = color;
|
||||
|
14
netplay.c
14
netplay.c
@ -1655,7 +1655,7 @@ bool init_netplay(void)
|
||||
settings_t *settings = config_get_ptr();
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
if (!global->netplay_enable)
|
||||
if (!global->netplay.enable)
|
||||
return false;
|
||||
|
||||
if (global->bsv.movie_start_playback)
|
||||
@ -1666,24 +1666,24 @@ bool init_netplay(void)
|
||||
|
||||
retro_set_default_callbacks(&cbs);
|
||||
|
||||
if (*global->netplay_server)
|
||||
if (*global->netplay.server)
|
||||
{
|
||||
RARCH_LOG("Connecting to netplay host...\n");
|
||||
global->netplay_is_client = true;
|
||||
global->netplay.is_client = true;
|
||||
}
|
||||
else
|
||||
RARCH_LOG("Waiting for client...\n");
|
||||
|
||||
driver->netplay_data = (netplay_t*)netplay_new(
|
||||
global->netplay_is_client ? global->netplay_server : NULL,
|
||||
global->netplay_port ? global->netplay_port : RARCH_DEFAULT_PORT,
|
||||
global->netplay_sync_frames, &cbs, global->netplay_is_spectate,
|
||||
global->netplay.is_client ? global->netplay.server : NULL,
|
||||
global->netplay.port ? global->netplay.port : RARCH_DEFAULT_PORT,
|
||||
global->netplay.sync_frames, &cbs, global->netplay.is_spectate,
|
||||
settings->username);
|
||||
|
||||
if (driver->netplay_data)
|
||||
return true;
|
||||
|
||||
global->netplay_is_client = false;
|
||||
global->netplay.is_client = false;
|
||||
RARCH_WARN("%s\n", msg_hash_to_str(MSG_NETPLAY_FAILED));
|
||||
|
||||
rarch_main_msg_queue_push_new(
|
||||
|
20
patch.c
20
patch.c
@ -518,42 +518,42 @@ error:
|
||||
static bool try_bps_patch(uint8_t **buf, ssize_t *size)
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
bool allow_bps = !global->ups_pref && !global->ips_pref;
|
||||
bool allow_bps = !global->patch.ups_pref && !global->patch.ips_pref;
|
||||
|
||||
if (!allow_bps)
|
||||
return false;
|
||||
if (global->bps_name[0] == '\0')
|
||||
if (global->name.bps[0] == '\0')
|
||||
return false;
|
||||
|
||||
return apply_patch_content(buf, size, "BPS", global->bps_name,
|
||||
return apply_patch_content(buf, size, "BPS", global->name.bps,
|
||||
bps_apply_patch);
|
||||
}
|
||||
|
||||
static bool try_ups_patch(uint8_t **buf, ssize_t *size)
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
bool allow_ups = !global->bps_pref && !global->ips_pref;
|
||||
bool allow_ups = !global->patch.bps_pref && !global->patch.ips_pref;
|
||||
|
||||
if (!allow_ups)
|
||||
return false;
|
||||
if (global->ups_name[0] == '\0')
|
||||
if (global->name.ups[0] == '\0')
|
||||
return false;
|
||||
|
||||
return apply_patch_content(buf, size, "UPS", global->ups_name,
|
||||
return apply_patch_content(buf, size, "UPS", global->name.ups,
|
||||
ups_apply_patch);
|
||||
}
|
||||
|
||||
static bool try_ips_patch(uint8_t **buf, ssize_t *size)
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
bool allow_ips = !global->ups_pref && !global->bps_pref;
|
||||
bool allow_ips = !global->patch.ups_pref && !global->patch.bps_pref;
|
||||
|
||||
if (!allow_ips)
|
||||
return false;
|
||||
if (global->ips_name[0] == '\0')
|
||||
if (global->name.ips[0] == '\0')
|
||||
return false;
|
||||
|
||||
return apply_patch_content(buf, size, "IPS", global->ips_name,
|
||||
return apply_patch_content(buf, size, "IPS", global->name.ips,
|
||||
ips_apply_patch);
|
||||
}
|
||||
|
||||
@ -569,7 +569,7 @@ void patch_content(uint8_t **buf, ssize_t *size)
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
if (global->ips_pref + global->bps_pref + global->ups_pref > 1)
|
||||
if (global->patch.ips_pref + global->patch.bps_pref + global->patch.ups_pref > 1)
|
||||
{
|
||||
RARCH_WARN("Several patches are explicitly defined, ignoring all ...\n");
|
||||
return;
|
||||
|
@ -299,7 +299,7 @@ bool recording_init(void)
|
||||
if (!global->record.enable)
|
||||
return false;
|
||||
|
||||
if (global->core_type == CORE_TYPE_DUMMY)
|
||||
if (global->inited.core.type == CORE_TYPE_DUMMY)
|
||||
{
|
||||
RARCH_WARN(msg_hash_to_str(MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED));
|
||||
return false;
|
||||
|
359
retroarch.c
359
retroarch.c
@ -245,8 +245,8 @@ static void set_basename(const char *path)
|
||||
char *dst = NULL;
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
strlcpy(global->fullpath, path, sizeof(global->fullpath));
|
||||
strlcpy(global->basename, path, sizeof(global->basename));
|
||||
strlcpy(global->path.fullpath, path, sizeof(global->path.fullpath));
|
||||
strlcpy(global->name.base, path, sizeof(global->name.base));
|
||||
|
||||
#ifdef HAVE_COMPRESSION
|
||||
/* Removing extension is a bit tricky for compressed files.
|
||||
@ -268,11 +268,11 @@ static void set_basename(const char *path)
|
||||
* directory then and the name of srm and states are meaningful.
|
||||
*
|
||||
*/
|
||||
path_basedir(global->basename);
|
||||
fill_pathname_dir(global->basename, path, "", sizeof(global->basename));
|
||||
path_basedir(global->name.base);
|
||||
fill_pathname_dir(global->name.base, path, "", sizeof(global->name.base));
|
||||
#endif
|
||||
|
||||
if ((dst = strrchr(global->basename, '.')))
|
||||
if ((dst = strrchr(global->name.base, '.')))
|
||||
*dst = '\0';
|
||||
}
|
||||
|
||||
@ -297,17 +297,17 @@ static void set_special_paths(char **argv, unsigned num_content)
|
||||
/* We defer SRAM path updates until we can resolve it.
|
||||
* It is more complicated for special content types. */
|
||||
|
||||
if (!global->has_set_state_path)
|
||||
fill_pathname_noext(global->savestate_name, global->basename,
|
||||
".state", sizeof(global->savestate_name));
|
||||
if (!global->has_set.state_path)
|
||||
fill_pathname_noext(global->name.savestate, global->name.base,
|
||||
".state", sizeof(global->name.savestate));
|
||||
|
||||
if (path_is_directory(global->savestate_name))
|
||||
if (path_is_directory(global->name.savestate))
|
||||
{
|
||||
fill_pathname_dir(global->savestate_name, global->basename,
|
||||
".state", sizeof(global->savestate_name));
|
||||
fill_pathname_dir(global->name.savestate, global->name.base,
|
||||
".state", sizeof(global->name.savestate));
|
||||
RARCH_LOG("%s \"%s\".\n",
|
||||
msg_hash_to_str(MSG_REDIRECTING_SAVESTATE_TO),
|
||||
global->savestate_name);
|
||||
global->name.savestate);
|
||||
}
|
||||
|
||||
/* If this is already set,
|
||||
@ -337,76 +337,79 @@ void set_paths_redirect(const char *path)
|
||||
(global_library_name_hash != MENU_VALUE_NO_CORE))
|
||||
{
|
||||
/* per-core saves: append the library_name to the save location */
|
||||
if (settings->sort_savefiles_enable && global->savefile_dir[0] != '\0')
|
||||
if (settings->sort_savefiles_enable && global->dir.savefile[0] != '\0')
|
||||
{
|
||||
strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(global->savefile_dir));
|
||||
strlcpy(orig_savefile_dir,global->dir.savefile,
|
||||
sizeof(orig_savefile_dir));
|
||||
fill_pathname_dir(
|
||||
global->savefile_dir,
|
||||
global->savefile_dir,
|
||||
global->dir.savefile,
|
||||
global->dir.savefile,
|
||||
info->info.library_name,
|
||||
sizeof(global->savefile_dir));
|
||||
sizeof(global->dir.savefile));
|
||||
|
||||
/* If path doesn't exist, try to create it,
|
||||
* if everything fails revert to the original path. */
|
||||
if(!path_is_directory(global->savefile_dir) && global->savestate_dir[0] != '\0')
|
||||
if(!path_mkdir(global->savefile_dir))
|
||||
strlcpy(global->savefile_dir,
|
||||
if(!path_is_directory(global->dir.savefile) && global->dir.savestate[0] != '\0')
|
||||
if(!path_mkdir(global->dir.savefile))
|
||||
strlcpy(global->dir.savefile,
|
||||
orig_savefile_dir,
|
||||
sizeof(global->savefile_dir));
|
||||
sizeof(global->dir.savefile));
|
||||
}
|
||||
|
||||
/* per-core states: append the library_name to the save location */
|
||||
if (settings->sort_savestates_enable && global->savefile_dir[0] != '\0')
|
||||
if (settings->sort_savestates_enable && global->dir.savefile[0] != '\0')
|
||||
{
|
||||
strlcpy(orig_savestate_dir,
|
||||
global->savestate_dir,
|
||||
sizeof(global->savestate_dir));
|
||||
fill_pathname_dir(global->savestate_dir,
|
||||
global->savestate_dir,
|
||||
global->dir.savestate,
|
||||
sizeof(orig_savestate_dir));
|
||||
fill_pathname_dir(global->dir.savestate,
|
||||
global->dir.savestate,
|
||||
info->info.library_name,
|
||||
sizeof(global->savestate_dir));
|
||||
sizeof(global->dir.savestate));
|
||||
|
||||
/* If path doesn't exist, try to create it.
|
||||
* If everything fails, revert to the original path. */
|
||||
if(!path_is_directory(global->savestate_dir))
|
||||
if(!path_mkdir(global->savestate_dir))
|
||||
strlcpy(global->savestate_dir,
|
||||
if(!path_is_directory(global->dir.savestate))
|
||||
if(!path_mkdir(global->dir.savestate))
|
||||
strlcpy(global->dir.savestate,
|
||||
orig_savestate_dir,
|
||||
sizeof(global->savestate_dir));
|
||||
sizeof(global->dir.savestate));
|
||||
}
|
||||
}
|
||||
|
||||
if(path_is_directory(global->savefile_dir))
|
||||
strlcpy(global->savefile_name,global->savefile_dir,sizeof(global->savefile_dir));
|
||||
if(path_is_directory(global->dir.savefile))
|
||||
strlcpy(global->name.savefile, global->dir.savefile,
|
||||
sizeof(global->name.savefile));
|
||||
|
||||
if(path_is_directory(global->savestate_dir))
|
||||
strlcpy(global->savestate_name,global->savestate_dir,sizeof(global->savestate_dir));
|
||||
if(path_is_directory(global->dir.savestate))
|
||||
strlcpy(global->name.savestate, global->dir.savestate,
|
||||
sizeof(global->name.savestate));
|
||||
|
||||
if (path_is_directory(global->savefile_name))
|
||||
if (path_is_directory(global->name.savefile))
|
||||
{
|
||||
fill_pathname_dir(global->savefile_name, global->basename,
|
||||
".srm", sizeof(global->savefile_name));
|
||||
fill_pathname_dir(global->name.savefile, global->name.base,
|
||||
".srm", sizeof(global->name.savefile));
|
||||
RARCH_LOG("%s \"%s\".\n",
|
||||
msg_hash_to_str(MSG_REDIRECTING_SAVEFILE_TO),
|
||||
global->savefile_name);
|
||||
global->name.savefile);
|
||||
}
|
||||
|
||||
if (path_is_directory(global->savestate_name))
|
||||
if (path_is_directory(global->name.savestate))
|
||||
{
|
||||
fill_pathname_dir(global->savestate_name, global->basename,
|
||||
".state", sizeof(global->savestate_name));
|
||||
fill_pathname_dir(global->name.savestate, global->name.base,
|
||||
".state", sizeof(global->name.savestate));
|
||||
RARCH_LOG("%s \"%s\".\n",
|
||||
msg_hash_to_str(MSG_REDIRECTING_SAVESTATE_TO),
|
||||
global->savestate_name);
|
||||
global->name.savestate);
|
||||
}
|
||||
|
||||
if (path_is_directory(global->cheatfile_name))
|
||||
if (path_is_directory(global->name.cheatfile))
|
||||
{
|
||||
fill_pathname_dir(global->cheatfile_name, global->basename,
|
||||
".state", sizeof(global->cheatfile_name));
|
||||
fill_pathname_dir(global->name.cheatfile, global->name.base,
|
||||
".state", sizeof(global->name.cheatfile));
|
||||
RARCH_LOG("%s \"%s\".\n",
|
||||
msg_hash_to_str(MSG_REDIRECTING_CHEATFILE_TO),
|
||||
global->cheatfile_name);
|
||||
global->name.cheatfile);
|
||||
}
|
||||
}
|
||||
|
||||
@ -417,14 +420,14 @@ void rarch_set_paths(const char *path)
|
||||
|
||||
set_basename(path);
|
||||
|
||||
if (!global->has_set_save_path)
|
||||
fill_pathname_noext(global->savefile_name, global->basename,
|
||||
".srm", sizeof(global->savefile_name));
|
||||
if (!global->has_set_state_path)
|
||||
fill_pathname_noext(global->savestate_name, global->basename,
|
||||
".state", sizeof(global->savestate_name));
|
||||
fill_pathname_noext(global->cheatfile_name, global->basename,
|
||||
".cht", sizeof(global->cheatfile_name));
|
||||
if (!global->has_set.save_path)
|
||||
fill_pathname_noext(global->name.savefile, global->name.base,
|
||||
".srm", sizeof(global->name.savefile));
|
||||
if (!global->has_set.state_path)
|
||||
fill_pathname_noext(global->name.savestate, global->name.base,
|
||||
".state", sizeof(global->name.savestate));
|
||||
fill_pathname_noext(global->name.cheatfile, global->name.base,
|
||||
".cht", sizeof(global->name.cheatfile));
|
||||
|
||||
set_paths_redirect(path);
|
||||
}
|
||||
@ -555,36 +558,36 @@ static void parse_input(int argc, char *argv[])
|
||||
{ NULL, 0, NULL, 0 }
|
||||
};
|
||||
|
||||
global->libretro_no_content = false;
|
||||
global->core_type = CORE_TYPE_PLAIN;
|
||||
global->inited.core.no_content = false;
|
||||
global->inited.core.type = CORE_TYPE_PLAIN;
|
||||
*global->subsystem = '\0';
|
||||
global->has_set_save_path = false;
|
||||
global->has_set_state_path = false;
|
||||
global->has_set_libretro = false;
|
||||
global->has_set_libretro_directory = false;
|
||||
global->has_set_verbosity = false;
|
||||
global->has_set.save_path = false;
|
||||
global->has_set.state_path = false;
|
||||
global->has_set.libretro = false;
|
||||
global->has_set.libretro_directory = false;
|
||||
global->has_set.verbosity = false;
|
||||
|
||||
global->has_set_netplay_mode = false;
|
||||
global->has_set_username = false;
|
||||
global->has_set_netplay_ip_address = false;
|
||||
global->has_set_netplay_delay_frames = false;
|
||||
global->has_set_netplay_ip_port = false;
|
||||
global->has_set.netplay_mode = false;
|
||||
global->has_set.username = false;
|
||||
global->has_set.netplay_ip_address = false;
|
||||
global->has_set.netplay_delay_frames = false;
|
||||
global->has_set.netplay_ip_port = false;
|
||||
|
||||
global->has_set_ups_pref = false;
|
||||
global->has_set_bps_pref = false;
|
||||
global->has_set_ips_pref = false;
|
||||
global->ups_pref = false;
|
||||
global->bps_pref = false;
|
||||
global->ips_pref = false;
|
||||
*global->ups_name = '\0';
|
||||
*global->bps_name = '\0';
|
||||
*global->ips_name = '\0';
|
||||
global->has_set.ups_pref = false;
|
||||
global->has_set.bps_pref = false;
|
||||
global->has_set.ips_pref = false;
|
||||
global->patch.ups_pref = false;
|
||||
global->patch.bps_pref = false;
|
||||
global->patch.ips_pref = false;
|
||||
*global->name.ups = '\0';
|
||||
*global->name.bps = '\0';
|
||||
*global->name.ips = '\0';
|
||||
|
||||
global->overrides_active = false;
|
||||
|
||||
if (argc < 2)
|
||||
{
|
||||
global->core_type = CORE_TYPE_DUMMY;
|
||||
global->inited.core.type = CORE_TYPE_DUMMY;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -627,7 +630,7 @@ static void parse_input(int argc, char *argv[])
|
||||
rarch_fail(1, "parse_input()");
|
||||
}
|
||||
settings->input.libretro_device[port - 1] = id;
|
||||
global->has_set_libretro_device[port - 1] = true;
|
||||
global->has_set.libretro_device[port - 1] = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -640,13 +643,13 @@ static void parse_input(int argc, char *argv[])
|
||||
rarch_fail(1, "parse_input()");
|
||||
}
|
||||
settings->input.libretro_device[port - 1] = RETRO_DEVICE_ANALOG;
|
||||
global->has_set_libretro_device[port - 1] = true;
|
||||
global->has_set.libretro_device[port - 1] = true;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
strlcpy(global->savefile_name, optarg,
|
||||
sizeof(global->savefile_name));
|
||||
global->has_set_save_path = true;
|
||||
strlcpy(global->name.savefile, optarg,
|
||||
sizeof(global->name.savefile));
|
||||
global->has_set.save_path = true;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
@ -654,14 +657,14 @@ static void parse_input(int argc, char *argv[])
|
||||
break;
|
||||
|
||||
case 'S':
|
||||
strlcpy(global->savestate_name, optarg,
|
||||
sizeof(global->savestate_name));
|
||||
global->has_set_state_path = true;
|
||||
strlcpy(global->name.savestate, optarg,
|
||||
sizeof(global->name.savestate));
|
||||
global->has_set.state_path = true;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
global->verbosity = true;
|
||||
global->has_set_verbosity = true;
|
||||
global->has_set.verbosity = true;
|
||||
break;
|
||||
|
||||
case 'N':
|
||||
@ -673,12 +676,12 @@ static void parse_input(int argc, char *argv[])
|
||||
rarch_fail(1, "parse_input()");
|
||||
}
|
||||
settings->input.libretro_device[port - 1] = RETRO_DEVICE_NONE;
|
||||
global->has_set_libretro_device[port - 1] = true;
|
||||
global->has_set.libretro_device[port - 1] = true;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
strlcpy(global->config_path, optarg,
|
||||
sizeof(global->config_path));
|
||||
strlcpy(global->path.config, optarg,
|
||||
sizeof(global->path.config));
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
@ -694,15 +697,15 @@ static void parse_input(int argc, char *argv[])
|
||||
*settings->libretro = '\0';
|
||||
strlcpy(settings->libretro_directory, optarg,
|
||||
sizeof(settings->libretro_directory));
|
||||
global->has_set_libretro = true;
|
||||
global->has_set_libretro_directory = true;
|
||||
global->has_set.libretro = true;
|
||||
global->has_set.libretro_directory = true;
|
||||
RARCH_WARN("Using old --libretro behavior. Setting libretro_directory to \"%s\" instead.\n", optarg);
|
||||
}
|
||||
else
|
||||
{
|
||||
strlcpy(settings->libretro, optarg,
|
||||
sizeof(settings->libretro));
|
||||
global->has_set_libretro = true;
|
||||
global->has_set.libretro = true;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
@ -717,13 +720,13 @@ static void parse_input(int argc, char *argv[])
|
||||
case 'M':
|
||||
if (!strcmp(optarg, "noload-nosave"))
|
||||
{
|
||||
global->sram_load_disable = true;
|
||||
global->sram_save_disable = true;
|
||||
global->sram.load_disable = true;
|
||||
global->sram.save_disable = true;
|
||||
}
|
||||
else if (!strcmp(optarg, "noload-save"))
|
||||
global->sram_load_disable = true;
|
||||
global->sram.load_disable = true;
|
||||
else if (!strcmp(optarg, "load-nosave"))
|
||||
global->sram_save_disable = true;
|
||||
global->sram.save_disable = true;
|
||||
else if (strcmp(optarg, "load-save") != 0)
|
||||
{
|
||||
RARCH_ERR("Invalid argument in --sram-mode.\n");
|
||||
@ -734,47 +737,47 @@ static void parse_input(int argc, char *argv[])
|
||||
|
||||
#ifdef HAVE_NETPLAY
|
||||
case 'H':
|
||||
global->has_set_netplay_ip_address = true;
|
||||
global->netplay_enable = true;
|
||||
*global->netplay_server = '\0';
|
||||
global->has_set.netplay_ip_address = true;
|
||||
global->netplay.enable = true;
|
||||
*global->netplay.server = '\0';
|
||||
break;
|
||||
|
||||
case 'C':
|
||||
global->has_set_netplay_ip_address = true;
|
||||
global->netplay_enable = true;
|
||||
strlcpy(global->netplay_server, optarg,
|
||||
sizeof(global->netplay_server));
|
||||
global->has_set.netplay_ip_address = true;
|
||||
global->netplay.enable = true;
|
||||
strlcpy(global->netplay.server, optarg,
|
||||
sizeof(global->netplay.server));
|
||||
break;
|
||||
|
||||
case 'F':
|
||||
global->netplay_sync_frames = strtol(optarg, NULL, 0);
|
||||
global->has_set_netplay_delay_frames = true;
|
||||
global->netplay.sync_frames = strtol(optarg, NULL, 0);
|
||||
global->has_set.netplay_delay_frames = true;
|
||||
break;
|
||||
#endif
|
||||
|
||||
case RA_OPT_BPS:
|
||||
strlcpy(global->bps_name, optarg,
|
||||
sizeof(global->bps_name));
|
||||
global->bps_pref = true;
|
||||
global->has_set_bps_pref = true;
|
||||
strlcpy(global->name.bps, optarg,
|
||||
sizeof(global->name.bps));
|
||||
global->patch.bps_pref = true;
|
||||
global->has_set.bps_pref = true;
|
||||
break;
|
||||
|
||||
case 'U':
|
||||
strlcpy(global->ups_name, optarg,
|
||||
sizeof(global->ups_name));
|
||||
global->ups_pref = true;
|
||||
global->has_set_ups_pref = true;
|
||||
strlcpy(global->name.ups, optarg,
|
||||
sizeof(global->name.ups));
|
||||
global->patch.ups_pref = true;
|
||||
global->has_set.ups_pref = true;
|
||||
break;
|
||||
|
||||
case RA_OPT_IPS:
|
||||
strlcpy(global->ips_name, optarg,
|
||||
sizeof(global->ips_name));
|
||||
global->ips_pref = true;
|
||||
global->has_set_ips_pref = true;
|
||||
strlcpy(global->name.ips, optarg,
|
||||
sizeof(global->name.ips));
|
||||
global->patch.ips_pref = true;
|
||||
global->has_set.ips_pref = true;
|
||||
break;
|
||||
|
||||
case RA_OPT_NO_PATCH:
|
||||
global->block_patch = true;
|
||||
global->patch.block_patch = true;
|
||||
break;
|
||||
|
||||
case 'D':
|
||||
@ -784,23 +787,23 @@ static void parse_input(int argc, char *argv[])
|
||||
break;
|
||||
|
||||
case RA_OPT_MENU:
|
||||
global->core_type = CORE_TYPE_DUMMY;
|
||||
global->inited.core.type = CORE_TYPE_DUMMY;
|
||||
break;
|
||||
|
||||
#ifdef HAVE_NETPLAY
|
||||
case RA_OPT_PORT:
|
||||
global->has_set_netplay_ip_port = true;
|
||||
global->netplay_port = strtoul(optarg, NULL, 0);
|
||||
global->has_set.netplay_ip_port = true;
|
||||
global->netplay.port = strtoul(optarg, NULL, 0);
|
||||
break;
|
||||
|
||||
case RA_OPT_SPECTATE:
|
||||
global->has_set_netplay_mode = true;
|
||||
global->netplay_is_spectate = true;
|
||||
global->has_set.netplay_mode = true;
|
||||
global->netplay.is_spectate = true;
|
||||
break;
|
||||
|
||||
#endif
|
||||
case RA_OPT_NICK:
|
||||
global->has_set_username = true;
|
||||
global->has_set.username = true;
|
||||
strlcpy(settings->username, optarg,
|
||||
sizeof(settings->username));
|
||||
break;
|
||||
@ -815,8 +818,8 @@ static void parse_input(int argc, char *argv[])
|
||||
#endif
|
||||
|
||||
case RA_OPT_APPENDCONFIG:
|
||||
strlcpy(global->append_config_path, optarg,
|
||||
sizeof(global->append_config_path));
|
||||
strlcpy(global->path.append_config, optarg,
|
||||
sizeof(global->path.append_config));
|
||||
break;
|
||||
|
||||
case RA_OPT_SIZE:
|
||||
@ -872,7 +875,7 @@ static void parse_input(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
if (global->core_type == CORE_TYPE_DUMMY)
|
||||
if (global->inited.core.type == CORE_TYPE_DUMMY)
|
||||
{
|
||||
if (optind < argc)
|
||||
{
|
||||
@ -885,19 +888,19 @@ static void parse_input(int argc, char *argv[])
|
||||
else if (*global->subsystem && optind < argc)
|
||||
set_special_paths(argv + optind, argc - optind);
|
||||
else
|
||||
global->libretro_no_content = true;
|
||||
global->inited.core.no_content = true;
|
||||
|
||||
|
||||
/* Copy SRM/state dirs used, so they can be reused on reentrancy. */
|
||||
if (global->has_set_save_path &&
|
||||
path_is_directory(global->savefile_name))
|
||||
strlcpy(global->savefile_dir, global->savefile_name,
|
||||
sizeof(global->savefile_dir));
|
||||
if (global->has_set.save_path &&
|
||||
path_is_directory(global->name.savefile))
|
||||
strlcpy(global->dir.savefile, global->name.savefile,
|
||||
sizeof(global->dir.savefile));
|
||||
|
||||
if (global->has_set_state_path &&
|
||||
path_is_directory(global->savestate_name))
|
||||
strlcpy(global->savestate_dir, global->savestate_name,
|
||||
sizeof(global->savestate_dir));
|
||||
if (global->has_set.state_path &&
|
||||
path_is_directory(global->name.savestate))
|
||||
strlcpy(global->dir.savestate, global->name.savestate,
|
||||
sizeof(global->dir.savestate));
|
||||
}
|
||||
|
||||
static void rarch_init_savefile_paths(void)
|
||||
@ -926,7 +929,7 @@ static void rarch_init_savefile_paths(void)
|
||||
global->subsystem_fullpaths ?
|
||||
global->subsystem_fullpaths->size : 0);
|
||||
|
||||
bool use_sram_dir = path_is_directory(global->savefile_dir);
|
||||
bool use_sram_dir = path_is_directory(global->dir.savefile);
|
||||
|
||||
for (i = 0; i < num_content; i++)
|
||||
{
|
||||
@ -944,7 +947,7 @@ static void rarch_init_savefile_paths(void)
|
||||
if (use_sram_dir)
|
||||
{
|
||||
/* Redirect content fullpath to save directory. */
|
||||
strlcpy(path, global->savefile_dir, sizeof(path));
|
||||
strlcpy(path, global->dir.savefile, sizeof(path));
|
||||
fill_pathname_dir(path,
|
||||
global->subsystem_fullpaths->elems[i].data, ext,
|
||||
sizeof(path));
|
||||
@ -961,16 +964,16 @@ static void rarch_init_savefile_paths(void)
|
||||
}
|
||||
|
||||
/* Let other relevant paths be inferred from the main SRAM location. */
|
||||
if (!global->has_set_save_path)
|
||||
fill_pathname_noext(global->savefile_name, global->basename, ".srm",
|
||||
sizeof(global->savefile_name));
|
||||
if (path_is_directory(global->savefile_name))
|
||||
if (!global->has_set.save_path)
|
||||
fill_pathname_noext(global->name.savefile, global->name.base, ".srm",
|
||||
sizeof(global->name.savefile));
|
||||
if (path_is_directory(global->name.savefile))
|
||||
{
|
||||
fill_pathname_dir(global->savefile_name, global->basename, ".srm",
|
||||
sizeof(global->savefile_name));
|
||||
fill_pathname_dir(global->name.savefile, global->name.base, ".srm",
|
||||
sizeof(global->name.savefile));
|
||||
RARCH_LOG("%s \"%s\".\n",
|
||||
msg_hash_to_str(MSG_REDIRECTING_SAVEFILE_TO),
|
||||
global->savefile_name);
|
||||
global->name.savefile);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -979,12 +982,12 @@ static void rarch_init_savefile_paths(void)
|
||||
char savefile_name_rtc[PATH_MAX_LENGTH] = {0};
|
||||
|
||||
attr.i = RETRO_MEMORY_SAVE_RAM;
|
||||
string_list_append(global->savefiles, global->savefile_name, attr);
|
||||
string_list_append(global->savefiles, global->name.savefile, attr);
|
||||
|
||||
/* Infer .rtc save path from save ram path. */
|
||||
attr.i = RETRO_MEMORY_RTC;
|
||||
fill_pathname(savefile_name_rtc,
|
||||
global->savefile_name, ".rtc", sizeof(savefile_name_rtc));
|
||||
global->name.savefile, ".rtc", sizeof(savefile_name_rtc));
|
||||
string_list_append(global->savefiles, savefile_name_rtc, attr);
|
||||
}
|
||||
}
|
||||
@ -994,21 +997,21 @@ void rarch_fill_pathnames(void)
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
rarch_init_savefile_paths();
|
||||
fill_pathname(global->bsv.movie_path, global->savefile_name, "",
|
||||
strlcpy(global->bsv.movie_path, global->name.savefile,
|
||||
sizeof(global->bsv.movie_path));
|
||||
|
||||
if (!*global->basename)
|
||||
if (!*global->name.base)
|
||||
return;
|
||||
|
||||
if (!*global->ups_name)
|
||||
fill_pathname_noext(global->ups_name, global->basename, ".ups",
|
||||
sizeof(global->ups_name));
|
||||
if (!*global->bps_name)
|
||||
fill_pathname_noext(global->bps_name, global->basename, ".bps",
|
||||
sizeof(global->bps_name));
|
||||
if (!*global->ips_name)
|
||||
fill_pathname_noext(global->ips_name, global->basename, ".ips",
|
||||
sizeof(global->ips_name));
|
||||
if (!*global->name.ups)
|
||||
fill_pathname_noext(global->name.ups, global->name.base, ".ups",
|
||||
sizeof(global->name.ups));
|
||||
if (!*global->name.bps)
|
||||
fill_pathname_noext(global->name.bps, global->name.base, ".bps",
|
||||
sizeof(global->name.bps));
|
||||
if (!*global->name.ips)
|
||||
fill_pathname_noext(global->name.ips, global->name.base, ".ips",
|
||||
sizeof(global->name.ips));
|
||||
}
|
||||
|
||||
static bool init_state(void)
|
||||
@ -1029,7 +1032,7 @@ static void main_clear_state_drivers(void)
|
||||
bool inited = false;
|
||||
if (!global)
|
||||
return;
|
||||
inited = global->main_is_init;
|
||||
inited = global->inited.main;
|
||||
if (!inited)
|
||||
return;
|
||||
|
||||
@ -1181,8 +1184,8 @@ int rarch_main_init(int argc, char *argv[])
|
||||
RARCH_ERR("Fatal error received in: \"%s\"\n", global->error_string);
|
||||
return sjlj_ret;
|
||||
}
|
||||
global->error_in_init = true;
|
||||
global->log_file = stderr;
|
||||
global->inited.error = true;
|
||||
global->log_file = stderr;
|
||||
parse_input(argc, argv);
|
||||
|
||||
if (global->verbosity)
|
||||
@ -1209,15 +1212,15 @@ int rarch_main_init(int argc, char *argv[])
|
||||
if (settings && (settings->multimedia.builtin_mediaplayer_enable ||
|
||||
settings->multimedia.builtin_imageviewer_enable))
|
||||
{
|
||||
switch (rarch_path_is_media_type(global->fullpath))
|
||||
switch (rarch_path_is_media_type(global->path.fullpath))
|
||||
{
|
||||
case RARCH_CONTENT_MOVIE:
|
||||
case RARCH_CONTENT_MUSIC:
|
||||
if (settings->multimedia.builtin_mediaplayer_enable)
|
||||
{
|
||||
#ifdef HAVE_FFMPEG
|
||||
global->has_set_libretro = false;
|
||||
global->core_type = CORE_TYPE_FFMPEG;
|
||||
global->has_set.libretro = false;
|
||||
global->inited.core.type = CORE_TYPE_FFMPEG;
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
@ -1225,8 +1228,8 @@ int rarch_main_init(int argc, char *argv[])
|
||||
case RARCH_CONTENT_IMAGE:
|
||||
if (settings->multimedia.builtin_imageviewer_enable)
|
||||
{
|
||||
global->has_set_libretro = false;
|
||||
global->core_type = CORE_TYPE_IMAGEVIEWER;
|
||||
global->has_set.libretro = false;
|
||||
global->inited.core.type = CORE_TYPE_IMAGEVIEWER;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
@ -1236,7 +1239,7 @@ int rarch_main_init(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
init_libretro_sym(global->core_type);
|
||||
init_libretro_sym(global->inited.core.type);
|
||||
rarch_system_info_init();
|
||||
|
||||
init_drivers_pre();
|
||||
@ -1278,14 +1281,14 @@ int rarch_main_init(int argc, char *argv[])
|
||||
}
|
||||
#endif
|
||||
|
||||
global->error_in_init = false;
|
||||
global->main_is_init = true;
|
||||
global->inited.error = false;
|
||||
global->inited.main = true;
|
||||
return 0;
|
||||
|
||||
error:
|
||||
event_command(EVENT_CMD_CORE_DEINIT);
|
||||
|
||||
global->main_is_init = false;
|
||||
global->inited.main = false;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -1476,7 +1479,7 @@ void rarch_main_deinit(void)
|
||||
event_command(EVENT_CMD_NETPLAY_DEINIT);
|
||||
event_command(EVENT_CMD_COMMAND_DEINIT);
|
||||
|
||||
if (global->use_sram)
|
||||
if (global->sram.use)
|
||||
event_command(EVENT_CMD_AUTOSAVE_DEINIT);
|
||||
|
||||
event_command(EVENT_CMD_RECORD_DEINIT);
|
||||
@ -1494,7 +1497,7 @@ void rarch_main_deinit(void)
|
||||
event_command(EVENT_CMD_SUBSYSTEM_FULLPATHS_DEINIT);
|
||||
event_command(EVENT_CMD_SAVEFILES_DEINIT);
|
||||
|
||||
global->main_is_init = false;
|
||||
global->inited.main = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1573,7 +1576,7 @@ int rarch_defer_core(core_info_list_t *core_info, const char *dir,
|
||||
|
||||
if (menu_label_hash == MENU_LABEL_LOAD_CONTENT)
|
||||
{
|
||||
info = (const core_info_t*)&global->core_info_current;
|
||||
info = (const core_info_t*)&global->core_info.current;
|
||||
|
||||
if (info)
|
||||
{
|
||||
@ -1589,7 +1592,7 @@ int rarch_defer_core(core_info_list_t *core_info, const char *dir,
|
||||
if (supported != 1)
|
||||
return 0;
|
||||
|
||||
strlcpy(global->fullpath, s, sizeof(global->fullpath));
|
||||
strlcpy(global->path.fullpath, s, sizeof(global->path.fullpath));
|
||||
|
||||
if (path_file_exists(new_core_path))
|
||||
strlcpy(settings->libretro, new_core_path,
|
||||
@ -1624,13 +1627,13 @@ bool rarch_replace_config(const char *path)
|
||||
|
||||
/* If config file to be replaced is the same as the
|
||||
* current config file, exit. */
|
||||
if (!strcmp(path, global->config_path))
|
||||
if (!strcmp(path, global->path.config))
|
||||
return false;
|
||||
|
||||
if (settings->config_save_on_exit && *global->config_path)
|
||||
config_save_file(global->config_path);
|
||||
if (settings->config_save_on_exit && *global->path.config)
|
||||
config_save_file(global->path.config);
|
||||
|
||||
strlcpy(global->config_path, path, sizeof(global->config_path));
|
||||
strlcpy(global->path.config, path, sizeof(global->path.config));
|
||||
global->block_config_read = false;
|
||||
*settings->libretro = '\0'; /* Load core in new config. */
|
||||
|
||||
|
10
runloop.c
10
runloop.c
@ -423,7 +423,7 @@ static void do_state_check_menu_toggle(settings_t *settings, global_t *global)
|
||||
{
|
||||
if (menu_driver_alive())
|
||||
{
|
||||
if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY))
|
||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||
rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED);
|
||||
return;
|
||||
}
|
||||
@ -459,7 +459,7 @@ static int do_pre_state_checks(settings_t *settings,
|
||||
event_command(EVENT_CMD_GRAB_MOUSE_TOGGLE);
|
||||
|
||||
#ifdef HAVE_MENU
|
||||
if (cmd->menu_pressed || (global->core_type == CORE_TYPE_DUMMY))
|
||||
if (cmd->menu_pressed || (global->inited.core.type == CORE_TYPE_DUMMY))
|
||||
do_state_check_menu_toggle(settings, global);
|
||||
#endif
|
||||
|
||||
@ -751,7 +751,7 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver,
|
||||
if (!driver->input || !driver->input_data)
|
||||
return 0;
|
||||
|
||||
global->turbo_count++;
|
||||
global->turbo.count++;
|
||||
|
||||
driver->block_libretro_input = check_block_hotkey(driver,
|
||||
settings, driver->input->key_pressed(
|
||||
@ -764,13 +764,13 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver,
|
||||
input_push_analog_dpad(settings->input.autoconf_binds[i],
|
||||
settings->input.analog_dpad_mode[i]);
|
||||
|
||||
global->turbo_frame_enable[i] = 0;
|
||||
global->turbo.frame_enable[i] = 0;
|
||||
}
|
||||
|
||||
if (!driver->block_libretro_input)
|
||||
{
|
||||
for (i = 0; i < settings->input.max_users; i++)
|
||||
global->turbo_frame_enable[i] = input_driver_state(binds,
|
||||
global->turbo.frame_enable[i] = input_driver_state(binds,
|
||||
i, RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE);
|
||||
}
|
||||
|
||||
|
179
runloop.h
179
runloop.h
@ -74,45 +74,65 @@ typedef struct global
|
||||
|
||||
struct string_list *temporary_content;
|
||||
|
||||
core_info_list_t *core_info;
|
||||
core_info_t *core_info_current;
|
||||
struct
|
||||
{
|
||||
core_info_list_t *list;
|
||||
core_info_t *current;
|
||||
} core_info;
|
||||
|
||||
uint32_t content_crc;
|
||||
|
||||
char gb_rom_path[PATH_MAX_LENGTH];
|
||||
char bsx_rom_path[PATH_MAX_LENGTH];
|
||||
char sufami_rom_path[2][PATH_MAX_LENGTH];
|
||||
bool has_set_input_descriptors;
|
||||
bool has_set_save_path;
|
||||
bool has_set_state_path;
|
||||
bool has_set_libretro_device[MAX_USERS];
|
||||
bool has_set_libretro;
|
||||
bool has_set_libretro_directory;
|
||||
bool has_set_verbosity;
|
||||
struct
|
||||
{
|
||||
char gb_rom[PATH_MAX_LENGTH];
|
||||
char bsx_rom[PATH_MAX_LENGTH];
|
||||
char sufami_rom[2][PATH_MAX_LENGTH];
|
||||
/* Config associated with global "default" config. */
|
||||
char config[PATH_MAX_LENGTH];
|
||||
char append_config[PATH_MAX_LENGTH];
|
||||
char input_config[PATH_MAX_LENGTH];
|
||||
#ifdef HAVE_FILE_LOGGER
|
||||
char default_log[PATH_MAX_LENGTH];
|
||||
#endif
|
||||
char fullpath[PATH_MAX_LENGTH];
|
||||
/* Config file associated with per-core configs. */
|
||||
char core_specific_config[PATH_MAX_LENGTH];
|
||||
} path;
|
||||
|
||||
bool has_set_netplay_mode;
|
||||
bool has_set_username;
|
||||
bool has_set_netplay_ip_address;
|
||||
bool has_set_netplay_delay_frames;
|
||||
bool has_set_netplay_ip_port;
|
||||
struct
|
||||
{
|
||||
bool input_descriptors;
|
||||
bool save_path;
|
||||
bool state_path;
|
||||
bool libretro_device[MAX_USERS];
|
||||
bool libretro;
|
||||
bool libretro_directory;
|
||||
bool verbosity;
|
||||
|
||||
bool netplay_mode;
|
||||
bool username;
|
||||
bool netplay_ip_address;
|
||||
bool netplay_delay_frames;
|
||||
bool netplay_ip_port;
|
||||
|
||||
bool ups_pref;
|
||||
bool bps_pref;
|
||||
bool ips_pref;
|
||||
} has_set;
|
||||
|
||||
bool has_set_ups_pref;
|
||||
bool has_set_bps_pref;
|
||||
bool has_set_ips_pref;
|
||||
|
||||
bool overrides_active;
|
||||
|
||||
/* Config associated with global "default" config. */
|
||||
char config_path[PATH_MAX_LENGTH];
|
||||
char append_config_path[PATH_MAX_LENGTH];
|
||||
char input_config_path[PATH_MAX_LENGTH];
|
||||
|
||||
#ifdef HAVE_FILE_LOGGER
|
||||
char default_log_file[PATH_MAX_LENGTH];
|
||||
#endif
|
||||
|
||||
char basename[PATH_MAX_LENGTH];
|
||||
char fullpath[PATH_MAX_LENGTH];
|
||||
struct
|
||||
{
|
||||
char base[PATH_MAX_LENGTH];
|
||||
char savefile[PATH_MAX_LENGTH];
|
||||
char savestate[PATH_MAX_LENGTH];
|
||||
char cheatfile[PATH_MAX_LENGTH];
|
||||
char ups[PATH_MAX_LENGTH];
|
||||
char bps[PATH_MAX_LENGTH];
|
||||
char ips[PATH_MAX_LENGTH];
|
||||
} name;
|
||||
|
||||
/* A list of save types and associated paths for all content. */
|
||||
struct string_list *savefiles;
|
||||
@ -121,26 +141,24 @@ typedef struct global
|
||||
char subsystem[PATH_MAX_LENGTH];
|
||||
struct string_list *subsystem_fullpaths;
|
||||
|
||||
char savefile_name[PATH_MAX_LENGTH];
|
||||
char savestate_name[PATH_MAX_LENGTH];
|
||||
char cheatfile_name[PATH_MAX_LENGTH];
|
||||
|
||||
/* Used on reentrancy to use a savestate dir. */
|
||||
char savefile_dir[PATH_MAX_LENGTH];
|
||||
char savestate_dir[PATH_MAX_LENGTH];
|
||||
|
||||
struct
|
||||
{
|
||||
/* Used on reentrancy to use a savestate dir. */
|
||||
char savefile[PATH_MAX_LENGTH];
|
||||
char savestate[PATH_MAX_LENGTH];
|
||||
#ifdef HAVE_OVERLAY
|
||||
char overlay_dir[PATH_MAX_LENGTH];
|
||||
char osk_overlay_dir[PATH_MAX_LENGTH];
|
||||
char overlay[PATH_MAX_LENGTH];
|
||||
char osk_overlay[PATH_MAX_LENGTH];
|
||||
#endif
|
||||
} dir;
|
||||
|
||||
bool block_patch;
|
||||
bool ups_pref;
|
||||
bool bps_pref;
|
||||
bool ips_pref;
|
||||
char ups_name[PATH_MAX_LENGTH];
|
||||
char bps_name[PATH_MAX_LENGTH];
|
||||
char ips_name[PATH_MAX_LENGTH];
|
||||
struct
|
||||
{
|
||||
bool block_patch;
|
||||
bool ups_pref;
|
||||
bool bps_pref;
|
||||
bool ips_pref;
|
||||
} patch;
|
||||
|
||||
struct
|
||||
{
|
||||
@ -180,28 +198,39 @@ typedef struct global
|
||||
bool movie_end;
|
||||
} bsv;
|
||||
|
||||
bool sram_load_disable;
|
||||
bool sram_save_disable;
|
||||
bool use_sram;
|
||||
|
||||
struct
|
||||
{
|
||||
bool load_disable;
|
||||
bool save_disable;
|
||||
bool use;
|
||||
} sram;
|
||||
|
||||
/* Turbo support. */
|
||||
bool turbo_frame_enable[MAX_USERS];
|
||||
uint16_t turbo_enable[MAX_USERS];
|
||||
unsigned turbo_count;
|
||||
struct
|
||||
{
|
||||
bool frame_enable[MAX_USERS];
|
||||
uint16_t enable[MAX_USERS];
|
||||
unsigned count;
|
||||
} turbo;
|
||||
|
||||
/* Autosave support. */
|
||||
autosave_t **autosave;
|
||||
unsigned num_autosave;
|
||||
struct
|
||||
{
|
||||
autosave_t **list;
|
||||
unsigned num;
|
||||
} autosave;
|
||||
|
||||
#ifdef HAVE_NETPLAY
|
||||
/* Netplay. */
|
||||
char netplay_server[PATH_MAX_LENGTH];
|
||||
bool netplay_enable;
|
||||
bool netplay_is_client;
|
||||
bool netplay_is_spectate;
|
||||
unsigned netplay_sync_frames;
|
||||
unsigned netplay_port;
|
||||
struct
|
||||
{
|
||||
char server[PATH_MAX_LENGTH];
|
||||
bool enable;
|
||||
bool is_client;
|
||||
bool is_spectate;
|
||||
unsigned sync_frames;
|
||||
unsigned port;
|
||||
} netplay;
|
||||
#endif
|
||||
|
||||
/* Recording. */
|
||||
@ -275,18 +304,20 @@ typedef struct global
|
||||
* will write to this file. */
|
||||
FILE *log_file;
|
||||
|
||||
bool main_is_init;
|
||||
bool content_is_init;
|
||||
bool error_in_init;
|
||||
char error_string[PATH_MAX_LENGTH];
|
||||
struct
|
||||
{
|
||||
bool main;
|
||||
bool content;
|
||||
bool error;
|
||||
struct
|
||||
{
|
||||
bool no_content;
|
||||
enum rarch_core_type type;
|
||||
} core;
|
||||
} inited;
|
||||
|
||||
jmp_buf error_sjlj_context;
|
||||
|
||||
bool libretro_no_content;
|
||||
enum rarch_core_type core_type;
|
||||
|
||||
/* Config file associated with per-core configs. */
|
||||
char core_specific_config_path[PATH_MAX_LENGTH];
|
||||
|
||||
char error_string[PATH_MAX_LENGTH];
|
||||
retro_keyboard_event_t frontend_key_event;
|
||||
} global_t;
|
||||
|
||||
|
@ -203,7 +203,7 @@ static bool take_screenshot_viewport(void)
|
||||
|
||||
if (!*settings->screenshot_directory)
|
||||
{
|
||||
fill_pathname_basedir(screenshot_path, global->basename,
|
||||
fill_pathname_basedir(screenshot_path, global->name.base,
|
||||
sizeof(screenshot_path));
|
||||
screenshot_dir = screenshot_path;
|
||||
}
|
||||
@ -237,7 +237,7 @@ static bool take_screenshot_raw(void)
|
||||
|
||||
if (!*settings->screenshot_directory)
|
||||
{
|
||||
fill_pathname_basedir(screenshot_path, global->basename,
|
||||
fill_pathname_basedir(screenshot_path, global->name.base,
|
||||
sizeof(screenshot_path));
|
||||
screenshot_dir = screenshot_path;
|
||||
}
|
||||
@ -268,7 +268,7 @@ bool take_screenshot(void)
|
||||
(const struct retro_hw_render_callback*)video_driver_callback();
|
||||
|
||||
/* No way to infer screenshot directory. */
|
||||
if ((!*settings->screenshot_directory) && (!*global->basename))
|
||||
if ((!*settings->screenshot_directory) && (!*global->name.base))
|
||||
return false;
|
||||
|
||||
viewport_read = (settings->video.gpu_screenshot ||
|
||||
|
@ -230,7 +230,7 @@ static int cb_update_databases(void *data, size_t len)
|
||||
static int cb_update_overlays(void *data, size_t len)
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
return cb_generic_download(data, len, global->overlay_dir);
|
||||
return cb_generic_download(data, len, global->dir.overlay);
|
||||
}
|
||||
|
||||
static int cb_update_cheats(void *data, size_t len)
|
||||
|
Loading…
x
Reference in New Issue
Block a user