├── .gitignore ├── README.md ├── cheat-devices ├── cwcheat.md ├── mkultra.md ├── nitepr.md ├── pspar.md └── tempar.md ├── guides └── ppsspp │ ├── creating-cheats-with-ppsspp │ ├── assets │ │ ├── cheat-engine-determine-cheat-address.png │ │ ├── cheat-engine-determine-user-memory-offset.png │ │ ├── cheat-engine-memmapped.png │ │ ├── cheat-engine-open-process.png │ │ ├── ppsspp-breakpoint-hit.png │ │ ├── ppsspp-determine-user-memory-offset.png │ │ ├── ppsspp-dumping-user-memory.png │ │ ├── ppsspp-rewriting-the-game-logic.png │ │ ├── ppsspp-setting-a-breakpoint.png │ │ └── ps2dis-load-memory-dump.png │ └── creating-cheats-with-ppsspp.md │ └── introduction.md └── other └── button-activators.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /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/cwcheat.md: -------------------------------------------------------------------------------- 1 | ## CWCheat 2 | 3 | ### Description 4 | 5 | CWCheat by weltall was the first universal cheat device for the PSP. Inspired by the PS2 Action Replay code types 6 | this cheat device also supports native PS1 Action Replay codes and homebrew software. 7 | 8 | ### Code types 9 | 10 |
Type | 13 |Description | 14 |
---|---|
Constant RAM Writes | |
18 | Type 0x00 19 | 8-bit 20 | 0XXXXXXX YYYYYYYY
21 | |
22 | Writes byte YY to [XXXXXXX] . |
23 |
26 | Type 0x01 27 | 16-bit 28 | 1XXXXXXX 0000YYYY
29 | |
30 | Writes halfword YYYY to [XXXXXXX] . |
31 |
34 | Type 0x02 35 | 32-bit 36 | 2XXXXXXX 000000YY
37 | |
38 | Writes word YYYYYYYY to [XXXXXXX] . |
39 |
Increment and Decrement Code Types | |
43 | Type 0x03 44 | 8-bit Increment 45 | 301000YY XXXXXXXX
46 | |
47 | Adds YY to the byte stored at [XXXXXXXX] . |
48 |
51 | Type 0x03 52 | 16-bit Increment 53 | 3030YYYY XXXXXXXX
54 | |
55 | Adds YYYY to the halfword stored at [XXXXXXXX] . |
56 |
59 | Type 0x03 60 | 32-bit Increment 61 | 30500000 XXXXXXXX 62 | YYYYYYYY 000000000
63 | |
64 | Adds YYYYYYYY to the word stored at [XXXXXXXX] . |
65 |
68 | Type 0x03 69 | 8-bit Decrement 70 | 302000YY XXXXXXXX
71 | |
72 | Subtracts YY from the byte stored at [XXXXXXXX] . |
73 |
76 | Type 0x03 77 | 16-bit Decrement 78 | 3040YYYY XXXXXXXX
79 | |
80 | Subtracts YYYY from the halfword stored at [XXXXXXXX] . |
81 |
84 | Type 0x03 85 | 32-bit Decrement 86 | 30600000 XXXXXXXX 87 | YYYYYYYY 000000000
88 | |
89 | Subtracts YYYYYYYY from the word stored at [XXXXXXXX] . |
90 |
Conditional Code Types | |
94 | Type 0x0D 95 | 8-bit Equal To 96 | 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 0x0D 103 | 8-bit Not Equal To 104 | 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 0x0D 111 | 8-bit Less Than 112 | 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 0x0D 119 | 8-bit Greater Than 120 | 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 0x0D 127 | 16-bit Equal To 128 | 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 0x0D 135 | 16-bit Not Equal To 136 | 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 0x0D 143 | 16-bit Less Than 144 | 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 0x0D 151 | 16-bit Greater Than 152 | 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 0x0E 160 | 8-bit Equal To 161 | 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 0x0E 168 | 8-bit Not Equal To 169 | 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 0x0E 176 | 8-bit Less Than 177 | 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 0x0E 184 | 8-bit Greater Than 185 | 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 0x0E 192 | 16-bit Equal To 193 | 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 0x0E 200 | 16-bit Not Equal To 201 | 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 0x0E 208 | 16-bit Less Than 209 | 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 0x0E 216 | 16-bit Greater Than 217 | 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 0x0D 225 | Address Equal To 226 | DXXXXXXX 4YYYYYYY 227 | 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 0x0D 234 | Address Not Equal To 235 | DXXXXXXX 5YYYYYYY 236 | 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 0x0D 243 | Address Less Than 244 | DXXXXXXX 6YYYYYYY 245 | 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 0x0D 252 | Address Greater Than 253 | DXXXXXXX 7YYYYYYY 254 | 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 0x07 262 | 8-bit OR 263 | 7XXXXXXX 000000YY
264 | |
265 | Writes byte (byte at [XXXXXXX] OR YY ) to [XXXXXXX] . |
266 |
269 | Type 0x07 270 | 8-bit AND 271 | 7XXXXXXX 000200YY
272 | |
273 | Writes byte (byte at [XXXXXXX] AND YY ) to [XXXXXXX] . |
274 |
277 | Type 0x07 278 | 8-bit XOR 279 | 7XXXXXXX 000400YY
280 | |
281 | Writes byte (byte at [XXXXXXX] XOR YY ) to [XXXXXXX] . |
282 |
285 | Type 0x07 286 | 16-bit OR 287 | 7XXXXXXX 000100YY
288 | |
289 | Writes halfword (halfword at [XXXXXXX] OR YYYY ) to [XXXXXXX] . |
290 |
293 | Type 0x07 294 | 16-bit AND 295 | 7XXXXXXX 000300YY
296 | |
297 | Writes halfword (halfword at [XXXXXXX] AND YYYY ) to [XXXXXXX] . |
298 |
301 | Type 0x07 302 | 16-bit XOR 303 | 7XXXXXXX 000500YY
304 | |
305 | Writes halfword (halfword at [XXXXXXX] XOR YYYY ) to [XXXXXXX] . |
306 |
Pointer Code Types | |
310 | Type 0x06 311 | 8-bit 312 | ...
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 0x0D 320 | Button Press 321 | 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 0x0D 328 | Inverse Button Press 329 | 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 0x05 336 | Copy Bytes 337 | 5XXXXXXX ZZZZZZZZ 338 | 0YYYYYYY 0000000
339 | |
340 | Copies ZZZZZZZZ bytes from [XXXXXXX] to [YYYYYYY] . |
341 |
344 | Type 0x04 345 | 32-bit Multi Write 346 | 4XXXXXXX YYYYZZZZ 347 | 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 0x0B 354 | Pause 355 | 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 0x0C 362 | 32-bit Equal To 363 | 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 |
Type | 16 |Description | 17 |
---|---|
Button Press Code Types | |
21 | Type 0xFF 22 | Button Press 23 | 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-bit 19 | 0XXXXXXX YYYYYYYY
20 | |
21 | Writes word YYYYYYYY to [XXXXXXX+offset] . |
22 |
25 | 16-bit 26 | 0XXXXXXX YYYY
27 | |
28 | Writes halfword YYYY to [XXXXXXX+offset] . |
29 |
32 | 8-bit 33 | 0XXXXXXX YY
34 | |
35 | Writes byte YY to [XXXXXXX+offset] . |
36 |
Pointer Code Types | |
40 | Type 0xFFFFFFFF 41 | Load Offset 42 | FFFFFFFF 0XXXXXXX
43 | |
44 | Loads the 32-bit value into the offset .offset = word at [XXXXXXX] . |
45 |
Type | 14 |Description | 15 |
---|---|
Constant RAM Writes | |
19 | Type 0x00 20 | 32-bit 21 | 0XXXXXXX YYYYYYYY
22 | |
23 | Writes word YYYYYYYY to [XXXXXXX+offset] . |
24 |
27 | Type 0x01 28 | 16-bit 29 | 1XXXXXXX 0000YYYY
30 | |
31 | Writes halfword YYYY to [XXXXXXX+offset] . |
32 |
35 | Type 0x02 36 | 8-bit 37 | 2XXXXXXX 000000YY
38 | |
39 | Writes byte YY to [XXXXXXX+offset] . |
40 |
Conditional 32-bit Code Types | |
44 | Type 0x03 45 | Greater Than 46 | 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 0x04 53 | Less Than 54 | 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 0x05 61 | Equal To 62 | 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 0x06 69 | Not Equal To 70 | 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 0x07 78 | Greater Than 79 | 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 0x08 86 | Less Than 87 | 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 0x09 94 | Equal To 95 | 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 0x0A 102 | Not Equal To 103 | 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 0x0B 111 | Load Offset 112 | BXXXXXXX 00000000
113 | |
114 | Loads the 32-bit value into the 'offset'. Offset = word at [XXXXXXX+offset] . |
115 |
118 | Type 0xC4 119 | Safe Data Store 120 | 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 0xC6 127 | Write Offset 128 | C6000000 XXXXXXXX
129 | |
130 | Writes the offset value to [XXXXXXXX] . |
131 |
134 | Type 0xD3 135 | Set Offset 136 | D3000000 XXXXXXXX
137 | |
138 | Sets the offset value to XXXXXXXX . |
139 |
142 | Type 0xDC 143 | Add Offset 144 | DC000000 XXXXXXXX
145 | |
146 | Adds XXXXXXXX to the current offset (Dual Offset). |
147 |
Loop Codes | |
151 | Type 0x0C 152 | 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 0xD0 160 | Terminator 161 | D0000000 00000000
162 | |
163 | Loads the previous execution status. If none exists, the execution status stays at 'execute codes'. | 164 |
167 | Type 0xD1 168 | Loop Execute Variant 169 | 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 0xD2 176 | Loop Execute Variant / Full Terminator 177 | 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 0xD4 185 | Add Value 186 | D4000000 XXXXXXXX
187 | |
188 | Adds XXXXXXXX to the 'Dx data register'. |
189 |
192 | Type 0xD5 193 | Set Value 194 | D5000000 XXXXXXXX
195 | |
196 | Set XXXXXXXX to the 'Dx data register'. |
197 |
200 | Type 0xD6 201 | 32-bit Incrementive Write 202 | D6000000 XXXXXXXX
203 | |
204 | Writes the 'Dx data register' word to [XXXXXXXX+offset] , and increments the offset by 4. |
205 |
208 | Type 0xD7 209 | 16-bit Incrementive Write 210 | D7000000 XXXXXXXX
211 | |
212 | Writes the 'Dx data register' halfword to [XXXXXXXX+offset] , and increments the offset by 2. |
213 |
216 | Type 0xD8 217 | 8-bit Incrementive Write 218 | D8000000 XXXXXXXX
219 | |
220 | Writes the 'Dx data register' byte to [XXXXXXXX+offset] , and increments the offset by 1. |
221 |
224 | Type 0xD9 225 | 32-bit Load 226 | D9000000 XXXXXXXX
227 | |
228 | Loads the word at [XXXXXXXX+offset] and stores it in the'Dx data register'. |
229 |
232 | Type 0xDA 233 | 16-bit Load 234 | DA000000 XXXXXXXX
235 | |
236 | Loads the halfword at [XXXXXXXX+offset] and stores it in the'Dx data register'. |
237 |
240 | Type 0xDB 241 | 8-bit Load 242 | DB000000 XXXXXXXX
243 | |
244 | Loads the byte at [XXXXXXXX+offset] and stores it in the'Dx data register'. |
245 |
Miscellaneous Codes | |
249 | Type 0x0E 250 | Patch Code 251 | EXXXXXXX YYYYYYYY
252 | |
253 | Copies YYYYYYYY bytes from directly after the 0xE code line to [XXXXXXXX+offset] . |
254 |
257 | Type 0x0F 258 | Memory Copy Code 259 | 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 0xCF 267 | Single Select Folder 268 | 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 0xCF 275 | Comment 276 | CF000001 XXXXXXXX
277 | |
278 | Sets the cheat as a comment and the next XXXXXXXX items will also be treated as comments. |
279 |
282 | Type 0xCF 283 | Multi Select Folder 284 | 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 |
---|---|
Conditional 32-bit Code Types | |
18 | Type 0x03 19 | Greater Than 20 | 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 0x04 27 | Less Than 28 | 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 0x05 35 | Equal To 36 | 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 0x06 43 | Not Equal To 44 | 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 0x07 52 | Greater Than 53 | 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 0x08 60 | Less Than 61 | 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 0x09 68 | Equal To 69 | 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 0x0A 76 | Not Equal To 77 | 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 0xD4 85 | Dx Data Operation 86 | 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 0xC1 94 | Call Function with Arguments 95 | C100000Y XXXXXXXX 96 | AAAAAAAA BBBBBBBB 97 | 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 = 0xAAAAAAAA a1 = 0xBBBBBBBB a2 = 0xCCCCCCCC a3 = 0xDDDDDDDD . |
100 |
103 | Type 0xC2 104 | Run Code From Cheat List 105 | 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 0xC5 112 | Counter 113 | 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 |
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 |