From fc77b089a6ab600ac6f954cb193d26239008975f Mon Sep 17 00:00:00 2001 From: emmauss Date: Sun, 9 Sep 2018 01:04:26 +0300 Subject: 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 --- Ryujinx.HLE/FileSystem/SaveHelper.cs | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Ryujinx.HLE/FileSystem/SaveHelper.cs (limited to 'Ryujinx.HLE/FileSystem/SaveHelper.cs') 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; + } + } +} -- cgit v1.2.3