From 92a87e1ba132862aff0a386dac4f21c276c3633a Mon Sep 17 00:00:00 2001 From: emmaus Date: Fri, 24 Aug 2018 17:46:06 +0000 Subject: [PATCH] fix savedatatype offset, remove incomplete createsavedata implimentation --- Ryujinx.HLE/FileSystem/SaveDataType.cs | 2 +- Ryujinx.HLE/FileSystem/SaveHelper.cs | 18 +++--- Ryujinx.HLE/FileSystem/SaveSpaceId.cs | 2 +- Ryujinx.HLE/FileSystem/VirtualFileSystem.cs | 2 +- .../HOS/Services/FspSrv/IFileSystemProxy.cs | 61 +++---------------- 5 files changed, 21 insertions(+), 64 deletions(-) diff --git a/Ryujinx.HLE/FileSystem/SaveDataType.cs b/Ryujinx.HLE/FileSystem/SaveDataType.cs index 2314263ca9..edfe8ab1d9 100644 --- a/Ryujinx.HLE/FileSystem/SaveDataType.cs +++ b/Ryujinx.HLE/FileSystem/SaveDataType.cs @@ -1,6 +1,6 @@ namespace Ryujinx.HLE.FileSystem { - enum SaveDataType + enum SaveDataType : byte { SystemSaveData, SaveData, diff --git a/Ryujinx.HLE/FileSystem/SaveHelper.cs b/Ryujinx.HLE/FileSystem/SaveHelper.cs index 9b4a02144c..1a62cfeceb 100644 --- a/Ryujinx.HLE/FileSystem/SaveHelper.cs +++ b/Ryujinx.HLE/FileSystem/SaveHelper.cs @@ -10,33 +10,33 @@ namespace Ryujinx.HLE.FileSystem { public static string GetSavePath(Save SaveMetaData, ServiceCtx Context) { - string BasePartitionPath = "nand"; - long CurrentTitleId = SaveMetaData.TitleId; + string BaseSavePath = "nand"; + long CurrentTitleId = SaveMetaData.TitleId; switch (SaveMetaData.SaveSpaceId) { case SaveSpaceId.NandUser: - BasePartitionPath = Path.Combine(BasePartitionPath, "user"); + BaseSavePath = Path.Combine(BaseSavePath, "user"); break; case SaveSpaceId.NandSystem: - BasePartitionPath = Path.Combine(BasePartitionPath, "system"); + BaseSavePath = Path.Combine(BaseSavePath, "system"); break; case SaveSpaceId.SdCard: - BasePartitionPath = Path.Combine("sdmc", "Nintendo"); + BaseSavePath = Path.Combine("sdmc", "Nintendo"); break; } - BasePartitionPath = Path.Combine(BasePartitionPath, "save"); + BaseSavePath = Path.Combine(BaseSavePath, "save"); if (SaveMetaData.TitleId == 0 && SaveMetaData.SaveDataType == SaveDataType.SaveData) { CurrentTitleId = Context.Process.MetaData.ACI0.TitleId; } - string SavePath = Path.Combine(BasePartitionPath, - SaveMetaData.SaveID.ToString("X16"), + string SavePath = Path.Combine(BaseSavePath, + SaveMetaData.SaveID.ToString("x16"), SaveMetaData.UserID.ToString(), - SaveMetaData.SaveDataType == SaveDataType.SaveData ? CurrentTitleId.ToString("X16") : string.Empty); + SaveMetaData.SaveDataType == SaveDataType.SaveData ? CurrentTitleId.ToString("x16") : string.Empty); return SavePath; } diff --git a/Ryujinx.HLE/FileSystem/SaveSpaceId.cs b/Ryujinx.HLE/FileSystem/SaveSpaceId.cs index d51922df1a..5a2b32d635 100644 --- a/Ryujinx.HLE/FileSystem/SaveSpaceId.cs +++ b/Ryujinx.HLE/FileSystem/SaveSpaceId.cs @@ -1,6 +1,6 @@ namespace Ryujinx.HLE.FileSystem { - enum SaveSpaceId + enum SaveSpaceId : byte { NandSystem, NandUser, diff --git a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs index 38209da3ad..d2ae402db0 100644 --- a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs +++ b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs @@ -53,7 +53,7 @@ namespace Ryujinx.HLE.FileSystem public string GetNandPath() => MakeDirAndGetFullPath(NandPath); - public string GetGameSavesPath(Save SaveMetaData, ServiceCtx Context) + public string GetGameSavePath(Save SaveMetaData, ServiceCtx Context) => MakeDirAndGetFullPath(SaveHelper.GetSavePath(SaveMetaData, Context)); public string GetSystemPath() => MakeDirAndGetFullPath(SystemPath); diff --git a/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs b/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs index 743171fafa..5ada207b41 100644 --- a/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs +++ b/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs @@ -3,6 +3,8 @@ using Ryujinx.HLE.Logging; using System.Collections.Generic; using Ryujinx.HLE.FileSystem; +using Ryujinx.HLE.HOS.SystemState; + namespace Ryujinx.HLE.HOS.Services.FspSrv { class IFileSystemProxy : IpcService @@ -17,7 +19,6 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv { { 1, SetCurrentProcess }, { 18, OpenSdCardFileSystem }, - { 22, CreateSaveDataFileSystem }, { 51, OpenSaveDataFileSystem }, { 52, OpenSaveDataFileSystemBySystemSaveDataId }, { 200, OpenDataStorageByCurrentProcess }, @@ -38,41 +39,6 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv return 0; } - public long CreateSaveDataFileSystem(ServiceCtx Context) - { - long TitleId = Context.RequestData.ReadInt64(); - long UserIdHigh = Context.RequestData.ReadInt64(); - long UserIdLow = Context.RequestData.ReadInt64(); - long SaveId = Context.RequestData.ReadInt64(); - - SaveDataType Type = (SaveDataType)Context.RequestData.ReadByte(); - - Save SaveInfo = new Save() - { - TitleId = TitleId, - UserID = new SystemState.UserId(UserIdLow, UserIdHigh), - SaveID = SaveId, - SaveDataType = Type - }; - - switch (SaveInfo.SaveDataType) - { - case SaveDataType.SaveData: - SaveInfo.SaveSpaceId = SaveSpaceId.NandUser; - break; - case SaveDataType.SystemSaveData: - SaveInfo.SaveSpaceId = SaveSpaceId.NandSystem; - break; - } - - byte[] SaveCreateStruct = Context.RequestData.ReadBytes(0x40); - byte[] Input = Context.RequestData.ReadBytes(0x10); - - Context.Device.FileSystem.GetGameSavesPath(SaveInfo, Context); - - return 0; - } - public long OpenSaveDataFileSystem(ServiceCtx Context) { LoadSaveDataFileSystem(Context); @@ -110,29 +76,20 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv public void LoadSaveDataFileSystem(ServiceCtx Context) { - byte id = Context.RequestData.ReadByte(); - SaveSpaceId SaveSpaceId = (SaveSpaceId)id; - - int Unknown = Context.RequestData.ReadInt32(); - - long TitleId = Context.RequestData.ReadInt64(); - byte[] UserId = Context.RequestData.ReadBytes(0x10); - long SaveId = Context.RequestData.ReadInt64(); - - byte type = Context.RequestData.ReadByte(); - SaveDataType Type = (SaveDataType)type; + SaveSpaceId SaveSpaceId = (SaveSpaceId)Context.RequestData.ReadInt64(); Save SaveInfo = new Save() { - TitleId = TitleId, - UserID = new SystemState.UserId(UserId), - SaveID = SaveId, - SaveDataType = Type + TitleId = Context.RequestData.ReadInt64(), + UserID = new UserId(Context.RequestData.ReadInt64(), + Context.RequestData.ReadInt64()), + SaveID = Context.RequestData.ReadInt64(), + SaveDataType = (SaveDataType)Context.RequestData.ReadByte() }; SaveInfo.SaveSpaceId = SaveSpaceId; - MakeObject(Context, new IFileSystem(Context.Device.FileSystem.GetGameSavesPath(SaveInfo, Context))); + MakeObject(Context, new IFileSystem(Context.Device.FileSystem.GetGameSavePath(SaveInfo, Context))); } } } \ No newline at end of file