Port a Windows game natively to Apple Silicon by lifting x86 code

Over four months, a Redditor used parallel Claude Code sessions to get Black Ops II running natively on Macs, hitting 60 fps on a base M1 with an open source port.

Done withClaude CodeinGitHub· Nov 4, 2026

What they did

The poster, u/GoldianSummer, set out to run the 2012 Windows shooter Black Ops II on Apple Silicon without emulation. The poster set the goals and play-tested each build on an M1, while Claude Code wrote most of the code: LLVM passes that rewrite the lifted x86 machine code, a hand-written Win32 runtime, and a renderer that maps D3D11 onto Metal. They ran several Claude Code sessions at once, each in its own git worktree and given one problem. Every change had to be measured, frame rate from frames actually shown and freezes from logs. Bug reports from users on GitHub went straight back into a session.

How it went

The port runs at 60 fps on a base M1 and is open source. Precompiling shaders cut the worst freeze from 7.0 to 1.7 seconds. Two install bugs reported on GitHub that week, a hash check and a CMake 4 problem, were fixed and pushed the same day. The project took about four months, from mid-July to early November, on a Claude Max 5x plan with no API use.

Worth knowing

The plan's usage limits shaped the work more than anything else: lift and fold runs take hours on an M1, so they ran in the background while other sessions worked, and the poster kept contexts short to make the quota last. You still need your own copy of the game.

Try it

With Claude Code· 4 parts to fill in

We are porting [Windows program or game] to run natively on [Apple Silicon or other target]. Your task in this session is only [one problem, e.g. the renderer, a missing Win32 call, a shader freeze]. Work in this git worktree. Before changing anything, write down how we will measure success ([fps from presented frames, freeze length from logs, a test]). Make the change, run the measurement, and report the before and after numbers. Stop and wait for me to play-test before you start on anything else.

Square brackets are the parts to fill in. The prompt is ours; the story is theirs.

Where they said it

Related