Gen 1 and Gen 2 of Pokemon are full of amazing, yet hilarious glitches. My favorite glitch is ACE (Arbitrary Code Execution) using glitched items. You can literally manipulate the game's code and add your own code. Here's a explanation, the games are written in gameboy z80 assembler. Each item is represented as a hex value, and each hex value represents assembly code. Tossing a certain value of an item will help manipulate hex values, and using a glitch item executes your code. From there you can obtain every Pokemon in the game, or for more advance code manipulate Pikachu's PCM cry to another PCM clip, and change the text for a more simple example.