Share This Page

Before you read any further, I'd like to state one thing. I am a noob at this and have no experience in programming or coding or anything like that for that matter. I understand basics of HEX and Decimals but that's it. With the recent of help, I now understand button triggers.

So with that out of the way, I would like to know why some gateshark codes have these D code lines and why they don't work without it for some reason (usually crashes my game). I will BOLD them to indicate which code line I am talking about. Here we go.

D1000000 00000000
355A120C 0000FFFF

D1000000 10000000
00725AF0 00000063

D3000000 00000000
13955000 C8C80000

D2000000 00000000
4469001C 000003E7

D2000000 10000000
299A0FF0 FFFFFFFF

Those are the D code lines I am trying to figure out. I've looked around and searched for it but still wound up with no answers. Either they are lost to time, I am not looking them up right, or it's just common knowledge to everyone who knows programming, whatever it is, I can't find any info on what they do. Also why do some have a different value like 10000000 instead of just all zeros 00000000. Any help would be appreciated. Thank you.

Anyway, I used to make gameshark codes way back when I was young.. and it's been a long time. I vaguely recall lines beginning with D as activators/deactivators. They are needed because certain codes require certain memory in games to be activated in order to be available for access. For example, if you're trying to unlock something that isn't available in a game until you progress past a certain checkpoint, entering the cheat can break the game and prevent you from accessing said checkpoint. I know that the Grand Theft Auto series has a lot of cheats like this, where spawning a certain vehicle will cause missions to break and fail.

Also, if you want to make a toggle cheat like infinite health on/off, you need activators/deactivators!

A Type
Format: AXXXXXXXX 0000YYYY
Description: 16bit if not equal to.
Simple: If the value at address 0XXXXXXX is not equal to the value YYYY.
Example:

A23D6B28 00005400

B Type
Format: BXXXXXXX 00000000
Description: Loads offset register.
Simple: Used for pointers, the address at 0XXXXXXX is the offset for all of the following lines.
Example:

B23D6B28 00000000
00002000 0001869F
D2000000 00000000

C Type
Format: C0000000 ZZZZZZZZ
Description: Repeat following lines at specified offset.
Simple: used to write a value to an address, and then continues to write that value Z number of times to all addresses at an offset determined by the (D6, D7, D8, or DC) type following it.
Note: used with the D6, D7, D8, and DC types. C types can not be nested.
Example:

D0 Type
Format: D0000000 00000000
Description: ends most recent conditional.
Simple: type 3 through A are all "conditionals," the conditional most recently executed before this line will be terminated by it.
Example:

D6 Type
Format: D6000000 XXXXXXXX
Description: 32bit store and increment by 4.
Simple: stores the value at address XXXXXXXX and to addresses in increments of 4.
Note: used with the C, D3, and D9 types.
Example:

D3000000 023D6B28

D7 Type
Format: D7000000 XXXXXXXX
Description: 16bit store and increment by 2.
Simple: stores 2 bytes of the value at address XXXXXXXX and to addresses in increments of 2.
Note: used with the C, D3, and DA types.
Example:

D7000000 023D6B28

D8 Type
Format: D8000000 XXXXXXXX
Description: 8bit store and increment by 1.
Simple: stores 1 byte of the value at address XXXXXXXX and to addresses in increments of 1.
Note: used with the C, D3, and DB types.
Example:

DC Type
Format: DC000000 VVVVVVVV
Description: 32bit store and increment by V.
Simple: stores the value at address(es) before it and to addresses in increments of V.
Note: used with the C, D3, D5, D9, D8, DB types.
Example:

DC000000 00000100

E Type
Format:
EXXXXXXX UUUUUUUU
YYYYYYYY YYYYYYYY
Description: writes Y to X for U bytes.
Simple: writes the values at Y (Y can be any length) to addresses starting at X, for U. number of bytes.
Example:

Special Codes: Built outsite the ARCode format, The Gateway Team have given us a little bonus.

DD Type
Format: DD000000 XXXXXXXX
Description: triggers the following code on single or combined keypress. Keypress code stops when terminated with D0 Type code. These can be stacked, i.e. A(01)+Left(20) would be 00000021

Ok, so I want to try to test something here and so far I am not getting it done right. Game just keeps crashing. So I need help. Here is what I have

00707EBC 00000050 <---This Code indicates how much damage I can do to a enemy per hit. If it is left at the value of 50 it basically registers as a MISS. Any value below 50 freezes the game for some reason.

So I want to control how much damage I can do to the enemy per hit. By either increasing or decreasing the value with buttons. For now I'm just focusing on getting the darn thing to increase by 1 value for now. So here is what I put in.

DD000000 00000004 <---Press Select to activate
D3000000 00707EBC <---Makes it so all lines below
00000000 00000001 <---This line states to increase the loaded address value from above line by 1
D0000000 00000000 <---The end

It looks like it may work but then when I press it in game, it freezes. Obviously I am doing something wrong so I can't seem to figure out what it is. Please help.

Pretty sure that line should be a D-type
Probably D4
So D4000000 00000001

Click to expand...

OMG thank you for a response. I felt as if I would never get help. So I have tried it and the game doesn't freeze however it still resorts to last value it was set on. It's as if the code does nothing now

It sets the value to 00. As soon as I hit something of course it crashes. Every time I activate the code via Select, it just keeps setting it to 0 never increasing the value. Is there a way to fix that? Also I have tried it with D2 and removing the third line completely. Still the same.

Ok, so apparently D3000000 XXXXXXXX does not effect the value but the address. So when you put in D3000000 into it, any code lines below will have an addition to the address of the code below for example.

D3000000 00000001
00707EBC 00000050

what this is telling the gateshark to do is add 1 to the address offset not the value offset. So it is basically changing your code into

00707EBD 00000050

Same way if you have done it like this

D3000000 10000000
00707EBC 00000050
0A55443D 0000FFFF

In reality it is just changing the codes to

10707EBC 00000050
1A55443D 0000FFFF

So what really need is something that reads it so here is my code

DD000000 00000008 <---Press Start to Activate
DB000000 00707EBC <---Read the value from that address and store it (in this case DB000000 reads only the 8 byte which is 50, not as 0050 or 00000050)
D4000000 00000001 <---Increase the stored value (50) by the value written in D4000000 (in this case 1)
D8000000 00707EBC <---Write the stored value (51) to the address specified (in this case D8000000 writes only the 8 bytes which is 51, so if you need it to write where it's greater than 8 bytes then use D6 or D7)
D2000000 00000000 <---End current code and erase stored value

There we go now it increases value by 1. If I want to change it where it subtracts 1 then I simply change the third code line to D4000000 FFFFFFFF

So I am curious, why would I ever need to use D3000000 if all it does is just change my address offset? I've seen some people use D3000000 but why would you use it if you can just physically add it to the address itself?