Description
Quick summary
Add some kind of support for save files taken from PS3, which are protected with Protected Files Database files.
Details
Saves (and trophies) on PS3 are hashed and encrypted to prevent users from modifying them. This process of encryption, decryption and hashing automatically handled by firmware and thus transparent to games themselves. On RPCS3, this is currently not implemented and save data is saved to and read from dev_hdd0 as-is.
This forces users to use external programs to decrypt their PS3 saves (like Bruteforce Save Data, which is closed source, windows-only and seems unneccessary complicated for casual use). I think we could implement some kind of built-in support for using PS3 save data on the emulator.
Exporting saves from RPCS3 to PS3 would be a nice feature as well, there is multiple use cases for that. That would require encryption and hash calculation, but on top of that our PARAM.SFO generation needs to be adjusted so that it is identical to what PS3 generates. Or if that is not feasible then a conversion routine should be implemented.
Possible ways to implement this support:
- Add import(/export?) feature to save manager for users who want to transfer saves between PS3 and RPCS3.
- Automatically detect PFD files and do same encryption/decryption/hashing steps as is done on real PS3.
- I don't think it is neccessary for us to encrypt every save done on emulator, but it could be implemented if it doesn't take too much resources.
Resources
https://www.psdevwiki.com/ps3/PARAM.PFD (includes two example saves)
https://www.psdevwiki.com/ps3/PS3_Savedata