Regarding the 2nd Gen "Celebi" Glitch (stop me if you've heard this one)
Posted by: Okk
Date: 2012-06-12 04:50:40
I'd also like to state that I also have not researched this theory; it's possibly that somebody already came up with this idea years ago, and this is all old hat, in which case I apologize.
I've been thinking about the Gold/Silver/Crystal "Celebi" glitch lately. You know, the one that lets you obtain any Pokemon (except Ledyba.) And Celebi is a Pokemon. Thus, The Celebi Glitch. Yes, it's a terrible name that doesn't do justice to the magnitude of the glitch, but I didn't name it, so don't blame me.
At some point after learning about this glitch, I introspectively posited the question, "If we can manipulate this Pokemon's species and held item, then might it be possible to also manipulate its other vital statistics?" To be more specific, I want perfect IVs.
Let's start by taking a look at the Generation 2 Data Structure:
http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_data_structure_in_Generation_II
As you can see, the index number of move 3 (which becomes the Species) is stored four bytes after the species itself. Similarly, the fourth move (which becomes the held item) is stored four bytes after the Pokemon's held item. Thus, I theorize that the Celebi Glitch truncates a Pokemon's data by four bytes. So, what I'm looking at are the PP values for moves 3 and 4, which are four bytes after the Pokemon's IV data. Theoretically, they should become the Pokemon's IV data, assuming the Pokemon's data is truncated by four bytes.
But take a look at this:
http://www.youtube.com/watch?v=BIz1RAg25yM
This is a variation on the Celebi glitch, and you might already know of it. However, this fellow doesn't seem to realize the full implications of what he's accomplished here. About seven minutes in, he pulls a Pokemon out of the day care which turns out to be Hypno. He claims that the Pokemon is Hypno because the doner Pokemon's third attack was Agility, but this video shows evidence to the contrary. It appears that the move Agility was never even in the third slot at all. Given that the resulting Pokemon has the nickname CCELEBI, it appears that its data has been truncated by only three bytes!
I believe that this method actually truncates a Pokemon's data by ONE byte, and is repeated four times.
If this is true, consider for a moment how much of a Pokemon's data we can actually manipulate. Experience total, EV values, Friendship, Current HP and possibly Level are all factors over which we can demonstrate a resonable degree of control. Thus, consider this proposed theoretical method of yielding perfect IVs:
1. Max out your "doner" Pokemon's happiness.
2. Truncate by one byte.
3. Move four should now show 63 PP and have 3 PP Ups applied. Swap the positions of move 4 and move 1.
4. Max out happiness again.
5. Truncate by one byte.
6. Move four should again show 63 PP and have 3 PP Ups applied. Swap the positions of move 4 and move 1 again.
7. Give your Pokemon a held item that has the same database number as the Pokemon species you desire.
8. Truncate by one byte.
EDIT: Before truncating each of the first two times, it might be a good idea to make sure your Pokemon is holding any item that corresponds to a valid Pokemon species.
Boffo. You should now have your desired Pokemon, with maxed out IVs. The old IV values should be shifted up to the Special EVs, but if the Pokemon was freshly caught, its other EVs should still be blank.
Now, if you don't mind things getting needlessly complicated and/or tedious, it should be theoretically possibly to control the rest of its data too, including the moves it knows and ite Original Trainer ID number. Unfortunately, I don't have information on what exactly happens to its nickname or the Original Trainer's nickname; if anybody knows precisely how this information is stored in memory, it would be appreciated.
Now, hypothetically, even if I'd made a mistake and everything I just typed is useless, I think it may still be possible to have a degree of control over the pokemon's IVs by manipulating the remaining PP of the doner's moves and how many PP Ups have been applied.