My romhacks, fixes and workarounds for PPSSPP games and apps.
Extremely useful (though contradictory)
Additional resources
(not something readily achievable with CWCheat functionality)
Below is correct syntax,
_L 0x6AAAAAAA 0xVVVVVVVV
_L 0x000Y0001 0xIIIIIIII
AAAAAAA = pointer location
IIIIIIII = pointer offset (subtract this value to the address to get effective address)
VVVVVVVV = value to write
Y = 3 for byte write, 4 for halfword and 5 for word)
Must one clear the (fake) offset register after use — No.
Taken from Fired Up (the game),
_C0 Infinite ammo [Enable]
_L 0xE00200A0 0x000BDFE4 // check, 1/2
_L 0xE001AE05 0x000BDFE6 // check, 2/2
_L 0x200BDFE4 0x00000000 // nop
//
_C0 Infinite ammo [Disable]
_L 0xE0020000 0x000BDFE4 // check, 1/2
_L 0xE0010000 0x000BDFE6 // check, 2/2
_L 0x200BDFE4 0xAE0500A0 // orig
//
// 088BDFE4:AE0500A0 // orig
// 088BDFE4:00000000 // mod
//
For PSP game pointers safety checks, there is a CWCheat lifehack discovered/invented in 2024. Since,
0x08000000
.Reference for both points. It is possible to check pointer validity (with very high probability) by,
+0x02
to the pointer address, to position to pointer head (in Little-Endian scenario).0x07FF
, i.e., 0x0800xxxx
or greater.Example,
_C1 Vehicle - Max HP
_L 0xD16A6B66 0x003007FF // check, vehicle ptr head (LE)
_L 0x616A6B64 0x000000FF // set byte to 0xFF.
_L 0x00000001 0x000003E1 // vehicle hp (993)
0x08800000
HEX from it. Or use the following tool,
python3 helpy.py
In more modern PPSSPP builds (for example, PPSSPP 1.13.2) it was observed that some patches are being applied automatically, thus increasing playability, performance, and experience for general players. For example,
If you observe that the patch was already applied, then there is no need to apply it again. Just enjoy it.