This is a romhacking tool to randomize some things about
Castlevania: Symphony of the Night.
$ git clone https://github.com/3snowp7im/SotN-Randomizer $ cd SotN-Randomizer $ npm install
To randomize your disc image, just pass in the path to your vanilla .bin file
--in-bin option and an output path using the
This will use the current time as the seed:
$ node randomize -i sotn.bin -o rando.bin
You can print the seed used with the
$ node randomize -v -i sotn.bin -o rando.bin
--verbose flags you include, the more information about the
randomization gets printed:
$ node randomize -vvv -i rando.bin
If you omit the
--out option, the randomizations will be applied to the
.bin in-place. This is not recommended unless you are randomizing a fresh copy
of your vanilla bin:
$ cp sotn.bin rando.bin $ node randomize -i rando.bin
If you omit the
--in-bin option, the randomizer will create a PPF patch file.
$ node randomize -o rando.ppf
You can then use your choice of PPF patcher utilities. Note: After applying the patch, you must perform ECC/EDC recalculation.
- ppf.sotn.io (Browser)
- ppfdev (Source)
- PPF-O-Matic (Windows binary)
- error_recalc (Windows binary and source)
- ECCRegen (Windows binary)
If you plan on sharing a seed with others, the easiest way to use CLI is with
--race option or seed URLs. To use the current time as a seed and print
its URL and starting equipment:
$ node randomize -r -i rando.bin
To use a custom seed and print its URL and starting equipment:
$ node randomize -r -i rando.bin -s myseed
To use a copied seed URL, paste in the URL as an argument. The
will be automatically enabled:
$ node randomize -i rando.bin https://sotn.io/?myseed
--race option has an inherent verbosity level of 2. You can override this
behavior by supplying your own
$ node randomize -vr -i rando.bin -s myseed # Less verbose $ node randomize -v -i rando.bin https://sotn.io/?myseed # Less verbose $ node randomize -vvvr -i rando.bin -s myseed # More verbose $ node randomize -vvv -i rando.bin https://sotn.io/?myseed # More verbose
You can omit the
--out options to perform a dry run.
To print starting equipment and relic locations for a URL without actually writing the randomizations to your disc image or PPF patch file:
$ node randomize -vvv https://sotn.io/?myseed
Presets are settings that generate different randomizations from those found in the default mode. The randomizer includes several built-in presets that can be described using the help system:
$ node randomize --help preset
To create your own preset, save a copy of
presets/sample.json and modify its
content with your own customizations. For example, you have created your preset
and named it
presets/mypreset.json. To randomize a bin using your preset:
$ node randomize -i sotn.bin -o rando.bin -f presets/mypreset
To create a URL that allows others to use your preset:
$ node randomize -rn -f presets/mypreset
Randomized disc images can be played on all consoles that run game backups. This includes hardmodded PlayStations and softmodded PS2s. The latter approach is more accessible and will be outlined in this section.
PS2 console compatible with FreeMcBoot
Check the compatibility list here.
PS2 memcard with FreeMcBoot and uLaunchELF
You can find these on Amazon or make one yourself.
USB thumb drive
This will store your randomized disc image.
POPStarter r13 WIP 06 Beta 17
Download from here. Note: This version is known to cause random crashes on some PS2 revisions. Unfortunately, other recent POPStarter versions do not load the castle map corretly. Your mileage may vary.
You will need to locate this yourself. MD5:
It is important to note that the file names and capitalization in this section must be matched. POPStarter is very strict and this will not work if your files are named differently.
Create a directory on your USB drive named
XX.SOTN.ELFand copy it your USB drive.
Using a text editor, create a file named
SOTN.CUEwith this content:
FILE "SOTN.BIN" BINARY TRACK 01 MODE2/2352 INDEX 01 00:00:00
Randomize your bin and rename the output to
SOTN.BIN. Put this file in the same directory as
Use CUE2POPS to convert
SOTN.CUEto a VCD. Save the output to the
POPSdirectory on your USB drive. It should be named
At this point the file layout on your USB drive should look like this:
POPS/POPS_IOX.PAK POPS/SOTN.VCD XX.SOTN.ELF
Remove any game disc from your PS2 and insert your FreeMcBoot memcard and USB drive.
Start your PS2 and on the FreeMcBoot system menu, select uLaunchELF.
Once uLaunchELF has started, select
Whenever you randomize a new disc image, you will need to follow the above directions starting at step 4.