Implement aoc:u and support loading AddOnContent (#1221)
* Initial rebased AddOnContent support * Fix bounds calculation * Use existing GameCard in VFS per Xpl0itR's suggestion + Add dummy IPurchaseEventManager per AcK's suggestion * Support multiple containers * Add option to selectively disable addons * Import tickets from AOC FS * Load all nsps in base directory automatically * Revert LoadNsp renaming Removes conflicts with Mods PR. Not much is lost, old names were fine. * Address AcK's comments * Address Thog's comments Dispose opened nsp files Fix potential bug by clearing metadata on load
This commit is contained in:
parent
4d56f97f1e
commit
1c2af7ce92
5 changed files with 317 additions and 14 deletions
|
@ -146,6 +146,20 @@ namespace Ryujinx.HLE.HOS
|
|||
|
||||
_contentManager.LoadEntries(_device);
|
||||
|
||||
_contentManager.ClearAocData();
|
||||
_contentManager.AddAocData(securePartition, xciFile, mainNca.Header.TitleId);
|
||||
|
||||
// Check all nsp's in the base directory for AOC
|
||||
foreach (var fn in new FileInfo(xciFile).Directory.EnumerateFiles("*.nsp"))
|
||||
{
|
||||
using (FileStream fs = fn.OpenRead())
|
||||
using (IStorage storage = fs.AsStorage())
|
||||
using (PartitionFileSystem pfs = new PartitionFileSystem(storage))
|
||||
{
|
||||
_contentManager.AddAocData(pfs, fn.FullName, mainNca.Header.TitleId);
|
||||
}
|
||||
}
|
||||
|
||||
LoadNca(mainNca, patchNca, controlNca);
|
||||
}
|
||||
|
||||
|
@ -179,6 +193,21 @@ namespace Ryujinx.HLE.HOS
|
|||
|
||||
if (mainNca != null)
|
||||
{
|
||||
_contentManager.ClearAocData();
|
||||
_contentManager.AddAocData(nsp, nspFile, mainNca.Header.TitleId);
|
||||
|
||||
// Check all nsp's in the base directory for AOC
|
||||
foreach (var fn in new FileInfo(nspFile).Directory.EnumerateFiles("*.nsp"))
|
||||
{
|
||||
if (fn.FullName == nspFile) continue;
|
||||
using (FileStream fs = fn.OpenRead())
|
||||
using (IStorage storage = fs.AsStorage())
|
||||
using (PartitionFileSystem pfs = new PartitionFileSystem(storage))
|
||||
{
|
||||
_contentManager.AddAocData(pfs, fn.FullName, mainNca.Header.TitleId);
|
||||
}
|
||||
}
|
||||
|
||||
LoadNca(mainNca, patchNca, controlNca);
|
||||
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue