PromptZone - AI Prompts, Guides and Tools for Builders

Cover image for Black Ops II on ARM64 macOS: Native Port via Static Recompilation
Maeve Kobayashi
Maeve Kobayashi

Posted on

Black Ops II on ARM64 macOS: Native Port via Static Recompilation

Developer adrbn released a native ARM64 macOS port of Call of Duty: Black Ops II this week, a project that first surfaced on Hacker News with 43 points and 8 comments. The port uses static recompilation to translate the game's x86-64 binaries directly into native Apple Silicon code, bypassing the need for a translation layer like Rosetta 2.

Project: bo2-mac | Method: Static Binary Recompilation | Target: Native ARM64 macOS
Source: GitHub Repository | Status: Functional singleplayer

How Static Recompilation Works

The project uses a custom tool, i386-to-arm64, to perform static binary recompilation. This process directly translates the x86-64 machine code instructions from the original Windows game executable into ARM64 instructions. Unlike just-in-time (JIT) emulation or dynamic binary translation used by tools like Rosetta 2 or CrossOver, static recompilation does this translation once, ahead of time, creating a new native binary.

Key technical steps involve mapping x86 CPU registers to ARM64 registers, replacing Windows system calls with their macOS equivalents, and patching hard-coded x86 assembly sequences. The result is a self-contained blackops2.app that runs directly on the macOS kernel.

Black Ops II on ARM64 macOS: Native Port via Static Recompilation

Performance and Current Status

Early user reports indicate the natively recompiled game runs with high stability in singleplayer modes on M1/M2/M3 Macs. Performance is generally comparable to or exceeds the experience through Proton or CrossOver on the same hardware, as it eliminates the overhead of a continuous translation layer.

The major functional limitation is no multiplayer support, as the recompilation process does not yet handle the game's anti-cheat and networking layers. The project is a proof-of-concept for bringing complex, legacy x86-64 applications to ARM64 without source code access.

Feature bo2-mac Native Port CrossOver (Wine) Parallels VM
Architecture Native ARM64 x64 via Wine + Rosetta 2 x64 Virtualization
Performance Native speed Rosetta overhead VM overhead
Setup Complexity Moderate (compile) Low Low
Multiplayer No Possible Yes
System Integration High (macOS app) Medium (bottle) Low (isolated VM)

How to Try the Native Port

Getting the game running requires access to the original game files and a technical setup process. It is not a drag-and-drop installer.

  1. Prerequisites: You must own Call of Duty: Black Ops II on Steam and have it installed to acquire the game's asset files (.exe and zone folders). You also need Xcode Command Line Tools and Homebrew installed.
  2. Clone and Build: Clone the bo2-mac repository and its submodules. The build process uses the provided Makefile to run the recompiler tool against the original blackops2.exe.
  3. Copy Assets: The final step involves copying the original game's asset folders into the newly created blackops2.app bundle.

"Detailed Build Commands"
# Clone the repository and submodules
git clone --recursive https://github.com/adrbn/bo2-mac.git
cd bo2-mac

# Build the recompiler and generate the app
make

# Copy game assets from your Steam installation
cp -r /path/to/Steam/steamapps/common/Call\ of\ Duty\ Black\ Ops\ II/zone ./blackops2.app/Contents/Resources/
cp -r /path/to/Steam/steamapps/common/Call\ of\ Duty\ Black\ Ops\ II/main ./blackops2.app/Contents/Resources/
Enter fullscreen mode Exit fullscreen mode

The project's README provides the most up-to-date instructions.


Pros, Cons, and Practical Tradeoffs

This project demonstrates a powerful alternative to emulation, but it has specific tradeoffs.

Advantages:

  • Native Performance: Eliminates the consistent 10-30% performance tax of Rosetta 2 translation.
  • Proof-of-Concept: Validates static recompilation as a viable path for porting legacy software to new architectures, a technique relevant to AI practitioners working with compiled model inference engines.
  • Direct System Access: Runs as a true macOS application with potential for better memory and GPU access.

Limitations:

  • No Multiplayer: A deal-breaker for many users, due to anti-cheat barriers.
  • Manual Process: Requires compilation and file management, not a consumer-friendly installer.
  • Game-Specific: The recompiler tool (i386-to-arm64) is tailored for this specific game engine; porting another title would require significant reverse-engineering work.

Who Should Use This Native Port

This project serves distinct audiences and is not a general-purpose solution.

Use this native port if:

  • You are a developer or researcher interested in binary recompilation techniques, especially for applying similar methods to other performance-critical, closed-source binaries.
  • You are an Apple Silicon Mac user who wants the highest possible singleplayer performance for this specific title and enjoys technical tinkering.
  • You study AI systems deployment, where compiling models for novel hardware architectures presents analogous challenges to binary translation.

Stick with alternatives if:

  • Your primary goal is online multiplayer gaming.
  • You want a one-click solution for playing multiple Windows games.
  • You are not comfortable using the terminal and building software from source.

Bottom line: A technically impressive native port that proves the performance potential of static recompilation, but remains a niche tool for developers and enthusiasts.

The success of bo2-mac highlights static recompilation as an underexplored tool in the compatibility toolbox, one that could inform future efforts to migrate legacy AI toolchains and closed-source inference engines to emerging hardware platforms without sacrificing latency.

Top comments (0)