Case study
Paper Mario: matching Nintendo 64 decompilation for four releases
Reconstructs Paper Mario’s Nintendo 64 code as C source that rebuilds the US, Japanese, PAL and iQue ROMs. The build takes assets and comparison inputs from a user-supplied original ROM, then checks each output against a recorded SHA-1. Mutable project reports list no remaining nonmatching functions, while the README still calls the decompilation work in progress; it is distinct from the PaperBoat native port.
Requirements and limitations
- README calls this a work-in-progress decompilation that builds US, JP, PAL and iQue ROMs, each with a listed SHA-1. For the reviewed commit, papermar.io’s mutable progress CSVs list zero nonmatching functions for all four versions (12,679 for US), and its US page announces 100% for US, PAL and iQue. The output is an N64 ROM, not a native PC executable; HarbourMasters’ PaperBoat port is a separate project.
- At least one independently obtained original ROM matching a listed SHA-1 is required, supplied as that version’s baserom.z64; the Nix route expects all four. configure splits assets from those ROMs, and neither ROMs nor extracted assets are distributed with the source.
- SETUP.md supports Linux, macOS, WSL 2 and Nix. The build uses a Python configure script with ninja, pigment64 from cargo, host MIPS binutils/GCC/cpp, and downloaded compiler builds: project GCC/binutils, GCC 2.7.2, EGCS and statically recompiled IDO 5.3. configure refuses a matching iQue build on macOS because EGCS is unavailable there.
- A matching build ends with sha1sum checks against each version’s checksum.sha1, reporting “papermario.z64: OK”. --non-matching, --modern-gcc and --shift builds skip that check, so they are not matching results. Jenkins builds all four versions plus a shiftable US build and publishes the progress reports; this collection ran none of these checks.
- The reviewed tree has no top-level license file and GitHub detects none, so no reuse grant is established for the source. Original ROMs and extracted assets retain separate rights, and downloaded compilers carry their own terms. The reviewed sources establish no AI or REA attribution, and no runtime reproduction is claimed.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · pmret/papermario · Revision 1104f1f
- SETUP.md GitHub · pmret/papermario · Revision 1104f1f
- CONTRIBUTING.md GitHub · pmret/papermario · Revision 1104f1f
- tools/configure/src/configure/main.py GitHub · pmret/papermario · Revision 1104f1f
- install_compilers.sh GitHub · pmret/papermario · Revision 1104f1f
- install_deps.sh GitHub · pmret/papermario · Revision 1104f1f
- Jenkinsfile GitHub · pmret/papermario · Revision 1104f1f
- progress.py GitHub · pmret/papermario · Revision 1104f1f
- ver/us/checksum.sha1 GitHub · pmret/papermario · Revision 1104f1f
- ver/jp/checksum.sha1 GitHub · pmret/papermario · Revision 1104f1f
- ver/pal/checksum.sha1 GitHub · pmret/papermario · Revision 1104f1f
- ver/ique/checksum.sha1 GitHub · pmret/papermario · Revision 1104f1f
- https://papermar.io/progress-us
- https://papermar.io/reports/progress_us.csv
- https://papermar.io/reports/progress_jp.csv
- https://papermar.io/reports/progress_pal.csv
- https://papermar.io/reports/progress_ique.csv