Changes

Jump to navigation Jump to search

FF8/FileFormat DAT

5,112 bytes added, 01:57, 8 December 2010
no edit summary
By Mirex, JWP and myst6re.
== Camera Header ==
The format DAT file is almost the same as divided into 11 sections (except for c0m127.dat, which contains only 2 sections : 7th and 8th). {| 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 sections (always =11, except for c0m127.dat)|-| 4| nbSections * 4 bytes| Section Positions|-| 4 + nbSections * 4| 4 bytes| File size|} == Section 1: Skeleton == {| 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 bones|-|style="background:rgb(255,255,204)" | 2|style="background:rgb(255,255,204)" | 14 bytes|style="background:rgb(255,255,204)" | Unknown|-| 16| Number of bones * 48 bytes| Bones|} === Bone struct ===  {| 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| Parent id|-| 2| 2 bytes| Bone size|-|style="background:rgb(255,255,204)" | 4|style="background:rgb(255,255,204)" | 44 bytes|style="background:rgb(255,255,204)" | Unknown (often empty)|} == Section 2: Model geometry == === Header (data sub table) === {| 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 objects|-| 4| nbObjects * 4 bytes| Object Positions|} === Object Data === {| 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 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 ==== {| 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| 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[FF72]; uint8 texCoords2[2]; uint16 textureID_related; uint8 texCoords3[2]; uint16 u; /Field/Camera_Matrix|Final Fantasy VIItextureID_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) === {| 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 animations|-| 4| nbAnimations * 4 bytes| Animations Positions|} == Section 4: Unknown == Optionnal section, often empty. Differences == Section 5:A.I. == Maybe A.I. scripts.<ul><li>The zoom can === 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 present twice<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/li>TIM_format|TIMs]] with size 128x128 (8bit paletized).<li>There may be several cameras{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"! style="background:rgb(204, in this case the camera structure is repeated several times204, and sizeof204)" | Offset! style="background:rgb(each struct204,204,204) " | Length! style= 0x28 "background:rgb(with zoom twice for each204,204,204)</li>" | 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</ul>|}
Anonymous user

Navigation menu