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

Update NRR structs (#1291)

* Update NRR structs

This was based on Switchbrew page: switchbrew.org/wiki/NRR

* Address review comments
VolcaEM 5 лет назад
Родитель
Сommit
a78a69a6e7

+ 23 - 0
Ryujinx.HLE/HOS/Services/Ro/Types/NRRCertification.cs

@@ -0,0 +1,23 @@
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.HLE.HOS.Services.Ro
+{
+    [StructLayout(LayoutKind.Explicit, Size = 0x220)]
+    unsafe struct NRRCertification
+    {
+        [FieldOffset(0)]
+        public ulong ApplicationIdMask;
+
+        [FieldOffset(0x8)]
+        public ulong ApplicationIdPattern;
+
+        [FieldOffset(0x10)]
+        public fixed byte Reserved[0x10];
+
+        [FieldOffset(0x20)]
+        public fixed byte Modulus[0x100];
+
+        [FieldOffset(0x120)]
+        public fixed byte Signature[0x100];
+    }
+}

+ 18 - 12
Ryujinx.HLE/HOS/Services/Ro/Types/NrrHeader.cs

@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
 
 namespace Ryujinx.HLE.HOS.Services.Ro
 {
@@ -8,31 +8,37 @@ namespace Ryujinx.HLE.HOS.Services.Ro
         [FieldOffset(0)]
         public uint Magic;
 
-        [FieldOffset(0x10)]
-        public ulong TitleIdMask;
-
-        [FieldOffset(0x18)]
-        public ulong TitleIdPattern;
+        [FieldOffset(0x4)]
+        public uint CertificationSignatureKeyGeneration; // 9.0.0+
 
-        [FieldOffset(0x30)]
-        public fixed byte Modulus[0x100];
+        [FieldOffset(0x8)]
+        public ulong Reserved;
 
-        [FieldOffset(0x130)]
-        public fixed byte FixedKeySignature[0x100];
+        [FieldOffset(0x10)]
+        public NRRCertification Certification;
 
         [FieldOffset(0x230)]
         public fixed byte NrrSignature[0x100];
 
         [FieldOffset(0x330)]
-        public ulong TitleIdMin;
+        public ulong TitleId;
 
         [FieldOffset(0x338)]
         public uint NrrSize;
 
+        [FieldOffset(0x33C)]
+        public byte Type; // 7.0.0+
+
+        [FieldOffset(0x33D)]
+        public fixed byte Reserved2[0x3];
+
         [FieldOffset(0x340)]
         public uint HashOffset;
 
         [FieldOffset(0x344)]
         public uint HashCount;
+
+        [FieldOffset(0x348)]
+        public ulong Reserved3;
     }
-}
+}