/// <summary> /// Transforms a binary DBIN2 file into a serializable object. /// </summary> /// <param name="FileName">The file name of the binary file</param> /// <returns>The object</returns> private static DBIN2 Unbinarize(string FileName) { DBIN2 Output = new DBIN2(); using (FileStream DBIN2 = new FileStream(FileName, FileMode.Open)) { EncryptedBinary Reader = new EncryptedBinary(DBIN2); string Signature = Reader.ReadString(4); if (Signature != "DBN2") { throw new Exception("DBN2 signature not found!"); } Output.Key = Reader.Key = Reader.ReadUInt32(); uint Entries = Reader.ReadUInt32XOrBE(); Output.Unknown = Reader.ReadUInt32XOrBE(); Output.Entries = new SDL2Entry[Entries]; for (int i = 0; i < Entries; i++) { DBIN2.Seek(0x10 + i * 0x10, SeekOrigin.Begin); SDL2Entry Entry = new SDL2Entry(); Entry.Unknown0 = Reader.ReadUInt32XOrBE(); Entry.Unknown1 = Reader.ReadUInt32XOrBE(); uint Offset = Reader.ReadUInt32XOrBE(); uint Length = Reader.ReadUInt32XOrBE(); byte[] Buffer = new byte[Length]; DBIN2.Seek(Offset, SeekOrigin.Begin); DBIN2.Read(Buffer, 0, Buffer.Length); Entry.SDL2 = SDL2.GetDataFromBuffer(Buffer); Output.Entries[i] = Entry; } } return(Output); }
/// <summary> /// Transforms a binary DBIN2 file into a serializable object. /// </summary> /// <param name="FileName">The file name of the binary file</param> /// <returns>The object</returns> private static DBIN2 Unbinarize(string FileName) { DBIN2 Output = new DBIN2(); using (FileStream DBIN2 = new FileStream(FileName, FileMode.Open)) { EncryptedBinary Reader = new EncryptedBinary(DBIN2); string Signature = Reader.ReadString(4); if (Signature != "DBN2") throw new Exception("DBN2 signature not found!"); Output.Key = Reader.Key = Reader.ReadUInt32(); uint Entries = Reader.ReadUInt32XOrBE(); Output.Unknown = Reader.ReadUInt32XOrBE(); Output.Entries = new SDL2Entry[Entries]; for (int i = 0; i < Entries; i++) { DBIN2.Seek(0x10 + i * 0x10, SeekOrigin.Begin); SDL2Entry Entry = new SDL2Entry(); Entry.Unknown0 = Reader.ReadUInt32XOrBE(); Entry.Unknown1 = Reader.ReadUInt32XOrBE(); uint Offset = Reader.ReadUInt32XOrBE(); uint Length = Reader.ReadUInt32XOrBE(); byte[] Buffer = new byte[Length]; DBIN2.Seek(Offset, SeekOrigin.Begin); DBIN2.Read(Buffer, 0, Buffer.Length); Entry.SDL2 = SDL2.GetDataFromBuffer(Buffer); Output.Entries[i] = Entry; } } return Output; }