From 3bc9f5509b9f36e934d1a16eeda31be9bb22ac10 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 31 Dec 2014 21:43:31 -0500 Subject: [PATCH] Archives: Change the folder layout of some archives. This is to better represent the hardware layout, they are still aren't quite accurate, but this better and will help a bit when implementing the other archives like NAND-RO and NAND-RW --- src/common/common_paths.h | 41 ++++++++++++----------- src/common/file_util.cpp | 2 ++ src/common/file_util.h | 1 + src/core/file_sys/archive_extsavedata.cpp | 3 +- src/core/hle/service/fs/archive.cpp | 2 +- src/core/hle/service/ptm_u.cpp | 2 +- 6 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/common/common_paths.h b/src/common/common_paths.h index e692e5492..f019944f5 100644 --- a/src/common/common_paths.h +++ b/src/common/common_paths.h @@ -35,26 +35,27 @@ #define JAP_DIR "JAP" // Subdirs in the User dir returned by GetUserPath(D_USER_IDX) -#define CONFIG_DIR "config" -#define GAMECONFIG_DIR "game_config" -#define MAPS_DIR "maps" -#define CACHE_DIR "cache" -#define SDMC_DIR "sdmc" -#define EXTSAVEDATA_DIR "extsavedata" -#define SAVEDATA_DIR "savedata" -#define SAVEDATACHECK_DIR "savedatacheck" -#define SYSDATA_DIR "sysdata" -#define SYSSAVEDATA_DIR "syssavedata" -#define SHADERCACHE_DIR "shader_cache" -#define STATESAVES_DIR "state_saves" -#define SCREENSHOTS_DIR "screenShots" -#define DUMP_DIR "dump" -#define DUMP_TEXTURES_DIR "textures" -#define DUMP_FRAMES_DIR "frames" -#define DUMP_AUDIO_DIR "audio" -#define LOGS_DIR "logs" -#define SHADERS_DIR "shaders" -#define SYSCONF_DIR "sysconf" +#define CONFIG_DIR "config" +#define GAMECONFIG_DIR "game_config" +#define MAPS_DIR "maps" +#define CACHE_DIR "cache" +#define SDMC_DIR "sdmc" +#define EXTSAVEDATA_DIR "sdmc/Nintendo 3DS/extdata" +#define SHAREDEXTSAVEDATA_DIR "nand/data/extdata" +#define SAVEDATA_DIR "savedata" +#define SAVEDATACHECK_DIR "savedatacheck" +#define SYSDATA_DIR "sysdata" +#define SYSSAVEDATA_DIR "nand/data/sysdata" +#define SHADERCACHE_DIR "shader_cache" +#define STATESAVES_DIR "state_saves" +#define SCREENSHOTS_DIR "screenShots" +#define DUMP_DIR "dump" +#define DUMP_TEXTURES_DIR "textures" +#define DUMP_FRAMES_DIR "frames" +#define DUMP_AUDIO_DIR "audio" +#define LOGS_DIR "logs" +#define SHADERS_DIR "shaders" +#define SYSCONF_DIR "sysconf" // Filenames // Files in the directory returned by GetUserPath(D_CONFIG_IDX) diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp index 0a6cd80c8..f8d140d84 100644 --- a/src/common/file_util.cpp +++ b/src/common/file_util.cpp @@ -677,6 +677,7 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string &new paths[D_CACHE_IDX] = paths[D_USER_IDX] + CACHE_DIR DIR_SEP; paths[D_SDMC_IDX] = paths[D_USER_IDX] + SDMC_DIR DIR_SEP; paths[D_EXTSAVEDATA] = paths[D_USER_IDX] + EXTSAVEDATA_DIR DIR_SEP; + paths[D_SHAREDEXTSAVEDATA] = paths[D_USER_IDX] + SHAREDEXTSAVEDATA_DIR DIR_SEP; paths[D_SAVEDATA_IDX] = paths[D_USER_IDX] + SAVEDATA_DIR DIR_SEP; paths[D_SAVEDATACHECK_IDX] = paths[D_USER_IDX] + SAVEDATACHECK_DIR DIR_SEP; paths[D_SYSDATA_IDX] = paths[D_USER_IDX] + SYSDATA_DIR DIR_SEP; @@ -723,6 +724,7 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string &new paths[D_CACHE_IDX] = paths[D_USER_IDX] + CACHE_DIR DIR_SEP; paths[D_SDMC_IDX] = paths[D_USER_IDX] + SDMC_DIR DIR_SEP; paths[D_EXTSAVEDATA] = paths[D_USER_IDX] + EXTSAVEDATA_DIR DIR_SEP; + paths[D_SHAREDEXTSAVEDATA] = paths[D_USER_IDX] + SHAREDEXTSAVEDATA_DIR DIR_SEP; paths[D_SAVEDATA_IDX] = paths[D_USER_IDX] + SAVEDATA_DIR DIR_SEP; paths[D_SAVEDATACHECK_IDX] = paths[D_USER_IDX] + SAVEDATACHECK_DIR DIR_SEP; paths[D_SYSSAVEDATA_IDX] = paths[D_USER_IDX] + SYSSAVEDATA_DIR DIR_SEP; diff --git a/src/common/file_util.h b/src/common/file_util.h index c83ecd87d..4d6155f1f 100644 --- a/src/common/file_util.h +++ b/src/common/file_util.h @@ -28,6 +28,7 @@ enum { D_SCREENSHOTS_IDX, D_SDMC_IDX, D_EXTSAVEDATA, + D_SHAREDEXTSAVEDATA, D_SAVEDATA_IDX, D_SAVEDATACHECK_IDX, D_SYSDATA_IDX, diff --git a/src/core/file_sys/archive_extsavedata.cpp b/src/core/file_sys/archive_extsavedata.cpp index 4759ef3ae..2f00bf067 100644 --- a/src/core/file_sys/archive_extsavedata.cpp +++ b/src/core/file_sys/archive_extsavedata.cpp @@ -19,10 +19,9 @@ namespace FileSys { static std::string GetExtSaveDataPath(const std::string& mount_point, const Path& path) { std::vector vec_data = path.AsBinary(); const u32* data = reinterpret_cast(vec_data.data()); - u32 media_type = data[0]; u32 save_low = data[1]; u32 save_high = data[2]; - return Common::StringFromFormat("%s%s/%08X/%08X/", mount_point.c_str(), media_type == 0 ? "nand" : "sdmc", save_high, save_low); + return Common::StringFromFormat("%s%08X/%08X/", mount_point.c_str(), save_high, save_low); } Archive_ExtSaveData::Archive_ExtSaveData(const std::string& mount_point) diff --git a/src/core/hle/service/fs/archive.cpp b/src/core/hle/service/fs/archive.cpp index f761c6ab9..56d53402f 100644 --- a/src/core/hle/service/fs/archive.cpp +++ b/src/core/hle/service/fs/archive.cpp @@ -455,7 +455,7 @@ void ArchiveInit() { else LOG_ERROR(Service_FS, "Can't instantiate ExtSaveData archive with path %s", extsavedata_directory.c_str()); - std::string sharedextsavedata_directory = FileUtil::GetUserPath(D_EXTSAVEDATA); + std::string sharedextsavedata_directory = FileUtil::GetUserPath(D_SHAREDEXTSAVEDATA); auto sharedextsavedata_archive = Common::make_unique(sharedextsavedata_directory); if (sharedextsavedata_archive->Initialize()) CreateArchive(std::move(sharedextsavedata_archive), ArchiveIdCode::SharedExtSaveData); diff --git a/src/core/hle/service/ptm_u.cpp b/src/core/hle/service/ptm_u.cpp index 9cc700c46..c900c90f8 100644 --- a/src/core/hle/service/ptm_u.cpp +++ b/src/core/hle/service/ptm_u.cpp @@ -142,7 +142,7 @@ Interface::Interface() { Register(FunctionTable, ARRAY_SIZE(FunctionTable)); // Create the SharedExtSaveData archive 0xF000000B and the gamecoin.dat file // TODO(Subv): In the future we should use the FS service to query this archive - std::string extsavedata_directory = FileUtil::GetUserPath(D_EXTSAVEDATA); + std::string extsavedata_directory = FileUtil::GetUserPath(D_SHAREDEXTSAVEDATA); ptm_shared_extsavedata = Common::make_unique(extsavedata_directory); if (!ptm_shared_extsavedata->Initialize()) { LOG_CRITICAL(Service_PTM, "Could not initialize ExtSaveData archive for the PTM:U service");