Digital Devil Saga 1 and 2 get a matching decomp for PS2
A work-in-progress matching decompilation of both Digital Devil Saga games for PlayStation 2 is up on GitHub. It's documentation, not a port.
A work-in-progress matching decompilation of Shin Megami Tensei: Digital Devil Saga and Digital Devil Saga 2 for PlayStation 2 is now on GitHub, under the Megami-Decomps org. If you want to see how these games work under the hood, this one is worth a look. It’s not a port, and you can’t play anything with it. You still need your own lawfully obtained disc.
The idea is simple. Readable C gets rebuilt from the retail binaries, then checked against the original executables. A build counts as matching when the rebuilt code produces the same bytes as the original ELF. The repo covers both US releases: Digital Devil Saga (SLUS_209.74) and Digital Devil Saga 2 (SLUS_211.52), with a SHA-1 listed for each ELF. A checksum mismatch fails the build, so a near-miss can’t slip through.
Progress is honest about itself. Unfinished functions still use assembly pulled from the original executable, so a matching build doesn’t mean the job is done. Names, types and source layout are still being recovered. Credit is counted in source-owned code bytes, and assembly fallbacks get zero. The readme says DDS2 reuses much of DDS1’s engine, so work on one game feeds the other.
My take: matching decomps are slow, thankless work. Every function has to go through the original compiler and come out byte for byte, which is why projects like this take so long. The acknowledgements credit splat, spimdisasm, m2c, objdiff and decomp.me, with decomp.me also packaging the ee-gcc 2.96 toolchain used in the Persona 3/4 decompilation projects. The part I like most is the documentation: field formats, battle tables, VM scripts. Even if you never build it, that’s the stuff modders end up wishing they had.
How to try it. You need Linux x86-64 or WSL2, Python 3.10+, ninja, cpp and git.
- Clone the repo with
git clone https://github.com/Megami-Decomps/dds-decomp.git, thencd dds-decompandpython -m pip install -r requirements.txt. - Run
python tools/download_tools.py. - Copy your disc image into the repository root or
orig/. - Run
python tools/extract.py, thenpython configure.py. - Run
ninjato build both games, orninja dds1/ninja dds2for one.

