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