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 (pmret/papermario) is a work-in-progress effort to reconstruct the original C source code of Paper Mario for the Nintendo 64. Every function that is matched compiles to a byte-for-byte identical ROM — no guessing, no approximations. The project supports four regional versions: US, JP, PAL, and iQue.

Get started

Learn what the project is, how it works, and how to set up your environment.

Build the ROM

Configure the build system, provide a baserom, and compile a matching ROM with ninja.

Match a function

Step-by-step guide to decompiling assembly into matching C code.

EVT scripting

Understand the custom bytecode VM that powers all in-game events and cutscenes.

What is decompilation?

Decompilation is the process of reconstructing human-readable source code from a compiled binary. For Paper Mario, this means converting MIPS assembly instructions back into C code that — when compiled with the original IDO compiler — produces a ROM that matches the original cartridge byte-for-byte.
1

Set up your environment

Install build dependencies, the IDO compilers, and clone the repository. See Setup for platform-specific instructions (Linux, macOS, WSL 2, or Nix).
2

Provide a baserom

Copy your legally-obtained Paper Mario ROM to the correct path (e.g. ver/us/baserom.z64) and run ./configure to extract assets.
3

Build and verify

Run ninja to compile. A successful build prints papermario.z64: OK, confirming the output matches the original ROM.
4

Pick a function and match it

Choose an unmatched function from ver/us/asm/nonmatchings/, use mips_to_c to generate a C scaffold, then use diff.py to match it.

Project highlights

EVT scripting system

A custom bytecode interpreter used for all in-game events, cutscenes, and battle scripts.

Game systems reference

Documented battle, world, NPC, effects, and audio subsystems.

Data reference

Complete reference for types, enums, structs, and save data layouts.

Contributing guide

Everything you need to contribute matched functions and documentation.
This project requires a legally-obtained copy of Paper Mario (N64). ROMs are not provided by the project.

Build docs developers (and LLMs) love