One of the rarest kinds of items in the Pokemon series (other than the rare candy of course), evolutionary stones play a vital role in the main objective of the game, as they allow certain Pokemon to evolve where level and experience does not matter so much. There are only a certain number of Moonstones in the first generation Pokemon games, the rest of the stone types able to be purchased in Celadon City for a price. However through the magic of programming, it is entirely possible to cause one of these stone-specific Pokemon to evolve in battle without a stone.
Explanation of how this is possible is probably the best thing to do first. Every object in the game is assigned its own ‘number’, called a ‘hex variable’ (hex being short for hexadecimal). These are considered numbers, but use a combination of two letters or numbers, from 0-9, and A-F (for example, 0F would be considered a variable). Both Pokemon and items in this sense have their own list of variables. Sometimes a Pokemon shares a variable with an item, so in the case of evolutionary stones, the following Pokemon match with the following evolution stone:
Moon Stone/Exeggutor – HEX 0A
Fire Stone/MissingNo. – HEX 20
Thunderstone/Growlithe – HEX 21
Water Stone/Onix – HEX 22
Leaf Stone/Psyduck – HEX 2F
Note that there are over thirty different types of Missingno., so only the one with a hex of 20 will match up with a fire stone. Now despite the Pokemon and items sharing a similar variable, most operations (a longer string of hex code where a specified number of variables can be input from an external list) are specific to their respective list. However in the first generation of Pokemon games, there is an operation for two different events that is shared by both lists. In Pokemon Red and Blue, this operation is expressed as ‘01XX91CF’, and in Yellow it is expressed as ‘01XX90CF’. These operations are used for two events: to pick up on what Pokemon is sent out in battle, and for what item is currently being used.
To make use of this oversight to evolve Pokemon without using their evolutionary stones, you need to have at least two Pokemon in your party: the Pokemon you want to evolve, which needs to be close to levelling up (so that after the next fight it will level), and the Pokemon that matches its evolution stone (so if you want to evolve a Clefairy, you need an Exeggutor). This can be done with either a wild Pokemon or a trainer battle, but the method in doing both is still the same. Start the battle with the Pokemon that you want evolved first, then switch out with the party member that shares the appropriate stone hex variable. From there, simply defeat the opponent(s), making sure that after the first Pokemon (if a trainer fight) or the battle (if it’s against a wild Pokemon), the first one gains a level. After the combat end, a notification will pop up, alerting the player that the Pokemon is evolving, just as it would if it used the standard method of levelling for its evolution. As most of the stones can be purchased anyways, the best use of this technique is to evolve Pokemon who need the Moonstone, as they are of limited quantity in the game (unless the Missingno. glitch is exploited to duplicate one).