Castlevania: Symphony of the Night Decompilation

July 1, 2025 ยท View on GitHub

A work-in-progress decompilation of Castlevania Symphony of the Night for Sony PlayStation 1, Sony PlayStation Portable and Sega Saturn. 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.

It currently supports the following versions of the game:

  • us the reference build with the serial number SLUS-00067
  • hd an unreleased PS1 Japanese build found in Castlevania: Dracula X Chronicles game data
  • pspeu European build from Castlevania: Dracula X Chronicles
  • saturn the port created by an external development team

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

File nameCode coverageDecomp functionsDescription
SLUS_000.67code coverage SLUS_000.67decompiled functionsShared libraries
DRA.BINcode coverage DRA.BINdecompiled functionsGame engine
BIN/RIC.BINcode coverage RIC.BINdecompiled functionsPlayable Richter
BIN/WEAPON0.BINcode coverage WEAPON0.BINdecompiled functionsEquippables
BIN/WEAPON1.BINcode coverage WEAPON1.BINdecompiled functionsEquippables 1
ST/ARE/ARE.BINcode coverage ARE.BINdecompiled functionsColosseum
ST/CAT/CAT.BINcode coverage CAT.BINdecompiled functionsCatacombs
ST/CEN/CEN.BINcode coverage CEN.BINdecompiled functionsCenter
ST/CHI/CHI.BINcode coverage CHI.BINdecompiled functionsAbandoned Mine
ST/DAI/DAI.BINcode coverage DAI.BINdecompiled functionsRoyal Chapel
ST/DRE/DRE.BINcode coverage DRE.BINdecompiled functionsNightmare
ST/LIB/LIB.BINcode coverage LIB.BINdecompiled functionsLong Library
ST/MAD/MAD.BINcode coverage MAD.BINdecompiled functionsDebug Room
ST/NO0/NO0.BINcode coverage NO0.BINdecompiled functionsMarble Gallery
ST/NO1/NO1.BINcode coverage NO1.BINdecompiled functionsOuter Wall
ST/NO2/NO2.BINcode coverage NO2.BINdecompiled functionsOlrox's Quarters
ST/NO3/NO3.BINcode coverage NO3.BINdecompiled functionsEntrance (first visit)
ST/NO4/NO4.BINcode coverage NO4.BINdecompiled functionsUnderground Caverns
ST/NP3/NP3.BINcode coverage NP3.BINdecompiled functionsEntrance
ST/NZ0/NZ0.BINcode coverage NZ0.BINdecompiled functionsAlchemy Laboratory
ST/NZ1/NZ1.BINcode coverage NZ1.BINdecompiled functionsClock Tower
ST/SEL/SEL.BINcode coverage SEL.BINdecompiled functionsTitle screen
ST/ST0/ST0.BINcode coverage ST0.BINdecompiled functionsFinal Stage: Bloodlines
ST/TOP/TOP.BINcode coverage TOP.BINdecompiled functionsCastle Keep
ST/WRP/WRP.BINcode coverage WRP.BINdecompiled functionsWarp Room
ST/RARE/RARE.BINcode coverage RARE.BINdecompiled functionsReverse Colosseum
ST/RCAT/RCAT.BINcode coverage RCAT.BINdecompiled functionsFloating Catacombs
ST/RCEN/RCEN.BINcode coverage RCEN.BINdecompiled functionsReverse Center
ST/RCHI/RCHI.BINcode coverage RCHI.BINdecompiled functionsCave
ST/RDAI/RDAI.BINcode coverage RDAI.BINdecompiled functionsAnti-Chapel
ST/RLIB/RLIB.BINcode coverage RLIB.BINdecompiled functionsForbidden Library
ST/RNO0/RNO0.BINcode coverage RNO0.BINdecompiled functionsBlack Marble Gallery
ST/RNO1/RNO1.BINcode coverage RNO1.BINdecompiled functionsReverse Outer Wall
ST/RNO2/RNO2.BINcode coverage RNO2.BINdecompiled functionsDeath Wing's Lair
ST/RNO3/RNO3.BINcode coverage RNO3.BINdecompiled functionsReverse Entrance
ST/RNO4/RNO4.BINcode coverage RNO4.BINdecompiled functionsReverse Caverns
ST/RNZ0/RNZ0.BINcode coverage RNZ0.BINdecompiled functionsNecromancy Laboratory
ST/RNZ1/RNZ1.BINcode coverage RNZ1.BINdecompiled functionsReverse Clock Tower
ST/RTOP/RTOP.BINcode coverage RTOP.BINdecompiled functionsReverse Keep
ST/RWRP/RWRP.BINcode coverage RWRP.BINdecompiled functionsWarp Room (reverse)
ST/TE1/TE1.BINcode coverage TE1.BINdecompiled functionsTest Room 1
ST/TE2/TE2.BINcode coverage TE2.BINdecompiled functionsTest Room 2
ST/TE3/TE3.BINcode coverage TE3.BINdecompiled functionsTest Room 3
ST/TE4/TE4.BINcode coverage TE4.BINdecompiled functionsTest Room 4
ST/TE5/TE5.BINcode coverage TE5.BINdecompiled functionsTest Room 5
BOSS/MAR/MAR.BINcode coverage MAR.BINdecompiled functionsMaria cutscene
BOSS/BO0/BO0.BINcode coverage BO0.BINdecompiled functionsOlrox
BOSS/BO1/BO1.BINcode coverage BO1.BINdecompiled functionsGranfaloon
BOSS/BO2/BO2.BINcode coverage BO2.BINdecompiled functionsMinotaur & Werewolf
BOSS/BO3/BO3.BINcode coverage BO3.BINdecompiled functionsScylla
BOSS/BO4/BO4.BINcode coverage BO4.BINdecompiled functionsDoppleganger 10
BOSS/BO5/BO5.BINcode coverage BO5.BINdecompiled functionsHippogryph
BOSS/BO6/BO6.BINcode coverage BO6.BINdecompiled functionsRichter
BOSS/BO7/BO7.BINcode coverage BO7.BINdecompiled functionsCerberus
BOSS/RBO0/RBO0.BINcode coverage RBO0.BINdecompiled functionsRalph, Grant, & Sypha
BOSS/RBO1/RBO1.BINcode coverage RBO1.BINdecompiled functionsBeelzebub
BOSS/RBO2/RBO2.BINcode coverage RBO2.BINdecompiled functionsDeath
BOSS/RBO3/RBO3.BINcode coverage RBO3.BINdecompiled functionsMedusa boss
BOSS/RBO4/RBO4.BINcode coverage RBO4.BINdecompiled functionsThe Creature
BOSS/RBO5/RBO5.BINcode coverage RBO5.BINdecompiled functionsDoppleganger 40
BOSS/RBO6/RBO6.BINcode coverage RBO6.BINdecompiled functionsDracula
BOSS/RBO7/RBO7.BINcode coverage RBO7.BINdecompiled functionsAkmodan II
BOSS/RBO8/RBO8.BINcode coverage RBO8.BINdecompiled functionsGalamoth
SERVANT/TT_000.BINcode coverage TT_000.BINdecompiled functionsBat Familiar
SERVANT/TT_001.BINcode coverage TT_001.BINdecompiled functionsGhost Familiar
SERVANT/TT_002.BINcode coverage TT_002.BINdecompiled functionsFaerie Familiar
SERVANT/TT_003.BINcode coverage TT_003.BINdecompiled functionsDemon Familiar
SERVANT/TT_004.BINcode coverage TT_004.BINdecompiled functionsSword Familiar

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 successfully decompiled.

Overlays listed as invalid have not yet been started.

Decompiling a game is a mastodontic task. If you have some basic programming skills, please join us in this journey. Any contribution will be very appreciated!

Join to our Discord server

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 has 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 fundamentals 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.
  • maspsx by @mkst to replicate the customized assembler used in the official PSX SDK.
  • 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.