Case study
PaperBoat: a native Paper Mario port built on the decompilation
Compiles Paper Mario decompilation sources, credited to the pmret and Paper Mario DX projects, into a native US-version application on libultraship. Torch converts the user’s own ROM into a local asset archive, and the port adds rendering backends, enhancements and archive-based mods. Desktop releases are published, while Android, iOS and web builds are documented on the development branch.
Requirements and limitations
- The reviewed develop snapshot follows release 1.0.3 (2026-10-11), whose packages cover Windows, Linux and macOS. CMake compiles the decompilation’s game C sources for VERSION_US with port code replacing the N64 boot and most OS layers. This is a native port that deliberately adds enhancements and fixes, not a matching ROM build or a static recompilation.
- Requires the user’s US Paper Mario ROM with the SHA-1 listed in the README; config.yml carries recipes for that hash only, and the README states no copyrighted assets are included. Torch generates the pm64.o2r game archive on the user’s machine or device; that archive never ships with the app.
- Source builds need the Torch and libultraship submodules, CMake 3.24+, Ninja and C99/C++20 compilers. Windows uses Visual Studio 2022 with clang-cl, because plain MSVC cl.exe is unsupported for the C99 decompilation sources. Renderers are DirectX 11, OpenGL and Metal. Android arm64-v8a, iOS 16.3+ and Emscripten builds are documented, with scripting and native mods disabled there.
- The CI workflow builds Linux, Windows, macOS, iOS, Android and web artifacts and checks package contents; the platform guide states CI never touches a ROM, and its named desktop check script is absent from the reviewed tree. Nightly builds are labeled playtest-only with expected bugs and crashes. No gameplay-equivalence or performance results are reported, and this collection ran nothing.
- The repository carries CC0-1.0 text, but GitHub detects no license for the credited pmret and Paper Mario DX repositories, and submodules have separate terms; the CC0 file is not treated as a grant over inherited code or game content. The README says AI-assisted pull requests are accepted under a HarbourMasters policy; that establishes no REA use or measured AI contribution.
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 · HarbourMasters/PaperBoat · Revision d98b4b6
- docs/BUILDING.md GitHub · HarbourMasters/PaperBoat · Revision d98b4b6
- docs/android-ios-web.md GitHub · HarbourMasters/PaperBoat · Revision d98b4b6
- CMakeLists.txt GitHub · HarbourMasters/PaperBoat · Revision d98b4b6
- config.yml GitHub · HarbourMasters/PaperBoat · Revision d98b4b6
- .gitmodules GitHub · HarbourMasters/PaperBoat · Revision d98b4b6
- .github/workflows/build.yml GitHub · HarbourMasters/PaperBoat · Revision d98b4b6
- LICENSE GitHub · HarbourMasters/PaperBoat · Revision d98b4b6
- https://github.com/HarbourMasters/PaperBoat/releases/tag/1.0.3