From 9827dc35e14cb704cb4adcb894e0efbac893080c Mon Sep 17 00:00:00 2001 From: gdkchan Date: Tue, 31 May 2022 16:16:59 -0300 Subject: [PATCH] Allow loading NSPs without a NCA inside (#3364) * Allow loading NSPs without a NCA inside * Set isHomebrew as true --- Ryujinx.HLE/HOS/ApplicationLoader.cs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Ryujinx.HLE/HOS/ApplicationLoader.cs b/Ryujinx.HLE/HOS/ApplicationLoader.cs index 50ab9e1f8a..893a0c97df 100644 --- a/Ryujinx.HLE/HOS/ApplicationLoader.cs +++ b/Ryujinx.HLE/HOS/ApplicationLoader.cs @@ -280,13 +280,6 @@ namespace Ryujinx.HLE.HOS return; } - if (mainNca == null) - { - Logger.Error?.Print(LogClass.Loader, "Unable to load NSP: Could not find Main NCA"); - - return; - } - if (mainNca != null) { _device.Configuration.ContentManager.ClearAocData(); @@ -298,7 +291,7 @@ namespace Ryujinx.HLE.HOS } // This is not a normal NSP, it's actually a ExeFS as a NSP - LoadExeFs(nsp); + LoadExeFs(nsp, null, isHomebrew: true); } public void LoadNca(string ncaFile) @@ -593,7 +586,7 @@ namespace Ryujinx.HLE.HOS } } - private void LoadExeFs(IFileSystem codeFs, MetaLoader metaData = null) + private void LoadExeFs(IFileSystem codeFs, MetaLoader metaData = null, bool isHomebrew = false) { if (_device.Configuration.VirtualFileSystem.ModLoader.ReplaceExefsPartition(TitleId, ref codeFs)) { @@ -661,7 +654,7 @@ namespace Ryujinx.HLE.HOS Ptc.Initialize(TitleIdText, DisplayVersion, usePtc, memoryManagerMode); // We allow it for nx-hbloader because it can be used to launch homebrew. - bool allowCodeMemoryForJit = TitleId == 0x010000000000100DUL; + bool allowCodeMemoryForJit = TitleId == 0x010000000000100DUL || isHomebrew; metaData.GetNpdm(out Npdm npdm).ThrowIfFailure(); ProgramInfo programInfo = new ProgramInfo(in npdm, allowCodeMemoryForJit);