项目概述

bo2-mac是一个非官方粉丝项目,旨在将《使命召唤:黑色行动2》从32位x86 Windows平台静态重编译至ARM64 macOS平台。该项目基于用户自有的Steam版游戏副本,在本地Mac上构建战役、僵尸模式及对战机器人多人模式。截至2026年11月3日的测试版显示,该方案无需Wine或即时编译(JIT),游戏作为原生代码在单一进程中运行。

重要提示:本仓库不包含任何游戏文件或翻译后的游戏代码。玩家需自行拥有Steam版《黑色行动2》,并在本地Mac上完成构建过程。生成的应用封装了游戏代码,严禁分享成品。本项目与动视(Activision)、Treyarch或微软无关。

技术原理

bo2-mac通过五个步骤在玩家Mac上完成转换:

  1. 校验与提取:转换器仅接受SHA-256校验匹配的Steam版可执行文件(t6sp.exe、t6zm.exe、t6mp.exe),并通过Steam客户端验证账户所有权。
  2. 提升(Lifting):利用Ghidra列出函数,使用Remill v6.0.1将每个x86函数提升为LLVM IR。工具包含针对x87舍入模式等问题的补丁。
  3. IR重写:对Remill生成的IR进行优化,内联访客读写,将lock序列转为硬件原子操作,并将x87堆栈提升为局部变量,随后通过clang -O2编译。
  4. 运行时实现:手写Win32运行时库,将Direct3D 11渲染通过Metal实现(DXBC着色器经HLSLcc转换),XAudio2映射至CoreAudio,视频通过libvpx解码。
  5. 线程管理:访客线程以协程形式在主线程启动,消除非确定性来源;关键任务移至宿主线程,并针对ARM架构实施内存屏障。

对于版权保护机制,项目通过基于Unicorn的小型x86解释器精确运行隐藏的检查序列,而非绕过。未翻译的代码也在解释器中运行,确保系统牺牲速度而非崩溃。

性能表现

在Apple M1芯片(16GB内存)上的测试结果如下:

  • 战役模式:帧率51–60 fps。所有任务加载顺畅,无缝衔接至片尾字幕。
  • 僵尸模式:单人游玩六张地图,帧率57–60 fps(Die Rise地图为43–58 fps)。
  • 多人模式:与机器人对战11种游戏模式,帧率53–60 fps。
  • 转换耗时:约1小时45分钟(仅战役约45分钟)。
  • 磁盘占用:峰值约10 GB,完成后保留约4 GB。

游戏世界时间与现实时间比例约为1.0x。所有模式支持键鼠及DualSense手柄(模拟XInput)。

已知问题与局限性

  • 仅限本地离线:多人和僵尸模式通过本地响应器模拟Demonware服务,无法在线联机、局域网合作或进行联赛模式。
  • 发热问题:长时间运行Mac温度极高(M1实测111–116 °C)。建议插电游玩以避免macOS性能限制,但无法避免发热。
  • 首次加载卡顿:着色器在地图加载时翻译,首局游戏可能有轻微卡顿,后续加载因缓存而流畅。
  • 分辨率限制:游戏运行在1280×720分辨率窗口中。
  • 音频问题:若系统coreaudiod状态不佳,战役可能在首个视频处停滞,重启Mac可修复。

安装与使用

用户需配备Apple Silicon Mac,macOS 14或更高版本,至少20 GB可用空间,并安装Homebrew及Steam。

git clone https://github.com/adrbn/bo2-mac.git && cd bo2-mac
brew install llvm@17 cmake ninja libvpx unicorn
pip3 install capstone
scripts/make_app.sh --from-source

运行Black Ops II.app并指向游戏文件夹。转换完成后即可游玩战役,其他模式可在游戏中选择时继续转换。若更新或中断,运行git pull && scripts/make_app.sh --from-source可从断点恢复。

DLC支持:若Steam账户拥有DLC且文件位于游戏目录,即可游玩对应地图。

法律声明

本项目遵循GPL-3.0许可证。代码仅在用户拥有的硬件上为用户拥有的副本服务。不分发输入二进制文件或重编译输出。版权保护机制按原样执行,未移除Valve SteamStub包装器。在线服务由本地响应器替代,不连接动视服务器。《使命召唤》及相关商标归Activision Publishing, Inc.所有,本项目未获其背书。