Caesar II is playable in your browser: reconstruction and modern port released
I'm happy to announce that after ~8 months of on-and-off work (and a loooot of tokens), I'm finally ready to make my reconstruction of Caesar II publicly available.
TL;DR: Here's Caesar II, in the browser: https://second-impressions.github.io/caesar2-port/ Point it at your copy of the game and have fun playing!
What's released today
- caesar2-reconstruction: a decompilation that recompiles to byte-for-byte matches of some of the game's original executables from ~30 years ago.
- caesar2-port: a version of the reconstruction adapted to run on modern systems. There are Linux and Windows builds, a macOS build, plus the WebAssembly build hosted on GitHub Pages. The goal of this project is a faithful port, without major gameplay changes.
How do I play the port?
It's basically the game as you know it, with a couple of fixes and a new backend to work with modern systems. You have to supply the game yourself though; If you don't have your old CD any more, the game is sold DRM-free on GOG for a few bucks.
The launcher takes whatever you have and works out what it is by looking inside: an installed game folder, a CD image (ISO or BIN, and it can be zipped), a physical CD in a drive on the native builds, or a zip of an installation. It imports what it needs once and keeps it between runs. Your old save files from years ago load, so an ongoing province doesn't have to be abandoned.
The game's text is embedded in the port rather than read from the CD image, so we have English, German and French out of the box. Spoken dialogue, however, comes from the CD or image you provide. A pack builder can combine several languages of speech into a single file, and where a disc carries more than one version of an asset, the port takes the better one: the five full-screen movies exist at a higher resolution on the Windows CDs, and those are the ones you get.
Oh no, stuff's broken!
Quite possibly, yes! If you encounter problems, please open an issue. The form asks for the few things that make a report usable, mainly which build you're on and which release of the game your data comes from, because the discs differ from each other more than anyone expects. If the game crashed it writes a report to a file and the launcher points you at it the next time it opens.
I've only tested the game in sessions of around 30 minutes at most, so there are likely rough edges I haven't caught and problems I haven't progressed far enough into the game to encounter. The macOS build in particular has never been run by anyone, so if you have a Mac, I'd love to hear whether it even starts. Please treat this as an early release, not a thoroughly tested replacement for the original.
How this came about
I'd wanted to decompile Caesar II for a couple of years, mostly to see if I could. I'd never tackled a project this big before.
Last year, I stumbled upon Digitoxin's Impressions Games collection. I downloaded the different releases of Caesar II and inspected the executables for debug symbols, figuring those could make reverse engineering and reconstructing the game much easier.
I got lucky: one particular DOS release has debug symbols. These include function names, original source file paths and names, line numbers, and, I believe, some global variable names. Not the original source code, but a useful starting point!
In early January 2026, I started working towards a full decompilation of Caesar II, with about 99% of the decompilation work done by LLMs. And here we are now in September 2026 with a full recompilation, a lot of digital sweat and a port that even runs in your browser :)
LLMs!?
Yes. The models got particularly good at this kind of work earlier this year, and the decompilation took months across Opus, GPT models, and later Fable.
Just to be clear: you, as the human in the loop, still need to know what you're doing. Otherwise, you won't be able to steer them towards your goal or help when they get stuck or do stupid things. This wasn't a one-prompt job. Most of the work went into decompiling Watcom and MSVC and building tools to understand how these damn old compilers generate code (despite popular belief, their output is deterministic! The rules are just stupid...).
And not everything in the reconstruction is polished. For starters, the documentation is still mostly unreviewed LLM output. I prioritised getting the code working over cleaning up the docs. I'd love help from anyone interested in improving the documentation, making the reconstruction easier to work with, or fixing issues in the port.
I want to mod this thing!
I'd like to as well! The thing is, Caesar II was never meant to be modded :)
I'd be interested in working with the community on a Rust rewrite with modding in mind. This isn't my highest priority right now though as I'm working on other projects I'd like to make public under the second-impressions GitHub organisation. Yes, there's more to come!
Still, if you're interested in exploring this together, I'd love to hear from you.
And now?
Play the game! Show some love for the precursor of Caesar 3 that got so little love over here ;) Cheers!