aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy')
-rw-r--r--Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs23
1 files changed, 21 insertions, 2 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs b/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs
index 0840a913..3ae24c55 100644
--- a/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs
+++ b/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs
@@ -1,6 +1,7 @@
using LibHac;
using LibHac.Account;
using LibHac.Common;
+using LibHac.Fs;
using LibHac.Ncm;
using LibHac.Ns;
using Ryujinx.Common;
@@ -13,6 +14,7 @@ using Ryujinx.HLE.HOS.Services.Sdb.Pdm.QueryService;
using System;
using static LibHac.Fs.ApplicationSaveDataManagement;
+using AccountUid = Ryujinx.HLE.HOS.Services.Account.Acc.UserId;
namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy
{
@@ -30,7 +32,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.Applicati
public ResultCode PopLaunchParameter(ServiceCtx context)
{
// Only the first 0x18 bytes of the Data seems to be actually used.
- MakeObject(context, new AppletAE.IStorage(StorageHelper.MakeLaunchParams()));
+ MakeObject(context, new AppletAE.IStorage(StorageHelper.MakeLaunchParams(context.Device.System.State.Account.LastOpenedUser)));
return ResultCode.Success;
}
@@ -39,7 +41,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.Applicati
// EnsureSaveData(nn::account::Uid) -> u64
public ResultCode EnsureSaveData(ServiceCtx context)
{
- Uid userId = context.RequestData.ReadStruct<Uid>();
+ Uid userId = context.RequestData.ReadStruct<AccountUid>().ToLibHacUid();
TitleId titleId = new TitleId(context.Process.TitleId);
BlitStruct<ApplicationControlProperty> controlHolder = context.Device.System.ControlData;
@@ -108,6 +110,23 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.Applicati
return ResultCode.Success;
}
+ // GetSaveDataSize(u8, nn::account::Uid) -> (u64, u64)
+ [Command(26)] // 3.0.0+
+ public ResultCode GetSaveDataSize(ServiceCtx context)
+ {
+ SaveDataType saveDataType = (SaveDataType)context.RequestData.ReadByte();
+ context.RequestData.BaseStream.Seek(7, System.IO.SeekOrigin.Current);
+
+ Uid userId = context.RequestData.ReadStruct<AccountUid>().ToLibHacUid();
+
+ // TODO: We return a size of 2GB as we use a directory based save system. This should be enough for most of the games.
+ context.ResponseData.Write(2000000000u);
+
+ Logger.PrintStub(LogClass.ServiceAm, new { saveDataType, userId });
+
+ return ResultCode.Success;
+ }
+
[Command(40)]
// NotifyRunning() -> b8
public ResultCode NotifyRunning(ServiceCtx context)