diff options
| author | emmauss <emmausssss@gmail.com> | 2018-09-09 01:04:26 +0300 |
|---|---|---|
| committer | gdkchan <gab.dark.100@gmail.com> | 2018-09-08 19:04:26 -0300 |
| commit | fc77b089a6ab600ac6f954cb193d26239008975f (patch) | |
| tree | 48e781b399eaf1776b82bb9735cad8d5845b63c2 /Ryujinx.HLE/FileSystem/SaveHelper.cs | |
| parent | 322721811441e5735c64a8821e4771d6872a0fb7 (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.cs | 46 |
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; + } + } +} |
