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
{
// 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
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
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
try
@ -409,7 +409,7 @@ namespace Ryujinx.Ui
return resourceByteArray;
}
private static IFileSystem GetControlFs(PartitionFileSystem pfs)
private static void GetControlFsAndTitleId(PartitionFileSystem pfs, out IFileSystem controlFs, out string titleId)
{
Nca controlNca = null;
@ -440,7 +440,8 @@ namespace Ryujinx.Ui
}
// 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)