Changes

Jump to navigation Jump to search

FF8/FileFormat DAT

4,647 bytes added, 01:57, 8 December 2010
no edit summary
===Symptoms===By Mirex, JWP and myst6re.
In Gold Saucer, whenever I go to Chocobo Races my game crashes to Windows. I'm using Windows XP.== Header ==
===Causes===DAT file is divided into 11 sections (except for c0m127.dat, which contains only 2 sections : 7th and 8th).
This is a very known problem caused by bad memory allocation. Game refers to pointer that doesn't exist in memory and Windows XP doesn't allow such operations{| 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|}
===Solution=Section 1: Skeleton ==
Eidos has no solution to this problem besides giving you Save so you can play further in{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-game. Fortunatelycollapse: collapse;"! style="background:rgb(204, a programmer called Jedwin204, in topic on [http204)" | Offset! style="background://forums.qhimm.com/viewtopic.php?trgb(204,204,204)" | Length! style=1245 Qhimm Forums] described this problem and provided a solution. Qhimm wrote a patcher that can handle most "background:rgb(204,204,204)" | Description|-| 0| 2 bytes| Number of game versions and fixes this problem. You can download it [httpbones|-|style="background:rgb(255,255,204)" | 2|style="background:rgb(255,255,204)" | 14 bytes|style="background://elentor.com/Projetos/FF7rgb(255,255,204)" | Unknown|-Tools/Patches/ff7_chocobo_patch.zip here].| 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[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)" | 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 [[FF7PSX/TechnicalTIM_format|Back to Technical Problems pageTIMs]]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|}
Anonymous user

Navigation menu