mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-11-23 13:09:44 +00:00
Decompilation of Castlevania: Symphony of the Night (PSX+Saturn)
.github/workflows | ||
asm/main/psxsdk | ||
bin | ||
config | ||
include | ||
src | ||
tools | ||
.gitignore | ||
.gitmodules | ||
diff_settings.py | ||
Makefile | ||
README.md | ||
slus00067.sha |
Castlevania: Symphony of the Night disassembly
Recompilable code that creates 1:1 binaries for the commercial videogame Castlevania: Symphony of the Night for the PlayStation 1. This repository aims to create a full decompilation in C.
Game revision
Build
- You need
gcc-mipsel-linux-gnu
that you can easily install on any Debian-based Linux distribution. On Windows it is highly recommended to just use Ubuntu with WSL - Place your
main.exe
from the fileSLUS_000.67
andDRA.BIN
in the root directory - Run
make extract
to generate the assembly files - Run
make all
to compile the binaries into thebuild/
directory
Non-matching build
Some of the functions that do not fully match the original game can be compiled by defining #define NON_MATCHING
on a header file or by passing `-DNON_MATCHING to the compiler. In theory they might be logically equivalent in-game, but I cannot promise that. Few of them could match by tuning or changing the compiler.
Notes
- I suspect that GCC 2.7.2 / PSY-Q 3.6 have been used to originally compile
DRA.BIN
main.exe
uses PS-X libraries that might've been created with a different compiler and with-O1
rather than-O2
To do
The project is very barebone at the moment and there is a massive room of improvement, mostly in the infrastructure:
- The zone overlays (
ST/{ZONE}/{ZONE}.BIN
) are not yet disassembled - There is no CI/CD pipeline to test the correctness of the compiled code