...
Structure and fields
Field |
Type |
Comments |
objects |
Block? |
|
Field | Type | Comments | animation | Index (animations) | | function | enum | | Option | Value | Comments | a out | 0x0 | | b out | 0x1 | | c out | 0x2 | | d out | 0x3 | | | function controls | enum | | Option | Value | Comments | frame | 0x0 | | scale | 0x1 | | | | pad(2) | | | pad(12) | | |
units |
Block? |
|
Field | Type | Comments | label | char[32] | | right yaw per frame | Angle: f32 | | left yaw per frame | Angle: f32 | | right frame count | u16 | | left frame count | u16 | | down pitch per frame | Angle: f32 | | up pitch per frame | Angle: f32 | | down pitch frame count | u16 | | up pitch frame count | u16 | | | pad(8) | | animations | Block? | | Field | Type | Comments | animation | Index (animations) | | | ik points | Block? | | Field | Type | Comments | marker | char[32] | | attach to marker | char[32] | | | weapons | Block? | | Field | Type | Comments | name | char[32] | | grip marker | char[32] | | hand marker | char[32] | | right yaw per frame | Angle: f32 | | left yaw per frame | Angle: f32 | | right frame count | u16 | | left frame count | u16 | | down pitch per frame | Angle: f32 | | up pitch per frame | Angle: f32 | | down pitch frame count | u16 | | up pitch frame count | u16 | | | pad(32) | | animations | Block? | | Field | Type | Comments | animation | Index (animations) | | | ik point | Block? | | Field | Type | Comments | marker | char[32] | | attach to marker | char[32] | | | weapon types | Block? | | Field | Type | Comments | label | char[32] | | | pad(16) | | animations | Block? | | Field | Type | Comments | animation | Index (animations) | | | | | |
weapons |
Block? |
|
Field | Type | Comments | | pad(16) | | animations | Block? | | Field | Type | Comments | animation | Index (animations) | | | |
vehicles |
Block? |
|
Field | Type | Comments | right yaw per frame | Angle: f32 | | left yaw per frame | Angle: f32 | | right frame count | u16 | | left frame count | u16 | | down pitch per frame | Angle: f32 | | up pitch per frame | Angle: f32 | | down pitch frame count | u16 | | up pitch frame count | u16 | | | pad(68) | | animations | Block? | | Field | Type | Comments | animation | Index (animations) | | | suspension animations | Block? | | Field | Type | Comments | mass point index | Index: u16 | | animation | Index (animations) | | full extension ground depth | f32 | | full compression ground depth | f32 | | | pad(8) | | | |
devices |
Block? |
|
Field | Type | Comments | | pad(84) | | animations | Block? | | Field | Type | Comments | animation | Index (animations) | | | |
unit damage |
Block? |
|
Field | Type | Comments | animation | Index (animations) | | |
first person weapons |
Block? |
|
Field | Type | Comments | | pad(16) | | animations | Block? | | Field | Type | Comments | animation | Index (animations) | | | |
sound references |
Block? |
|
Field | Type | Comments | sound | Reference? | | | pad(4) | | |
limp body node radius |
f32 |
|
flags |
bitfield(16) |
|
Flag | Mask | Comments | compress all animations | 0x1 | | force idle compression | 0x2 | | |
|
pad(2) |
|
nodes |
Block? |
|
Field | Type | Comments | name | char[32] | | next sibling node index | Index (nodes) | | first child node index | Index (nodes) | | parent node index | Index (nodes) | | | pad(2) | | node joint flags | bitfield(32) | | Flag | Mask | Comments | ball socket | 0x1 | | hinge | 0x2 | | no movement | 0x4 | | | base vector | Vector3D (3) | | vector range | f32 | | | pad(4) | | |
animations |
Block? |
|
Field | Type | Comments | name | char[32] | | type | enum | | Option | Value | Comments | base | 0x0 | | overlay | 0x1 | | replacement | 0x2 | | | frame count | u16 | | frame size | u16 | | frame info type | enum | | Option | Value | Comments | none | 0x0 | | dx dy | 0x1 | | dx dy dyaw | 0x2 | | dx dy dz dyaw | 0x3 | | | node list checksum | u32 | | node count | u16 | | loop frame index | Index: u16 | | weight | Fraction: f32 | | key frame index | Index: u16 | | second key frame index | Index: u16 | | next animation | Index (animations) | | flags | bitfield(16) | | Flag | Mask | Comments | compressed data | 0x1 | | world relative | 0x2 | | 25hz pal | 0x4 | | | sound | Index (sound references) | | sound frame index | Index: u16 | | | i8 | | | i8 | | main animation index | u16 (little endian?) | - Only set when the tag is compiled into a map cache.
| relative weight | f32 (little endian?) | - Only set when the tag is compiled into a map cache.
| frame info | TagDataOffset (4) - size:
u32 - external:
u32 - file offset:
u32 - pointer:
u64 | | node transform flag data | u32 x2 | | | pad(8) | | node rotation flag data | u32 x2 | | | pad(8) | | node scale flag data | u32 x2 | | | pad(4) | | offset to compressed data | u32 | | default data | TagDataOffset (4) - size:
u32 - external:
u32 - file offset:
u32 - pointer:
u64 | | frame data | TagDataOffset (4) - size:
u32 - external:
u32 - file offset:
u32 - pointer:
u64 | | |
This information was partially generated using Invader tag definitions.
Acknowledgements
Thanks to the following individuals for their research or contributions to this topic:
- Kavawuvi (Invader tag definitions)
- MosesOfEgypt (Tag structure research)