diff --git a/BurnOutSharp.Wrappers/BFPK.cs b/BurnOutSharp.Wrappers/BFPK.cs
index 340dcf97..daec2e05 100644
--- a/BurnOutSharp.Wrappers/BFPK.cs
+++ b/BurnOutSharp.Wrappers/BFPK.cs
@@ -55,18 +55,9 @@ namespace BurnOutSharp.Wrappers
/// A BFPK archive wrapper on success, null on failure
public static BFPK Create(byte[] data, int offset)
{
- var archive = Builder.BFPK.ParseArchive(data, offset);
- if (archive == null)
- return null;
-
- var wrapper = new BFPK
- {
- _archive = archive,
- _dataSource = DataSource.ByteArray,
- _byteArrayData = data,
- _byteArrayOffset = offset,
- };
- return wrapper;
+ MemoryStream dataStream = new MemoryStream(data);
+ dataStream.Position = offset;
+ return Create(dataStream);
}
///
diff --git a/BurnOutSharp.Wrappers/LinearExecutable.cs b/BurnOutSharp.Wrappers/LinearExecutable.cs
index ad0da865..68180211 100644
--- a/BurnOutSharp.Wrappers/LinearExecutable.cs
+++ b/BurnOutSharp.Wrappers/LinearExecutable.cs
@@ -301,18 +301,9 @@ namespace BurnOutSharp.Wrappers
/// An LE/LX executable wrapper on success, null on failure
public static LinearExecutable Create(byte[] data, int offset)
{
- var executable = Builder.LinearExecutable.ParseExecutable(data, offset);
- if (executable == null)
- return null;
-
- var wrapper = new LinearExecutable
- {
- _executable = executable,
- _dataSource = DataSource.ByteArray,
- _byteArrayData = data,
- _byteArrayOffset = offset,
- };
- return wrapper;
+ MemoryStream dataStream = new MemoryStream(data);
+ dataStream.Position = offset;
+ return Create(dataStream);
}
///
diff --git a/BurnOutSharp.Wrappers/MSDOS.cs b/BurnOutSharp.Wrappers/MSDOS.cs
index cf0e5122..f8cf809d 100644
--- a/BurnOutSharp.Wrappers/MSDOS.cs
+++ b/BurnOutSharp.Wrappers/MSDOS.cs
@@ -105,18 +105,9 @@ namespace BurnOutSharp.Wrappers
/// An MS-DOS executable wrapper on success, null on failure
public static MSDOS Create(byte[] data, int offset)
{
- var executable = Builder.MSDOS.ParseExecutable(data, offset);
- if (executable == null)
- return null;
-
- var wrapper = new MSDOS
- {
- _executable = executable,
- _dataSource = DataSource.ByteArray,
- _byteArrayData = data,
- _byteArrayOffset = offset,
- };
- return wrapper;
+ MemoryStream dataStream = new MemoryStream(data);
+ dataStream.Position = offset;
+ return Create(dataStream);
}
///
diff --git a/BurnOutSharp.Wrappers/MicrosoftCabinet.cs b/BurnOutSharp.Wrappers/MicrosoftCabinet.cs
index 96a94cd0..4d96ef6c 100644
--- a/BurnOutSharp.Wrappers/MicrosoftCabinet.cs
+++ b/BurnOutSharp.Wrappers/MicrosoftCabinet.cs
@@ -116,18 +116,9 @@ namespace BurnOutSharp.Wrappers
/// A cabinet wrapper on success, null on failure
public static MicrosoftCabinet Create(byte[] data, int offset)
{
- var cabinet = Builder.MicrosoftCabinet.ParseCabinet(data, offset);
- if (cabinet == null)
- return null;
-
- var wrapper = new MicrosoftCabinet
- {
- _cabinet = cabinet,
- _dataSource = DataSource.ByteArray,
- _byteArrayData = data,
- _byteArrayOffset = offset,
- };
- return wrapper;
+ MemoryStream dataStream = new MemoryStream(data);
+ dataStream.Position = offset;
+ return Create(dataStream);
}
///
diff --git a/BurnOutSharp.Wrappers/NewExecutable.cs b/BurnOutSharp.Wrappers/NewExecutable.cs
index 557c001f..41387bae 100644
--- a/BurnOutSharp.Wrappers/NewExecutable.cs
+++ b/BurnOutSharp.Wrappers/NewExecutable.cs
@@ -233,18 +233,9 @@ namespace BurnOutSharp.Wrappers
/// An NE executable wrapper on success, null on failure
public static NewExecutable Create(byte[] data, int offset)
{
- var executable = Builder.NewExecutable.ParseExecutable(data, offset);
- if (executable == null)
- return null;
-
- var wrapper = new NewExecutable
- {
- _executable = executable,
- _dataSource = DataSource.ByteArray,
- _byteArrayData = data,
- _byteArrayOffset = offset,
- };
- return wrapper;
+ MemoryStream dataStream = new MemoryStream(data);
+ dataStream.Position = offset;
+ return Create(dataStream);
}
///
diff --git a/BurnOutSharp.Wrappers/PortableExecutable.cs b/BurnOutSharp.Wrappers/PortableExecutable.cs
index 52a7541f..8ac985ca 100644
--- a/BurnOutSharp.Wrappers/PortableExecutable.cs
+++ b/BurnOutSharp.Wrappers/PortableExecutable.cs
@@ -871,18 +871,9 @@ namespace BurnOutSharp.Wrappers
/// A PE executable wrapper on success, null on failure
public static PortableExecutable Create(byte[] data, int offset)
{
- var executable = Builder.PortableExecutable.ParseExecutable(data, offset);
- if (executable == null)
- return null;
-
- var wrapper = new PortableExecutable
- {
- _executable = executable,
- _dataSource = DataSource.ByteArray,
- _byteArrayData = data,
- _byteArrayOffset = offset,
- };
- return wrapper;
+ MemoryStream dataStream = new MemoryStream(data);
+ dataStream.Position = offset;
+ return Create(dataStream);
}
///