Heatseeker mc1.0 format Created by Heatseeker / Cryptoburners (1991) Analysed by Asle / ReDoX (asle@mygale.org) Source : - two Heatseeker packed files sent by Gryzor (thx !) Offset size (byte) Comment ------ ----------- ------- ************************************** * the following is repeated 31 times * * with 8 bytes description for 1 smp * ********************************************************* * 0 2 Sample Size / 2 * (14h) * 2 1 Finetune (0 -> F) * (16h) * 3 1 Volume (0 - 40h) * (17h) * 4 2 Loop Start / 2 * (18h) * 6 2 Loop Size / 2 * (1Ah) * * ********************************************************* 248 1 size of pattern table (F8h) 249 1 noisetracker byte ($7F) (F9h) 250 128 pattern table. same as ptk. (FAh) (80h) 378 ? pattern data. each pattern is saved the same (17Ah) way as protracker. The notes, however are not always saved the same way ... . So, each note takes 4 bytes and is stored that way : case 1: (standard note value) -note value / \ | | 0000 0000 0000 0000 0000 0000 0000 0000 |||| | | | | | | || \\ / / \/ \ / || \--Sample number---/ effect effect \ parameter --description bits set to 0. case 2: (empty lines) number of empty lines to bypass (-1 !) / \ | | 1000 0000 0000 0000 0000 0000 0000 0000 || | \ \ --description bit set to 0 --description bit set to 1 case 3: (repeat track) Here, both description bits are set to 1 (first byte = $C0). When that happens, you have to go back to the track number ((byte3*256)+byte4)/4 (Yes, this value is *4), and read all this track to put it here. The size of this track is 4 !. Simply because it's only a reference ... . nbr of the track to repeat (*4) / \ | | 1100 0000 0000 0000 0000 0000 0000 0000 || \ --description bits set to 1 Note: the first possible nbr to repeat is 0 !. Follow Sample datas stored like Protracker. Nothing is packed..