這是針對 PlayStation 2 SCUS_971.98
57dc305d
Cooper 和 Thievius Raccoonus的正在進行的反編譯。
該計畫的目標是更好地理解遊戲引擎。該儲存庫不包含任何遊戲資產或遊戲可執行檔的原始程式碼;它需要您自己的遊戲副本才能建置和運行。
程式碼文件可以在 theonlyzac.github.io/sly1 找到。如需進一步了解遊戲的內部結構和機制,請造訪 SlyMods Wiki。
歡迎並鼓勵新的貢獻者提出拉取請求!如果您想提供協助但不確定從哪裡開始,請查看 CONTRIBUTING.md 並隨時加入我們的 Discord 伺服器以取得指導。
您可以使用快速啟動腳本在 Linux(或 WSL)上快速設定專案。請依照以下三個步驟開始。
複製並運行以下命令。它可能會要求您輸入密碼來安裝依賴項。
git clone https://github.com/theonlyzac/sly1 &&
cd sly1 &&
./scripts/quickstart.sh
將 Sly 1 遊戲光碟中的檔案SCUS_971.98
複製到專案的disc
目錄中。需要建造它。
./scripts/build.sh
如果它有效,您將看到以下內容:
[XXX/XXX] sha1sum config/checksum.sha1
out/SCUS_971.98: OK
如果您有任何問題,或者您喜歡手動設定項目,請按照以下說明進行操作。下面也提供了運行遊戲的說明。
該專案可以在 Linux(或使用 WSL 的 Windows)上建置。請按照以下說明設定建置環境。
將儲存庫克隆到本機:
git clone https://github.com/TheOnlyZac/sly1
cd sly1
要建立該項目,您需要從您自己合法獲得的遊戲副本中提取原始 ELF 檔案。將光碟安裝到您的 PC 上,並將檔案SCUS_971.98
從光碟複製到該專案的disc
目錄中。
如果您沒有 Python 3.8 或更高版本,請安裝它:
sudo apt-get install python3 python3-pip
然後安裝所需的Python套件:
pip3 install -U -r requirements.txt
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install wine32
sudo apt-get install binutils-mips-linux-gnu
cd scripts
./setup-progd-linux.sh
此專案建置可執行檔SCUS_971.98
。
python3 configure.py
ninja
如果您更新任何設定檔或新增任何來源文件,您將需要執行乾淨的重新配置:
python3 configure.py --clean
若要僅清理而不重新配置(即刪除建置檔案),請使用:
python3 configure.py --only-clean
執行執行檔需要 PCSX2 2.0。您必須擁有自己的原始遊戲副本以及來自您自己的 PS2 的 BIOS。它們不包含在此存儲庫中,我們無法為您提供它們。
擁有這些並建立了可執行檔後,您可以透過以下三種方式之一運行它:
scripts
目錄中的run.sh
腳本將自動重建可執行檔並在 PCSX2 模擬器中執行它。要使用它,您必須先編輯腳本以將PCSX2_PATH
和ISO_PATH
變數設定為系統上的正確路徑。
若要從命令列啟動 PCSX2 中的 elf,請使用下列命令:
pcsx2.exe -elf " .../sly1/bin/debug/SCUS_971.98 " " /path/to/game/backup.iso "
將pcsx2.exe
替換為 PCSX2 v2.0 可執行檔的路徑(對於 Linux,它將是一個.appimage檔)。
-elf
參數指定您從此項目建置的 SCUS_971.98 的路徑。將...
替換為該儲存庫的路徑。模擬器將使用這個ELF來啟動遊戲。/path/to/game/backup.iso
替換為您自己的遊戲光碟備份的路徑。這是遊戲載入資源的地方。將SCUS_971.98
從out
目錄複製到您的 PCSX2 Games 資料夾並將其重新命名為SCUS_971.98.elf
。右鍵單擊 PCSX2 中的遊戲,然後單擊“屬性...”。前往“光碟路徑”,按一下“瀏覽”,然後選擇遊戲備份的 ISO。然後點擊“關閉”並正常開始遊戲。
項目分為以下目錄:
include
- 遊戲引擎的頭檔。src
- 反編譯的原始碼。src/P2
。src/P2/splice
。config
- Splat(二進位分割工具)的設定檔。scripts
- 用於設定建置環境的實用程式腳本。docs
- 貢獻的文檔和說明。tools
- 用於功能匹配的實用程式。reference
- 函數和資料結構的參考文件。當您建立可執行檔時,將建立以下目錄:
asm
- 來自 elf 的反彙編彙編程式碼。assets
- 從精靈中提取的二進位資料。obj
- 編譯的目標檔。out
- 編譯後的可執行檔。 當開發者創建遊戲時,他們編寫了原始程式碼並將其編譯為可以在 PS2 上運行的彙編程式碼。反編譯涉及對彙編程式碼進行逆向工程,以產生新的原始程式碼,並編譯為匹配的彙編程式碼。這個過程給我們留下了與原始程式碼相似且行為相同的原始程式碼(儘管不一定相同),這有助於我們理解程式設計師在製作遊戲時的想法。
我們使用名為 Splat 的工具將二進位檔案拆分為代表每個單獨函數的彙編檔案。然後,我們透過編寫可編譯為相同彙編程式碼的 C++ 程式碼來重新實作每個函數和資料結構。我們不會在反編譯中包含原始遊戲二進位檔案中的任何資料或程式碼。
這是第一個 PS2 反編譯;自2020 年開始以來,我們已經開始了其他幾個項目。本項目較相似) 。還有一個名為 OpenGOAL 的 Jak & Daxter decomp/PC 移植版,儘管遊戲 98% 是 GOAL 語言而不是 C/C++。
是的。這是第一個針對 PS2 並利用函數匹配的 PS2 反編譯項目,甚至在它能夠產生位元組匹配的可執行檔之前。我們從2024年7月開始打造配對精靈,最終目標是100%匹配遊戲功能。
如果您想做出貢獻,請查看 CONTRIBUTING.md,如果有任何問題,請隨時加入我們的 Discord 伺服器!