Get program IDs for the game list from NCA headers (#928)

Previously it would try various fields from the NACP and didn't always work
This commit is contained in:
Alex Barney 2020-02-11 15:43:24 -07:00 committed by GitHub
parent 7e4d986a73
commit e7a4e0a328
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -156,7 +156,7 @@ namespace Ryujinx.Ui
else else
{ {
// Store the ControlFS in variable called controlFs // Store the ControlFS in variable called controlFs
IFileSystem controlFs = GetControlFs(pfs); GetControlFsAndTitleId(pfs, out IFileSystem controlFs, out titleId);
// Creates NACP class from the NACP file // Creates NACP class from the NACP file
controlFs.OpenFile(out IFile controlNacpFile, "/control.nacp", OpenMode.Read).ThrowIfFailure(); controlFs.OpenFile(out IFile controlNacpFile, "/control.nacp", OpenMode.Read).ThrowIfFailure();
@ -166,7 +166,7 @@ namespace Ryujinx.Ui
// Get the title name, title ID, developer name and version number from the NACP // Get the title name, title ID, developer name and version number from the NACP
version = controlData.DisplayVersion; version = controlData.DisplayVersion;
GetNameIdDeveloper(controlData, out titleName, out titleId, out developer); GetNameIdDeveloper(controlData, out titleName, out _, out developer);
// Read the icon from the ControlFS and store it as a byte array // Read the icon from the ControlFS and store it as a byte array
try try
@ -409,7 +409,7 @@ namespace Ryujinx.Ui
return resourceByteArray; return resourceByteArray;
} }
private static IFileSystem GetControlFs(PartitionFileSystem pfs) private static void GetControlFsAndTitleId(PartitionFileSystem pfs, out IFileSystem controlFs, out string titleId)
{ {
Nca controlNca = null; Nca controlNca = null;
@ -440,7 +440,8 @@ namespace Ryujinx.Ui
} }
// Return the ControlFS // Return the ControlFS
return controlNca?.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None); controlFs = controlNca?.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None);
titleId = controlNca?.Header.TitleId.ToString("x16");
} }
internal static ApplicationMetadata LoadAndSaveMetaData(string titleId, Action<ApplicationMetadata> modifyFunction = null) internal static ApplicationMetadata LoadAndSaveMetaData(string titleId, Action<ApplicationMetadata> modifyFunction = null)