I don't know if it helps with reversing key/seq files
but here is the rest of it... (guess work as always)
Code:
struct HEAD // sizeof 39 bytes (0x27)
{
0x00 unsigned char ID[2]; // Presumably controls which texture is used. e.g. MB=Morgab Bernhardt
0x02 unsigned char Flags; // see table 1
0x03 unsigned char KeySeq; // animation to use?
0x04 ?? always zero
0x05 unsigned char MouthWidth; // These may not be unsigned. Not Tested.
0x06 unsigned char MouthHeight;
0x07 unsigned char MouthX; // This is where to draw the moving parts on the main graphic
0x08 unsigned char MouthY; // (replacing what is there already) for facial animation
0x09 unsigned char EyesWidth; // These may not be unsigned. Not Tested.
0x0A unsigned char EyesHeight;
0x0B unsigned char EyesX; // This is where to draw the moving parts on the main graphic
0x0C unsigned char EyesY; // (replacing what is there already) for facial animation
//
0x0D char body_mesh_id // meshes/%d.m3d file
0x0E signed char head_body_x; // seperate from center...padding? does not include the neck.
0x0F signed char head_body_y; // ...
0x10 signed char head_body_z;
//
0x11 char head_mesh_id // meshes/%d.m3d file
0x12 signed char HeadX;
0x13 signed char HeadY;
0x14 signed char HeadZ;
0x15 char head movement multiplier
0x16 char KeyID // for cut-scenes?
0x17 char NeckID;
0x18 signed char NeckX;
0x19 signed char NeckY;
0x1A signed char NeckZ;
0x1B char WeaponID; // 0x27 = bow, 0x33 = sword, etc.
0x1C signed char WeaponX;
0x1D signed char WeaponY;
0x1E signed char WeaponZ;
0x1F char BackpackID;
0x20 signed char BackpackX;
0x21 signed char BackpackY;
0x22 signed char BackpackZ;
0x23 char HelmentID
0x24 signed char HelmentX;
0x25 signed char HelmentY;
0x26 signed char HelmentZ;
};