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.