diff --git a/BurnOutSharp.Builders/BFPK.cs b/BurnOutSharp.Builders/BFPK.cs
index a221a0dd..10e7b5f0 100644
--- a/BurnOutSharp.Builders/BFPK.cs
+++ b/BurnOutSharp.Builders/BFPK.cs
@@ -1,7 +1,9 @@
using System.IO;
using System.Linq;
+using System.Text;
using BurnOutSharp.Models.BFPK;
using BurnOutSharp.Utilities;
+using static BurnOutSharp.Models.BFPK.Constants;
namespace BurnOutSharp.Builders
{
@@ -10,7 +12,7 @@ namespace BurnOutSharp.Builders
#region Byte Data
///
- /// Parse a byte array into a MoPaQ archive
+ /// Parse a byte array into a BFPK archive
///
/// Byte array to parse
/// Offset into the byte array
@@ -35,7 +37,7 @@ namespace BurnOutSharp.Builders
#region Stream Data
///
- /// Parse a Stream into a MoPaQ archive
+ /// Parse a Stream into a BFPK archive
///
/// Stream to parse
/// Filled archive on success, null on error
@@ -103,8 +105,9 @@ namespace BurnOutSharp.Builders
// TODO: Use marshalling here instead of building
Header header = new Header();
- header.Magic = data.ReadUInt32();
- if (header.Magic != 0x4b504642)
+ byte[] magic = data.ReadBytes(4);
+ header.Magic = Encoding.ASCII.GetString(magic);
+ if (header.Magic != SignatureString)
return null;
header.Version = data.ReadInt32();
@@ -125,7 +128,10 @@ namespace BurnOutSharp.Builders
fileEntry.NameSize = data.ReadInt32();
if (fileEntry.NameSize > 0)
- fileEntry.Name = new string(data.ReadBytes(fileEntry.NameSize).Select(b => (char)b).ToArray());
+ {
+ byte[] name = data.ReadBytes(fileEntry.NameSize);
+ fileEntry.Name = Encoding.ASCII.GetString(name);
+ }
fileEntry.UncompressedSize = data.ReadInt32();
fileEntry.Offset = data.ReadInt32();
diff --git a/BurnOutSharp.Models/BFPK/Constants.cs b/BurnOutSharp.Models/BFPK/Constants.cs
new file mode 100644
index 00000000..372b26c3
--- /dev/null
+++ b/BurnOutSharp.Models/BFPK/Constants.cs
@@ -0,0 +1,11 @@
+namespace BurnOutSharp.Models.BFPK
+{
+ public static class Constants
+ {
+ public const uint SignatureUInt32 = 0x4b504642;
+
+ public static readonly byte[] SignatureBytes = new byte[] { 0x42, 0x46, 0x50, 0x4b };
+
+ public const string SignatureString = "BFPK";
+ }
+}
\ No newline at end of file
diff --git a/BurnOutSharp.Models/BFPK/Header.cs b/BurnOutSharp.Models/BFPK/Header.cs
index 6ec70538..8054928c 100644
--- a/BurnOutSharp.Models/BFPK/Header.cs
+++ b/BurnOutSharp.Models/BFPK/Header.cs
@@ -12,7 +12,7 @@ namespace BurnOutSharp.Models.BFPK
///
/// "BFPK"
///
- public uint Magic;
+ public string Magic;
///
/// Version
diff --git a/BurnOutSharp.Wrappers/BFPK.cs b/BurnOutSharp.Wrappers/BFPK.cs
index db4a00b4..19e8df4d 100644
--- a/BurnOutSharp.Wrappers/BFPK.cs
+++ b/BurnOutSharp.Wrappers/BFPK.cs
@@ -12,7 +12,7 @@ namespace BurnOutSharp.Wrappers
#region Header
///
- public uint Magic => _archive.Header.Magic;
+ public string Magic => _archive.Header.Magic;
///
public int Version => _archive.Header.Version;