fix savedatatype offset, remove incomplete createsavedata implimentation
This commit is contained in:
parent
c35d9ba043
commit
92a87e1ba1
5 changed files with 21 additions and 64 deletions
|
@ -1,6 +1,6 @@
|
|||
namespace Ryujinx.HLE.FileSystem
|
||||
{
|
||||
enum SaveDataType
|
||||
enum SaveDataType : byte
|
||||
{
|
||||
SystemSaveData,
|
||||
SaveData,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
namespace Ryujinx.HLE.FileSystem
|
||||
{
|
||||
enum SaveSpaceId
|
||||
enum SaveSpaceId : byte
|
||||
{
|
||||
NandSystem,
|
||||
NandUser,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue