Skip to content

PhlexPlexico/mm3d-practice-tools

Repository files navigation

MM3D Practice Patch

This is a project that gives a Rosalina-like menu, which is packed with features that are kindly imported from the likes of kz and OoT3D Practice Patch in hopes of streamlining practice, and make the discovery of bugs easier to accomplish. There are also a few improvements that have been borrowed from Project Restoration (plus a bunch of its source for methods and in game functions!).

Shoutouts

  • Gamestabled for the initial OoT3D Practice Patch
  • Leo for the source of Project Restoration, plus all the pestering he's had to put up with me and my questions! Without Restoration, this would have been a hell of a lot harder to implement.
  • N3rdsWithGame for the initial idea of Frame Advance and his repos for basic implementation/notes from years before about making game patches for MM3D and OoT3D.
  • Megahirtz for testing, and implementing all of warp locations!
  • MrCheeze for helping me figure out some warp rooms and inputs.
  • Rylie for helping me with entrances/warps as well.
  • The entire MM3D community, for giving me the motivation and helping all features that are currently included!
  • kz for reference for some features.

Notes About the Project

After viewing the source code of Project Restoration, and annoying asking leoetlino for help with this, I was able to strip out a majority of Restoration's code, and start including my own. However, there are a few things I've kept in as quality of life (QOL) improvements, such as decoupling the ZL/ZR buttons, some minor start menu changes, and quick song of soaring.

The aim of this project is to create an environment for a player so that they can practice tricks, glitch hunt, and reset at ease without having the hassle of turning off or resetting the game.

Project structure

  • source/ Project Restoration's source code.
    • build/: build outputs.
    • common/: small utilities.
    • game/: implementation for the known parts of Majora's Mask 3D. Contains headers and some reimplementation of game functions.
    • rst/: Project Restoration/MM3D Practice Patch code.
    • msys/: The menu system for the practice patch.
  • hooks/: configuration for patches and hooks (for Magikoopa).
  • loader/: Code loader (from Magikoopa).

Sometimes you will find Project Restoration extensions and new code under source/game. Those extensions will always be clearly labelled as such.

How to Use

  • Ensure you have the latest version of Luma3DS installed.
  • Grab the latest release from the releases page.
  • For 3DS Users:
    • USA: Place code.bps and exheader.bin in /luma/titles/0004000000125500/
    • JPN: Place code.bps and exheader.bin in /luma/titles/00040000000D6E00/
    • EU: Place code.bps and exheader.bin in /luma/titles/0004000000125600/
  • For Citra Users:
    • Right click Majora's Mask 3D and Open Mods Location.
    • Place code.bps and exheader_citra.bin in the folder that was opened.
    • Rename exheader_citra.bin to exheader.bin

For version 1.1 please take from the v110 folder. If neither work. please try v101 for the files!

Build instructions

Preparing your environment

  • Put the original code.bin and exheader.bin files in the v100, v101 and v110 folders respectively. You must dump those binaries from the ExeFS yourself; those are not provided in this repository for copyright reasons.
  • You will need the following build tools available on your PATH:
    • This fork of Magikoopa for command line patching and SD card access.
    • Ninja (ninja - small build system closest in spirit to Make).
    • Flips
    • devkitPro
    • git
  • Run make_release.sh.
  • Generated code patches (code.bps) and patched exheaders can be found in release/.

PRs and help are welcome!