Chapter 3 Binary Format

3-16. AnimList

3. Anim Area

The Anim area stores actual animation data. The format varies according to the animation type specified in the AnimGroup area. The memory maps for each type follow.

When ANIM_TYPE_STATIC_AANIM_TYPE_FULL is specified

u32 | anim_tag
u32 | this_anim_index
u32 | anim_size
float | translate_x
float | translate_y
float | translate_z
float | rotate_axis_x
float | rotate_axis_y
float | rotate_axis_z
float | rotate_expand_flag
float | scale_x
float | scale_y
float | scale_z

Figure: Anim Area Memory Map
When STATIC_AFULL is specified

u32 anim_tag | Tag indicating Anim. Depending on the animation type specified, choose one of the followings.
    TAG_ANIM_STATIC	0x000c0101
    TAG_ANIM_FULL	0x000c0103
u32 this_anim_index | Index number of this Anim
u32 anim_size | Size of this Anim
float translate_x | Parallel translation on X axial direction
float translate_y | Parallel translation on Y axial direction
float translate_z | Parallel translation on Z axial direction
float rotate_axis_x | Rotation angle (radius) for local X axis
float rotate_axis_y | Rotation angle (radius) for local Y axis
float rotate_axis_z | Rotation angle (radius) for local Z axis
float rotate_expand_flag | Expansion flag. Set default as 0x00000000
float scale_x | Scale value on X axial direction
float scale_y | Scale value on Y axial direction
float scale_z | Scale value on Z axial direction

When ANIM_TYPE_KEY is specified

u32 | anim_tag
u32 | this_anim_index
u32 | anim_size
u32 | key
u32 | next_key
u32 | interpolation_type
float | translate_x
float | translate_y
float | translate_z
float | rotate_axis_x
float | rotate_axis_y
float | rotate_axis_z
float | rotate_expand_flag
float | scale_x
float | scale_y
float | scale_z

Figure: Anim Area Memory Map
When ANIM_TYPE_KEY is specified

u32 anim_tag | Indicates Anim. Set the following Tag.
    TAG_ANIM_KEY	0x000c0104
u32 this_anim_index | Index number of this Anim
u32 anim_size | Size of this Anim
u32 key | Current key frame value
u32 next_key | Next key frame value
u32 interpolation_type | Specifies the interpolation type from this key to the next. The following are current interpolation types.
    INTERPOLATION_STATIC	0x00000000
    INTERPOLATION_LINEAR	0x00000001
    INTERPOLATION_SLOWIN	0x00000002
    INTERPOLATION_SLOWOUT	0x00000004
    INTERPOLATION_SLOW	0x00000006
INTERPOLATION_STATIC fixes the animation data from this key frame to the next. INTERPOLATION_LINEAR performs a linear transition on the animation data from this key to the next. INTERPOLATION_SLOWIN smooths the transition of animation data to the next key frame.

INTERPOLATION_SLOWOUT smooths the transition of animation data from this key frame.

INTERPOLATION_SLO performs both SLOWIN and SLOWOUT.

float translate_x | Parallel translation on X axial direction
float translate_y | Parallel translation on Y axial direction
float translate_z | Parallel translation on Z axial direction
float rotate_axis_x | Rotation angle (radius) for local X axis
float rotate_axis_y | Rotation angle (radius) for local Y axis
float rotate_axis_z | Rotation angle (radius) for local Z axis
float rotate_expand_flag | Expansion flag. Set default as 0x00000000
float scale_x | Scale value on X axial direction
float scale_y | Scale value on Y axial direction
float scale_z | Scale value on Z axial direction

When ANIM_TYPE_BILLBOARD_OBJ is specified

u32 | anim_tag
u32 | this_anim_index
u32 | anim_size
u32 | lookat_obj_index
u32 | upper_obj_index

Figure: Anim Area Memory Map
When ANIM_TYPE_BILLBOARD_OBJ is specified

u32 anim_tag | Tag indicating Anim. Specify the following tag.
    TAG_ANIM_BILLBOARD_OBJ	0x000c0105
u32 this_anim_index | Index number of this Anim
u32 anim_size | Size of this Anim.
u32 lookat_obj_index | Index number in ObjList. Determines the direction of the local Z axis.
u32 upper_obj_index | Index number in ObjList. Determines the direction of the local Y axis.