Reverse Engineering SimTower

· ai coding · Source ↗

TLDR

  • Patrick Hulin used LLM-driven static and dynamic analysis plus a Unicorn-based emulator to clone SimTower as a live collaborative web game at towers.world.

Key Takeaways

  • Static analysis via reaper (Ghidra + coding agent) failed to produce a playable sim; LLMs made premature conclusions, used vague terminology, and forgot details as context compacted.
  • The breakthrough was dynamic analysis: Claude Code built a Unicorn emulator mocking 195 Windows 3.1 API calls in ~30 minutes, enabling state-trace comparison against the original binary.
  • RNG parity was the hardest constraint: sim iteration order and slab-allocator patterns had to match exactly or state diverged in cascading failures.
  • Claude Code ran autonomously for 8-hour sessions, fixing 5 parity bugs and committing changes without prompting, but required the $200/month plan and off-peak scheduling.
  • Core pattern: high-level coordination agent + low-level subagents + closed-loop dynamic verification. “Make it better” loops without a verification target do not converge.

Hacker News Comment Review

  • Commenters flagged the copyright reasoning as shaky: Google v. Oracle was cited as evidence that APIs are not copyrightable, undercutting the author’s rationale for avoiding a function-for-function port.
  • The token cost ($200/month Claude Code plan, avoiding 8 AM-2 PM 2x peak window) was noted as surprisingly manageable for the scope of work, though not trivial.
  • Several comments reflected nostalgia and interest in applying the same approach to other abandonware titles (SimCopter, Yoot Tower), suggesting broad applicability of the pipeline.

Notable Comments

  • @MrPowerGamerBR: Yoot Tower’s source code was permission-granted for open source by Yoot Saito via Don Hopkins, but the repo remains empty as of writing.
  • @MrDOS: Directly challenges the copyright claim: “Didn’t Google v. Oracle disprove this?” regarding API copyrightability.

Original | Discuss on HN