GRAF:Act Of War DAT

From XentaxWiki
Jump to: navigation, search

Back to index | Edit this page

DAT

Format Specifications

char {4}     - Header (edat)

uint32 {4}   - Length of header after the 10 nulls (18)
uint32 {4}   - Unknown
byte {10}    - null
uint16 {2}   - Unknown (1)
byte {1}     - null
uint32 {4}   - Directory Offset
uint32 {4}   - Directory Length
byte {7}     - null

// For each file

byte {X}     - File Data

// Directory

// for each group
uint32 {4}   - Group/File Indicator (0=file, #=length of this group entry, -#=offset to a previous file entry)
if (group){
uint32 {4}   - Length of this group, including the file entries (ie relative offset to next group or null)
char {X}     - Group Name
byte {X}     - null Group Name Terminator
byte {0-1}   - null Padding to a multiple of 2 bytes (ie only exists if groupnameLength+1 is odd)
}
else if (file){
uint32 {4}   - Last File Indicator (0=last file in this group, #=length of this file entry)
uint32 {4}   - File Offset
uint32 {4}   - File Length
byte {1}     - Unknown (0) (something to do with the Filename position?)
char {X}     - Filename
byte {X}     - null Filename Terminator
byte {0-1}   - null Padding to a multiple of 2 bytes (ie only exists if filenameLength+2 is odd)
}
else if (previous offset (negative number)){
uint32 {4}   - Last File Indicator (0=last file in this group, #=length of this file entry)
uint32 {4}   - File Offset
uint32 {4}   - File Length
uint16 {2}   - null
}

Notes and Comments

  • The files are stored in a special way so as to reduce the amount of space needed to store the filenames. It does this by grouping the files together that share a common first-part of their name, and then building up the actual filename of each file by joining a whole lot of group names together.
For example, if we have 2 files called "sound11.wav" and "sound22.wav", you can see that they both share 5 common letters at the beginning of the filename (ie "sound"). This archive would have a group with the name "sound" and each of the 2 files would be saved with names "11.wav" and "22.wav" within that group, thus saving space. This space saving is only really benificial for storing directorie names though, as there is a lot of overhead.
Groups can be nested inside each other, so there is no boundary as to the number of groups that can exist in a nested way.
Also, filenames can be reused by using a negative number for the Group/File ID. In this case, take the offset just before the negative Group/File ID, subtract the negative number, and it will point to the filename that will be reused.

MultiEx BMS Script

None written yet.

Supported by Programs

Links

None

Games

Navigation

Jump to a listing by...
All Formats - Common Formats - Standard Formats - Malformed Pages
Platforms
Microsoft:
Xbox
Xbox 360
Nintendo:
GameCube
DS
Desktop:
PC
Sega:
Dreamcast
Sony:
PlayStation
PlayStation 2
PlayStation 3
PlayStation Portable
Type
Animation - Archive - Audio - Image - Mesh - Miscellaneous - Model - Video
Endianness
Little-endian - Big-endian
BMS Scripts
Pages Without a BMS Script

All Pages with Scripts:
Recently Added Scripts

Program Support
No Known Support

MultiEx Commander - Game Extractor

Format Specification Completion
Work in Progress - Almost Done - Completed
Compression and Encryption
No Compression or Encryption Used - Unknown Compression or Encryption Used

One or Both Used:
Compression Used - Both Compression and Encryption Used