FF8/FileFormat MCH

From Final Fantasy Inside
< FF8
Revision as of 01:21, 25 May 2009 by my_wiki>Koral
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Last Update: Koral 18:21, 24 May 2009 (EDT)

MCH Field Character Models

Each MCH file contains a skinned-animated model representing a character on the field or world Maps. There appear to be multiple files of the same character representing differnt Level of Details.

They usually contain multiple TIM textures (standard PSX textures), mesh geometry, bones, skeleton heirarchy information and skinning information. The whereabouts of the Bone Animation data is currently unknown.


Accessing MCH Files

todo


MCH File Structure

Header

0x100 bytes [256 bytes]

    DWORD: Offsets to multiple Texture-Data
        Start: 0x00
        Parse DWORDS until read value: 0xFFFFFFFF

    DWORD: Offset to Model Data
    


Texture-Data

(for each Texture)

    Standard [TIM] format textures


Model-Data

    Header: 0x40 bytes (64)

        DWORD: number of Skeleton Bones
        DWORD: number of Vertices
        DWORD:   (unknown)
        DWORD: number of Faces
        DWORD:   (unknown)
        DWORD: number of Skin objects

        DWORD * 10:   (unknown)
  
    Skeleton Data: 0x40 bytes per bone, recurse through number of bones dictated in Header
    (for each bone)

        SHORT: parent bone (1-based)
        SHORT:   (unknown)
        DWORD:   (unknown)
        SHORT: bone length
        DWORD * 15:   (unknown)
          
    Vertex Data: 
    (for each vertex)

        SHORT * 3: Vertex XYZ Position
        SHORT:   (unknown)
        DWORD * 4:   (unknown)
          
    Face Data: 
    (for each face)

        DWORD:   (unknown)
        BYTE * 3:    (unknown)
        BYTE:  Polygon Type [0x2d = Quad, 0x25 = Triangle]
        DWORD * 2:   (unknown)
        SHORT * 4: Indices per Face-Vertex
        SHORT * 4:   (unknown)
        BYTE * 4 * 4: Vertex Colour (RGBA) per Face-Vertex
        BYTE * 2 * 4: Vertex UV, (1st byte U, 2nd byte V) per Face-Vertex
        DWORD * 12:  (unknown)
  
    Skin-Object Data: 
    (for each skin-object)

        SHORT: Bone ID (1-based)
        SHORT:   (unknown)
        SHORT: index of first vertex
        SHORT: number of vertices
        


todo: notes on skinning, animation data


MCH Model File List

todo