Pro-Pack
PROPACK (spelled PRO-PACK in some versions, and also known as RNC compression) is multi-function data compression utility that was used by several commercial games. It was developed by Rob Northen (frequently misspelled "Northern"), who also produced the Rob Northen copylock (Wikipedia article) copy protection scheme.
Binary versions of the software were available for at least Amiga and IBM PC (DOS). Decompression routines written in assembly language were provided for 680x0 processors (Amiga, Atari ST, Megadrive), 80x86 (IBM PC), 65c816 (SNES) and 65C02 (Atari Lynx).
Its native formats include a compressed file format, a compressed archive format (at least in v2.14+), and various executable compression formats. Supported executable formats include Amiga Hunk, DOS EXE (compressed to EXE), DOS COM (compressed to COM), Atari ST TOS, MC68000, and Atari Lynx executables.
Contents |
Identification
Many of the formats feature a common compression "header", of about 18 bytes, which starts with the ASCII signature "RNC
". But in compressed executable formats, finding the header isn't always simple; and files have been observed in which the signature has been modified.
Identification of data files
ProPack data files begin with ASCII "RNC
", followed by an 0x01
or 0x02
byte to indicate the compression method used.
Identification of archive files
ProPack archive files begin with ASCII "RNCA
".
Identification of COM files
The -m2
compression option has a big effect on compressed COM format. The -k
("lock with a key") option has a smaller effect. Other complications may exist.
No version-specific differences have been seen for the version range 2.08-2.19.
Files with default compression start with the byte pattern 83 ec ?? 8b ec be ?? ?? fc e8 41 00 05 00 01 8b
. The "RNC" header is at offset { {the 2-byte integer at offset 6} − 260 }. Known offsets are 502, or 516 if -k
was used.
Files with -m2
compression start with the byte pattern be ?? ?? fc e8 3c 00 05 00 01 8b c8 e8 34 00 8b
. The "RNC" header is at offset { {the 2-byte integer at offset 1} − 260 }. Known offsets are 326 for just -m2
, or 362 if -k
was also used.
Identification of EXE files
Define byte sequence B to be 8c d3 8e c3 8c ca 8e da 8b 0e 08 00 8b f1 83
. For all known compressed EXE formats, B appears either at the execution starting point (refer to MS-DOS EXE#Special file positions), or one byte past it.
For v2.08, the "RNC" header is at offset 32. B appears at the execution starting point, which must be calculated.
For v2.14-2.19, B appears at offset 47. The "RNC" header is at offset {32 + {the 2-byte integer at offset {32 + 8} }, where 32 is the presumed start of code image.
Identification of other formats
(TODO)
Format documentation
Software
- RNC_ProPack.lha - includes the original compressor for IBM PC and Amiga, all the decompression routines mentioned above, plus a MIPS R4300 version for the Nintendo 64 and a Z80 version for the GameBoy
- ANORMAL's DOSEXE collections → DOSEXE Executable Tools Pack → packers/propack.* (has 2.08, 2.14, 2.19)
- Various versions, at old-dos.ru
- Pro-Pack compressor and decompressor written in C
- Ancient
Ed. note: The command-line utility's syntax is challenging to figure out, unforgiving, and different in different versions.