# keen-clone: a Commander Keen 1 C/SDL2 port

> A native Linux and browser port of Commander Keen Episode One is documented as a function-by-function REA/Ghidra reconstruction of KEEN1.EXE. Published analysis artifacts accompany the C/SDL2 game; the scope is the first episode, rather than the entire series.

- Type: Case study
- Targets: Binary · Game
- Category: Community REA investigations
- Relationship: Author-reported mixed workflow
- Sources reviewed: 2026-11-01
- Added to the catalog: 2026-11-01
- Original resource: <https://github.com/carlhako/keen-clone>
- Primary source: <https://github.com/carlhako/keen-clone/blob/9c6ac72734c95c3260c23b57158ea5876abc14b3/README.md>
- Catalog page: <https://awesomerea.org/resources/keen-clone-rea-commander-keen-case/>
- Record JSON: <https://awesomerea.org/resources/keen-clone-rea-commander-keen-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/keen-clone-rea-commander-keen-case/index.md)

## Requirements & limits

- **Prerequisites:** Native builds need a C compiler, make and SDL2 development files, plus the user's Keen 1 data files including KEEN1.EXE; the README lists v1.1 and shareware v1.31.
- **Limits:** Browser builds require Emscripten and supplied game data; the documented web packaging is restricted to the shareware episode. Browser shortcuts and per-origin IndexedDB storage differ from the native host.
- **Testing evidence:** The repository lists decompilation/disassembly, a call graph and raw REA output as analysis artifacts. It does not provide an independent behavioral-parity or full-playthrough evaluation.
- **License:** No project license file was present in the reviewed root. Commander Keen and its original data retain their owners' rights; public source access supplies no additional reuse grant.

## Primary sources

1. <https://github.com/carlhako/keen-clone/blob/9c6ac72734c95c3260c23b57158ea5876abc14b3/README.md>

## More in Games

- [Metroid Dread: a hand decompilation in progress](https://awesomerea.org/resources/dreadcomp-case/index.md) · Case study
- [OpenGOAL: recovering GOAL code and rebuilding the Jak games](https://awesomerea.org/resources/opengoal-jak-case/index.md) · Case study
- [Paleblood: a functional decompilation of Bloodborne with its own runtime](https://awesomerea.org/resources/paleblood-bloodborne-functional-decomp-case/index.md) · Case study
- [R.E.L.I.V.E.: an Oddworld Abe’s Oddysee and Abe’s Exoddus engine reimplementation](https://awesomerea.org/resources/relive-oddworld-abe-engine-case/index.md) · Case study
- [re-plants-vs-zombies: decompiling and modernizing Plants vs. Zombies GOTY](https://awesomerea.org/resources/re-plants-vs-zombies-decomp-case/index.md) · Case study
- [REDRIVER2: reconstructing Driver 2 through a PlayStation compatibility layer](https://awesomerea.org/resources/redriver2-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
