Ini adalah dekompilasi Sly Cooper dan Thievius Raccoonus yang masih dalam proses untuk PlayStation 2. Ini membuat versi game NTSC-U, SCUS_971.98
(SHA1: 57dc305d
).
Tujuan dari proyek ini adalah untuk lebih memahami mesin permainan. Repo ini tidak berisi aset game atau kode asli apa pun dari game yang dapat dijalankan; Ini memerlukan salinan game Anda sendiri untuk dibuat dan dijalankan.
Dokumentasi kode dapat ditemukan di theonlyzac.github.io/sly1. Untuk membaca lebih lanjut tentang struktur dan mekanisme internal game, kunjungi SlyMods Wiki.
Kontributor baru dipersilakan dan didorong untuk membuat permintaan penarikan! Jika Anda ingin membantu tetapi tidak yakin harus mulai dari mana, lihat CONTRIBUTING.md dan jangan ragu untuk bergabung dengan server Discord kami untuk mendapatkan panduan.
Anda dapat dengan cepat menyiapkan proyek di Linux (atau WSL) menggunakan skrip mulai cepat. Ikuti tiga langkah berikut untuk memulai.
Salin dan jalankan perintah berikut. Ini mungkin meminta kata sandi Anda untuk menginstal dependensi.
git clone https://github.com/theonlyzac/sly1 &&
cd sly1 &&
./scripts/quickstart.sh
Salin file SCUS_971.98
dari disk game Sly 1 Anda ke direktori disc
proyek. Hal ini diperlukan untuk membangun.
./scripts/build.sh
Jika berhasil, Anda akan melihat ini:
[XXX/XXX] sha1sum config/checksum.sha1
out/SCUS_971.98: OK
Jika Anda mengalami masalah, atau Anda lebih memilih menyiapkan proyek secara manual, ikuti petunjuk di bawah. Petunjuk untuk menjalankan permainan juga disediakan di bawah ini.
Proyek ini dapat dibangun di Linux (atau Windows menggunakan WSL). Ikuti petunjuk di bawah ini untuk menyiapkan lingkungan build.
Kloning repo ke mesin lokal Anda:
git clone https://github.com/TheOnlyZac/sly1
cd sly1
Untuk membangun proyek ini, Anda perlu mengekstrak file ELF asli dari salinan game yang Anda peroleh secara sah. Pasang disk pada PC Anda dan salin file SCUS_971.98
dari disk Anda ke direktori disc
proyek ini.
Jika Anda tidak memiliki Python 3.8 atau lebih tinggi, instal:
sudo apt-get install python3 python3-pip
Kemudian instal paket Python yang diperlukan:
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
Proyek ini membangun SCUS_971.98
yang dapat dieksekusi.
python3 configure.py
ninja
Jika Anda memperbarui file konfigurasi apa pun atau menambahkan file sumber apa pun, Anda perlu menjalankan konfigurasi ulang yang bersih:
python3 configure.py --clean
Untuk hanya membersihkan tanpa mengkonfigurasi ulang (yaitu menghapus file build) gunakan:
python3 configure.py --only-clean
Menjalankan executable membutuhkan PCSX2 2.0. Anda harus memiliki salinan game asli dan BIOS dari PS2 Anda sendiri. Mereka tidak disertakan dalam repo ini dan kami tidak dapat menyediakannya untuk Anda.
Setelah Anda memilikinya dan membuat executable, Anda dapat menjalankannya dengan salah satu dari tiga cara berikut:
Skrip run.sh
di direktori scripts
akan secara otomatis membangun kembali file yang dapat dieksekusi dan menjalankannya di emulator PCSX2. Untuk menggunakannya, Anda harus mengedit skrip terlebih dahulu untuk mengatur variabel PCSX2_PATH
dan ISO_PATH
ke jalur yang benar di sistem Anda.
Untuk mem-boot elf di PCSX2 dari baris perintah, gunakan perintah berikut:
pcsx2.exe -elf " .../sly1/bin/debug/SCUS_971.98 " " /path/to/game/backup.iso "
Ganti pcsx2.exe
dengan path ke PCSX2 v2.0 yang dapat dieksekusi (untuk Linux akan berupa file .appimage ).
-elf
menentukan jalur ke SCUS_971.98 yang Anda buat dari proyek ini. Ganti ...
dengan jalur ke repositori ini. Emulator akan menggunakan ELF ini untuk mem-boot game./path/to/game/backup.iso
dengan jalur ke cadangan disk game Anda sendiri. Dari sinilah game akan memuat aset. Salin SCUS_971.98
dari direktori out
ke folder PCSX2 Games Anda dan ganti namanya menjadi SCUS_971.98.elf
. Klik kanan pada game di PCSX2 dan klik "Properties...". Buka "Disc Path", klik "Browse", dan pilih ISO cadangan game Anda. Kemudian klik "Tutup" dan mulai permainan seperti biasa.
Proyek ini dibagi ke dalam direktori berikut:
include
- File header untuk mesin game.src
- Kode sumber yang didekompilasi.src/P2
.src/P2/splice
.config
- File konfigurasi untuk Splat (alat pemisahan biner).scripts
- Skrip utilitas untuk menyiapkan lingkungan build.docs
- Dokumentasi dan instruksi untuk berkontribusi.tools
- Utilitas untuk pencocokan fungsi.reference
- File referensi untuk fungsi dan struktur data.Saat Anda membuat file yang dapat dieksekusi, direktori berikut akan dibuat:
asm
- Kode perakitan yang dibongkar dari elf.assets
- Data biner yang diekstraksi dari peri.obj
- File objek yang dikompilasi.out
- Mengkompilasi file executable. Saat pengembang membuat game tersebut, mereka menulis kode sumber dan mengkompilasinya menjadi kode perakitan yang dapat dijalankan di PS2. Dekompilasi melibatkan rekayasa balik kode rakitan untuk menghasilkan kode baru dan asli yang dikompilasi ke rakitan yang cocok. Proses ini memberi kita kode sumber yang mirip dan berperilaku sama dengan kode sumber (walaupun tidak selalu identik), yang membantu kita memahami apa yang dipikirkan pemrogram saat mereka membuat game.
Kami menggunakan alat yang disebut Splat untuk membagi biner menjadi file rakitan yang mewakili setiap fungsi individual. Kami kemudian mengimplementasikan kembali setiap fungsi dan struktur data dengan menulis kode C++ yang dikompilasi ke kode assembly yang sama. Kami tidak menyertakan data atau kode apa pun dari biner game asli dalam dekompilasi.
Ini adalah salah satu dekompilasi PS2 pertama; Beberapa proyek lainnya telah dimulai sejak kami mulai pada tahun 2020. Inspirasi utama kami adalah proyek lain seperti dekomp Super Mario 64 untuk N64 dan dekompilasi Breath of the Wild untuk Wii U (yang terakhir lebih mirip cakupannya dengan proyek ini) . Ada juga port dekomp/PC Jak & Daxter yang disebut OpenGOAL, meskipun game tersebut 98% menggunakan bahasa GOAL dan bukan C/C++.
Ya. Ini adalah proyek dekompilasi PS2 pertama yang menargetkan PS2 dan memanfaatkan pencocokan fungsi, bahkan sebelum dimungkinkan untuk menghasilkan executable pencocokan byte. Kami telah membangun elf yang cocok sejak Juli 2024. Tujuan utamanya adalah mencocokkan 100% fungsi game.
Jika Anda ingin berkontribusi, lihat CONTRIBUTING.md dan jangan ragu untuk bergabung dengan server perselisihan kami jika Anda memiliki pertanyaan!