From 9827dc35e14cb704cb4adcb894e0efbac893080c Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
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);