A diskfile begins with a simple header:
|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 is corresponds to this structure:
|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 possibly allow adding the Final Doom IWADs as additional episodes. 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.