SpellForce PAK: Difference between revisions
Jump to navigation
Jump to search
imported>Ikskoks |
imported>Ikskoks |
||
| Line 12: | Line 12: | ||
=== Format Specifications === | === Format Specifications === | ||
< | <div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;"> | ||
<pre> | |||
char | // SpellForce 1 (PC) PAK file format | ||
uint32 | // little endian | ||
uint32 | |||
uint32 | |||
uint32 | // header (92 bytes in total) | ||
4 bytes (uint32) - version number // 4 | |||
24 bytes (char) - signature // "MASSIVE PAKFILE V 4.0\r\n\0" | |||
48 bytes (12 * uint32) - unknown values | |||
4 bytes (uint32) - number of files | |||
4 bytes (uint32) - root index | |||
4 bytes (uint32) - data start offset | |||
4 bytes (uint32) - archive size | |||
// directory (16 bytes per entry) | |||
number_of_files * | |||
{ | |||
4 bytes (uint32) - file size | |||
</ | 4 bytes (uint32) - file offset (relative to data_start_offset) | ||
4 bytes (uint32) - filename offset (relative to name_list_offset_start) | |||
4 bytes (uint32) - directory offset (relative to name_list_offset_start) | |||
} | |||
// name list | |||
2 bytes (uint16) - name list hash? | |||
number_of_entries * | |||
{ | |||
x bytes (char) - filename or directory name // all strings are reversed | |||
1 byte (uint8) - null terminator | |||
} | |||
// data | |||
number_of_files * | |||
{ | |||
x bytes - file data | |||
{ | |||
x bytes - padding | |||
</pre> | |||
</div> | |||
=== Games === | === Games === | ||
Revision as of 19:59, 27 October 2022
Choose archive extension:
PAK
- Format Type : Archive
- Endian Order : Little Endian
- Signature : MASSIVE PAKFILE V 4.0
Format Specifications
// SpellForce 1 (PC) PAK file format
// little endian
// header (92 bytes in total)
4 bytes (uint32) - version number // 4
24 bytes (char) - signature // "MASSIVE PAKFILE V 4.0\r\n\0"
48 bytes (12 * uint32) - unknown values
4 bytes (uint32) - number of files
4 bytes (uint32) - root index
4 bytes (uint32) - data start offset
4 bytes (uint32) - archive size
// directory (16 bytes per entry)
number_of_files *
{
4 bytes (uint32) - file size
4 bytes (uint32) - file offset (relative to data_start_offset)
4 bytes (uint32) - filename offset (relative to name_list_offset_start)
4 bytes (uint32) - directory offset (relative to name_list_offset_start)
}
// name list
2 bytes (uint16) - name list hash?
number_of_entries *
{
x bytes (char) - filename or directory name // all strings are reversed
1 byte (uint8) - null terminator
}
// data
number_of_files *
{
x bytes - file data
{
x bytes - padding
Games
List of games using this format:
- SpellForce: The Order of Dawn (PC) (*.PAK)
- SpellForce: The Breath of Winter (PC) (*.PAK)
- SpellForce: Shadow of The Phoenix (PC) (*.PAK)
QuickBMS Script
Compatible Programs
- Dragon Unpacker
- Game Extractor
- Game Archive UnPacker (GAUP plugin)
- SpellForce RE Tool
See Also
- Plugin_PAK_MASSIVE.java (from Game Extractor source code)