3D Model Header
Global header for the 3D model, one per model.
Size: 20 bytes
Offset | Size | Description |
---|---|---|
| 0x00 | | WORD | | NULL (0x0000) |
| 0x02 | | BYTE | | Number of Bones |
| 0x03 | | BYTE | | Number of Groups |
| 0x04 | | WORD | | Total size of data, excl. all headers (3D Model/Bone/Object-Group Headers) |
| 0x06 | | WORD | | Unknown (possible an ID) |
| 0x08 | | WORD | | Unknown (possible an ID) |
| 0x0A | | WORD | | Unknown (possible an ID) |
| 0x0C | | DWORD | | Pointer to Bone Header(s) |
| 0x10 | | WORD | | Pointer to Group Header(s) |
Bone Header
Global header for bones, one header per bone.
Size: 4 bytes
Offset | Size | Description |
---|---|---|
| 0x00 | | 24BIT | | Length |
| 0x03 | | BYTE | | Parent Bone |
Group Header
Global header for groups, one header per group.
Size: 40 bytes
Offset | Size | Description |
---|---|---|
| 0x00 | | WORD | | Size of the group’s data (excluding the header). |
| 0x02 | | WORD | | Number of Quadrangle Polygons (Type-A) |
| 0x04 | | WORD | | Number of Triangle Polygons (Type-A) |
| 0x06 | | WORD | | Number of Quadrangle Polygons (Type-B) |
| 0x08 | | WORD | | Number of Triangle Polygons (Type-B) |
| 0x0A | | WORD | | Number of Quadrangle Polygons (Type-C) |
| 0x0C | | WORD | | Number of Triangle Polygons (Type-C) |
| 0x0E | | WORD | | Group X offset |
| 0x10 | | WORD | | Group Y offset |
| 0x12 | | WORD | | Group Z offset |
| 0x14 | | DWORD | | Pointer to Bone Data Chunk |
| 0x18 | | DWORD | | Pointer to Vertex Data Chunk |
| 0x1C | | DWORD | | Pointer to Polygon Data Chunk |
| 0x20 | | DWORD | | Pointer to Texture Mapping Data Chunk |
| 0x24 | | DWORD | | Pointer to End-of-Group |
Bone Data Chunk
Local group data for bones, one data chunk per bone of the group.
Size: 4 bytes
Offset | Size | Description |
---|---|---|
| 0x00 | | DWORD | | Number of vertices connected to the bone |
Vertex Data Chunk
Local group data for vertices, one data chunk per vertex of the group.
Size: 8 bytes
Offset | Size | Description |
---|---|---|
| 0x00 | | WORD | | X-Coordinate (signed value) |
| 0x02 | | WORD | | Y-Coordinate (signed value) |
| 0x04 | | WORD | | Z-Coordinate (signed value) |
| 0x06 | | BYTE | | ID of the bone the vertex is connected to |
| 0x07 | | BYTE | | Unknown |
Polygon Data Chunk
Local group data for polygons.
There are six different types of polygons, three types of polygons made out of four vertices (quadrangle) and three types of polygons made out of three vertices (triangle).
Quadrangle Type-A
Size: 24 bytes
Offset | Size | Description |
---|---|---|
| 0x00 | | WORD | | Vertex index 1 |
| 0x02 | | WORD | | Vertex index 2 |
| 0x04 | | WORD | | Vertex index 3 |
| 0x06 | | WORD | | Vertex index 4 |
| 0x08 | | WORD | | Texture index 1 |
| 0x0A | | WORD | | Texture index 2 |
| 0x0C | | WORD | | Texture index 3 |
| 0x0E | | WORD | | Texture index 4 |
| 0x10 | | 24BIT | | Vertex colour (R8G8B8) |
| 0x13 | | BYTE | | Texture material index (Referenced to 0x12 chunk) |
| 0x14 | | DWORD | | Unknown |
Triangle Type-A
Size: 20 bytes
Offset | Size | Description |
---|---|---|
| 0x00 | | WORD | | Vertex index 1 |
| 0x02 | | WORD | | Vertex index 2 |
| 0x04 | | WORD | | Vertex index 3 |
| 0x06 | | BYTE | | Texture material index (Referenced to 0x12 chunk) |
| 0x07 | | BYTE | | Unknown |
| 0x08 | | 24BIT | | Vertex colour (R8G8B8) ? |
| 0x0B | | BYTE | | Unknown |
| 0x0C | | WORD | | Texture index 1 |
| 0x0E | | WORD | | Texture index 2 |
| 0x10 | | WORD | | Texture index 3 |
| 0x12 | | DWORD | | If first bit = 1, then packet type chenging from 0x24 to 0x26 and “ANDed” with 0xE0 part “ORing” with TPage. |
Quadrangle Type-B
Size: 32 bytes
Triangle Type-B
Size: 24 bytes
Quadrangle Type-C
Size: 24 bytes
Triangle Type-C
Size: 20 bytes
Texture Mapping Data Chunk
Local group data for texture mapping.
The number of texture mapping coordinates are: Number of quadrangle polygons (any type) * 4 + Number of triangle polygons (any type) * 3.
Size: 2 bytes
Offset | Size | Description |
---|---|---|
| 0x00 | | BYTE | | U-Coordinate |
| 0x01 | | BYTE | | V-Coordinate |