Bone Data Section

This section describes the actor's bones, including the hierarchy and pose position.

Header

Offset Type Description
0x0 Magic (0x007B7960 for Sluggers)
0x4 uint16 Actor ID
0x6 uint16 Bone count
0x8 uint32 Unknown (Unimportant afaik)
0xc uint32 First bone pointer (relative to header)
0x10 uint32 GEO name pointer (relative to header). This is the name of the geometry vertex file the bones are for.
0x14 uint16 Skin file id
0x16 byte[2] Padding
0x18 uint32 User data size
0x1c uint32 User data pointer (relative to header). In Sluggers, this holds linking information between bones and animations tracks.

Bone

Offset Type Description
0x0 uint32 Orientation control pointer (relative to header). This is an SRT that holds the bone's pose position, can be null.
0x4 uint32 Previous sibling bone pointer (relative to header)
0x8 uint32 Next sibling bone pointer (relative to header)
0xc uint32 Parent bone pointer (relative to header)
0x10 uint32 First child bone pointer (relative to header)
0x14 uint16 GEO file ID, which mesh in the mesh data this bone controls. I think if this is FFFF, the first mesh must be skinned and this bone controls a portion of it.
0x16 uint16 Bone ID
0x18 bool Is this bone positioned relative to its parent? (Usually true)
0x19 uint8 Something about draw priority, usually 0
0x1a byte[2] Padding

SRT

SRT stands for scale, rotation, transform.

Offset Type Description
0x0 uint8 Type (I've seen 0x4, 0x8, and 0xc, but they all seem to behave the same)
0x1 byte[3] Padding
0x4 float[3] Scale (x, y, z)
0x10 float[4] Quaternion (x, y, z, w)
0x20 float[3] Translation (x, y, z)
0x2c byte[8] Padding? Don't know why it's here.