diff --git a/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs b/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs index a295b94d7f..42e778d626 100644 --- a/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs +++ b/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs @@ -321,6 +321,26 @@ namespace Ryujinx.HLE.HOS.Services.Fs return (ResultCode)result.Value; } + [Command(62)] + public ResultCode OpenSaveDataInfoReaderOnlyCacheStorage(ServiceCtx context) + { + SaveDataFilter filter = new SaveDataFilter(); + filter.SetSaveDataType(SaveDataType.Cache); + filter.SetProgramId(new TitleId(context.Process.TitleId)); + + // FS would query the User and SdCache space IDs to find where the existing cache is (if any). + // We always have the SD card inserted, so we can always use SdCache for now. + Result result = _baseFileSystemProxy.OpenSaveDataInfoReaderBySaveDataSpaceId( + out LibHac.FsService.ISaveDataInfoReader infoReader, SaveDataSpaceId.SdCache); + + if (result.IsSuccess()) + { + MakeObject(context, new ISaveDataInfoReader(infoReader)); + } + + return (ResultCode)result.Value; + } + [Command(67)] public ResultCode FindSaveDataWithFilter(ServiceCtx context) { @@ -390,7 +410,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs Logger.Info?.Print(LogClass.Loader, $"Opened AddOnContent Data TitleID={titleId:X16}"); MakeObject(context, new FileSystemProxy.IStorage(aocStorage)); - + return ResultCode.Success; }