74a660999d
This adds a new tool that extracts the Saturn ADPCM music files to WAV. @sonicdcer pointed me to an old winamp plugin that had support for this format, so I reworked the relevant part into a standalone tool. This doesn't try to re-encode, since I would want to examine the original decompression code to make sure that it's 1:1 with this implementation first. Not all the files seem to be in this format, so I explicitly list the ones that are in the Makefile. I think the other PCM files are the voice tracks, which would make sense to use a voice-oriented codec. --------- Co-authored-by: sozud <sozud@users.noreply.github.com> |
||
---|---|---|
.github | ||
.vscode | ||
asm/us/main/psxsdk | ||
bin | ||
config | ||
disks | ||
docs | ||
include | ||
src | ||
tools | ||
.clang-format | ||
.gitignore | ||
.gitmodules | ||
CNAME | ||
diff_settings.py | ||
Dockerfile | ||
go.work | ||
Makefile | ||
README.md |
Castlevania: Symphony of the Night Decompilation
A work-in-progress decompilation of Castlevania Symphony of the Night for PlayStation 1. It aims to recreate the source code from the existing binaries using static and/or dynamic analysis. The code compiles byte-for-byte to the same binaries of the game, effectively being a matching decompilation. Currently it only supports the US version of the game SLUS-00067
.
This repo does not include any assets or assembly code necessary for compiling the binaries. A prior copy of the game is required to extract the required assets.
Bins decomp progress
Code coverage means how many bytes of code have been successfully converted from assembly into C code, while decomp function is how many functions have been succesfully decompiled.
Useful links
Decompiling a game is a mastodontic task. If you have computer science knowledge, please join us in this journey. Any contribution will be very appreciated!
Special thanks
This project is possible thanks to the hard work of tools provided by the Decompilation community:
- mips2c from @matt-kempster to decompile MIPS assembly into C. This proven to be more accurate than Hexrays IDA and Ghidra.
- splat from @ethteck to disassemble code and extract data with a symbol map. This tool provides the fundamental of the SOTN decomp.
- asm-differ from @simonlindholm to know how the decompiled code compares to the original binary.
- decomp-permuter from @simonlindholm to pick different versions of the same code that better matches the original binary.
- decomp.me by @ethteck, @nanaian and @mkst to provide a collaborative decompilation site to share and contribute to work-in-progress decompiled functions.
- frogress by @ethteck to store and retrieve progression data.
- esa-new by @mkst as an inspiration on how to set-up a PS1 decompilation project.
- oot as an inspiration of what it is possible to achieve with a complete decompiled video game.