繁中

PS2 Recomp如何將控制台代碼轉化為原生PC程式

PS2 Recomp是一款實驗性工具,可將PlayStation 2(PS2)遊戲文件轉換為C++代碼,使它們能夠在計算機或其他設備上本地運行,而無需依賴較慢的模擬器。該工具轉換MIPS命令,支持PS2特定功能,並使用簡單的配置文件設置環境-您需要做的就是使用CMake構建該工具,對ELF遊戲文件執行轉換,並結合底層運行時庫編譯輸出代碼。儘管該工具尚未完全成熟(對VU 1協處理器/圖形渲染的支持有限),但它具有許多優勢:在現代硬體上更快的性能、支持遊戲模組開發、更高的幀速率以及圖像質量增強(例如寬屏顯示器)。

在過去二十年左右的時間裡,如果人們想在電腦上玩PlayStation 2經典遊戲,他們幾乎只有一個選擇:使用PCSJ 2等模擬器。模擬器使用軟體模擬PS2的中央處理器、圖形處理器和各種硬體行為,使遊戲能夠在現代計算機上運行。然而,這種方法總是存在一個問題--它需要對整個主機硬體進行實時模擬,這對性能要求很高,而且很難實現完全的準確性。

最近的項目開始嘗試不同的方法: 他們沒有模擬遊戲機,而是直接將遊戲代碼重新編譯成電腦程式,. GitHub上的PS2 Recomp就是這樣的實驗工具之一。

PS2 Recomp的目標聽起來有點像科幻小說:將PlayStation 2遊戲的二進位代碼「翻譯」成C++代碼,然後將它們編譯成可以直接在計算機上運行的原生程式。PS2的處理器使用MIPS架構(Emotion Engine),遊戲文件通常以ELF可執行文件的形式存在。PS2 Recomp讀取這些ELF文件,解析其中的MIPS指令,並將它們轉換為等效的C++實現。轉換後,開發人員可以使用CMake構建系統,並使用基本運行時庫編譯生成的代碼,以生成新的可執行程式。

這種技術被稱為 靜態重新編譯.與在運行時動態翻譯指令的傳統模擬器不同,它在構建階段將主機指令轉換為目標平台代碼。理論上,一旦編譯,程式就不再依賴於模擬器,而是直接在PC、Linux甚至其他設備上運行。

當然,該技術仍處於非常早期的階段。PS2的硬體結構非常複雜,除了主中央處理器外,還包括向量處理單元(VU 0、VU 1)以及專用圖形處理器圖形合成器。PS2 Recomp目前對這些組件的支持有限,尤其是VU 1協處理器和圖形渲染部分,因此並非所有遊戲都能成功完成過渡。在許多情況下,開發人員仍然需要手動調整代碼或補充運行時支持。

儘管如此,這種方法仍然非常有吸引力。一旦遊戲重新編譯成功,就相當於獲得了新的「原生版本」。開發人員可以在代碼級別進行修改和優化,例如提高幀率、支持寬屏顯示、添加新控制項,甚至開發各種遊戲模組。同時,由於不再需要模擬整個主機硬體,因此理論上運行效率將高於傳統模擬方法。

從長遠來看,PS2 Recomp代表了保存和移植舊遊戲的新想法。過去,許多經典主機遊戲依賴模擬器生存,但靜態重新編譯有可能使這些遊戲真正原生於現代平台。雖然這條路線仍然需要大量的工程工作,但它已逐漸出現在多個平台上,例如任天堂64等舊遊戲機的類似項目。

PS2 Recomp仍然只是一個實驗工具,但它展示了一個非常有趣的可能性:也許將來有一天,我們在電腦上運行的「PS2遊戲」將不再是模擬的,而是重新編譯、重建,真正屬於這個時代的軟體。

Github:https://github.com/ran-j/PS2Recomp
管材:

返回頂端