aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/Loaders/Executables/Nro.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/Loaders/Executables/Nro.cs')
-rw-r--r--Ryujinx.HLE/Loaders/Executables/Nro.cs60
1 files changed, 60 insertions, 0 deletions
diff --git a/Ryujinx.HLE/Loaders/Executables/Nro.cs b/Ryujinx.HLE/Loaders/Executables/Nro.cs
new file mode 100644
index 00000000..9e2b7e90
--- /dev/null
+++ b/Ryujinx.HLE/Loaders/Executables/Nro.cs
@@ -0,0 +1,60 @@
+using System.IO;
+
+namespace Ryujinx.HLE.Loaders.Executables
+{
+ class Nro : IExecutable
+ {
+ public string Name { get; private set; }
+
+ public byte[] Text { get; private set; }
+ public byte[] RO { get; private set; }
+ public byte[] Data { get; private set; }
+
+ public int Mod0Offset { get; private set; }
+ public int TextOffset { get; private set; }
+ public int ROOffset { get; private set; }
+ public int DataOffset { get; private set; }
+ public int BssSize { get; private set; }
+
+ public Nro(Stream Input, string Name)
+ {
+ this.Name = Name;
+
+ BinaryReader Reader = new BinaryReader(Input);
+
+ Input.Seek(4, SeekOrigin.Begin);
+
+ int Mod0Offset = Reader.ReadInt32();
+ int Padding8 = Reader.ReadInt32();
+ int Paddingc = Reader.ReadInt32();
+ int NroMagic = Reader.ReadInt32();
+ int Unknown14 = Reader.ReadInt32();
+ int FileSize = Reader.ReadInt32();
+ int Unknown1c = Reader.ReadInt32();
+ int TextOffset = Reader.ReadInt32();
+ int TextSize = Reader.ReadInt32();
+ int ROOffset = Reader.ReadInt32();
+ int ROSize = Reader.ReadInt32();
+ int DataOffset = Reader.ReadInt32();
+ int DataSize = Reader.ReadInt32();
+ int BssSize = Reader.ReadInt32();
+
+ this.Mod0Offset = Mod0Offset;
+ this.TextOffset = TextOffset;
+ this.ROOffset = ROOffset;
+ this.DataOffset = DataOffset;
+ this.BssSize = BssSize;
+
+ byte[] Read(long Position, int Size)
+ {
+ Input.Seek(Position, SeekOrigin.Begin);
+
+ return Reader.ReadBytes(Size);
+ }
+
+ Text = Read(TextOffset, TextSize);
+ RO = Read(ROOffset, ROSize);
+ Data = Read(DataOffset, DataSize);
+ }
+ }
+} \ No newline at end of file