Black Ops II được biên dịch lại thành app ARM64 chạy native trên macOS

Phần mềm11 tháng 11, 2026·5 phút đọc

Một lập trình viên đã dùng AI để xây dựng công cụ chuyển ba file thực thi 32-bit x86 của Call of Duty: Black Ops II thành mã ARM64 chạy native trên macOS, không cần Wine, CrossOver hay Rosetta. Trên Apple M1, cả Campaign, Zombies và multiplayer với bot đều đạt khoảng 51–60 fps.

Black Ops II được biên dịch lại thành app ARM64 chạy native trên macOS

Black Ops II chạy native trên macOS ARM64Black Ops II chạy native trên macOS ARM64

Một lập trình viên đã công bố dự án bo2-mac, công cụ biên dịch tĩnh (static recompilation) ba file thực thi của Call of Duty: Black Ops II từ 32-bit x86 Windows sang ARM64 macOS. Điểm đáng chú ý: game chạy hoàn toàn không cần trình giả lập nào — không Wine, không CrossOver, cũng không Rosetta.

Theo tác giả, công cụ này được tạo ra với sự hỗ trợ của Claude Opus 5.5. Trên một máy Apple M1, Campaign đạt 51–60 fps, Zombies đạt 57–60 fps và multiplayer đấu với bot đạt 53–60 fps.

Cách hoạt động

Toàn bộ quá trình diễn ra trên máy của người chơi, từ bản game họ sở hữu trên Steam. Công cụ lấy ba file thực thi — t6sp.exe (Campaign), t6zm.exe (Zombies) và t6mp.exe (multiplayer) — rồi dịch mã máy x86 sang mã máy ARM64 theo phương thức AOT (ahead-of-time).

Quy trình gồm các bước:

  • Kiểm tra: chỉ chấp nhận đúng bản build Steam của từng file, xác thực bằng SHA-256; launcher hỏi Steam client trên máy xem tài khoản đăng nhập có sở hữu game hay không.
  • Lift: Ghidra liệt kê các hàm, Remill v6.0.1 nâng từng hàm lên LLVM IR.
  • Tối ưu: các pass tự viết viết lại IR trước khi đưa qua clang -O2, biến truy cập bộ nhớ và cờ thành mã nội tuyến, chuyển lock thành atomic phần cứng.
  • Runtime: tự viết lớp Win32 thay thế, trong đó Direct3D 11 được vẽ bằng Metal, shader DXBC dịch qua HLSLcc, XAudio2 nối vào CoreAudio.
  • Thread: thread của game khởi chạy dưới dạng coroutine trên một thread host, giúp giảm tính phi tất định.

Khoảng 150.000 hàm được dịch trên cả ba file thực thi. Chỉ những đoạn ngắn bị cơ chế chống sao chép che giấu mới chạy trong một trình thông dịch x86 nhỏ (dựa trên Unicorn) — và các đoạn mã bị dịch sót cũng vậy, để lỗ hổng chỉ gây chậm chứ không làm game crash.

Nguồn: x86 32-bit Windows, đích: ARM64 macOSNguồn: x86 32-bit Windows, đích: ARM64 macOS

Hiệu năng đo được trên Apple M1

Chế độFPSGhi chú
Campaign51–60Mọi màn đều tải và chuyển tiếp đến phần credit cuối; chưa chơi hết từ đầu đến cuối
Zombies57–60 (Die Rise 43–58)Sáu map, chơi solo qua menu thật
Multiplayer với bot53–6011 chế độ chơi qua menu thật

Thời gian chuyển đổi khoảng 1 giờ 45 phút trên M1 (riêng Campaign khoảng 45 phút). Dung lượng đĩa đỉnh điểm khoảng 10 GB, sau đó giữ lại khoảng 4 GB. Tác giả cho biết tốc độ game khớp với thời gian thực, với tỉ lệ khoảng 1,0 lần.

Những giới hạn cần biết

Đây vẫn là bản beta. Một số điểm đáng lưu ý:

  • Chỉ chơi cục bộ: không có chơi online, không LAN, chưa có co-op. Chế độ League Play bị từ chối.
  • Luật trận đấu do dự án tự viết trong môi trường "clean room" — một nhóm viết đặc tả hành vi, nhóm khác viết code chỉ từ đặc tả đó — nên hành vi có thể khác bản gốc ở vài chỗ.
  • Nhiệt độ: máy Mac rất nóng trong phiên chơi dài (tác giả ghi nhận 111–116 °C trên M1). Cần cắm sạc khi chơi, vì chạy pin sẽ bị macOS giảm hiệu năng mạnh.
  • Lần đầu vào mỗi map: shader được dịch sang Metal trong lúc tải map, nên lần tải đầu lâu hơn và phút đầu có thể hơi giật. Các lần sau mượt vì đã cache.
  • Cửa sổ game chạy ở độ phân giải 1280×720.
  • Chỉ mới đo trên một máy M1. Tác giả cho rằng M2, M3, M4 sẽ nhanh hơn nhưng không đưa ra con số.

Đích đến: ARM64 macOSĐích đến: ARM64 macOS

Yêu cầu cài đặt

Người dùng cần máy Mac chip Apple silicon, macOS 14 trở lên, tối thiểu 20 GB trống, Homebrew và Steam for Mac đã đăng nhập vào tài khoản sở hữu game.

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

Một điểm quan trọng: công cụ không chấp nhận file thực thi bị Valve mã hóa bằng SteamStub. Người dùng phải tự giải mã ba file từ bản game mình mua bằng công cụ riêng, đặt vào ~/.bo2-native/steam/. Dự án không cung cấp cách gỡ wrapper này và yêu cầu không chia sẻ các file đó.

Mã nguồn của dự án theo giấy phép GPL-3.0. Đây là dự án fan không chính thức, không liên kết với Activision, Treyarch hay Microsoft.

Góc nhìn

Với lập trình viên Việt Nam, dự án này là một ví dụ đáng tham khảo về static recompilation kết hợp AI: thay vì giả lập cả một môi trường Windows, ta dịch thẳng mã máy sang kiến trúc đích và tự viết lại lớp runtime. Cách tiếp cận này đòi hỏi hiểu sâu về ABI, bộ nhớ chia sẻ và mô hình bộ nhớ của ARM (không phải TSO như x86), nhưng đổi lại là hiệu năng gần như native.

Điều đáng chú ý không kém là phần phương pháp luận: tác giả ghi lại hàng trăm phát hiện, nhiều lần rút lại kết luận, và nhấn mạnh rằng AI đóng vai trò tăng năng suất còn con người chịu trách nhiệm xác minh trên màn hình thực tế. Với các nhóm đang phải bảo trì phần mềm cũ chạy trên nền tảng đã lỗi thời, đây là hướng đáng cân nhắc — nhưng cũng là lời nhắc rằng công cụ đo lường sai có thể dẫn cả dự án đi sai đường.

Nguồn: github.com · Quy trình biên tập

Chia sẻ:FacebookX