We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!

Pokémon Gold and Silver

From The Cutting Room Floor
Revision as of 00:41, 27 December 2011 by Trombonista (talk | contribs)
Jump to navigation Jump to search
Featured article

Title Screen

Pokémon Gold and Silver

Developer: Game Freak
Publisher: Nintendo
Platform: Game Boy
Released in JP: November 21, 1999
Released in US: October 11, 2000
Released in EU: April 6, 2001


AreasIcon.png This game has unused areas.
DevTextIcon.png This game has hidden development-related text.
GraphicsIcon.png This game has unused graphics.
ItemsIcon.png This game has unused items.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.
RegionIcon.png This game has regional differences.


NotesIcon.png This game has a notes page
ProtoIcon.png This game has a prototype article
BugsIcon.png This game has a bugs page
PrereleaseIcon.png This game has a prerelease article

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 the previous Pokémon Red and Blue, as part of the storyline to work his way up to beat the ultimate trainer, Red.

Sub-Pages

Pokegold-olivinehouse.png
Unused Maps
Lake of Rage had a gym?

Debug Menus

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 3F:54F1 in the Japanese rom (Gold and Silver, v1.0 and v1.1) and the screen update service has to be enabled (register FFD6 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 CF21 to 0x00 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 directional pad selects either the color to manipulate, or the color's red, green, or blue channel. A will switch between normal and shiny colors for Pokémon. 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. One 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. 「Aきりかえ▶」 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 directional pad selects the TM/HM. B will switch to the first page. Although the screen says that the user can exit the menu when 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 ret 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.

Resurrecting the menu

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 0x3F. 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

Using the menu

  • Navigation: The directional pad will select 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). Select will rotate through the palettes in order in which they are loaded in RAM. It is not be possible to edit palette 0x07, 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 Gold/Silver USA ROMs.

Unused locations names

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

  • 0x092641: N/A
  • 0x0926FD: LAV RADIO TOWER
  • 0x09270D: SILPH CO.
  • 0x092717: SAFARI ZONE
  • 0x092733: POKéMON MANSION
  • 0x092740: CERULEAN CAVE
  • 0x092910: VIRIDIAN FOREST

Other unused text

Placeholder for objects with no script.
  • 0x190262: That can't be used[NL]right now.[END]
  • 0x190280: That item can't be[NL]put in the PACK.[END]
  • 0x1902A4: The [String:CF6B][NL]was put in the[NBOX]PACK.[END]
  • 0x1902C4: Remaining Time[END]
  • 0x1902D4: Your POKéMON's HP[NL]was healed.[END]
  • 0x1902EF: Warping...
  • 0x1902F9: Which number[NL]should be changed?[END]
  • 0x19031A: Will you play with[NL][String:CF7E]?[END]
  • 0x190335: You need two POKé-[NL]MON for breeding.[END]
  • 0x190358: Breeding is not[NL]possible.[END]
  • 0x190373: The compatibility[NL]is [Num:D151, 1byte, 3fig].[NBOX]Should they breed?[END]
  • 0x1903A4: There is no EGG.[NL][END]
  • 0x1903B7: It's going to[NL]hatch![END]
  • 0x1903CC: Test event[NL] [Num:CF7E, 1byte, 2fig]?[END]
  • 0x1903E0: What do you want[NL]to play with?[END]
  • 0x190400: You can have this.[END]
  • 0x190414: The BOX is full![END]
  • 0x190426: Obtained the[NL]VOLTORBBADGE![END]
  • 0x190442: The password is:[NL][END]
  • 0x190455: Is this OK?[END]
  • 0x190462: Enter the[NL]ID no.[END]
  • 0x190474: Enter the[NL]amount.[END]
  • 0x190717: [END]
  • 0x195B29: The window save[NL]area was exceeded.[END]
  • 0x195B72: Corrupted event![END]
  • 0x124558: 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.)
  • 0x195B93: BG event [END]
  • 0x195B9D: Coordinates event [END]

Used triggers

  • 0x195B4D: No windows avail-able for popping! [END]
  • 0x029438: ?????
  • (Unknown offset:) "?" (item identifier 00 or Silver's default name before getting named automatically as "???")
  • 0x195B84: Object event. [END]

Leftover text from Pokémon R/B/Y

The following strings of dialogue (from the NTSC/US ROM image) are not used within the final version of the Gold and Silver but once existed within the previous engine - Pokémon Red and Blue. The unused BIRD type is also still in the engine.

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

Names for 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 00 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." [1]

Test Event

Non-functional text.

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 script left over 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 Pokémon Gold and Silver, probably to check whether daylight saving time was working correctly. Neither the Japanese nor the Korean Pokémon versions feature this leftover, because 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!

Unused Functions

Naming your mother

Animation of the naming screen for the player's mother.

Naming the player's mother is fully functioning in both Gold and Silver. However, during the DUDE's Pokémon catching tutorial, the player's own name is copied to the RAM location of the mother's name, hence imposing 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 49 and should have 11 tiles reserved in the text box to safe-guard against overflowing text.

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

ERROR! Error handler

Unused ability menu options.

This appears when field move ability ID 15 is forced. ERROR! may have been intended as a placeholder; it does not appear for all invalid abilities, but only the last ability ID, 15. Other menus do not have such placeholders.

Extra field moves?

If an invalid identifier is referenced, the game is capable of 'withdrawing' other results from the list of attack names; this may indicate that Nintendo did not have a fixed plan of what field moves to add into the final game, as other attacks such as PAY DAY and SANDSTORM can be given, though this data is not necessarily unused; it is withdrawn from arbitrary pointer data not corresponding to field move data.

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.
  • A bug: the table is not properly terminated. The game reads past its end looking for the unused IDs. By chance it finds a terminator for Error, but Pay Day leads it to an arbitrary pointer; thus, Pay Day crashes the game, while 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:

  • 0100D5D0 - Pay Day
  • 0115D6D0 - Error!

Unused Battle Types

The byte D119 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 0x02. 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 (see here).

Always battle female Pokémon

Hmmm...
To do:
Specific DVs

This battle type is identifier 0x05. 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 0x06. 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 ????? (FF) first using the Bad Clone glitch, faints all of their other Pokémon beneath it, and then gets whited out.


Extra Experience Groups

In addition to the Fast, Medium Fast, Medium Slow and Slow two other groups closely related to Medium Slow are programmed into the game, yet never used.

They rise pretty much as slow as Medium Slow but offer lower maximum EXP. Medium Slow's maximum EXP is 1,059,860.

(Source: DevZ)

Clock Reset

PKMNGnS-Resetclock.png

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 37 at ROM address 23:4225 in a US rom. Passwords can be calculated online at Filb.de.

For some reason, the Clock change Password option was removed from Crystal version. Perhaps because it was a goof on the programmer's part and the player was never meant to be able to use it or access it for that matter.

Unused Memory game

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. This third game is a memory game, and can only be activated with a coin case as well as some coins.

The directional pad will select cards. The A button will then 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. CF14 is the difficulty option, from 01 to 03.

As this is a memory game, you have to find matching pairs of cards. When flipped cards match, the card will be displayed at in the top row of the screen. If they don't match, both will be flipped, and therefore hidden, again. You have five tries to find matching pairs. After that, the game just deals another set of cards.

とったもの ([Cards] taken) in the upper left-hand shows the cards you have matched, and あと#かい (# more turns) is how many tries you have left. Getting a match shows CARD いただき! (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.

Tilesets

Early Tileset

File:PKMN GS BETA TS Master.png
The mock-ups were modeled after this magazine scan.

The Japanese v1.0 rom's offset for the early block data is 06:6BA0 and the offset for early collision data is 06:73A0. These follow right after the block data of regular tileset 0x02, 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 01, the regular city tileset which still contained parts of the pagodas at the exact location the early blockdata uses. Only a total of 6 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 0x02 and split to tileset 0x01 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 0x0D 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 0x1F to tileset 0x20 that resembles an intermediate to tileset 0x01'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 0x60 bytes after the collision data at 37:7E33 in the Japanese v1.0 rom just after the Ilex forest (tileset 0x1C) collision data that allow for 0x18 more blocks than the current tileset features. Curiously, the block data does not have room for 0x18 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:

Solid Walkable
Solid Walkable

Unused Tile Palette Assignment Data

At 02:4547 in the Japanese v1.0 ROM there are 0x30 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:

                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
Seems to be a nice fit.

This seems to fit tileset 0x09 from Pokémon RBGY. Notice how the carpet at tiles 0x37 and 0x38 is blue instead of the usual red which the dark shades of the Game Boy Mono would have suggested.

Tileset 0x06 – PokémonCenter

The tileset in the production ROM contains enough blocks for a Pokémon RBGY-style PokéCenter that are never actually used. A map with those blocks could have looked like this:

Pokémon RBGY PKMN RBGY PokeCenter.png
Pokémon GSC PKMN Gold Silver TS06 P03 DAY BetaConcept.PNG
Left corner of blue counter is red instead of blue.

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 0x15 – Caves

Minecart and some tracks.

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

Tileset 0x17 and 0x1A – Ruins of Alph and Hall of Fame

Ruins of Alph PKMN Gold Silver TS17 PB7 DAY.PNG
Hall of Fame PKMN Gold Silver TS1A PB3 DAY.PNG

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 0x1C – Ilex Forest

Unused signs and sand tile.

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 trainers

Rosters

PKMN Trainer Cal

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.

  1. Chikorita, Cyndaquil and Totodile at level 10. [3]
  2. Bayleef, Quilava and Croconaw at level 30. [4]

Other Unused Content

Teru-Sama

Teru-sama is a dummy item occupying many of the game's item slots. Depending on the slot, different actions (give, use, sell etc) may be enabled. 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 perhaps could be a mistranslation of "garbage" into Katakana.

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 a few Teru-Samas that function as items. The Town Map and Poke Flute from Red and Blue are still leftover in the code. The Poke Flute, while the sound is missing, still acts like it should. The Town Map functions but it causes the game to crash when used because the identifier data for the map locations have been moved elsewhere in the ROM or removed altogether.

Miscellaneous

  • An identifier (18) exists denoting a Bulbasaur symbol (using its doll sprite) in the Slot Machine interface, information such as how many coins the player will receive if three are lined up however, is undefined. To manipulate the game into managing as if three Bulbasaur were lined up, the player may enter the Gameshark codes 011809C6 01180DC6 and 011817C6. [5]
  • Sprite data for Ho-Oh is actually in color, although when the normal palette is used where Ho-Oh is black, these colors cannot be seen. A common exploit often resulting in an in-game reset without resetting the new palette involves listening to a Machop's cry in the Pokédex and using the Coin Case.

Version Differences

Changed graphics

A few trainers, and quite a few Pokémon, had their sprites edited for the international releases, as documented here.


Changed graphics
The most interesting and enlightening page you will read all day.

Korean version

File:DMG incompatability message (Korean Pokémon Gold).png
The error message stating that the game is only playable on Game Boy Color.

The Korean versions of Pokémon Gold and Silver, like Pokémon Crystal, are only compatible with the Game Boy Color. Previous versions of Pokémon Gold are runnable 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 Pokémon Crystal, and without borders. The Coin Case glitch was patched (which involves listening to a cry and then viewing the Coin Case), though it is not impossible for the game to reset itself in Game Boy mode through other methods.