
Originally Posted by
Tcll
hey Milun :O
I thought of a better way to explain the face hex...
you only highlighted the first parts... not the whole part
here is your code:
98 00 7B ;descriptor
03 15 03 15 01 A6 ;V-Point X face 1
03 16 03 16 01 A7 ;V-Point Y face 1
First part should be interpreted like this:
98 00 7B ; primitive flags, index count
Code:
primitiveFlags & 0xF8
0xB8 // points
0xA8 // lines
0xB0 // line strip
0x90 // triangles
0x98 // triangle strip
0xA0 // triangle fan
0x80 // quads
The index data start with a byte value that determines the primitive type to be rendered, then a 2-byte value that determines the number of index groups that follow. Unfortunately this is where things can get trick, because not all models will have normals, and untextured models may not have uvs, or if a model ever has multiple textures there could be multiple uv indices. As such there may not always be an index group size of 3 like is being assumed here (vertex, normal, uv index values per indexed vertex in this case i am assuming from what has been shown). Also for models that have less than 256 values to index, it is not always guaranteed that index values will even be 2 bytes. Just something to be aware of if you see some files that don't seem to match the pattern you are adhering to now.
03 15 03 15 01 A6 ;Vertex 1 (vertex index, normal index, uv index) *assuming i have the order correct
After count number of groups, the sequence may repeat with another primitive type byte and 16-bit index count and so on. May help you to look up some info on how the gamecube/wii send data for rendering to the graphics card.
Hope that helps.