PS2ゲームをWebAssemblyに静的コンパイル
原題: Show HN: PS2 games statically recompiled to WebAssembly
なぜ重要か
静的再コンパイルによるレガシーゲームのブラウザ移植は、エミュレーション規制を回避しながら高い実行効率を実現できる可能性を示す技術的前例となる。
開発者のsnuri00氏がPS2ゲームをエミュレーターなしにブラウザで動作させるプロジェクト「ps2-web-recomp」をGitHubで公開した。PS2のEmotion EngineのマシンコードをC++に変換し、WebAssemblyにコンパイル。PS2のOSとハードウェアをWebGPUで再実装したランタイムと組み合わせることで、ブラウザ上でネイティブ動作を実現する。
「ps2-web-recomp」は、PlayStation 2のゲームをエミュレーターを用いずにブラウザ上で動作させる実験的プロジェクトだ。GitHub上で公開され、スターは254件を記録している。
技術的な手法は「静的再コンパイル」と呼ばれる。PS2のEmotion Engineが実行するマシンコードをあらかじめC++へ変換(アヘッド・オブ・タイム変換)し、それをWebAssemblyへコンパイルする。エミュレーターが命令を逐一解釈するのとは異なり、コードが変換済みであるため実行速度が高い。グラフィクス描画にはWebGPUを使用し、PS2のOSおよびハードウェアを独自に再実装したランタイムがブラウザ上で稼働する。
動作確認タイトルとして選ばれたのは「Gran Turismo 4」のPAL版だ。PS2の中でも特に要求の厳しいゲームの一つで、両方のベクトルユニット(VU0・VU1)を使い、リプレイとライセンステストで厳密な浮動小数点演算を必要とし、レンダリング画像をパレットとして読み返すグラフィクストリックも多用する。プロジェクトはこのゲームをブート画面からオープニングムービー、メニュー、レースまで通して動作させることに成功。音楽・効果音も再生され、ブラウザ内の仮想メモリーカードへのセーブも機能する。
ノートPCの内蔵GPUを使ったChromeブラウザ上で、PS2オリジナルの2倍解像度かつフル速度(50fps)で動作することを録画で示している。同プロジェクトはPSP向けの同様プロジェクト「psp-web-recomp」の姉妹版と位置づけられており、同じ手法をPS2に適用したものだ。ライセンスはMITで、コードはGitHubで公開されている。