| |
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
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..
|
|