Template:Incomplete
This is the Model Format used for the 'Portable' line of Metal Gear games.
Format Specifications
Metal Gear Solid: Peace Walker (PSP)
Header
|
Size
|
Value
|
Extra Info
|
uint32 {4}
|
Magic
|
|
uint32 {4}
|
Number of Bones
|
|
uint32 {4}
|
Number of Materials
|
|
uint32 {4}
|
Number of Mesh Objects
|
|
uint32 {4}
|
Number of Materials
|
|
uint32 {4}
|
Hashed filename
|
|
uint32 {4}
|
Bone Table Offset
|
|
uint32 {4}
|
Objects Table Offset
|
|
uint32 {4}
|
Material Table Offset
|
|
uint32 {4}
|
Unknown
|
May be two shorts rather than a long
|
uint32 {4}
|
Unknown
|
|
uint32 {4}
|
Unknown
|
|
uint32 {4}
|
Unknown
|
|
float {4}
|
Max X
|
|
float {4}
|
Max Y
|
|
float {4}
|
Max Z
|
|
float {4}
|
Max W
|
|
float {4}
|
Min X
|
|
float {4}
|
Min Y
|
|
float {4}
|
Min Z
|
|
float {4}
|
Min W
|
|
Bone Table (For Number of Bones)
|
Size
|
Value
|
Extra Info
|
uint32 {4}
|
Hashed Bone Name
|
|
float {4}
|
y0
|
Usually 0x0 so I'm not sure
|
uint32 {4}
|
Parent
|
|
float {4}
|
w0
|
Usually 0x0 so I'm not sure
|
float {4}
|
Rotation X
|
|
float {4}
|
Rotation Y
|
|
float {4}
|
Rotation Z
|
|
float {4}
|
Rotation W
|
|
float {4}
|
Position X
|
|
float {4}
|
Position Y
|
|
float {4}
|
Position Z
|
|
float {4}
|
Position W
|
|
float {4}
|
Max X
|
|
float {4}
|
Max Y
|
|
float {4}
|
Max Z
|
|
float {4}
|
Max W
|
|
float {4}
|
Min X
|
|
float {4}
|
Min Y
|
|
float {4}
|
Min Z
|
|
float {4}
|
Min W
|
|
Material Table (For Number of Materials)
|
Size
|
Value
|
Extra Info
|
uint32 {4}
|
Hashed Material Name
|
|
uint32 {4}
|
Unknown
|
|
uint32 {4}
|
Parent Material
|
|
uint32 {4}
|
Unknown
|
Possibly just padding
|
Object Table (For Number of Objects)
|
Size
|
Value
|
Extra Info
|
uint32 {4}
|
Hashed Material Name
|
This mesh object will use that material
|
uint32 {4}
|
Flags
|
Determines Vert Definition and how Faces are read
|
uint32 {4}
|
Number of Face Indexes
|
|
uint32 {4}
|
Face Index Offset
|
|
uint32 {4}
|
Vertex Buffer Offset
|
|
uint32 {4}
|
Skinning Table Offset
|
|
uint32 {4}
|
Vertex Buffer Size
|
|
uint32 {4}
|
Unknown
|
Most likely padding
|
float {4}
|
Max X
|
|
float {4}
|
Max Y
|
|
float {4}
|
Max Z
|
|
float {4}
|
Max W
|
|
float {4}
|
Min X
|
|
float {4}
|
Min Y
|
|
float {4}
|
Min Z
|
|
float {4}
|
Min W
|
|
float {4}
|
Position X
|
|
float {4}
|
Position Y
|
|
float {4}
|
Position Z
|
|
float {4}
|
Position W
|
|
Face Index (For Number of Face Indexes)
|
Size
|
Value
|
Extra Info
|
uint16 {2}
|
Unknown
|
Always 0x0
|
uint16 {2}
|
Number of Face Indices
|
|
uint32 {4}
|
Face Index Offset
|
if Object flag && 0xF000 = 0x1000 this is the vertex buffer offset and face index is built from vertex index if this is 0x0 and vertex buffer offset is 0x0 vertex buffer is compressed in some way at the end of file
|
uint32 {4}
|
Texture Table Offset
|
|
Texture Table
|
Size
|
Value
|
Extra Info
|
uint32 {4}
|
Hashed Texture Name
|
|
uint8 {1}
|
Unknown
|
|
uint8 {1}
|
Unknown
|
|
uint8 {1}
|
Unknown
|
|
uint8 {1}
|
Unknown
|
|
uint32 {4}
|
Colour R
|
|
uint32 {4}
|
Colour G
|
|
uint32 {4}
|
Colour B
|
|
float {4}
|
Specular Power
|
|
Skinning Table
|
Size
|
Value
|
Extra Info
|
uint16 {2}
|
Unknown
|
|
uint8 {1}
|
Bone Count
|
|
For bone Count
|
uint8 {1}
|
Bone Number
|
|