PAK (ARC extension)

From Just Solve the File Format Problem
Revision as of 15:38, 23 November 2024 by Jsummers (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
File Format
Name PAK (ARC extension)
Ontology
Extension(s) .pak, .sdn
Released 1988

PAK is a DOS utility for managing compressed archive files, developed by NoGate Consulting. It is also the name of one of the file formats it supports: .PAK format.

PAK format is an extension of ARC format. The differences are that it may use some PAK-specific compression methods (see below), and that it has some features made possible by "extended records" stored after the end-of-archive marker.

PAK was originally named GSARC (and used filename extension .ARC), but was quickly renamed to PAK (and the default extension changed to .PAK).

See ARC for more information relevant to PAK format. See also SDN (SDN Project).

Contents

Disambiguation

See PAK for more formats named PAK.

Format details

Compression methods

ARC compression methods unique to PAK:

ID Name Description and remarks
10 Crushed RLE90 + LZW (or LZMW?)
11 Distilled LZ77 + static Huffman coding. Introduced in PAK v2.0.

For other ARC compression methods, see ARC (compression format)#Compression methods.

Self-extracting archives

All versions of PAK and GSARC can create self-extracting EXE archives, either with the /EXE option, or the included EXEMAKE.EXE utility. The original distribution files (e.g. PAK251.EXE) use this format.

Such archives contain an embedded PAK file, with apparently one special case: PAK v1.6 (and only that version) when the file includes remarks (comments). In that case, the remarks are interleaved with the member files in a way that is not normal for PAK format.

Identification

PAK format files made by PAK/GSARC v1.0 typically start with bytes 0x1a 0x0a, and end with 0x1a 0x00.

Files made by PAK v1.5–1.6 typically start with 0x1a 0x0a, and end with 0xfe 0x00.

Files made by PAK v2.0+ typically start with 0x1a 0x0b, and end with 0xfe 0x00.

A file that ends with 0xfe 0x00 could also be identifiable as PAK format if the first byte is 0x1a and the second is 0x02, 0x08, or 0x09. That could happen if the first member file was not compressible, or was compressed with non-default options.

Identification of self-extracting archives

Self-extracting archives for a given version are highly formulaic, and should be easy to identify as such. But it's not clear that there's any simple way to identify all versions.

For GSARC and PAK v1.0, the byte sequence

fb ba 53 03 2e 89 16 65 01 b4 30 cd 21 8b 2e 02

appears at offset 512.

The byte sequence

55 8b ec 8b 46 0a 8b 4e 08 0b c9 74 17 c4 76 04

appears at offset 512 for v1.51-1.6, offset 513 for v2.01-2.10, or offset 515 for v2.50-2.51.

Specifications

The PAK.DOC file contained in the v2.51 distribution includes basic information about .PAK/.ARC format, including the extended records. It does not document the compression schemes in detail.

Software

Sample files

Self-extracting archives:

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox