Skip to content

DAT File Format

Biggs McWedge edited this page Nov 4, 2025 · 3 revisions

Description

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.

Entry Header

The layout of each entry header is as follows:

Type Name
uint Type
uint Index
uint Length
uint unused

Type

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)

Audio Data

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.

Image Data

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

Index

An index into an array where this entry should be stored. For entry type 1, this also contains other information.

Length

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

Clone this wiki locally