驗收單 · 2026-10-22 · 约 9 分钟

ePSxe 模擬器的插件架構為何能撐過二十年

軟體ePSxe分類游戏工具
版本2.0.17體積10.55M
開發方epsxe software狀態已歸檔
ePSxe 模擬器的插件架構為何能撐過二十年

ePSxe 是什麼

ePSxe(PlayStation Enhanced Emulator)是一款針對 Sony PlayStation 主機(俗稱 PS1)的模擬器,最早在 2000 年由 ePSXe Software 團隊釋出。它的定位很明確——讓你在 Windows、Android 等非 PS1 平台上,直接跑原版 PS1 遊戲的光碟鏡像(.bin / .cue / .iso)。最新版本是 2.0.17,可在 ePSxe官網 確認,2026 年 9 月仍有更新。

但這不是一篇「怎麼用 ePSxe」的教程。我想聊的是:為什麼一款 2000 年寫的模擬器,到 2026 年還在維護、還能跑通 99% 的 PS1 遊戲? 同輩的 模擬器 要嘛停更、要嘛重寫了核心,ePSxe 憑什麼撐了二十年?

答案藏在它的插件架構裡。

安裝

ePSxe 的 Android 版本安裝非常直接——找可靠來源 ePSxe下載,拿到這款 10.55MB 的 APK,允許未知來源安裝即可。但它有一個獨特的前置條件:你必須自己提供 BIOS 檔案(通常是 SCPH1001.BIN 或 SCPH7502.BIN)。這不是加密或 DRM,而是 PS1 主機啟動流程的核心——每台 PS1 開機都會先跑 BIOS 初始化硬體、記憶體、CD-ROM 驅動器。沒有 BIOS,模擬器連啟動畫面都出不來。

安裝完 APK 後第一次啟動,ePSxe 會引導你做三件事:指定 BIOS 路徑、選擇視頻插件(Android 版預設用內建 GPUCORE)、選擇音效插件(預設 SPU Core 2.0)。這三件事搞定就能直接 Load ISO 開玩。舊版本升級覆蓋安裝不會清除配置,但如果遇到黑屏無反應,先刪掉 epsxe.cfg 讓它重新走一次配置嚮導——這招解決了 90% 的黑屏問題。

插件架構:把核心和外設徹底分離

我把 ePSxe 的架構比作一家快餐店的後廚——主廚(模擬核心)只管把食材做成熟食,而外包的打包商、送貨員、收銀台(插件)各自處理自己的環節。換個打包商不影響炒菜,換個送貨員不影響出餐,主廚只需要跟所有外包商簽好標準合約就行。

具體來說,ePSxe 把 PS1 主機的硬體拆成了五個獨立的插件介面:

插件類型對應的 PS1 硬體職責
GPU 插件圖形處理器把 PS1 的原始幀緩衝(480i)渲染到現代顯示器
SPU 插件音效處理器合成 ADPCM 音樣、CD-DA 音軌、混響
CD-ROM 插件光碟機控制器讀取 .bin/.cue/.iso 鏡像的資料軌和音軌
Gamepad 插件手把控制器把鍵盤/手柄輸入翻譯成 PS1 按鍵事件
BIOS系統韌體PS1 原生啟動程式(不是插件,但位置在同一層)

這個設計在 2000 年是劃時代的——之前的模擬器要嘛硬編碼所有硬體行為、改一個功能就得重新編譯整個專案,要嘛用的是鬆散的腳本掛鉤、執行效率差一大截。ePSxe 選擇了C 語言的函式指標表格作為插件合約——每個插件必須實作一個固定的結構體,裡面包含 Init()、Shutdown()、ReadData()、WriteData() 這類函式指標。核心透過讀取這個結構體來調度插件,完全不關心插件內部怎麼實作。

這就是為什麼你在 Config 菜單裡能看到一串視頻插件下拉選項——從 2000 年的 Pete SoftGPU 到 2020 年的內建 GPUCORE,它們共用同一個函式指標表格合約,核心不需要改一行代碼就能切換。你甚至可以同時裝五個 GPU 插件、跑同一個遊戲五次,體驗完全不同的畫質和效能——這在硬編碼架構下根本不可能。

BIOS 抽象:模擬器的靈魂

PS1 的 BIOS 是一段寫死在主機 ROM 裡的機器碼。它做三件事:初始化硬體、檢查光碟是否為合法 PS1 遊戲、把控制權交給光碟裡的遊戲程式。

ePSxe 對 BIOS 的處理有兩種模式——這也是 模擬器 設計的通用套路——真實 BIOS 模式和 HLE(High-Level Emulation)模式。真實模式就是載入你自己提供的 .BIN 檔案,讓它像在真 PS1 上一樣跑;HLE 模式則是 ePSxe 自己寫了一套 C 函式,模擬 BIOS 應該完成的高層行為——比如偽造一個啟動畫面、跳過光碟合法性檢查、直接把控制權交給 ISO 裡的遊戲入口。

這兩種模式的取捨很有意思:真實 BIOS 兼容性最好,但你需要自己搞定 BIOS 檔案的來源;HLE 模式零準備就能玩,但遇到某些 BIOS 呼叫序列比較刁鑽的遊戲(比如早期的 3D 遊戲《飛行俱樂部》)會直接崩潰。sample 裡提到黑屏排查時第一步就是 Run → BIOS——如果真實 BIOS 能出畫面,問題就不在 BIOS;如果真實 BIOS 也黑屏,換 HLE 模式試試,不行就是 BIOS 檔案本身有問題。

這個雙 BIOS 抽象也是插件架構的延伸——BIOS 雖然不是透過函式指標載入的,但核心對 BIOS 的呼叫也走了一層間接層,HLE 模式和真實模式對核心來說完全透明。

為什麼不乾脆重寫核心?

講到這裡你可能會問:插件架構再好,核心本身還是 2000 年的代碼吧?為什麼不把核心也重寫了?

這就要說到取捨了。ePSxe 的核心是對 PS1 的 MIPS R3000A CPU 做指令級模擬——PS1 用的是 32-bit RISC 架構,每條指令的時脈、延遲、分支預測在主機上都是硬體固定的。模擬器要做的就是在 x86 / ARM 上精確重現這些指令的執行效果。

這件事比聽起來難得多。PS1 CPU 有幾百條指令,每條指令的邊界條件(比如除以零、溢位、未對齊存取)在真實硬體上的行為和官方文件不完全一致——有些行為是工程師在晶片面設計的、沒寫進文件,但遊戲開發者確實在用。ePSxe 團隊花了二十年時間,把這些「沒寫進文件但大家都在用」的邊界行為一條一條在核心裡補齊了。重寫核心意味著重新踩一遍這二十年的坑——這就是為什麼同輩的模擬器要嘛放棄精確性、只做快速指令解譯,要嘛乾脆換成動態編譯(Dynamic Recompilation)但兼容性打打折。

ePSxe 的取捨很明確:核心保持精確指令解譯,進度慢但兼容性拉滿;插件層允許用現代技術加速,讓舊核心跑上新顯卡、新音效卡。這套組合拳就是它能撐二十年的秘訣——主廚不換,但外包商可以隨市場變化換。

判斷:適合什麼,不適合什麼

綜合以上,ePSxe 的定位其實很清晰:

適合它的場景:

  • 你想玩 PS1 時代的經典遊戲(FF7、合金裝備、GT 賽車),重現原始手感和音效細節——精確指令解譯 + Eternal SPU 插件的組合能讓音畫同步做到毫秒級
  • 你有老遊戲鏡像庫(.bin/.cue 格式),不想轉格式、不想換模擬器
  • 你喜歡折騰視頻插件——Pete 系列的各種濾鏡、分辨率拉伸、特殊修復開關能折騰幾天

不太適合的場景:

  • 你想玩 2000 年之後的遊戲(PS2、PSP 時代的硬體架構完全不同)
  • 你追求極致效能、想在 Switch 或 Steam Deck 上同時開十個模擬器——精確指令解譯比動態編譯慢 3~5 倍,同硬體下幀數會低
  • 你是純新手、不想碰 BIOS 和插件配置—— RetroArch 這類一鍵式前端對新手更友好

最後總結一句:ePSxe 不是最好的 PS1 模擬器,但它是唯一一款二十年來堅持精確指令解譯 + 插件架構雙路並進的。這份堅持讓它在模擬精度上拉開了和同輩的差距,但也意味著團隊一直在踩那些別人已經放棄的坑。如果你需要的是「能跑就行」,用 RetroArch;如果你要的是「跟真 PS1 一模一樣」,打開 ePSxe,找一個好 BIOS,再裝上 Pete OpenGL2。

本文為個人基於網路公開資料整理編寫,非官方內容,僅供學習交流參考;軟體版權歸原作者所有,請支持正版;使用過程中遇到問題請查閱官方管道,本文不承擔任何責任。

同類驗收報告