Code Types

From Wiki - GameHacking.org
Revision as of 06:21, 24 November 2008 by Ace (talk | contribs)
Jump to: navigation, search

Explanation of what a code type is, and what they're used for here..


Playstation Systems

Playstation 2

Code Breaker



GameShark (Interact)



GameShark (Mad Catz)



Xploder


Playstation

Gameshark & Action Replay


Note: For all intents and purposes, PlayStation Action Replay code types are identical to the GameShark ones. Only the device version numbers vary.

Type Description Example Other Limitations
30 8-bit Constant Write

3XXXXXXX 00YY
Writes YY to Address XXXXXXX -- none
80 16-bit Constant Write

8XXXXXXX ZZYY
Writes ZZYY to Address XXXXXXX -- none
50 Serial Repeater

5000XXYY ZZZZ
TTTTTTTT VVVV
Writes XX codes, with YY added to the address for each code after TTTTTTTT, and ZZZZ added to the amount for each code after value VVVV
Gameshark 2.2 and higher. May need to seperate pairs of serial codes with a 00000000 0000 code for disk-based gamesharks unknown
E0 8-bit Equal-To Trigger

E0XXXXXX 00YY
Activates next code if address 80XXXXXX is equal to YY Gameshark 2.2 and higher. 60~, including all Cx and comparison types
E1 8-bit different-from trigger

E1XXXXXX 00YY
Activates next code if address 80XXXXXX is different from YY Gameshark 2.2(?) and higher. 60~, including all Cx and comparison types
E2 8-bit Less-Than Trigger

E2XXXXXX 00YY
Activates next code if address 80XXXXXX is less than YY Gameshark 2.2 and higher. 60~, including all Cx and comparison types
E3 8-bit Greater-Than Trigger

E3XXXXXX 00YY
Activates next code if address 80XXXXXX is greater than YY Gameshark 2.2 and higher. 60~, including all Cx and comparison types
D0 16-bit Equal-To Trigger

D0XXXXXX YYYY
Activates next code if address 80XXXXXX is equal to YYYY -- 60~, including all Cx and comparison types
D1 16-bit Different-From Trigger

D1XXXXXX YYYY
Activates next code if address 80XXXXXX is different from YYYY Gameshark 2.2 and higher. 60~, including all Cx and comparison types
D2 16-bit Less-Than Trigger

D2XXXXXX YYYY
Activates next code if address 80XXXXXX is less than YYYY Gameshark 2.2 and higher. 60~, including all Cx and comparison types
D3 16-bit Greater-Than Trigger

D3XXXXXX YYYY
Activates next code if address 80XXXXXX is greater than YYYY Gameshark 2.2 and higher. 60~, including all Cx and comparison types
D4 16-bit Universal Joker

D4000000 YYYY
Activates next code if the button presses equate to YYYY Gameshark 2.41 and higher. Needs a button chart 60~, including all Cx and comparison types
D5 16-bit Codes-on Trigger

D5000000 YYYY
Activates all codes if buton presses equate to YYYY Gameshark 2.41 and higher. Needs a button chart 60~, including all Cx and comparison types
D6 16-bit Codes-off Trigger

D6000000 YYYY
Activates all codes if buton presses equate to YYYY Gameshark 2.41 and higher. Needs a button chart 60~, including all Cx and comparison types
10 16-bit Incrementer

10XXXXXX YYYY
Increments value at address 80XXXXXX by YYYY Gameshark 2.2 and higher. Use with a joker 30~ including all in/decrement types
11 16-bit Decrementer

11XXXXXX YYYY
Decrements value at address 80XXXXXX by YYYY Gameshark 2.2 and higher. Use with a joker 30~ including all in/decrement types
20 8-bit Incrementer

20XXXXXX 00YY
Increments value at address 80XXXXXX by YY Gameshark 2.2 and higher. Use with a joker 30~ including all in/decrement types
21 8-bit Decrementer

21XXXXXX 00YY
Decrements value at address 80XXXXXX by YY Gameshark 2.2 and higher. Use with a joker 30~ including all in/decrement types
C0 Enable All Codes Trigger

C0XXXXXX YYYY
If value at address 80XXXXXX is equal to YYYY, enable all loaded codes in game. Affects all codes, not just the one this line is used in. Gameshark 2.41 or higher. 60~, including all Cx and comparison types
C1 Codes-on Delay

C1000000 YYYY
Delays codes from being on by YYYY time when game starts. 4000-5000 should give 20-30 seconds. -- 60~, including all Cx and comparison types
C2 Copy Memory

C2XXXXXX YYYY
80ZZZZZZ 0000
Copy YYYY bytes from 80XXXXXX to 80ZZZZZZ. Could be used for copying large sets of complex character stats from one character to another, like working-magic-only, if serial repeater won't work -- 30?
1F800??? Special 16-bit write

1F800XXX YYYY
Write YYYY to address 1F800XXX in the scratch pad region. Note that the address range is only from 0x000 to 0x3FF (1024 bytes). GameShark 2.3 and higher. unknown

All 16-bit comparison types are limited to roughly 60 lines per game. 8-bit comparison types and increment/decrement types are limited to around 30 lines per game combined.

Warning: Limitations info is incomplete. Expect exact limits eventually...

Xploder/Codebreaker/X-Terminator


Note: "T" defines the default on/off setting if this code type is the first line in a code. 0 = On, 8 = Off. This does not apply to all types.

Type Description Example Other
3 8-bit Constant Write

3TXXXXXX 00YY
Writes YY to address 80XXXXXXX --
8 16-bit Constant Write

8TXXXXXX YYYY
Writes YYYY to address 80XXXXXXX --
00 32-bit Constant Write

00XXXXXX YYYY
Writes 0000YYYY to address 80XXXXXX. Doesn't use on/off setting.
5 Mass Write (Super code)

5TXXXXXX 0YYY
Writes YYY bytes (from following lines until end of YYY bytes) to address 80XXXXXX. Exact behavior is unknown, may require even addresses only (unconfirmed).
7 16-bit Equal-To Trigger

7TXXXXXX YYYY
Activates next code if value at address 80XXXXXX is equal to YYYY --
9 16-bit Not-Equal-To Trigger

9TXXXXXX YYYY
Activates next code if value at address 80XXXXXX is not equal to YYYY --
F 16-bit Equal-To Global Trigger

FTXXXXXX YYYY
 ??? Activates all codes if value at address 80XXXXXX is equal to YYYY Exact behavior of this type is unconfirmed.
B Serial Repeater
(Slide code)

BXXXYYYY ZZZZ
10TTTTTT VVVV
Writes XX codes, with YY added to the address for each code after TTTTTTTT, and ZZZZ added to the amount for each code after value VVVV. This code is somewhat flawed, in that you must use an even address and other unremembered limitations for it to not crash the device. Converting GameShark serial repeater codes to this type is difficult and unreliable even when done correctly.
6 Mega code

6T?????0 YYYY
AAAAAAAA CCCC
FFFFFFFF 0011
22334455 6677
8899
 ?=Don't care
AA= Break address
YY= Count in bytes to insert at location 40
CC= Coprocessor break type (upper half)
FF= Breakpoint mask (usually FFFFFFFF)
00= bytes of code in address order
11
General usage unknown. The document this description was originally pulled from is missing some text.
4 Slow Motion

4T000000 XXXX
According to Nachbrenner's document: "A 4 code is a slow motion code. Its success rate is not brilliant at the moment. It is simply a loop executed (XXXX << 12) times." It's likely this causes problems if used. Exact effects are unknown.

Despite various documents claiming there is a "Datel compatibility" feature with the GS Dx and Cx codes, this has never been proven. In my own testing, in no cases did those types work. There may also be code types of 1, 2, A, and E that are completely undocumented.

Most information here is based off of Nachbrenner's Advanced Xplorer Codes document.

Gold Finger



Caetla


The only known documentation of the code types for this device are as follows:

[Caetla 0.341 Features list @ Internet Archive]

["New Revolution - Code Master - 07-13-00" @ Internet Archive]

Nintendo Systems

GameCube

Action Replay


Nintendo 64

GameShark


GameBoy Advance

Codebreaker Advance


Type Description Example Other
0 Master Code 1

0000XXXX YYYY
XXXX is the CRC value (the "Game ID" converted to hex)
Flags ("YYYY"):
0008 - CRC Exists (CRC is used to autodetect the inserted game)
0002 - Disable Interupts
--
1 Master Code 2

1XXXXXXX YYYZ
'Z' is the CBA Code Handler Store Address (0-7) [address = ((d << 0x16) + 0x08000100)]
YYY:
100 - 32-bit Long-Branch Type (Thumb)
200 - 32-bit Long-Branch Type (ARM)
300 - 8-bit(?) Long-Branch Type (Thumb)
400 - 8-bit(?) Long-Branch Type (ARM)
002 - Unknown (Odd Effect)
XXXXXXX = ?
--
2 16-bit OR

2XXXXXXX YYYY
OR's value at address XXXXXXX with YYYY. Tested on VBA, not tested on hardware
3 8-bit RAM Write

3XXXXXXX 00YY
Writes YY to address XXXXXXX. --
4 Serial Repeater

4ZZZZZZZ YYYY
AAAAXXXX VVVV
ZZZZZZZ is the address to start at and YYYY is the starting value. AAAA is the value to increment with. XXXX is the number of address iterations. And finally, VVVV is the amount added to each address iteration -
5 Super Code/Memwrite

5XXXXXXX YYYY
ZZZZZZZZ ZZZZ
........
ZZZZZZZZ ZZZZ
XXXXXXX is the address where the writing begins, YYYY is the number of halfwords to write and ZZZZZZZZ ZZZZ are the halfwords.

Example

Say you had the following addresses and wanted to condense them in to something smaller.
02000000 1122
02000002 3344
02000004 5566
02000006 7788
02000008 99AA
0200000C BBCC

First, you must flip the bytes for each halfword. So 1122 becomes 2211, 3344 becomes 4433, etc. Being that CBA alreadly multiplies the number of halfwords to write by 2, divide the number of addresses you have by 2 and use this in place of YYYY. Now, with the Super Code this would come out as:
52000000 0003
22114433 6655
8877AA99 CCBB
Each address is automatically incremented by 2. (Non-changeable)
6 16-bit AND

6XXXXXXX YYYY
AND's value at address XXXXXXX with YYYY. --
7 16-bit If Equal To

7XXXXXXX YYYY
Activates next code if value at address XXXXXXX is equal to YYYY. --
8 16-bit RAM Write

8XXXXXXX YYYY
Writes YYYY to address XXXXXXX. --
9 Change Encryption Seeds (if used as first code)

9YYYYYYY YYYY
Details not researched. --
A 16-bit If Not Equal To

AXXXXXXX YYYY
Activates next code if value at address XXXXXXX is NOT equal to YYYY Must be an even address.
B If Greater Than

BXXXXXXX YYYY
If address XXXXXXX's value is Greater Than YYYY, then activate the next code. --
C If Lesser Than

CXXXXXXX YYYY
If address XXXXXXX's value is Lesser Than YYYY, then activate the next code. --
D Pad Read/Button Activator

D0000020 YYYY
Activates next code if YYYY is equal to the button currently being pressed. --
E Increment/Decrement

EXXXXXXX YYYY
Increase or Decrease the value of XXXXXXX by YYYY. This code type uses value ranges to determine whether to do an increment or decrement. Incremental ranges are: 0000 - 7FFF. Decremental ranges are: 8000 - FFFF. --
F Unknown Unknown --

GameShark Advance (Interact)



GameShark Advance (Mad Catz)



Action Replay



Nintendo DS

Codebreaker Advance



Sega Systems

Dreamcast

GameShark, Codebreaker and Xploder


Type Description Example Other
00 8-bit Constant Write

00XXXXXX
000000YY
Writes YY to address XXXXXX. --
01 16-bit Constant Write

01XXXXXX
0000YYYY
Writes YYYY to address XXXXXX. --
02 32-bit Constant Write

02XXXXXX
YYYYYYYY
Writes YYYYYYYY to address XXXXXX. --
0300 32-bit Group Write

0300XXXX
YYYYYYYY
VVVVVVVV
........
VVVVVVVV
XXXX is the amount of 32-bit writes to perform, YYYYYYYY is the starting address to write to, VVVVVVVV are the values to write.

Example:
03000002 <- Declares two writes are to be done.
8CD00000 <- The address writes are to begin at.
11111111 <- Value to be used in write #1
22222222 <- Value to be used in write #2

This would write 11111111 to 8CD00000, and 22222222 to 8CD00004.
You must have values defined for each 32-bit write this code type makes.
0301 8-bit Incrementive Write

030100YY
XXXXXXXX
Adds YY to value at address XXXXXXXX. --
0302 8-bit Decrementive Write

030200YY
XXXXXXXX
Subtracts YY from value at address XXXXXXXX. --
0303 16-bit Incrementive Write

0303YYYY
XXXXXXXX
Adds YYYY to value at address XXXXXXXX. --
0304 16-bit Decrementive Write

0304YYYY
XXXXXXXX
Subtracts YYYY from value at address XXXXXXXX. --
0305 32-bit Incrementive Write

03050000
XXXXXXXX
YYYYYYYY
Adds YYYYYYYY to value at address XXXXXXXX. --
0306 32-bit Decrementive Write

03060000
XXXXXXXX
YYYYYYYY
Subtracts YYYYYYYY from value at address XXXXXXXX. --
04 32-bit Serial Repeater

04XXXXXX
WWWWZZZZ
YYYYYYYY
XXXXXX is the starting address, WWWW is the amount of writes, ZZZZ is the number to increment the address by (multiplied by 4 by CB/XP), and YYYYYYYY is the 32-bit value. The address MUST end with 0, 4, 8, or C.
05 Memory Copy

05XXXXXX
YYYYYYYY
ZZZZZZZZ
XXXXXX is the to copy from, YYYYYYYY is to copy to, and ZZZZZZZZ is the number of bytes to copy. --
071 Change Decryption Type

071000XX
XX defines the decryption type. Only 00-07 perform valid changes. --
0B Delay Code

0B0XXXXX
Waits XXXXX cycles before enabling ANY codes. Default wait time is 1000 (0x3E8)
0C 32-bit If Equal To - Enable ALL

0C0XXXXX
YYYYYYYY
If value at address 8CXXXXX is equal to YYYYYYYY - then enable ALL codes. --
0D 16-bit Condition

0DXXXXXX
000ZYYYY
XXXXXX is the address used for the condition, Z is the condition type, YYYY is the 16-bit value used for the condition. Z Values (Condition types):
0 - Equal To
1 - Not Equal To
2 - Less Than
3 - Greater Than
0E 16-bit Condition-Skip Multi Lines

0EWWYYYY
0ZXXXXXX
WW is the number of lines to skip, YYYY is the 16-bit value used for the condition, Z is the condition type, XXXXXX is the address used for the condition. Note: Lines are only skipped if the condition returns false.

Z Values (Condition types):
0 - Equal To
1 - Not Equal To
2 - Less Than
3 - Greater Than
0F 16-bit Write Once, on Bootup.

0FXXXXXX
0000YYYY
Writes YYYY to address XXXXXX ONCE, on bootup. The address must be even.


Saturn

GameShark and Pro Action Replay


Type Description Example Other
0 16-bit Write Once

0XXXXXXX YYYY
Writes YYYY to address XXXXXXX only once upon bootup. --
1 16-bit Constant Write

1XXXXXXX YYYY
Writes YYYY to address XXXXXXX. --
3 8-bit Constant Write

3XXXXXXX 00YY
Writes YY to address XXXXXXX. --
D 16-bit If Equal To

DXXXXXXX YYYY
If value at XXXXXXX is equal to YYYY, then execute the next code. --
Enable Code Enable Code

FXXXXXXX YYYY
BXXXXXXX YYYY
-- --