Changes
From Final Fantasy Inside
no edit summary
== Patches Header ==
DAT file is 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)" width| 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="120center" style="border: 1px solid black; border-collapse: collapse;"! style="background:rgb(204,204,204)" | Project NameOffset! style="background:rgb(204,204,204)" width| Length! style="300background: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)" width| Offset! style="100background:rgb(204,204,204)" | Length! style="background:rgb(204,204,204)" | AuthorDescription|-| 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)" width| Offset! style="80background:rgb(204,204,204)" | Version / StatusLength! style="background:rgb(204,204,204)" | LinksDescription|-| 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
|-
|-
|-
|-
| 4
| nbVertices * 6 bytes
| Vertices (nbVertices * 3 shorts)
|}
== Editors == 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) === {| 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. == 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)" width="120" | Project NameOffset! style="background:rgb(204,204,204)" width="300" | DescriptionLength! style="background:rgb(204,204,204)" width="100" | AuthorDescription|-| 0! style="background:rgb(204,204,204)" width="80" | Version / Status2 bytes! style="background:rgb(204,204,204)" | LinksNumber 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
|}