aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/FileSystem/SaveHelper.cs
diff options
context:
space:
mode:
authoremmauss <emmausssss@gmail.com>2018-09-09 01:04:26 +0300
committergdkchan <gab.dark.100@gmail.com>2018-09-08 19:04:26 -0300
commitfc77b089a6ab600ac6f954cb193d26239008975f (patch)
tree48e781b399eaf1776b82bb9735cad8d5845b63c2 /Ryujinx.HLE/FileSystem/SaveHelper.cs
parent322721811441e5735c64a8821e4771d6872a0fb7 (diff)
Implements proper save path (#386)
* initial save path implementation * fix savedatatype offset, remove incomplete createsavedata implimentation * address nits * fix crash if npdm is not found * made saveinfo readonly, other stuff * remove context param from saveinfo contructor * fix style * remove whitespace
Diffstat (limited to 'Ryujinx.HLE/FileSystem/SaveHelper.cs')
-rw-r--r--Ryujinx.HLE/FileSystem/SaveHelper.cs46
1 files changed, 46 insertions, 0 deletions
diff --git a/Ryujinx.HLE/FileSystem/SaveHelper.cs b/Ryujinx.HLE/FileSystem/SaveHelper.cs
new file mode 100644
index 00000000..67f01016
--- /dev/null
+++ b/Ryujinx.HLE/FileSystem/SaveHelper.cs
@@ -0,0 +1,46 @@
+using Ryujinx.HLE.HOS;
+using System.IO;
+
+using static Ryujinx.HLE.FileSystem.VirtualFileSystem;
+
+namespace Ryujinx.HLE.FileSystem
+{
+ static class SaveHelper
+ {
+ public static string GetSavePath(SaveInfo SaveMetaData, ServiceCtx Context)
+ {
+ string BaseSavePath = NandPath;
+ long CurrentTitleId = SaveMetaData.TitleId;
+
+ switch (SaveMetaData.SaveSpaceId)
+ {
+ case SaveSpaceId.NandUser:
+ BaseSavePath = UserNandPath;
+ break;
+ case SaveSpaceId.NandSystem:
+ BaseSavePath = SystemNandPath;
+ break;
+ case SaveSpaceId.SdCard:
+ BaseSavePath = Path.Combine(SdCardPath, "Nintendo");
+ break;
+ }
+
+ BaseSavePath = Path.Combine(BaseSavePath, "save");
+
+ if (SaveMetaData.TitleId == 0 && SaveMetaData.SaveDataType == SaveDataType.SaveData)
+ {
+ if (Context.Process.MetaData != null)
+ {
+ CurrentTitleId = Context.Process.MetaData.ACI0.TitleId;
+ }
+ }
+
+ string SavePath = Path.Combine(BaseSavePath,
+ SaveMetaData.SaveId.ToString("x16"),
+ SaveMetaData.UserId.ToString(),
+ SaveMetaData.SaveDataType == SaveDataType.SaveData ? CurrentTitleId.ToString("x16") : string.Empty);
+
+ return SavePath;
+ }
+ }
+}