From Bulbapedia, the community-driven Pokémon encyclopedia.
The old man glitch, officially known as the Fight Safari Zone Pokémon trick, is a famous glitch in Pokémon Red and Blue. It is one of the ways in which the player can encounter Missingno. and 'M (00). Its name comes from the old man in Viridian City, who is required to complete the glitch. It is not to be confused with the related item duplication glitch, which is most easily performed by first performing the old man glitch.
This glitch was not present in the Japanese Pokémon Red, Green, or Pokémon Blue. This glitch was fixed in some European versions of Red and Blue, such as the Spanish and Italian versions, by making the shore tiles act as water tiles, but still remains in other European versions, such as the German version. In the French version, the glitch is present, but the game freezes every time a Missingno. or 'M (00) appears. This glitch was removed in all versions of Pokémon Yellow by blanking the data for wild Pokémon before overwriting it, and reprogramming shore tiles to not call any wild Pokémon.
Performing the glitch
To perform the glitch, the player must talk to the old man located in the north of Viridian City and allow him to demonstrate how to catch a Pokémon. After the demonstration, the player should immediately Fly to Cinnabar Island. Here, the player should surf up and down along the east coast of the island where the water is touching the land without leaving Cinnabar Island. Wild Pokémon will appear, based on the player's name.
The wild Pokémon that appear are based on the player's name. The third, fifth and seventh slots of the player's name are the species of Pokémon that will appear (see table below). The second slot of the player's name becomes the level of the Pokémon caused to appear by the third slot, the fourth slot for the fifth slot, and the sixth slot for the seventh slot. The game also reads the ninth and eleventh slots as wild Pokémon and the eighth and tenth slots as levels; however, due to the seven character name limit, these slots are not used, so are blank (00), causing 'M (00) to appear at level 0.
At the end of the player's name, there is a special character to mark the end of the name. This character can either cause Missingno. to appear, or create the possibility for wild 'M (00) to be at level 80.
The eighth through eleventh bytes are only 00 if using a custom name; using a preset name results in these extra bytes being filled by the series of other preset name separated by end of name markers (with NEW NAME after the last preset name). As such, 'M (00) will not appear when using a preset name.
This table demonstrates what Pokémon specific characters in the player's name will cause to appear, or the level of the Pokémon that they will cause to appear. Only characters possible to include in the player's name are included. Glitch Trainers are in bold.
Choosing a preset name will result in different results to inputting a custom name. Inputting a custom name which is the same as a preset name will not cause the glitch to behave as if a preset name was chosen.
Preset names function differently because they are stored one after the other in the game data, separated by the end of name marker, whereas custom names are succeeded by zeros after the end of name marker. In English Pokémon Red, the player's name is stored as "RED<end>ASH<end>JACK<end>NEW NAME", starting from the selected name; in English Pokémon Blue, the player's name is stored as "BLUE<end>GARY<end>JOHN<end>NEW NAME", likewise starting from the selected name.
Due to the names extending past the usual seven character limit, the ninth and eleventh characters are also used to determine the wild Pokémon, and their levels are determined by the eighth and tenth characters, respectively. These characters are usually null, so cause 'M (00) to appear, and Pokémon to at level 0, respectively. Because of this, unlike when inputting a custom name, 'M (00) do not appear when using a preset name. Characters after the eleventh are ignored.
The numbers in parentheses are the index number of the specific Missingno. in hexadecimal.
When the game sets up the battle between the old man and a wild Weedle, it needs to temporarily change the player's name to "OLD MAN" so that it will display that name, rather than the player's entered name, during the battle.
The programmers decided to use the space where data for wild Pokémon found in the grass is stored (which is completely blank in Viridian City, as only Surfing and Fishing data is used) to save the player's name temporarily. Normally, this would cause no abnormal activity, as this data is overwritten when the player moves to a different area.
In all cities, however, this data remains blank, and so the data is never overwritten (as there is nothing new to overwrite it with), and thus, the data that was last entered (be it the player's name or the wild Pokémon data from another area) remains in place. This itself still causes no harm; however, an oversight in the programming of the tiles used to denote the shore of Cinnabar Island marks them as equivalent to grass. As all water routes have no real grass on them, likewise, the data is not overwritten, and so whatever data is in the slots for wild Pokémon found in the grass is used, be it the player's name or wild Pokémon found elsewhere, such as the Safari Zone.
The name of the player has six hexadecimal values in it. The game needs only three "slots" of wild Pokémon data to store this.
The species of wild Pokémon the player encounters along the coast are determined by the third, fifth, and seventh characters of the player's name, while their levels are determined by the second, fourth, and sixth characters, respectively. The game also reads the ninth and eleventh slots as wild Pokémon and the eighth and tenth slots as their respective levels; however, due to the seven character name limit, these slots are not used unless using a preset name, so are blank (00), causing 'M (00) to appear at level 0.
Due to the fact that Cinnabar Island has no wild Pokémon data but the potential for wild Pokémon to appear, and that wild Pokémon data is not formatted when entering a new area, any location that can be flown from can have its wild Pokémon available on the coast. This includes the Safari Zone, so players can encounter Safari Pokémon under normal battling circumstances.
Due to being able to find Pokémon over level 100, it is possible to trigger glitches relating to Pokémon with levels that are too high. If Pokémon over level 100 receives experience by battle, it will automatically go to level 100; Rare Candies will level up the Pokémon normally. If the Pokémon's remaining HP is already low, dropping to level 100 can cause the HP to drop to negative number, but it will be interpreted as a very high number, similarly to the Pomeg glitch. In Pokémon Stadium, HP is shown as the actual amount; in Pokémon Stadium 2, it will act as if its HP was full.
- Although less practical, players can make a trade and then surf on a coast to find the same Pokémon that they would have found otherwise via the old man glitch. This is because name data is stored in the RAM and recalled after performing a trade.