Welcome back, fellow Pokémon fans! It’s feels to be writing for Scribbling again this year, and I’m so excited to provide all of you with some awesome Pokémon content!
For my first article of the school year, I have decided to write about some fascinating glitches from the generation 1 main series Pokemon games, Pokemon Red, Blue, Green, and Yellow. Glitches are unintentional game effects that happen because of oversights in the game’s code. Every generation of Pokemon has multiple glitches, which can range from minor to game-breaking. Glitches were inevitable in the generation 1 games; these were some of the most complex games ever created for the original GameBoy, a very rudimentary handheld console by today’s standards. However, the sheer amount of glitches in these games is jaw-dropping. Today I hope to introduce you all to some of my favorite generation 1 glitches and the explanations behind them. I hope you find these glitches as interesting as I do!
Exp. All Error
Our first glitch is the exp. all error. The exp. all, short for experience all, is an item that shares the experience points earned by a party’s battling Pokemon among the Pokemon who did not participate in battle. If you know how the experience share works in generations 6 and 7, the exp. all works similarly to that; however, unlike the experience share, the exp. all does not function as it’s intended to.
What’s supposed to happen is this; when a battle occurs with the exp. all turned on, the participating Pokemon (the Pokemon that fought in the battle) split 50% of the experience points, and the entire party splits the remaining 50%. For example, in a party of six Pokemon, if two Pokemon participate in a battle and four do not while the exp. all is turned on, the two participating Pokemon would each get 25% of the experience points, and each Pokemon in the party (including those who battled) would each get 8.33%. 25% x 2 = 50% and 8.33% x 6= 50%, both of which add up to be 100%; all the experience points add up.
What instead happens is this: when a battle occurs with the exp. all turned on, the participating Pokemon (the Pokemon that fought in the battle) split 50% of the experience points, and the entire party splits the percentage of experience points that one battling Pokemon would earn. Sounds confusing, right? Let’s use the same example that we used before; in a party of six Pokemon, if two Pokemon participate in a battle and four do not while the exp. all is turned on, the two participating Pokemon would each get 25% of the experience points, and the entire party would split 25% of the experience points (the percentage of experience points that one battling Pokemon would receive). Each Pokemon thus receives another 4.16% of the total experience points. 25% x 2 = 50% and 4.16% x 6= 25%, both of which add up to be 75%. As a result, we lose 25% of the experience points. The loss is greater when more Pokemon participate in the battle, with the greatest possible loss being 41.66% of the experience points when six Pokemon participate in a battle with the exp. all turned on.
Experience Underflow Glitch
The second glitch I’m going to talk about is the experience underflow glitch, a glitch concerning the medium-slow experience group in generations 1 and 2.
Every Pokémon is part of an experience group, which determines how much experience a Pokémon should have at each level, how much experience it takes for a Pokémon to level up, and how much experience a Pokémon needs to reach level 100. These numbers are determined through cubic functions, and each experience group in generations 1 and 2 uses a unique cubic function (exception: two new experience groups were introduced in generation 3 that use piecewise functions.). Generations 1 and 2 have only four experience groups: fast, medium-fast, medium-slow and slow. These are the basics of experience groups, and this information is necessary to understand what I am about to explain.
In generations 1 and 2, the GameBoy itself would run the cubic functions to calculate a Pokémon’s experience points. This led to a slight issue because according to the cubic function for the medium-slow group, a level 1 Pokémon in that group has -54 experience points (technically the output of the function when x=1 is -53.8, but Pokemon always rounds down to the nearest integer in its calculations.). The game’s code is unable to read experience as a negative number, so it interprets this value as 16,777,162 experience points. As a result, if a level 1 Pokemon in the medium-slow group does not gain enough experience points to reach a non-negative value, the game, trying to figure out what level the Pokemon should be at, looks at how many experience points this Pokemon has and calculates its level based off that value. Since the game believes this Pokemon has 12,777,162 experience points, it calculates that the Pokemon should be at level 245, but since Pokemon can only reach levels up to 100, the Pokemon just jumps from level 1 to level 100. Generation 3 fixed this glitch by using lookup tables for calculating experience points instead of having the game itself calculate these numbers using the functions. Although the medium-slow function says a level 1 Pokemon in that group has -54 experience points, the medium-slow lookup table says that a level 1 Pokemon in that group has 0 experience points, thus solving the issue.
Cinnabar Island Coast Oversight and the Old Man Glitch
The third and final glitch I’ll be discussing is the Cinnabar Island coast oversight and the interesting things you can do with it, including encountering the infamous glitch Pokémon MissingNo with the old man glitch!
The Cinnabar Island coast oversight occurs because of a developer error: Cinnabar Island’s coast tiles are accidentally denoted as grass tiles in the game’s code, yet there is no data for grass encounters on Cinnabar Island because Cinnabar Island is not supposed to have grass tiles. As a result, the game uses the grass encounter data from the last area with grass tiles visited, which has not yet been overwritten because Cinnabar Island has no grass encounter data to overwrite the old grass encounter data with, to determine what Pokémon should be encountered on the Cinnabar coast. Any Pokémon that can be encountered in grass has the potential to be encountered on the Cinnabar Coast. Players commonly take advantage of this oversight to encounter Pokémon from the safari zone under normal battle conditions*, making them much easier to catch.
The Cinnabar Island coast oversight can also be used in conjunction with the old man glitch to encounter glitch Pokémon such as M and the infamous MissingNo. Glitch Pokémon occur when the game handles non-Pokémon data as Pokémon data. If you’re confused, you’ll understand what I mean as I talk about the old man glitch. To trigger the old man glitch, the player must ask the old man in Viridian City to teach him/her how to catch a Pokémon. Since the game must display the old man’s name during the mock battle, it stores the player’s name where grass encounter data is stored. This method usually presents no issues since the name data is either overwritten when entering an area with grass encounter data or isn’t overwritten when entering an area with no grass and thus grass encounter data. As we just discussed, however, Cinnabar Island has grass tiles but no grass encounter data. If the player then flies to Cinnabar Island, the name data isn’t overwritten, but wild encounters can still be triggered. As a result, the game uses the player’s name, which is still stored where grass encounter data is stored, to determine what Pokémon should appear. Since the player’s is most certainly not Pokémon data, a glitch Pokémon will appear, usually M or MissingNo.
The generation 1 main series games sure had a wide variety of glitches! I hope you found at least one if not all three of these glitches interesting. Thank you so much for reading my article, and I hope you come back in two weeks for more awesome Pokémon content!
*In the safari zone, the player is not allowed to damage the opposing Pokémon like he or she would in a normal battle. Instead, the player must throw safari balls at the Pokémon and hope one works. Additionally, Pokémon in the safari zone can run away from the player, unlike in regular wild encounters.