Skip to content

A Paper Mario: The Thousand-Year Door Save Exploit

License

Notifications You must be signed in to change notification settings

GameCubeHomebrew/exploit-paper-mario

 
 

Repository files navigation

Credits

  • FIX94 for creating many of the GameCube save file exploits, in which a lot of code from them is used in this project.
  • magcius (aka Jasper) for creating the TTYD save file hacker, which a lot of of this repo's code is based off of. (GitHub repo for this can be found here)
  • AECX for assisting with making necessary modifications to the Makefiles in \OriginalVersion\source\ttyd_hack and \OriginalVersion\source\ttyd_hack\exploit.
  • Sjorec for testing this project's exploit on an actual console.

Overview

This is a simple webpage for hacking a Paper Mario: The Thousand-Year Door GCI save file to load a DOL file from memory card slot A. More specifically, it is set to load a boot.dol file converted to a GCI file via dol2gci (included in the Home Bros. project).

Usage

First, use one of these two methods to apply this project's exploit to a TTYD GCI file:

  1. Download a premade GCI file from the releases page.
  2. Use the Github Pages website to upload your own GCI file, select the file in it to hack, and then click the hack button.

Once you have the GCI file with the exploit, use a Homebrew app such as GCMM to put both this project's GCI file and the boot.dol GCI file onto your memory card. Once the files are on your memory card, you are free to boot up the game like normal. To trigger the exploit, simply load the file at the file select screen (should be named DOL Loader). Upon loading it, the curtain will close like normal, and then the exploit will trigger.

It's also important to note that the other three files can still be used for standard gameplay, as this exploit only affects the file that it is applied to.

Prerequisites

devkitPPC (can be found here)
Node.js (can be found here)
Yarn (can be found here)
ts-node also needs to be installed with Node.js. The details for doing so can be found here.

Building

Once the prerequisites are installed, you must add DEVKITPPC to your environment, in which it should be set to the devkitPPC folder. Once this is done, run make in \OriginalVersion\source\ttyd_hack. This will build three separate bin files, which will be placed into the bin folder. You can also specify specific versions to build by adding additional rules, such as make jp, make us eu, etc. Once the bin files have been built, move them to \Binaries\bin.

After the bin files have been placed, navigate to the root of the ttyd-exploit directory in a command prompt, and run yarn install. If you start getting errors such as Binaries/generate_data.ts:4:23 - error TS2307: Cannot find module 'path', then running yarn install --check-files from the root should resolve them.

The assembly codes that will be injected into the save file are stored at Binaries\bin. To use them, they must be converted to strings. To convert the bin files to strings, run ts-node Binaries\generate_data.ts from the root. This will remake BinaryData.ts, which contains the strings for the bin files. These should then be placed inside of WebVersion\main.ts.

Once the bin file strings are placed, main.js can be rebuilt by running tsc WebVersion\main.ts from the root. Once main.js is rebuilt, it can be placed in the gh-pages branch.

Licenses

The intitial code used in this project is from magcius (aka Jasper), which is licensed under GNU GPL, version 3. Due to most of the code in this project being from them, this project itself is using the same license. However, most of the files and code in \OriginalVersion\source\ttyd_hack and \OriginalVersion\source\ttyd_hack\exploit are from FIX94's save file exploit projects, which are licensed under GNU GPL, version 2. Thus, additional licenses are included in those folders.

About

A Paper Mario: The Thousand-Year Door Save Exploit

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 43.8%
  • JavaScript 25.7%
  • C 12.7%
  • Python 11.0%
  • Makefile 4.1%
  • HTML 1.4%
  • Other 1.3%