X-Men - Legends XBox

From XentaxWiki
Jump to: navigation, search

Choose archive extension:

ZSM


Format Specifications

char {8}     - Header (ZSNDXBOX)
uint32 {4}   - Archive Size [+/- a few bytes]
uint32 {4}   - Directory Length
uint32 {4}   - Number Of Items In Directory 1
uint32 {4}   - Offset To Hash Directory 1
uint32 {4}   - Offset To Directory Data 1
uint32 {4}   - Number Of Items In Directory 2
uint32 {4}   - Offset To Hash Directory 2
uint32 {4}   - Offset To Directory Data 2 (Sound Details)
uint32 {4}   - Number Of Items In Directory 3
uint32 {4}   - Offset To Hash Directory 3
uint32 {4}   - Offset To Directory Data 3 (Filenames)
uint32 {4}   - Number Of Items In Directory 4 (null)
uint32 {4}   - Offset To Hash Directory 4
uint32 {4}   - Offset To Directory Data 4
uint32 {4}   - Number Of Items In Directory 5 (sometimes null)
uint32 {4}   - Offset To Hash Directory 5
uint32 {4}   - Offset To Directory Data 5
uint32 {4}   - Number Of Items In Directory 6 (null)
uint32 {4}   - Offset To Hash Directory 6
uint32 {4}   - Offset To Directory Data 6
uint32 {4}   - Number Of Items In Directory 7 (null)
uint32 {4}   - Offset To Hash Directory 7
uint32 {4}   - Offset To Directory Data 7

// HASH DIRECTORY 1

// for each file in this directory
uint32 {4}   - Hash?
uint32 {4}   - File ID (starts from 0, incremental, but not in order)


// DIRECTORY 1 DATA

// for each file in this directory
uint16 {2}   - File ID (incremental from 0)
uint16 {2}   - Unknown (4096)
uint16 {2}   - Unknown (127)
uint16 {2}   - Unknown (50/255)
uint16 {2}   - Unknown (32512)
uint16 {2}   - Unknown (32512)
byte {12}    - null


// HASH DIRECTORY 2

// for each file in this directory
uint32 {4}   - Hash?
uint32 {4}   - File ID (starts from 0, incremental, but not in order)


// DIRECTORY 2 DATA

// for each file in this directory
uint32 {4}   - File ID (incremental from 0)
uint32 {4}   - Sound Quality (22050)
byte {20}    - null


// HASH DIRECTORY 3

// for each file in this directory
uint32 {4}   - Hash?
uint32 {4}   - File ID (starts from 0, incremental, but not in order)


// DIRECTORY 3 DATA

// for each file in this directory
uint32 {4}   - File Offset
uint32 {4}   - File Length
uint32 {4}   - Unknown (1)
uint64 {8}   - null
char {64}    - Filename (null terminated)


// HASH DIRECTORY 5

// for each file in this directory
uint32 {4}   - Hash?
uint32 {4}   - File ID (starts from 0, incremental, but not in order)


// DIRECTORY 5 DATA

// for each file in this directory
uint16 {2}   - Unknown (127)
uint32 {4}   - Unknown (65535)
uint16 {2}   - null
uint32 {4}   - Unknown
uint32 {4}   - null


byte {X}     - Junk?
byte {X}     - null Padding to a multiple of 2048? bytes
byte {X}     - File Data

MultiEx BMS

Not written yet

Notes and Comments

  • The first 3 directories probably always exist in each archive, and contain the same number of files in each of these 3 directories. The other directories appear to be optional, and contain random numbers of files. The file ID's in each HASH directory always go between 0 and numFilesInDir-1, but they are not in order. Also, the Hash values in the HASH directories are non the same in each HASH directory, so they may be calculated on different data if they are a Hash.

Supported Programs