Arx Fatalis PAK: Difference between revisions
Jump to navigation
Jump to search
(→Format Specifications: fixed) |
(fixed) |
||
| Line 32: | Line 32: | ||
<br> | <br> | ||
</b></tt> | </b></tt> | ||
=== 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 === | === MultiEx BMS Script === | ||
| Line 63: | Line 71: | ||
* [[MultiEx_Commander|MultiEx Commander]] | * [[MultiEx_Commander|MultiEx Commander]] | ||
* [[Game Extractor|Game Extractor]]<br> | * [[Game Extractor|Game Extractor]]<br> | ||
* [http://www.ctpax-x.ru/?goto=files&show=100 Arx Fatalis .PAK unpacker] - with C++ source code | |||
Revision as of 12:00, 9 July 2011
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