Changes
From Final Fantasy Inside
no edit summary
DAT file is divided into 11 sections (except for c0m127.dat, which contains only 2 sections : 7th and 8th).
{| border="01" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"! style="background: rgb(0204,0204,0204)" align="center"| Offset! style="background:rgb(204,204,204)" align="center" | Extension Length! style="background:rgb(204,204,204)" align="center" | DataDescription
|-
|style="background:rgb(255,255,255)" 0| [[ANZ]]2 bytes|style="background:rgb(255,255,255)" align="center" | LZS Compressed Dialog Answer LookupParent id
|-
|style="background:rgb(255,255,255)" 2|[[BBB]]2 bytes|style="background:rgb(255,255,255)" align="center" | UnknownBone size
|-
|style="background:rgb(255,255,204)" | 4|style="background:rgb(255,255,204)" |[[BIN]]44 bytes|style="background:rgb(255,255,255204)" | 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)" | UnknownDescription
|-
|style="background:rgb(255,255,255)" 0| [[BIZ]]4 bytes|style="background:rgb(255,255,255)" align="center" | LZS Compressed BIN file (Unknown)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(255204,255204,255204)" | [[DAT]]Offset|! style="background:rgb(255204,255204,255204)" align| Length! style="centerbackground:rgb(204,204,204)" | Sound EffectsDescription
|-
|style="background:rgb(255,255,255)" 0| [[DCT]]2 bytes|style="background:rgb(255,255,255)" align="center" | Japanese Word Dictionary Number of Vertices Data
|-
|style="background:rgb(255,255,255)" 2| [[KAT]]Varies * NbVerticesData|style="background:rgb(255,255,255)" align="center" | UnknownVertices Data
|-
|style="background:rgb(255,255,255)" Varies| [[SNG]]absolutePosition % 4|style="background:rgbPadding (255,255,2550x00)" align="center" | Midi/Mod like Music Data
|-
|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(255204,255204,255204)" | 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[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[STR2]; 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(255204,255204,255204)" | 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)" | 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)" | MDEC format movie fileDescription
|-
|style="background:rgb(255,255,255)" 0| [[TIZ]]4 bytes|style="background:rgb(255,255,255)" align="center" | LZS Compressed TIM fileNumber of TIMs
|-
|style="background:rgb(255,255,255)" 4| [[VIB]]nbTIMs * 4 bytes|style="background:rgb(255,255,255)" align="center" | UnknownTIMs Positions
|-
|style="background:rgb(255,255,255)" 4 + nbTIMs * 4| [[ZZZ]]4 bytes|style="background:rgb(255,255,255)" align="center" | LZS Compressed dialogsEnd of file
|-
| 8 + nbTIMs * 4
| Varies * nbTIMs
| TIMs
|}