Digital Devil Saga 1 і 2 отримали matching decomp для PS2
На GitHub з'явився незавершений matching decomp обох Digital Devil Saga для PlayStation 2. Це документація, а не порт.
На GitHub з’явився незавершений matching decomp обох частин Shin Megami Tensei: Digital Devil Saga для PlayStation 2, репозиторій лежить в організації Megami-Decomps. Якщо ви хочете побачити, як ці ігри влаштовані зсередини, гляньте. Це не порт, пограти в щось із цим не вийде. Гру треба мати свою, законно здобуту.
Ідея проста. З retail-бінарників відновлюють читабельний C-код, а потім перевіряють результат проти оригінальних виконуваних файлів. Білд вважається matching, якщо перекомпільований код дає ті самі байти, що й оригінальний ELF. Репозиторій охоплює обидві американські версії: Digital Devil Saga (SLUS_209.74) і Digital Devil Saga 2 (SLUS_211.52), для кожного ELF є SHA-1. Якщо контрольна сума не збігається, білд падає, тож майже-точна версія тихо не проскочить.
Про прогрес пишуть чесно. Незавершені функції досі лежать як assembly, витягнутий з оригінального файлу, тож matching-білд ще не означає, що роботу закінчено. Імена, типи й організація вихідного коду досі відновлюються. Зарахування рахують за байтами коду, який написали самі автори, а assembly-заглушки дають нуль. У readme сказано, що DDS2 значною мірою використовує рушій DDS1, тож робота над однією грою допомагає й другій.
Моя думка: matching decomp - це повільна й невдячна робота. Кожна функція має пройти через оригінальний компілятор і вийти з тими самими байтами, тому такі проєкти тягнуться довго. У подяках згадані splat, spimdisasm, m2c, objdiff і decomp.me, а decomp.me ще й пакує toolchain ee-gcc 2.96, яким користуються проєкти декомпіляції Persona 3/4. Найбільше мені подобається документація: формати полів, бойові таблиці, VM-скрипти. Навіть якщо ви нічого не збираєте, саме цього моддери потім шукають роками.
Як спробувати. Потрібні Linux x86-64 або WSL2, Python 3.10+, ninja, cpp і git.
- Клонуйте репо командою
git clone https://github.com/Megami-Decomps/dds-decomp.git, потімcd dds-decompіpython -m pip install -r requirements.txt. - Запустіть
python tools/download_tools.py. - Покладіть свій диск-образ у корінь репо або в
orig/. - Виконайте
python tools/extract.py, а даліpython configure.py. - Запустіть
ninja, щоб зібрати обидві гри, абоninja dds1/ninja dds2для однієї.

