This shows you the differences between the selected revision and the current version of the page.
| english:code:psp_types 2008/02/07 21:58 | english:code:psp_types 2008/03/25 11:45 current | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== PSP Code types ====== | ||
| + | |||
| + | These code types are supported by the main cheat engine (the one mainly used for psp games, altough there is a version of it for pops games). | ||
| + | |||
| + | These code types were developed starting from the ps2 reference from [[http://www.codemasters-project.net/portal-english/apportal/cmp_plugins/content/content.php?content.23|codemasters Project]] (and this page is based on that page) and then evolved with some new code types requested by code makers. | ||
| + | |||
| + | Here you will find a list of them including a short description. | ||
| + | |||
| + | ===== Constant Write Commands ===== | ||
| + | ^ Code type ^ Format ^ Description | | ||
| + | |8-bit Constant<html><br></html>Write|0x0aaaaaaa 0x000000dd|This command will constantly write the value specified by **dd** to the address specified by **aaaaaaa** | | ||
| + | |16-bit Constant<html><br></html>Write|0x1aaaaaaa 0x0000dddd|This command will constantly write the value specified by **dddd** to the address specified by **aaaaaaa** | | ||
| + | |32-bit Constant<html><br></html>Write|0x2aaaaaaa 0xdddddddd|This command will constantly write the value specified by **dddddddd** to the address specified by **aaaaaaa** | | ||
| + | |||
| + | ===== Increment/Decrement Commands ===== | ||
| + | |||
| + | ^ Code type ^ Format ^ Description | | ||
| + | |8-bit Increment|0x301000nn 0xaaaaaaaa| This command adds the value specified by **nn** to the value stored at the address **aaaaaaaa**| | ||
| + | |8-bit Decrement|0x302000nn 0xaaaaaaaa| This command subtracts the value specified by **nn** to the value stored at the address **aaaaaaaa**| | ||
| + | |16-bit Increment|0x3030nnnn 0xaaaaaaaa| This command adds the value specified by **nnnn** to the value stored at the address **aaaaaaaa**| | ||
| + | |16-bit Decrement|0x3040nnnn 0xaaaaaaaa|This command subtracts the value specified by **nnnn** to the value stored at the address **aaaaaaaa**| | ||
| + | |32-bit Increment|0x30500000 0xaaaaaaaa<html><br></html>0xnnnnnnnn 0x00000000|This command adds the value specified by **nnnnnnnn** to the value stored at the address **aaaaaaaa**| | ||
| + | |32-bit Decrement|0x30600000 0xaaaaaaaa<html><br></html>0xnnnnnnnn 0x00000000|This command subtracts the value specified by **nnnnnnnn** to the value stored at the address **aaaaaaaa**| | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Test Commands ===== | ||
| + | |||
| + | ^ Code type ^ Format ^ Description | | ||
| + | |16-bit Equal|0xDaaaaaaa 0x0000dddd|Only when the value at the address specified by **aaaaaaa**<html><br></html>is equal to the value specified by **dddd** will the next line of code be executed| | ||
| + | |16-bit Not Equal|0xDaaaaaaa 0x0010dddd|Only when the value at the address specified by **aaaaaaa**<html><br></html>is not equal to the value specified by **dddd** will the next line of code be executed| | ||
| + | |16-bit Less Than|0xDaaaaaaa 0x0020dddd|Only when the value at the address specified by **aaaaaaa**<html><br></html>is less than the value specified by **dddd** will the next line of code be executed| | ||
| + | |16-bit Greater Than|0xDaaaaaaa 0x0030dddd|Only when the value at the address specified by **aaaaaaa**<html><br></html>is greater than the value specified by **dddd** will the next line of code be executed| | ||
| + | |8-bit Equal|0xDaaaaaaa 0x200000dd|Only when the value at the address specified by **aaaaaaa**<html><br></html>is equal to the value specified by **dd** will the next line of code be executed| | ||
| + | |8-bit Not Equal|0xDaaaaaaa 0x201000dd|Only when the value at the address specified by **aaaaaaa**<html><br></html>is not equal to the value specified by **dd** will the next line of code be executed| | ||
| + | |8-bit Less Than|0xDaaaaaaa 0x202000dd|Only when the value at the address specified by **aaaaaaa**<html><br></html>is less than the value specified by **dd** will the next line of code be executed| | ||
| + | |8-bit Greater Than|0xDaaaaaaa 0x203000dd|Only when the value at the address specified by **aaaaaaa**<html><br></html>is greater than the value specified by **dd** will the next line of code be executed| | ||
| + | |16-bit Equal:<html><br></html>Multiple Skip|0xEnnndddd 0x0aaaaaaa|Only when the value at the address specified by **aaaaaaa**<html><br></html>is equal to the value specified by **dddd** will the next **nnn** lines of code be executed.<html><br></html>Otherwise, they will be skipped| | ||
| + | |16-bit Not Equal:<html><br></html>Multiple Skip|0xEnnndddd 0x1aaaaaaa|Only when the value at the address specified by **aaaaaaa**<html><br></html>is not equal to the value specified by **dddd** will the next **nnn** lines of code be executed.<html><br></html>Otherwise, they will be skipped| | ||
| + | |16-bit Less Than:<html><br></html>Multiple Skip|0xEnnndddd 0x2aaaaaaa|Only when the value at the address specified by **aaaaaaa**<html><br></html>is less than the value specified by **dddd** will the next **nnn** lines of code be executed.<html><br></html>Otherwise, they will be skipped| | ||
| + | |16-bit Greater Than:<html><br></html>Multiple Skip|0xEnnndddd 0x3aaaaaaa|Only when the value at the address specified by **aaaaaaa**<html><br></html>is greater than the value specified by **dddd** will the next **nnn** lines of code be executed.<html><br></html>Otherwise, they will be skipped| | ||
| + | |8-bit Equal:<html><br></html>Multiple Skip|0xE1nndddd 0x0aaaaaaa|Only when the value at the address specified by **aaaaaaa**<html><br></html>is equal to the value specified by **dddd** will the next **nn** lines of code be executed.<html><br></html>Otherwise, they will be skipped| | ||
| + | |8-bit Not Equal:<html><br></html>Multiple Skip|0xE1nndddd 0x1aaaaaaa|Only when the value at the address specified by **aaaaaaa**<html><br></html>is not equal to the value specified by **dddd** will the next **nn** lines of code be executed.<html><br></html>Otherwise, they will be skipped| | ||
| + | |8-bit Less Than:<html><br></html>Multiple Skip|0xE1nndddd 0x2aaaaaaa|Only when the value at the address specified by **aaaaaaa**<html><br></html>is less than the value specified by **dddd** will the next **nn** lines of code be executed.<html><br></html>Otherwise, they will be skipped| | ||
| + | |8-bit Greater Than:<html><br></html>Multiple Skip|0xE1nndddd 0x3aaaaaaa|Only when the value at the address specified by **aaaaaaa**<html><br></html>is greater than the value specified by **dddd** will the next **nn** lines of code be executed.<html><br></html>Otherwise, they will be skipped| | ||
| + | |Adress Equal|0xDaaaaaaa 0x4bbbbbbb<html><br></html>0xnnnnnnnn 0x0000000Y|Only when the value at the address specified by **aaaaaaa**<html><br></html>is equal to the value at the adress specified by **bbbbbbb**<html><br></html>will the next **nnnnnnnn** line of code be executed.<html><br></html>The way to access the adresses is determined by Y: 0 = 8bit, 1 = 16bit, 2 = 32bit| | ||
| + | |Adress Not Equal|0xDaaaaaaa 0x5bbbbbbb<html><br></html>0xnnnnnnnn 0x0000000Y|Only when the value at the address specified by **aaaaaaa**<html><br></html>is not equal to the value at the adress specified by **bbbbbbb**<html><br></html>will the next **nnnnnnnn** line of code be executed.<html><br></html>The way to access the adresses is determined by Y: 0 = 8bit, 1 = 16bit, 2 = 32bit| | ||
| + | |Adress Less Than|0xDaaaaaaa 0x5bbbbbbb<html><br></html>0xnnnnnnnn 0x0000000Y|Only when the value at the address specified by **aaaaaaa**<html><br></html>is less than the value at the adress specified by **bbbbbbb**<html><br></html>will the next **nnnnnnnn** line of code be executed.<html><br></html>The way to access the adresses is determined by Y: 0 = 8bit, 1 = 16bit, 2 = 32bit| | ||
| + | |Adress Greather Than|0xDaaaaaaa 0x5bbbbbbb<html><br></html>0xnnnnnnnn 0x0000000Y|Only when the value at the address specified by **aaaaaaa**<html><br></html>is Greather than the value at the adress specified by **bbbbbbb**<html><br></html>will the next **nnnnnnnn** line of code be executed.<html><br></html>The way to access the adresses is determined by Y: 0 = 8bit, 1 = 16bit, 2 = 32bit| | ||
| + | |||
| + | ===== Boolean Commands ===== | ||
| + | ^ Code type ^ Format ^ Description | | ||
| + | |8-bit OR|0x7aaaaaaa 0x000000vv|**aaaaaaa** = address (25 bit)| | ||
| + | |8-bit AND|0x7aaaaaaa 0x000200vv|**vv** = value (8/16 bit)| | ||
| + | |8-bit XOR|0x7aaaaaaa 0x000400vv|Performs a bitwise logical operation between given value, **vv**, and the value stored at| | ||
| + | |16-bit OR|0x7aaaaaaa 0x0001vvvv|given address, **aaaaaaa**. Example:| | ||
| + | |16-bit AND|0x7aaaaaaa 0x0003vvvv|0x7048D402 0x005014A9| | ||
| + | |16-bit XOR|0x7aaaaaaa 0x0005vvvv|0x14A9 is XORed to the 16-bit value at address (user ram)+0x0048D402| | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Pointer Commands ===== | ||
| + | ^ Code type ^ Format ^ Description | | ||
| + | |8-bit write|0x6aaaaaaa 0x000000vv<html><br></html>0x0000nnnn 0xiiiiiiii|**aaaaaaa** = address to load 32-bit base from (25 bit)<html><br></html>**vv** = value to store at base + offset (8/16/32 bit)<html><br></html>**qqq** = offset to add to load the base(*4)<html><br></html>**nnnn** = number of times to point (16 bit) (must be 1 for normal pointer codes)<html><br></html>**iiiiiiii** = 32-bit offset to add to base (n = 1)| | ||
| + | |16-bit write|0x6aaaaaaa 0x0000vvvv<html><br></html>0x0001nnnn 0xiiiiiiii|**aaaaaaa** = address to load 32-bit base from (25 bit)<html><br></html>**vvvv** = value to store at base + offset (8/16/32 bit)<html><br></html>**qqq** = offset to add to load the base(*4)<html><br></html>**nnnn** = number of times to point (16 bit) (must be 1 for normal pointer codes)<html><br></html>**iiiiiiii** = 32-bit offset to add to base (n = 1)| | ||
| + | |32-bit write|0x6aaaaaaa 0xvvvvvvvv<html><br></html>0x0002nnnn 0xiiiiiiii|**aaaaaaa** = address to load 32-bit base from (25 bit)<html><br></html>**vvvvvvvv** = value to store at base + offset (8/16/32 bit)<html><br></html>**qqq** = offset to add to load the base(*4)<html><br></html>**nnnn** = number of times to point (16 bit) (must be 1 for normal pointer codes)<html><br></html>**iiiiiiii** = 32-bit offset to add to base (n = 1)| | ||
| + | |8-bit inverse write|0x6aaaaaaa 0x000000vv<html><br></html>0x0003nnnn 0xiiiiiiii|**aaaaaaa** = address to load 32-bit base from (25 bit)<html><br></html>**vv** = value to store at base - offset (8/16/32 bit)<html><br></html>**qqq** = offset to add to load the base(*4)<html><br></html>**nnnn** = number of times to point (16 bit) (must be 1 for normal pointer codes)<html><br></html>**iiiiiiii** = 32-bit offset to subtract to base (n = 1)| | ||
| + | |16-bit inverse write|0x6aaaaaaa 0x0000vvvv<html><br></html>0x0004nnnn 0xiiiiiiii|**aaaaaaa** = address to load 32-bit base from (25 bit)<html><br></html>**vvvv** = value to store at base - offset (8/16/32 bit)<html><br></html>**qqq** = offset to add to load the base(*4)<html><br></html>**nnnn** = number of times to point (16 bit) (must be 1 for normal pointer codes)<html><br></html>**iiiiiiii** = 32-bit offset to subtract to base (n = 1)| | ||
| + | |32-bit inverse write|0x6aaaaaaa 0xvvvvvvvv<html><br></html>0x0005nnnn 0xiiiiiiii|**aaaaaaa** = address to load 32-bit base from (25 bit)<html><br></html>**vvvvvvvv** = value to store at base - offset (8/16/32 bit)<html><br></html>**qqq** = offset to add to load the base(*4) <html><br></html>**nnnn** = number of times to point (16 bit) (must be 1 for normal pointer codes)<html><br></html>**iiiiiiii** = 32-bit offset to subtract to base (n = 1)| | ||
| + | |Extra pointer line (n > 1)<html><br></html>type null |0x00000000 0x00000000|This will do absolutely nothing but it's required for n > 1.<html><br></html>You may need to use this if you want to use the **qqq** in normal pointer codes| | ||
| + | |Extra pointer line (n > 1)<html><br></html>type pointer walk |0xSppppppp 0xSppppppp|This will make you able to go trough various level of pointers S indicates the type of offset to find the next pointer(0x2 +p 0x3 -p)<html><br></html>while p indicates the offset to find the next pointer.| | ||
| + | |Extra pointer line (n > 1)<html><br></html>type multi adress write |0x9sssssss 0xwwwwwwww|**sssssss** = offset to add to base(*bytes of the code type, see above)<html><br></html>**wwwwwwww** = value to sum to starting value (**vvvvvvvv**) each time it's pointed| | ||
| + | |Extra pointer line (n = 2)<html><br></html>type copy byte|0x1sssssss 0x00000000|This extra pointer line will change sligtly the working of the pointer codes as specified above.<html><br></html>**vvvvvvvv** = bytes to be copied<html><br></html>**aaaaaaa** = address to load 32-bit base from (25 bit) (source)<html><br></html> **iiiiiiii** = 32-bit offset to add to base<html><br></html>**qqq** = offset to add to **aaaaaaa** to load the base(*4) (destination)<html><br></html>**sssssss** = 32-bit offset to add to base (destination)| | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Miscellaneous Commands ===== | ||
| + | ^ Code type ^ Format ^ Description | | ||
| + | |Jocker Code|0xD00000dd 0x1nnnnnnn|This command will check the psp controller for the combination specified by **nnnnnnn**.<html><br></html>If equal it will execute the next **dd+1** code lines else it will skip them.<html><br></html>It can check for combinations of up to 3 buttons<html><br></html>and it can be used even with kernel mode only buttons (like note, screen, etc)<html><br></html>Combination are sums of the values found here: [[english:code:Button Codes]]<html><br></html>NOTE: remapsp remaps are ignored by this function.| | ||
| + | |Inverse Jocker Code|0xD00000dd 0x3nnnnnnn|This command will check the psp controller for the combination specified by **nnnnnnn**.<html><br></html>If not equal it will execute the next **dd+1** code lines else it will skip them.<html><br></html>It can check for combinations of up to 3 buttons<html><br></html>and it can be used even with kernel mode only buttons (like note, screen, etc)<html><br></html>Combination are sums of the values found here: [[english:code:Button Codes]]<html><br></html>NOTE: remapsp remaps are ignored by this function.| | ||
| + | |Copy Bytes|0x5aaaaaaa 0xnnnnnnnn<html><br></html>0xbbbbbbbb 0x00000000|This command will copy part of the memory from one area to another<html><br></html>**aaaaaaa** = Address to copy from<html><br></html>**bbbbbbbb** = Address to copy to<html><br></html>**nnnnnnnn** = Number of bytes to copy | | ||
| + | |32-bit Multi-Address<html><br></html>Write/Value increase|0x4aaaaaaa 0xxxxxyyyy<html><br></html>0xdddddddd 0xIIIIIIII|Starting with the address specified by **aaaaaaa**, this code will write to **xxxx** addresses.<html><br></html>The next address is determined by incrementing the current address by (**yyyy** * 4).<html><br></html>The value specified by **dddddddd** is written to each calculated address.<html><br></html>If **IIIIIIII** is different from zero the value defined by **dddddddd**<html><br></html>is increased of **IIIIIIII** at every new adress being patched. This code is also known as "Patch Code"| | ||
| + | |16-bit Multi-Address<html><br></html>Write/Value increase|0x8aaaaaaa 0xxxxxyyyy<html><br></html>0x1000dddd 0xIIIIIIII|Starting with the address specified by **aaaaaaa**, this code will write to **xxxx** addresses.<html><br></html>The next address is determined by incrementing the current address by (**yyyy** * 2).<html><br></html>The value specified by **dddd** is written to each calculated address.<html><br></html>If **IIIIIIII** is different from zero the value defined by **dddd**<html><br></html>is increased of **IIIIIIII** at every new adress being patched. This code is also known as "Patch Code"| | ||
| + | |8-bit Multi-Address<html><br></html>Write/Value increase|0x8aaaaaaa 0xxxxxyyyy<html><br></html>0x000000dd 0xIIIIIIII|Starting with the address specified by **aaaaaaa**, this code will write to **xxxx** addresses.<html><br></html>The next address is determined by incrementing the current address by (**yyyy** * 1).<html><br></html>The value specified by **dd** is written to each calculated address.<html><br></html>If **IIIIIIII** is different from zero the value defined by **dd**<html><br></html>is increased of **IIIIIIII** at every new adress being patched. This code is also known as "Patch Code"| | ||
| + | |Code Stopper|0xCaaaaaaa 0xvvvvvvvv|**aaaaaaa** = address (25 bit)<html><br></html>**vvvvvvvv** = value (32 bit)<html><br></html>All following codes will be executed only, if 32-bit value<html><br></html>at given address, **aaaaaaa**, is equal to given value, **vvvvvvvv**.<html><br></html>Otherwise, they will be skipped. Can be used to exit the code sequence at any point.<html><br></html>To act on all codes (like traditional "Auto Activation"), put it at the top of the code list!<html><br></html>Example:<html><br></html>0xC0153880 0x03E00008<html><br></html>If the 32-bit value 0x03E00008 is at the address (user ram)+0x00153880,<html><br></html>then activate all following codes. Otherwise, do nothing.<html><br></html>NOTE: this affects all the cheats entered after the one with this code as<html><br></html>it stops the execution of the cheat engine till the next loop| | ||
| + | |Time Command|0xB0000000 0xnnnnnnnn|**nnnnnnnn** = delay value (32 bit)<html><br></html>Delay putting on all following codes for v cycles; effect varies between games and loaded prxs.<html><br></html>To act on all codes, put it at the top of the code list!<html><br></html>0xB0000000 0x10000000<html><br></html>Loop is executed 0x10000000 times.<html><br></html>NOTE: this will stop other cheats after it in the cheat list| | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Credits ===== | ||
| + | Credit to<html><br></html> | ||
| + | weltall<html><br></html> | ||
| + | [[http://hellion00.thegfcc.com]]<html><br></html> | ||
| + | [[http://www.codemasters-project.net/|Codemasters-Projects (CMP)]]<html><br></html> | ||
| + | Xploder Freaxs (XFX) | ||