|-
|UInt32
|Group Type (1 Standard, 17 Shadow, 256 Morph)
|ID (?)
|-
|UInt32
|}
==== Mesh/Morph Data Group ====
Each one of these in order references a Weight Reference and all points within it will use that weight reference
{| class="wikitable"
!Type
==== <u>Mesh Data</u> ====
The mesh data within the mpf can be very complex and is chunked meaning there can be multiple data chunks within a Mesh/Morph Data Group
Depending on the group type (Located in the mesh group) can effect what information is in here.
* If Group Type is Standard there will be UV/Weight Block, Normal Block and, Vertex Block.
* If Group Type is Shadow There will be Shadow Vertex Block
* If Group Type is Morph the data will be the same as standard however there will be no data chunking
Bytes[48] Unimportant Data for Exporting
{| class="wikitable"
|-
|UInt32
|Unknown2 (If group type is shadow this will be 0)
|Unknown1 (Seems to have some relation to Normals)
|-
|UInt32
|}
===== Tristrip Data =====
{| class="wikitable"
!Type
!Description
|-
|UInt32
|Count of vertices
|-
|Bytes[12]
|Padding
|}
==== UV/Weight Block ====
{| class="wikitable"
!Type
!Description
|-
|Bytes[16]
|Header of UV Block (Hex: 00100000 00100000 00000020 50505050)
|-
|Bytes[12]
|Unknown
|-
|Byte
|Unknown
|-
|Byte
|Prefix List Start (0x80)
|-
|Byte
|Count of UVs
|-
|Byte
|Suffix of UV count (0x6D)
|-
|List of '''''UV value'''''
|List Of UV/Weights Values
|}
'''''UV value'''''
{| class="wikitable"
!Type
!Description
|-
|UInt16
|UV map U (X translation) (In order to get the float value you do Number / 4096)
|-
|UInt16
|UV map V (Y translation) (In order to get the float value you do Number / 4096)
|-
|UInt16
|Bone Weight Ref ID (In order to get ID you do (Number - 14)/4)
|-
|Uint16
|Bone Weight Ref ID (In order to get ID you do ???)
|}
===== Normal Block =====
- **Triangle Strip Count Row**
{| class="wikitable"
!Type
!Description
|-
|Bytes[16]
|Header of normal Block (Hex: 00000000 00800000 00000020 40404040)
|-
|Bytes[12]
|Unknown
|-
|Byte
|Unknown
|-
|Byte
|Prefix List Start (0x80)
|-
|Byte
|Count of Normals
|-
|Byte
|Suffix of Normal count (??)
|-
|List of Vector 3 (3 Int16s)
|List of normals (In order to get the float value you do Number / 4096(???))
|}
==== Vertex Block ====
The amount of triangle strip rows can be found inside Mesh Info Row 2
{| class="wikitable"
!Type
!Description
|-
|Bytes[16]
|Header of Vertex Block (Hex: 00000000 0000803F 00000020 40404040)
|-
|Bytes[12]
|Unknown
|-
|Byte
|Unknown
|-
|Byte
|Prefix List Start (0x80)
|-
|Byte
|Count of Vertices
|-
|Byte
|Suffix of Vertex count (0x78)
|-
|List of Vector 3 (3 Float32)
|List Of Vertex values
|}
==== Shadow Vertex Block ====
_First type is assumed to be either UInt32 or Byte_
{| class="wikitable"
!Type
| Offset | Type | Description | Key |
!Description
|-
|--------|-----------|-----------------------------------------------------------------------------------------------------------------|-----|
|Bytes[16]
|Header of Vertex Block (Hex: 00000000 0000803F 00000020 40404040)
| 0x00 | UInt24 | Count of total rows | |
|-
|Bytes[12]
| 0x03 | Byte | Size of individual rows (Always 16) | |
|Unknown
|-
| 0x04 | Bytes[12] | Unknown (Filler/Padding) | |
|Byte
|Unknown
| 0x10 | Bytes[13] | Unknown (Always 0x00000000010100010000000000) | |
|-
|Byte
| 0x1D | Byte | Prefix of count (0x80) | |
|Prefix List Start (0x80)
|-
| 0x1E | Byte | Count of total mesh info rows (sum of the amount of mesh info rows and the amount of triangle strip count rows) | |
|Byte
|Count of Vertices
| 0x1F | Byte | Suffix of count (0x6c) | |
|-
|Byte
| 0x20 | Bytes[16] | Mesh Info Row 1 | |
|Suffix of Vertex count (??)
|-
| 0x30 | Bytes[16] | Mesh Info Row 2 | |
|List of '''''Shadow Vertex'''''
|List Of Shadow Vertex values
| | List | List of Triangle Strip Count Rows | |
|}
'''''Shadow Vertex value'''''
{| class="wikitable"
| Type | Description |
!Type
!Description
|-----------|-----------------------------------------|
|-
|Vector 3 (3 Float32)
| UInt32 | Count of vertices |
|Location XYZ
|-
| Bytes[12] | Padding/Unknown |
|Uint16
|Bone Weight Ref ID (In order to get ID you do (Number - 14)/4)
_mesh data continued:_
|}
| Type | Description |
|-----------|-----------------------------------------|
| UInt24 | Count of rows |
| Byte | Unknown (Always 16) |
| Bytes[12] | Unknown |
| List | UV Block |
| List | Normal Block |
| List | Vertex Block |
<nowiki><br></nowiki>
<nowiki>##</nowiki> UV Block
| Type | Desc | Key |
|-----------|----------------------------------------------------------------|-----|
| Bytes[16] | Header of UV Block (Hex: 00100000 00100000 00000020 50505050) | |
| Bytes[12] | Unknown | |
| Byte | Unknown | |
| Byte | Prefix of UV count (0x80) | |
| Byte | Count of UVs | |
| Byte | Suffix of UV count (0x6D) | |
| List | List of UV values | |
<nowiki>**</nowiki>UV value**
| Type | Description |
|-----------|-----------------------------------------|
| UInt16 | UV map U (X translation) |
| UInt16 | UV map V (Y translation) |
| UInt16 | UV map U distance |
| UInt16 | UV map V distance |
<nowiki><br></nowiki>
<nowiki>##</nowiki> Normal Block
| Type | Desc | Key |
|-----------|-------------------------------------------------------------------|-----|
| Bytes[16] | Header of normal Block (Hex: 00000000 00800000 00000020 40404040) | |
| Bytes[12] | Unknown | |
| Byte | Unknown | |
| Byte | Prefix of Normal Count (0x80) | |
| Byte | Count of Normals | |
| Byte | Suffix of Normal count (0x79) | |
| List | List Normal values | |
<nowiki>**</nowiki>Normal value:**
| Type | Description |
|-----------|-------------------------------|
| UInt16 | Normal X direction |
| UInt16 | Normal Y direction |
| UInt16 | Normal Z direction |
<nowiki><br></nowiki>
<nowiki>##</nowiki> Vertex Block
| Type | Desc | Key |
|-----------|-------------------------------------------------------------------|-----|
| Bytes[16] | Header of Vertex Block (Hex: 00000000 0000803F 00000020 40404040) | |
| Bytes[12] | Unknown | |
| Byte | Unknown | |
| Byte | Prefix of Vertex count (0x80) | |
| Byte | Count of Vertices | |
| Byte | Suffix of Vertex count (0x78) | |
| List | List Vertex values | |
<nowiki>**</nowiki>Vertex value:**
| Type | Description |
|-----------|-------------------------------|
| Float32 | Location X |
| Float32 | Location Y |
| Float32 | Location Z |
<nowiki>##</nowiki> Shadow Vertex Block
| Type | Desc | Key |
|-----------|-------------------------------------------------------------------|-----|
| Bytes[16] | Header of Vertex Block (Hex: 00000000 0000803F 00000020 40404040) | |
| Bytes[12] | Unknown | |
| Byte | Unknown | |
| Byte | Prefix of Vertex count (0x80) | |
| Byte | Count of Vertices | |
| Byte | Suffix of Vertex count (0x6C) | |
| List | List Vertex values | |
<nowiki>**</nowiki>Vertex value:**
| Type | Description |
|-----------|-------------------------------|
| Float32 | Location X |
| Float32 | Location Y |
| Float32 | Location Z |
| UInt32 | Unknown |
<nowiki><br></nowiki>
<nowiki>***</nowiki>
<nowiki><br></nowiki>
<nowiki>**</nowiki>End of MPF Structure**
<nowiki><br></nowiki>
|