Shell Shock Nam '67 DAT
Choose archive extension:
DAT
- Format Type : Archive
- Endian Order : Little Endian
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