Show HN: Black Ops II statically recompiled to native ARM64 macOS (github.com)

1 points by adrbn ↗ HN
I grew up with Black Ops 2 and wanted to see if I could make it work on my 2020 MacBook Pro. So I used Claude Opus 5.5 to create a tool that converts your copy of the game (from Steam) to a native ARM64 Mac app, with almost 60fps in all areas. The whole game is statically recompilated ahead-of-time (AOT) and does not use any emulator whatsoever, be it Wine, Crossover or Rosetta. The best thing is the performance, although some heat issues are still to fix. You get to play the whole Campaign, local Multiplayer (with bots) and local Zombies (all DLCs maps; you need to have them in your Steam library obviously) at about 60fps. Split-screen was not in the PC version, but I've been working on it lately; it's coming soon! LAN mode is on the roadmap for later too :)

62 comments

[ 3.9 ms ] story [ 60.9 ms ] thread
what was your workflow for creating this? there's now extra guardrails around decompiling / reverse engineering, do you think this is still possible to do or were you just lucky enough to do it before the guardrails?
Well it took me almost 4 months using parallel Claude sessions, each one of them working on its own worktree. I also made a point of measuring before considering anything fixed, and I tested and played throughout the whole development so this way I knew the real impact of every change it was applying. I'm yet to start another similar project to see how things have changed in terms of guardrails, but it has not been a problem for me in the last month AFAIK. Sessions keep working without any problem and Codex (Astra) has also been of a great help in addition, when I did encounter some refusals with Claude. Also maybe (big maybe!) the fact the tool only works from a Steam copy helped, I guess.
I would be interested in a write up of how to get started with something like this. I know there are tools like REA now, but it still seems daunting for someone that has never done game development or decompiled anything before.
any guardrail claude throws up at me during my decomplication efforts I simply get around by saying "oh thats a false positive" or "this is for education" or "im doing this so i can fix the issue"... its a laughable "guardrail"
[dead]
Thanks a lot! The original exe is around 13 MB per mode, mine is more between 500 and 800 MB each. Basically every x86 instruction becomes a bunch of ARM64 ones, and there is also a lot of extra code for the CPU state. Still runs at 60fps tho, so as long as you have decent storage it's not that much of a problem :)
How does it actually recompile, does it use an existing tool? I can’t imagine the agent combs through every routine and hand translates the assembly.
[dead]
[dead]
[flagged]
Especially since Rosetta is EOL in the next macOS. I've been playing with D3DMetal recently which depends on Rosetta. I wonder if Apple are going to just drop support for this.
Uh it's a cool project for sure even if its getting hard to keep these apart and seems kind of strange to do all that targeted solely on game ... but cool!

This is very confusing to read, though:

What I wrote with Claude: [...] a hand-written runtime

To me you have to pick one or the other. Claude has no hands.

Haha fair. I meant written from scratch, not taken from Wine. Claude did the typing, I did the steering and the playtesting :)
Well, ask Claude to fix that sentence then.
My big question: How did you get Claude to do reverse engineering work on a game without it getting cold feet and telling you it can't do that due to breaking ToS?
Probably by starting 4 months ago.

The restraint Anthropic added to Claude to stop it from reverse engineering commercial games is recently added

Stuff like this makes me really happy about AI. The convenience that AAA lacks, or that they intentionally withhold, is now within reach.
Don't be surprised about them moving to cloud gaming even more which they already have with Xbox cloud gaming and in the future, the real game will be hidden and simulated behind a world model.
Yup. Not just aaa, all games that can afford to.

Massive chance these recompilations just ruined gaming for everyone.

Like on your own- do whatever.

As soon as you share it - you actually harm players, not help them

>Massive chance these recompilations just ruined gaming for everyone.

Nah that was microtransactions and associated corporate greed.

If we have good enough AI to force companies to do this, we have good enough AI to build any shit we want and we'll build better shit than what these companies are putting out.

There are many levels to "ruined" and it always can get worse.

>> and we'll build better shit than what these companies are putting out. feel free to share what you've built. Sure its possible just need to be real here - 1% will be good, 99% will be slop. And that 1% will down in that slop.

As a result though in theory you can make some games better than existing ones - the overall effect is net negative.

Video game piracy has been around for decades, you can get a cracked copy of nearly every game. Even some games like Black Ops II has a custom server browser and matchmaking servers for pirated copies.
We really need to bring back the thumbscrews for all these pesky hackers
Companies have been trying to solve the be able to "show" and "hide" same thing paradox for decades now.

The AI will still recreate a game that it can view and interact with.

I'm not convinced. All the "AI built this AAA-like game" examples I've seen involve stealing real AAA assets. That's just piracy, we always had that.
And I’ve yet to see any of them at AAA quality. Albeit, that’s not even a hard bar for some of the AAA games coming out, but still.
Conveniently, models are improving and I expect they’ll be able to create a port just based on a video of gameplay soon, if not already.
(comment deleted)
On the other hand we have full steam os on android last month.
Moving to cloud gaming would mean cutting off any chance of selling to most of the world. >50ms for user input is very noticable, and >100ms people just won't pay for it. You also need very low packet loss and a reasonable amount of bandwidth. Those three requirements can be met for most (but notably not all!) of NA... but elsewhere? Not as much.
I just always assumed that's what was motivating the "space datacenters" noise, if it was based in anything rational at all. Run latency-sensitive things in the Starlink network itself to expand those markets...
The README is very much AI slop. Why don't you people write by yourself at least your READMEs? Explain the why? Explain the advantages? You can still ask AI for reviews.

Almost every paragraph makes me want to ask: "so what?"

> There is no Wine and no JIT: the game runs as native code, in one process > the campaign runs at 51–60 frames per second

So what?

Is it a matter of running the game in itself? Was the game not running on Apple M-series in any way, so you're unlocking something that was impossible before?

Or does the game just ran faster (more FPS), load quicker, render better, what?

There's no comparison to how the game runs on x86, or how it runs on M-series with translation layers (IF it runs).

This is an exact manifestation of the AI slop problem. A lot of details. A lot of "how". A lot of "what". So little "why" - you need to read a lot and in the end your questions are never answered, and you don't understand if the project makes sense at all or is just something "we did it because we could". I'm perfectly happy to read AI generated text if it's properly and clearly written and answers the right questions.

The why is in my post actually, BO2 never came out on Mac. On M chips you'd have to go through CrossOver and Rosetta, here it's native ARM64 so I can fix things and add stuff like split-screen, which the PC version never had. Fair point on the CrossOver benchmark, I haven't done it yet. I'll add a why section to the README, thanks.
> does not use any emulator whatsoever, be it Wine, Crossover or Rosetta

Not sure about the other two, but WINE Is Not an Emulator. It's in the name :)

Crossaover is Wine, just the commercial edition. And Rosetta solves the exact opposite problem from Wine: same OS but different CPU architecture so it recompiles those x86 CPU instructions into ARM64 instructions and Apple specifically does not call it an emulator. It doesn't emulate an OS but it does user-mode CPU emulation so I don't know what it should be called.
> It doesn't emulate an OS but it does user-mode CPU emulation so I don't know what it should be called.

An emulator. In the context of computing translation software, "emulation" generally refers to emulating hardware rather than software. Hence why WINE Is Not an Emulator :)

(comment deleted)
I've used to same technique to get Fallout: New Vegas running on Asahi Linux on MacOS. Its quite a step, but https://github.com/doitsujin/dxvk makes it possible to skip a lot of work and get the game running in day. You can then make any changes you want, so I'm running fallout nv on a wide display in native resolution and some graphical improvements. Realtime whole world shadow maps, SSAO, tonemap + color grading, FXAA and Hor+ FOV.

Gives me a solid 60fps most of the time, with only the occasianal bug here and there that is often fixed in no time. Luckily i've added 10min auto save quite quickly, so that it does not cause that big of a problem.

Aside from the fun of both getting the game to work on this machine, and the fun of actually being able to play the game, it is a great way to find creative ways to work with LLM. Building out dev tools on the way that works for an LLM etc.

> with only the occasianal bug here and there

If it doesn’t lock up your machine every hour or so then it’s not a very authentic experience!

This is impressive. Besides personal use gaming, it has a lot of interesting opportunities... Elsewhere OP said it was 4 months of Claude, which is very fas for something this complicated.
i want someone to make a co op mod for cod 4 :C
Two of the best games of all time waverace 64 and 1080 snowboarding for the n64 have been statically recomped. I've been playing them on my steamdeck.

Unfortunately I think the party will end soon as anthropic are already preventing reimplementing games in there system prompts.

I wish they would re-make waverace. It was such a great game.
distillation spawning abliterated models will make this re-available permanently in just a few weeks
Anthropic bans almost everything. Chatgpt is much more liberal.
(comment deleted)
Now do Age of Empires II please. :)
Why cant someone do a REA and fix anti cheat so we can finally play real games on Linux? So tired of Anti-Cheat only working on WinBlows (tm)
Deobfuscation of modern virtualization based obfuscators is fairly hard.
How on earth can you possibly bring yourself to using the words "hand written" in your GH about section? Please, I'm losing my mind here. Words mean something.
Playing Black Ops 2 on Apple Silicon without any emulation layer in sight is wild. Fallback to a small x86 interpreter for whatever the translation missed instead of crashing is a nice tradeoff, speed over stability. Been playing Bo2 since it came out, never expected to play it on a Mac.
That's exactly what I love Agentic Coding for!