NoiseRunner format
Created by Chaos / Sanity
Analysed by Asle / ReDoX (asle@mygale.org)

Source :
 - six files sent by Gryzor (thx!)

Note: This format reminds me of the XANN packer for two reasons, first, a
     packed file has the same size as the ptk version. Next, all the effect
     commands have been remaped.

Offset    size (byte)    Comment
------    -----------    -------

      ***************************************
      * the following is repeated 31 times  *
      * with 16 bytes description for 1 smp *
******************************************************
                                                     *
  0            1         $00                         *
  1            1         Volume (0 - 40h)            *
  2            4         Sample address (memory)     *
  6            2         Sample size / 2             *
  8            4         Loop start address (memory) *
 12 (0Ch)      2         Loop Size / 2               *
 14 (10h)      2         Finetune or garbage !       *
                                                     *
******************************************************

Note: when saying 'garbage', it's because this format writes itself on
     the ptk. So, these 'garbage' bytes are what was in the ptk before
     the overwriting. About the finetune, if the first byte is < F0h, then
     the two bytes contain datas from the ptk (thx Gryzor for that !).
     Check below for the complete list of finetunes.


496           454        Garbage. As explain above, that what's left of the
(1F0h)                   ptk header. These bytes are to be ignored !.

950            1         Size of the pattern list (as ptk)
(3B6h)

951            1         Noisetracker byte set to $7F (as ptk)
(3B7h)

952           128        Pattern table (as ptk)
(3B8h)       (80h)

1080           4         "M.K." ptk's ID.
(438h)

1084           ?         pattern datas.
(43Ch)


 each pattern follows one after another and is stored 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 1024 bytes. Each note is 4 bytes long and
is stored that way :


  0000-0000  0000-0000  0000-0000  0000-0000
  |       |  |       |  |       |  |       |
   \     /    \     /    \     /    \     /
   effect     effect     relative    Sample
             parameter    note     number (*8)
                         number

Note: All the effect have been remapped.
00: tone portamento            (3 under ptk)
04: slide up                   (1 under ptk)
08: slide down                 (2 under ptk)
0C: no effect                  (0 under ptk)
10: set vibrato                (4 under ptk)
14: portamento + volume slide  (5 under ptk)
18: vibrato + volume slide     (6 under ptk)
1C: ?!? probably tremolo (7)
20: set panning (NOT A PTK COMMAND ... I stick on Gryzor's Prowiz here ..)
24: sample offset              (9 under ptk)
28: volume slide               (A under ptk)
2C: ?!? probably pattern jump (B)
30: set Volume                 (C under ptk)
34: pattern break              (D under ptk)
38: Extended commands          (E under ptk)
3C: set speed                  (F under ptk)

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 : (NoiseRunner)

C-1 to B-1 : 02,04,06,08,0a,0c,0e,10,12,14,16,18
C-2 to B-2 : 1a,1c,1e,20,22,24,26,28,2a,2c,2e,30
C-3 to B-3 : 32,34,36,38,3a,3c,3e,40,42,44,46,48



 Follows Sample datas stored like ProTracker.
Nothing is packed..




-------------------
Finetune (2 bytes)

 There's a finetune IF the first byte if > F0h. The first fine value is BC8
and you 'just' have to add 48h to get the next.

FB-C8  ->  -1  (0Fh)
FC-10  ->  -2  (0Eh)
FC-58  ->  -3  (0Dh)
FC-A0  ->  -4  (0Ch)
FC-E8  ->  -5  (0Bh)
FD-30  ->  -6  (0Ah)
FD-78  ->  -7  (09h)
FD-C0  ->  -8  (08h)
FE-08  ->  +7  (07h)
FE-50  ->  +6  (06h)
FE-98  ->  +5  (05h)
FE-E0  ->  +4  (04h)
FF-28  ->  +3  (03h)
FF-70  ->  +2  (02h)
FF-B8  ->  +1  (01h)

00-00  ->   0  (00h) (no finetune)

 There are some NoiseRunner packed files with 00-00 but not always, as
explained upward.
