Diskfile
From DoomWiki.org
A diskfile is an uncompressed container format which contains files in a folder structure. It is used by Nerve Software's ports of Wolfenstein 3D, Doom, and Doom II to the Xbox 360, as well as the PlayStation 3 port of Wolfenstein 3D.
Format[edit]
A diskfile begins with a simple header:
Offset | Size | Format | Description |
---|---|---|---|
0 | 4 | 32-bit, big-endian, unsigned | Number of contained files |
4 | 72 * n | Directory entry | Name, offset, and size of each contained file |
4+72*n | 4 | 32-bit, big-endian, unsigned | Total size of all contained files |
A directory entry corresponds to this structure:
Offset | Size | Format | Description |
---|---|---|---|
0 | 64 | 8-bit character array | Path and name of the file |
64 | 4 | 32-bit, big-endian, unsigned | Offset from the end of the header to the start of the file in the archive |
68 | 4 | 32-bit, big-endian, unsigned | Total size of the contained file |
The paths are written following the DOS/Windows convention of using backslashes ('\') as directory separators. All paths begin with the pseudo-drive letter of GAME:.
The typical folder hierarchy consists of this:
- GAME:\ (root folder, empty)
- GAME:\assets\ (contains an xui.xzp file)
- GAME:\assets\m\ (contains MIDI tracks and a Gravis Ultrasound configuration file named gravis.cfg)
- GAME:\assets\m\instruments\ (contains GUS patches)
- GAME:\assets\w\ (contains the IWAD and a background.tga graphics, 428x200 pixels)
In doom2.disk, the w\ folder also contains a metadata.txt file which gives episode name and level names to the content of the IWAD. It is possible this file was designed to optionally allow adding the Final Doom IWADs as additional episodes, though this never saw a release if such was planned. It also contains a mission1\ subdirectory with the PWAD for No Rest for the Living and its own metadata file, giving level names, music track (by their idmus value rather than by name) and par times (in seconds), as well as the end-of-episode text.
Doom Classic Unity variant[edit]
Initial versions of the Doom Classic Unity port utilized a little-endian variant of the file format, but it was entirely removed in subsequent updates.