diff options
Diffstat (limited to 'Ryujinx/Ui/GameTableContextMenu.cs')
-rw-r--r-- | Ryujinx/Ui/GameTableContextMenu.cs | 51 |
1 files changed, 23 insertions, 28 deletions
diff --git a/Ryujinx/Ui/GameTableContextMenu.cs b/Ryujinx/Ui/GameTableContextMenu.cs index 8bead1e3..a1433f51 100644 --- a/Ryujinx/Ui/GameTableContextMenu.cs +++ b/Ryujinx/Ui/GameTableContextMenu.cs @@ -11,6 +11,7 @@ using LibHac.Ns; using LibHac.Spl; using Ryujinx.Common.Configuration; using Ryujinx.Common.Logging; +using Ryujinx.Common.Utilities; using Ryujinx.HLE.FileSystem; using System; using System.Buffers; @@ -19,8 +20,6 @@ using System.Globalization; using System.IO; using System.Reflection; using System.Threading; -using Utf8Json; -using Utf8Json.Resolvers; using static LibHac.Fs.ApplicationSaveDataManagement; using GUI = Gtk.Builder.ObjectAttribute; @@ -274,43 +273,39 @@ namespace Ryujinx.Ui if (File.Exists(titleUpdateMetadataPath)) { - using (Stream stream = File.OpenRead(titleUpdateMetadataPath)) + string updatePath = JsonHelper.DeserializeFromFile<TitleUpdateMetadata>(titleUpdateMetadataPath).Selected; + + if (File.Exists(updatePath)) { - IJsonFormatterResolver resolver = CompositeResolver.Create(StandardResolver.AllowPrivateSnakeCase); - string updatePath = JsonSerializer.Deserialize<TitleUpdateMetadata>(stream, resolver).Selected; + FileStream updateFile = new FileStream(updatePath, FileMode.Open, FileAccess.Read); + PartitionFileSystem nsp = new PartitionFileSystem(updateFile.AsStorage()); - if (File.Exists(updatePath)) + foreach (DirectoryEntryEx ticketEntry in nsp.EnumerateEntries("/", "*.tik")) { - FileStream updateFile = new FileStream(updatePath, FileMode.Open, FileAccess.Read); - PartitionFileSystem nsp = new PartitionFileSystem(updateFile.AsStorage()); + Result result = nsp.OpenFile(out IFile ticketFile, ticketEntry.FullPath.ToU8Span(), OpenMode.Read); - foreach (DirectoryEntryEx ticketEntry in nsp.EnumerateEntries("/", "*.tik")) + if (result.IsSuccess()) { - Result result = nsp.OpenFile(out IFile ticketFile, ticketEntry.FullPath.ToU8Span(), OpenMode.Read); - - if (result.IsSuccess()) - { - Ticket ticket = new Ticket(ticketFile.AsStream()); + Ticket ticket = new Ticket(ticketFile.AsStream()); - _virtualFileSystem.KeySet.ExternalKeySet.Add(new LibHac.Fs.RightsId(ticket.RightsId), new AccessKey(ticket.GetTitleKey(_virtualFileSystem.KeySet))); - } + _virtualFileSystem.KeySet.ExternalKeySet.Add(new LibHac.Fs.RightsId(ticket.RightsId), new AccessKey(ticket.GetTitleKey(_virtualFileSystem.KeySet))); } + } - foreach (DirectoryEntryEx fileEntry in nsp.EnumerateEntries("/", "*.nca")) - { - nsp.OpenFile(out IFile ncaFile, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure(); + foreach (DirectoryEntryEx fileEntry in nsp.EnumerateEntries("/", "*.nca")) + { + nsp.OpenFile(out IFile ncaFile, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure(); - Nca nca = new Nca(_virtualFileSystem.KeySet, ncaFile.AsStorage()); + Nca nca = new Nca(_virtualFileSystem.KeySet, ncaFile.AsStorage()); - if ($"{nca.Header.TitleId.ToString("x16")[..^3]}000" != mainNca.Header.TitleId.ToString("x16")) - { - break; - } + if ($"{nca.Header.TitleId.ToString("x16")[..^3]}000" != mainNca.Header.TitleId.ToString("x16")) + { + break; + } - if (nca.Header.ContentType == NcaContentType.Program) - { - patchNca = nca; - } + if (nca.Header.ContentType == NcaContentType.Program) + { + patchNca = nca; } } } |