User Tools

Site Tools


banjo_kazooie:animations

This is an old revision of the document!


Animation Data

Banjo-Kazooie uses animation files comprised of a list of Internal Bone IDs, their transformation type (scale, rotate or translate), and across which frames of an animation these transformations occur. Animation indices can be found by searching the Rom Map.

The file header is 0x8 bytes in length and details the start and end frames of the animation as well as the amount of elements impacting the various bones of a model.

Address Value / Syntax Description
0x0000 [xx xx] Start Frame of animation
0x0004 [yy yy] End Frame of animation
0x0008 [zz zz] Element Count
0x000C [00 00] Padding / Unknown

Example (60f0.bin, Banjo's Backflip at address 0x0):

00 0F 00 A5 00 48 00 00

Loads an animation beginning at frame 15 (0x0F) and ending at frame 165 (0xA5) with 72 (0x48) elements across those frames.

Element Header

The element header establishes that an internal bone ID is affected, which transform type* is occurring, and how many times that bone transforms between the start and end frames. Element headers are 0x4 bytes. Each Internal Bone ID may have more than one element corresponding to a separate transformation type of that bone. An element header only exists before the transform section for its respective bone ID and a new one is generated when all transforms for data count [cc cc] have been written.

Offset from End of Header Value / Syntax Description
0x0000 [aa ab] aa = Internal Bone ID, b = Transform Type*
0x0004 [cc cc] Data Count

Example (60f0.bin, Banjo's Backflip at address 0x08):

00 10 00 09

This element targets Internal Bone ID 1 (0x1), rotates the bone around the X axis (0x0), and does this at 9 (0x9) different points between frames 15 and 165.

*Transform Type Value
X Rotation 0
Y Rotation 1
Z Rotation 2
X Scale 3
Y Scale 4
Z Scale 5
X Translation 6
Y Translation 7
Z Translation 8

Transform Structure

The transform structure details the frames in which a transformation of the bone occurs (i.e. translate, rotate, or scale) and by how much the bone moves between frames with respect to the scale of the model (transform factor).Transform structure is repeated for instances [cc cc] before introducing the next element header where [cc cc] = Data Count. The first two bytes of data contain two bits representing unknown values and fourteen bits which determine the frame of a transformation.

*Bitwise Parameters:

[xx xx] ⇒ [DE FF FF FF FF FF FF FF]

D Unknown 1
E Unknown 2
FF FF FF FF FF FF FF Frame of Transformation

So data for each transform structure can best be represented like this:

Offset from End of Element Header Value / Syntax Description
0x0000 [xx xx] *Bitwise Parameters for Unk1, Unk2, and Frame of Transformation
0x0002 [gg gg] Transform Factor

Example (60f0.bin, Banjo's Backflip at address 0x0C):

C0 0F 15 E6

At frame 15 (0xF), two bitwise parameters are set as true (if [d] = 1 and [e] = 1, then the remaining two bits must return false to equal 0xC) and then the bone transforms by a factor of 87.59375 (0x15E6).

banjo_kazooie/animations.1732632856.txt.gz · Last modified: 2024/11/26 14:54 by BanjoFreak64