├── .gitignore ├── guides └── ppsspp │ ├── creating-cheats-with-ppsspp │ ├── assets │ │ ├── cheat-engine-memmapped.png │ │ ├── ppsspp-breakpoint-hit.png │ │ ├── ps2dis-load-memory-dump.png │ │ ├── cheat-engine-open-process.png │ │ ├── ppsspp-dumping-user-memory.png │ │ ├── ppsspp-setting-a-breakpoint.png │ │ ├── ppsspp-rewriting-the-game-logic.png │ │ ├── ppsspp-determine-user-memory-offset.png │ │ ├── cheat-engine-determine-cheat-address.png │ │ └── cheat-engine-determine-user-memory-offset.png │ └── creating-cheats-with-ppsspp.md │ └── introduction.md ├── README.md ├── cheat-devices ├── mkultra.md ├── nitepr.md ├── tempar.md ├── pspar.md └── cwcheat.md └── other └── button-activators.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/cheat-engine-memmapped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/cheat-engine-memmapped.png -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-breakpoint-hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-breakpoint-hit.png -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/ps2dis-load-memory-dump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/ps2dis-load-memory-dump.png -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/cheat-engine-open-process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/cheat-engine-open-process.png -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-dumping-user-memory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-dumping-user-memory.png -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-setting-a-breakpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-setting-a-breakpoint.png -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-rewriting-the-game-logic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-rewriting-the-game-logic.png -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-determine-user-memory-offset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/ppsspp-determine-user-memory-offset.png -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/cheat-engine-determine-cheat-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/cheat-engine-determine-cheat-address.png -------------------------------------------------------------------------------- /guides/ppsspp/creating-cheats-with-ppsspp/assets/cheat-engine-determine-user-memory-offset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raing3/psp-cheat-documentation/HEAD/guides/ppsspp/creating-cheats-with-ppsspp/assets/cheat-engine-determine-user-memory-offset.png -------------------------------------------------------------------------------- /guides/ppsspp/introduction.md: -------------------------------------------------------------------------------- 1 | ## Introduction 2 | 3 | PPSSPP is a multi-platform opensource PSP emulator by Henrik Rydgård. 4 | 5 | The emulator has a fully functional debugger and is compatible with CWCheat format codes. 6 | 7 | ## Guides 8 | 9 | * [Creating Cheats with PPSSPP](creating-cheats-with-ppsspp/creating-cheats-with-ppsspp.md) 10 | 11 | ## Useful Links 12 | 13 | * [Project Home Page](https://www.ppsspp.org/) 14 | * [Github Page](https://www.github.com/hrydgard/ppsspp) 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## PSP cheat documentation 2 | 3 | ### Cheat devices 4 | 5 | * [CWCheat](cheat-devices/cwcheat.md) 6 | * [MKUltra](cheat-devices/mkultra.md) 7 | * [NitePR](cheat-devices/nitepr.md) 8 | * [PSP Action Replay (PSPAR)](cheat-devices/pspar.md) 9 | * [TempAR](cheat-devices/tempar.md) 10 | 11 | ### Other 12 | 13 | * [Button activators](other/button-activators.md) 14 | 15 | ### Guides 16 | 17 | #### PPSSPP 18 | 19 | * [Introduction](guides/ppsspp/introduction.md) 20 | * [Creating Cheats with PPSSPP](guides/ppsspp/creating-cheats-with-ppsspp/creating-cheats-with-ppsspp.md) 21 | -------------------------------------------------------------------------------- /cheat-devices/mkultra.md: -------------------------------------------------------------------------------- 1 | ## MKUltra 2 | 3 | ### Description 4 | 5 | MKUltra by RedHate is a mod of NitePR which features a number of changes including register highlighting for the 6 | disassembler, POPS support, improved copier, configurable colours, support for more MIPS opcodes and an additional 7 | code type. 8 | 9 | ### Code types 10 | 11 | Supports the same code types as [NitePR](nitepr.md) in addition to the below. 12 | 13 |
| Type | 16 |Description | 17 |
|---|---|
| Button Press Code Types | |
21 | Type 0xFF22 | Button Press23 | FFYYYYYY 0XXXXXXX
24 | |
25 | Checks if YYYYYY == (value at [XXXXXXX]) & YYYYYY.If not, the code(s) following this one are not executed. |
26 |
| Type | 13 |Description | 14 |
|---|---|
| Constant RAM Writes | |
18 | 32-bit19 | 0XXXXXXX YYYYYYYY
20 | |
21 | Writes word YYYYYYYY to [XXXXXXX+offset]. |
22 |
25 | 16-bit26 | 0XXXXXXX YYYY
27 | |
28 | Writes halfword YYYY to [XXXXXXX+offset]. |
29 |
32 | 8-bit33 | 0XXXXXXX YY
34 | |
35 | Writes byte YY to [XXXXXXX+offset]. |
36 |
| Pointer Code Types | |
40 | Type 0xFFFFFFFF41 | Load Offset42 | FFFFFFFF 0XXXXXXX
43 | |
44 | Loads the 32-bit value into the offset.offset = word at [XXXXXXX]. |
45 |
| Button | 22 |Code | 23 |
|---|---|
| User mode flags | 26 ||
| PSP_CTRL_SELECT | 29 |0x00000001 | 30 |
| PSP_CTRL_START | 33 |0x00000008 | 34 |
| PSP_CTRL_UP | 37 |0x00000010 | 38 |
| PSP_CTRL_RIGHT | 41 |0x00000020 | 42 |
| PSP_CTRL_DOWN | 45 |0x00000040 | 46 |
| PSP_CTRL_LEFT | 49 |0x00000080 | 50 |
| PSP_CTRL_LTRIGGER | 53 |0x00000100 | 54 |
| PSP_CTRL_RTRIGGER | 57 |0x00000200 | 58 |
| PSP_CTRL_TRIANGLE | 61 |0x00001000 | 62 |
| PSP_CTRL_CIRCLE | 65 |0x00002000 | 66 |
| PSP_CTRL_CROSS | 69 |0x00004000 | 70 |
| PSP_CTRL_SQUARE | 73 |0x00008000 | 74 |
| Kernel mode flags | 77 ||
| PSP_CTRL_HOME | 80 |0x00010000 | 81 |
| PSP_CTRL_HOLD | 84 |0x00020000 | 85 |
| PSP_CTRL_NOTE | 88 |0x00800000 | 89 |
| PSP_CTRL_SCREEN | 92 |0x00400000 | 93 |
| PSP_CTRL_VOLUP | 96 |0x00100000 | 97 |
| PSP_CTRL_VOLDOWN | 100 |0x00200000 | 101 |
| PSP_CTRL_WLAN_UP | 104 |0x00040000 | 105 |
| PSP_CTRL_REMOTE | 108 |0x00080000 | 109 |
| PSP_CTRL_DISC | 112 |0x01000000 | 113 |
| PSP_CTRL_MS | 116 |0x02000000 | 117 |
| Type | 13 |Description | 14 |
|---|---|
| Conditional 32-bit Code Types | |
18 | Type 0x0319 | Greater Than20 | 3XXXXXXX YYYYYYYY
21 | |
22 | Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. | 23 |
26 | Type 0x0427 | Less Than28 | 4XXXXXXX YYYYYYYY
29 | |
30 | Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. | 31 |
34 | Type 0x0535 | Equal To36 | 5XXXXXXX YYYYYYYY
37 | |
38 | Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. | 39 |
42 | Type 0x0643 | Not Equal To44 | 6XXXXXXX YYYYYYYY
45 | |
46 | Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. | 47 |
| Conditional 16-bit + Masking Code Types | |
51 | Type 0x0752 | Greater Than53 | 7XXXXXXX ZZZZYYYY
54 | |
55 | Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. | 56 |
59 | Type 0x0860 | Less Than61 | 8XXXXXXX ZZZZYYYY
62 | |
63 | Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. | 64 |
67 | Type 0x0968 | Equal To69 | 9XXXXXXX ZZZZYYYY
70 | |
71 | Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. | 72 |
75 | Type 0x0A76 | Not Equal To77 | AXXXXXXX ZZZZYYYY
78 | |
79 | Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. | 80 |
| Data Register Codes | |
84 | Type 0xD485 | Dx Data Operation86 | D400000Y XXXXXXXX
87 | |
88 | Sets the 'Dx data register' to Data = ? XXXXXXXX where ? is determined by Y as follows:0 - add 1 - or 2 - and 3 - xor 4 - logical shift left 5 - logical shift right 6 - rotate right 7 - arithmetic shift right 8 - multiply |
89 |
| Miscellaneous Codes | |
93 | Type 0xC194 | Call Function with Arguments95 | C100000Y XXXXXXXX96 | AAAAAAAA BBBBBBBB97 | CCCCCCCC DDDDDDDD
98 | |
99 | Performs a jal to the function at XXXXXXXX. The number of arguments to pass to the function is specified by Y.a0 = 0xAAAAAAAAa1 = 0xBBBBBBBBa2 = 0xCCCCCCCCa3 = 0xDDDDDDDD. |
100 |
103 | Type 0xC2104 | Run Code From Cheat List105 | C2000000 XXXXXXXX
106 | |
107 | Performs a jal to the function directly after the 0xC2 code line. The length of function is specified by XXXXXXXX. |
108 |
111 | Type 0xC5112 | Counter113 | C5000000 ZZZZYYYY
114 | |
115 | Checks if YYYY == (not ZZZZ < cheat apply count).If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached. |
116 |
| Address | 130 |Return Value | 131 |
|---|---|
| 0x0A000000 | 134 |Pressed buttons. See button activators for possible values. | 135 |
| 0x0A000004 | 138 |X-axis of analog nub. | 139 |
| 0x0A000008 | 142 |Y-axis of analog nub. | 143 |
| Type | 14 |Description | 15 |
|---|---|
| Constant RAM Writes | |
19 | Type 0x0020 | 32-bit21 | 0XXXXXXX YYYYYYYY
22 | |
23 | Writes word YYYYYYYY to [XXXXXXX+offset]. |
24 |
27 | Type 0x0128 | 16-bit29 | 1XXXXXXX 0000YYYY
30 | |
31 | Writes halfword YYYY to [XXXXXXX+offset]. |
32 |
35 | Type 0x0236 | 8-bit37 | 2XXXXXXX 000000YY
38 | |
39 | Writes byte YY to [XXXXXXX+offset]. |
40 |
| Conditional 32-bit Code Types | |
44 | Type 0x0345 | Greater Than46 | 3XXXXXXX YYYYYYYY
47 | |
48 | Checks if YYYYYYYY > (word at [XXXXXXX] or [offset] if [XXXXXXX] is 0)If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of thecode list is reached. |
49 |
52 | Type 0x0453 | Less Than54 | 4XXXXXXX YYYYYYYY
55 | |
56 | Checks if YYYYYYYY < (word at [XXXXXXX] or [offset] if [XXXXXXX] is 0)If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of thecode list is reached. |
57 |
60 | Type 0x0561 | Equal To62 | 5XXXXXXX YYYYYYYY
63 | |
64 | Checks if YYYYYYYY == (word at [XXXXXXX] or [offset] if [XXXXXXX] is 0)If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of thecode list is reached. |
65 |
68 | Type 0x0669 | Not Equal To70 | 6XXXXXXX YYYYYYYY
71 | |
72 | Checks if YYYYYYYY != (word at [XXXXXXX] or [offset] if [XXXXXXX] is 0)If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of thecode list is reached. |
73 |
| Conditional 16-bit + Masking Code Types | |
77 | Type 0x0778 | Greater Than79 | 7XXXXXXX ZZZZYYYY
80 | |
81 | Checks if YYYY > (not ZZZZ < halfword at [XXXXXXX] or [offset] if [XXXXXXX] is 0).If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached. |
82 |
85 | Type 0x0886 | Less Than87 | 8XXXXXXX ZZZZYYYY
88 | |
89 | Checks if YYYY < (not ZZZZ < halfword at [XXXXXXX] or [offset] if [XXXXXXX] is 0).If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached. |
90 |
93 | Type 0x0994 | Equal To95 | 9XXXXXXX ZZZZYYYY
96 | |
97 | Checks if YYYY == (not ZZZZ < halfword at [XXXXXXX] or [offset] if [XXXXXXX] is 0).If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached. |
98 |
101 | Type 0x0A102 | Not Equal To103 | AXXXXXXX ZZZZYYYY
104 | |
105 | Checks if YYYY != (not ZZZZ < halfword at [XXXXXXX] or [offset] if [XXXXXXX] is 0).If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached. |
106 |
| Offset Codes | |
110 | Type 0x0B111 | Load Offset112 | BXXXXXXX 00000000
113 | |
114 | Loads the 32-bit value into the 'offset'. Offset = word at [XXXXXXX+offset]. |
115 |
118 | Type 0xC4119 | Safe Data Store120 | C4000000 XXXXXXXX
121 | |
122 | Sets the offset value to point to the first word of this code. Storing data at offset+0x4 will save over the top of XXXXXXXX. |
123 |
126 | Type 0xC6127 | Write Offset128 | C6000000 XXXXXXXX
129 | |
130 | Writes the offset value to [XXXXXXXX]. |
131 |
134 | Type 0xD3135 | Set Offset136 | D3000000 XXXXXXXX
137 | |
138 | Sets the offset value to XXXXXXXX. |
139 |
142 | Type 0xDC143 | Add Offset144 | DC000000 XXXXXXXX
145 | |
146 | Adds XXXXXXXX to the current offset (Dual Offset). |
147 |
| Loop Codes | |
151 | Type 0x0C152 | C0000000 YYYYYYYY
153 | |
154 | This sets the 'Dx repeat value' to YYYYYYYY and saves the 'Dx nextcode to be executed' and the 'Dx execution status'. Repeat will be executed when a D1/D2 code is encountered.When repeat is executed, the AR reloads the 'next code to be executed' and the 'execution status' from the Dx registers. |
155 |
| Terminator Codes | |
159 | Type 0xD0160 | Terminator161 | D0000000 00000000
162 | |
163 | Loads the previous execution status. If none exists, the execution status stays at 'execute codes'. | 164 |
167 | Type 0xD1168 | Loop Execute Variant169 | D1000000 00000000
170 | |
171 | Executes the next block of codes 'n' times (specified by the 0x0C codetype), but doesn't clear the Dx register upon completion. |
172 |
175 | Type 0xD2176 | Loop Execute Variant / Full Terminator177 | D2000000 00000000
178 | |
179 | Executes the next block of codes 'n' times (specified by the 0x0C codetype), and clears all temporary data. (i.e. execution status, offsets, code C settings, etc.)This code can also be used as a full terminator, giving the same effects to any block of code. |
180 |
| Data Register Codes | |
184 | Type 0xD4185 | Add Value186 | D4000000 XXXXXXXX
187 | |
188 | Adds XXXXXXXX to the 'Dx data register'. |
189 |
192 | Type 0xD5193 | Set Value194 | D5000000 XXXXXXXX
195 | |
196 | Set XXXXXXXX to the 'Dx data register'. |
197 |
200 | Type 0xD6201 | 32-bit Incrementive Write202 | D6000000 XXXXXXXX
203 | |
204 | Writes the 'Dx data register' word to [XXXXXXXX+offset], and increments the offset by 4. |
205 |
208 | Type 0xD7209 | 16-bit Incrementive Write210 | D7000000 XXXXXXXX
211 | |
212 | Writes the 'Dx data register' halfword to [XXXXXXXX+offset], and increments the offset by 2. |
213 |
216 | Type 0xD8217 | 8-bit Incrementive Write218 | D8000000 XXXXXXXX
219 | |
220 | Writes the 'Dx data register' byte to [XXXXXXXX+offset], and increments the offset by 1. |
221 |
224 | Type 0xD9225 | 32-bit Load226 | D9000000 XXXXXXXX
227 | |
228 | Loads the word at [XXXXXXXX+offset] and stores it in the'Dx data register'. |
229 |
232 | Type 0xDA233 | 16-bit Load234 | DA000000 XXXXXXXX
235 | |
236 | Loads the halfword at [XXXXXXXX+offset] and stores it in the'Dx data register'. |
237 |
240 | Type 0xDB241 | 8-bit Load242 | DB000000 XXXXXXXX
243 | |
244 | Loads the byte at [XXXXXXXX+offset] and stores it in the'Dx data register'. |
245 |
| Miscellaneous Codes | |
249 | Type 0x0E250 | Patch Code251 | EXXXXXXX YYYYYYYY
252 | |
253 | Copies YYYYYYYY bytes from directly after the 0xE code line to [XXXXXXXX+offset]. |
254 |
257 | Type 0x0F258 | Memory Copy Code259 | FXXXXXXX YYYYYYYY
260 | |
261 | Copy YYYYYYYY bytes from offset to XXXXXXX (XXXXXXX is fixed, no offsets are added to it). |
262 |
| Folder/Comment Codes | |
266 | Type 0xCF267 | Single Select Folder268 | CF000000 XXXXXXXX
269 | |
270 | Sets the cheat as a single select folder and the next XXXXXXXX items (codes, folders and comments) will be subitems of the current item. |
271 |
274 | Type 0xCF275 | Comment276 | CF000001 XXXXXXXX
277 | |
278 | Sets the cheat as a comment and the next XXXXXXXX items will also be treated as comments. |
279 |
282 | Type 0xCF283 | Multi Select Folder284 | CF000002 XXXXXXXX
285 | |
286 | Sets the cheat as a folder and the next XXXXXXXX items (codes, folders and comments) will be subitems of the current item. |
287 |
| Type | 13 |Description | 14 |
|---|---|
| Constant RAM Writes | |
18 | Type 0x0019 | 8-bit20 | 0XXXXXXX YYYYYYYY
21 | |
22 | Writes byte YY to [XXXXXXX]. |
23 |
26 | Type 0x0127 | 16-bit28 | 1XXXXXXX 0000YYYY
29 | |
30 | Writes halfword YYYY to [XXXXXXX]. |
31 |
34 | Type 0x0235 | 32-bit36 | 2XXXXXXX 000000YY
37 | |
38 | Writes word YYYYYYYY to [XXXXXXX]. |
39 |
| Increment and Decrement Code Types | |
43 | Type 0x0344 | 8-bit Increment45 | 301000YY XXXXXXXX
46 | |
47 | Adds YY to the byte stored at [XXXXXXXX]. |
48 |
51 | Type 0x0352 | 16-bit Increment53 | 3030YYYY XXXXXXXX
54 | |
55 | Adds YYYY to the halfword stored at [XXXXXXXX]. |
56 |
59 | Type 0x0360 | 32-bit Increment61 | 30500000 XXXXXXXX62 | YYYYYYYY 000000000
63 | |
64 | Adds YYYYYYYY to the word stored at [XXXXXXXX]. |
65 |
68 | Type 0x0369 | 8-bit Decrement70 | 302000YY XXXXXXXX
71 | |
72 | Subtracts YY from the byte stored at [XXXXXXXX]. |
73 |
76 | Type 0x0377 | 16-bit Decrement78 | 3040YYYY XXXXXXXX
79 | |
80 | Subtracts YYYY from the halfword stored at [XXXXXXXX]. |
81 |
84 | Type 0x0385 | 32-bit Decrement86 | 30600000 XXXXXXXX87 | YYYYYYYY 000000000
88 | |
89 | Subtracts YYYYYYYY from the word stored at [XXXXXXXX]. |
90 |
| Conditional Code Types | |
94 | Type 0x0D95 | 8-bit Equal To96 | DXXXXXXX 200000YY
97 | |
98 | Checks if YY == (byte at [XXXXXXX]).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
99 |
102 | Type 0x0D103 | 8-bit Not Equal To104 | DXXXXXXX 201000YY
105 | |
106 | Checks if YY != (byte at [XXXXXXX]).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
107 |
110 | Type 0x0D111 | 8-bit Less Than112 | DXXXXXXX 202000YY
113 | |
114 | Checks if YY < (byte at [XXXXXXX]).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
115 |
118 | Type 0x0D119 | 8-bit Greater Than120 | DXXXXXXX 203000YY
121 | |
122 | Checks if YY > (byte at [XXXXXXX]).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
123 |
126 | Type 0x0D127 | 16-bit Equal To128 | DXXXXXXX 0000YYYY
129 | |
130 | Checks if YYYY == (halfword at [XXXXXXX]).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
131 |
134 | Type 0x0D135 | 16-bit Not Equal To136 | DXXXXXXX 0010YYYY
137 | |
138 | Checks if YYYY != (halfword at [XXXXXXX]).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
139 |
142 | Type 0x0D143 | 16-bit Less Than144 | DXXXXXXX 0020YYYY
145 | |
146 | Checks if YYYY < (halfword at [XXXXXXX]).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
147 |
150 | Type 0x0D151 | 16-bit Greater Than152 | DXXXXXXX 0030YYYY
153 | |
154 | Checks if YYYY > (halfword at [XXXXXXX]).If not, the following line is not executed (ie. execution status is set to false for 1 line). |
155 |
| Multiple Skip Conditional Code Types | |
159 | Type 0x0E160 | 8-bit Equal To161 | E1ZZYYYY 0XXXXXXX
162 | |
163 | Checks if YY == (byte at [XXXXXXX]).If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
164 |
167 | Type 0x0E168 | 8-bit Not Equal To169 | E1ZZYYYY 1XXXXXXX
170 | |
171 | Checks if YY != (byte at [XXXXXXX]).If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
172 |
175 | Type 0x0E176 | 8-bit Less Than177 | E1ZZYYYY 2XXXXXXX
178 | |
179 | Checks if YY < (byte at [XXXXXXX]).If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
180 |
183 | Type 0x0E184 | 8-bit Greater Than185 | E1ZZYYYY 3XXXXXXX
186 | |
187 | Checks if YY > (byte at [XXXXXXX]).If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
188 |
191 | Type 0x0E192 | 16-bit Equal To193 | EZZZYYYY 0XXXXXXX
194 | |
195 | Checks if YYYY == (halfword at [XXXXXXX]).If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
196 |
199 | Type 0x0E200 | 16-bit Not Equal To201 | EZZZYYYY 1XXXXXXX
202 | |
203 | Checks if YYYY != (halfword at [XXXXXXX]).If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
204 |
207 | Type 0x0E208 | 16-bit Less Than209 | EZZZYYYY 2XXXXXXX
210 | |
211 | Checks if YYYY < (halfword at [XXXXXXX]).If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
212 |
215 | Type 0x0E216 | 16-bit Greater Than217 | EZZZYYYY 3XXXXXXX
218 | |
219 | Checks if YYYY > (halfword at [XXXXXXX]).If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
220 |
| Address Conditional Code Types | |
224 | Type 0x0D225 | Address Equal To226 | DXXXXXXX 4YYYYYYY227 | ZZZZZZZZ 0000000W
228 | |
229 | 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 |
230 |
233 | Type 0x0D234 | Address Not Equal To235 | DXXXXXXX 5YYYYYYY236 | ZZZZZZZZ 0000000W
237 | |
238 | 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 |
239 |
242 | Type 0x0D243 | Address Less Than244 | DXXXXXXX 6YYYYYYY245 | ZZZZZZZZ 0000000W
246 | |
247 | 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 |
248 |
251 | Type 0x0D252 | Address Greater Than253 | DXXXXXXX 7YYYYYYY254 | ZZZZZZZZ 0000000W
255 | |
256 | 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 |
257 |
| Boolean Code Types | |
261 | Type 0x07262 | 8-bit OR263 | 7XXXXXXX 000000YY
264 | |
265 | Writes byte (byte at [XXXXXXX] OR YY) to [XXXXXXX]. |
266 |
269 | Type 0x07270 | 8-bit AND271 | 7XXXXXXX 000200YY
272 | |
273 | Writes byte (byte at [XXXXXXX] AND YY) to [XXXXXXX]. |
274 |
277 | Type 0x07278 | 8-bit XOR279 | 7XXXXXXX 000400YY
280 | |
281 | Writes byte (byte at [XXXXXXX] XOR YY) to [XXXXXXX]. |
282 |
285 | Type 0x07286 | 16-bit OR287 | 7XXXXXXX 000100YY
288 | |
289 | Writes halfword (halfword at [XXXXXXX] OR YYYY) to [XXXXXXX]. |
290 |
293 | Type 0x07294 | 16-bit AND295 | 7XXXXXXX 000300YY
296 | |
297 | Writes halfword (halfword at [XXXXXXX] AND YYYY) to [XXXXXXX]. |
298 |
301 | Type 0x07302 | 16-bit XOR303 | 7XXXXXXX 000500YY
304 | |
305 | Writes halfword (halfword at [XXXXXXX] XOR YYYY) to [XXXXXXX]. |
306 |
| Pointer Code Types | |
310 | Type 0x06311 | 8-bit312 | ...
313 | |
314 | 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. | 315 |
| Miscellaneous Code Types | |
319 | Type 0x0D320 | Button Press321 | D00000YY 1XXXXXXX
322 | |
323 | 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. |
324 |
327 | Type 0x0D328 | Inverse Button Press329 | D00000YY 3XXXXXXX
330 | |
331 | 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. |
332 |
335 | Type 0x05336 | Copy Bytes337 | 5XXXXXXX ZZZZZZZZ338 | 0YYYYYYY 0000000
339 | |
340 | Copies ZZZZZZZZ bytes from [XXXXXXX] to [YYYYYYY]. |
341 |
344 | Type 0x04345 | 32-bit Multi Write346 | 4XXXXXXX YYYYZZZZ347 | VVVVVVVV WWWWWWWW
348 | |
349 | 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). |
350 |
353 | Type 0x0B354 | Pause355 | B0000000 XXXXXXXX
356 | |
357 | 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. |
358 |
361 | Type 0x0C362 | 32-bit Equal To363 | CXXXXXXX YYYYYYYY
364 | |
365 | 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). |
366 |