TankArchive
Contents
DS2MAP, DS2RES
- Format Type : Archive
- Endian Order : Little Endian
Format Specifications
=== BASE ===
char {4} - ProductId (DSg2)//ID of product (human readable) - always PRODUCT_ID
char {4} - TankId (Tank)//ID of tank (human readable) - always TANK_ID
DWORD {4} - HeaderVersion //version of this particular header
DWORD {4} - DirSetOffset //(Offset to the start of Index 1)
DWORD {4} - FileSetOffset // (Offset to the start of Index 3)
DWORD {4} - IndexSize //total size of index (header plus all dir data - used for RAW format)
DWORD {4} - DataOffset //offset to start of data (used for RAW format)
=== Extra - Basic ===
BYTE {12} - ProductVersion //product version this tank was built with
BYTE {12} - MinimumVersion //minimum product version required to use this tank
DWORD {4} - Priority //priority that this tank is entered into the master index
DWORD {4} - Flags //flags regarding this tank (eTankFlags)
char {4} - CreatorId //"!GPG" who created this tank (creation tool will choose, not user)
GUID {36} - //true GUID assigned at creation time
DWORD {4} - IndexCRC32 //CRC-32 of just the index (not including the header)
DWORD {4} - DataCRC32 //CRC-32 of just the data
SYSTEMTIME {16} - UtcBuildTime //when this tank was constructed (stored in UTC)
WCHAR {200} - Copyright Information ("Copyright (C) 1998-2004 Gas Powered Games. All rights reserved") (unicode text) (null terminated)
WCHAR {200} - BuildText //text about how this was built
=== Extra - User Info ===
WCHAR {200} - TitleText //title of this tank
WCHAR {100} - AuthorText //who made this tank
//for GPG package, there're 24BYTE padding at here. But for user created package, there're nothing.
byte {X} - File Data
// INDEX 1 (Directories)
- uint32 {4} - Number Of Directories in Total
- // for each directory
- uint32 {4} - Offset to directory details (pointer into Index 2)
- // for each directory
// INDEX 2 (Directories and Files)
// INDEX 3 (Files)
// INDEX 4 (Files)
MultiEx BMS
Not written yet
Notes and Comments
- Compressed files use ZLib compression, broken up into separate ZLib chunks of size 16384 rather than compressing the whole file as a single chunk.