pkc-mms-rando provides alternative randomisation options for Pokémon Crystal compared to a typical Pokemon randomiser.
v0.1.1 offers the following randomisers
Replace all occurrences of each music track with a different one. Some tracks do not loop and leave silence afterwards, but nothing can be randomised to silence alone.
Replace all occurrences of each sound effect with a diffferent one. Can greatly reduce game speed if short, common sounds such as menu bleeps are replaced with long battle sound effects.
Shuffle destinations of selected warps. Two warp shufflers are provided. The first shuffles all warps in the game, leaving out important ones for balancing. The other only shuffles warps that lead to or from gatehouses, caves, train stations and ports. Neither version is always completable and the player can get stuck after hopping ledges.
Replaces each block of tiles on every map with a random tile that has the same collision. This randomiser is always completable, but looks like an absolute mess.
Replaces all occurrences of each sprite with a different sprite. In practice, this can become visually glitchy if the game loads too many or too few sprites.
pkc-mms-rando is still early in development. It cannot edit ROM files and has no user interface. Instead, randomisers are accessed from a command-line terminal, and read and write Pokémon Crystal disassembly files. Fortunately, this process can be automated, and generating a ROM is as simple as running a small command-line script using Windows Subsystem for Linux. Check the Wiki for more information, or join us on Discord for update notifications on a user interface and direct ROM editing.
Check out the in-depth guide for first timers on the Wiki!
- If on Windows 10 or 11, install Windows Subsystem for Linux
- Install prerequisites
make
,gcc
,git
,bison
,pkg-config
,libpng-dev
andopenjdk-17-jre-headless
git clone https://github.com/rednex/rgbds -b v0.5.2 --depth=1
sudo make install -C rgbds
- Clone a disassembly and rename the directory to
input/
- Place
pkc-mms-rando-0.1.1.jar
andrun.sh
in the same directory asinput/
bash run.sh
adding options for randomisers, such as--warps
or--music-pointers
- Wait a few minutes for a file ending in
.gbc
to appear
The following pokecrystal disassemblies have been verified to work with this version:
- Manual download link; select Code > Download ZIP and extract
- Using Git:
git clone https://github.com/pret/pokecrystal.git
git -C pokecrystal/ checkout 597701f168e69a316f18951e3002c322e23cf3ea
- Manual download link; select Code > Download ZIP and extract
- Using Git:
git clone -b speedchoice7.3 https://github.com/erudnick-cohen/pokecrystal-speedchoice-new.git
git -C pokecrystal-speedchoice-new/ checkout ae95e624d0092d5d15be2103b1988cbc6b6962eb
- Manual download link; select "Source code (.zip)" and extract
- Using Git:
git clone https://github.com/Dabomstew/pokecrystal-speedchoice.git --depth=1 -b v7.2
-h, --help - prints help information and exits
-v, --version - prints program version and exits
-d <dir>, --disassembly-in <dir> - reads a disassembly from the provided directory
-D <dir>, --disassembly-out <dir> - writes out modified disassembly files to the
provided directory (requires -d)
--warps - shuffles all warp destinations (requires -d)
--warp-areas - shuffles some warp destinations (requires -d)
--overworld-sprite-pointers - shuffles overworld sprite pointers (requires -d)
--music-pointers - shuffles music pointers (requires -d)
--sfx-pointers - shuffles sound effect pointers (requires -d)
--map-blocks - randomises map blocks (requires -d)
All randomisers in keep the length of the ROM the same. This means that randomisation with the Universal Pokemon Randomizer (UPR) or UPR ZX can be added on top of pkc-mms-rando randomisation using a simple patch. I do this using Lunar IPS:
- Download Lunar IPS
- Make your original disassembly into a ROM
- Randomise this ROM using UPR or UPR ZX
- Open Lunar IPS, and use it to create a patch file from the vanilla ROM to the UPR-randomised ROM
- Run the patch file, and select a pkc-mms-rando-randomised ROM to patch
This project is maintained by Grant Futcher. Contact me on Discord (The G-Meister#4275) or via email (grantfutcher@live.co.uk).