Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/pmret/papermario/llms.txt

Use this file to discover all available pages before exploring further.

The Paper Mario decompilation project welcomes contributions of all kinds — from matching a single assembly function to writing Doxygen comments that explain what the code actually does. This page gives you a map of the contribution landscape and what you need before you start.

Contribution types

There are three main ways to contribute:
  • Matching functions — Converting MIPS assembly from ver/us/asm/nonmatchings/ into C code that compiles to a byte-for-byte identical ROM. This is the core work of the project.
  • Documenting code — Adding Doxygen comments to already-matched functions, structs, variables, and files so the codebase is easier to understand.
  • Tooling — Improving the Python scripts (diff.py, coverage.py, m2ctx.py, etc.) that support the decompilation workflow.

Match a function

Step-by-step workflow for converting assembly into matching C code using mips_to_c and diff.py.

Decompilation tools

Reference for diff.py, m2ctx.py, coverage.py, make_expected.sh, and related scripts.

Document source code

How to write Doxygen comments for functions, variables, structs, and files.

Pull request template

Open a pull request on GitHub once your work is ready for review.

Prerequisites

Before contributing, you need a working build. Run ninja and confirm the output ends with papermario.z64: OK. If you haven’t set up the project yet, follow the setup guide first. Contributing also requires a few extra Python packages. Install them with:
./install_deps.sh --extra
This installs tools like mips_to_c, argcomplete, and other utilities used during the matching workflow.

Build system notes

You need to edit splat.yaml and re-run ./configure when you:
  • Rename, create, or delete source files
  • Migrate data from a .data.s file into C
If ninja breaks after a git pull, re-running ./configure usually fixes it. If you use Visual Studio Code, Run Build Task (Ctrl+Shift+B) runs ninja and surfaces compiler errors and warnings in the Problems tab.

Community and support

If you get stuck, the best place to ask for help is the project Discord:
Join the community at discord.gg/PgcMpQTzh5. Most active contributors and maintainers are reachable there.
You can also browse open issues and pull requests on GitHub to see what others are working on and avoid duplicating effort.

Build docs developers (and LLMs) love