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<u8> vec_data = path.AsBinary();
     const u32* data = reinterpret_cast<const u32*>(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<FileSys::Archive_ExtSaveData>(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<FileSys::Archive_ExtSaveData>(extsavedata_directory);
     if (!ptm_shared_extsavedata->Initialize()) {
         LOG_CRITICAL(Service_PTM, "Could not initialize ExtSaveData archive for the PTM:U service");