Duke Nukem 3D 1.0 and 1.1 use a 9 byte main header:
address
0x0000
long
0x0004
byte
0x0005
byte
0x0006
byte
0x0007
word
The first entry in the header (number of game tics) may be zero in version 1.1 recordings. This should mean, that there is more than one level recorded.
All word
or long
values in DMO files are Intel ordered
(lowest byte first, little endian).
Duke Nukem 3D 1.3D uses a 24 byte main header:
address
0x0000
long
0x0004
byte
0x0005
byte
0x0006
byte
0x0007
byte
0x0008
short
0x000A
short
0x01
with /m (nomonsters), 0x00
else0x000C
long
0x01
with /t1 (respawn monsters), 0x00
else0x0010
long
0x01
with /t2 (respawn items), 0x00
else0x0014
long
0x01
with /t3 (respawn inventory), 0x00
else
Redneck Rampage uses a 543 byte main header:
address
0x0000
long
0x0004
byte
0x6C
, it may be a version0x0005
byte
0x00
, unknown0x0006
byte
0x00
, unknown0x0007
byte
0x0008
byte
0x0009
byte
0x000A
byte
0x000B
byte
0x00
, unknown0x000C
byte
0x01
with /m (nomonsters), 0x00
else0x000D
byte
0x00
, unknown0x000E
long
0x01
with /t1 (respawn monsters), 0x00
else0x0012
long
0x01
with /t2 (respawn items), 0x00
else0x0016
long
0x01
with /t3 (respawn inventory), 0x00
else0x001A
long
0x01
with /a (player AI for fake players), 0x00
else0x001E
char[0x201]
The episode (better: volume) number is one of the 0x00
bytes in the
header.
The players name is a `\0' terminated string. The maximum number of characters for the name is 512.