PS3 / RPCS3 Support Checklist
A sort of "living issue" to hold and discuss the progress of a PS3 port. Suggestions and PRs very appreciated!
- [x] Build system
- The options here are between ps3toolchain+PSL1GHT, or the PS3 SDK.
- ps3toolchain+PSL1GHT does not support building SPRX files by itself. (WIP Makefile is in the
ps3branch) - PS3 SDK lacks community support, open documentation and uses outdated compilers.
- ps3toolchain+PSL1GHT does not support building SPRX files by itself. (WIP Makefile is in the
- I've decided on using the PS3 SDK for now, for SPRX support - wanting to migrate to ps3toolchain+PSL1GHT ASAP.
- The options here are between ps3toolchain+PSL1GHT, or the PS3 SDK.
- [ ] Plugin loader for CFW PS3.
- A decent way to load the SPRX into memory on a PS3 running CEX CFW. (Evilnat, as a baseline)
- (There do exist raw EBOOT patches, and they will still work with disc games since the EBOOT is in the update.)
- [x] Handling of PS3 platform weirdness.
- PS3 modules have their own table of contents (TOC) in r2, that the game binary is expected to load and restore. If r2 isn't correct, global accesses will fail from either game or plugin context.
- There's more but I haven't got there yet.
- [ ] Address and structure ports for both BLUS 1.05 and BLES 1.06 versions of the game.
- Binaries appear to be mostly identical across the two regions, but they aren't 1:1 so will need double-checking.
- If using PS3 SDK, will also have to account for outdated GCC weirdness compared to the Wii one.
- [ ] Options for RPCS3 and HEN PS3.
- RPCS3 has a JIT cache meaning memory patches will need some extra work.
- HEN PS3 should just need a different syscall to be used and more care about where memory is executed from.
I can confirm the BLES and BLUS binaries are virtually the same. Ghidra found ~19000 matching functions at the same address with the exact same instructions (and I didn't run any checks other than exact instruction match, which likely would have found the rest); there might be some things which are slightly different but for the most part I don't think we will need to worry about trying to hunt down addresses for both.
bit of a correction; HEN doesnt have more memory protections, it has the same protections as OFW. HEN only allows unsigned code exec, since HFW is just OFW with a older webkit thats exploitable. CFW isnt protected because those protections were patched out, which cannot be done on HEN because there are still LV1 protections that dont allow for custom kernels or kernel prx's.