-
Notifications
You must be signed in to change notification settings - Fork 0
DAT File Format
DAT files are used to store most of the data used by Breath of Fire 3, including audio, textures, and text.
Every DAT file follows the same format, and consists of an array of entries that fill the entire file. Each entry in this array has a header, followed by the actual data.
The layout of each entry header is as follows:
| Type | Name |
|---|---|
| uint | Type |
| uint | Index |
| uint | Length |
| uint | unused |
Type is a value between 0 and 3 and tells the client what type of data is contained in this entry. The types of data that these values represent are as follows:
- 0 = Unknown
- 1 = Unknown (possibly sprite image data)
- 2 = Audio data
- 3 = Image data (possibly for textures)
This entry type contains information about voice channels, a lookup table for individual audio files, and an array of audio data. Audio data is stored in WAV format.
This entry type starts with an array of 24 voices. The layout of each voice is as follows:
| Type | Name |
|---|---|
| uint | Unknown |
| uint | Unknown |
| uint | Unknown |
| uint | Unknown |
Following that is the audio lookup table, which consists of 64 lookup entries. The layout of each lookup entry is as follows:
| Type | Name |
|---|---|
| uint | Offset |
| uint | Size |
Offset is the position of the audio data relative to the start of the Audio Data entry type. The first WAV file will always be located at relative offset 896, as this is the size of the voice and lookup arrays combined.
Size is the size of the audio data in bytes.
This entry type contains image data, possibly for textures used by 3D models. It contains an array of image entries. The layout of each image entry is as follows:
| Type | Name |
|---|---|
| uint[72] | Unknown |
An index into an array where this entry should be stored. For entry type 1, this also contains other information.
The size of the following data in bytes.
The final value in the header is unused and serves only to pad it to 16 bytes