開源專案 ps2-web-recomp 透過將 PlayStation 2 遊戲的 Emotion Engine 機器碼在執行前(Ahead-of-Time)靜態重編譯為 C++ 並編譯成 WebAssembly,結合重新實作的 PS2 作業系統與硬體層,使遊戲能在瀏覽器中無需傳統模擬器即可運行。該專案是 psp-web-recomp 的姊妹專案,採用相同技術方法。目前已支援《GT 賽車 4》(Gran Turismo 4)與《戰神 II》(God of War II)。《GT 賽車 4》因對系統要求極高而被選為首個測試標題,其依賴向量單元、精確浮點行為及圖形技巧。該遊戲可從開機、開場影片、選單到比賽全程遊玩,包含音樂音效,並支援瀏覽器內存檔。在 Chrome 瀏覽器搭配筆電整合顯卡下,PAL 版本以 PS2 原生解析度的兩倍運行,達到每秒 50 幀。《戰神 II》則無需遊戲特定代碼即可移植,但發現了重編譯器與向量單元計時中的兩個錯誤,以及 PS2 輸入/輸出處理器(IOP)的缺失部分。該遊戲可從選單、過場動畫進入戰鬥,在 PS2 原生解析度下重戰鬥場景維持 60 幀;在兩倍解析度下則為 48 至 60 幀,受限於整合顯卡效能。專案不包含遊戲數據,使用者需自行提供擁有之遊戲光碟映像檔,透過腳本在本機轉換為網頁。技術實現上,eerecomp 工具讀取遊戲執行檔,追蹤控制流以生成 C++ 代碼,保留 R5900 處理器的特性如 128 位元暫存器、分支延遲槽及非 IEEE 標準的浮點單元行為。向量單元 1 的微程式被預編譯為 SIMD C++ 或即時編譯為 WebAssembly 模組。圖形方面,Graphics Synthesizer 的 4MB 記憶體映射至 GPU,透過 WebGPU 計算著色器進行繪製,支援內部解析度放大至原生解析度的 1 至 3 倍。音效由重新實作的 SPU2 處理,影片則由 MPEG-2 解碼器解碼。優化過程顯示,初期原生執行僅 3 幀,透過將圖形移至 WebGPU 及預編譯向量程式提升至約 70 幀。後續優化包括減少計算調度次數、緩存重複上傳的紋理數據、統一載入著色器設定及調整瀏覽器排程機制。開發環境需 Linux x86-64、C++20 編譯器、Python 3 等,每個遊戲約需 300 MB 磁碟空間。瀏覽器支援方面,需 WebGPU 支援(Chrome/Edge 在 Windows/macOS 預設開啟,Linux 需手動啟用 flags),無 WebGPU 時退回軟體渲染器僅適用於選單。目前僅有兩款遊戲成功運行,其他遊戲很可能因未實作的系統呼叫、IOP 庫函數或圖形功能而失敗。法律上,生成的 C++ 和 WebAssembly 屬於遊戲擁有者,不應發布,僅供個人使用。

社群觀察

社群對技術成就表示讚賞,但提出了與傳統模擬器相比的安全性和信任問題。一些用戶討論了潛在的瓶頸,並建議進一步優化,例如將編譯器編譯為 WebAssembly。