From 4b8a65fd84fcab991f62cf9cfdd8484c2e55501e Mon Sep 17 00:00:00 2001
From: Starlet <gpyron@mail.com>
Date: Fri, 20 Jul 2018 17:53:06 -0400
Subject: [PATCH] Add Npdm parsing into Ryujinx.HLE

---
 Ryujinx.HLE/OsHle/Horizon.cs        | 20 ++++++++++++++++++++
 Ryujinx.HLE/OsHle/SystemStateMgr.cs |  3 +++
 2 files changed, 23 insertions(+)

diff --git a/Ryujinx.HLE/OsHle/Horizon.cs b/Ryujinx.HLE/OsHle/Horizon.cs
index 70ae24be32..4c117fa478 100644
--- a/Ryujinx.HLE/OsHle/Horizon.cs
+++ b/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();
diff --git a/Ryujinx.HLE/OsHle/SystemStateMgr.cs b/Ryujinx.HLE/OsHle/SystemStateMgr.cs
index e78082c45a..32c88994b9 100644
--- a/Ryujinx.HLE/OsHle/SystemStateMgr.cs
+++ b/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",