Pro-Pack

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
m
(Example commands)
 
(8 intermediate revisions by 3 users not shown)
Line 2: Line 2:
 
|formattype=electronic
 
|formattype=electronic
 
|subcat=Compression
 
|subcat=Compression
|extensions={{ext|rnc}}
+
|extensions={{ext|rnc}}, others
 +
|wikidata={{wikidata|Q105860435}}, {{wikidata|Q105860831}}, {{wikidata|Q105855066}}
 
|released=1991
 
|released=1991
 
}}
 
}}
'''Pro-Pack''', more commonly known as '''RNC''', is a file compression utility used by several commercial games. It was developed by Rob Northen, who also produced the [[wikipedia:Rob Northen copylock]] copy protection scheme.
+
'''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:Rob Northen copylock|Wikipedia article]]) copy protection scheme.
  
The compression utility was made available for the Amiga and IBM PC. It can compress [[Amiga Hunk]], [[MS-DOS EXE]], Atari ST [[Atari ST executable|TOS]] and Atari Lynx executables, as well as raw data files. Decompression routines written in assembly language were provided for 680x0 processors (Amiga, Atari ST, Megadrive), 80x86 (IBM PC), 65c816 (SNES) and 65C02 (Atari Lynx)  
+
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]], [[MS-DOS EXE|DOS EXE]] (compressed to EXE), [[DOS executable (.com)|DOS COM]] (compressed to COM), Atari ST [[Atari ST executable|TOS]], MC68000, and Atari Lynx executables.
  
 
== Identification ==
 
== Identification ==
ProPacked data files begin with ASCII "{{magic|RNC}}", followed by an 0x01 or 0x02 byte to indicate the compression method used.
+
Many of the formats feature a common compression "header", of about 18 bytes, which starts with the ASCII signature "{{magic|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 "{{magic|RNC}}", followed by an <code>0x01</code> or <code>0x02</code> byte to indicate the compression method used.
 +
 
 +
=== Identification of archive files ===
 +
ProPack archive files begin with ASCII "{{magic|RNCA}}".
 +
 
 +
=== Identification of COM files ===
 +
The <code>-m2</code> compression option has a big effect on compressed COM format. The <code>-k</code> ("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 {{magic|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 <code>-k</code> was used.
 +
 
 +
Files with <code>-m2</code> compression start with the byte pattern {{magic|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 <code>-m2</code>, or 362 if <code>-k</code> was also used.
 +
 
 +
=== Identification of EXE files ===
 +
Define byte sequence ''B'' to be {{magic|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)''
 +
 
 +
== Examples ==
 +
Here are some example commands, based on the DOS PROPACK utilities.
 +
 
 +
=== Examples - v2.08 compress data file ===
 +
To compress data files FILE1.DAT and FILE2.DAT:
 +
 
 +
PP.EXE p d FILE1.DAT FILE2.DAT
 +
 
 +
Creates compressed files FILE1.RNC and FILE2.RNC.
 +
 
 +
=== Examples - v2.08 compress DOS EXE file ===
 +
To create a compressed executable file:
 +
 
 +
PP.EXE p p EXAMPLE.EXE
 +
 
 +
Creates EXAMPLE.RNC, an EXE file with extension .RNC. You'll then want to rename EXAMPLE.RNC to something.EXE.
 +
 
 +
=== Examples - v2.14+ compress data file ===
 +
To replace FILE1.DAT and FILE2.DAT with compressed files:
 +
 
 +
PP.EXE p FILE1.DAT FILE2.DAT
 +
 
 +
=== Examples - v2.14+ compress DOS EXE file ===
 +
To replace EXAMPLE.EXE with a compressed executable file:
 +
 
 +
PP.EXE p -fp EXAMPLE.EXE
 +
 
 +
=== Examples - v2.14+ create archive file ===
 +
To create archive ARCHIVE.RNC containing FILE1.DAT and FILE2.DAT:
 +
 
 +
PP.EXE c ARCHIVE.RNC FILE1.DAT FILE2.DAT
  
 
== Format documentation ==
 
== Format documentation ==
 
* [https://www.segaretro.org/Rob_Northen_compression Reverse-engineered data format from Sega Retro]
 
* [https://www.segaretro.org/Rob_Northen_compression Reverse-engineered data format from Sega Retro]
 +
* [https://wiki.multimedia.cx/index.php/RNC_ProPack MultimediaWiki article]
  
 
== Software ==
 
== Software ==
 
* [http://aminet.net/package/util/pack/RNC_ProPack 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
 
* [http://aminet.net/package/util/pack/RNC_ProPack 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
 +
* {{OldskoolDOSEXE}} → DOSEXE Executable Tools Pack → packers/propack.* (has 2.08, 2.14, 2.19)
 +
* [http://old-dos.ru/index.php?page=files&mode=files&do=show&id=5325 Various versions, at old-dos.ru]
 
* [https://github.com/lab313ru/rnc_propack_source Pro-Pack compressor and decompressor written in C]
 
* [https://github.com/lab313ru/rnc_propack_source Pro-Pack compressor and decompressor written in C]
* [https://github.com/temisu/ancient_format_decompressor Ancient Format Decompressor]
+
* [https://github.com/temisu/ancient Ancient]
  
 
== Sample files ==
 
== Sample files ==
* https://telparia.com/fileFormatSamples/archive/TRACK0-0.DAT
+
Various:
 +
* {{DexvertSamples|archive/rnc}}
 +
 
 +
Compressed EXE:
 +
* {{CdTextfiles|simtel/stmsdos9709/disk1/DISC1/4DOS/SB4_4DOS.ZIP|SB4_4DOS.ZIP}} → INSTALL.EXE
 +
* {{CdTextfiles|simtel/stmsdos9709/disk1/DISC1/DISKUTIL/35SEC120.ZIP|35SEC120.ZIP}} → PMKLOGO.EXE
 +
* {{CdTextfiles|cream/cream05/games/kryptegg.zip|kryptegg.zip}} → KUKOO2.EXE
 +
* [https://archive.org/details/So_Much_Shareware_5_CD-ROM_Power_User_Software_1995 So Much Shareware/5]...
 +
** MUSIC/PLENTY.ZIP → PLENTY.EXE
 +
** MUSIC/YAKUZA.ZIP → INTRO.EXE
 +
** UTILS/PGS099A.ZIP → PGS.EXE
 +
* [https://archive.org/details/Power_DOS_CD-ROM_Walnut_Creek_July_1995 Power DOS July 1995]...
 +
** DEMO/SOUND/FIDDERLI.ZIP → FIDDERLI.EXE
 +
** DEMO/SOURCE/TYO92ASM.ZIP → XMAS.EXE
  
 
[[Category:Executable compression]]
 
[[Category:Executable compression]]
 +
[[Category:Archiving]]
 
[[Category:Amiga]]
 
[[Category:Amiga]]

Latest revision as of 17:57, 31 January 2024

File Format
Name Pro-Pack
Ontology
Extension(s) .rnc, others
Wikidata ID Q105860435, Q105860831, Q105855066
Released 1991

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

[edit] 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.

[edit] Identification of data files

ProPack data files begin with ASCII "RNC", followed by an 0x01 or 0x02 byte to indicate the compression method used.

[edit] Identification of archive files

ProPack archive files begin with ASCII "RNCA".

[edit] 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.

[edit] 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.

[edit] Identification of other formats

(TODO)

[edit] Examples

Here are some example commands, based on the DOS PROPACK utilities.

[edit] Examples - v2.08 compress data file

To compress data files FILE1.DAT and FILE2.DAT:

PP.EXE p d FILE1.DAT FILE2.DAT

Creates compressed files FILE1.RNC and FILE2.RNC.

[edit] Examples - v2.08 compress DOS EXE file

To create a compressed executable file:

PP.EXE p p EXAMPLE.EXE

Creates EXAMPLE.RNC, an EXE file with extension .RNC. You'll then want to rename EXAMPLE.RNC to something.EXE.

[edit] Examples - v2.14+ compress data file

To replace FILE1.DAT and FILE2.DAT with compressed files:

PP.EXE p FILE1.DAT FILE2.DAT

[edit] Examples - v2.14+ compress DOS EXE file

To replace EXAMPLE.EXE with a compressed executable file:

PP.EXE p -fp EXAMPLE.EXE

[edit] Examples - v2.14+ create archive file

To create archive ARCHIVE.RNC containing FILE1.DAT and FILE2.DAT:

PP.EXE c ARCHIVE.RNC FILE1.DAT FILE2.DAT

[edit] Format documentation

[edit] Software

[edit] Sample files

Various:

Compressed EXE:

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox