Arx Fatalis PAK
Choose archive extension:
PAK
- Format Type : Archive
- Endian Order : Little Endian
Format Specifications
// ARCHIVE HEADER
- uint32 {4} - Directory Offset
byte {X} - File Data
// FILES DIRECTORY
- uint32 {4} - Directory Length
// for each directory
- char {X} - Path
- byte {1} - null Path Terminator
- uint32 {4} - Number Of Files
- // for each file
- char {X} - Filename
- byte {1} - null Filename Terminator
- uint32 {4} - File Offset
- uint32 {4} - Packed flag (0 - unpacked, else - PKWARE implode)
- uint32 {4} - Decompressed Length (0 if not packed - use field above)
- uint32 {4} - File Length
- char {X} - Filename
- // for each file
Notes and Comments
- In retail version Directory XORed with string:
AVQF3FCKE50GRIAYXJP2AMEYO5QGA0JGIIH2NHBTVOA1VOGGU5H3GSSIARKPRQPQKKYEOIAQG1XRX0J4F5OEAEFI4DD3LL45VJTVOA1VOGGUKE50GRIAYX
You can easy detect it by compare first 5 bytes with "AVQF3" (first entry always empty and have 0 files: 1 (null Path Terminator) + 4 (Number Of Files) = 5).
MultiEx BMS Script
ImpType StandardTail ; SavePos TailOffOff 0 ; Get TO Long 0 ; GoTo TO 0 ; Get TS Long 0 ; SavePos T 0 ; Math T += 5 ; GoTo T 0 ; Get Path String 0 ; Get FN Long 0 ; For D = 1 To FN ; Set Name String Path ; Get Name String 0 ; SavePos FOO 0 ; Get FO Long 0 ; Get ZipState Long 0 ; Get OrSize Long 0 ; SavePos FSO 0 ; Get FS Long 0 ; Log Name FO FS FOO FSO ; Next D ;
Compatible Programs
- MultiEx Commander
- Game Extractor
- Arx Fatalis .PAK unpacker - with C++ source code