Quake PAK
Dan Tobias (Talk | contribs) |
|||
| (8 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
{{FormatInfo | {{FormatInfo | ||
| − | | name = Quake | + | | name = Quake PAK |
| formattype = electronic | | formattype = electronic | ||
| subcat = Game data files | | subcat = Game data files | ||
| Line 31: | Line 31: | ||
* [[Half-Life]] | * [[Half-Life]] | ||
| − | Later Id Tech games (starting from Quake 3/ID Tech 3) switched to [[ZIP]] format with | + | Later Id Tech games (starting from Quake 3/ID Tech 3) switched to [[ZIP]] format with '''[[Quake PK3|.pk3]]''' extension. |
== Description == | == Description == | ||
| − | |||
This file format is very simple. File starts with <code>PACK</code> magic string (4 octets), then 4-byte offset to file table and 4-byte length (measured in bytes) of it. | This file format is very simple. File starts with <code>PACK</code> magic string (4 octets), then 4-byte offset to file table and 4-byte length (measured in bytes) of it. | ||
| Line 41: | Line 40: | ||
* file name, including path: 56-byte null-terminated string. No leading slash. | * file name, including path: 56-byte null-terminated string. No leading slash. | ||
* file contents offset (from beginning of .pak file), 4 bytes | * file contents offset (from beginning of .pak file), 4 bytes | ||
| − | * file contents length | + | * file contents length, 4 bytes |
| − | All numbers are [[Endianness|little-endian]]. | + | All numbers are [[Endianness|little-endian]]. Since each file entry of the table consists of 64 bytes, the header's file table length (offset 8 to 11) must always be a multiple of 64, and most likely never 0. If the 4 bytes for the file table offset (offset 4 to 7) would be <code>0x02 0x00 0x00 0x00</code> or <code>0x03 0x00 0x00 0x00</code> it would also match [[Git]]'s .pack files. If the first byte is <code>0x00</code> it would also match [[Packdir]]. |
| − | == | + | == Software == |
| + | * [http://www.watto.org/game_extractor.html Game Extractor] | ||
| + | * [https://github.com/PascalVault/Lazarus_Unpacker Open-source library in Free Pascal] | ||
| + | == Sample files == | ||
| + | * https://telparia.com/fileFormatSamples/archive/quakePAK/ | ||
| + | |||
| + | == Links == | ||
* [https://quakewiki.org/wiki/.pak .pak — Quake Wiki] | * [https://quakewiki.org/wiki/.pak .pak — Quake Wiki] | ||
| + | * [https://web.archive.org/web/20160711041711/http://debian.fmi.uni-sofia.bg/~sergei/cgsr/docs/pak.txt Quake PAK Format] (from archive.org) | ||
| + | |||
| + | [[Category:Id Software]] | ||
| + | [[Category:Archiving]] | ||
Revision as of 12:55, 1 November 2023
Quake .pak is the container file format for storing game assets in versions 1 and 2 of ID Tech game engine and some derivatives of it, including following games:
Later Id Tech games (starting from Quake 3/ID Tech 3) switched to ZIP format with .pk3 extension.
Contents |
Description
This file format is very simple. File starts with PACK magic string (4 octets), then 4-byte offset to file table and 4-byte length (measured in bytes) of it.
File table consists of entries consisting of:
- file name, including path: 56-byte null-terminated string. No leading slash.
- file contents offset (from beginning of .pak file), 4 bytes
- file contents length, 4 bytes
All numbers are little-endian. Since each file entry of the table consists of 64 bytes, the header's file table length (offset 8 to 11) must always be a multiple of 64, and most likely never 0. If the 4 bytes for the file table offset (offset 4 to 7) would be 0x02 0x00 0x00 0x00 or 0x03 0x00 0x00 0x00 it would also match Git's .pack files. If the first byte is 0x00 it would also match Packdir.
Software
Sample files
Links
- .pak — Quake Wiki
- Quake PAK Format (from archive.org)