NANR (NITRO-System Animation for Runtime) files store cell animation data for the 2D engine. It follows the [NNS G2D Binary File Format|G2D Binary File Format]. NANR files use file signature {{'NANR'}}.
!!ABNK Block
The {{ABNK}} (Animation Bank) block defines the set of cell animations in this file. The structure is as follows:
||Offset||Type||Meaning
| 0x00 | u16 | Number of animation sequences
| 0x02 | u16 | Number of animation frames in this file
| 0x04 | void* | Offset to animation sequence array
| 0x08 | void* | Offset to animation frame array
| 0x0C | void* | Offset to animation frame data block
| 0x10 | void* | Offset to string bank (may be NULL)
| 0x14 | void* | Unused (set to 0)
The animation sequence pointer points to an array of animation sequences. These take the following structure:
||Offset||Type||Meaning
| 0x00 | u16 | Number of frames
| 0x02 | u16 | Index of starting frame
| 0x04 | u16 | Animation element (0=Index, 1=Index+Translation, 2=Index+SRT)
| 0x06 | u16 | Animation type (0=invalid, 1=cell, 2=multicell)
| 0x08 | int | Animation playback mode (0=forward, 1=forward loop, 2=forward+backward, 3=forward+backward loop)
The animation frame array takes the following structure:
||Offset||Type||Meaning
| 0x00 | void* | Pointer to animation frame data
| 0x04 | u16 | Frame duration of this sequence frame
| 0x06 | u16 | Padding for alignment
The format of the animation frame data depends on the format of the animation sequence.
Format for Index animation frame:
||Offset||Type||Meaning
| 0x00 | u16 | Cell index
Format for Index+T animation frame:
||Offset||Type||Meaning
| 0x00 | u16 | Cell index
| 0x02 | u16 | Padding
| 0x04 | s16 | Translate X
| 0x06 | s16 | Translate Y
Format for Index+SRT animation frame:
||Offset||Type||Meaning
| 0x00 | u16 | Cell index
| 0x02 | s16 | Rotation angle
| 0x04 | s32 | Scale X
| 0x08 | s32 | Scale Y
| 0x0C | s16 | Translate X
| 0x0E | s16 | Translate Y