Shell Shock Nam '67

From XentaxWiki
Jump to: navigation, search

Choose archive extension:

DAT


Format Specifications

char {4}     - Header 1 (Core)
char {6}     - Version (<1.76>)
char {6}     - Header 2 (<Core>)
byte {1-4}   - Unknown (5)
byte {0-3}   - Padding (spaces)
byte {1-4}   - Directory Length (Big) (UNSIGNED!) (+13 to find the start of file data)
byte {0-3}   - Padding (spaces)
byte {1-4}   - Number Of Files (Big) (UNSIGNED!)
byte {0-3}   - Padding (spaces)

// for each file

byte {1-4}   - Filename Length
byte {0-3}   - Padding (nulls OR spaces) (so the filename length is 4 bytes total)
char {X}     - Filename (no null!)
byte {0-3}   - Padding (so the filename is a multiple of 4 bytes) (padded with nulls OR spaces)


// for each file

byte {X}     - Unknown
uint32 {4}   - File Data Size
byte {X}     - File Data


MultiEx BMS Script

Not written yet

Notes and Comments

  • NOTES ON WORKING OUT THE SIZE OF EACH FIELD

This archive format swaps between using byte(0) and byte(32) to represent null values. Therefore, you need to do the following to work out the size of the 4-byte fields...
1. Read the first byte (it will always have a value)
2. Read the second byte
3. if (byte2 != null AND byte2 != 32) then it is part of the value, else it should be treated as a null
4. Repeat steps 2 and 3 for the remaining 2 bytes

This way you will build up the 4-byte value correctly. You could also do it the following way...
1. Read the 4 bytes
2. Working from the last of the 4 bytes, replace bytes with value byte(32) with value byte(0)
3. Stop when you reach a null, or when you reach a value != byte(32)
This process should be applied to all the fields marked as size 1-4 (and its partner 0-3)

  • NOTES ON THE FILE DATA

There are no offsets stored, rather the user must walk through the file to find the file data offsets. To help, there is a rough pattern in that the 4 bytes before the data starts is the length of the data. Other than that, I don't know how to move between files, or how to determine the location of the size field. So, at this point in time, i do not know how to get the specific file

Compatible Programs

  • None - Incomplete format specifications