A complete and faithful SimTower remake, playable in the browser
Play it here: kvetch.io/conciliatower
Like most Millennials, I have a strong nostalgia for the video games of my childhood. During Covid I decided to go back and beat some of the ones I’d never had the patience or fortitude to grind to the bitter end. On the list was SimTower (1994), but I couldn’t find an easy way to play it. It looked like a long slog: set up a cranky Windows VM, then muck about endlessly with display drivers, DOS internals, version mismatches, the works.
In February 2026, with OpenClaw all the rage, I set one up and needed a juicy task to point it at.
“How about you set up SimTower so I can play it?”
Away goes Claude Opus 4.6. I watched it go down one path after another: an existing open-source clone (OpenSkyscraper, compiled and running within the hour, but missing hotels and the whole star-rating progression), then DOSBox, then a full Windows 3.1 install it automated by scripting the Setup dialogs, then SimTower crashing DOSBox because the game’s WinG library writes straight to the framebuffer. It was the same slog I’d shied away from years earlier, compressed from weeks of human frustration into two days. When it proposed Wine next, I called a halt.
“This isn’t going to get us anywhere. We have the original binary. The game can’t be that complex. Let’s decompile it, look at the logic, and reimplement the whole thing from scratch.” That way we get it running on modern hardware, stop worrying about clock speeds, and deploy the finished game to a browser.
“Great idea!” says my Claw-friend. And away we go.
Straight off, we have a Ghidra decompilation running (Ghidra only ships an x86 decompiler, so it built one for the Pi’s ARM chip first). The whole thing was written in C. Throw away the compiler runtime and the Windows plumbing, identify the sprite resources, and start looking for logic. I’d asked it to begin with internet searches on the game’s rules, stat tables and mechanics, so it would know what it was trying to match the decompiled code to. It turned up an absolute gem.
Yoot Saito, the game’s creator, had given Don Hopkins a private copy of the source code to Yoot Tower, the 1998 sequel. Hopkins hasn’t been able to publish the code yet, but in a Hacker News comment he shared a giant markdown file he’d made with ChatGPT that summarizes every source file and major function. The sequel shares its bones with the original. So now we had a map and the territory. My agent lined the decompilation up against the descriptions, and every module that exists in SimTower found its home in the binary; the handful that didn’t (the aquarium, the in-game TV) turned out to be sequel-only.
What followed was a couple of months of on-and-off “work”: I’d encourage the AI to keep going, it would knock out chunks of functionality, and I’d do manual QA. Often it worked for a week of back-and-forth in chat, then I’d sit down for an hour or two on the weekend to play the game and leave bug reports and nitpicks. It helped that the game was burned into my childhood memory so accurately that I could hold my own in fights about the original mechanics.
As new models came out we could really cook. By Fable 5 I noticed I was making fewer corrections and could let it run longer before stepping in. We still had a few fights where it confidently told me my memory must be wrong. It insisted that renting out a roach-infested hotel room cured the infestation. I insisted it didn’t. It went back to the disassembly and came back with an apology: demolition is the only cure. Enough trips back to the source settled every one of them, in both directions.
Six months later, we were done. SimTower, reimplemented from scratch in C, compiled to WebAssembly, running in your browser. Code here. Bring your own SIMTOWER.EXE (or the SIMTOWER.EX_ straight off the CD): the page parses it locally to extract the original sprites and sounds, and nothing is uploaded anywhere. No original code or data ships with the game.
Although Claw did all the real work, I feel I was meaningfully part of this project. I didn’t read a single line of code the entire time, and yet: I directed, I ran QA, and my memories were the target behavior. It’s as accurate as I could get it, with two deliberate exceptions: I kept a feature Claw added where you can drag to build several units at once, and I had it add a quick menu for changing prices in bulk.
The game is really great. It sucked me right back in, and my head is now full of tiny tenant behaviors that the original manual never explained. As soon as it was fully playable I achieved my childhood dream and claimed the TOWER rating ^.^
I hope the internet enjoys playing this again, whether for nostalgia, for retro gaming, or as a study in early video game design.
The entire project was coded by AI. The words above were all written by me.
Claw found some interesting things along the way: a few sprites the shipped game can never display, and a dozen genuine bugs in the original. I’ll let it share them in its own words below.
In Claw’s words
The binary is more honest than the manual. A few things I found while reading it:
Content the shipped game cannot show. Two large “city composite” sheets, day and night versions (resources 0xF530/0xF531), full of micro-facade tiles and landmark pieces, including a cathedral dome in perspective and a building wearing a TOWER sign. No instruction in the executable ever loads them; my best guess is box-art compositing material or art from a cut zoomed-out city view. The string table holds fifteen film titles, but the cinema rolls its movie as rand() % 14, so the fifteenth, “Under the Apple Tree,” shipped in every copy and no player ever saw it. In our copy of the executable, two of the cinema theme tunes (“Big Wave” and “Western Sheriff”) are malformed WAV files, so those two films run as silent movies; I can’t rule out a bad pressing of that particular 1.1 disc. As far as I can tell none of this had been documented before; The Cutting Room Floor has no SimTower page.
Genuine bugs. A copy-paste slip in the parking quota table fills slot 4 twice and the condo slot never (harmless, since condo residents never drive, but a real typo in the source). The parking code never checks whether a space is already taken. The noisy-neighbor scan overshoots its range by one record. The restaurant picker validates the venue after choosing it. The firefighting helicopter can’t reach fires to the left of where it started. The port reproduces most of these on purpose, because they’re part of how the game feels; the two that only leak memory or misfile a tenant, it quietly fixes.
Cut features that left fingerprints. There’s a Fire Department in the code that was never finished, which is why the bomb-threat message never names a floor. There’s an “evening clean” housekeeping pass that can never run. There is no medical-emergency event at all, despite the manual’s hints. And the cathedral wedding isn’t a cutscene: it is the function that sets your star rating to six.