/MM3D_Randomizer

Randomizer App For Majora's Mask 3D

Primary LanguageC++OtherNOASSERTION

MM3D_Randomizer

This is an item randomizer app for The Legend of Zelda: Majora's Mask 3D for the Nintendo 3DS.

General Description

This program takes The Legend of Zelda: Majora's Mask 3D and randomizes the locations of the items for a new, more dynamic play experience.

The program is based off of the following works:

  • OoT3D Randomizer - This app was rewritten using the OoT3DR generator as base code and modified to suit the needs for MM3D.
  • MM3DR Base Patch - This is where all the ARM patches and base code patches are grabbed from. Decomp is heavily based off of Project Restoration.
  • MM Rando - Base logic rules were taken and updated for MM3D.

Proper logic is used to ensure every seed is possible to complete without the use of glitches and will be safe from the possibility of softlocks with any possible usage of keys in dungeons.

The randomizer will ensure a glitchless path through the seed will exist, but the randomizer will not prevent the use of glitches for those players who enjoy that sort of thing, though we offer no guarantees that all glitches will have identical behavior to the original game. Glitchless can still mean that clever or unintuitive strategies may be required involving the use of things like the Hookshot or other items that may not have been as important in the original game.

Each major dungeon will earn you a random boss remains once completed. The particular dungeons where these can be found, as well as other relevant dungeon information and the current seed hash can be viewed by pressing SELECT, and using the L or R button to move between pages.

As a service to the player in this very long game, various tedious elements of the game have been removed or sped up, and more convenience tweaks are planned for the future. Some of these changes can be customized when creating your seed.

Please be sure to explore the many customizable settings which are available when using the app! There are many options which can alter the length or difficulty of each playthrough.

Want to discuss the randomizer with others? Join our Discord server!

Installation

You can download the latest stable version of the randomizer Here. You can use either the MM3D_Randomizer.3dsx or MM3D_Randomizer.cia files provided to generate randomizer patches.

Please ensure that you are playing on the USA version of Majora's Mask 3D, as it is the only version supported by the randomizer. You can use either the cartridge version or the installed digital version. In all instructions below, if a directory doesn't exist, just create it.

On 3DS Console with Luma3DS

On your SD card, copy MM3D_Randomizer.3dsx to SD:/3ds/ or copy MM3D_Randomizer.cia to SD:/cias/. When using the .3dsx file, you will need to launch the randomzier app through the homebrew menu every time you wish to launch it. When using the .cia file, you will need to install the file using the FBI app, so that the randomizer app appears directly on the 3DS home menu. Alternatively, if your 3DS is connected to the internet, you can use FBI to scan the QR code for either the .3dsx file or the .cia file, and the randomizer will be downloaded and installed automatically.

Power on your 3DS while holding the SELECT key to launch the Luma3DS menu. Make sure that Enable game patching is turned on, then press START to save and launch the home menu. You only have to do this once.

To generate a playthrough, run Majora's Mask 3D Randomizer from the homebrew launcher. Navigate the menus to choose the settings for your playthrough, and finish by selecting Generate Randomizer. When prompted, make sure to select that you are playing on a 3DS console. After the app has finished, launch Majora's Mask 3D from the home menu and enjoy your playthough!

If the 3DS crashes when you launch the game, you probably need to update Luma3DS.

On Citra

Use Citra to launch MM3D_Randomizer.3dsx. Navigate the menus to choose the settings for your playthrough, and finish by selecting Generate Randomizer. When prompted, make sure to select that you are playing on Citra emulator. After the app has finished, on the Citra window, click on File->Open Citra Folder. From this folder, navigate to \sdmc\luma\titles\0004000000125500, and you should find files called code.ips, exheader.bin, and a folder called romfs. In the Citra window, right-click on the installed copy of Majora's Mask 3D, and choose Open Mods Location. (If you haven't installed MM3D, you can go to File->Open Citra Folder and then open up \load\mods\0004000000125500.) Copy code.ips, exheader.bin, and romfs into this folder. Now, launch Majora's Mask 3D and enjoy your playthrough!

Save Files

Right now, save files are shared between any playthroughs you create and the base game. This means that you are responsible for managing your own save files. If you are playing on a 3DS, check out Checkpoint, an easy-to-use homebrew save manager.

Getting Stuck

With a game the size of Majora's Mask 3D, it's quite easy for players to get stuck in certain situations with no apparent path to progressing. Before reporting an issue, please make sure to check out the Discord server to see if that issue has been reported already.

You may also find a map tracker helpful, as these allow you to see all checks which are available with your current items, and check which ones you've gotten already although keep in mind these were designed for the original Majora's Mask Randomizer so there may be some slight discrepancies.

Building

(If you are looking to play the randomizer, jump to Installation, this section is for people interested in contributing or messing with the code)!

Install the 3DS packages from devkitPro

A small portion of this project is done in python. If you decide to use the Msys2 console from devkitpro, you can install python using the command pacman -S python within Msys2.

In the root folder, use make to build MM3D_Randomizer.3dsx. Use make debug=1 for extra debugging features, including extra items when starting a new file. In the case of problems, try using a make clean. When making changes to any code in the code directory, you must use make clean before recompiling if you want your changes to be picked up. For faster compilation using multiple threads, you can use make -j4 (in this example, the 4 is the number of threads being used).

Reporting Bugs

Let us know if you believe you have discovered a bug by posting in our Discord server, or by opening an issue. In the Discord, we have a list of currently known issues and fixes which are pending release, which we try to keep fairly up to date.