These scripts load display lists within the model file, with certain aspects, properties, and checks applied. They are found at the end of a model file.
Runs one or both child geometry layouts, sorting based on positions. If vectors are u and v, run first child first if (v-u).u >= 0. Used to depth sort translucent geometry. Usage:
Value/Syntax | Description |
---|---|
[00 00 00 01] | Sort Command ID |
[aa aa aa aa] | Command Length* (0x28) |
[xx xx xx xx] | first child x (float) |
[yy yy yy yy] | first child y (float) |
[zz zz zz zz] | first child z (float) |
[xx xx xx xx] | second child x (float) |
[yy yy yy yy] | second child y (float) |
[zz zz zz zz] | second child z (float) |
[00 bb cc cc] | if bb&1, draw only nearer child; cc cc=first child offset |
[00 00 dd dd] | second child offset |
—-
Loads a display list from the DL segment and attaches it to the current group of bones with ID. Usage:
Value/Syntax | Description |
---|---|
[00 00 00 02] | Bone Command ID |
[00 00 aa aa] | Load DL - DL Segment Address/8 (Example: 0x1C = 0xE0) |
[bb cc dd dd] | bb=Command Length* (0x10), cc=Bone ID, dddd=?? |
[00 00 00 00] | If bb=10, these four bytes are written before the next command. (Padding) |
Loads a display list from offset of F3DEX segment Usage:
Value/Syntax | Description |
---|---|
[00 00 00 03] | Load DL Command ID |
[aa aa aa aa] | Command Length* (0x10) |
[bb bb cc cc] | bbbb=Offset in DL Segment/0x08, cccc=Tri Count |
[00 00 00 00] | If aa=10, these four bytes are written before the next command. (Padding) |
Example: 00 00 00 03 00 00 00 00 00 2D 00 10
Addr= 0x2D*0x08 offset from F3DEX Segment Start, 0x168 0x10= 16 triangles in DL
Draw triangles across bones. Usage:
Value/Syntax | Description |
---|---|
[00 00 00 05] | Skinning Command ID |
[aa aa aa aa] | Command Length* (Varies) |
[bb bb cc cc] | bb bb=DL segment offset, sets up vertics on previous bone |
[dd dd ee ee] | cc cc, dd dd, ee ee, …=zero-terminated list of DL offsets for current bone, using setup vertices |
(unused?)
Jumps. Usage:
Value/Syntax | Description |
---|---|
[00 00 00 06] | Branch Command ID |
[aa aa aa aa] | Command Length* (0x10) |
[bb bb bb bb] | GeoLayout Command Target Offset (This should accept negative values) |
[00 00 00 00] | Padding |
Runs a geometry layout if the distance from the camera is in a certain range.
Value/Syntax | Description |
---|---|
[00 00 00 08] | LOD Command ID |
[aa aa aa aa] | Command Length* (0x20)* |
[bb bb bb bb] | max distance (float) |
[cc cc cc cc] | min distance (float) |
[xx xx xx xx] | test position x (float) |
[yy yy yy yy] | test position y (float) |
[zz zz zz zz] | test position z (float) |
[dd dd dd dd] | geometry layout offset |
*Note that the command length actually includes the length of the child GL list to run, and the length can be 0 to denote the end of a list, but there could still be MANY child commands to run.
Computes a point on the current model to be referenced later. Used for spawning sparkle particles and Clanker's teeth/bolt positions. Usage:
Value/Syntax | Description |
---|---|
[00 00 00 0A] | Reference Point Command ID |
[aa aa aa aa] | Command Length* (0x18) |
[bb bb cc cc] | bb bb= reference point index, cc cc=bone index |
[xx xx xx xx] | bone offset x (float) |
[yy yy yy yy] | bone offset y (float) |
[zz zz zz zz] | bone offset z (float) |
Selects one or more child geometry layouts to run. Used for blinking and many other model part selections, like Mumbo's hut. Each model sets a list of selectors, where positive values are the index of a (single) child layout to run and negative values (after being negated) are bitfields indicating multiple children to run. Usage:
Value/Syntax | Description |
---|---|
[00 00 00 0C] | Reference Point Command ID |
[aa aa aa aa] | Command Length* (Varies) |
[bb bb cc cc] | bb bb=child count, cc cc=selector index |
[dd dd dd dd] | dd dd dd dd, ee ee ee ee, …=list of bb bb offsets to geometry layouts that might be selected |
[ee ee ee ee] | |
… |
Applies draw distance to descending geometry Usage:
Value/Syntax | Description |
---|---|
[00 00 00 0D] | Command |
[aa aa aa aa] | Command Length* |
[XX XX YY YY ZZ ZZ] | Draw distance: Negative Coords |
[XX XX YY YY ZZ ZZ] | Draw distance: Positive Coords |
[bb bb cc cc] | bbbb= ?? Usually 0018, cccc= ????? |
*Command Length: If value is nonzero, GeoLayout continues, else it is the last command.
Usage:
Value/Syntax | Description |
---|---|
[00 00 00 0E] | Command |
[aa aa aa aa] | Command Length |
[XX XX YY YY ZZ ZZ] | Coords |
[XX XX YY YY ZZ ZZ] | Coords |
[00 00 00 00] | padding |
… | Child commands* |
*Child commands: if Command Length is not zero, then read commands until size is reached