Просмотр исходного кода

Merge pull request #298 from Cyuubi/npdm

Add Npdm parsing into Ryujinx.HLE
emmauss 7 лет назад
Родитель
Сommit
d137405e94
2 измененных файлов с 23 добавлено и 0 удалено
  1. 20 0
      Ryujinx.HLE/OsHle/Horizon.cs
  2. 3 0
      Ryujinx.HLE/OsHle/SystemStateMgr.cs

+ 20 - 0
Ryujinx.HLE/OsHle/Horizon.cs

@@ -1,4 +1,5 @@
 using Ryujinx.HLE.Loaders.Executables;
+using Ryujinx.HLE.Loaders.Npdm;
 using Ryujinx.HLE.Logging;
 using Ryujinx.HLE.OsHle.Handles;
 using System;
@@ -76,6 +77,25 @@ namespace Ryujinx.HLE.OsHle
                 }
             }
 
+            void LoadNpdm(string FileName)
+            {
+                string File = Directory.GetFiles(ExeFsDir, FileName)[0];
+
+                Ns.Log.PrintInfo(LogClass.Loader, "Loading Title Metadata...");
+
+                using (FileStream Input = new FileStream(File, FileMode.Open))
+                {
+                    SystemStateMgr.TitleMetadata = new Npdm(Input);
+                }
+            }
+
+            LoadNpdm("*.npdm");
+
+            if (!SystemStateMgr.TitleMetadata.Is64Bits)
+            {
+                throw new Exception("32-bit titles are unsupported!");
+            }
+
             LoadNso("rtld");
 
             MainProcess.SetEmptyArgs();

+ 3 - 0
Ryujinx.HLE/OsHle/SystemStateMgr.cs

@@ -1,9 +1,12 @@
+using Ryujinx.HLE.Loaders.Npdm;
 using System;
 
 namespace Ryujinx.HLE.OsHle
 {
     public class SystemStateMgr
     {
+        internal static Npdm TitleMetadata { get; set; }
+
         internal static string[] LanguageCodes = new string[]
         {
             "ja",