Glitch items are invalid items in the Pokémon games. Unavailable items such as Pokémon FireRed and LeafGreen key items in Pokémon Emerald may also be considered to be glitch items, as well as unused/unavailable items such as ????? (hex:07) and BoulderBadge (hex:15) — see unused items.
Glitch items may have special uses (in Generations I and II), different names (in Generation I and to an extent Generation II) and Poké Mart buy and sell price data.
Some glitch items such as "9F" (hex:5E) in Pokémon Red and Blue or Pokémon Yellow, or "RIVAL'S" (hex: A2) in Red and Blue, or "o" (hex:94) in Yellow always have the same use(s).
Glitch items occupy index numbers hex:00, hex:54 through to hex:C3 and hex:FB through to hex:FF.
Types of glitch items:
Unterminated name glitch items: These are items without a 0x50 byte in the first 20 characters of their name. They can be used for various buffer overflow techniques with specific tiles on the screen. When the A-Button is pressed on them without a 0x50 sub-tile present on the screen, it is most likely the game will freeze.
Lag name glitch items: These cause the items list to temporary freeze until the player taps A or B a specific number of times while scrolling up/down. It is advised to tap B instead of A due to the risk of a game freeze from an unterminated name glitch item, which could freeze the game, and potentially destroy the save data, especially on Nintendo 3DS Virtual Console versions.
Rival's effect glitch items: These glitch items are capable of causing the Rival's effect; an effect that opens a menu and allows the player to walk through impassable tiles once it is closed with B.
String printing glitch items: These may include a variable string in the item's name
Map distortion glitch items: Documented by TheZZAZZGlitch, these glitch items have the capability of corrupting the map when their name is shown, in an area with a lot of grass. A player name that is four characters long or more is also required.
Arbitrary code execution glitch items: These glitch items do not have hard coded effects; instead the effects are sourced from a pointer in rewritable memory, such as RAM. Depending on the source pointer, it is possible to manipulate the item to do almost anything in game. 8F (0x5D) and ws m (0x63) are infamous examples in the English versions.
Arbitrary code execution (initially runs D983, number of Safari Balls and the Day Care data, stored Pokémon data which follows. A special Day Care Pokémon name can be used to redirect the code directly to a location of the player's choice, otherwise if there is no Safari Ball/Day Care data, stored Pokémon data can be used like English Yellow's ws m and English Red/Blue's -g m.
Create encounter chains from a Trainer escape glitch encounter by using it when the menu pops up in a specific map. Must be used indirectly via unterminated name glitch item, or in combination with a unterminated name glitch item, to avoid a freeze when CFC4 is odd.
In addition to the regular glitch items in Gold, Silver, Crystal, all of the normal TMs and HMs will serve as glitch items when used outside of the TM/HM pack, due to having invalid execution pointers.
Below are a number of useful TMs and HMs to use outside of the relevant pocket.
Executes arbitrary code from FA10 (Echo RAM for DA10, which is somewhere in the expanded Balls pocket. If "(item) x195", "Star Piece x 252" (represents C3 84 FB - a jump to FB84, box 4 name character 2) are stored at DA0F, then this will serve as a bootstrap code to stored box Pokémon names.
Executes arbitrary code from FA10 (Echo RAM for DA10, which is somewhere in the expanded Balls pocket.
Executes arbitrary code from FA47 (Echo RAM for DA47, which is somewhere in the expanded Balls pocket.
Executes arbitrary code from FA47 (Echo RAM for DA47, which is the caught data for party Pokémon 1. The player can make a jump to somewhere more useful (via C3 yy xx), using Pokémon 1 as a slide Pokémon if necessary.
Executes arbitrary code from FA69 (Echo RAM for DA69, which is somewhere in the expanded Balls pocket; like TM21.
Executes arbitrary code from FA69 (Echo RAM for DA69, which is somewhere in the expanded Balls pocket; like TM25.
Executes arbitrary code from FA6A (Echo RAM for DA6A, and DA6A is the least significant Defense EV byte of the second Pokémon in the party. The Speed EVs word follows, and the player can make a jump to somewhere more useful (via C3 yy xx). This may be possible without trading, but getting the exact EVs would be tedious and it would be hard to keep track of them without a memory viewer. Through arbitrary code execution in Pokémon Red, Blue, and Yellow, the second Pokémon may be manipulated to have Defense and Speed EV values that the player desires.
Executes arbitrary code from F418 in Echo RAM (essentially D418); the third character of the fifth enemy Pokémon's nickname. Through arbitrary code execution in Pokémon Red, Blue, and Yellow, the player may rename this Pokémon to include a jump instruction (e.g. to C3 F2 D8 bytes which reads jp D8F2, i.e. jumps to the first item in the item storage system).
Allows the player to offset their position on the map, as documented here.
There are many glitch items in these games named "????????" with no apparent use other than for arbitrary code execution setup. The hex:FFFF "????????" can be distinguished for having the 'return to menu' sprite as its sprite.
These games feature a hex:0000 glitch item which is referred to as "None" when forced as a Poké Mart gift. There are also glitch items with index numbers between hex:0071 and hex:0086, and a large number of other glitch items which may be nameless.