開源專案 PSP Web Recomp 讓《戰神》在瀏覽器以 60 FPS 運行

BlueSky

AI 摘要

  • PSP Web Recomp 由 snuri00 在 GitHub 開源,採用靜態二進位重編譯將遊戲轉為 WebAssembly
  • 《戰神:奧林帕斯之鏈》可在 Chrome 與 Firefox 以 4 倍解析度穩定跑出 60 FPS
  • 專案透過模仿 PPSSPP 的垂直空白期間處理方式,將每幀繪圖負擔降至原本的 1/8

開源專案 PSP Web Recomp 由軟體工程師 snuri00 發表於 GitHub,採用靜態二進位重編譯技術,將 PSP 遊戲轉為 WebAssembly 格式。展示成果顯示,《戰神:奧林帕斯之鏈》可在 Chrome 與 Firefox 上以 4 倍解析度穩定運行,並維持 60 FPS 的畫面流暢度。

技術定位:摒棄動態模擬,改採靜態重編譯

過去在瀏覽器或 PC 重現主機遊戲,主流方案多依賴直譯器或 JIT(即時編譯)引擎,在執行階段逐行解析並轉譯目標主機的機器碼指令。這種動態機制會帶來明顯的 CPU 負擔與快取未命中問題。PSP Web Recomp 則改為離線將遊戲的機器碼靜態逆向重組為 C++ 程式碼,再編譯為 WebAssembly,免除執行時期的指令動態解譯負擔。

目標與延伸背景

snuri00 曾主導 PS2Recomp 專案,PSP Web Recomp 延續了該專案在 PlayStation 2 遊戲靜態重編譯上的架構經驗,並將其延伸至 Sony 經典掌機 PlayStation Portable(PSP)的軟硬體生態。

展示成果比較

項目《戰神:奧林帕斯之鏈》《戰神:斯巴達的鬼魂》
渲染解析度原生 PSP 螢幕(480×272)的 4 倍原生解析度的 3 倍
畫面幀率過場與激烈戰鬥場景皆維持 60 FPS55 FPS 至 60 FPS
音訊表現背景音樂、音效與角色語音可精準同步來源未提供相關資料

目前專案仍跳過所有預錄的 CG 影片檔案。

效能突破:從 6 FPS 到 60 FPS

在早期可正常遊玩的版本中,遊戲在瀏覽器內的畫面僅有 6 FPS。snuri00 指出,關鍵並不在於 WebGL2 渲染管線的硬體加速,而是透過效能分析(Profiling)找出哪些底層呼叫耗用了大量運算時間。

分析發現,原版《戰神》在 PSP 的繪圖硬體上不會等待垂直空白期間(V-blank)才交換幀緩衝區,導致每呈現一幀畫面,繪圖核心實際上重複繪製了約 8 幀資料。專案借鑑開源 PSP 模擬器 PPSSPP 的做法,攔截單次垂直空白期間內的兩次置換請求,並將處理延後至下一個垂直空白週期,使每幀繪圖負擔降至原本的 1/8,從而釋放大量算力。

模擬器定義之爭

技術細節公開後,Hacker News 社群對「這項專案是否算模擬器」展開討論。支持「非模擬器」立場的開發者認為,專案在編譯期已將 PSP 的 MIPS 機器碼靜態轉換為 WebAssembly,本質上更接近自動化逆向後的重新移植。質疑者則指出,轉換 CPU 指令並不足以讓遊戲運作,專案仍需透過高階模擬(HLE)實作 PSP 作業系統核心服務,並以 WebGL2 重新實作專用圖形晶片的渲染行為,因此仍屬高階模擬架構。

小結

無論最終被歸類為二進位重編譯移植或 HLE 模擬,PSP Web Recomp 的工程成果顯示,現代網頁技術有機會為老舊主機的數位資產保存提供更高效能的跨平台路徑。

Reference Link : techbang.com

Related Articles

Stay Connected

0FansLike
0FollowersFollow
22,800SubscribersSubscribe
spot_img

Latest Articles