X-Men - Legends XBox ZSM: Difference between revisions
imported>Dinoguy1000 m (Reverted edits by 91.121.27.33 (talk) to last revision by WATTO) |
imported>Dinoguy1000 m (Reverted edits by 91.121.27.33 (talk) to last revision by WATTO) |
(No difference)
| |
Revision as of 18:10, 27 June 2012
Choose archive extension:
ZSM
- Format Type : Archive
- Endian Order : Little Endian
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)
- uint32 {4} - Hash?
// 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
- uint16 {2} - File ID (incremental from 0)
// HASH DIRECTORY 2
- // for each file in this directory
- uint32 {4} - Hash?
- uint32 {4} - File ID (starts from 0, incremental, but not in order)
- uint32 {4} - Hash?
// DIRECTORY 2 DATA
- // for each file in this directory
- uint32 {4} - File ID (incremental from 0)
- uint32 {4} - Sound Quality (22050)
- byte {20} - null
- uint32 {4} - File ID (incremental from 0)
// HASH DIRECTORY 3
- // for each file in this directory
- uint32 {4} - Hash?
- uint32 {4} - File ID (starts from 0, incremental, but not in order)
- uint32 {4} - Hash?
// 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)
- uint32 {4} - File Offset
// HASH DIRECTORY 5
- // for each file in this directory
- uint32 {4} - Hash?
- uint32 {4} - File ID (starts from 0, incremental, but not in order)
- uint32 {4} - Hash?
// 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
- uint16 {2} - Unknown (127)
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.