What is an ARC file?
ARC is a lossless data compression and archival format developed by System Enhancement Associates (SEA). The file format and the application that creates it both are called ARC. ARC was very popular during the early days of the dial-up BBS as it combined the features of compression and archiving multiple files in the same file. ARC was later replaced by ZIP that offered better compression ratios.
The .arc file extension is used by several other non-related archive file types like the ARC format used by the Internet Archive to store multiple web resources, a different ARC format used by FreeArc archiver, a different format used by Nintendo for resources, etc.
Brief History of ARC File Format
The ARC program was written by Thom Henderson of System Enhancement Associates in 1985. This program grouped files into a single archive file and also compressed them. The files generated by the ARC program used the .arc extension. SEA released the source code for ARC in 1986 and ARC was ported to Unix and Atari ST by Howard Chu in 1987.
Phil Katz developed PKARC and PKXARC for archiving and extracting files. The files worked with the ARC file format and were significantly faster. Unlike ARC, Katz divided the compression and archiving functions between two different files which reduced the memory requirement for running them.
After the lawsuit between SEA and Katz, SEA withdrew from the shareware market and developed ARC+Plus with a full-screen user interface. The ARC format is not common on PC anymore.
ARC File Format
The ARC file consists of a sequence of file header and file followed by the end-of-archive marker as shown below.
file header 1
file 1
file header 2
file 2
.
.
file header n
file n
EOF
ARC File Header
Offset | Label | Type | Value | Description |
---|---|---|---|---|
00 | ARCID | DB | $1A | |
01 | ARCMTD | DB | 00 | Method |
02 | ARCFNT | DS | 12 | filename |
0E | DB | 00 | ||
0F | ARCNSZ | HEX | 00000000 | Compressed size |
13 | ARCDAT | DW | 0000 | File date (MSDOS) |
15 | ARCTIM | DW | 0000 | File time (MSDOS) |
17 | ARCCRC | DW | 0000 | |
19 | ARCOSZ | HEX | 00000000 | Uncompressed size |
1D | ARCFIL | DS | ARCNSZ |
Compression Methods
The compression method byte indicates the compression method used. The following are the compression methods used for the ARC file.
Method | Name | Description |
---|---|---|
0 | Stored | No compression used |
1 | Packed | Repeated running length encoding (RLE) |
2 | Squeezed | Huffman encoding |
3 | Crunched | LZW with 4K buffer, 12 bits codes |
4 | Crunched | First packing, then LZW 4K buffer with 12 bits |
5 | Crunched | Packing, LZW, 4K buffer, variable length (9-12 bits) |
6 | Squashed | LZW, 8K buffer, variable length (9-13 bits) |
7 | Crushed | Packing, then LZW 8K buffer, 2-13 bits (PAK 1.0) |
8 | Distill | Dynamic Huffman with 8K buffer (PAK 2.0) |