private static void CompressDCXKRAK(byte[] data, BinaryWriterEx bw) { byte[] compressed = Oodle26.Compress(data, Oodle26.OodleLZ_Compressor.OodleLZ_Compressor_Kraken, Oodle26.OodleLZ_CompressionLevel.OodleLZ_CompressionLevel_Optimal2); bw.WriteASCII("DCX\0"); bw.WriteInt32(0x11000); bw.WriteInt32(0x18); bw.WriteInt32(0x24); bw.WriteInt32(0x44); bw.WriteInt32(0x4C); bw.WriteASCII("DCS\0"); bw.WriteUInt32((uint)data.Length); bw.WriteUInt32((uint)compressed.Length); bw.WriteASCII("DCP\0"); bw.WriteASCII("KRAK"); bw.WriteInt32(0x20); bw.WriteInt32(0x6000000); bw.WriteInt32(0); bw.WriteInt32(0); bw.WriteInt32(0); bw.WriteInt32(0x10100); bw.WriteASCII("DCA\0"); bw.WriteInt32(8); bw.WriteBytes(compressed); bw.Pad(0x10); }
private static byte[] DecompressDCXKRAK(BinaryReaderEx br) { br.AssertASCII("DCX\0"); br.AssertInt32(0x11000); br.AssertInt32(0x18); br.AssertInt32(0x24); br.AssertInt32(0x44); br.AssertInt32(0x4C); br.AssertASCII("DCS\0"); uint uncompressedSize = br.ReadUInt32(); uint compressedSize = br.ReadUInt32(); br.AssertASCII("DCP\0"); br.AssertASCII("KRAK"); br.AssertInt32(0x20); br.AssertInt32(0x6000000); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0x10100); br.AssertASCII("DCA\0"); br.AssertInt32(8); byte[] compressed = br.ReadBytes((int)compressedSize); return(Oodle26.Decompress(compressed, uncompressedSize)); }