All Projects → pm-reverse-engineering → papermario_source

pm-reverse-engineering / papermario_source

Licence: other
Current progress on decompiling Paper Mario

Programming Languages

Dockerfile
14818 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to papermario source

PMMasterQuest
Take Paper Mario 64, buff old and new enemies to absurd levels, then rebalance Mario's overpowered strategies, and you've got one of the most difficult hacks of all time: Paper Mario Master Quest. The Discord:
Stars: ✭ 58 (+107.14%)
Mutual labels:  nintendo-64, paper-mario-64
validating-binary-decompilation
Scalable Validator for Binary Lifters
Stars: ✭ 41 (+46.43%)
Mutual labels:  decompilation
awesome-n64-development
A curated list of Nintendo 64 development resources including toolchains, documentation, emulators, example code, and more
Stars: ✭ 210 (+650%)
Mutual labels:  nintendo-64
doc
Design documents related to the decompilation pipeline.
Stars: ✭ 23 (-17.86%)
Mutual labels:  decompilation
sead
Decompilation of sead: the standard C++ library for first-party Nintendo games
Stars: ✭ 91 (+225%)
Mutual labels:  decompilation
BlueRetro
Multiplayer Bluetooth controllers adapter for retro video game consoles
Stars: ✭ 520 (+1757.14%)
Mutual labels:  nintendo-64
pikmin
A decompilation of Pikmin brought to you by fans of the series.
Stars: ✭ 43 (+53.57%)
Mutual labels:  decompilation
smashtierlist
🎮⚡️ Popular tier lists for Super Smash Bros. series
Stars: ✭ 40 (+42.86%)
Mutual labels:  nintendo-64
goose64
untitled goose game demake for nintendo 64
Stars: ✭ 62 (+121.43%)
Mutual labels:  nintendo-64
angrylion-rdp-plus
A low-level N64 video emulation plugin, based on the pixel-perfect angrylion RDP plugin with some improvements.
Stars: ✭ 143 (+410.71%)
Mutual labels:  nintendo-64
ScriptHawk
A collection of Lua scripts and RAM watches for BizHawk.
Stars: ✭ 69 (+146.43%)
Mutual labels:  nintendo-64
ebsrc
Source code recreation for the game Earthbound
Stars: ✭ 91 (+225%)
Mutual labels:  decompilation
binary-auditing-solutions
Learn the fundamentals of Binary Auditing. Know how HLL mapping works, get more inner file understanding than ever.
Stars: ✭ 61 (+117.86%)
Mutual labels:  decompilation
TML.Patcher
Console application for decompiling, recompiling, packaging, and patching tModLoader's .tmod files at blazing-fast speeds.
Stars: ✭ 38 (+35.71%)
Mutual labels:  decompilation
AutoIt-Obfuscator
AutoIt Obfuscator lets you protect AutoIt script source code against analysis, reverse engineering & decompilation using advanced obfuscation techniques and polymorphic encryption.
Stars: ✭ 31 (+10.71%)
Mutual labels:  decompilation
Cave-Story-Decompilation
Decompilation of Cave Story. Made with IDA Pro
Stars: ✭ 15 (-46.43%)
Mutual labels:  decompilation

This is the source repository for work on decompiling Paper Mario for the Nintendo 64.

Summary of information known

The 2008 Intelligent Systems FTP leak revealed the company used gcc 2.8.1 and binutils 2.9.1 to compile ROMs for the Nintendo 64, with some custom patches.

The patches from the FTP are reproduced here exactly, and they can be applied using the Linux gunzip and patch tools.

As these compilers are very dated, changes in C standards makes them uncompilable by default on modern compilers.

While we don't have a way to compile these in their entirety yet, miscpatches.diff contains two patches that allow cc1 to be built, and so we can compile C into .s (ASM source) files.

Ideally we would then also use the Intelligent Systems binutils to assemble these into .o (object) files, but we don't yet have a method of building this version yet. Until we do, we can use modern binutils to assemble code and hope for accuracy.

Building source for comparison

If you don't want to build gcc yourself, the pipeline for a working cc1 has been set up in the repository Dockerfile. You can either build this Dockerfile yourself, or use the pre-built container on the Docker Hub using:

docker run -it gorialis/is-gcc:latest

Once gcc 2.8.1 is built, you can use it in combination with binutils to generate ASM binary that can be compared to routines in the game ROM:

cpp yourcode.c | gcc-2.8.1/cc1 -o yourcode.s -fomit-frame-pointer -mips2 -O2
mips-linux-gnu-as yourcode.s -o yourcode.o -mips2 -O2
mips-linux-gnu-objdump -dr yourcode.o

This shows the annotated instructions with the binary in hex, so you can compare it to the ROM.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].