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.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.
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. Runninja 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:
mips_to_c, argcomplete, and other utilities used during the matching workflow.
Build system notes
You need to editsplat.yaml and re-run ./configure when you:
- Rename, create, or delete source files
- Migrate data from a
.data.sfile into C
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.
