4
edits
No edit summary Tags: Reverted Visual edit |
m (Reverted edits by Antidote (talk) to last revision by [[User:imported>Darkszero|imported>Darkszero]]) Tag: Rollback |
||
Line 83: | Line 83: | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| | | u16 | ||
| 1 | |||
| '''Mantissa''' | |||
| Always 0x8000. | |||
|- | |||
| 0x12 | |||
| u16 | |||
| 1 | | 1 | ||
| '''Display List Size''' | | '''Display List Size''' | ||
| | | '''Important: this value is not always reliable''' | ||
|- | |- | ||
| 0x14 | | 0x14 | ||
Line 137: | Line 143: | ||
Note that you'll need to check some settings on the material to read the primitive data properly; the material determines which vertex attributes are present. The material also determines whether the surface is using lightmaps; if it is, then the first UV coordinate will be read out of the short UV array instead of the float one. | Note that you'll need to check some settings on the material to read the primitive data properly; the material determines which vertex attributes are present. The material also determines whether the surface is using lightmaps; if it is, then the first UV coordinate will be read out of the short UV array instead of the float one. | ||
There is no primitive count value; you'll need to continue reading data until you hit the end of the display list. There are a couple values you can use for reference; either the surface's section size, the display list size, or | There is no primitive count value; you'll need to continue reading data until you hit the end of the display list. There are a couple values you can use for reference; either the surface's section size, or the surface's end offset. '''Do not use the display list size setting from the surface header, though'''; it's usually accurate, but on some models it will give you a size smaller than the table actually is, and you'll miss a bunch of data. See Metroid3/4a11192a.CMDL from Prime 1 (icicle Ridley) or Metroid1/05778239.CMDL from Echoes (Samus's gunship) for an example of this. | ||
There are 7 primitive types supported by GX, indicated in the upper 5 bits of the flag value. Note that the game only ever actually uses triangles, triangle strips, and triangle fans; however, all of these primitives are supported by GX and are therefore supported by the game, and so they could be used in custom model files. | There are 7 primitive types supported by GX, indicated in the upper 5 bits of the flag value. Note that the game only ever actually uses triangles, triangle strips, and triangle fans; however, all of these primitives are supported by GX and are therefore supported by the game, and so they could be used in custom model files. |