diff --git a/BurnOutSharp.Builders/NewExecutable.cs b/BurnOutSharp.Builders/NewExecutable.cs index 0af78bf3..6f3a1fc0 100644 --- a/BurnOutSharp.Builders/NewExecutable.cs +++ b/BurnOutSharp.Builders/NewExecutable.cs @@ -1,8 +1,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Text; using BurnOutSharp.Models.NewExecutable; using BurnOutSharp.Utilities; +using static BurnOutSharp.Models.NewExecutable.Constants; namespace BurnOutSharp.Builders { @@ -246,12 +248,9 @@ namespace BurnOutSharp.Builders // TODO: Use marshalling here instead of building var header = new ExecutableHeader(); - header.Magic = new byte[2]; - for (int i = 0; i < header.Magic.Length; i++) - { - header.Magic[i] = data.ReadByteValue(); - } - if (header.Magic[0] != 'N' || header.Magic[1] != 'E') + byte[] magic = data.ReadBytes(2); + header.Magic = Encoding.ASCII.GetString(magic); + if (header.Magic != SignatureString) return null; header.LinkerVersion = data.ReadByteValue(); diff --git a/BurnOutSharp.Models/NewExecutable/Constants.cs b/BurnOutSharp.Models/NewExecutable/Constants.cs new file mode 100644 index 00000000..1f33fd0e --- /dev/null +++ b/BurnOutSharp.Models/NewExecutable/Constants.cs @@ -0,0 +1,11 @@ +namespace BurnOutSharp.Models.NewExecutable +{ + public static class Constants + { + public static readonly byte[] SignatureBytes = new byte[] { 0x4e, 0x45 }; + + public const string SignatureString = "NE"; + + public const ushort SignatureUInt16 = 0x454e; + } +} \ No newline at end of file diff --git a/BurnOutSharp.Models/NewExecutable/ExecutableHeader.cs b/BurnOutSharp.Models/NewExecutable/ExecutableHeader.cs index a1d13b18..4f2436d8 100644 --- a/BurnOutSharp.Models/NewExecutable/ExecutableHeader.cs +++ b/BurnOutSharp.Models/NewExecutable/ExecutableHeader.cs @@ -17,7 +17,7 @@ namespace BurnOutSharp.Models.NewExecutable /// "E" is high-order byte. /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] - public byte[] Magic; + public string Magic; /// /// Version number of the linker. diff --git a/BurnOutSharp.Wrappers/NewExecutable.cs b/BurnOutSharp.Wrappers/NewExecutable.cs index eee98626..a8ff5790 100644 --- a/BurnOutSharp.Wrappers/NewExecutable.cs +++ b/BurnOutSharp.Wrappers/NewExecutable.cs @@ -82,7 +82,7 @@ namespace BurnOutSharp.Wrappers #region Header /// - public byte[] Magic => _executable.Header.Magic; + public string Magic => _executable.Header.Magic; /// public byte LinkerVersion => _executable.Header.LinkerVersion; @@ -344,7 +344,7 @@ namespace BurnOutSharp.Wrappers { Console.WriteLine(" Header Information:"); Console.WriteLine(" -------------------------"); - Console.WriteLine($" Magic number: {BitConverter.ToString(Magic).Replace("-", string.Empty)}"); + Console.WriteLine($" Magic number: {Magic}"); Console.WriteLine($" Linker version: {LinkerVersion}"); Console.WriteLine($" Linker revision: {LinkerRevision}"); Console.WriteLine($" Entry table offset: {EntryTableOffset}");