Pokémon Gold and Silver

Pokémon Gold and Silver is one of the most extensive Pokémon games, featuring 100 new Pokémon (a 66% increase!) and allowing the player to return to Kanto, featured in Red and Blue, as part of the storyline to work his way up to beat the ultimate trainer, Red.

Pokémon & Trainer Color Test Menu
This color test menu is basically a menu to easily change the color palettes of Pokémon, both normal and shiny palettes, and trainers as well as to conveniently list if a Pokémon is capable of learning a Technical Machine (TM) or Hidden Machine (HM). The menu code is located at in the Japanese ROM (v1.0 and v1.1) and the screen update service has to be enabled (register  must be checked). Other language version ROMs have the code as well, but due to the screen not being localized, graphic bugs ensue.

You have to select either Pokémon or trainer mode before loading the menu by setting to  for Pokémon mode and any other value for trainer mode.

First Page
The first page is for color adjustment and sprite viewing. Beware: altered colors will not be retained when switching between normal and shiny colors! They will be retained when changing between Pokémon/trainers though!


 * Navigation: The D-Pad selects either the color to manipulate, or the color's red, green, or blue channel. Press A to switch between normal and shiny colors for Pokémon, while pressing B will switch to the second page. Select and Start change sprites going forwards resp. backwards through the sprites in PokéDex order resp. internal order for trainers.
 * Colors: The Pokémon's/trainer's two colors are represented by their color and their hexadecimal values below each color panel in the top-right of the menu. You can change the colors freely for each color channel separately.
 * Strings: The Pokémon's/trainer's number along with the associated name will be printed in the top-left. On the bottom appears the palette name that the Pokémon is currently being displayed in. 「Ａきりかえ▶」 means "A switches", 「ノーマル」 means "normal [palette]", 「レア」 means "rare [shiny palette]".

Second Page
The second page is for exiting the menu and viewing the TMs and HMs the Pokémon can be taught. Things from the first page, such as the Pokémon's name, images, and colors will be shown on this screen, too. In trainer mode, this menu will still act as if a Pokémon was selected and show the respective Pokémon's data.


 * Navigation: The D-Pad selects the TM/HM. B switches to the first page. Although the screen says that the user can exit the menu by pressing A, the actual code (while still in the ROM) is never executed, probably due to the actual check for the A button having been commented out.
 * TMs/HMs: Machines have their name stated on the right-hand side. Right below the name is an indicator whether the Pokémon can be taught the selected machine or not.
 * Strings: 「おわりますか？」 means "Are you finished?", 「はい」 being "yes" and 「いいえ」 being "no". 「おぼえられる」 and 「おぼえられない」 mean "can be taught" and "cannot be taught" respectively.

Tileset Color Menu
While the actual routine that procures this menu has been commented out, as evident by a single before all subroutines of the menu, with the right code it can still be used. This menu's main task was to grant the user the ability to edit the current palettes used for the current background tileset.

To get the menu in-game, one needs to write custom code that loads the menu. For the Japanese version, the following code can be placed anywhere in ROM bank. It can then be called from an in-game event, such as a signpost, via the 3byte pointer ASM command (see Gold & Silver Scripting Compendium for further info).

call $0432		; Deactivate LCD call $55D9		; Load font to RAM call $0454		: Activate LCD xor a, a ld [$FF00 + $D1], a	; Reset X and Y scroll ld [$FF00 + $D2], a ld a, $01 ld [$FF00 + $AC], a	; Don't require button up between presses call $5D85		; init menu @Loop: call $5EC0		; update menu call $09FD		; get button press call $5FD9		; update selection call $5E5D		; process button press call $032E		; do events jr @Loop


 * Navigation: The D-Pad selects the current palette's color to manipulate on the top row, or the selected color's red, blue, or green channel (from top to bottom respectively). Press Select to rotate through the palettes in order in which they are loaded in RAM, although it is not possible to edit palette, the menu palette, or any foreground palettes. B hides resp. shows the menu, probably so the user can inspect the whole map screen rather than only the top portion. While the menu is hidden, it still functions the same as if it was shown, meaning colors can be selected and edited as usual.
 * Colors: The current palette's four colors are represented by their color and their hexadecimal values above each color field in the top row of the menu. One can change the colors freely for each color channel separately.

There is no means to exit the menu, as the respective code was probably commented out as well.

Unused Text
All text offsets are for the American version of Gold and Silver.

Location Names
The following location names are in the location name table alongside other location names, but are unused.


 * : N/A
 * : LAV RADIO TOWER
 * : SILPH CO.
 * : SAFARI ZONE
 * : POKéMON MANSION
 * : CERULEAN CAVE
 * : VIRIDIAN FOREST

Others

 * : "That can't be used right now."
 * : "That item can't be put in the PACK."
 * : "The " (string from 0xCF6B) " was put in the PACK."
 * : "Remaining Time"
 * : "Your POKéMON's HP was healed."
 * : "Warping..."
 * : "Which number should be changed?"
 * : "Will you play with " (string from 0xCF7E) "?"
 * : "You need two POKé- MON for breeding."
 * : "Breeding is not possible."
 * : "The compatibility is " (number from 0xD151) ". Should they breed?"
 * : "There is no EGG. "
 * : "It's going to hatch!"
 * : "Test event " (number from 0xCF7E) "?"
 * : "What do you want to play with?"
 * : "You can have this."
 * : "The BOX is full!"
 * : "Obtained the VOLTORBBADGE!"
 * : "The password is:"
 * : "Is this OK?"
 * : "Enter the ID no."
 * : "Enter the amount."
 * : "The window save area was exceeded."
 * : "Corrupted event!"
 * : "Oh, no. Oh, no… My daughter is missing. No… She couldn’t have gone to the BURNED TOWER. I told her not to go near it… People seem to disappear there… Oh, what should I do…?" (This may indicate a subquest for the Burned Tower was scrapped, or moved to the SS Aqua.)
 * : "BG event" (likely a placeholder for "invisible" events such as signs)
 * : "Coordinates event" (likely a placeholder for events triggered by walking to certain coordinates)
 * : "No windows avail-able for popping!"
 * (Unknown offset:) "?" (item identifier or rival's default name before getting named automatically as "???")
 * : "Object event." (placeholder for events connected to NPCs)
 * : "Object event." (placeholder for events connected to NPCs)

Leftovers from Red, Blue, and Yellow
The following strings of dialogue (from the NTSC/US ROM image) are not used within the final version of the Gold and Silver but are leftovers from the Red and Blue engine. The unused BIRD type is also still in the engine.


 * BIRD
 * 1) "It dodged the thrown BALL! This POKéMON can't be caught!"
 * 2) "You missed the POKéMON!"
 * 3) "Played the POKé FLUTE."
 * 4) "Now, that's a catchy tune!"
 * 5) "All sleeping POKéMON woke up."
 * 6) "[PLAYER] played the POKé FLUTE."

Invisible Game Mechanics
The following game mechanics, if forced to be referenced via a dialogue string (though they never are in normal gameplay) will display:


 * 1) Professor Oak's picture: "POKéMON PROF." (stored with trainer class data, though it is only referenced on the introductory screen to point to Professor Oak's picture; not in a trainer battle, so "POKéMON PROF." is not displayed.)
 * 2) Last location placeholder: "SPECIAL" (A town map name, though the name "SPECIAL" can't be seen in normal gameplay; its identifier is to reference the last town map name loaded into the game's memory instead:- useful for Pokémon Centers)
 * 3) Player's back-sprite in battle: "?????" (The game references the backsprite of undefined Pokémon #252 "?????")

Voltorbbadge
The Voltorbbadge is probably an in-joke, because other badges have receive text in the format Player received NAMEBADGE.

SILPHSCOPE2
Arguably was supposed to be used instead of the SquirtBottle, as suggested by an unused dialogue string:

"I hear there's a POKéMON that looks just like a tree. You can reveal its identity using a SILPHSCOPE2."

Test Event
This is one of the fragments of debug text left in the game. There does not appear to be any of its code left. The RAM address it displays is actually data from the real-time clock, which makes little sense here, suggesting the code was removed before the clock was added.

Mr. Chrono
A leftover script in New Bark Town. While it claims to be activating a debug mode, unfortunately all that seems to be left is the text, which displays the real-time (RT) read from the clock and the time difference (DF) set by the player as well as whether daylight saving time is on or off. There is also text nearby from a function that would calculate the clock reset password for you.

This feature was added for the western versions of Gold and Silver, probably to check whether daylight saving time was working correctly. The Japanese and Korean versions do not have this leftover, as daylight saving time is not used in these countries.

Sweet Honey
Text about "sweet honey" appears in the ROM. It's possible that Sweet Honey was a concept that was canned (or reworked into Headbutt or Sweet Scent) and re‐implemented several years later, in the form of Sweet Honey in Pokémon Diamond and Pearl.

My Pokémon is an expert at collecting SWEET HONEY. I’ll share some with you. I want to give you some SWEET HONEY, but you have no room for it. Here you go! Have some SWEET HONEY! GOLD received SWEET HONEY. My little brother takes SWEET HONEY and goes somewhere with it. I wonder what he’s up to? Did you put SWEET HONEY on a tree? What happened to it? Did you put SWEET HONEY on a tree? It takes about a day for POKéMON to be drawn to it. BUTTERFREE: Freeh!

Naming Your Mother
Naming the player's mother is fully functional in both Gold and Silver. However, during the DUDE's Pokémon-catching tutorial, the player's name is copied to the RAM location of the mother's name, hence implying that the player names his mother at a stage where the tutorial cannot be accessed anymore. The name itself can be displayed in text via byte and should have 11 tiles reserved in the text box to safeguard against overflowing text.

When RAM is initialized at boot, the player's mother's name is initialized to "Mom".

Extra Field Move Entries
The list of field moves contains two extra entries:
 * PAY DAY (ID ) - apparently this would have been usable outside of battle at one point. Attempting to use it now only crashes the game, as it's been deleted from the pointer table.
 * ERROR! (ID ) - the last entry. No other menus have such entries, so this may be a deleted move. Like PAY DAY, this item has no entry in the pointer table, but by chance the game manages to not crash and simply does nothing when this is used.

The pointer table for the abilities also shows some interesting facts:
 * The table is in fact a map (unordered ID->pointer pairs), rather than an array. The reason for this is not clear.
 * The game checks for a terminating entry in this list (pointer ); if it finds this entry before the ID it's looking for, it will just return without doing anything. However, the list doesn't actually have a terminating entry, so Pay Day and Error will cause it to read past the end of the list looking for them, eventually finding an invalid pointer for Pay Day and a terminating entry in the following data (thus why Error does nothing).
 * The out-of-order keys suggest that Waterfall was added later in development; it appears near the end rather than being grouped with the other HM moves.

To see the unused menu options, enter one or both of the following GameShark codes and select a Pokémon with one HM ability: for Pay Day,  for "Error!".

Unused Battle Types
The RAM address determines the "type" of battle which is taking place. There are a few entries which are never normally used in normal gameplay.

Battling with no Pokémon
This battle type is identifier. The player enters battle without sending out any Pokémon, however none of the functions appear to have been defined. All functions other than PACK and RUN instantly end the battle, whereas PACK and RUN function as they would in a typical battle.

Unlike the DUDE's demonstration, this battle does not change the player's sprite, automatically throw a POKé BALL once the item pack is closed, or copy the player's name to the RAM location of the mother's name.

Always battle female Pokémon
This battle type is identifier. It causes the player to always battle a Pokémon with DVs matching a female Pokémon (if possible). For unknown reasons, there does not seem to be a matching battle type for encountering male Pokémon.

Automatic Battle End
This battle type is identifier. It causes the battle to end as soon as the player sends out their first Pokémon. Although it is ultimately unused, it is called automatically when the player attempts to enter a Trainer battle without any Pokémon. There is another function, though unrelated to this byte which causes wild Pokémon battles to end before they start.

It can also be triggered by a glitch, which lets the player walk around with no usable Pokémon, if the player obtains a ????? first using the Bad Clone glitch, faints all of their other Pokémon beneath it, and then gets whited out.

N4lDt9j4z6E

Extra Experience Groups
In addition to "Fast", "Medium Fast", "Medium Slow", and "Slow", two other groups closely related to "Medium Slow" are programmed into the game but never used:

They rise pretty much as slow as "Medium Slow" but offer less maximum EXP. The maximum EXP of "Medium Slow" is 1,059,860.

Clock Reset
By pressing Down + Select + B at the title screen, the player can access a hidden clock reset function. The function requires a password which is calculated from various game state information. The password check can be bypassed by writing at ROM address   in a US ROM.

When doing this on an empty battery, where it is impossible to type the correct password, the game resets and runs with a strange graphics bug.

Passwords can be calculated online at Filb.de.

The clock reset function exists in Crystal, but the key combination is more complicated. It can be accessed with GameShark code.

Movement Type
In Gold/Silver/Crystal, there is a byte that manages different movement types. In the English Gold and Silver, this byte has the address. Four of the movement types are used: for walking,  for cycling,  for surfing, and  for surfing Pikachu. functions like sliding on ice, however it is actually unused – doesn't change to  when sliding on ice in the Ice Path.

Movement type may have been an early implementation of sliding on ice before the final mechanics of sliding were programmed into the game.

Unused Memory Game
Vs5NnbiOB8o The Game Corner in Gold, Silver, and Crystal has two kinds of machines: a slot machine and a card flip table. However, there is an unused third game which is mostly working – namely, a memory game, which can only be activated with a Coin Case as well as some coins.

Use the D-Pad to move the cursor, and press A to flip the selected card to see what kind it is. There are three different difficulty levels that affect the random placement of the individual card faces, probably one for each coin selection – one coin, two coins, or three coins. is the difficulty option, from -.

As this is a memory game, you have to find matching pairs of cards. If the flipped cards match, they are removed and the card will be displayed at the top of the screen. If they don't match, both will be flipped back. You have five tries to find matching pairs, after which the game just deals another set of cards.

とったもの ("[Cards] taken") in the upper-left corner shows the cards you have matched, and あと#かい ("# more turns") is how many tries you have left. Getting a match shows ＣＡＲＤ　いただき！ ("CARD, yeah!") and picking the wrong cards shows ざんねん... ("Darn...").

Note that the cursor is usually garbage, as the graphics data was commented out as well. Therefore, the PokéGear indicator is used in the video.

The actual routine that would let you chose the difficulty level, award prizes, and even exit the game doesn't exist, so there is no way to win or exit outside of resetting the game.

See the Notes page for a fully commented disassembly of the Memory game.

Early Tileset
The Japanese v1.0 ROM's offset for the early block data is and the offset for early collision data is. These follow right after the block data of regular tileset, the Goldenrod City tileset. These were used to dump the early city maps above.

The tileset used is a mockup based on earlier leftovers in tileset, the regular city tileset which still contains parts of the pagodas at the exact location the early blockdata uses. Only a total of six tiles have been added to produce the early version mockup tileset.

As can be seen, the block data was changed after the early city maps were created and then presumably copied over to a then-new tileset and split to tileset  thereafter and then forgotten about. This is especially visible in Olivine City's map, where the light house now has parts of mountains instead of the proper tower parts. Also, block was deleted for whatever reason, hence it was rendered as a black block on both Goldenrod City's and Olivine City's map. The evolution goes from Tileset to tileset  that resembles an intermediate to tileset 's final layout.

The early tilesets are the following two:

Again, the original graphics seem to be lost, so these mock-ups were created. For a full detailing on map and tileset naming schemes, refer to the notes on map and tileset naming scheme.

Early Collision Data
There is an extra bytes after the collision data at  in the Japanese v1.0 ROM just after the Ilex forest (tileset ) collision data that allow for  more blocks than the current tileset features. Curiously, the block data does not have room for more blocks, meaning that this may or may not have been part of the Ilex forest tileset collision data.

However, since their contents are static, it suggests the former. The blocks would have had the following layout. Each cell corresponds to one fourth of a block, the size of an in-game person:

Unused Tile Palette Assignment Data
At in the Japanese v1.0 ROM there are  bytes of tile palette assignment, which assigns a palette for each tile of a tileset, that go unused. The layout is as follows, where the second color of each palette represents the palette overall pretty well:

This seems to fit tileset from Red/Blue/Green/Yellow. Notice how the carpet at tiles and  is blue instead of the usual red, which the dark shades of the Game Boy would have suggested.

Tileset (PokémonCenter)
The tileset in the production ROM contains enough blocks for a Red/Blue/Green/Yellow-style PokéCenter that are never actually used. A map with those blocks could have looked like this:

Also, this tileset contains a block that is never actually used whose tile has the wrong palette associated with it. It may have gone unused because of this error.

Tileset (Caves)


The cave tileset features some infamous tiles for a mine cart and some tracks. However, no blocks ever use these tiles at all.

Tileset and  (Ruins of Alph and Hall of Fame)
These two tilesets share a 2×2 ground tile, indicating that tiles might have been shifted from one tileset to the other somewhat late in the production cycle. Also notice how the color assignments of the Hall of Fame tileset hint at deleted tiles.

Tileset (Ilex Forest)


Ilex forest contains two sets of tiles for the signpost, one duplicate and one unused. This was probably a last-minute change and included to be able to reverse back at any moment. Also, Ilex forest does not feature any blocks with sand on them, making this standard tile go unused within the forest.

Unused Trainer Rosters
PKMN Trainer Cal from Viridian City's Trainer House is normally only accessible late in the game, where he faces the player with the Johto starters in their final evolutionary forms at Level 50, provided that Mystery Gift was not used. Despite this, other rosters associated with Cal still exist within Gold/Silver/Crystal:


 * Chikorita, Cyndaquil, and Totodile at Level 10.
 * Bayleef, Quilava, and Croconaw at Level 30.

Unused Move Effects
Like Pokémon Red and Blue, Pokémon Gold, Silver and Crystal have some move effects for raising and lowering all stats, meaning some of the move effects like 'raise evasion two stages' are unused. Additionally, there is a move effect to cause the opponent to always flinch, unless the user is slower than the opponent (in this case the move will always miss) but this effect deals no damage.

Changing offset at in Gold or at  in Crystal will modify the move effect of Pound.

All of the below effects deal no damage.

Teru-Sama
A dummy item occupying many of the game's item slots. For all Teru-Sama, normally only the "GIVE/TOSS/QUIT" options are available. It has no apparent use other than to be sold for $19660.

Somewhat interestingly, Teruki Murakawa appears on the US Staff credits as a programmer; given that this item only has a meaningful name in the US version, it may very well be that he named it after himself. This theory is helped by the fact that its sell value is also a likely birth year: $19660.

Teru-sama can literally be translated from Japanese as "Lord Sunshine" or "Master Sunshine", coming from the word Teru ("Sunshine" or "to Shine") and the suffix -sama (an honorific that shows extreme respect and is most often translated as "lord" or "master").

In the Japanese ROM, it is called カビチュウ (Kabichuu). This seems to be equally meaningless, but it is a portmanteau of カビゴン (Snorlax)'s "カビ (Kabi)" and ピカチュウ (Pikachu)'s "チュウ (Chuu)".

The Teru-Sama is simply a placeholder item used by the game to fill up empty item slots and prevent crashing when the data is loaded. There are two Teru-Samas that function as items, though: the Town Map and Poké Flute from Red and Blue are still present in the code. Most of the other Teru-Sama if forced to have a USE option will display Professor Oak's "This isn't the time to use that!" message. Teru-Samas with unique effects include identifiers, and , however  has an invalid pointer and was likely never intended to have a 'USE' option.

The works as a faulty version of the Town Map from Red/Blue.

The Teru-Sama works as the Poké Flute if a "USE" option is forced (video). Like in Red/Blue/Yellow, it can be used to wake up sleeping Pokémon in the player's party in and outside of battle. The Poké Flute sound plays if the player uses the item outside of battle with a sleeping Pokémon. The Poké Flute sound doesn't play if the player doesn't have a sleeping Pokémon in the party or uses the item with a sleeping Pokémon in the party within a battle.

Running Pokémon
Certain Pokémon in the games have a chance to flee from battle; this data is stored in three tables, presumably in the order of increasing likelihood to flee. However, the following Pokémon cannot be encountered in the wild, thus their running behavior remains unseen.

First table:
 * Eevee
 * Porygon
 * Togetic
 * Umbreon

Second table: [Note that Articuno, Zapdos, and Moltres appear as roaming Pokémon that flee from battle in Pokémon Platinum]
 * Articuno
 * Zapdos
 * Moltres

The third table, which guarantees escape, contains only the legendary beasts.

Slot Machine
0gqkwdg46jI An identifier exists denoting a Bulbasaur symbol (using its doll sprite) in the Slot Machine interface. However, information such as how many coins the player will receive is undefined. To manipulate the game into managing as if three Bulbasaur were lined up, the player may enter the GameShark codes, , and.

Title Screen
The sprite data for Ho-Oh on the Gold title screen actually uses three colors, although the normal palette renders all three colours as black, meaning only its silhouette can normally be seen. The coloured sprite can be seen through any glitch which causes the game to reset in mono Game Boy mode on a Game Boy Color (preventing the correct palettes from being loaded); the most reliable way of achieving this is listening to a Machop's cry in the Pokédex and then using the Coin Case.

The Lugia sprite in Silver is, however, stored using only the two colours visible in-game, suggesting either the decision to render them in silhouette was taken some time between the drawing of the two sprites, or that the original plan was to show Ho-oh in color but Lugia in silhouette, before a last-minute decision was made to make them both the same.

Coin Case bug
Due to an error in the North American localizations, the text box printed when using the Coin Case is improperly terminated in the English version, as a character is used instead of a  (the original value in the Japanese versions of Gold/Silver), causing the game to jump to a section of memory used for storing sound effects. This section of memory is usually empty, unless you listened to a Pokémon's cry right before in which case the game interprets the Pokémon's cry as code, leading to arbitrary code execution.

This bug isn't present in the original Japanese release, the non-English European translations, or the Korean ones.

Korean Version


The Korean versions of Gold and Silver, like Crystal, are only compatible with the Game Boy Color. Previous versions of Gold can be run on Game Boy mode. This is due to the fact that the Korean version uses the Game Boy Color's second bank of VRAM for printing its text, rendering it incompatible with the regular Game Boy.

When the player attempts to run the game on an original Game Boy, they receive a message stating that the game is only compatible on the Game Boy Color. The message is very plain compared to Crystal, and without borders.

Both Gold and Silver have their respective Super Game Boy border leftover unused. They are the English design, rather than Japanese.

Wild Pokémon
In Japan, Phanpy and Donphan are found in the wild in Gold while Teddiursa and Ursaring are found in the wild in Silver. In the rest of the world, these were switched.

Interestingly, this localization change was not made for the international versions of HeartGold and SoulSilver – Phanpy and Donphan are found in HeartGold while Teddiursa and Ursaring are found in SoulSilver, regardless of region.