Amiga MOD Packers Described - Prorunner 2.0 Described
Anim ripped from Digital Illusion's MotorHead
Yeah :) at least in HTML format !.
Anim ripped from Digital Illusion's MotorHead




  Format name : Prorunner 2.0
Created by : Cosmos / Sanity (1992)

Sources :
*
"Rampage" demo by Tek


OFFSET
SIZE (bytes)
COMMENT
0
4
4
4
- ID "SNT!"
- pointer to the sample data (thx gryzor :)

The following is repeated 31 times
with 8 bytes description for one sample
8
Ah
Bh
Ch
Eh
2
1
1
2
2
- Sample Size / 2
- Finetune (0->F)
- Volume (0->40h)
- Loop Start / 2
- Loop Size / 2


100h
101h
102h
182h
-
282h
1
1
80h
100h
-
80h
- Number of pattern to play
- Noisetracker byte
- Pattern order table
- ?? are those used in fact ?!? might be used when playing ...
- Pointer table
  • Pointer table contains 64 pointers ( one word each ) pointing at the first pattern data. It starts at 0000h and goes on adding pattern sizes. As an exemple, if pattern 0 is 1024 bytes long and pattern 1 is 1000 bytes long, first pointer table will be 0000, second will be 0400. the rest is filled with 0000h

  • 302h
    ?!?
    - Pattern data


  • we get something like that :


  • pattern 0 :
  • row 0 | voice 1 | voice 2 | voice 3 | voice 4 |
  • row 1 | voice 1 | voice 2 | voice 3 | voice 4 |
  • row 2 ...
  • row 63| voice 1 | voice 2 | voice 3 | voice 4 |

  • pattern 1 : ...


  • the size of each pattern is variable and is between 100h and 300h bytes. One voice can be 1 or 3 bytes long. it depends if bit 7 of first byte is set to 1. If so, the size of this voice is 1 byte. It means there's nothing at this line. If this bit is set to 0, the size of this voice is 3 bytes. so we get :


  • * case 1:
     1000 0000
     |
     if this bit is set, nothing follows and this is an
    empty note. it meens for PTK four bytes set to 00h.

    * case 2:
     1100 0000
      |
     if both first bits are set to 1, it meens that previous
    NON NUL (!) note IN THIS ROW will be re-used ...

    * case 3: (first bit is set to 0)
      0000 0000  0000 0000  0000 0000
      ||     ||     | |  |  |       |
     -| \   /  \   /   \/    \     /
    | relative sample effect  effect
    |   note   number         value
    |  number
    |------------description bit set to 0
  • sample number : hard to get by this way of coding :( ... anyway, let's try tro explain it ...

  • first, we agree it's coded on 5 bits.
    0 0 0 0 0 ( in the order of saving )
    I name these bit 0, bit 1, bit 2, bit 3 and bit 4 in the same order of saving in fact, all we got to do, is to rol the whole five bits by one on the left.
    exemples :
       10000 will become 00001   (sample 1)
       01010 will become 10100   (sample 20)
       00010 will become 00100   (sample 4)
       etc...

    relative note number: (Protracker)
    C-1 to B-1 : 856,808,762,720,678,640,604,570,538,508,480,453
    C-2 to B-2 : 428,404,381,360,339,320,302,285,269,254,240,226
    C-3 to B-3 : 214,202,190,180,170,160,151,143,135,127,120,113

    becomes : (PRUN2)
    C-1 to B-1 : 01,03,05,07,09,0b,0d,0f,11,13,15,17
    C-2 to B-2 : 19,1b,1d,1f,21,23,25,27,29,2b,2d,2f
    C-3 to B-3 : 31,33,35,37,39,3b,3d,3f,41,43,45,47


    Follow Sample datas stored like Protracker. Nothing is packed..
     

    Click "back" to go back :)