Это находящаяся в разработке декомпиляция Sly Cooper and the Thievius Raccoonus для PlayStation 2. В ней собрана версия игры NTSC-U, SCUS_971.98
(SHA1: 57dc305d
).
Цель этого проекта — лучше понять игровой движок. Этот репозиторий не содержит никаких игровых ресурсов или исходного кода из исполняемого файла игры; Для сборки и запуска требуется ваша собственная копия игры.
Документацию по коду можно найти по адресу theonlyzac.github.io/sly1. Для получения дополнительной информации о внутренней структуре и механике игры посетите SlyMods Wiki.
Приветствуются новые участники, и им рекомендуется сделать запрос на включение! Если вы хотите помочь, но не знаете, с чего начать, посетите CONTRIBUTING.md и присоединяйтесь к нашему серверу Discord для получения рекомендаций.
Вы можете быстро настроить проект в Linux (или WSL) с помощью сценария быстрого запуска. Для начала выполните следующие три шага.
Скопируйте и выполните следующую команду. Он может запросить ваш пароль для установки зависимостей.
git clone https://github.com/theonlyzac/sly1 &&
cd sly1 &&
./scripts/quickstart.sh
Скопируйте файл SCUS_971.98
с диска с игрой Sly 1 в каталог disc
проекта. Это нужно для строительства.
./scripts/build.sh
Если это сработает, вы увидите это:
[XXX/XXX] sha1sum config/checksum.sha1
out/SCUS_971.98: OK
Если у вас возникли проблемы или вы предпочитаете настроить проект вручную, следуйте инструкциям ниже. Ниже также приведены инструкции по запуску игры.
Проект может быть построен на Linux (или Windows с использованием WSL). Следуйте инструкциям ниже, чтобы настроить среду сборки.
Клонируйте репо на свой локальный компьютер:
git clone https://github.com/TheOnlyZac/sly1
cd sly1
Чтобы создать проект, вам нужно будет извлечь оригинальный файл ELF из вашей законно полученной копии игры. Смонтируйте диск на свой компьютер и скопируйте файл 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. У вас должна быть собственная копия оригинальной игры и BIOS от вашей PS2. Они не включены в этот репозиторий, и мы не можем предоставить их вам.
Если они у вас есть и вы создали исполняемый файл, вы можете запустить его одним из трех способов:
Сценарий run.sh
в каталоге scripts
автоматически пересоберет исполняемый файл и запустит его в эмуляторе PCSX2. Чтобы использовать его, вам необходимо сначала отредактировать сценарий, чтобы установить для переменных PCSX2_PATH
и ISO_PATH
правильные пути в вашей системе.
Чтобы загрузить эльфа в PCSX2 из командной строки, используйте следующую команду:
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
— Дизассемблированный ассемблерный код от эльфа.assets
— двоичные данные, извлеченные из эльфа.obj
— скомпилированные объектные файлы.out
— скомпилированные исполняемые файлы. Когда разработчики создавали игру, они написали исходный код и скомпилировали его в ассемблерный код, который можно запустить на PS2. Декомпиляция включает в себя реверс-инжиниринг ассемблерного кода для создания нового исходного кода, который компилируется в соответствующую ассемблерную версию. В результате этого процесса мы получаем исходный код, который похож на исходный код и ведет себя так же (хотя и не обязательно идентично), что помогает нам понять, о чем думали программисты, когда создавали игру.
Мы используем инструмент Splat для разделения двоичного файла на файлы сборки, представляющие каждую отдельную функцию. Затем мы переопределяем каждую функцию и структуру данных, написав код C++, который компилируется в тот же ассемблерный код. Мы не включаем в декомпиляцию какие-либо данные или код из исходного двоичного файла игры.
Это была одна из первых декомпиляций PS2; С тех пор, как мы начали в 2020 году, было запущено несколько других. Нашим главным вдохновением были другие проекты, такие как декомпозиция Super Mario 64 для N64 и декомпозиция Breath of the Wild для Wii U (последняя по объему больше похожа на этот проект). . Существует также порт Jak & Daxter для ПК под названием OpenGOAL, хотя эта игра на 98% написана на языке GOAL, а не на C/C++.
Да. Это был первый проект декомпиляции PS2, ориентированный на PS2 и использовавший сопоставление функций, еще до того, как стало возможным создать исполняемый файл сопоставления байтов. Мы создаем соответствующего эльфа с июля 2024 года. Конечная цель — 100% соответствие функциям игры.
Если вы хотите внести свой вклад, посетите CONTRIBUTING.md и присоединяйтесь к нашему серверу Discord, если у вас есть какие-либо вопросы!