aldostools / IRISMAN

All-in-one backup manager for PlayStation®3. Fork of Iris Manager.
GNU General Public License v3.0
233 stars 22 forks source link

save game tools #2

Closed bucanero closed 4 years ago

bucanero commented 4 years ago

Hello Aldo, nice to meet you

I'm the developer of the "apollo save tool" for PS3 ( https://www.psx-place.com/threads/apollo-save-tool-v0-5-0-released.28124/ )

Some people have asked me about the possibility to add support for the save-game patches from Bruteforce Data to my ps3 tool.

I was wondering if you'd like to share a bit of source code from your app, regarding the parsing / applying of those save-game patches, so I could port it and add it to Apollo?

I don't need the whole source code for the app, just the part to read/parse "ps3patch" files and the code that handles it and apply the changes to the save file.

I'll be happy to add you to the credits in Apollo too, just let me know 😄 thanks!

cheers

p.s.: escribí en inglés por las dudas, pero si prefieres tambien podemos hablar en español 😄

aldostools commented 4 years ago

Hello Damián, formApplyCheats.zip is the module that reads the Patch File Script. It's a form written in Visual Basic 5.

The PatchFile is a custom script that is parsed by the sub ApplyPatch (a large function of 3500 lines).

The Bruteforce SaveData (BSD) tool includes about 1673 scripts for different games.

The tool supports 2 types of syntax:

The code in the sub ApplyPatch has comments about the expected syntax for each line interpreted by the script.

Some BSD Script Commands are related to the different algorithms used for checksums in the saves as a method of tamper prevention and authentication.

The info.txt has some useful notes from SkillerCMP, who helped me (with Gingerbread) to reverse and understand the Game Genie format.

You will find these notes also as comments in the module.

NOTE: The code above is only the patch engine of the Bruteforce SaveData project.

bucanero commented 4 years ago

Hello Aldo, thanks a lot for the code and information! 👍 I'll read and learn from it, then I'll try to "translate" everything to C, and see how it goes 😁

thanks for your help!