Difference between pages "FF7/Technical/Customising" and "FF8/FileFormat DAT"

From Final Fantasy Inside
< FF7‎ | Technical(Difference between pages)
Jump to navigation Jump to search
my_wiki>Cyberman
(Editors)
 
my_wiki>Myst6re
 
Line 1: Line 1:
The following page maintains an up-to-date list of projects that can be used in conjunction with [[FF7|Final Fantasy VII]], ranging from patches used to enhance graphics, to viewers and editors for game data. Entries are listed by category, then alphabetically.
+
By Mirex, JWP and myst6re.
  
== Patches ==
+
== Header ==
  
{| border="1" cellspacing="1" cellpadding="3" style="border: 1px solid black; border-collapse: collapse;"
+
DAT file is divided into 11 sections (except for c0m127.dat, which contains only 2 sections : 7th and 8th).
! style="background:rgb(204,204,204)" width="120" | Project Name
+
 
! style="background:rgb(204,204,204)" width="300" | Description
+
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204)" width="100" | Author
+
! style="background:rgb(204,204,204)" | Offset
! style="background:rgb(204,204,204)" width="80" | Version / Status
+
! style="background:rgb(204,204,204)" | Length
! style="background:rgb(204,204,204)" | Links
+
! 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
 
|-
 
|-
! align="left" | High Resolution Cloud
+
| Varies
| Changes the Cloud player model to a high-resolution version.
+
| 4 bytes
| -
+
| Total number of vertices (may be not visible)
| Final
+
|}
| [http://spinningcone.com/ff/stormmedia/projects/cloud.ffpatch Project]
+
 
 +
==== 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
 
|-
 
|-
! align="left" | High Resolution FFVII PC
+
| 0
| Sets the screen resolution to 1280x960 in-game.
+
| 2 bytes
| [http://forums.qhimm.com/index.php?action=profile;u=1 The SaiNt]
+
| Bone id
| v1.00
 
| [http://forums.qhimm.com/index.php?topic=6005.0 Project & Forum]
 
 
|-
 
|-
! align="left" | NPC Reconstruction
+
| 2
| Replaces low-poly Non-Playable Characters with higher-poly versions.
+
| 2 bytes
| [http://forums.qhimm.com/index.php?action=profile;u=1077 ice_cold513]
+
| Number of vertices
[http://forums.qhimm.com/index.php?action=profile;u=1176 Borde]
 
et al
 
| v0.6 (04/08/06)
 
| [http://forums.qhimm.com/index.php?topic=5105.0 Project & Forum]
 
 
|-
 
|-
 +
| 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" style="border: 1px solid black; border-collapse: collapse;"
+
{| 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 Name
+
! style="background:rgb(204,204,204)" | Offset
! style="background:rgb(204,204,204)" width="300" | Description
+
! style="background:rgb(204,204,204)" | Length
! style="background:rgb(204,204,204)" width="100" | Author
+
! style="background:rgb(204,204,204)" | Description
! style="background:rgb(204,204,204)" width="80" | Version / Status
+
|-
! style="background:rgb(204,204,204)" | Links
+
| 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.

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