Azure Heights Pokémon Laboratory
Main Menu
What's New?
Attacks
Pokédex
Compendium
Weird Science
Forum
Chat
Contributors
Links
Founders

Sharkery
Overview
Max Stats
Attacks


Attacks
Sharkery Overview
Max Stats

The GameShark is a product developed by InterAct Accessories, Inc. that fits between your Game Boy and the game cartridge. It brings up a menu upon bootup that can be used to enter codes, find codes, or blank the cartridge's memory.

Different versions of the GameShark have different levels of functionality. Many old versions do not function on Game Boy Color, and there have been some complaints with new versions as well. Many GameSharks now come with the instruction that it is not to be used with the Pokémon games. The GameShark actually works fine with Pokémon. This message is included to prevent angry parents calling when their children accidentally mess up their game.

This is not a technical reference for general GameShark questions. Help with generic questions can be found at the official GameShark web site, or right here at Azure's Sakaki Tower.

WARNING: It is possible that the GameShark can glitch and erase your game. This does not happen frequently, but it can happen. We take no responsibility if you accidentally ruin your game, but we do our best to make sure that the codes we offer here are safe.

Power

When using a GameShark, it is a good idea to use either an AC power supply or fresh batteries, as the GameShark increases power demand.

Codes

A GameShark code is simply a method for writing data into RAM. For the purposes of this document, a GameShark code consists of four parts:

01 XX LL HH

The 01 is constant among all codes discussed. The XX is the numeric value that will be placed into RAM and held there for as long as the GameShark switch (the switch on the top, not the button) is in the "on" (leftmost) position. LL and HH refer to where in RAM this value is placed. This number is actually swapped: the actual hex position that the code goes into is HHLL.

As an example:

015477D1

This code will place the hex value 54 into the RAM position D177 (also a hex value). Please note that hexadecimal is just another way of writing a number, as explained in the Hexadecimal section below.

Similar data is usually grouped together in memory. So it makes sense that data like "HP for monster 1" is near data like "Special for monster 1" and that all of the "X for monster 1" data would be together (and right next to the "X for monster 2" data).

The codes listed are for the monster in the first position in your party, unless otherwise specified.

Hexadecimal

"Hex" is short for "hexadecimal". Hexadecimal is just a way of writing numbers. The numbers you are familiar with are written in decimal, which means "base ten". Hexadecimal means "base sixteen". Binary means "base two".

If I want to write about twelve things, that quantity can be represented by a 1 followed by a 2, the decimal number "12". The 1 signifies that there is one 10 of the things. The 2 signifies that there are two 1s of the thing. Add them together and you get

1*(10) + 2*(1) = 12.

Let's use the decimal number 452 as another example:

4*(10*10) + 5*(10) + 2*(1) = 452.

Every time you move one position to the left, you could say that the value contained is 10 times as significant as the previous value. When you write down a number, you are actually writing a brief formula that must be evaluated before the number is available. Before this position-based system, only symbolic systems (like Roman numerals) were available.

Hexadecimal is based on the same premise, but the increasing powers are of 16, not 10. Also, the value that is multiplied by that number can range from 0-15 instead of 0-9. For the remainder of this document, I will write "h" following any number that is written in hexadecimal. So the number 452h can be expanded as:

4*(16*16) + 5*(16) + 2*(1).

Evaluate this and you will find that the decimal equivalent of 452h is 1106.

Note that in all those "infinite item" codes, the third and fourth hexadecimal values (the second byte, used as the data byte in Game Boy GameShark codes) are "63". Here's why:

63h = 6*(16) + 3*(1) = 99.

6 times 16 is 96, and then add 3 for 99. It sets the value equal to 99, which is the maximum amount of any item that can be held at one time.

The instructions for use of these codes tell you to keep the GameShark switch on, which causes the specified byte to remain constant. When you use one of these items the game subtracts 1 from 99, gets 98, writes it back and then the GameShark changes it back to 99 again.

What about the letters? The value of hexadecimal digits can range from 0-15 and it is necessary to express these values in one character. Since we only have ten numerals to work with (0-9), the letters A-F have been chosen to represent the values 10-15. The hexadecimal number A5Dh can therefore be expanded as:

Ah*(16*16) + 5h*(16) + Dh*(1) =
10*(16*16) + 5*(16) + 14*(1) = 2654.

Note that the highest value that can be stored in one hexadecimal digit is Fh, or 15. The highest value that can be stored in two hexadecimal digits is FFh, or:

Fh*(16) + Fh*(1) =
15*(16) + 15*(1) = 255.

The Game Boy likes to store values in two digit chunks, which is why 255 is such an important number in Game Boy mathematics.

The Accuracy of attacks, for example, is based on a 00h to FFh scale. So when we say an attack is 99.6% accurate, what we mean is that if a random number chosen between 00h and FFh (0 and 255) is lower than FFh (ie, any number from 00h to FEh), then the attack will hit. The chances of hitting are 255 out of 256, or, roughly, 99.6%.

Please ignore this subliminal message. Please ignore this subliminal message. Please ignore this subliminal message. SEEK DEATH AT THE HANDS OF YOUR ENEMIES Please ignore this subliminal message. Please ignore this subliminal message. Please ignore this subliminal message.