This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
banjo_tooie:model_data [2018/04/22 00:34] trenavix [Model Data] |
banjo_tooie:model_data [2024/02/29 04:24] (current) BanjoFreak64 [Header] |
||
---|---|---|---|
Line 7: | Line 7: | ||
^ Address ^ Value/Syntax ^ Description ^ | ^ Address ^ Value/Syntax ^ Description ^ | ||
| 0x00000000 | [00 00 00 0B] | START | | | 0x00000000 | [00 00 00 0B] | START | | ||
- | | 0x00000004 | [<color darkred>aa aa aa aa</color>] | Geometry Layout Offset | | + | | 0x00000004 | [<color red>aa aa aa aa</color>] | Geometry Layout Offset | |
- | | 0x00000008 | [<color darkgreen>bb bb</color> <color darkblue>cc cc</color>] | <color darkgreen>bb</color>=Texture Setup Offset (Usually 00 50), <color darkblue>cc</color>=Geo Type* | | + | | 0x00000008 | [<color limegreen>bb bb</color> <color aqua>cc cc</color>] | <color limegreen>bb</color>=Texture Setup Offset (Usually 00 50), <color aqua>cc</color>=Geo Type* | |
- | | 0x0000000C | [<color darkred>dd dd dd dd</color>] | Display List Setup Offset | | + | | 0x0000000C | [<color red>dd dd dd dd</color>] | Display List Setup Offset | |
- | | 0x00000010 | [<color darkgreen>ee ee ee ee</color>] | Vertex Store Setup Offset | | + | | 0x00000010 | [<color limegreen>ee ee ee ee</color>] | Vertex Store Setup Offset | |
| 0x00000014 | [00 00 00 00] | ? | | | 0x00000014 | [00 00 00 00] | ? | | ||
- | | 0x00000018 | [<color darkblue>ff ff ff ff</color>] | Animation Setup | | + | | 0x00000018 | [<color aqua>ff ff ff ff</color>] | Animation Setup | |
- | | 0x0000001C | [<color darkred>gg gg gg gg</color>] | Collision Setup | | + | | 0x0000001C | [<color red>gg gg gg gg</color>] | Collision Setup | |
- | | 0x00000020 | [<color darkgreen>hh hh hh hh</color>] | Effects Setup End Address | | + | | 0x00000020 | [<color limegreen>hh hh hh hh</color>] | Effects Setup End Address | |
- | | 0x00000024 | [<color darkgreen>hh hh hh hh</color>] | Effects Setup | | + | | 0x00000024 | [<color limegreen>hh hh hh hh</color>] | Effects Setup | |
- | | 0x00000028 | [00 00 00 00] | ? | | + | | 0x00000028 | [<color aqua>ii ii ii ii</color>] | Vertex-Bone Mapping | |
- | | 0x0000002C | [00 00 00 00] | ? | | + | | 0x0000002C | [<color red>jj jj jj jj</color>] | Texure Animation Setup | |
| 0x00000030 | [00 00 00 00] | ? | | | 0x00000030 | [00 00 00 00] | ? | | ||
- | | 0x00000034 | [00 00 <color darkblue>ii ii</color>] | Related to external textures??? | | + | | 0x00000034 | [00 00 <color limegreen>kk kk</color>] | Related to external textures??? | |
- | | 0x00000038 | [<color darkred>jj jj jj jj</color>] | Some animation setup offset? (Vertex clipping?) | | + | | 0x00000038 | [<color aqua>ll ll ll ll</color>] | Vertex Normals | |
- | | 0x00000044 | [<color darkgreen>kk kk</color> <color darkblue>ll ll</color>] | kk= Tri count, ll= vert count | | + | | 0x00000044 | [<color red>nn nn</color> <color limegreen>oo oo</color>] | nnnn= Tri count, oooo= vert count | |
- | ''*Geo Types: 0000=normal, 0002= Trilinear MipMapping (RGBA16), 0004=Env mapping'' | + | | 0x00000048 | [00 00 00 00] | ? | |
+ | | 0x0000004C | [00 00 00 00] | ? | | ||
+ | ''*Geo Types: 0000=normal, 0002= Trilinear MipMapping (RGBA16), 0004=Env mapping, 0010=?'' | ||
---- | ---- | ||
Line 28: | Line 30: | ||
===== Texture Setup ===== | ===== Texture Setup ===== | ||
^ Offset from TexSetup Start ^ Value/Syntax ^ Description ^ | ^ Offset from TexSetup Start ^ Value/Syntax ^ Description ^ | ||
- | | 0x00000000 | [<color darkred>aa aa aa aa</color>] | Amount of data in bytes to load (including command) | | + | | 0x00000000 | [<color red>aa aa aa aa</color>] | Amount of data in bytes to load (including command) | |
- | | 0x00000004 | [<color darkgreen>bb bb</color> <color darkblue>cc</color> 00] | bb=Texture Count, cc=External Textures(01y 00n) | | + | | 0x00000004 | [<color limegreen>bb bb</color> <color aqua>cc</color> 00] | bb=Texture Count, cc=External Textures(01y 00n) | |
- | | 0x00000008 | [<color darkred>dd dd dd dd</color>] | Texture[i] segment address from texture data start OR External Texture Index* | | + | | 0x00000008 | [<color red>dd dd dd dd</color>] | Texture[i] segment address from texture data start OR External Texture Index* | |
- | | 0x0000000C | [<color purple>ee</color> <color darkgreen>ff</color> <color darkblue>xx</color> <color darkred>yy</color>] | Texture[i] <color purple>ee</color> = 0x80 for MIP Mapping (00 otherwise), <color darkgreen>ff</color> =type*, <color darkblue>xx</color><color darkred>yy</color>=Pixel Grid | | + | | 0x0000000C | [<color violet>ee</color> <color limegreen>ff</color> <color aqua>xx</color> <color red>yy</color>] | Texture[i] <color violet>ee</color> = 0x80 for MIP Mapping (00 otherwise), <color limegreen>ff</color> =type*, <color aqua>xx</color><color red>yy</color>=Pixel Grid | |
''*Types: 01=CI4, 02=CI8, 04=RGBA16, 08=RGBA32, 0x10=IA8,'' | ''*Types: 01=CI4, 02=CI8, 04=RGBA16, 08=RGBA32, 0x10=IA8,'' | ||
Line 44: | Line 46: | ||
==== Display List Setup ==== | ==== Display List Setup ==== | ||
^ Offset from DLSetup Start ^ Value/Syntax ^ Description ^ | ^ Offset from DLSetup Start ^ Value/Syntax ^ Description ^ | ||
- | | 0x00000000 | [<color darkred>aa aa aa aa</color> 00 00 00 00] | F3DEX2 Command Count | | + | | 0x00000000 | [<color red>aa aa aa aa</color> 00 00 00 00] | F3DEX2 Command Count | |
| 0x00000008 | [[http://hack64.net/wiki/doku.php?id=f3dex2|F3DEX2]] | F3DEX2 Display List | | | 0x00000008 | [[http://hack64.net/wiki/doku.php?id=f3dex2|F3DEX2]] | F3DEX2 Display List | | ||
Line 51: | Line 53: | ||
==== Vertex Store Setup ==== | ==== Vertex Store Setup ==== | ||
^ Offset from VTXSetup Start ^ Value/Syntax ^ Description ^ | ^ Offset from VTXSetup Start ^ Value/Syntax ^ Description ^ | ||
- | | 0x00000000 | [<color darkred>aa aa</color> <color darkgreen>bb bb</color> <color darkblue>cc cc</color>] | Draw distance: Negative Coords | | + | | 0x00000000 | [<color red>aa aa</color> <color limegreen>bb bb</color> <color aqua>cc cc</color>] | Draw distance: Negative Coords | |
- | | 0x00000006 | [<color darkred>dd dd</color> <color darkgreen>ee ee</color> <color darkblue>ff ff</color>] | Draw distance: Positive Coords | | + | | 0x00000006 | [<color red>dd dd</color> <color limegreen>ee ee</color> <color aqua>ff ff</color>] | Draw distance: Positive Coords | |
- | | 0x0000000C | [<color darkred>gg gg</color> <color darkgreen>hh hh</color>] | Object Coordinate Range | | + | | 0x0000000C | [<color red>xx xx</color> <color limegreen>yy yy</color> <color aqua>zz zz</color>] | Object Coordinate Range | |
- | | 0x00000010 | [<color darkred>jj jj</color>] | Collision range? (Enemies, Objects) | | + | | 0x00000012 | [<color red>jj jj</color>] | Collision range? (Enemies, Objects) | |
- | | 0x00000014 | [<color darkgreen>kk kk</color>] | Collision range? (Banjo) | | + | | 0x00000014 | [<color limegreen>kk kk</color>] | Collision range? (Banjo) | |
- | | 0x00000016 | [<color darkblue>ll ll</color>] | Vertex Count*2 | | + | | 0x00000016 | [<color aqua>ll ll</color>] | Vertex Count*2 | |
---- | ---- | ||
+ | ==== Animation Setup ==== | ||
+ | ^ Offset from Setup Start ^Value/Syntax ^Description ^ | ||
+ | | 0x00000000 | [<color red>aa aa aa aa</color>] | Translation Scale (float) | | ||
+ | | 0x00000004 | [<color limegreen>bb bb</color> 00 00] | Bone Count| | ||
+ | ^ Offset From Bone Start ^ ^ ^ | ||
+ | | 0x00000000 | [<color red>xx xx xx xx</color>] | Bone X Translation (float) | | ||
+ | | 0x00000004 | [<color limegreen>yy yy yy yy</color>] | Bone Y Translation (float) | | ||
+ | | 0x00000008 | [<color aqua>zz zz zz zz</color>] | Bone Z Translation (float) | | ||
+ | | 0x0000000C | [<color orange>cc cc</color> <color purple>dd dd</color>] | <color orange>cccc</color>=Bone ID, <color purple>dddd</color>=Parent Index | | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Effects Setup ==== | ||
+ | ^ Offset from Setup Start ^ Value/Syntax ^ Description ^ | ||
+ | | 0x00000000 | [<color red>aa aa</color>] | Effect Count | | ||
+ | | 0x0000002 | [<color limegreen>bb bb</color> <color aqua>cc cc</color>] | <color limegreen>bbbb</color>=Effect ID, <color aqua>cccc</color>=Effect Vertex Count| | ||
+ | | 0x0000006 | [<color orange>dd dd</color> <color purple>ee ee</color>] | <color orange>dddd</color>, <color purple>eeee</color>...=Effect Vertex Index List | | ||
+ | | ...||| | ||
+ | |||
+ | Effect IDs are <code>100*Type + Param (decimal)</code> where Param is usually used to | ||
+ | control the speed of the effect, and Type is taken from | ||
+ | ^Type^DLL Name^Description^ | ||
+ | | 0 | | Code room letters | | ||
+ | | 1 | idscroll | Texture scrolling (along vertical axis) | | ||
+ | | 2 | idlight | Flickering vertex color, for fake lighting around flames | | ||
+ | | 3 | idwater | Oscillating texture scrolling | | ||
+ | | 4 | | | | ||
+ | | 5 | idglow | Vertex color regularly gets brighter and dimmer | | ||
+ | | 6 | | | | ||
+ | | 7 | idwave | Rippling water surface, amplitude controlled by bounding box of affected vertices | | ||
+ | | 8 | idglowa | Like glow, but only for vertex alpha | | ||
+ | | 9 | idflasha | | | ||
+ | | 10 | idflash | | | ||
+ | | 11 | | | | ||
+ | | 12 | idwibble | All wibbles use a spherical wave to change some vertex parameters (usually texture coordinate and color). This one is faster, with a smaller amplitudes| | ||
+ | | 13 | idwibble | Standard wibble | | ||
+ | | 14 | idwibble | Only wibble color | | ||
+ | | 15 | idwibble | Only wibble texture coordinates | | ||
+ | | 16 | idwibble | Also move up and down, like idwave | | ||
+ | | 17 | idbounce | Used for bouncy castle | | ||
+ | | 18 | idtwinkle | Used for mine crystals; occasionally choose a center vertex and briefly brighten the vertex colors on its neighbors with random delays| | ||
+ | | 19 | idflame | | | ||
+ | | 20 | idtwinklea | | | ||
+ | | 21 | idwibble | Fast wibble, with larger amplitudes| | ||
+ | | 22 | idtwinklecolour | | | ||
+ | ---- | ||
+ | |||
+ | ==== Vertex-Bone Mapping ==== | ||
+ | ^ Offset from Setup Start ^Value/Syntax ^Description ^ | ||
+ | | 0x00000000 | [<color red>aa aa</color> <color limegreen>bb bb</color>] | <color red>aaaa</color>=Has Norms, <color limegreen>bbbb</color>=Entry Count | | ||
+ | ^ Offset From Entry Start ^ ^ ^ | ||
+ | | 0x00000000 | [<color red>cc cc</color> <color limegreen>dd dd</color> <color aqua>ee ee</color>] | <color red>cccc</color>=Bone ID, <color limegreen>dddd</color>=Position Count, <color aqua>eeee</color>=Normal Count | | ||
+ | | 0x00000006 | [<color red>xx xx</color> <color limegreen>yy yy</color> <color aqua>zz zz</color>] | Vertex Position (in bone space) | | ||
+ | | ... | | | | ||
+ | | 0x6 + 6*Positions | [<color red>xx</color> <color limegreen>yy</color> <color aqua>zz</color> 00] | Vertex Normal (in bone space) | | ||
+ | | ... | | | | ||
+ | | 0x6 + 6*Positions + 4*Normals | [<color orange>ee ee</color> <color purple>ff ff</color>] | <color orange>eeee</color>, <color purple>ffff</color>,...=Vertex IDs | | ||
+ | |||
+ | Each vertex is assumed to have its own normal, but some share positions. The initial vertices are assigned the first position, then an ID of -1 in the list indicates | ||
+ | that the following vertices should use the next position in the list, and -2 indicates the end. | ||
+ | Thus there are (Normal Count) + (Offset Count) entries in the ID list, including the negative values. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Texture Animation Setup ==== | ||
+ | Up to five entries corresponding to segments 0xF,0xD,0xE,0xC,0xB of the following form: | ||
+ | |||
+ | ^ Offset from Entry Start ^Value/Syntax ^Description ^ | ||
+ | | 0x00000000 | [<color red>aa aa</color> <color limegreen>bb bb</color>] | <color red>aaaa</color>=Block Size, <color limegreen>bbbb</color>=Block Count | | ||
+ | | 0x00000004 | [<color aqua>cc cc cc cc</color>] | Frames Per Second (float)| | ||
+ | |||
+ | A block is contiguous memory holding texture data which gets loaded into the corresponding segment. | ||
+ | The chosen block advances at the specified framerate, looping back around to the beginning. | ||
+ | |||
+ | ---- |