Games and modsPartialSource available
Target: Seven Cities of Gold

Recompiled Seven Cities of Gold (C64) into a native macOS port with Claude

Platform
macOS 14+
Outcome
Partial
Seven Cities of Gold: A reverse-engineered macOS remaster of the 1984 strategy game Seven Cities of Gold.
Image: Source: raw.githubusercontent.com

Evidence at a glance

Loading source evidence…

What was done

This project reverse engineers the original Commodore 64 binaries of Seven Cities of Gold to create a native macOS port in Swift. The implementation focuses on fidelity to the original simulation rules and art, utilizing AI-assisted code generation and differential verification.

The project reverses the original Commodore 64 disks of Seven Cities of Gold to rebuild the game for macOS using Swift. The author reports that the goal is to maintain fidelity to the original simulation rules, statistics, and randomness, which are recovered from the original binaries and verified against them. The port is built as a thin wrapper around a local Swift package, with the simulation and extraction logic residing in the package and the UI handled by SpriteKit. Almost all code, reverse engineering, and documentation were written by Claude, working from the author's direction. Findings are verified where possible by asserting ported routines against output captured from the original 6502 code running under an emulator. The author notes that some conclusions were initially drawn from measurements that could not support them, and these errors are documented in the project notes. The current status is milestone one, which covers navigation, world generation, and exploration. The game rules, such as trade, natives, and scoring, are not yet implemented. The project requires users to supply their own original disk images for data extraction. See the README for further details.

Reproduce it

setup

Clone the repository and run 'make run' to start the app. To use the classic map and original terrain art, place disk images in a 'd64/' directory and run './extract.sh' before launching.

Community

Ask a question, share what worked, or follow the next milestone.

Your library