This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
banjo_kazooie:setup_file_data [2024/11/03 16:38] Bl00D4NGEL Improve documentation for sprite object structures |
banjo_kazooie:setup_file_data [2024/11/06 21:13] (current) Bl00D4NGEL Improve documentation for model structures |
||
---|---|---|---|
Line 113: | Line 113: | ||
=== Sprite Structure === | === Sprite Structure === | ||
Sprites: 2D Objects that will face the camera at all times (aka Billboarding). | Sprites: 2D Objects that will face the camera at all times (aka Billboarding). | ||
- | Sprites contain information about their ID, RGB values, their scale, whether they are mirrored or not, their position and which "frame". | + | Sprites contain information about their id, RGB values, their scale, whether they are mirrored or not, their position and which "frame". |
+ | The sprite id has no offset in it's declaration. However while loading the sprite asset an offset of 0x572 is added on top of the id. | ||
+ | |||
The 12 bytes contain this information in the following parts: | The 12 bytes contain this information in the following parts: | ||
Line 120: | Line 122: | ||
The last 2 bytes mainly define the frame | The last 2 bytes mainly define the frame | ||
^ Address ^ Value/Syntax ^ Description ^ | ^ Address ^ Value/Syntax ^ Description ^ | ||
- | | 0x00 | <color red >OOOO OOOO OOOO PRRR</color> | Object Id, padding, RGB red | | + | | 0x00 | <color red >SSSS SSSS SSSS PRRR</color> | Sprite id, padding, RGB red | |
| 0x02 | <color orange>GGGB BBSS SSSS SSMP</color> | RGB green, RGB blue, scale, is mirror, padding | | | 0x02 | <color orange>GGGB BBSS SSSS SSMP</color> | RGB green, RGB blue, scale, is mirror, padding | | ||
| 0x04 | <color yellow>XX XX</color> | X Position | | | 0x04 | <color yellow>XX XX</color> | X Position | | ||
Line 133: | Line 135: | ||
First 4 bytes are ''0x16 0x40 0x00 0xB4'' in hex or ''00010110 01000000 00000000 10110100'' in binary | First 4 bytes are ''0x16 0x40 0x00 0xB4'' in hex or ''00010110 01000000 00000000 10110100'' in binary | ||
- | * 0x164 = object id = Music Note | + | * 0x164 = object id = Music Note (0x6D6 with offset) |
* 0b0 = padding | * 0b0 = padding | ||
* 0b000 = RGB red | * 0b000 = RGB red | ||
Line 199: | Line 201: | ||
* 0b0 = isActorProp -> This is false for all "Simple Object structures" | * 0b0 = isActorProp -> This is false for all "Simple Object structures" | ||
- | === Static Structure === | + | === Model Structure === |
- | Static: Objects that do not change unless given accompanied by a script object. | + | Models: Objects that have a model ID associated with it which are placed in the map. |
+ | The Model ID has no offset in it's declaration. However while loading the model asset an offset of 0x2D1 is added to the id. | ||
^ Address ^ Value/Syntax ^ Description ^ | ^ Address ^ Value/Syntax ^ Description ^ | ||
- | | 0x00 | <color red>OO OO</color> | Object Id | | + | | 0x00 | <color red >MMMM MMMM MMMM PPPP</color> | Model Id, padding| |
- | | 0x02 | <color orange>RR</color> | Rotation (Y Axis) | | + | | 0x02 | <color orange>PP</color> | Pitch | |
- | | 0x03 | <color yellow>RR</color> | Rotation (XZ Axis) | | + | | 0x03 | <color yellow>RR</color> | Roll | |
| 0x04 | <color green>XX XX</color> | X Position | | | 0x04 | <color green>XX XX</color> | X Position | | ||
| 0x06 | <color lightgreen>YY YY</color> | Y Position | | | 0x06 | <color lightgreen>YY YY</color> | Y Position | | ||
| 0x08 | <color cyan>ZZ ZZ</color> | Z Position | | | 0x08 | <color cyan>ZZ ZZ</color> | Z Position | | ||
- | | 0x0A | <color lightblue>SS</color> | Size | | + | | 0x0A | <color lightblue>SS</color> | Scale | |
- | | 0x0B | <color gray>UU</color> | Unknown Byte | | + | | 0x0B | <color gray>UU</color> | Padding | |
+ | The 12 bytes contain this information in the following parts: | ||
+ | |||
+ | The first 12 bits are the model id padded with 4 bits to create 2 byte. | ||
+ | The next 6 bytes are 3 s16's to describe the position (XYZ) | ||
+ | The last 2 bytes mainly define the scale of the model | ||
+ | |||
+ | |||
+ | Example(s) for the dust bins next to banjos house in Spiral Mountain: | ||
+ | |||
+ | {{:banjo_kazooie:bk_dust_bins_sm.png?400|}} | ||
+ | |||
+ | |||
+ | Bytes in level setup: ''0x01, 0xC4, 0x01, 0x2B, 0x13, 0x02, 0xFE, 0x30, 0x1A, 0xE9, 0x32, 0xD2'' | ||
+ | |||
+ | First 2 bytes are ''0x01 0xC4'' in hex or ''00000001 11000100'' in binary | ||
+ | * 0x1C = model id = Dust bin (0x2ED with offset) | ||
+ | * 0b0100 = padding | ||
+ | |||
+ | Next 2 bytes are pitch and roll which are used for the rotation of the model: | ||
+ | * 0x01 = Pitch | ||
+ | * 0x2B = Roll | ||
+ | |||
+ | Next 6 bytes are the position: | ||
+ | * 0x1302 = X = 4866 | ||
+ | * 0xFE30 = Y = -464 | ||
+ | * 0x1AE9 = Z = 6889 | ||
+ | |||
+ | The last 2 bytes contain the scale and padding bits: | ||
+ | * 0x32 = scale (50) | ||
+ | * 0b110100 = padding | ||
+ | * 0b1 = isModelProp => This is true for all "Model structures" | ||
+ | * 0b0 = isActorProp => This is false for all "Simple Object structures" | ||
+ | |||
+ | Bytes in level setup: ''0x01, 0xC4, 0x41, 0x00, 0x12, 0x81, 0xFE, 0x11, 0x1A, 0x3A, 0x32, 0x52'' | ||
+ | |||
+ | First 2 bytes are ''0x01 0xC4'' in hex or ''00000001 11000100'' in binary | ||
+ | * 0x1C = model id = Dust bin (0x2ED with offset) | ||
+ | * 0b0100 = padding | ||
+ | |||
+ | Next 2 bytes are pitch and roll which are used for the rotation of the model: | ||
+ | * 0x41 = Pitch | ||
+ | * 0x00 = Roll | ||
+ | |||
+ | Next 6 bytes are the position: | ||
+ | * 0x1281 = X = 4737 | ||
+ | * 0xFE11 = Y = -495 | ||
+ | * 0x1A3A = Z = 6714 | ||
+ | |||
+ | The last 2 bytes contain the scale and padding bits: | ||
+ | * 0x32 = scale (50) | ||
+ | * 0b010100 = padding | ||
+ | * 0b1 = isModelProp => This is true for all "Model structures" | ||
+ | * 0b0 = isActorProp => This is false for all "Simple Object structures" | ||
+ | |||
+ | |||
+ | Bytes in level setup: ''0x01, 0xC4, 0x00, 0x01, 0x12, 0x3A, 0xFE, 0x0E, 0x1A, 0xF0, 0x32, 0xD2'' | ||
+ | |||
+ | First 2 bytes are ''0x01 0xC4'' in hex or ''00000001 11000100'' in binary | ||
+ | * 0x1C = model id = Dust bin (0x2ED with offset) | ||
+ | * 0b0100 = padding | ||
+ | |||
+ | Next 2 bytes are pitch and roll which are used for the rotation of the model: | ||
+ | * 0x00 = Pitch | ||
+ | * 0x01 = Roll | ||
+ | |||
+ | Next 6 bytes are the position: | ||
+ | * 0x123A = X = 4666 | ||
+ | * 0xFE0E = Y = -498 | ||
+ | * 0x1AF0 = Z = 6896 | ||
+ | |||
+ | The last 2 bytes contain the scale and padding bits: | ||
+ | * 0x32 = scale (50) | ||
+ | * 0b110100 = padding | ||
+ | * 0b1 = isModelProp => This is true for all "Model structures" | ||
+ | * 0b0 = isActorProp => This is false for all "Simple Object structures" | ||
+ | |||
===== Camera Structure ===== | ===== Camera Structure ===== |