======== Setup Files ======== ===== Overall File Structure ===== ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 01 01 | Possibly File Start? | | | | Voxel Count | | | | Objects | | | | Cameras | | | | Lighting | | -0x01 | 00 | Possibly File End? | ===== Voxel Count Structure ===== ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | XX XX XX XX | Negative X Voxel Count | | 0x04 | YY YY YY YY | Negative Y Voxel Count | | 0x08 | ZZ ZZ ZZ ZZ | Negative Z Voxel Count | | 0x0C | XX XX XX XX | Positive X Voxel Count | | 0x10 | YY YY YY YY | Positive Y Voxel Count | | 0x14 | ZZ ZZ ZZ ZZ | Positive Z Voxel Count | ===== Objects Structure ===== ==== Voxel Structure ==== ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 03 0A | Indicates The Start Of A Voxel With Objects | | 0x02 | NN | Number Of Complex Objects (Objects With 20 Bytes) | | 0x03 | 0B | Indicates Start Of Complex Object List | | | | Complex Object List | | +0x01 | 08 | End Of Complex Object List | | +0x02 | NN | Number Of Simple Object List (Objects With 12 Bytes) | | +0x03 | 09 | If Number Of Simple Objects > 0, Indicates Start Of Simple Object List | | | | Simple Object List | ''Voxels Are Separated By 0x01. Empty voxels will not have the above after the 0x01'' Here are the lists of known objects with their script ids and object ids: [[banjo_kazooie:object_ids]] ==== Known Complex Object Structures ==== === Actor Structure === Actors: Objects that are given scripts to follow, typically involving multiple states. These will have a 2-byte Object Id and a 2-byte Script Id. ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | XX XX | X Position | | 0x02 | YY YY | Y Position | | 0x04 | ZZ ZZ | Z Position | | 0x06 | SS SS | Script Id | | 0x08 | OO OO | Object Id | | 0x0A | UU | Unknown Byte | | 0x0B | UU | Unknown Byte | | 0x0C | RR | Rotation >> 1 (Y Axis) | | 0x0D | UU | Unknown Byte | | 0x0E | SS SS | Size | | 0x10 | CCC NNN | Nodes (C=Current, N=Next) | | 0x13 | 40 | End Of Object Indicator | === Timed Structure === Timed: Objects that perform follow a script, but are limited on how long their use is. These will have a 2-byte Object Id and a 2-byte Script Id. ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | XX XX | X Position | | 0x02 | YY YY | Y Position | | 0x04 | ZZ ZZ | Z Position | | 0x06 | SS SS | Script Id | | 0x08 | OO OO | Object Id | | 0x0A | UU | Unknown Byte | | 0x0B | UU | Unknown Byte | | 0x0C | TT | Timer | | 0x0D | UU | Unknown Byte | | 0x0E | SS SS | Size | | 0x10 | CCC NNN | Nodes (C=Current, N=Next) | | 0x13 | 40 | End Of Object Indicator | === Script Structure === Script: Objects that cause another object or set of objects to perform actions. ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | XX XX | X Position | | 0x02 | YY YY | Y Position | | 0x04 | ZZ ZZ | Z Position | | 0x06 | SS SS | Script Id | | 0x08 | OO OO | Object Id | | 0x0A | UU | Unknown Byte | | 0x0B | UU | Unknown Byte | | 0x0C | UU | Unknown Byte | | 0x0D | UU | Unknown Byte | | 0x0E | UU | Unknown Byte | | 0x0F | UU | Unknown Byte | | 0x10 | CCC NNN | Nodes (C=Current, N=Next) | | 0x13 | 40 | End Of Object Indicator | === Radius Structure === Radius: Objects that trigger when Banjo-Kazooie enter their radius. These will have a 1-byte Object Id and a 2-byte Associated Id (used for flag ids, warp ids, etc) ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | XX XX | X Position | | 0x02 | YY YY | Y Position | | 0x04 | ZZ ZZ | Z Position | | 0x06 | RR | Radius >> 1 | | 0x07 | OO | Object Id | | 0x08 | AA AA | Associated Id (For Stuff Like Flags) | | 0x0A | UU | Unknown Byte | | 0x0B | UU | Unknown Byte | | 0x0C | UU | Unknown Byte | | 0x0D | UU | Unknown Byte | | 0x0E | UU | Unknown Byte | | 0x0F | UU | Unknown Byte | | 0x10 | CCC NNN | Nodes (C=Current, N=Next) | | 0x13 | 40 | End Of Object Indicator | ==== Known Simple Object Structures ==== === Sprite Structure === Sprites: 2D Objects that will face the camera at all times (aka Billboarding). ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | OO OO | Object Id | | 0x02 | SS SS | Size | | 0x04 | XX XX | X Position | | 0x06 | YY YY | Y Position | | 0x08 | ZZ ZZ | Z Position | | 0x0A | UU | Unknown Byte | | 0x0B | UU | Unknown Byte | === Static Structure === Static: Objects that do not change unless given accompanied by a script object. ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | OO OO | Object Id | | 0x02 | RR | Rotation (Y Axis) | | 0x03 | RR | Rotation (XZ Axis) | | 0x04 | XX XX | X Position | | 0x06 | YY YY | Y Position | | 0x08 | ZZ ZZ | Z Position | | 0x0A | SS | Size | | 0x0B | UU | Unknown Byte | ===== Camera Structure ===== ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 00 03 | Camera Section Start | | 0x02 | | List Of Cameras | ==== Known Camera Structures ==== === Camera Type 0 Structure === ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 01 | Start Of Camera | | 0x01 | II II | Camera Id | | 0x03 | 02 | Unknown | | 0x04 | 00 | Camera End | === Camera Type 1 Structure === ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 01 | Start Of Camera | | 0x01 | II II | Camera Id | | 0x03 | 02 | Unknown | | 0x04 | 01 | Camera Type | | 0x05 | 01 | Indicates Section One | | 0x06 | XX XX XX XX | X Position (Float) | | 0x0A | YY YY YY YY | Y Position (Float) | | 0x0E | ZZ ZZ ZZ ZZ | Z Position (Float) | | 0x12 | 02 | Indicates Section Two | | 0x13 | HH HH HH HH | Horizontal Speed (Float) | | 0x17 | VV VV VV VV | Vertical Speed (Float) | | 0x1B | 03 | Indicates Section Three | | 0x1C | RR RR RR RR | Rotation (Float) | | 0x20 | AA AA AA AA | Acceleration (Float) | | 0x24 | 04 | Indicates Section Four | | 0x25 | PP PP PP PP | Pitch (Float) | | 0x29 | YY YY YY YY | Yaw (Float) | | 0x2D | RR RR RR RR | Roll (Float) | | 0x31 | 05 | Indicates Section Five | | 0x32 | UU UU UU UU | Unknown (Float) | | 0x36 | 00 | Camera End | === Camera Type 2 Structure === ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 01 | Start Of Camera | | 0x01 | II II | Camera Id | | 0x03 | 02 | Unknown | | 0x04 | 01 | Camera Type | | 0x05 | 01 | Indicates Section One | | 0x06 | XX XX XX XX | X Position (Float) | | 0x0A | YY YY YY YY | Y Position (Float) | | 0x0E | ZZ ZZ ZZ ZZ | Z Position (Float) | | 0x12 | 02 | Indicates Section Two | | 0x13 | PP PP PP PP | Pitch (Float) | | 0x17 | YY YY YY YY | Yaw (Float) | | 0x1B | RR RR RR RR | Roll (Float) | | 0x1F | 00 | Camera End | === Camera Type 3 Structure === ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 01 | Start Of Camera | | 0x01 | II II | Camera Id | | 0x03 | 02 | Unknown | | 0x04 | 01 | Camera Type | | 0x05 | 01 | Indicates Section One | | 0x06 | XX XX XX XX | X Position (Float) | | 0x0A | YY YY YY YY | Y Position (Float) | | 0x0E | ZZ ZZ ZZ ZZ | Z Position (Float) | | 0x12 | 02 | Indicates Section Two | | 0x13 | HH HH HH HH | Horizontal Speed (Float) | | 0x17 | VV VV VV VV | Vertical Speed (Float) | | 0x1B | 03 | Indicates Section Three | | 0x1C | RR RR RR RR | Rotation (Float) | | 0x20 | AA AA AA AA | Acceleration (Float) | | 0x24 | 04 | Indicates Section Four | | 0x25 | PP PP PP PP | Pitch (Float) | | 0x29 | YY YY YY YY | Yaw (Float) | | 0x2D | RR RR RR RR | Roll (Float) | | 0x31 | 05 | Indicates Section Five | | 0x32 | UU UU UU UU | Unknown (Float) | | 0x36 | 06 | Indicates Section Six | | 0x37 | CC CC CC CC | Close Distance (Float) | | 0x3B | FF FF FF FF | Far Distance (Float) | | 0x3F | 00 | Camera End | === Camera Type 4 Structure === ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 01 | Start Of Camera | | 0x01 | II II | Camera Id | | 0x03 | 02 | Unknown | | 0x04 | 01 | Camera Type | | 0x05 | 01 | Indicates Section One | | 0x06 | UU UU UU UU | Unknown (Float) | | 0x0A | 00 | Camera End | ===== Lighting Structure ===== ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 00 04 | Start Of Lighting Section | | 0x02 | | List Of Lightings | | -0x01 | | End Of Lighting Section | ==== Lighting Structure ==== ^ Address ^ Value/Syntax ^ Description ^ | 0x00 | 01 | Section One Header | | 0x01 | 02 | Section Two Header | | 0x02 | XX XX XX XX | X Position (Float) | | 0x06 | YY YY YY YY | Y Position (Float) | | 0x0A | ZZ ZZ ZZ ZZ | Z Position (Float) | | 0x0E | 03 | Section Three Header | | 0x0F | UU UU UU UU | Unknown (Float) | | 0x13 | UU UU UU UU | Unknown (Float) | | 0x17 | 04 | Section Four Header | | 0x18 | 00 00 00 RR | Red | | 0x1C | 00 00 00 GG | Green | | 0x20 | 00 00 00 BB | Blue |