Skip to main content

Mod package manager for the Paper Mario (N64) decompilation

Project description

Merlon

Merlon is a mod package manager for the Paper Mario (N64) decompilation.

Features:

  • Create packages (merlon new)
  • Export package to a file for distribution (merlon export)
  • Apply distributable files to a base ROM (merlon apply)
  • Compile current package to a modded ROM (merlon build)
  • Run modded ROM in an emulator (merlon run)
  • Package dependency management (merlon add)
  • Experimental GUI support (merlon gui when built with --features gui)
  • Experimental Python API (pip install merlon)

Installation

Note: If you use Windows, you will need to use WSL 2. See the decomp installation instructions for more information.

See releases for pre-built binaries.

From source

Merlon is written in Rust. To build from source, you will need to install the Rust toolchain. See rustup.rs for instructions.

Once you have the Rust toolchain installed, you can install Merlon from crates.io with:

cargo install merlon

If you have a clone of this repository, you can install Merlon with:

cargo install --path .

Supported platforms

Merlon supports all platforms that the Paper Mario decompilation supports.

  • Linux
    • Debian/Ubuntu
    • Arch Linux
    • openSUSE
    • Alpine Linux
    • Nix (nix-shell)
  • macOS
  • Windows (Windows Subsystem for Linux 2)

See the decomp installation instructions for more information.

Additionally, Merlon has a number of runtime dependencies that should be available on your PATH:

  • git
  • ninja
  • python3
  • tar
  • bzip2
  • openssl

Usage

Merlon is a command-line tool. Use merlon help for more information.

A quick tour:

$ merlon new "My mod"
$ cd my-mod
$ merlon init
$ touch papermario/src/my-mod.c && git -C papermario add src/my-mod.c && git -C papermario commit -m "add src/my-mod.c"
$ merlon build
$ merlon export
$ merlon apply "My mod 0.1.0.merlon"

Example mods can be found at nanaian/pm-mods.

Mod file format

Merlon mods are packaged as .merlon files. These files are encrypted using the original game ROM, and cannot be used without the original game ROM. Unencrypted, it is a BZ2-compressed tarball of git patch files that can be applied to a copy of the decomp source code. Additionally, .merlon files contain only source code changes, so they are much smaller than the original game ROM. This means that you can use git to view the history of a mod, and to merge mods together. It also means that all mods distributed as .merlon files are source-available. This is in contrast to other patch formats, such as Star Rod's .mod, which distribute mods as binary patches that cannot be viewed or merged.

Legal

This application is licensed under the Mozilla Public License 2.0. See the LICENSE file for details.

Mods created with this application are not covered by this license. Mods packaged into a file with this application are encrypted using the original game ROM, and cannot be used without the original game ROM. No guarantees are made about the legality of using this application to create mods.

The authors are not affiliated with Nintendo Co., Ltd. in any way.

The PAPER MARIO trademark owned by Nintendo Co., Ltd. is used in this modding tool under the fair use doctrine, solely for the purpose of enabling users to modify the game in a transformative manner.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

merlon-1.1.0.tar.gz (103.6 kB view hashes)

Uploaded Source

Built Distributions

merlon-1.1.0-cp37-abi3-win_amd64.whl (608.7 kB view hashes)

Uploaded CPython 3.7+ Windows x86-64

merlon-1.1.0-cp37-abi3-win32.whl (582.5 kB view hashes)

Uploaded CPython 3.7+ Windows x86

merlon-1.1.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ x86-64

merlon-1.1.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.9 MB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ s390x

merlon-1.1.0-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.8 MB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ ppc64le

merlon-1.1.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ i686

merlon-1.1.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.7 MB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ ARMv7l

merlon-1.1.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.7 MB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ ARM64

merlon-1.1.0-cp37-abi3-macosx_11_0_arm64.whl (760.9 kB view hashes)

Uploaded CPython 3.7+ macOS 11.0+ ARM64

merlon-1.1.0-cp37-abi3-macosx_10_7_x86_64.whl (802.9 kB view hashes)

Uploaded CPython 3.7+ macOS 10.7+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page