tonyhax

Software backup loader exploit thing for the Sony PlayStation 1.

Why?

The first question that might pop up on your mind regarding this project is “why the fuck didn’t you just install a modchip?”.

The answer is simple: I didn’t want to mod my mint, boxed PSone, but I didn’t want to leave it rotting on a shelf either.

Also, as an owner of a SCPH-102 console, these are a pain in the ass when it comes to chipping - in addition to the generic SCEx wobble check performed by the CD controller that is easily patchable, the boot menu on these also checks for the region string, which involve installing even more wires and a full sized Arduino Pro Mini or AtMega328 chip to patch the CPU BIOS to play out of region games. Not cool.

On top of that, and unlike Action Replay or swap discs, this does allow CD-DA games and multi-disc games to work flawlessly.

Download

Releases are available at the GitHub releases page.

Source code is also fully available under the WTFPL license at GitHub.

Installation

Since tonyhax v1.4, you have three options:

Method Game exploit FreePSXBoot Boot CD
Needs an original game? Yes No No
Needs an chipped console? No No Yes
Needs a memory card? Yes Yes No
Can the memory card store other saves? Yes No N/A
Time from off to playing a backup ~1m30s ~1m ~1m

Regarding compatibility:

Method Game exploit FreePSXBoot Boot CD
Compatible with European PS1? Yes Yes Yes
Compatible with American PS1? Yes Yes Yes
Compatible with Japanese PS1? No No No
Compatible with European PS2? ≤ SCPH-39000 only No ≤ SCPH-39000 only
Compatible with American PS2? ≤ SCPH-39000 only No ≤ SCPH-39000 only
Compatible with Japanese PS2? No No No

Both behave identically the same feature-wise, so use whichever suits you more.

Game compatibility

First and foremost, the console can only read CD-R media, not CD-RW discs.

Regarding disc protection, a game may use a mix of the following three mechanisms:

The first two ones just rely on the disc being properly copied. Hence, if the game is protected by either of the two protections (which can be checked in redump.org), make sure you use an image that contains the subchannel data (generally on a separate .sub file). If you don’t, the game might behave funny or lock up entirely.

The later is a smarter check and it:

If the module kicks in, you’d get the classic screen of death: Screen displaying the "SOFTWARE TERMINATED" message

Since v1.4, tonyhax can automagically patch these games, and should work with every game that has such a protection in place. If such a game freezes or you get that screen, please file a report on GitHub.

Development

First we’ll have to install the build dependencies for mkpsxiso and tonyhax itself. For Debian/Ubuntu (which also works under Windows’ WSL, which I use for development), this would be:

sudo apt install build-essential gcc-10-mips-linux-gnu cmake libtinyxml2-dev git

Now download, compile and install mkpsxiso:

git clone https://github.com/Lameguy64/mkpsxiso/
cd mkpsxiso
mkdir build
cd build
cmake ..
cmake --build .
sudo cp bin_nix/mkpsxiso /usr/bin/local

Now you’ll need to clone the repository and initialize all the Git submodules:

git clone https://github.com/socram8888/tonyhax/
cd tonyhax
git submodule init
git submodule update --recursive

Finally, to compile, all you need to execute is a single make command, which (hopefully) will result in a .zip file with all the required files created at the root.

Acknowledgements

In alphabetical order:

Also thanks to everyone that’s reported the issues on GitHub and helped me make it better!

On the media

Sorted from older to newer.