Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }