diff --git a/command_event.c b/command_event.c index 813c7e36e0..5416538961 100644 --- a/command_event.c +++ b/command_event.c @@ -534,7 +534,7 @@ static void event_deinit_core(bool reinit) { global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); - + rarch_system_info_t *info = rarch_system_info_get_ptr(); pretro_unload_game(); pretro_deinit(); @@ -548,7 +548,7 @@ static void event_deinit_core(bool reinit) strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); /* restore system directory if it was set to */ - if(settings->system_in_content_dir) + if(settings->system_in_content_dir && !strcmp(info->info.library_name,"No Core")) settings->system_directory[0] = '\0'; /* auto overrides: reload the original config */ diff --git a/configuration.c b/configuration.c index f74903a087..b03ff09d43 100644 --- a/configuration.c +++ b/configuration.c @@ -1719,6 +1719,8 @@ static bool config_load_file(const char *path, bool set_defaults) if (!strcmp(settings->system_directory, "default")) { + RARCH_WARN("system_directory is not set in config. Assuming system directory is same folder as game: \"%s\".\n", + settings->system_directory); *settings->system_directory = '\0'; settings->system_in_content_dir = true; } diff --git a/frontend/drivers/platform_android.c b/frontend/drivers/platform_android.c index 7dd8cc1d87..822532f5cb 100644 --- a/frontend/drivers/platform_android.c +++ b/frontend/drivers/platform_android.c @@ -812,11 +812,11 @@ static void frontend_android_get_environment_settings(int *argc, path_mkdir(g_defaults.sram_dir); fill_pathname_join(g_defaults.savestate_dir, - ext_dir, "saves", sizeof(g_defaults.savestate_dir)); + ext_dir, "states", sizeof(g_defaults.savestate_dir)); path_mkdir(g_defaults.savestate_dir); fill_pathname_join(g_defaults.system_dir, - ext_dir, "saves", sizeof(g_defaults.system_dir)); + ext_dir, "system", sizeof(g_defaults.system_dir)); path_mkdir(g_defaults.system_dir); break; case SDCARD_NOT_WRITABLE: diff --git a/frontend/frontend.c b/frontend/frontend.c index 462312b346..fd6c48e0d2 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -38,6 +38,7 @@ void main_exit_save_config(void) { settings_t *settings = config_get_ptr(); 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) { @@ -48,7 +49,7 @@ void main_exit_save_config(void) strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); /* restore system directory if it was set to */ - if(settings->system_in_content_dir) + if(settings->system_in_content_dir && !strcmp(info->info.library_name,"No Core")) settings->system_directory[0] = '\0'; /* Save last core-specific config to the default config location, diff --git a/retroarch.c b/retroarch.c index 18b3a28fef..47dd19d6af 100644 --- a/retroarch.c +++ b/retroarch.c @@ -319,6 +319,8 @@ static void set_special_paths(char **argv, unsigned num_content) fill_pathname_basedir(settings->system_directory, argv[0], sizeof(settings->system_directory)); } + else + settings->system_in_content_dir = false; } void set_paths_redirect(const char *path) @@ -431,11 +433,12 @@ void rarch_set_paths(const char *path) * as this was initialized before in a menu or otherwise. */ if (!settings->system_directory || settings->system_directory[0] == '\0') { - RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",path); + RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",path); fill_pathname_basedir(settings->system_directory, path, sizeof(settings->system_directory)); } - + else + settings->system_in_content_dir = false; }