Giter Club home page Giter Club logo

pkc-mms-rando's Introduction

Pokecrystal Dissassembly Map, Music and Story Randomiser

pkc-mms-rando provides alternative randomisation options for Pokémon Crystal compared to a typical Pokemon randomiser.

Capabilities

v0.1.1 offers the following randomisers

Shuffle music pointers

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.

Shuffle sound effect pointers

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 warps

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.

Randomise map blocks

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.

Shuffle overworld sprite pointers

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.

Limitations

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.

Getting Started

Check out the in-depth guide for first timers on the Wiki!

  1. If on Windows 10 or 11, install Windows Subsystem for Linux
  2. Install prerequisites make, gcc, git, bison, pkg-config, libpng-dev and openjdk-17-jre-headless
  3. git clone https://github.com/rednex/rgbds -b v0.5.2 --depth=1
  4. sudo make install -C rgbds
  5. Clone a disassembly and rename the directory to input/
  6. Place pkc-mms-rando-0.1.1.jar and run.sh in the same directory as input/
  7. bash run.sh adding options for randomisers, such as --warps or --music-pointers
  8. Wait a few minutes for a file ending in .gbc to appear

Verified Disassemblies

The following pokecrystal disassemblies have been verified to work with this version:

pret's pokecrystal commit 597701f168e69a316f18951e3002c322e23cf3ea

git clone https://github.com/pret/pokecrystal.git
git -C pokecrystal/ checkout 597701f168e69a316f18951e3002c322e23cf3ea

ERC's pokecrystal-speedchoice v7.3

git clone -b speedchoice7.3 https://github.com/erudnick-cohen/pokecrystal-speedchoice-new.git
git -C pokecrystal-speedchoice-new/ checkout ae95e624d0092d5d15be2103b1988cbc6b6962eb

Dabomstew's pokecrystal-speedchoice v7.2

git clone https://github.com/Dabomstew/pokecrystal-speedchoice.git --depth=1 -b v7.2

Command-line options

-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)

Further randomisation with Universal Pokemon Randomizer

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:

  1. Download Lunar IPS
  2. Make your original disassembly into a ROM
  3. Randomise this ROM using UPR or UPR ZX
  4. Open Lunar IPS, and use it to create a patch file from the vanilla ROM to the UPR-randomised ROM
  5. Run the patch file, and select a pkc-mms-rando-randomised ROM to patch

Resources

Contributors

This project is maintained by Grant Futcher. Contact me on Discord (The G-Meister#4275) or via email ([email protected]).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.