Conversion

Main Page
Back to Hacking FAQs
-GSHI-
-Finding conversion formulas between versions of the same game-
Written by Lazy Bastard
Many people think that if a code is hacked for a specific version of a game (for example, 1.1 instead of 1.0), it cannot be used for the other version. This is entirely untrue. In fact, every game I have encountered with two versions has had a conversion formula, it just needed to be found. You see, when programmers make a game, then release the game again at a later time (with a different version), they do not have the time to try and re-arrange the memory, nor would they waste the time if they did. When making new versions, the most common additions in the new version are in the first few addresses in the memory, to fix loading speed to its max and a few other small things. Well, what this does is push everything else in the memory a certain amount of addresses up, thus making it impossible for you to use the same exact code for both versions. You can, however, convert the code from one version to another, which is what I will discuss.
-How do you find a conversion formula?
First, there must already have been at least a few codes that have been hacked for both versions, but are the same code, for example they are both Infinite Health. Without these, I suppose you could go and hack a couple of codes for both versions yourself, but if you have both versions, why do you want to convert codes anyway? And why do you have both versions, are you some kind of a wierdo fanatic of this game? Now, write those codes down, on top of each other, the first version then the next, and always put one version on top and one on bottom (in the same order each time), so you don't get confused. Now you are to find the difference between the two addresses in each pair. This is when a basic understanding of hex (hexadecimal; it's what the GS, and the Playstation for that matter, thinks in) comes in handy. No, wait! Don't run away! I'm going to explain it! Damn. Oh well, I'll just keep talking to myself. Remember that the last four digits in a code do not make up the address, I've just used them in the examples because it's easier. OK, here are some examples of adding and subtracting in hex:
00000000 0005
+00000000 0005
=00000000 000A
You see, hexadecimal, commonly known as hex, goes from 0 to F, F representing 15. It goes like this, hex on the left, our system on the right:
0=0
1=1
2=2
3=3
4=4
5=5
6=6
7=7
8=8
9=9
A=10
B=11
C=12
D=13
E=14
F=15
10=16
11=17
12=18
13=19
14=20
15=21
16=22
17=23
18=24
19=25
1A=26
1B=27
1C=28
1D=29
1E=30
1F=31
20=32
and so on...
You see? Looking at this, you can see that A represents 10, and so on, therefore if 5+5=10, 5+5=A. OK, now, remember to carry the 1 when you add, just like in 3rd grade, only now you don't carry the 1 until you pass F, instead of 9 like in 3rd grade. For example:
00000000 000B
+00000000 0006
=00000000 0011
As you can see, B+6=11. This is because B represents 11, and 6 of course still represents 6, and if you add 11 and 6, you get 17. Remember, like I said, that F=15. So, if F=15, and you go past F, 10=16, and 11=17. Look back at the chart of digits if you still don't understand. After F in hex, just like after 9 in our numerical system, you go to 10. Understand? If not, try reading the FAQ I wrote on the basics of hexadecimal, or feel free to e-mail any of us at the GSHI staff at any time. OK, another example:
00000000 0014
+00000000 0005
=00000000 0019
This is simple addition; 14+5=19. Here's another:
00000000 0016
+00000000 0007
=00000000 001D
This is a bit more complicated, although simple if you pay attention. 1D=29. 16 (in hex)=22, and 7 is the same in either system. 7+22=29, just as in hex, 7+16=1D. Or, if you don't want to do it this way, or if you are experienced enough in hex (or if you just want to jump in like I did when I was first learning), you could just add in hex, without ever thinking of the regular system equivalent. Here's how I would do that, in really small, easy steps. I would actually skip most of this, but you are learning; you need to see how I got this or that. OK, if you count 7 digits up from 16, it goes like this: 16, 17, 18, 19, 1A, 1B, 1C, 1D. You see? Either way, you simply add them together; the way you do it is your preference, as long as it still has the same outcome.
OK, now subtraction is a bit more trying, but still simple once you get the hang of it. Here's an example:
00000000 000B
-00000000 0004
=00000000 0007
This is because if B represents 11, and 11-4=7, then B-4=7. OK, just in case this is still not clear enough, here are a few more random examples:
00000000 0008
-00000000 0003
=00000000 0005
Simple subtraction in this case. Here's another one like the first:
00000000 000D
-00000000 0002
=00000000 000B
This is because if D=13, and B=11, and 13-2=11, then D-2=11. Therefore D-2=B. Here's another one; a little harder
00000000 0012
-00000000 000A
=00000000 0008
The reason for this is that 12 (in hex)=18, and A=10 , therefore 12-A=8, just as 18-10=8.
OK, now, as I said before, you will not be working with the last four digits in the code, as I have done in the example. You will be adding or subtracting digits from the address. The address is from the third digit in the code to the eighth. For example, the bold, underlined digits in the following code make up the address:
80547891 FF57
Here's another example:
30431265 43F1
The first two digits in the code control the code type, which you can read more about in the FAQ on code types that Code Master wrote (you can download it from the FAQs section of the GSHI, or from the GSCCC, which he owns). The next six digits are the address, like I said, and the last four, which are seperated from the rest, tell the system what information to send to that address, or, simply put, what to do to that address, and are commonly referred to as "the digits".
-OK, enough hex, how do I find the conversion formula?
Hey, you can't talk to me like that. That's it, I'm not telling you. OK, if you remember, I had just told you to stack the two codes, one from one version, one from the other, but both still being the same exact code (meaning both are infinite lives codes, or infinite health codes, the only difference between the two is that they are for different versions of the game), on top of each other. Now, remember, always put them in the same order between versions each time. For example, if the 1.0 code is on top of the 1.1 code in the first pair, the 1.0 code should be on top in every pair. This is common sense, just so you don't get confused when looking for the difference. OK, say your two codes are infinite lives codes; and they are like this:
version 1.0: 80091200 FFFF
version 1.1: 80091220 FFFF
Well, the difference in the two codes is simple: 00000020 0000
If you do not see this, I will make the difference bold:
version 1.0: 80091200 FFFF
version 1.1: 80091220 FFFF
Therefore, to convert a code from version 1.0 to version 1.1 in this game, you simply add 00000020 0000, and to convert from version 1.1 to version 1.0, you subtract
00000020 0000. OK, here's another example:
version 1.0: 80091234 0009
version 1.1: 80091247 0009
Here we have a difference that makes it a bit more complicated to find its exact amount. Think back to your hex training now; look at the things that are different about the codes:
version 1.0: 80091234 0009
version 1.1: 80091247 0009
OK, now what's the difference between 34 and 47? Well, you could find the equivalent of each one in our system. If you want to do it that way, 34=52, and 47=71. The difference between 52 and 71 (subtract 52 from 71) is 19. Remember when you add 19 to 34 (to check if your formula is correct), that you are adding in hex, from 0-F and not from 0-9. Now this is not the method I would use to find the difference, but it is a method that will work. The method I would use, as said before, would be simply finding the distance between the two by counting. Once again, I would not actually write down each digit along the way, but this is so you can see what I'm doing. From 34 to 47: 34, 35, 36, 37, 38, 39, 3A, 3B, 3C, 3D, 3E, 3F, 40, 41, 42, 43, 44, 45, 46, 47. As you can see, the difference is 19 either way, otherwise one of the methods would be incorrect. You must find the difference between a few different pairs, and if all match, you have most likely found the conversion formula. Next you must test the formula by getting a code that is only for the version you do not have, and converting it using your formula, inputting it into your Gameshark, and testing it out. Does it work? If it did, congratulations, you just found your first conversion formula. If not, check to see if your math is right, 9 times out of 10, if the code didn't work, you messed up somewhere in your math.
If you have any further questions on finding conversion formulas, please feel free to e-mail any one of us on the GSHI staff.
Credits
Lazy Bastard-Owner, Chief Admin: lazy@vvm.com
Ace-Administrator: warpudd@yahoo.com
RPGod-Administrator: afireinside@bad-ass-motherfucker.com
TruWizdom-Administrator: CodenGal@Yahoo.com
Munky-Administrator: ccjarvis@yahoo.com
Liquid Man Zero-Administrator: liquid_man_zero@yahoo.com
King Edgar 0-Administrator: kingedgar0@aol.com
DarkSerge-Administrator: bhults@infoblvd.net
SephiRon-Administrator: kool_guy_z@yahoo.com
Admins of the past:
CCV2k: ccv2k@hotmail.com
CzarDragon: czardragon@yahoo.com
HAcKen: HAcKen@HAcKensHAvEn.cjb.net
SolFire: sol_fire@hotmail.com
Alucard: gilgamesh112@hotmail.com
Greets to: ZoMBiE343, Heh[]heh, XKillingAngelX, Rainsphere, DrummerIX, NBCraftsman, floydfan, Eizneckam, MyTru, Magnum, Chip, the GSCCC team, the AGSCC team, and everyone else in the hacking scene.
-GSHI-
The GS Hackers Index©