Chapter 3 Binary Format

3-16. AnimList

2. AnimGroup Area

AnimGroupHeader | u32 | anim_group_tag
u32 | this_anim_group_index
u32 | anim_group_header_size
u32 | anim_group_size
u32 | anim_name_index
u32 | anim_type
u32 | frame_rate
u32 | anim_num
u32 | anim_loop
u32 | anim_rot_mtx_order
u32 | nintendo_extension_block_size
u32 | user_extension_block_size
| Anim(0)
...
Anim(anim_num - 1)
NintendoExtensionBlock
UserExtensionBlock

Figure: AnimGroup Area Memory Map

u32 anim_group_tag | Tag indicating AnimGroup. Set the following flag.
    TAG_ANIM_GROUP	0x000c0100
u32 this_anim_group_index | Index number of this AnimGroup.
u32 anim_group_header_size | Size of this AnimGroupHeader.
u32 anim_group_size | Size of this AnimGroup.
u32 anim_name_index | Index number of AnimGroup name contained in NameList.
u32 anim_type | Specifies the animation type. The following are currently defined.
    ANIM_TYPE_STATIC	0x00000000
    ANIM_TYPE_FULL		0x00000002
    ANIM_TYPE_KEY		0x00000003
    ANIM_TYPE_BILLBOARD_OBJ	0x00000004
ANIM_TYPE_STATIC converts non-animated data into matrix data like an object. Apply to data for a house or mountain, or a fixed camera view. ANIM_TYPE_FULL performs full frame animation. Specify to include every frame of the animation data ANIM_TYPE_KEY performs key frame animation. Specify to include every key frame of the animation data.

ANIM_TYPE_BILLBOARD_OBJ specifies animation that always faces toward a specified object.

u32 frame_rate | Specifies the animation frame rate.
u32 anim_num | Specifies the number of Anim area.
u32 anim_loop | Sets the number of loops the animation will execute. To set an inifinite number of loops, specify the following:
    ANIM_LOOP_ENDLESS	0x00000000
u32 anim_rot_mtx_order | Specifies the calculation order of X axial, Y axial and Z axial rotation. Use the following flag. The calculation is done backwards. (For example, if ANIM_ROT_ORDER_XYZ is specified, rotation matrix R would be R=Z*Y*X.)
    ANIM_ROT_ORDER_XYZ	0x00010203
    ANIM_ROT_ORDER_XZY	0x00010302
    ANIM_ROT_ORDER_YXZ	0x00020103
    ANIM_ROT_ORDER_YZX	0x00030102
    ANIM_ROT_ORDER_ZXY	0x00020301
    ANIM_ROT_ORDER_ZYX	0x00030201
u32 nintendo_extension_block_size | Nintendo extension block size
u32 user_extension_block_size | User extension block size
Anim | Actual animation data.
NintendoExtensionBlock | Nintendo extension block
UserExtensionBlock | User extension block