mirror of
https://github.com/WerWolv/ImHex-Patterns.git
synced 2026-03-28 07:47:02 -05:00
48 lines
896 B
Rust
48 lines
896 B
Rust
#pragma description Assassin's Creed: Unity's Compressed .data file
|
|
#pragma author haru233
|
|
|
|
// many thanks to AxCut
|
|
// ImHex Hex Pattern File for Assassin's Creed: Unity's Compressed .data files
|
|
|
|
|
|
import std.core;
|
|
import std.mem;
|
|
|
|
enum CompressionType : u8 {
|
|
LZO1X_ = 0x00, // Both 0x00 and 0x01 mean LZO1X
|
|
LZO1X = 0x01,
|
|
LZO2A = 0x02,
|
|
xmemdecompress = 0x03,
|
|
LZO1C = 0x05
|
|
};
|
|
|
|
struct CHUNK {
|
|
u16 Uncompressed_Size;
|
|
u16 Compressed_Size;
|
|
};
|
|
|
|
struct CHUNK_Data {
|
|
u32 Hash;
|
|
|
|
u64 i = std::core::array_index();
|
|
u8 data[parent.chunk[i].Compressed_Size];
|
|
};
|
|
|
|
struct PACK {
|
|
u64 ID;
|
|
padding[2];
|
|
CompressionType Compression_Type;
|
|
padding[3];
|
|
u8 Version;
|
|
u16 CHUNK_Count;
|
|
|
|
CHUNK chunk[CHUNK_Count];
|
|
CHUNK_Data data[CHUNK_Count];
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
PACK pack[while(!std::mem::eof())] @0x00;
|