In this installment Dave navigates the lair of his nemesis, looking for the ten special trophies he needs to steal, and get out alive. The game features ten levels plus bonus areas and separate CGA, EGA and VGA graphics.
The following tools are able to work with this game.
|dave.exe||See below for details.|
|egadave.dav||EGA tiles in Dangerous Dave Tileset Format.|
|scores.dav||High scores in Dave Score format.|
When decompressed with UNLZEXE, dave.exe contains the following data:
|0x0b510||?||?||Unknown data - UINT32LE count, UINT32LE[count] len, ...|
|0x0c620||0x5AD0||Dangerous Dave Tileset Format||CGA tiles|
|0x120f0||0xA3F0||Dangerous Dave Tileset Format||VGA tiles|
|0x1c4e0||0x12A0||Inverse Frequency Sound format||PC Speaker sound effects|
|0x1d780||0x12C0||?||CGA font + menu graphics|
|0x1ea40||0x2480||?||EGA font + menu graphics|
|0x20ec0||0x4800||?||VGA font + menu graphics|
|0x25b66||0x320||Dangerous Dave Level format||Monster properties for each level|
|0x25ea4||0x46||Dangerous Dave Level format||Small 10×7 level shown on title screen|
|0x26ae9||0x21||Raw 8bpp pixel data||Gradient border shown above and below level, with trailing 0x00|
|0x26b0a||0x300||VGA Palette||6-bit RGB|
|0x26e0a||0x3200||Dangerous Dave Level format||Game levels (10 @ 1280 bytes each)|
There are a number of variables stored in the .exe:
|0x92B5||UINT16LE||Pixel offset of top map border (0 = first line, 320 = second line, etc.)|
|0x92BE||UINT16LE||Pixel offset of bottom map border|
|0z265D1||UINT16LE||Which row and column the F2 control panel elements appear on|
|0x26A99||UINT16LE||Initial horizontal scroll position of map at level start (only viewport though?)|
|UINT16LE||Something to do with the offset where the game looks for the tiles|
|UINT32LE||Additional map data, unknown purpose|
Some EGA graphics are stored internally and use the Commander Keen EGA Header.
Dave can use CGA, EGA and VGA graphics, with the default being the best card available. All of the CGA and VGA graphics are stored internally, while the EGA graphics are stored in an external file, and have no relation to the CGA/VGA graphics (i.e. the game will work fine in CGA or VGA mode even if EGADAVE.DAV is missing.) The font and menu graphics (for CGA/VGA and EGA) are all stored in the main .exe file (as it is still possible to press F2 to change in and out of EGA mode with a missing/corrupted EGADAVE.DAV file.)
- MaiZure has an excellent video tutorial series on how to write the game from scratch in C: maizure.org
- StepS started a disassembly of the .exe with Ghidra which Malvineous continued with, and many of the game's functions are now documented. The project file is available for anyone who would like to continue the work, or use it to make patches for the game.