ProPacker 2.1

From ExoticA

General Information

A module packer created by Christian Estrup.

Technical Information

File Prefix/Extension

File format

Overall, a standard Protracker song is broken down from a standard 1024 byte pattern (4 channels * 64 notes * 4 bytes per note) into 4 patterns, one per audio channel. If any such one-channel pattern appears more than once in the song (e.g. repetitive drum patterns), it can now be de-duplicated. The size of the song can increase at this point, because instead of having one position list for all 4 channels (128 bytes), there are now 4 independent lists (128 * 4 = 512 bytes).

The next step is to take all notes in all patterns and build a unique list of notes. For example, the "--- 00000" note ("no note") is very common. Assuming there are less than 65536 unique notes in the music, every note can be converted to a 16-bit index into a table of the 4-byte notes.

Offset Length Description
0 240 31 standard Protracker "sample info" structures, without sample names
Offset Length Description
0 2 Sample length in words (double to get length in bytes). 0 = no sample
2 1 Sample finetune (between -8 and +7)
3 1 Sample volume (either 0 (no sample) or between 1 and 64)
4 2 Sample repeat start in words (0 means no repeat)
6 2 Sample repeat length in words (2 means no repeat)
240 1 maximum song position in this module: songlength
241 1 maximum song position possible: should always be $7F
242 128 pattern list for audio channel 0. Only offsets 0 to songlength (inclusive) are used
378 128 pattern list for audio channel 1. Only offsets 0 to songlength (inclusive) are used
506 128 pattern list for audio channel 2. Only offsets 0 to songlength (inclusive) are used
634 128 pattern list for audio channel 3. Only offsets 0 to songlength (inclusive) are used
762 pattlen pattern data: each pattern is 64 words (128 bytes) and each word is an index into the packed pattern data below. The size of this section, pattlen, is determined by the maximum pattern number seen in the pattern list data above, e.g. if the highest pattern number seen is $03, patterns $0,$1,$2,$3 exist (4 patterns) and consume 4*$80 bytes
762+pattlen 4 packed pattern data length datalen
766+pattlen datalen packed pattern data (normal protracker pattern data, but each unique longword (note+effect) is only seen once in this section, and is referenced by an index from the pattern data section)
766+pattlen+datalen add all sample lengths sample data for each sample, identical to Protracker. Each sample is a multiple of 2 bytes in length

Music in the UnExoticA collection


Game Year Team / Publisher
Behind the Iron Gate 1995 Ego / Black Legend
Cool World 1992 Twilight / Ocean
Kajko i Kokosz 1994 Seven Stars / Seven Stars
Za Zelazna Brama 1995 Ego Software / Ego Software


Demo Year Group / Party
Scoopex Plays 2 Unlimited 1993 Scoopex / The Gathering '93
Main PageUpdates
Browse Games By: TitleComposerYearFormatPublisherTeam
Browse Demos By: TitleComposerYearFormatGroupParty