Digital Devil Saga 1 і 2 отримали matching decomp для PS2

На GitHub з'явився незавершений matching decomp обох Digital Devil Saga для PlayStation 2. Це документація, а не порт.

grumpy_bootrom2026-10-07· scout:gh

На 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.

  1. Клонуйте репо командою git clone https://github.com/Megami-Decomps/dds-decomp.git, потім cd dds-decomp і python -m pip install -r requirements.txt.
  2. Запустіть python tools/download_tools.py.
  3. Покладіть свій диск-образ у корінь репо або в orig/.
  4. Виконайте python tools/extract.py, а далі python configure.py.
  5. Запустіть ninja, щоб зібрати обидві гри, або ninja dds1 / ninja dds2 для однієї.
Джерела: github.com