Difference between pages "Another Mind" and "FF8/FileFormat DAT"

From Final Fantasy Inside
(Difference between pages)
Jump to navigation Jump to search
my_wiki>Halkun
(Created page with "(The following Was ripped off of Wikipedia because I'm lazy) Another Mind (アナザー・マインド Anazā Maindo?) is an FMV visual Novel created by Squaresofy for Sony P...")
 
my_wiki>Myst6re
 
Line 1: Line 1:
(The following Was ripped off of Wikipedia because I'm lazy)
+
By Mirex, JWP and myst6re.
  
Another Mind (????????? Anaz? Maindo?) is an FMV visual Novel created by Squaresofy for Sony PlayStation and released on November 12, 1998 in Japan. The game is extremely obscure. The game involves a 16 year-old girl named Hitomi Hayama who is involved in a car accident and admitted to a hospital. Upon waking, she realizes that another mind has taken residence in her head. The player takes on the role of this separate consciousness. The pair are then put into the middle of a mystery that begins at the hospital, which includes a murder, several suicide attempts, and a bombing attempt. Hitomi frequently communicates back with the player, and the player must convince her to perform actions rather than commanding.
+
== Header ==
  
 +
DAT file is divided into 11 sections (except for c0m127.dat, which contains only 2 sections : 7th and 8th).
  
The following are the file formats for the game. If the extension end in a "Z" They are compressed in an LZS format elaborated below.
+
{| 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="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center"
+
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204)" align="center" | Extension
+
! style="background:rgb(204,204,204)" | Offset
! style="background:rgb(204,204,204)" align="center" | Data
+
! style="background:rgb(204,204,204)" | Length
 +
! style="background:rgb(204,204,204)" | Description
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[ANZ]]
+
| 0
|style="background:rgb(255,255,255)" align="center" | LZS Compressed Dialog Answer Lookup
+
| 2 bytes
 +
| Parent id
 
|-
 
|-
|style="background:rgb(255,255,255)" |[[BBB]]
+
| 2
|style="background:rgb(255,255,255)" align="center" | Unknown
+
| 2 bytes
 +
| Bone size
 
|-
 
|-
|style="background:rgb(255,255,255)" |[[BIN]]
+
|style="background:rgb(255,255,204)" | 4
|style="background:rgb(255,255,255)" align="center" | Unknown
+
|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
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[BIZ]]
+
| 0
|style="background:rgb(255,255,255)" align="center" | LZS Compressed BIN file (Unknown)
+
| 4 bytes
 +
| Number of objects
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[DAT]]
+
| 4
|style="background:rgb(255,255,255)" align="center" | Sound Effects
+
| 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
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[DCT]]
+
| 0
|style="background:rgb(255,255,255)" align="center" | Japanese Word Dictionary
+
| 2 bytes
 +
| Number of Vertices Data
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[KAT]]
+
| 2
|style="background:rgb(255,255,255)" align="center" | Unknown
+
| Varies * NbVerticesData
 +
| Vertices Data
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[SNG]]
+
| Varies
|style="background:rgb(255,255,255)" align="center" | Midi/Mod like Music Data
+
| absolutePosition % 4
 +
| Padding (0x00)
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[STR]]
+
| Varies
|style="background:rgb(255,255,255)" align="center" | MDEC format movie file
+
| 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 [[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
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[TIZ]]
+
| 0
|style="background:rgb(255,255,255)" align="center" | LZS Compressed TIM file
+
| 4 bytes
 +
| Number of TIMs
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[VIB]]
+
| 4
|style="background:rgb(255,255,255)" align="center" | Unknown
+
| nbTIMs * 4 bytes
 +
| TIMs Positions
 
|-
 
|-
|style="background:rgb(255,255,255)" | [[ZZZ]]
+
| 4 + nbTIMs * 4
|style="background:rgb(255,255,255)" align="center" | LZS Compressed dialogs
+
| 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