Difference between revisions of "FF8/FileFormat DAT"
< FF8
Jump to navigation
Jump to search
my_wiki>Myst6re |
my_wiki>Myst6re |
||
| Line 190: | Line 190: | ||
| nbAnimations * 4 bytes | | nbAnimations * 4 bytes | ||
| Animations Positions | | Animations Positions | ||
| + | |} | ||
| + | |||
| + | == Section 4: Unknown == | ||
| + | |||
| + | Optionnal section, often empty. | ||
| + | |||
| + | == Section 5: A.I. == | ||
| + | |||
| + | Maybe A.I. scripts. | ||
| + | |||
| + | === Header === | ||
| + | |||
| + | {| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;" | ||
| + | ! style="background:rgb(204,204,204)" | Offset | ||
| + | ! style="background:rgb(204,204,204)" | Length | ||
| + | ! style="background:rgb(204,204,204)" | Description | ||
| + | |- | ||
| + | | 0 | ||
| + | | 2 bytes | ||
| + | | Number of scripts | ||
| + | |- | ||
| + | | 2 | ||
| + | | nbScripts * 2 bytes | ||
| + | | Scripts Positions | ||
| + | |} | ||
| + | |||
| + | == Section 6: unknown == | ||
| + | |||
| + | Can be empty. | ||
| + | |||
| + | == Section 7: Informations & stats == | ||
| + | |||
| + | TODO (interpreted at 94%) | ||
| + | |||
| + | == Section 8: Battle scripts == | ||
| + | |||
| + | == Section 9: Sounds == | ||
| + | |||
| + | Contains AKAO sequences. | ||
| + | |||
| + | == Section 10: Sounds == | ||
| + | |||
| + | Contains AKAO sequences. | ||
| + | |||
| + | == Section 11: Textures == | ||
| + | |||
| + | Contains some [[PSX/TIM_format|TIMs]] with size 128x128 (8bit paletized). | ||
| + | |||
| + | {| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;" | ||
| + | ! style="background:rgb(204,204,204)" | Offset | ||
| + | ! style="background:rgb(204,204,204)" | Length | ||
| + | ! style="background:rgb(204,204,204)" | Description | ||
| + | |- | ||
| + | | 0 | ||
| + | | 4 bytes | ||
| + | | Number of TIMs | ||
| + | |- | ||
| + | | 4 | ||
| + | | nbTIMs * 4 bytes | ||
| + | | TIMs Positions | ||
| + | |- | ||
| + | | 4 + nbTIMs * 4 | ||
| + | | 4 bytes | ||
| + | | End of file | ||
| + | |- | ||
| + | | 8 + nbTIMs * 4 | ||
| + | | Varies * nbTIMs | ||
| + | | TIMs | ||
|} | |} | ||
Revision as of 01:57, 8 December 2010
By Mirex, JWP and myst6re.
Contents
Header
DAT file is divided into 11 sections (except for c0m127.dat, which contains only 2 sections : 7th and 8th).
| Offset | Length | Description |
|---|---|---|
| 0 | 4 bytes | Number of sections (always =11, except for c0m127.dat) |
| 4 | nbSections * 4 bytes | Section Positions |
| 4 + nbSections * 4 | 4 bytes | File size |
Section 1: Skeleton
| Offset | Length | Description |
|---|---|---|
| 0 | 2 bytes | Number of bones |
| 2 | 14 bytes | Unknown |
| 16 | Number of bones * 48 bytes | Bones |
Bone struct
| Offset | Length | Description |
|---|---|---|
| 0 | 2 bytes | Parent id |
| 2 | 2 bytes | Bone size |
| 4 | 44 bytes | Unknown (often empty) |
Section 2: Model geometry
Header (data sub table)
| Offset | Length | Description |
|---|---|---|
| 0 | 4 bytes | Number of objects |
| 4 | nbObjects * 4 bytes | Object Positions |
Object Data
| Offset | Length | Description |
|---|---|---|
| 0 | 2 bytes | Number of Vertices Data |
| 2 | Varies * NbVerticesData | Vertices Data |
| Varies | absolutePosition % 4 | Padding (0x00) |
| Varies | 2 bytes | Num triangles |
| Varies | 2 bytes | Num quads |
| Varies | 8 bytes | Padding (0x00) |
| Varies | numTriangles * 16 bytes | Triangles |
| Varies | numQuads * 20 bytes | Quads |
| Varies | 4 bytes | Total number of vertices (may be not visible) |
Vertice Data
| Offset | Length | Description |
|---|---|---|
| 0 | 2 bytes | Bone id |
| 2 | 2 bytes | Number of vertices |
| 4 | nbVertices * 6 bytes | Vertices (nbVertices * 3 shorts) |
Useful structures
typedef struct {
sint16 x, y, z;
} vertice;
(sizeof = 6)
typedef struct {
uint16 vertex_indexes[3];
uint8 texCoords1[2];
uint8 texCoords2[2];
uint16 textureID_related;
uint8 texCoords3[2];
uint16 u; // textureID_related2
} triangle;
(sizeof = 16)
typedef struct {
uint16 vertex_indexes[4];
uint8 texCoords1[2];
uint16 textureID_related;
uint8 texCoords2[2];
uint16 u; // textureID_related2
uint8 texCoords3[2];
uint8 texCoords4[2];
} triangle;
(sizeof = 20)
Section 3: Model animation
Header (data sub table)
| Offset | Length | Description |
|---|---|---|
| 0 | 4 bytes | Number of animations |
| 4 | nbAnimations * 4 bytes | Animations Positions |
Section 4: Unknown
Optionnal section, often empty.
Section 5: A.I.
Maybe A.I. scripts.
Header
| Offset | Length | Description |
|---|---|---|
| 0 | 2 bytes | Number of scripts |
| 2 | nbScripts * 2 bytes | Scripts Positions |
Section 6: unknown
Can be empty.
Section 7: Informations & stats
TODO (interpreted at 94%)
Section 8: Battle scripts
Section 9: Sounds
Contains AKAO sequences.
Section 10: Sounds
Contains AKAO sequences.
Section 11: Textures
Contains some TIMs with size 128x128 (8bit paletized).
| Offset | Length | Description |
|---|---|---|
| 0 | 4 bytes | Number of TIMs |
| 4 | nbTIMs * 4 bytes | TIMs Positions |
| 4 + nbTIMs * 4 | 4 bytes | End of file |
| 8 + nbTIMs * 4 | Varies * nbTIMs | TIMs |