This is an edited version of The Professional Hacking text by Kong R. Kool

Welcome to the GameShark World. In this document, you will learn several different ways to hack your own codes. These methods range in degree of difficulty from easy to difficult yield various results. As you read this, you are encouraged to practice the methods that are described in this text. This way, you will learn by your activities. There is more than one way to hack codes. These range from guessing, to my secret hacking system, which not everyone will understand, again, as you read, try the idea's mentioned. It has been proven that people learn easier and faster when they are active in a project. It is the author's wish that the material presented here meets the anticipated needs of the reader's wishes to learn to hack GameShark codes. You might even come up with another variation of these methods to hack codes.

Hacking Basics--Know the Code--Offsets
Offsets are typically found by examination of the game memory by using advanced hacking equipment such as a GS Pro, SharkLink or hex decoder on a ROM. Basiclly, an offset is a "memory holder" in which it(usually) holds a byte of memory(a two digit hexadecimal code). If you find an offset that holds the health digits, you can be certain that it isn't the GS code(if you find the health at offset "012203" the GS code won't be "80012203 FFFF".) There is less than a 1% chance of finding an offset and it actually being the code. The reason the offset and the offset digits in a GS code are not the same is this - There are MANY, MANY offsets which are used to tell the platform what type of game it is(size, language, title, checksum values, etc.), and other operation codes which will assign all the offsets to do what they are meant to do. There are offsets that hold the hex values that make up the pictures you see in the game, the coordination of the character you control, mathematical operations... The list goes on and on. The header(tells the machine what type of game your are booting) might take up all offsets past "012203" its self! There is a block of info that tells where the quantifier-offsets(the byte of memory which you change through GS codes) begin. This block is called RAM(Random Access Memory), which does exactly what it says. RAM is memory that will be changed all throughout its processing. Score and health are good examples of RAM, the values for both will be changed while your game is running.
Systems of counting or number base
Decimal
Decimal Notation, based on ten digits, is something you already know. Count to 50 like you normally count. You can count using decimal notation.
Binary
Binary, or dual counting, is based on two digits. It's really easy to understand and use. You'll need to know the following:
There are two characters used in binary - 0,1 (Think of it as a switch).
A "1" means the switch is turned ON.
A "0" means the switch is turned OFF.
That's what binary is, a bunch of switches. I won't go into any more detail about switches now, but will return to this topic later in the text.
A four-digit string of code written in binary is called a "word".(this is also the same in hex[1-digit])
Four Binary Digits(bits - 'Binary digiTS') equals 1 digit hex.
Three bits equals 1 digit octal.
You are going to learn to convert by using multiplication. Math is a great tool to use when working with the GameShark. You can represent the binary word by letting "0110"(8421) = "IJKL" and thus you get "1xL + 2xK + 4xJ + 8xI" = "L+2K+4J+8I"(in algebraic terms). Now substitute the binary back in, you would get "1x0 + 2x1 + 4x1 + 8x0" = "0+2+4+0" which adds up to six. Six is what the hex value was in the beginning. To convert back to binary, use the formula "L+2K+4J+8K", find the numbers which add up to six. In this case, "4 and 2". Remember, "IJKL" = the bit value. Then substitute the binary back in - "1x0 + 2x1 + 4x1 + 8x0" = "0110". Why do that when there's an easier way? Because there is no use in converting when you don't understand why it is done in that way. You will learn an easier way soon, in fact, make one up!
Octal
Octal conversions are the same as hex-to-bit. Only, octal goes up to "7". So the bit value looks like this:
Octal 3
Binary 011
Bit value 421
It is important to understand how to do the number base conversions before continuing. If not, the reader is encouraged to review the material already presented. The Bit Value will NEVER change. The bit value is actually the value assigned for each bit. If you have an 8-bit value, the bit value would look like this: (128)(64)(32)(16)(8)(4)(2)(1). Notice that every time a new bit is added(to the beginning, no doubt), the last bits' value will double. Further explanation is beyond the scope of this text.
Hexadecimal
Hexadecimal is a programming `language' you must know in order to hack GS codes. So, what is it? Hex is what your GameShark codes are written in. There are sixteen characters used in a GS code. The characters are as follows
0,1,2,3,4,5,5,6,7,8,9,A,B,C,D,E,F
Let's learn to count in hex. If you look above, you'll see how to count to fifteen in hex. What's sixteen? "10" is sixteen. By the way, don't say "ten," say, "one, zero" for `10'. Let's see what you've learned(easy, huh?).
What comes after 19?
What comes after 3F?
If you said, "1A" for Question #1, that is correct. If you said, "40" for question #2, you should know how to count in hex!
Octaldecimal
Octaldecimal is just another way to wright binary(like hex), but octal words are longer than hex words. What you've read already is enough to know about octal. You do not need to know octal to hack GS codes.
Ascii
Ascii is what you are looking at right now. ANYTHING that can be typed on the keyboard is ascii. Ascii is useful to know when hacking in my secret way. You don't need to know the assignments for ascii characters, so let's skip this part!

About Most GS Hackers
Most hackers use more than one way to hack. Most know programming languages such as binary/hex/octal, HTML, scripting languages, etc. HTML is included here because many hackers want to use this language to create a website that has all their codes displayed. You don't need to learn any of the things other than binary and hexadecimal to "hack better than the Pros." Here are some ways you can hack(1 star[*] by the name is easy, 2 is harder, etc.)
Guessing****
This isn't easy, because you don't always find a code this way. It's not only troublesome, but risky at some times. Some guessed codes can corrupt game data!

Modifying Codes*
One of the easiest things to do. Change a number on an existing code, you make a new code. (Only works when you have a basis[base code] to work with.)

Looking At The Source[Code]***
Hard, but most effective. Worth a shot.

Using Hacking Equipment*
Another easy way to get codes. It might not be very easy, but it doesn't take much time. Plus, it's the second most effective way to hack.

Porting**
Porting is taking a code from one version of a game, and making it work on another version of that same game. This does not always work. The reason is the same reason that they make more than one version. Possibly to fix a minor bug. So the offsets will be in a higher or lower position, or even moved to a totally different location. You can use the "GS Code Porter" (available at GameShark Universe) to port any code for you. Hence you can make a code before anyone else gets the chance!

Combination Hacking
This isn't rated. All you need to do is hack using two or more methods at once, for a greater chance of finding a code

(!!!!!There is a sleight risk of loosing saved data on your GS when turning the system on and off while guessing or modifying codes. It happened to my PlayStation GS!!!!!) Now, ask yourself, which method am I going to use to hack? When you get your answer, continue on to the next section.

How to guide
a) What do I need?
You need a Game Platform(N64, PSX, etc.), you need a game to hack, and you need a GameShark. You will also need other things to hack in other ways. You will need to use your brain(yeah, there's even MATH involved!). You'll need to read everything in this text.
b) What do I need to Know?
If you've managed to read everything above, then you know about 40% of everything you'll need to know about hacking. The remaining 60% is learning to use hacking equipment and the software for it, among other things.

c) Learn your 'Shark
There are a few things you'll need to know about your GS before we begin hacking. You'll discover how the 'Shark codes work.

This is the layout of all PSX 'Shark codes.
XXYYYYYY ZZZZ
Here are the most common PSX/Saturn/N64 `GS Digits' that you must know (All of the following are theories.)
80 - Default, Used for "regular" codes that need no special FX.
88 - N64 GS Only, Default GSB, Used to activate the code by the GS Button.
81 - These digits activate the 'Shark to make use of 16-bit mode (all four quantifier digits).
D0 - "Flash Code," Used to "flash" the code ONCE, rather than having the effect on all the time. (an example is a code that uses two lines, both use the same base code, the first code starts with "D0" and the second has "80"... The D0 code will be used to "flash" the following 80 code only once. This is mostly used to stop the code from freezing the game. Or to set a starting point[if you use a code that makes the score ALWAYS 255, set a flash code in front of the 80 code and you'll have the score START at 255 and it can still be raised.]

The Hacking Begins
Are you ready to start hacking? Of course you are. If you have skipped directly to this section hoping you can read just this part and think you can be a GameShark code hacker, think again. It is HIGHLY recommended, indeed required that you read everything that has already been presented in this document. If you do not, you won't understand what most of the following states, and you will most likely not be successful in being able to hack GameShark codes.
PlayStation
There are a few Enable Codes needed in PSX games(Crash Bandicoot for example). But I don't understand if the enablers are used for a lock-out, or to fix a small bug. This part of the section is in need of reference. I know a few people that could submit contributions, and I'm sure everyone will greatly appreciate it.
II) The Methods
Here are a few of the many methods used to hack GS codes
Game Trainers - InterAct and Datel have their own trainers. To bad they don't know how to share. You can, however, get a trainer called "PC Comms Link" which will connect your platform to your computer where you can use a hex editor to view the ROM/RAM of your game. You will only be editing the RAM part of your games memory though.

Using Game Trainers
Using these Trainers is rather easy and usually brings up some codes. You will learn how to use the trainers by reading this section. You will learn to hack codes like "Infinite health", "Infinite Ammo", Debug Menus and even "activators".

Using GameShark
Hacking the easy stuff.
The easy stuff is codes that are easily obtained. Such as infinite money, health, and ammo. We will begin. To hack an Infinite Money code, first you must start up the trainer process as a Known Value Search. Now go into the game and take a readout while you have 0 money, select the "Equal To" value as "000". Start the second part of the process. Earn some cash, it doesn't need to be a large sum. Then take a second readout with "Equal To" value as the amount that your cash sum was. Now, when the trainer shows you all possible codes, you can do one of two things. If the amount of possibilities is too high, you can repeat the process. You can return to the game, play around for a while, not earning extra cash. Then do another search. Make sure you search for the SAME value that you cash is. You should find your code in no-time!
For a code like infinite health, you go through the same steps above, only you will choose an unknown value search, since there may be no way of telling what the values will be. Start with full health in step one, and less health in step two. So you choose the "less than" option. and when summarizing the quantifiers, notice that MOST(not all) games with a health bar will recognize full health at "0064"(100) or "00C8"(200). With this in mind, you can find the health code a lot easier!
Now on to infinite lives. Do the same thing you did in the first example. The first step will be the Default amount of lives, and the second will be one life less. Choose the "less than" option for this one. if you started with 3 lives, the first quantifier should be "0003" OR "0002". Since some games start counting at 0 instead of 1, it may be possible that "2" = "3" But it's very rare to see this. And, of course, the second value will be one less than the first. You can always regain an extra life and search for greater than, or search an equal-to just so you can simplify all possibilities.
Another code is Infinite Ammo. This one might be a little trickier. If you take the first readout with 100 bullets, and the second with 50, then you would choose the "less than" option and have the values "100" and "50".
Hacking the intermediate stuff
The intermediate stuff is like "In-Game Cheats", Have weapons/medals/items codes.
If you wanted a code that gave you a weapon or an item, you would first do one unknown search without having the weapon/item. You should repeat the search w/o the item a coupe of time to make sure you have UNDER 1 million(trust me, it's hard to get them under a million. While doing this, you will search for "equal-to in different parts of the game. Then you can grab that item and search again, choose "greater than". The fisrt quantifier SHOULD be "0000" and the second will be "0001 / 0002 / 0004 / 0008 / 0010 / 0020 / 0040 / 0080 / 0100 / 0200 / 0400 / 0800 / 1000 / 2000 / 4000 / 8000". The reason it would have so many is the game uses the switches(described earlier). Only the switches are represented in hex. You need a little luck when hacking a code like this.
For a code like "Activate In-Game Cheats", you will take one known readout w/o the cheat active(search for "0"), and the second search with the cheat active(search for "1"). Good Luck.
Hacking the harder stuff
The hard stuff is like activators, and debug menus. To hack an activator takes a little luck, and some time. First thing you would do is do a known search on the games title screen. Take this readout when NOT pushing any buttons on any controller(search for "0"). During the second search, hold the L Button(PSX users, hold Circle). Now search for the
following:
PSX - "32" NORMAL
PSX - "8192" REVERSE (switch to 16-bit mode)
The two PSX versions are listed because some games use activator quantifiers that are different from the rest of the games. So look for those. When you find the code that you think it is, Put the GS digits "D0" on the code and test it by putting any code after it. When in the game, hold L(or Circle) and the code will activate.
Debug Menus... This is NOT easy at all. You will need to search through MANY, MANY codes if you have no base to go on. If you are looking for a debug menu that is already known, just do a known search with the menu NOT activated(search for "0") then the second with it activated(search for "1"). There will be almost 1-2 million codes that register at "0" so be careful and eliminate as much as possible. When the menu is active, the "1" value search should shorten the list a lot. You can also deactivate the list and search for "0" again. do this alternately until the possibilities are below 20.
Now it's time to find the Debug Menus that have never been seen before! To pull this off, you must go to a certain point in the game, usually the title screen, and do two, normal known searches for the value "0". You will see MANY MANY codes that have the values as "0". Well, ONE off those "0000" codes MIGHT be a debug menu. That is, if there is a menu in the game. IN THAT SECTION OF THE GAME. This must be the hardest code there is to hack.
Thanks to kongkrool@yahoo.com for writing this text