Update LibHac to 0.18.0 (#4414)
* Update LibHac to 0.18.0 * Change instance of AsBytes(CreateReadOnlySpan(...)) to AsReadOnlyByteSpan(...)
This commit is contained in:
parent
9b5a0c3889
commit
ecee34a50c
38 changed files with 161 additions and 159 deletions
|
@ -19,7 +19,7 @@
|
||||||
<PackageVersion Include="GtkSharp.Dependencies" Version="1.1.1" />
|
<PackageVersion Include="GtkSharp.Dependencies" Version="1.1.1" />
|
||||||
<PackageVersion Include="GtkSharp.Dependencies.osx" Version="0.0.5" />
|
<PackageVersion Include="GtkSharp.Dependencies.osx" Version="0.0.5" />
|
||||||
<PackageVersion Include="jp2masa.Avalonia.Flexbox" Version="0.2.0" />
|
<PackageVersion Include="jp2masa.Avalonia.Flexbox" Version="0.2.0" />
|
||||||
<PackageVersion Include="LibHac" Version="0.17.0" />
|
<PackageVersion Include="LibHac" Version="0.18.0" />
|
||||||
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" />
|
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" />
|
||||||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.4.0" />
|
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.4.0" />
|
||||||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||||
|
|
|
@ -193,7 +193,7 @@ namespace Ryujinx.Ava.Common
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
using var ncaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
pfs.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
Nca nca = new(_virtualFileSystem.KeySet, ncaFile.Get.AsStorage());
|
Nca nca = new(_virtualFileSystem.KeySet, ncaFile.Get.AsStorage());
|
||||||
if (nca.Header.ContentType == NcaContentType.Program)
|
if (nca.Header.ContentType == NcaContentType.Program)
|
||||||
|
@ -249,8 +249,8 @@ namespace Ryujinx.Ava.Common
|
||||||
using var uniqueSourceFs = new UniqueRef<IFileSystem>(ncaFileSystem);
|
using var uniqueSourceFs = new UniqueRef<IFileSystem>(ncaFileSystem);
|
||||||
using var uniqueOutputFs = new UniqueRef<IFileSystem>(new LocalFileSystem(destination));
|
using var uniqueOutputFs = new UniqueRef<IFileSystem>(new LocalFileSystem(destination));
|
||||||
|
|
||||||
fsClient.Register(source.ToU8Span(), ref uniqueSourceFs.Ref());
|
fsClient.Register(source.ToU8Span(), ref uniqueSourceFs.Ref);
|
||||||
fsClient.Register(output.ToU8Span(), ref uniqueOutputFs.Ref());
|
fsClient.Register(output.ToU8Span(), ref uniqueOutputFs.Ref);
|
||||||
|
|
||||||
(Result? resultCode, bool canceled) = CopyDirectory(fsClient, $"{source}:/", $"{output}:/", cancellationToken.Token);
|
(Result? resultCode, bool canceled) = CopyDirectory(fsClient, $"{source}:/", $"{output}:/", cancellationToken.Token);
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ namespace Ryujinx.Ava.UI.Controls
|
||||||
|
|
||||||
using var saveDataIterator = new UniqueRef<SaveDataIterator>();
|
using var saveDataIterator = new UniqueRef<SaveDataIterator>();
|
||||||
|
|
||||||
HorizonClient.Fs.OpenSaveDataIterator(ref saveDataIterator.Ref(), SaveDataSpaceId.User, in saveDataFilter).ThrowIfFailure();
|
HorizonClient.Fs.OpenSaveDataIterator(ref saveDataIterator.Ref, SaveDataSpaceId.User, in saveDataFilter).ThrowIfFailure();
|
||||||
|
|
||||||
Span<SaveDataInfo> saveDataInfo = stackalloc SaveDataInfo[10];
|
Span<SaveDataInfo> saveDataInfo = stackalloc SaveDataInfo[10];
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
{
|
{
|
||||||
using var file = new UniqueRef<IFile>();
|
using var file = new UniqueRef<IFile>();
|
||||||
|
|
||||||
romfs.OpenFile(ref file.Ref(), ("/" + item.FullPath).ToU8Span(), OpenMode.Read)
|
romfs.OpenFile(ref file.Ref, ("/" + item.FullPath).ToU8Span(), OpenMode.Read)
|
||||||
.ThrowIfFailure();
|
.ThrowIfFailure();
|
||||||
|
|
||||||
using (MemoryStream stream = new())
|
using (MemoryStream stream = new())
|
||||||
|
|
|
@ -7,8 +7,7 @@ using DynamicData;
|
||||||
using DynamicData.Binding;
|
using DynamicData.Binding;
|
||||||
using LibHac.Common;
|
using LibHac.Common;
|
||||||
using LibHac.Fs;
|
using LibHac.Fs;
|
||||||
using LibHac.FsSystem;
|
using LibHac.Tools.FsSystem.NcaUtils;
|
||||||
using LibHac.Tools.Fs;
|
|
||||||
using Ryujinx.Ava.Common;
|
using Ryujinx.Ava.Common;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.Input;
|
using Ryujinx.Ava.Input;
|
||||||
|
|
|
@ -170,7 +170,7 @@ public class TitleUpdateViewModel : BaseModel
|
||||||
|
|
||||||
using UniqueRef<IFile> nacpFile = new();
|
using UniqueRef<IFile> nacpFile = new();
|
||||||
|
|
||||||
controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None).OpenFile(ref nacpFile.Ref(), "/control.nacp".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None).OpenFile(ref nacpFile.Ref, "/control.nacp".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
nacpFile.Get.Read(out _, 0, SpanHelpers.AsByteSpan(ref controlData), ReadOption.None).ThrowIfFailure();
|
nacpFile.Get.Read(out _, 0, SpanHelpers.AsByteSpan(ref controlData), ReadOption.None).ThrowIfFailure();
|
||||||
|
|
||||||
TitleUpdates.Add(new TitleUpdateModel(controlData, path));
|
TitleUpdates.Add(new TitleUpdateModel(controlData, path));
|
||||||
|
|
|
@ -126,7 +126,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
{
|
{
|
||||||
using var file = new UniqueRef<IFile>();
|
using var file = new UniqueRef<IFile>();
|
||||||
|
|
||||||
romfs.OpenFile(ref file.Ref(), ("/" + item.FullPath).ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
romfs.OpenFile(ref file.Ref, ("/" + item.FullPath).ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
using (MemoryStream stream = new())
|
using (MemoryStream stream = new())
|
||||||
using (MemoryStream streamPng = new())
|
using (MemoryStream streamPng = new())
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using LibHac.FsSystem;
|
|
||||||
using LibHac.Ncm;
|
using LibHac.Ncm;
|
||||||
|
using LibHac.Tools.FsSystem.NcaUtils;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
using Ryujinx.Ava.UI.ViewModels;
|
||||||
|
|
|
@ -76,7 +76,7 @@ namespace Ryujinx.Ava.UI.Views.User
|
||||||
|
|
||||||
using var saveDataIterator = new UniqueRef<SaveDataIterator>();
|
using var saveDataIterator = new UniqueRef<SaveDataIterator>();
|
||||||
|
|
||||||
_horizonClient.Fs.OpenSaveDataIterator(ref saveDataIterator.Ref(), SaveDataSpaceId.User, in saveDataFilter).ThrowIfFailure();
|
_horizonClient.Fs.OpenSaveDataIterator(ref saveDataIterator.Ref, SaveDataSpaceId.User, in saveDataFilter).ThrowIfFailure();
|
||||||
|
|
||||||
Span<SaveDataInfo> saveDataInfo = stackalloc SaveDataInfo[10];
|
Span<SaveDataInfo> saveDataInfo = stackalloc SaveDataInfo[10];
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
{
|
{
|
||||||
using UniqueRef<IFile> ncaFile = new();
|
using UniqueRef<IFile> ncaFile = new();
|
||||||
|
|
||||||
partitionFileSystem.OpenFile(ref ncaFile.Ref(), downloadableContentNca.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
partitionFileSystem.OpenFile(ref ncaFile.Ref, downloadableContentNca.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
Nca nca = TryOpenNca(ncaFile.Get.AsStorage(), downloadableContentContainer.ContainerPath);
|
Nca nca = TryOpenNca(ncaFile.Get.AsStorage(), downloadableContentContainer.ContainerPath);
|
||||||
if (nca != null)
|
if (nca != null)
|
||||||
|
@ -158,7 +158,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
using var ncaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
partitionFileSystem.OpenFile(ref ncaFile.Ref(), fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
partitionFileSystem.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
Nca nca = TryOpenNca(ncaFile.Get.AsStorage(), path);
|
Nca nca = TryOpenNca(ncaFile.Get.AsStorage(), path);
|
||||||
if (nca == null)
|
if (nca == null)
|
||||||
|
|
|
@ -209,7 +209,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
using var ncaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
fs.OpenFile(ref ncaFile.Ref(), ncaPath.FullPath.ToU8Span(), OpenMode.Read);
|
fs.OpenFile(ref ncaFile.Ref, ncaPath.FullPath.ToU8Span(), OpenMode.Read);
|
||||||
var nca = new Nca(_virtualFileSystem.KeySet, ncaFile.Get.AsStorage());
|
var nca = new Nca(_virtualFileSystem.KeySet, ncaFile.Get.AsStorage());
|
||||||
if (nca.Header.ContentType != NcaContentType.Meta)
|
if (nca.Header.ContentType != NcaContentType.Meta)
|
||||||
{
|
{
|
||||||
|
@ -221,7 +221,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
using var pfs0 = nca.OpenFileSystem(0, integrityCheckLevel);
|
using var pfs0 = nca.OpenFileSystem(0, integrityCheckLevel);
|
||||||
using var cnmtFile = new UniqueRef<IFile>();
|
using var cnmtFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
pfs0.OpenFile(ref cnmtFile.Ref(), pfs0.EnumerateEntries().Single().FullPath.ToU8Span(), OpenMode.Read);
|
pfs0.OpenFile(ref cnmtFile.Ref, pfs0.EnumerateEntries().Single().FullPath.ToU8Span(), OpenMode.Read);
|
||||||
|
|
||||||
var cnmt = new Cnmt(cnmtFile.Get.AsStream());
|
var cnmt = new Cnmt(cnmtFile.Get.AsStream());
|
||||||
if (cnmt.Type != ContentMetaType.AddOnContent || (cnmt.TitleId & 0xFFFFFFFFFFFFE000) != aocBaseId)
|
if (cnmt.Type != ContentMetaType.AddOnContent || (cnmt.TitleId & 0xFFFFFFFFFFFFE000) != aocBaseId)
|
||||||
|
@ -276,11 +276,11 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
{
|
{
|
||||||
case ".xci":
|
case ".xci":
|
||||||
pfs = new Xci(_virtualFileSystem.KeySet, file.AsStorage()).OpenPartition(XciPartitionType.Secure);
|
pfs = new Xci(_virtualFileSystem.KeySet, file.AsStorage()).OpenPartition(XciPartitionType.Secure);
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), aoc.NcaPath.ToU8Span(), OpenMode.Read);
|
pfs.OpenFile(ref ncaFile.Ref, aoc.NcaPath.ToU8Span(), OpenMode.Read);
|
||||||
break;
|
break;
|
||||||
case ".nsp":
|
case ".nsp":
|
||||||
pfs = new PartitionFileSystem(file.AsStorage());
|
pfs = new PartitionFileSystem(file.AsStorage());
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), aoc.NcaPath.ToU8Span(), OpenMode.Read);
|
pfs.OpenFile(ref ncaFile.Ref, aoc.NcaPath.ToU8Span(), OpenMode.Read);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return false; // Print error?
|
return false; // Print error?
|
||||||
|
@ -625,11 +625,11 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
if (filesystem.FileExists($"{path}/00"))
|
if (filesystem.FileExists($"{path}/00"))
|
||||||
{
|
{
|
||||||
filesystem.OpenFile(ref file.Ref(), $"{path}/00".ToU8Span(), mode);
|
filesystem.OpenFile(ref file.Ref, $"{path}/00".ToU8Span(), mode);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
filesystem.OpenFile(ref file.Ref(), path.ToU8Span(), mode);
|
filesystem.OpenFile(ref file.Ref, path.ToU8Span(), mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
return file.Release();
|
return file.Release();
|
||||||
|
@ -751,7 +751,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
using var metaFile = new UniqueRef<IFile>();
|
using var metaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
if (fs.OpenFile(ref metaFile.Ref(), cnmtPath.ToU8Span(), OpenMode.Read).IsSuccess())
|
if (fs.OpenFile(ref metaFile.Ref, cnmtPath.ToU8Span(), OpenMode.Read).IsSuccess())
|
||||||
{
|
{
|
||||||
var meta = new Cnmt(metaFile.Get.AsStream());
|
var meta = new Cnmt(metaFile.Get.AsStream());
|
||||||
|
|
||||||
|
@ -781,7 +781,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
using var systemVersionFile = new UniqueRef<IFile>();
|
using var systemVersionFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
if (romfs.OpenFile(ref systemVersionFile.Ref(), "/file".ToU8Span(), OpenMode.Read).IsSuccess())
|
if (romfs.OpenFile(ref systemVersionFile.Ref, "/file".ToU8Span(), OpenMode.Read).IsSuccess())
|
||||||
{
|
{
|
||||||
systemVersion = new SystemVersion(systemVersionFile.Get.AsStream());
|
systemVersion = new SystemVersion(systemVersionFile.Get.AsStream());
|
||||||
}
|
}
|
||||||
|
@ -820,7 +820,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
using var metaFile = new UniqueRef<IFile>();
|
using var metaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
if (fs.OpenFile(ref metaFile.Ref(), cnmtPath.ToU8Span(), OpenMode.Read).IsSuccess())
|
if (fs.OpenFile(ref metaFile.Ref, cnmtPath.ToU8Span(), OpenMode.Read).IsSuccess())
|
||||||
{
|
{
|
||||||
var meta = new Cnmt(metaFile.Get.AsStream());
|
var meta = new Cnmt(metaFile.Get.AsStream());
|
||||||
|
|
||||||
|
@ -891,7 +891,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
using var metaFile = new UniqueRef<IFile>();
|
using var metaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
if (fs.OpenFile(ref metaFile.Ref(), cnmtPath.ToU8Span(), OpenMode.Read).IsSuccess())
|
if (fs.OpenFile(ref metaFile.Ref, cnmtPath.ToU8Span(), OpenMode.Read).IsSuccess())
|
||||||
{
|
{
|
||||||
var meta = new Cnmt(metaFile.Get.AsStream());
|
var meta = new Cnmt(metaFile.Get.AsStream());
|
||||||
|
|
||||||
|
@ -909,7 +909,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
using var systemVersionFile = new UniqueRef<IFile>();
|
using var systemVersionFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
if (romfs.OpenFile(ref systemVersionFile.Ref(), "/file".ToU8Span(), OpenMode.Read).IsSuccess())
|
if (romfs.OpenFile(ref systemVersionFile.Ref, "/file".ToU8Span(), OpenMode.Read).IsSuccess())
|
||||||
{
|
{
|
||||||
systemVersion = new SystemVersion(systemVersionFile.Get.AsStream());
|
systemVersion = new SystemVersion(systemVersionFile.Get.AsStream());
|
||||||
}
|
}
|
||||||
|
@ -960,7 +960,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
using var metaFile = new UniqueRef<IFile>();
|
using var metaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
if (fs.OpenFile(ref metaFile.Ref(), cnmtPath.ToU8Span(), OpenMode.Read).IsSuccess())
|
if (fs.OpenFile(ref metaFile.Ref, cnmtPath.ToU8Span(), OpenMode.Read).IsSuccess())
|
||||||
{
|
{
|
||||||
var meta = new Cnmt(metaFile.Get.AsStream());
|
var meta = new Cnmt(metaFile.Get.AsStream());
|
||||||
|
|
||||||
|
@ -1030,7 +1030,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
using var systemVersionFile = new UniqueRef<IFile>();
|
using var systemVersionFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
if (romfs.OpenFile(ref systemVersionFile.Ref(), "/file".ToU8Span(), OpenMode.Read).IsSuccess())
|
if (romfs.OpenFile(ref systemVersionFile.Ref, "/file".ToU8Span(), OpenMode.Read).IsSuccess())
|
||||||
{
|
{
|
||||||
return new SystemVersion(systemVersionFile.Get.AsStream());
|
return new SystemVersion(systemVersionFile.Get.AsStream());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using LibHac.FsSystem;
|
using LibHac.Tools.FsSystem.NcaUtils;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.FileSystem
|
namespace Ryujinx.HLE.FileSystem
|
||||||
{
|
{
|
||||||
|
|
|
@ -260,15 +260,16 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
{
|
{
|
||||||
using var ticketFile = new UniqueRef<IFile>();
|
using var ticketFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
Result result = fs.OpenFile(ref ticketFile.Ref(), ticketEntry.FullPath.ToU8Span(), OpenMode.Read);
|
Result result = fs.OpenFile(ref ticketFile.Ref, ticketEntry.FullPath.ToU8Span(), OpenMode.Read);
|
||||||
|
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
Ticket ticket = new Ticket(ticketFile.Get.AsStream());
|
Ticket ticket = new Ticket(ticketFile.Get.AsStream());
|
||||||
|
var titleKey = ticket.GetTitleKey(KeySet);
|
||||||
|
|
||||||
if (ticket.TitleKeyType == TitleKeyType.Common)
|
if (titleKey != null)
|
||||||
{
|
{
|
||||||
KeySet.ExternalKeySet.Add(new RightsId(ticket.RightsId), new AccessKey(ticket.GetTitleKey(KeySet)));
|
KeySet.ExternalKeySet.Add(new RightsId(ticket.RightsId), new AccessKey(titleKey));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -302,7 +303,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
using var iterator = new UniqueRef<SaveDataIterator>();
|
using var iterator = new UniqueRef<SaveDataIterator>();
|
||||||
|
|
||||||
Result rc = hos.Fs.OpenSaveDataIterator(ref iterator.Ref(), spaceId);
|
Result rc = hos.Fs.OpenSaveDataIterator(ref iterator.Ref, spaceId);
|
||||||
if (rc.IsFailure()) return rc;
|
if (rc.IsFailure()) return rc;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
|
|
|
@ -122,7 +122,7 @@ namespace Ryujinx.HLE.HOS.Applets.Error
|
||||||
{
|
{
|
||||||
using var binaryFile = new UniqueRef<IFile>();
|
using var binaryFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
romfs.OpenFile(ref binaryFile.Ref(), filePath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
romfs.OpenFile(ref binaryFile.Ref, filePath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
StreamReader reader = new StreamReader(binaryFile.Get.AsStream(), Encoding.Unicode);
|
StreamReader reader = new StreamReader(binaryFile.Get.AsStream(), Encoding.Unicode);
|
||||||
|
|
||||||
return CleanText(reader.ReadToEnd());
|
return CleanText(reader.ReadToEnd());
|
||||||
|
|
|
@ -110,7 +110,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
using var ncaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
pfs.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
Nca nca = new Nca(fileSystem.KeySet, ncaFile.Release().AsStorage());
|
Nca nca = new Nca(fileSystem.KeySet, ncaFile.Release().AsStorage());
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
using var ncaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
pfs.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
Nca nca = new Nca(fileSystem.KeySet, ncaFile.Release().AsStorage());
|
Nca nca = new Nca(fileSystem.KeySet, ncaFile.Release().AsStorage());
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
using var npdmFile = new UniqueRef<IFile>();
|
using var npdmFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
Result result = codeFs.OpenFile(ref npdmFile.Ref(), "/main.npdm".ToU8Span(), OpenMode.Read);
|
Result result = codeFs.OpenFile(ref npdmFile.Ref, "/main.npdm".ToU8Span(), OpenMode.Read);
|
||||||
|
|
||||||
MetaLoader metaData;
|
MetaLoader metaData;
|
||||||
|
|
||||||
|
@ -356,7 +356,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
using var nsoFile = new UniqueRef<IFile>();
|
using var nsoFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
codeFs.OpenFile(ref nsoFile.Ref(), $"/{name}".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
codeFs.OpenFile(ref nsoFile.Ref, $"/{name}".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
nsos[i] = new NsoExecutable(nsoFile.Release().AsStorage(), name);
|
nsos[i] = new NsoExecutable(nsoFile.Release().AsStorage(), name);
|
||||||
}
|
}
|
||||||
|
@ -371,10 +371,10 @@ namespace Ryujinx.HLE.HOS
|
||||||
ProgramInfo programInfo = new ProgramInfo(in npdm, displayVersion, usePtc, allowCodeMemoryForJit: false);
|
ProgramInfo programInfo = new ProgramInfo(in npdm, displayVersion, usePtc, allowCodeMemoryForJit: false);
|
||||||
ProgramLoader.LoadNsos(_device.System.KernelContext, metaData, programInfo, executables: programs);
|
ProgramLoader.LoadNsos(_device.System.KernelContext, metaData, programInfo, executables: programs);
|
||||||
|
|
||||||
string titleIdText = npdm.Aci.Value.ProgramId.Value.ToString("x16");
|
string titleIdText = npdm.Aci.ProgramId.Value.ToString("x16");
|
||||||
bool titleIs64Bit = (npdm.Meta.Value.Flags & 1) != 0;
|
bool titleIs64Bit = (npdm.Meta.Flags & 1) != 0;
|
||||||
|
|
||||||
string programName = Encoding.ASCII.GetString(npdm.Meta.Value.ProgramName).TrimEnd('\0');
|
string programName = Encoding.ASCII.GetString(npdm.Meta.ProgramName).TrimEnd('\0');
|
||||||
|
|
||||||
Logger.Info?.Print(LogClass.Loader, $"Service Loaded: {programName} [{titleIdText}] [{(titleIs64Bit ? "64-bit" : "32-bit")}]");
|
Logger.Info?.Print(LogClass.Loader, $"Service Loaded: {programName} [{titleIdText}] [{(titleIs64Bit ? "64-bit" : "32-bit")}]");
|
||||||
}
|
}
|
||||||
|
@ -520,7 +520,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
{
|
{
|
||||||
using var npdmFile = new UniqueRef<IFile>();
|
using var npdmFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
Result result = fs.OpenFile(ref npdmFile.Ref(), "/main.npdm".ToU8Span(), OpenMode.Read);
|
Result result = fs.OpenFile(ref npdmFile.Ref, "/main.npdm".ToU8Span(), OpenMode.Read);
|
||||||
|
|
||||||
MetaLoader metaData;
|
MetaLoader metaData;
|
||||||
|
|
||||||
|
@ -543,8 +543,8 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
metaData.GetNpdm(out var npdm).ThrowIfFailure();
|
metaData.GetNpdm(out var npdm).ThrowIfFailure();
|
||||||
|
|
||||||
TitleId = npdm.Aci.Value.ProgramId.Value;
|
TitleId = npdm.Aci.ProgramId.Value;
|
||||||
TitleIs64Bit = (npdm.Meta.Value.Flags & 1) != 0;
|
TitleIs64Bit = (npdm.Meta.Flags & 1) != 0;
|
||||||
_device.System.LibHacHorizonManager.ArpIReader.ApplicationId = new LibHac.ApplicationId(TitleId);
|
_device.System.LibHacHorizonManager.ArpIReader.ApplicationId = new LibHac.ApplicationId(TitleId);
|
||||||
|
|
||||||
return metaData;
|
return metaData;
|
||||||
|
@ -555,7 +555,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
using var controlFile = new UniqueRef<IFile>();
|
using var controlFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
IFileSystem controlFs = controlNca.OpenFileSystem(NcaSectionType.Data, device.System.FsIntegrityCheckLevel);
|
IFileSystem controlFs = controlNca.OpenFileSystem(NcaSectionType.Data, device.System.FsIntegrityCheckLevel);
|
||||||
Result result = controlFs.OpenFile(ref controlFile.Ref(), "/control.nacp".ToU8Span(), OpenMode.Read);
|
Result result = controlFs.OpenFile(ref controlFile.Ref, "/control.nacp".ToU8Span(), OpenMode.Read);
|
||||||
|
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
|
@ -603,7 +603,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
using var nsoFile = new UniqueRef<IFile>();
|
using var nsoFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
codeFs.OpenFile(ref nsoFile.Ref(), $"/{name}".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
codeFs.OpenFile(ref nsoFile.Ref, $"/{name}".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
nsos[i] = new NsoExecutable(nsoFile.Release().AsStorage(), name);
|
nsos[i] = new NsoExecutable(nsoFile.Release().AsStorage(), name);
|
||||||
}
|
}
|
||||||
|
@ -752,7 +752,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
_titleName = programInfo.Name;
|
_titleName = programInfo.Name;
|
||||||
TitleId = programInfo.ProgramId;
|
TitleId = programInfo.ProgramId;
|
||||||
TitleIs64Bit = (npdm.Meta.Value.Flags & 1) != 0;
|
TitleIs64Bit = (npdm.Meta.Flags & 1) != 0;
|
||||||
_device.System.LibHacHorizonManager.ArpIReader.ApplicationId = new LibHac.ApplicationId(TitleId);
|
_device.System.LibHacHorizonManager.ArpIReader.ApplicationId = new LibHac.ApplicationId(TitleId);
|
||||||
|
|
||||||
// Explicitly null titleid to disable the shader cache.
|
// Explicitly null titleid to disable the shader cache.
|
||||||
|
@ -798,7 +798,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
using var ncaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
pfs.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
Nca nca = new Nca(fileSystem.KeySet, ncaFile.Release().AsStorage());
|
Nca nca = new Nca(fileSystem.KeySet, ncaFile.Release().AsStorage());
|
||||||
|
|
||||||
|
|
|
@ -475,7 +475,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
{
|
{
|
||||||
using var file = new UniqueRef<IFile>();
|
using var file = new UniqueRef<IFile>();
|
||||||
|
|
||||||
baseRom.OpenFile(ref file.Ref(), entry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
baseRom.OpenFile(ref file.Ref, entry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
builder.AddFile(entry.FullPath, file.Release());
|
builder.AddFile(entry.FullPath, file.Release());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -494,7 +494,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
{
|
{
|
||||||
using var file = new UniqueRef<IFile>();
|
using var file = new UniqueRef<IFile>();
|
||||||
|
|
||||||
fs.OpenFile(ref file.Ref(), entry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
fs.OpenFile(ref file.Ref, entry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
if (fileSet.Add(entry.FullPath))
|
if (fileSet.Add(entry.FullPath))
|
||||||
{
|
{
|
||||||
builder.AddFile(entry.FullPath, file.Release());
|
builder.AddFile(entry.FullPath, file.Release());
|
||||||
|
|
|
@ -28,9 +28,9 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
public ProgramInfo(in Npdm npdm, string displayVersion, bool diskCacheEnabled, bool allowCodeMemoryForJit)
|
public ProgramInfo(in Npdm npdm, string displayVersion, bool diskCacheEnabled, bool allowCodeMemoryForJit)
|
||||||
{
|
{
|
||||||
ulong programId = npdm.Aci.Value.ProgramId.Value;
|
ulong programId = npdm.Aci.ProgramId.Value;
|
||||||
|
|
||||||
Name = StringUtils.Utf8ZToString(npdm.Meta.Value.ProgramName);
|
Name = StringUtils.Utf8ZToString(npdm.Meta.ProgramName);
|
||||||
ProgramId = programId;
|
ProgramId = programId;
|
||||||
TitleIdText = programId.ToString("x16");
|
TitleIdText = programId.ToString("x16");
|
||||||
DisplayVersion = displayVersion;
|
DisplayVersion = displayVersion;
|
||||||
|
@ -193,7 +193,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
return ProgramLoadResult.Failed;
|
return ProgramLoadResult.Failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
ref readonly var meta = ref npdm.Meta.Value;
|
ref readonly var meta = ref npdm.Meta;
|
||||||
|
|
||||||
ulong argsStart = 0;
|
ulong argsStart = 0;
|
||||||
uint argsSize = 0;
|
uint argsSize = 0;
|
||||||
|
@ -298,7 +298,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
KProcess process = new KProcess(context, programInfo.AllowCodeMemoryForJit);
|
KProcess process = new KProcess(context, programInfo.AllowCodeMemoryForJit);
|
||||||
|
|
||||||
MemoryRegion memoryRegion = (MemoryRegion)((npdm.Acid.Value.Flags >> 2) & 0xf);
|
MemoryRegion memoryRegion = (MemoryRegion)((npdm.Acid.Flags >> 2) & 0xf);
|
||||||
|
|
||||||
if (memoryRegion > MemoryRegion.NvServices)
|
if (memoryRegion > MemoryRegion.NvServices)
|
||||||
{
|
{
|
||||||
|
|
|
@ -183,7 +183,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
||||||
|
|
||||||
using var saveDataIterator = new UniqueRef<SaveDataIterator>();
|
using var saveDataIterator = new UniqueRef<SaveDataIterator>();
|
||||||
|
|
||||||
_horizonClient.Fs.OpenSaveDataIterator(ref saveDataIterator.Ref(), SaveDataSpaceId.User, in saveDataFilter).ThrowIfFailure();
|
_horizonClient.Fs.OpenSaveDataIterator(ref saveDataIterator.Ref, SaveDataSpaceId.User, in saveDataFilter).ThrowIfFailure();
|
||||||
|
|
||||||
Span<SaveDataInfo> saveDataInfo = stackalloc SaveDataInfo[10];
|
Span<SaveDataInfo> saveDataInfo = stackalloc SaveDataInfo[10];
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
using LibHac.Account;
|
using LibHac.Account;
|
||||||
using LibHac.Common;
|
using LibHac.Common;
|
||||||
using LibHac.Fs;
|
using LibHac.Fs;
|
||||||
using LibHac.FsSystem;
|
|
||||||
using LibHac.Ncm;
|
using LibHac.Ncm;
|
||||||
using LibHac.Ns;
|
using LibHac.Ns;
|
||||||
|
using LibHac.Tools.FsSystem.NcaUtils;
|
||||||
using Ryujinx.Common;
|
using Ryujinx.Common;
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.Exceptions;
|
using Ryujinx.HLE.Exceptions;
|
||||||
|
|
|
@ -54,11 +54,11 @@ namespace Ryujinx.HLE.HOS.Services.Bcat
|
||||||
|
|
||||||
using var serv = new SharedRef<LibHac.Bcat.Impl.Ipc.IDeliveryCacheStorageService>();
|
using var serv = new SharedRef<LibHac.Bcat.Impl.Ipc.IDeliveryCacheStorageService>();
|
||||||
|
|
||||||
Result rc = _base.Get.CreateDeliveryCacheStorageService(ref serv.Ref(), pid);
|
Result rc = _base.Get.CreateDeliveryCacheStorageService(ref serv.Ref, pid);
|
||||||
|
|
||||||
if (rc.IsSuccess())
|
if (rc.IsSuccess())
|
||||||
{
|
{
|
||||||
MakeObject(context, new IDeliveryCacheStorageService(context, ref serv.Ref()));
|
MakeObject(context, new IDeliveryCacheStorageService(context, ref serv.Ref));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ResultCode)rc.Value;
|
return (ResultCode)rc.Value;
|
||||||
|
@ -72,11 +72,11 @@ namespace Ryujinx.HLE.HOS.Services.Bcat
|
||||||
|
|
||||||
using var service = new SharedRef<LibHac.Bcat.Impl.Ipc.IDeliveryCacheStorageService>();
|
using var service = new SharedRef<LibHac.Bcat.Impl.Ipc.IDeliveryCacheStorageService>();
|
||||||
|
|
||||||
Result rc = _base.Get.CreateDeliveryCacheStorageServiceWithApplicationId(ref service.Ref(), applicationId);
|
Result rc = _base.Get.CreateDeliveryCacheStorageServiceWithApplicationId(ref service.Ref, applicationId);
|
||||||
|
|
||||||
if (rc.IsSuccess())
|
if (rc.IsSuccess())
|
||||||
{
|
{
|
||||||
MakeObject(context, new IDeliveryCacheStorageService(context, ref service.Ref()));
|
MakeObject(context, new IDeliveryCacheStorageService(context, ref service.Ref));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ResultCode)rc.Value;
|
return (ResultCode)rc.Value;
|
||||||
|
|
|
@ -20,11 +20,11 @@ namespace Ryujinx.HLE.HOS.Services.Bcat.ServiceCreator
|
||||||
{
|
{
|
||||||
using var service = new SharedRef<LibHac.Bcat.Impl.Ipc.IDeliveryCacheFileService>();
|
using var service = new SharedRef<LibHac.Bcat.Impl.Ipc.IDeliveryCacheFileService>();
|
||||||
|
|
||||||
Result result = _base.Get.CreateFileService(ref service.Ref());
|
Result result = _base.Get.CreateFileService(ref service.Ref);
|
||||||
|
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
MakeObject(context, new IDeliveryCacheFileService(ref service.Ref()));
|
MakeObject(context, new IDeliveryCacheFileService(ref service.Ref));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ResultCode)result.Value;
|
return (ResultCode)result.Value;
|
||||||
|
@ -36,11 +36,11 @@ namespace Ryujinx.HLE.HOS.Services.Bcat.ServiceCreator
|
||||||
{
|
{
|
||||||
using var service = new SharedRef<LibHac.Bcat.Impl.Ipc.IDeliveryCacheDirectoryService>();
|
using var service = new SharedRef<LibHac.Bcat.Impl.Ipc.IDeliveryCacheDirectoryService>();
|
||||||
|
|
||||||
Result result = _base.Get.CreateDirectoryService(ref service.Ref());
|
Result result = _base.Get.CreateDirectoryService(ref service.Ref);
|
||||||
|
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
MakeObject(context, new IDeliveryCacheDirectoryService(ref service.Ref()));
|
MakeObject(context, new IDeliveryCacheDirectoryService(ref service.Ref));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ResultCode)result.Value;
|
return (ResultCode)result.Value;
|
||||||
|
|
|
@ -30,9 +30,9 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
|
||||||
|
|
||||||
ImportTitleKeysFromNsp(nsp.Get, context.Device.System.KeySet);
|
ImportTitleKeysFromNsp(nsp.Get, context.Device.System.KeySet);
|
||||||
|
|
||||||
using SharedRef<LibHac.FsSrv.Sf.IFileSystem> adapter = FileSystemInterfaceAdapter.CreateShared(ref nsp.Ref(), true);
|
using SharedRef<LibHac.FsSrv.Sf.IFileSystem> adapter = FileSystemInterfaceAdapter.CreateShared(ref nsp.Ref, true);
|
||||||
|
|
||||||
openedFileSystem = new IFileSystem(ref adapter.Ref());
|
openedFileSystem = new IFileSystem(ref adapter.Ref);
|
||||||
}
|
}
|
||||||
catch (HorizonResultException ex)
|
catch (HorizonResultException ex)
|
||||||
{
|
{
|
||||||
|
@ -58,9 +58,9 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
|
||||||
LibHac.Fs.Fsa.IFileSystem fileSystem = nca.OpenFileSystem(NcaSectionType.Data, context.Device.System.FsIntegrityCheckLevel);
|
LibHac.Fs.Fsa.IFileSystem fileSystem = nca.OpenFileSystem(NcaSectionType.Data, context.Device.System.FsIntegrityCheckLevel);
|
||||||
using var sharedFs = new SharedRef<LibHac.Fs.Fsa.IFileSystem>(fileSystem);
|
using var sharedFs = new SharedRef<LibHac.Fs.Fsa.IFileSystem>(fileSystem);
|
||||||
|
|
||||||
using SharedRef<LibHac.FsSrv.Sf.IFileSystem> adapter = FileSystemInterfaceAdapter.CreateShared(ref sharedFs.Ref(), true);
|
using SharedRef<LibHac.FsSrv.Sf.IFileSystem> adapter = FileSystemInterfaceAdapter.CreateShared(ref sharedFs.Ref, true);
|
||||||
|
|
||||||
openedFileSystem = new IFileSystem(ref adapter.Ref());
|
openedFileSystem = new IFileSystem(ref adapter.Ref);
|
||||||
}
|
}
|
||||||
catch (HorizonResultException ex)
|
catch (HorizonResultException ex)
|
||||||
{
|
{
|
||||||
|
@ -98,7 +98,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
|
||||||
|
|
||||||
using var ncaFile = new UniqueRef<LibHac.Fs.Fsa.IFile>();
|
using var ncaFile = new UniqueRef<LibHac.Fs.Fsa.IFile>();
|
||||||
|
|
||||||
Result result = nsp.OpenFile(ref ncaFile.Ref(), filename.ToU8Span(), OpenMode.Read);
|
Result result = nsp.OpenFile(ref ncaFile.Ref, filename.ToU8Span(), OpenMode.Read);
|
||||||
if (result.IsFailure())
|
if (result.IsFailure())
|
||||||
{
|
{
|
||||||
return (ResultCode)result.Value;
|
return (ResultCode)result.Value;
|
||||||
|
@ -121,13 +121,17 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
|
||||||
{
|
{
|
||||||
using var ticketFile = new UniqueRef<LibHac.Fs.Fsa.IFile>();
|
using var ticketFile = new UniqueRef<LibHac.Fs.Fsa.IFile>();
|
||||||
|
|
||||||
Result result = nsp.OpenFile(ref ticketFile.Ref(), ticketEntry.FullPath.ToU8Span(), OpenMode.Read);
|
Result result = nsp.OpenFile(ref ticketFile.Ref, ticketEntry.FullPath.ToU8Span(), OpenMode.Read);
|
||||||
|
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
Ticket ticket = new Ticket(ticketFile.Get.AsStream());
|
Ticket ticket = new Ticket(ticketFile.Get.AsStream());
|
||||||
|
var titleKey = ticket.GetTitleKey(keySet);
|
||||||
|
|
||||||
keySet.ExternalKeySet.Add(new RightsId(ticket.RightsId), new AccessKey(ticket.GetTitleKey(keySet)));
|
if (titleKey != null)
|
||||||
|
{
|
||||||
|
keySet.ExternalKeySet.Add(new RightsId(ticket.RightsId), new AccessKey(titleKey));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,11 +111,11 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
|
||||||
ref readonly Path name = ref FileSystemProxyHelper.GetSfPath(context);
|
ref readonly Path name = ref FileSystemProxyHelper.GetSfPath(context);
|
||||||
using var file = new SharedRef<LibHac.FsSrv.Sf.IFile>();
|
using var file = new SharedRef<LibHac.FsSrv.Sf.IFile>();
|
||||||
|
|
||||||
Result result = _fileSystem.Get.OpenFile(ref file.Ref(), in name, mode);
|
Result result = _fileSystem.Get.OpenFile(ref file.Ref, in name, mode);
|
||||||
|
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
IFile fileInterface = new IFile(ref file.Ref());
|
IFile fileInterface = new IFile(ref file.Ref);
|
||||||
|
|
||||||
MakeObject(context, fileInterface);
|
MakeObject(context, fileInterface);
|
||||||
}
|
}
|
||||||
|
@ -132,11 +132,11 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
|
||||||
ref readonly Path name = ref FileSystemProxyHelper.GetSfPath(context);
|
ref readonly Path name = ref FileSystemProxyHelper.GetSfPath(context);
|
||||||
using var dir = new SharedRef<LibHac.FsSrv.Sf.IDirectory>();
|
using var dir = new SharedRef<LibHac.FsSrv.Sf.IDirectory>();
|
||||||
|
|
||||||
Result result = _fileSystem.Get.OpenDirectory(ref dir.Ref(), name, mode);
|
Result result = _fileSystem.Get.OpenDirectory(ref dir.Ref, name, mode);
|
||||||
|
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
IDirectory dirInterface = new IDirectory(ref dir.Ref());
|
IDirectory dirInterface = new IDirectory(ref dir.Ref);
|
||||||
|
|
||||||
MakeObject(context, dirInterface);
|
MakeObject(context, dirInterface);
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,10 +109,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
ref readonly var path = ref FileSystemProxyHelper.GetFspPath(context);
|
ref readonly var path = ref FileSystemProxyHelper.GetFspPath(context);
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenBisFileSystem(ref fileSystem.Ref(), in path, bisPartitionId);
|
Result result = _baseFileSystemProxy.Get.OpenBisFileSystem(ref fileSystem.Ref, in path, bisPartitionId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -124,10 +124,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
BisPartitionId bisPartitionId = (BisPartitionId)context.RequestData.ReadInt32();
|
BisPartitionId bisPartitionId = (BisPartitionId)context.RequestData.ReadInt32();
|
||||||
using var storage = new SharedRef<IStorage>();
|
using var storage = new SharedRef<IStorage>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenBisStorage(ref storage.Ref(), bisPartitionId);
|
Result result = _baseFileSystemProxy.Get.OpenBisStorage(ref storage.Ref, bisPartitionId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IStorage(ref storage.Ref()));
|
MakeObject(context, new FileSystemProxy.IStorage(ref storage.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -145,10 +145,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
{
|
{
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenSdCardFileSystem(ref fileSystem.Ref());
|
Result result = _baseFileSystemProxy.Get.OpenSdCardFileSystem(ref fileSystem.Ref);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -247,10 +247,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
GameCardPartitionRaw partitionId = (GameCardPartitionRaw)context.RequestData.ReadInt32();
|
GameCardPartitionRaw partitionId = (GameCardPartitionRaw)context.RequestData.ReadInt32();
|
||||||
using var storage = new SharedRef<IStorage>();
|
using var storage = new SharedRef<IStorage>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenGameCardStorage(ref storage.Ref(), handle, partitionId);
|
Result result = _baseFileSystemProxy.Get.OpenGameCardStorage(ref storage.Ref, handle, partitionId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IStorage(ref storage.Ref()));
|
MakeObject(context, new FileSystemProxy.IStorage(ref storage.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -263,10 +263,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
GameCardPartition partitionId = (GameCardPartition)context.RequestData.ReadInt32();
|
GameCardPartition partitionId = (GameCardPartition)context.RequestData.ReadInt32();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenGameCardFileSystem(ref fileSystem.Ref(), handle, partitionId);
|
Result result = _baseFileSystemProxy.Get.OpenGameCardFileSystem(ref fileSystem.Ref, handle, partitionId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -338,10 +338,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
SaveDataAttribute attribute = context.RequestData.ReadStruct<SaveDataAttribute>();
|
SaveDataAttribute attribute = context.RequestData.ReadStruct<SaveDataAttribute>();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenSaveDataFileSystem(ref fileSystem.Ref(), spaceId, in attribute);
|
Result result = _baseFileSystemProxy.Get.OpenSaveDataFileSystem(ref fileSystem.Ref, spaceId, in attribute);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -354,10 +354,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
SaveDataAttribute attribute = context.RequestData.ReadStruct<SaveDataAttribute>();
|
SaveDataAttribute attribute = context.RequestData.ReadStruct<SaveDataAttribute>();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenSaveDataFileSystemBySystemSaveDataId(ref fileSystem.Ref(), spaceId, in attribute);
|
Result result = _baseFileSystemProxy.Get.OpenSaveDataFileSystemBySystemSaveDataId(ref fileSystem.Ref, spaceId, in attribute);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -370,10 +370,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
SaveDataAttribute attribute = context.RequestData.ReadStruct<SaveDataAttribute>();
|
SaveDataAttribute attribute = context.RequestData.ReadStruct<SaveDataAttribute>();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenReadOnlySaveDataFileSystem(ref fileSystem.Ref(), spaceId, in attribute);
|
Result result = _baseFileSystemProxy.Get.OpenReadOnlySaveDataFileSystem(ref fileSystem.Ref, spaceId, in attribute);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -432,10 +432,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
{
|
{
|
||||||
using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>();
|
using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReader(ref infoReader.Ref());
|
Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReader(ref infoReader.Ref);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref()));
|
MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -447,10 +447,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
SaveDataSpaceId spaceId = (SaveDataSpaceId)context.RequestData.ReadByte();
|
SaveDataSpaceId spaceId = (SaveDataSpaceId)context.RequestData.ReadByte();
|
||||||
using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>();
|
using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReaderBySaveDataSpaceId(ref infoReader.Ref(), spaceId);
|
Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReaderBySaveDataSpaceId(ref infoReader.Ref, spaceId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref()));
|
MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -461,10 +461,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
{
|
{
|
||||||
using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>();
|
using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReaderOnlyCacheStorage(ref infoReader.Ref());
|
Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReaderOnlyCacheStorage(ref infoReader.Ref);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref()));
|
MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -477,10 +477,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
ulong saveDataId = context.RequestData.ReadUInt64();
|
ulong saveDataId = context.RequestData.ReadUInt64();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenSaveDataInternalStorageFileSystem(ref fileSystem.Ref(), spaceId, saveDataId);
|
Result result = _baseFileSystemProxy.Get.OpenSaveDataInternalStorageFileSystem(ref fileSystem.Ref, spaceId, saveDataId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -537,10 +537,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
SaveDataFilter filter = context.RequestData.ReadStruct<SaveDataFilter>();
|
SaveDataFilter filter = context.RequestData.ReadStruct<SaveDataFilter>();
|
||||||
using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>();
|
using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReaderWithFilter(ref infoReader.Ref(), spaceId, in filter);
|
Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReaderWithFilter(ref infoReader.Ref, spaceId, in filter);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref()));
|
MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -605,10 +605,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
SaveDataAttribute attribute = context.RequestData.ReadStruct<SaveDataAttribute>();
|
SaveDataAttribute attribute = context.RequestData.ReadStruct<SaveDataAttribute>();
|
||||||
using var file = new SharedRef<LibHac.FsSrv.Sf.IFile>();
|
using var file = new SharedRef<LibHac.FsSrv.Sf.IFile>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenSaveDataMetaFile(ref file.Ref(), spaceId, in attribute, metaType);
|
Result result = _baseFileSystemProxy.Get.OpenSaveDataMetaFile(ref file.Ref, spaceId, in attribute, metaType);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new IFile(ref file.Ref()));
|
MakeObject(context, new IFile(ref file.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -637,10 +637,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
ImageDirectoryId directoryId = (ImageDirectoryId)context.RequestData.ReadInt32();
|
ImageDirectoryId directoryId = (ImageDirectoryId)context.RequestData.ReadInt32();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenImageDirectoryFileSystem(ref fileSystem.Ref(), directoryId);
|
Result result = _baseFileSystemProxy.Get.OpenImageDirectoryFileSystem(ref fileSystem.Ref, directoryId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -651,10 +651,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
BaseFileSystemId fileSystemId = (BaseFileSystemId)context.RequestData.ReadInt32();
|
BaseFileSystemId fileSystemId = (BaseFileSystemId)context.RequestData.ReadInt32();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenBaseFileSystem(ref fileSystem.Ref(), fileSystemId);
|
Result result = _baseFileSystemProxy.Get.OpenBaseFileSystem(ref fileSystem.Ref, fileSystemId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -665,10 +665,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
ContentStorageId contentStorageId = (ContentStorageId)context.RequestData.ReadInt32();
|
ContentStorageId contentStorageId = (ContentStorageId)context.RequestData.ReadInt32();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenContentStorageFileSystem(ref fileSystem.Ref(), contentStorageId);
|
Result result = _baseFileSystemProxy.Get.OpenContentStorageFileSystem(ref fileSystem.Ref, contentStorageId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -679,10 +679,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
CloudBackupWorkStorageId storageId = (CloudBackupWorkStorageId)context.RequestData.ReadInt32();
|
CloudBackupWorkStorageId storageId = (CloudBackupWorkStorageId)context.RequestData.ReadInt32();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenCloudBackupWorkStorageFileSystem(ref fileSystem.Ref(), storageId);
|
Result result = _baseFileSystemProxy.Get.OpenCloudBackupWorkStorageFileSystem(ref fileSystem.Ref, storageId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -693,10 +693,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
CustomStorageId customStorageId = (CustomStorageId)context.RequestData.ReadInt32();
|
CustomStorageId customStorageId = (CustomStorageId)context.RequestData.ReadInt32();
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenCustomStorageFileSystem(ref fileSystem.Ref(), customStorageId);
|
Result result = _baseFileSystemProxy.Get.OpenCustomStorageFileSystem(ref fileSystem.Ref, customStorageId);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -707,9 +707,9 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
{
|
{
|
||||||
var storage = context.Device.FileSystem.GetRomFs(_pid).AsStorage(true);
|
var storage = context.Device.FileSystem.GetRomFs(_pid).AsStorage(true);
|
||||||
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(storage);
|
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(storage);
|
||||||
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref()));
|
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref));
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref()));
|
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -730,9 +730,9 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
|
|
||||||
var storage = context.Device.FileSystem.ModLoader.ApplyRomFsMods(titleId, aocStorage);
|
var storage = context.Device.FileSystem.ModLoader.ApplyRomFsMods(titleId, aocStorage);
|
||||||
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(storage);
|
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(storage);
|
||||||
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref()));
|
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref));
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref()));
|
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -765,9 +765,9 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
Nca nca = new Nca(context.Device.System.KeySet, ncaStorage);
|
Nca nca = new Nca(context.Device.System.KeySet, ncaStorage);
|
||||||
LibHac.Fs.IStorage romfsStorage = nca.OpenStorage(NcaSectionType.Data, context.Device.System.FsIntegrityCheckLevel);
|
LibHac.Fs.IStorage romfsStorage = nca.OpenStorage(NcaSectionType.Data, context.Device.System.FsIntegrityCheckLevel);
|
||||||
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(romfsStorage);
|
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(romfsStorage);
|
||||||
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref()));
|
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref));
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref()));
|
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref));
|
||||||
}
|
}
|
||||||
catch (HorizonResultException ex)
|
catch (HorizonResultException ex)
|
||||||
{
|
{
|
||||||
|
@ -796,9 +796,9 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
{
|
{
|
||||||
var storage = context.Device.FileSystem.GetRomFs(_pid).AsStorage(true);
|
var storage = context.Device.FileSystem.GetRomFs(_pid).AsStorage(true);
|
||||||
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(storage);
|
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(storage);
|
||||||
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref()));
|
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref));
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref()));
|
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -816,9 +816,9 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
|
|
||||||
var storage = context.Device.FileSystem.GetRomFs(_pid).AsStorage(true);
|
var storage = context.Device.FileSystem.GetRomFs(_pid).AsStorage(true);
|
||||||
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(storage);
|
using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(storage);
|
||||||
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref()));
|
using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref));
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref()));
|
MakeObject(context, new FileSystemProxy.IStorage(ref sfStorage.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -829,10 +829,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
{
|
{
|
||||||
using var deviceOperator = new SharedRef<LibHac.FsSrv.Sf.IDeviceOperator>();
|
using var deviceOperator = new SharedRef<LibHac.FsSrv.Sf.IDeviceOperator>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenDeviceOperator(ref deviceOperator.Ref());
|
Result result = _baseFileSystemProxy.Get.OpenDeviceOperator(ref deviceOperator.Ref);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new IDeviceOperator(ref deviceOperator.Ref()));
|
MakeObject(context, new IDeviceOperator(ref deviceOperator.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -1195,10 +1195,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
{
|
{
|
||||||
using var fileSystem = new SharedRef<IFileSystem>();
|
using var fileSystem = new SharedRef<IFileSystem>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenRegisteredUpdatePartition(ref fileSystem.Ref());
|
Result result = _baseFileSystemProxy.Get.OpenRegisteredUpdatePartition(ref fileSystem.Ref);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref()));
|
MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
@ -1290,10 +1290,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
{
|
{
|
||||||
using var commitManager = new SharedRef<LibHac.FsSrv.Sf.IMultiCommitManager>();
|
using var commitManager = new SharedRef<LibHac.FsSrv.Sf.IMultiCommitManager>();
|
||||||
|
|
||||||
Result result = _baseFileSystemProxy.Get.OpenMultiCommitManager(ref commitManager.Ref());
|
Result result = _baseFileSystemProxy.Get.OpenMultiCommitManager(ref commitManager.Ref);
|
||||||
if (result.IsFailure()) return (ResultCode)result.Value;
|
if (result.IsFailure()) return (ResultCode)result.Value;
|
||||||
|
|
||||||
MakeObject(context, new IMultiCommitManager(ref commitManager.Ref()));
|
MakeObject(context, new IMultiCommitManager(ref commitManager.Ref));
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs
|
||||||
{
|
{
|
||||||
using SharedRef<LibHac.FsSrv.Sf.IFileSystem> fileSystem = GetObject<IFileSystem>(context, 0).GetBaseFileSystem();
|
using SharedRef<LibHac.FsSrv.Sf.IFileSystem> fileSystem = GetObject<IFileSystem>(context, 0).GetBaseFileSystem();
|
||||||
|
|
||||||
Result result = _baseCommitManager.Get.Add(ref fileSystem.Ref());
|
Result result = _baseCommitManager.Get.Add(ref fileSystem.Ref);
|
||||||
|
|
||||||
return (ResultCode)result.Value;
|
return (ResultCode)result.Value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
using LibHac.Common;
|
using Ryujinx.Common.Utilities;
|
||||||
using Ryujinx.HLE.Utilities;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Mii.Types
|
namespace Ryujinx.HLE.HOS.Services.Mii.Types
|
||||||
|
@ -78,7 +76,7 @@ namespace Ryujinx.HLE.HOS.Services.Mii.Types
|
||||||
|
|
||||||
private ReadOnlySpan<byte> AsSpan()
|
private ReadOnlySpan<byte> AsSpan()
|
||||||
{
|
{
|
||||||
return MemoryMarshal.AsBytes(SpanHelpers.CreateReadOnlySpan(in this, 1));
|
return SpanHelpers.AsReadOnlyByteSpan(ref this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ReadOnlySpan<byte> AsSpanWithoutDeviceCrc()
|
private ReadOnlySpan<byte> AsSpanWithoutDeviceCrc()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using LibHac.FsSystem;
|
using LibHac.Ncm;
|
||||||
using LibHac.Ncm;
|
using LibHac.Tools.FsSystem.NcaUtils;
|
||||||
using Ryujinx.HLE.FileSystem;
|
using Ryujinx.HLE.FileSystem;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using LibHac.Common;
|
using Ryujinx.Common.Memory;
|
||||||
using Ryujinx.Common.Memory;
|
using Ryujinx.Common.Utilities;
|
||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ namespace Ryujinx.HLE.HOS.Services.Sdb.Pl
|
||||||
|
|
||||||
using var fontFile = new UniqueRef<IFile>();
|
using var fontFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
romfs.OpenFile(ref fontFile.Ref(), ("/" + fontFilename).ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
romfs.OpenFile(ref fontFile.Ref, ("/" + fontFilename).ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
data = DecryptFont(fontFile.Get.AsStream());
|
data = DecryptFont(fontFile.Get.AsStream());
|
||||||
}
|
}
|
||||||
|
|
|
@ -321,7 +321,7 @@ namespace Ryujinx.HLE.HOS.Services.Settings
|
||||||
|
|
||||||
using var firmwareFile = new UniqueRef<IFile>();
|
using var firmwareFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
Result result = firmwareRomFs.OpenFile(ref firmwareFile.Ref(), "/file".ToU8Span(), OpenMode.Read);
|
Result result = firmwareRomFs.OpenFile(ref firmwareFile.Ref, "/file".ToU8Span(), OpenMode.Read);
|
||||||
if (result.IsFailure())
|
if (result.IsFailure())
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -133,14 +133,14 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
|
||||||
|
|
||||||
using var trustedCertsFileRef = new UniqueRef<IFile>();
|
using var trustedCertsFileRef = new UniqueRef<IFile>();
|
||||||
|
|
||||||
Result result = romfs.OpenFile(ref trustedCertsFileRef.Ref(), "/ssl_TrustedCerts.bdf".ToU8Span(), OpenMode.Read);
|
Result result = romfs.OpenFile(ref trustedCertsFileRef.Ref, "/ssl_TrustedCerts.bdf".ToU8Span(), OpenMode.Read);
|
||||||
|
|
||||||
if (!result.IsSuccess())
|
if (!result.IsSuccess())
|
||||||
{
|
{
|
||||||
// [1.0.0 - 2.3.0]
|
// [1.0.0 - 2.3.0]
|
||||||
if (ResultFs.PathNotFound.Includes(result))
|
if (ResultFs.PathNotFound.Includes(result))
|
||||||
{
|
{
|
||||||
result = romfs.OpenFile(ref trustedCertsFileRef.Ref(), "/ssl_TrustedCerts.tcf".ToU8Span(), OpenMode.Read);
|
result = romfs.OpenFile(ref trustedCertsFileRef.Ref, "/ssl_TrustedCerts.tcf".ToU8Span(), OpenMode.Read);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result.IsFailure())
|
if (result.IsFailure())
|
||||||
|
|
|
@ -97,7 +97,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.TimeZone
|
||||||
|
|
||||||
using var binaryListFile = new UniqueRef<IFile>();
|
using var binaryListFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
romfs.OpenFile(ref binaryListFile.Ref(), "/binaryList.txt".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
romfs.OpenFile(ref binaryListFile.Ref, "/binaryList.txt".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
StreamReader reader = new StreamReader(binaryListFile.Get.AsStream());
|
StreamReader reader = new StreamReader(binaryListFile.Get.AsStream());
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.TimeZone
|
||||||
|
|
||||||
using var tzif = new UniqueRef<IFile>();
|
using var tzif = new UniqueRef<IFile>();
|
||||||
|
|
||||||
if (romfs.OpenFile(ref tzif.Ref(), $"/zoneinfo/{locName}".ToU8Span(), OpenMode.Read).IsFailure())
|
if (romfs.OpenFile(ref tzif.Ref, $"/zoneinfo/{locName}".ToU8Span(), OpenMode.Read).IsFailure())
|
||||||
{
|
{
|
||||||
Logger.Error?.Print(LogClass.ServiceTime, $"Error opening /zoneinfo/{locName}");
|
Logger.Error?.Print(LogClass.ServiceTime, $"Error opening /zoneinfo/{locName}");
|
||||||
continue;
|
continue;
|
||||||
|
@ -273,7 +273,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.TimeZone
|
||||||
|
|
||||||
using var timeZoneBinaryFile = new UniqueRef<IFile>();
|
using var timeZoneBinaryFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
Result result = romfs.OpenFile(ref timeZoneBinaryFile.Ref(), $"/zoneinfo/{locationName}".ToU8Span(), OpenMode.Read);
|
Result result = romfs.OpenFile(ref timeZoneBinaryFile.Ref, $"/zoneinfo/{locationName}".ToU8Span(), OpenMode.Read);
|
||||||
|
|
||||||
timeZoneBinaryStream = timeZoneBinaryFile.Release().AsStream();
|
timeZoneBinaryStream = timeZoneBinaryFile.Release().AsStream();
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace Ryujinx.Ui.App.Common
|
||||||
{
|
{
|
||||||
using UniqueRef<IFile> controlFile = new();
|
using UniqueRef<IFile> controlFile = new();
|
||||||
|
|
||||||
controlFs.OpenFile(ref controlFile.Ref(), "/control.nacp".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
controlFs.OpenFile(ref controlFile.Ref, "/control.nacp".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
controlFile.Get.Read(out _, 0, outProperty, ReadOption.None).ThrowIfFailure();
|
controlFile.Get.Read(out _, 0, outProperty, ReadOption.None).ThrowIfFailure();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ namespace Ryujinx.Ui.App.Common
|
||||||
{
|
{
|
||||||
using UniqueRef<IFile> ncaFile = new();
|
using UniqueRef<IFile> ncaFile = new();
|
||||||
|
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
pfs.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
Nca nca = new(_virtualFileSystem.KeySet, ncaFile.Get.AsStorage());
|
Nca nca = new(_virtualFileSystem.KeySet, ncaFile.Get.AsStorage());
|
||||||
int dataIndex = Nca.GetSectionIndexFromType(NcaSectionType.Data, NcaContentType.Program);
|
int dataIndex = Nca.GetSectionIndexFromType(NcaSectionType.Data, NcaContentType.Program);
|
||||||
|
@ -211,7 +211,7 @@ namespace Ryujinx.Ui.App.Common
|
||||||
|
|
||||||
using UniqueRef<IFile> npdmFile = new();
|
using UniqueRef<IFile> npdmFile = new();
|
||||||
|
|
||||||
Result result = pfs.OpenFile(ref npdmFile.Ref(), "/main.npdm".ToU8Span(), OpenMode.Read);
|
Result result = pfs.OpenFile(ref npdmFile.Ref, "/main.npdm".ToU8Span(), OpenMode.Read);
|
||||||
|
|
||||||
if (ResultFs.PathNotFound.Includes(result))
|
if (ResultFs.PathNotFound.Includes(result))
|
||||||
{
|
{
|
||||||
|
@ -241,7 +241,7 @@ namespace Ryujinx.Ui.App.Common
|
||||||
{
|
{
|
||||||
using UniqueRef<IFile> icon = new();
|
using UniqueRef<IFile> icon = new();
|
||||||
|
|
||||||
controlFs.OpenFile(ref icon.Ref(), $"/icon_{_desiredTitleLanguage}.dat".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
controlFs.OpenFile(ref icon.Ref, $"/icon_{_desiredTitleLanguage}.dat".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
using MemoryStream stream = new();
|
using MemoryStream stream = new();
|
||||||
|
|
||||||
|
@ -259,7 +259,7 @@ namespace Ryujinx.Ui.App.Common
|
||||||
|
|
||||||
using var icon = new UniqueRef<IFile>();
|
using var icon = new UniqueRef<IFile>();
|
||||||
|
|
||||||
controlFs.OpenFile(ref icon.Ref(), entry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
controlFs.OpenFile(ref icon.Ref, entry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
using MemoryStream stream = new();
|
using MemoryStream stream = new();
|
||||||
|
|
||||||
|
@ -572,7 +572,7 @@ namespace Ryujinx.Ui.App.Common
|
||||||
{
|
{
|
||||||
using var icon = new UniqueRef<IFile>();
|
using var icon = new UniqueRef<IFile>();
|
||||||
|
|
||||||
controlFs.OpenFile(ref icon.Ref(), $"/icon_{_desiredTitleLanguage}.dat".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
controlFs.OpenFile(ref icon.Ref, $"/icon_{_desiredTitleLanguage}.dat".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
using MemoryStream stream = new();
|
using MemoryStream stream = new();
|
||||||
|
|
||||||
|
@ -590,7 +590,7 @@ namespace Ryujinx.Ui.App.Common
|
||||||
|
|
||||||
using var icon = new UniqueRef<IFile>();
|
using var icon = new UniqueRef<IFile>();
|
||||||
|
|
||||||
controlFs.OpenFile(ref icon.Ref(), entry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
controlFs.OpenFile(ref icon.Ref, entry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
using (MemoryStream stream = new())
|
using (MemoryStream stream = new())
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
using Gtk;
|
using Gtk;
|
||||||
using LibHac.Common;
|
using LibHac.Common;
|
||||||
using LibHac.Common.Keys;
|
using LibHac.Common.Keys;
|
||||||
using LibHac.FsSystem;
|
|
||||||
using LibHac.Ncm;
|
using LibHac.Ncm;
|
||||||
using LibHac.Ns;
|
using LibHac.Ns;
|
||||||
using LibHac.Tools.FsSystem;
|
using LibHac.Tools.FsSystem;
|
||||||
|
using LibHac.Tools.FsSystem.NcaUtils;
|
||||||
using Ryujinx.Audio.Backends.Dummy;
|
using Ryujinx.Audio.Backends.Dummy;
|
||||||
using Ryujinx.Audio.Backends.OpenAL;
|
using Ryujinx.Audio.Backends.OpenAL;
|
||||||
using Ryujinx.Audio.Backends.SDL2;
|
using Ryujinx.Audio.Backends.SDL2;
|
||||||
|
|
|
@ -224,7 +224,7 @@ namespace Ryujinx.Ui.Widgets
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
using var ncaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
pfs.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
Nca nca = new Nca(_virtualFileSystem.KeySet, ncaFile.Release().AsStorage());
|
Nca nca = new Nca(_virtualFileSystem.KeySet, ncaFile.Release().AsStorage());
|
||||||
|
|
||||||
|
@ -280,8 +280,8 @@ namespace Ryujinx.Ui.Widgets
|
||||||
using var uniqueSourceFs = new UniqueRef<IFileSystem>(ncaFileSystem);
|
using var uniqueSourceFs = new UniqueRef<IFileSystem>(ncaFileSystem);
|
||||||
using var uniqueOutputFs = new UniqueRef<IFileSystem>(new LocalFileSystem(destination));
|
using var uniqueOutputFs = new UniqueRef<IFileSystem>(new LocalFileSystem(destination));
|
||||||
|
|
||||||
fsClient.Register(source.ToU8Span(), ref uniqueSourceFs.Ref());
|
fsClient.Register(source.ToU8Span(), ref uniqueSourceFs.Ref);
|
||||||
fsClient.Register(output.ToU8Span(), ref uniqueOutputFs.Ref());
|
fsClient.Register(output.ToU8Span(), ref uniqueOutputFs.Ref);
|
||||||
|
|
||||||
(Result? resultCode, bool canceled) = CopyDirectory(fsClient, $"{source}:/", $"{output}:/");
|
(Result? resultCode, bool canceled) = CopyDirectory(fsClient, $"{source}:/", $"{output}:/");
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ namespace Ryujinx.Ui.Windows
|
||||||
{
|
{
|
||||||
using var file = new UniqueRef<IFile>();
|
using var file = new UniqueRef<IFile>();
|
||||||
|
|
||||||
romfs.OpenFile(ref file.Ref(), ("/" + item.FullPath).ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
romfs.OpenFile(ref file.Ref, ("/" + item.FullPath).ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
using (MemoryStream stream = new MemoryStream())
|
using (MemoryStream stream = new MemoryStream())
|
||||||
using (MemoryStream streamPng = new MemoryStream())
|
using (MemoryStream streamPng = new MemoryStream())
|
||||||
|
|
|
@ -93,7 +93,7 @@ namespace Ryujinx.Ui.Windows
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
using var ncaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), dlcNca.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
pfs.OpenFile(ref ncaFile.Ref, dlcNca.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
Nca nca = TryCreateNca(ncaFile.Get.AsStorage(), dlcContainer.ContainerPath);
|
Nca nca = TryCreateNca(ncaFile.Get.AsStorage(), dlcContainer.ContainerPath);
|
||||||
|
|
||||||
if (nca != null)
|
if (nca != null)
|
||||||
|
@ -161,7 +161,7 @@ namespace Ryujinx.Ui.Windows
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
using var ncaFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
pfs.OpenFile(ref ncaFile.Ref(), fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
pfs.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
Nca nca = TryCreateNca(ncaFile.Get.AsStorage(), containerPath);
|
Nca nca = TryCreateNca(ncaFile.Get.AsStorage(), containerPath);
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@ namespace Ryujinx.Ui.Windows
|
||||||
|
|
||||||
using var nacpFile = new UniqueRef<IFile>();
|
using var nacpFile = new UniqueRef<IFile>();
|
||||||
|
|
||||||
controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None).OpenFile(ref nacpFile.Ref(), "/control.nacp".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None).OpenFile(ref nacpFile.Ref, "/control.nacp".ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
nacpFile.Get.Read(out _, 0, SpanHelpers.AsByteSpan(ref controlData), ReadOption.None).ThrowIfFailure();
|
nacpFile.Get.Read(out _, 0, SpanHelpers.AsByteSpan(ref controlData), ReadOption.None).ThrowIfFailure();
|
||||||
|
|
||||||
RadioButton radioButton = new RadioButton($"Version {controlData.DisplayVersionString.ToString()} - {path}");
|
RadioButton radioButton = new RadioButton($"Version {controlData.DisplayVersionString.ToString()} - {path}");
|
||||||
|
|
Loading…
Reference in a new issue