The Art of Hacking... to CHEAT!... Part 1
Saying that makes some people cry foul (cheating) or scream in terror (hacking). For the first group, your cause is just, although finding those codes can be a challenge by itself. Second group, don't worry, unless you *really* hate math! This, the first part of two, introduces hacking in general. The second part will use this here to show you how to actually make your own codes.
The method of cheating on ZSNES, and similar cheating software, is to change a certain memory address location to a certain value. For the SNES, these codes are usually called PAR (Pro-Action Replay) or Game Genie codes, for they are the ones who first came up with the idea. Game Genie has some limitations and modify the code a bit, where PAR codes are considered better and strait forward. If you have a favorite game, go to GameFAQs.com or do a websearch for those PAR codes. It should look something like this:
7E2042FF
Now what in the heck does that mean? The first six digits is the memory location. The last two is the value you want in that location. So you want a value of 'FF' in memory location '7E2042'.
"Wait!", you might say. "How can 'FF' be a value?" This is what stop many from continuing, and why this part deals exclusively on it: hexadecimal numbers. (Oh I can hear the screams now!) Counting in hex is like counting with our number system except it goes up to 16 instead of 10. Counting from 0 to 9 is as usual. But that is when the similarity ends.
- 10 becomes A
- 11 becomes B
- 12 becomes C
- 13 becomes D
- 14 becomes E
- 15 becomes F
Now let reverse the process, taking a decimal to a hexadecimal. This requires division, using the remainder. Taking 255 as our first example, 255/16 = 15 with a 15 remainder. So it is FF, since F = 15. 99: 99/16 = 6 with a 3 remainder, so it is 63. 15: 15/16 = 0 with a 15 reminder, so it is 0F. Simple, no?
The above is the minimal should understand if you want to hack for cheating. Larger numbers gets more complex, as it takes more memory. Numbers 0 - 255 decimal takes one byte, those two digits. 256 (Hex: 100) to 65,535 (Hex: FFFF) takes up two bytes. The third digit from the right has a decimal value of 256 (FF + 1) and the forth is 4096 (FFF + 1). So ABCD, a 2-byte number since it has 4 digits, equals 10 x 4096 + 11 x 256 + 12 x 16 + 13 = 40,960 + 2816 + 192 + 13 = 43,981. For hacking purposes, all you really need to know is that two bytes is 256 - 65,535 in decimal. And again, three digits has a zero in front to make it four. 256 = 0100 in hex.
Overwhelmed? Okay, start Microsoft Windows' calculator. Click View on the menu and choose scientific. On the top left is choices for hex (16-base), dec (10-base), oct (8-base) and bin (2-base). Make sure dec is selected. Input some number and then choose hex. Now it is in hexadecimal! Now input some new number while it is in hex mode. Go ahead an use at least one of the A-F digits. Choose dec and see what you inputted.
Breathing easier now? If you want to use this, and I certainly don't blame you, just remember to put a '0' in front if there is an odd number of hexadecimal digits and that each two digit equals one byte. Also, there is one more thing I have to tell ya.
As I mentioned, PAR codes are made up of two parts: memory location and the value. If the value you want takes up more that one byte, you will have to modify the hex value a little bit. Lets use 03E7 as an example, which is 999 in decimal, a very common number in several games. Lets say you did a search (which will be explained in part 2) and find the memory location is... oh... 7E0FD2. This is again just the location; the hex value has no significance, although many numbers grouped together in the game is also grouped together in its memory locations. Since this is a 2-byte number, it takes up two memory locations: 7E0FD2 and 7E0FD3. The first byte is the 'E7'. The second byte is the '03'. So the code you should use is:
7E0FD2E7
7E0FD303
I mention this because the two bytes are reversed. The 'E7' comes before the '03', not the other way around. If you do, the game will read it not as 03E7 but E703, or 59,139 in decimal! If 999 is the max number, this could cause it to crash (!!!) or roll it over from 999 to 0 again and again tell it reaches 59,139... which I think comes out to be 139.
0 Comments:
Post a Comment
<< Home