CWCheat by weltall was the first universal cheat device for the PSP. Inspired by the PS2 Action Replay code types this cheat device also supports native PS1 Action Replay codes and homebrew software.
Type | Description |
---|---|
Constant RAM Writes | |
Type 0x00 8-bit 0XXXXXXX YYYYYYYY
|
Writes byte YY to [XXXXXXX] . |
Type 0x01 16-bit 1XXXXXXX 0000YYYY
|
Writes halfword YYYY to [XXXXXXX] . |
Type 0x02 32-bit 2XXXXXXX 000000YY
|
Writes word YYYYYYYY to [XXXXXXX] . |
Increment and Decrement Code Types | |
Type 0x03 8-bit Increment 301000YY XXXXXXXX
|
Adds YY to the byte stored at [XXXXXXXX] . |
Type 0x03 16-bit Increment 3030YYYY XXXXXXXX
|
Adds YYYY to the halfword stored at [XXXXXXXX] . |
Type 0x03 32-bit Increment 30500000 XXXXXXXX YYYYYYYY 000000000
|
Adds YYYYYYYY to the word stored at [XXXXXXXX] . |
Type 0x03 8-bit Decrement 302000YY XXXXXXXX
|
Subtracts YY from the byte stored at [XXXXXXXX] . |
Type 0x03 16-bit Decrement 3040YYYY XXXXXXXX
|
Subtracts YYYY from the halfword stored at [XXXXXXXX] . |
Type 0x03 32-bit Decrement 30600000 XXXXXXXX YYYYYYYY 000000000
|
Subtracts YYYYYYYY from the word stored at [XXXXXXXX] . |
Conditional Code Types | |
Type 0x0D 8-bit Equal To DXXXXXXX 200000YY
|
Checks if YY == (byte at [XXXXXXX] ).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 8-bit Not Equal To DXXXXXXX 201000YY
|
Checks if YY != (byte at [XXXXXXX] ).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 8-bit Less Than DXXXXXXX 202000YY
|
Checks if YY < (byte at [XXXXXXX] ).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 8-bit Greater Than DXXXXXXX 203000YY
|
Checks if YY > (byte at [XXXXXXX] ).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 16-bit Equal To DXXXXXXX 0000YYYY
|
Checks if YYYY == (halfword at [XXXXXXX] ).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 16-bit Not Equal To DXXXXXXX 0010YYYY
|
Checks if YYYY != (halfword at [XXXXXXX] ).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 16-bit Less Than DXXXXXXX 0020YYYY
|
Checks if YYYY < (halfword at [XXXXXXX] ).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 16-bit Greater Than DXXXXXXX 0030YYYY
|
Checks if YYYY > (halfword at [XXXXXXX] ).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Multiple Skip Conditional Code Types | |
Type 0x0E 8-bit Equal To E1ZZYYYY 0XXXXXXX
|
Checks if YY == (byte at [XXXXXXX] ).If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
Type 0x0E 8-bit Not Equal To E1ZZYYYY 1XXXXXXX
|
Checks if YY != (byte at [XXXXXXX] ).If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
Type 0x0E 8-bit Less Than E1ZZYYYY 2XXXXXXX
|
Checks if YY < (byte at [XXXXXXX] ).If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
Type 0x0E 8-bit Greater Than E1ZZYYYY 3XXXXXXX
|
Checks if YY > (byte at [XXXXXXX] ).If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
Type 0x0E 16-bit Equal To EZZZYYYY 0XXXXXXX
|
Checks if YYYY == (halfword at [XXXXXXX] ).If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
Type 0x0E 16-bit Not Equal To EZZZYYYY 1XXXXXXX
|
Checks if YYYY != (halfword at [XXXXXXX] ).If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
Type 0x0E 16-bit Less Than EZZZYYYY 2XXXXXXX
|
Checks if YYYY < (halfword at [XXXXXXX] ).If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
Type 0x0E 16-bit Greater Than EZZZYYYY 3XXXXXXX
|
Checks if YYYY > (halfword at [XXXXXXX] ).If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
Address Conditional Code Types | |
Type 0x0D Address Equal To DXXXXXXX 4YYYYYYY ZZZZZZZZ 0000000W
|
Checks if value at [XXXXXXX] == value at [YYYYYYY] .If not, the next ZZZZZZZZ lines are not executed (ie. execution status is set to false for ZZZ lines).W = Address type; 0 - 8-bit, 1 - 16-bit, 2 - 32-bit |
Type 0x0D Address Not Equal To DXXXXXXX 5YYYYYYY ZZZZZZZZ 0000000W
|
Checks if value at [XXXXXXX] != value at [YYYYYYY] .If not, the next ZZZZZZZZ lines are not executed (ie. execution status is set to false for ZZZ lines).W = Address type; 0 - 8-bit, 1 - 16-bit, 2 - 32-bit |
Type 0x0D Address Less Than DXXXXXXX 6YYYYYYY ZZZZZZZZ 0000000W
|
Checks if value at [XXXXXXX] < value at [YYYYYYY] .If not, the next ZZZZZZZZ lines are not executed (ie. execution status is set to false for ZZZ lines).W = Address type; 0 - 8-bit, 1 - 16-bit, 2 - 32-bit |
Type 0x0D Address Greater Than DXXXXXXX 7YYYYYYY ZZZZZZZZ 0000000W
|
Checks if value at [XXXXXXX] > value at [YYYYYYY] .If not, the next ZZZZZZZZ lines are not executed (ie. execution status is set to false for ZZZ lines).W = Address type; 0 - 8-bit, 1 - 16-bit, 2 - 32-bit |
Boolean Code Types | |
Type 0x07 8-bit OR 7XXXXXXX 000000YY
|
Writes byte (byte at [XXXXXXX] OR YY ) to [XXXXXXX] . |
Type 0x07 8-bit AND 7XXXXXXX 000200YY
|
Writes byte (byte at [XXXXXXX] AND YY ) to [XXXXXXX] . |
Type 0x07 8-bit XOR 7XXXXXXX 000400YY
|
Writes byte (byte at [XXXXXXX] XOR YY ) to [XXXXXXX] . |
Type 0x07 16-bit OR 7XXXXXXX 000100YY
|
Writes halfword (halfword at [XXXXXXX] OR YYYY ) to [XXXXXXX] . |
Type 0x07 16-bit AND 7XXXXXXX 000300YY
|
Writes halfword (halfword at [XXXXXXX] AND YYYY ) to [XXXXXXX] . |
Type 0x07 16-bit XOR 7XXXXXXX 000500YY
|
Writes halfword (halfword at [XXXXXXX] XOR YYYY ) to [XXXXXXX] . |
Pointer Code Types | |
Type 0x06 8-bit ...
|
TODO... well the TODO has been here since at least 2011... I don't know if I'm ever going to do it at this point. |
Miscellaneous Code Types | |
Type 0x0D Button Press D00000YY 1XXXXXXX
|
Checks if ctrl & XXXXXXX == XXXXXXX .If not, the next YY+1 lines are not executed (ie. execution status is set to false for YY+1 lines). See button activators for possible values. |
Type 0x0D Inverse Button Press D00000YY 3XXXXXXX
|
Checks if ctrl & XXXXXXX != XXXXXXX .If not, the next YY+1 lines are not executed (ie. execution status is set to false for YY+1 lines). See button activators for possible values. |
Type 0x05 Copy Bytes 5XXXXXXX ZZZZZZZZ 0YYYYYYY 0000000
|
Copies ZZZZZZZZ bytes from [XXXXXXX] to [YYYYYYY] . |
Type 0x04 32-bit Multi Write 4XXXXXXX YYYYZZZZ VVVVVVVV WWWWWWWW
|
Starting at address [XXXXXXX] , this code will loop YYYY times.The next address is determined by the incrementing the current address by (ZZZZ * 4). The value written to the address is specified by VVVVVVVV+(WWWWWWWW * loop count) . |
Type 0x0B Pause B0000000 XXXXXXXX
|
Delays the code engine for XXXXXXXX cycles. Will delay the application of all following code lines.Simply performs sceKernelDelayThread(XXXXXXXX) , hopefully this is what CWCheat does when this code type is encountered. |
Type 0x0C 32-bit Equal To CXXXXXXX YYYYYYYY
|
Checks if YYYYYYYY == (word at [XXXXXXX] ).If not, the remainder of the code is not executed (ie. execution status is set to false until the next cheat is reached). |