Skip to content

Commander Genius - RetroBIOS

Type standalone
Classification Game engines
Source https://gitlab.com/Dringgstein/Commander-Genius
Version v3.6.3
Profiled 2026-10-04
Cores cgenius
Systems commander-keen
Checked by existence
Technical notes

Reimplementation of the Commander Keen engines: Vorticon (Keen 1 to 3), Galaxy (Keen 4 to 6) and Keen Dreams. It reads the data files of the DOS releases and the DOS executable itself, from which it extracts tables, texts and compressed headers.

Game detection. The launcher scans its root and every folder up to two levels under games/ for .exe and .lua files (src/engine/CGameLauncher.h:36-40, src/engine/CGameLauncher.cpp:134-141, 64-78). A file name containing keenN.exe, keenNe.exe, keenN.lua or kNdemo.exe (N from 1 to 6) or kdreams makes the folder a game (src/engine/CGameLauncher.cpp:437-487). Folder names are free; the paths below use the folder names of the packages the project publishes for its in-app downloader, which unpacks under games/ (src/engine/gamedownloader.cpp:455-491). File lookups are case-insensitive.

Executable. readKeenExeData tries keenN.exe, keenNe.exe, kNdemo.exe, then kdreams.exe (src/fileio/CExeFile.cpp:164-203), unpacks LZEXE or PKLITE compression (src/fileio/CExeFile.cpp:235-255) and derives the version from the size of the unpacked image, never from a hash (src/fileio/CExeFile.cpp:350-402): Keen 1 100274 v1.1, 100484 v1.31, 100132 v1.34 Keen 2 118626 v1.0, 118672 v1.31 Keen 3 127598 v1.0, 127616 v1.31 Keen 4 258064 v1.0, 259232 v1.1, 263488 v1.4 Keen 5 262176 v1.0, 266096 v1.4 Keen 6 236112 v1.0 (the demo executable), 271696 v1.4, 270896 v1.5 Dreams 213536 The version selects the offsets used to read data out of the image. Tile properties are known for Keen 1 v1.1, v1.31, v1.34, Keen 2 and 3 v1.0 and v1.31, Keen 4 and 5 v1.4, Keen 6 v1.4 and v1.5, Keen Dreams and the Keen 6 demo (src/fileio/CTileLoader.cpp:68-88). The constructor also holds a support map keyed by the same sizes (src/fileio/CExeFile.cpp:29-50); its result and the CRC comparison of getEXECrc are stored in the launcher entry and read nowhere else (src/engine/CGameLauncher.cpp:546-548).

Vorticon episodes open egahead, egalatch and egasprit, one levelNN file per map (80 is the world map, 81 the ending map, 90 the title map; the other numbers come from the world map data) and finale.ckN. Episode 1 also reads its story, help and ending texts, its sounds and its preview screens from files; episodes 2 and 3 take texts and sounds from the executable (src/engine/keen/vorticon/CStory.cpp:35-76, src/engine/keen/vorticon/CHelp.cpp:38-81, src/engine/keen/vorticon/CAudioVorticon.cpp:40-60). A sounds.ckN file, when present, replaces the embedded sounds. Without the three EGA files or a level file nothing is drawn or the map load fails; the text, finale, sound and preview files are skipped when absent. High scores are kept in the engine's own highscoreepN.dat, SCORES.CKN is not read (src/engine/keen/vorticon/CHighScores.cpp:394-397).

Galaxy episodes open EGAGRAPH, GAMEMAPS and AUDIO. A missing EGAGRAPH ends the load (src/engine/keen/galaxy/GalaxyEngine.cpp:237-243). The graphics and audio dictionaries, EGAHEAD, AUDIOHED and MAPHEAD come from the executable; a file named egahead.ckN, egadict.ckN, audiohed.ckN, audiodct.ckN or maphead.ckN in the game folder takes precedence when present, which is how mods replace them (src/fileio/KeenFiles.h:41-48, src/engine/keen/galaxy/res/CEGAGraphicsGalaxy.cpp:537-585, 706-742, src/engine/keen/galaxy/res/CAudioGalaxy.cpp:350-355, 389-411, src/engine/keen/galaxy/common/CMapLoaderGalaxy.cpp:220-235). The Keen 6 demo uses its own offsets (src/fileio/CExeFile.cpp:268-289, src/engine/keen/galaxy/res/CEGAGraphicsGalaxy.cpp:190-205).

Keen Dreams runs on an embedded Reflection Keen build for the EGA releases (src/engine/refkeen/CMakeLists.txt:11-13). The engine extracts nine tables from KDREAMS.EXE at the offsets of shareware v1.13 (src/engine/keen/dreams/dreamsengine.cpp:103-114, 226-283, 438) and opens KDREAMS.EGA, KDREAMS.MAP and KDREAMS.AUD, quitting when one is missing. The same file lists a size and CRC-32 for each file of that release (src/engine/keen/dreams/dreamsengine.cpp:93-101); the routine that compared them is commented out (src/engine/refkeen/be_cross_fs.cpp:660-679), so nothing is verified. LAST.SHL is in that list and is never opened.

A .pat file in the game folder can rename the header and map files and patch the image (src/fileio/CPatcher.cpp:102-141, src/engine/CGameLauncher.cpp:660-696). Optional replacement graphics, sounds and music (gfx/, snd/, music/, songlist.lst) and Lua scripts are looked up in the game folder, some also in the bundled global/ folder (GsKit/fileio/ResourceMgmt.cpp:34-78).

Cosmo's Cosmic Adventure is handled by a separate submodule compiled only with BUILD_COSMOS, off by default (src/engine/CMakeLists.txt:3).

100 files | 0 required, 100 optional | 44 in repo, 53 missing, 3 unsourceable Categories: 100 game data

keen1.exe optional in repo game_data
Keen 1 executable, read for tables, texts and tile properties

egahead.ck1 optional in repo game_data
Keen 1 EGA graphics header

egalatch.ck1 optional in repo game_data
Keen 1 tiles, fonts and bitmaps

egasprit.ck1 optional in repo game_data
Keen 1 sprites

level01.ck1 optional in repo game_data
Keen 1 level 1

level02.ck1 optional in repo game_data
Keen 1 level 2

level03.ck1 optional in repo game_data
Keen 1 level 3

level04.ck1 optional in repo game_data
Keen 1 level 4

level05.ck1 optional in repo game_data
Keen 1 level 5

level06.ck1 optional in repo game_data
Keen 1 level 6

level07.ck1 optional in repo game_data
Keen 1 level 7

level08.ck1 optional in repo game_data
Keen 1 level 8

level09.ck1 optional in repo game_data
Keen 1 level 9

level10.ck1 optional in repo game_data
Keen 1 level 10

level11.ck1 optional in repo game_data
Keen 1 level 11

level12.ck1 optional in repo game_data
Keen 1 level 12

level13.ck1 optional in repo game_data
Keen 1 level 13

level14.ck1 optional in repo game_data
Keen 1 level 14

level15.ck1 optional in repo game_data
Keen 1 level 15

level16.ck1 optional in repo game_data
Keen 1 level 16

level80.ck1 optional in repo game_data
Keen 1 world map

level81.ck1 optional in repo game_data
Keen 1 ending map

level90.ck1 optional in repo game_data
Keen 1 title and demo map

finale.ck1 optional in repo game_data
Keen 1 ending picture

sounds.ck1 optional in repo game_data
Keen 1 PC speaker sounds

storytxt.ck1 optional in repo game_data
Keen 1 story text

helptext.ck1 optional in repo game_data
Keen 1 help text

endtext.ck1 optional in repo game_data
Keen 1 ending text

previews.ck1 optional in repo game_data
Keen 1 previews text, enables the Previews menu entry

preview2.ck1 optional in repo game_data
Keen 1 preview screen 2

preview3.ck1 optional in repo game_data
Keen 1 preview screen 3

keen2.exe optional missing game_data
Keen 2 executable, read for tables, texts and tile properties

egahead.ck2 optional missing game_data
Keen 2 EGA graphics header

egalatch.ck2 optional missing game_data
Keen 2 tiles, fonts and bitmaps

egasprit.ck2 optional missing game_data
Keen 2 sprites

level01.ck2 optional missing game_data
Keen 2 level 1

level02.ck2 optional missing game_data
Keen 2 level 2

level03.ck2 optional missing game_data
Keen 2 level 3

level04.ck2 optional missing game_data
Keen 2 level 4

level05.ck2 optional missing game_data
Keen 2 level 5

level06.ck2 optional missing game_data
Keen 2 level 6

level07.ck2 optional missing game_data
Keen 2 level 7

level08.ck2 optional missing game_data
Keen 2 level 8

level09.ck2 optional missing game_data
Keen 2 level 9

level10.ck2 optional missing game_data
Keen 2 level 10

level11.ck2 optional missing game_data
Keen 2 level 11

level12.ck2 optional missing game_data
Keen 2 level 12

level13.ck2 optional missing game_data
Keen 2 level 13

level14.ck2 optional missing game_data
Keen 2 level 14

level15.ck2 optional missing game_data
Keen 2 level 15

level16.ck2 optional missing game_data
Keen 2 level 16

level80.ck2 optional missing game_data
Keen 2 world map

level81.ck2 optional missing game_data
Keen 2 ending map

level90.ck2 optional missing game_data
Keen 2 title and demo map

finale.ck2 optional missing game_data
Keen 2 ending picture

keen3.exe optional missing game_data
Keen 3 executable, read for tables, texts and tile properties

egahead.ck3 optional missing game_data
Keen 3 EGA graphics header

egalatch.ck3 optional missing game_data
Keen 3 tiles, fonts and bitmaps

egasprit.ck3 optional missing game_data
Keen 3 sprites

level01.ck3 optional missing game_data
Keen 3 level 1

level02.ck3 optional missing game_data
Keen 3 level 2

level03.ck3 optional missing game_data
Keen 3 level 3

level04.ck3 optional missing game_data
Keen 3 level 4

level05.ck3 optional missing game_data
Keen 3 level 5

level06.ck3 optional missing game_data
Keen 3 level 6

level07.ck3 optional missing game_data
Keen 3 level 7

level08.ck3 optional missing game_data
Keen 3 level 8

level09.ck3 optional missing game_data
Keen 3 level 9

level10.ck3 optional missing game_data
Keen 3 level 10

level11.ck3 optional missing game_data
Keen 3 level 11

level12.ck3 optional missing game_data
Keen 3 level 12

level13.ck3 optional missing game_data
Keen 3 level 13

level14.ck3 optional missing game_data
Keen 3 level 14

level15.ck3 optional missing game_data
Keen 3 level 15

level16.ck3 optional missing game_data
Keen 3 level 16

level80.ck3 optional missing game_data
Keen 3 world map

level81.ck3 optional missing game_data
Keen 3 ending map

level90.ck3 optional missing game_data
Keen 3 title and demo map

finale.ck3 optional missing game_data
Keen 3 ending picture

keen4e.exe optional in repo game_data
Keen 4 executable, read for dictionaries, headers, texts and tile properties

egagraph.ck4 optional in repo game_data
Keen 4 EGA graphics

gamemaps.ck4 optional in repo game_data
Keen 4 level maps

audio.ck4 optional in repo game_data
Keen 4 sounds and music

keen5e.exe optional missing game_data
Keen 5 executable, read for dictionaries, headers, texts and tile properties

egagraph.ck5 optional missing game_data
Keen 5 EGA graphics

gamemaps.ck5 optional missing game_data
Keen 5 level maps

audio.ck5 optional missing game_data
Keen 5 sounds and music

keen6e.exe optional missing game_data
Keen 6 executable, read for dictionaries, headers, texts and tile properties

egagraph.ck6 optional unsourceable game_data
Keen 6 EGA graphics

gamemaps.ck6 optional unsourceable game_data
Keen 6 level maps

audio.ck6 optional unsourceable game_data
Keen 6 sounds and music

k6demo.exe optional in repo game_data
Keen 6 demo executable, read for dictionaries, headers, texts and tile properties

egagraph.ck6 optional in repo game_data
Keen 6 demo EGA graphics

gamemaps.ck6 optional in repo game_data
Keen 6 demo level maps

audio.ck6 optional in repo game_data
Keen 6 demo sounds and music

KDREAMS.EXE optional in repo game_data
Keen Dreams executable, read for the nine embedded tables

KDREAMS.EGA optional in repo game_data
Keen Dreams EGA graphics

KDREAMS.MAP optional in repo game_data
Keen Dreams level maps

KDREAMS.AUD optional in repo game_data
Keen Dreams sounds

KDREAMS.CMP optional in repo game_data
Keen Dreams title screen library, skipped when absent

Generated on 2026-10-10T11:26:01Z