bo2-mac - Black Ops IIをARM64 macOSネイティブで動かす静的リコンパイラ
Show HN: Black Ops II statically recompiled to native ARM64 macOS
bo2-macは、Call of Duty: Black Ops IIの3つのexeをRemillでLLVM IRに変換し、ARM64のネイティブコードへ静的リコンパイルするプロジェクトです。手書きのWin32ランタイムと、Direct3D 11をMetalで描画するレイヤーを組み合わせ、WineもJITも使わずに1プロセスで動作します。自分のSteam版をMac上で変換すれば、キャンペーンは51〜60fps、Zombiesは6マップ、マルチプレイは11モードをボット相手にプレイ可能。ゲームファイルは一切同梱せず、購入した本人だけがアプリをビルドできます。
x86のコード自体が消え、ゲームが始まる前からARM64のマシンコードになっている——WineもRosettaも介さない、完全ネイティブな移植です。
HNでの議論
57- cornedor
私は同じ手法を使って、MacOS上のAsahi LinuxでFallout: New Vegasを動かしたことがあります。かなりの手間ですが、https://github.com/doitsujin/dxvk のおかげで多くの作業を省略でき、ゲームを一日で動かせるようになります。その後は自由に変更を加えられるので、私はFallout NVをネイティブ解像度のワイドディスプレイで、いくつかのグラフィック改善を施して実行しています。リアルタイムの全世界シャドウマップ、SSAO、トーンマップ+カラーグレーディング、FXAA、Hor+ FOVです。
ほとんどの場合、安定した60fpsが出ます。時折バグが発生しますが、すぐに修正されることが多いです。幸いにも10分ごとのオートセーブをすぐに追加したので、大きな問題にはなりません。
このマシンでゲームを動作させる楽しみと、実際にゲームをプレイできる楽しみに加えて、LLMと連携する創造的な方法を見つけるのにも最適です。LLMに適した開発ツールを構築しながら進めています。
- klaussilveira
関連する話題として:https://lwss.github.io/Kisak-Black/
- scronkfinkle
> エミュレータは一切使用していません。Wine、Crossover、Rosettaのいずれも使っていません
他の二つについてはよくわかりませんが、WINE Is Not an Emulatorです。名前がそうなっていますからね :)
- baalimago
こういうものを見るとAIに本当に感謝します。AAAが欠いている利便性、あるいは意図的に提供しないものを、今は手の届くところで実現できるのです。
- cedws
実際にはどうやって再コンパイルするのでしょうか?既存のツールを使うのですか?エージェントがすべてのルーチンを調べてアセンブリを手作業で翻訳するとは想像できません。