#### NIFF 1.0 Specification

## 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 or ANIM_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

Anim Area Memory Map

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

Anim Area Memory Map

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

Anim Area Memory Map

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.

Copyright 1997-1999 NINTENDO Co., Ltd. All rights reserved.