Tonyhax International

PS1 Tonyhax International: Backup Loader For All Japanese, USA, and PAL PS1 Consoles/Early PS2 Consoles v1.6.3

Whenever there is a new tonyhax international update, do I need to update the tonyhax loader only for my memory card, or do I also need to update the save game entry points too?

If it turns out all I need to update is the tonyhax loader related files, then that is good to know, thanks in advance!
So I have a 101 and I put the BIOS-4.4-2000-03-24-A image on my MCP1 and it worked, but when in the TonyHax menu it said my BIOS was v4.5 05/25/00 A. Should I switch to the BIOS-4.5-2000-05-25-A image to avoid any issues even though the other one worked and booted discs fine?

Sorry for the late reply. You are OK using 4.4 on 4.5 BIOS. This is because besides 4.4 displaying 4.4 and 4.5 displaying 4.5 there are 0 differences..
 
Last edited:
New TonyhaxInternationalGameSharkGenerator code to automatically name the raw save file containing GameShark codes based on what files already exist in the directory.

Code:
char * save_file_name_start = "TONYHAXINTGS0"; // TONYHAXINTGS14 is the longest possible string (14 bytes + 1 for termination = 15).
char save_file_name[15];
char save_file_number = 0; // Start with 0. 0-14 range.
char save_file_number_val = 0; // ASCII conversion holder.

void increase_save_file_name()
{
save_file_number++;
save_file_number_val = save_file_number;

// Get ascii for string append.
if(save_file_number < 10) // Single digit handling.
{
save_file_number_val += 0x30; // add 0x30 for 0-9. Ghetto ASCII conversion.
save_file_name[12] = save_file_number_val; // Single digit means we only modify byte 12.
save_file_name[13] = '\0'; // Null terminate byte 13.
} else {
save_file_name[12] = 0x31; // 1 is always the first digit in a double digit number.

if(save_file_number == 10) { // Double digit value handling involes modifying byte 13.
save_file_name[13] = 0x30; // 0 for 10.
} else if(save_file_number == 11) {
save_file_name[13] = 0x31; // 1 for 11.
} else if(save_file_number == 12) {
save_file_name[13] = 0x32; // 2 for 12.
} else if(save_file_number == 13) {
save_file_name[13] = 0x33; // 3 for 13.
} else if(save_file_number == 14) {
save_file_name[13] = 0x34; // 4 for 14.
}
save_file_name[14] = '\0'; // Add null termination.
}
}

void test_open_save_file()
{
save_file = fopen(save_file_name, "r");
}

... in main function ...
for (int i = 0; i < 13; i++) {
save_file_name[i] = save_file_name_start[i];
}

test_open_save_file(); // Read only test for if it exists already.

for(int i = 0; i < 14; i++) // 0-14 range.
{
//printf("%s\n", save_file_name);

if(save_file)
{
fclose(save_file);
} else {
break; // Not even TONYHAXINTGS0 exists yet so we are ok.
}
increase_save_file_name();
test_open_save_file();
if(!save_file)
{
break;
}
}

if(save_file) // If we have a valid file pointer at this point we have too many files.
{
printf("Error: you already have 15 different save files in your current folder. Please run thigsgen in a different folder or delete some of the generated save files in this one\n");
do_exit(1);
}
// At this point we know we can create a save file with a new name.

if((save_file = fopen(save_file_name, "wb+")) == NULL)
{
printf("Error: cannot create %s in the current directory\n", save_file_name); // Open as read write.
do_exit(1);
}

fseek(save_file, 0, SEEK_SET);
 
Last edited:
Fun fact, this is why Tonyhax International exists:

When I played this originally it was 2017 on a 39001 with legit discs. The sequel is amazing in it's own way. But that final fight on the sequel with an OG launch console pushes it very far with that crazy vram setup :O

Favorite game(s) ever. Not even close. IDC if the sequel was a RE clone.
 
All the Dead Or alive 1 and tekken 3 gaming has made me a monster at tekken 8 on PS5 (yes I've entered this decade and bought one before the price hike). New tonyhax international has been in development for awhile now, hopefully I'll get that out this year too. Financially been alot better recently for once so I can get the old setup back together. Plus I have a very, very early SCPH-1000 with one of the lowest serial numbers (53xxxxxx, basically pre launch only internal Sony employees or on launch day people got these) I want to make use of soon.

It's so weird not using an Xbox 360, PS1, PS2, Dreamcast, or a 2012 Mac mini (media machine maxed at 1080p) and actually seeing 4k on this TV.
 
PS3 ps1 dumps, would they also work with TonyHax? none of them seem to able to boot into the memory card manager or cdplayer with Duckstation.
The BIOS shell is a specially created PS-X EXE executable file that is located inside the ROM (without a header). The boot program (Main procedure) loads it into RAM before starting it. The shell starts and takes control if a game disc is not inserted in the drive. Otherwise, control is transferred back to the kernel to load the EXE from disk. Shell code contains many library calls, i.e. It was assembled using PsyQ.


How do you unpack & repack ps1 bios files? all I can find is dumpers nothing that can extract & view the contents.
I know you can run any ps1 bios with ps1_newemu which is the best ps1 bios to use scph5501?

https://emudev.org/2020/03/27/PSX_BIOS.html
https://github.com/grumpycoders/pcsx-redux/tree/main/src/mips/openbios
 

Attachments

  • IMG_20250915_013614~2.jpg
    IMG_20250915_013614~2.jpg
    232.5 KB · Views: 37
  • IMG_20250915_013927~2.jpg
    IMG_20250915_013927~2.jpg
    207 KB · Views: 32
  • IMG_20250915_013810~2.jpg
    IMG_20250915_013810~2.jpg
    184.3 KB · Views: 28
Last edited:
I'm taking a small break before releasing tonyhax international v1.6.0 later this year. I'm currently doing a write up on how PSX copyright protection works… 31 years of history! There is no console that has a more interesting story in regards to so, and all of the failed attempts at band-aiding it to being effective. Believe it or not in some ways at least without hard-modding the PSX security is still undefeated! But many clever workarounds have been figured out by the likes of me and the many before me I credit in this project. All of this will be explained from 1994-2025 in said write up to the best of my ability, as the only softmod developer actively working towards a 100% compatibility with all PSX games… slowly but steady we will win in the end as our target is not moving and I came up with insane automatic tools to defeat even advanced copyright protections. Hopefully by Sunday my document will be finished but there is still much to do and I wish I had done this when it was even fresher in my head.
 
The BitFunX PSX Memcard (Chinese replication memory card using a SD card with support for gameid) is awesome. I even made my own firmware: https://github.com/alex-free/picomemcard to make it work the best with the FreePSXBoot images in Tonayhax International. I don't see any reason to use anything else personally. You get 15 slots per game disc with Tonyhax International with every game due to gameid support....

But here me out, I just bought another one. Why? Well Fallout 3 taught me as a teenager that you want to never overwrite saves. You can get glitches or get to a point where your DOA. I'm obsessed with saves. Sure 15 slots per game is great with the gameid support. But how about we take the community further? Why not, if you have 2 of these game id supported devices, you get THIRTY SLOTS (thats 256KB) per game disc?
 
Last edited:
I've only ever had a problem with one save file using the ps2 ps4 emulator, It auto-saved in-game, reloaded the game or save & my character got stuck within the enviroment walls.
I had to transfer the save to pc, play it on a pc emulator with a god mode / walkthrough walls code, progress, save, then transfer the new fixed save to console.

Maybe you can apply timestamps to saves during each playthrough, during the first save load or write call it could ask you do you want to overwrite or keep a backup of the previous save to another folder before it writes out the new one to your currently loaded memory card on that playthrough.
 
I've only ever had a problem with one save file using the ps2 ps4 emulator, It auto-saved in-game, reloaded the game or save & my character got stuck within the enviroment walls.
I had to transfer the save to pc, play it on a pc emulator with a god mode / walkthrough walls code, progress, save, then transfer the new fixed save to console.

Maybe you can apply timestamps to saves during each playthrough, during the first save load or write call it could ask you do you want to overwrite or keep a backup of the previous save to another folder before it writes out the new one to your currently loaded memory card on that playthrough.
I see you've never played a Bethesda game…

im just stating it's made me paranoid about saves. I also sorta play games in a "human TAS" sort of way. I like having multiple saves I can restart from. Especially in games like resident evil 2 where your saves are limited, sometimes you need to go back and be a better gamer to get into a better position for later.

all this new feature will do is add the ability to double the saves based on game id that is possible now with one such game id device, by supporting 2 concurrently (or also supporting slot 2 game id device only, currently a game id device must be in slot 1 to be detected)
 
Alright, I have decided. One of my New Year's resolutions was to just focus on one project at a time. I've had a half finished build of v1.6.0 of international for the past year on my Mac. It's going to be developed to a point where I'm happy with it, and I'm not going to let feature creep affect it at all. I even solved one of the things "blocking" me from releasing v1.6.0 so no more excuses (that was lib-enigma btw). Sorry for the wait. Sometime this month there will be an update.
 
Ah, can't wait for my resource update to be approved. And I'm glad the sites back up! Was down for a bit... man besides gbatemp this is it forum wise now for this topic. I consider psx.dev dead (it kinda has been for years, been so heavily botted by google crawlers or whatever they couldn't afford the traffic) and the drama that happened there between the higher ups... I'm just glad psx-place exists.I hate reddit so much, forums4ever.

On a side note, I (accidentally?) might have reverse engineered a piece of software I've been wanting to know how it works for years... See there is this thing called Modpar: https://consolecopyworld.com/psx/psx_utils_pn_cnv.shtml (beware if you don't use an ad blocker).

This is the tool that almost ALL of the codes found here: https://consolecopyworld.com/psx/psx_game_codes.shtml where generated from.

Now whats insane is I started working on anti-piracy patch/code generation tools in 2022: https://github.com/alex-free/aprip/releases/tag/v1.0

Me and MottZilla came up with various ways to 'generate' either GameShark codes to bypass protections, or make disc image patches. All unique to our own bypass 'methods' we came up with, that worked with varying success.

Now I noticed when initially making the Tonyhax International anti-piracy bypass system (which is powered by a custom gameshark engine as well as exe writes to loaded exes) that a TON of the codes I found on consolecopyworld looked very similar... I wondered what method they used....

Then one day a few years ago I found out about modpar and was like oh this is how they were doing it. The fun thing about modpar is it's dos watcom executable with no source, You have to run it in Dosbox or it doesn't run at all. And that is... a nightmare for bulk adding games. I never really used it because by time I figured out it existed I had either already added every game consolecopyworld had codes for or I had found a superior bypass developed by myself (less codes/skips portection entirely/works on soft-mods, that's the thing about modpar is it does not guarantee the code will work on soft-mods, just non-stealth dumb mod-chips because well soft-mods were not a thing then)....

So then I have to figure out 2 new obscure Japanese games to add support for Tonyhax International which have no existing bypass codes or anything really online at all, and I think I just figured out how it worked... I can make 'force test commands ok' codes with just a ram dump, and I already made my own 'soft-mod' backdoor trick that has never failed to work on every single game i've encountered, and it's just because I noticed a pattern in a hex editor.

Also same with this insane 'PAL BIOS protection' measure some Japanese games use to block PAL users from playing japanese games on even stealth chipped consoles, which AFAICT I am the only person to find/fix.

Big things to come, I think APv2 is dead :)
 
Back
Top