This document describes the overall container structure of the Wasteland 1 GAME1 and GAME2 files.
It covers:
GAME1 and GAME2Detailed entry formats are documented separately:
GAME1 and GAME2 are container files.
They store three kinds of data:
They do not contain a global header or an in-file directory describing these entries.
GAME1 and GAME2 are only partially self-describing.
While each contained block starts with a small local header ("msq0" in GAME1, "msq1" in GAME2), the files do not provide enough metadata on their own to locate and parse everything robustly.
In practice, the game uses tables stored in the executable to obtain:
See EXE Format for the structure and locations of those tables.
Maps are variable-sized blocks at the beginning of each file.
They are identified by:
"msq0" in GAME1"msq1" in GAME2But that local header alone is not enough to parse them fully. Correct parsing also requires:
Both come from the executable.
See EXE Format and Map Format.
Each file contains exactly one savegame block near the end of the file.
It also starts with:
"msq0" in GAME1"msq1" in GAME2Its location is taken from the executable.
See EXE Format and Savegame Format.
Shop lists are fixed-size blocks near the end of the files, after the savegame region.
They also start with:
"msq0" in GAME1"msq1" in GAME2Their locations are taken from the executable.
See EXE Format and Shop Item List Format.
In the shipped Wasteland 1 files, the top-level order is:
GAME120 map blocks1 savegame block3 actual shop item list blocksGAME222 map blocks1 savegame block1 actual shop item list blockThis ordering is visible directly in the files because the entry offsets increase monotonically.
The top-level blocks in the shipped files begin at these offsets:
GAME10, 10958, 16697, 26297, 36394, 44582, 49112, 59252, 66522, 73455, 83203, 93710, 100598, 105823, 110061, 115498, 122394, 131766, 139891, 145679152517157131, 157897, 158663GAME20, 4320, 9598, 21955, 29760, 35167, 40852, 46793, 51745, 58006, 66901, 72935, 84078, 94274, 102058, 109750, 118668, 127156, 137175, 142703, 151754, 160761166855171469The important consequence of the format is:
GAME1 / GAME2So a complete reader should treat GAME1 and GAME2 as executable-assisted containers rather than as standalone archives.
GAME1 and GAME2 use the same top-level block concept, but differ in content:
GAME1 contains disk-0 map blocks and the first group of shop listsGAME2 contains disk-1 map blocks and the final shop listThe local block headers reflect this:
GAME1 use "msq0"GAME2 use "msq1"Useful consistency checks when implementing a container reader:
"msq0" or "msq1" according to the file0