Celebi Egg glitch (party method)
|PRAMA Initiative a également une page sur Celebi Egg glitch (party method).|
|Bulbapedia also has an article about Celebi Egg glitch (party method).|
The Celebi Egg glitch is a glitch in Pokémon Gold, Silver and Crystal and a glitch technique of the bad clone glitch and ????? party overloading. It allows the player to obtain an Egg that hatches into a Celebi. An advantage of this glitch over the Celebi trick is that the Celebi is registered into the Pokédex.
The bad clone glitch (one of the parent glitches of this trick) was documented by Paco81, as was his early methods on obtaining Celebi.
1) Obtain an Egg with a Pokémon that would know Beat Up as its third move after hatching. To do this, raise a male and female Sneasel to level 57 with the same moves and make sure Beat Up is at move position 3.
2) Obtain a bad clone:
In order to get a bad clone you should deposit more Pokémon than you have ever deposited in a box (and at least 5 or so), then change boxes and reset the game shortly after the Yes/No box disappears (Gold/Silver) or after SAVING... DON'T TURN OFF THE POWER. is fully printed (Crystal).
Getting a bad clone is normally difficult but Pokémon Stadium 2's Game Boy Tower makes it a lot easier if you reset the game after the "Saving..." message appears at one of the aforementioned moments.
To identify a bad clone, the bad clone may be female with a glitched name and become level 1 after you withdraw it from the PC.
1) Deposit the bad clone into Day Care and out to stabilize it into a ?????.
2) Put the bad clone at the top of the party.
3) Use move PkMn w/o mail (other methods do not work) to move a seventh Pokémon to the top of the party.
4) Don't touch the party, and ask the Day Care lady to raise the ????? again. This time don't take the ????? out of the Day Care yet.
5) Deposit the first Pokémon and then the second Pokémon, and use move PkMn w/o mail to move the Egg to the top of the party.
6) Deposit Pokémon 2-5, which may shift back bytes for the Egg's name each time. After the depositing, Beat Up [0xFB] (move 3) will shift into the Pokémon species byte 2, allowing you to obtain Celebi after hatching the Egg.
7) Use the Bicycle to cycle around until the Egg hatches into a Celebi.
8) If the Celebi is level 0, raise its level through taking it into Day Care and out, a battle, or a Rare Candy. Ideally raising it to level 1 will allow it to learn its starting moves Leech Seed, Confusion, Heal Bell and Recover.
The Celebi/Pokémon will be holding an item based on the ID of move 4.
If possible, this glitch can be used with another move as move 3 to obtain a Pokémon other than Celebi. This depends on the ID of the move, which will be converted into a Pokémon ID. For example, Flail (hex:AF) would result into Togepi (also hex:AF).
To see which IDs correspond with which moves, Pokémon and items, refer to The Big HEX List.
In Gen II, the party Pokémon data are stored in the wram as follows:
Party count (1 byte) Party Pokémon 1 species (1 byte) Party Pokémon 2 species (1 byte) ... Party Pokémon 6 species (1 byte) Extra space used for end-of-party marker (1 byte) Party Pokémon 1 data (48 bytes) Party Pokémon 2 data (48 bytes) ... Party Pokémon 6 data (48 bytes) Party Pokémon 1 OT name (11 bytes) Party Pokémon 2 OT name (11 bytes) ... Party Pokémon 6 OT name (11 bytes) Party Pokémon 1 nickname (11 bytes) Party Pokémon 2 nickname (11 bytes) ... Party Pokémon 6 nickname (11 bytes) Unused (22 bytes) Pokédex caught flags (16 bytes) Pokédex seen flags (16 bytes) ...
Of course, the species list is usually redundant since the species information is stored in the 48-byte Party Pokémon data struct (one exception is when the Pokémon is an egg, the species list will have EGG (hex FD) while the data struct has the real species). The list is terminated with an FF end-of-party marker, which is completely redundant since the party count is stored in the first byte, but the code uses the end-of-party marker in many places because it is faster to check for a FF marker than it is to keep track of numbers. The key to this glitch is to corrupt this FF marker.
To this end, a ????? (hex 00) is put at the top of the party, then a seventh Pokémon is moved into the party, which is possible because Bill's PC recognizes both FF and 00 as end-of-party markers, and thus thinks the player only has 0 Pokémon in the party.
When a Pokémon is inserted into the party with the "move PkMn w/o mail" option, it is first inserted into the species list (according to the FF end-of-party marker), then inserted into the nickname list, OT name list, and Pokémon data list in that order (according to the party count byte). The insertion into the species list bumps the FF marker to the first byte of "Party Pokémon 1 data" (the data of ?????), then the insertion to the Pokémon data list bumps it to the second Pokémon data slot, in sync with the species list.
Now the ????? is removed from the party by depositing it in the Day Care (necessary because it is "invisible" to Bill's PC), which removes it first from the species list (again, according to the FF end-of-party marker), then from the OT name list, the Pokémon data list, the nickname list (by shifting the entire chunk of data under the removed Pokémon, up to Pokémon slot 6, up a slot). Now, removal from the species list finds the first FF marker in the first byte of "Party Pokémon 2 data", so it corrupts "Party Pokémon 1 data" by shifting everything up a byte, and setting the last byte to FF. Then the FF marker in the first byte of "Party Pokémon 2 data" is removed.
Depositing the first Pokémon into the PC will similarly only corrupt its own data (which doesn't even matter, because depositing a Pokémon into the PC first copies it into the box, then removes it from the party), but when depositing the second Pokémon, there is probably no more FF mark in the Pokémon data, which means the corruption extends to the OT names, nicknames, Pokédex flags, and possibly beyond that. This is visible in the linked video, as the nicknames of the Sudowoodos become "UDOWOODO".
Moving the egg to the top of the party, as mentioned above, inserts into the species list and thus also causes corruption, but it just reverses the corruption caused by removing the second Pokémon (which is probably a good thing, as we are not left with more unprintable characters on the screen). Now depositing four Pokémon will corrupt again in the "shift up" direction, and this time the corruption touches the data of the egg, which is our real goal, shifting the third move up 4 bytes to become the species. (Interestingly, the reason the game allows you to deposit all four Pokémon, leaving only the egg, isn't that Bill's PC thinks you have 6 Pokémon, but that due to data corruption, the egg doesn't have 0 current HP like normal eggs do.)
Last but not least, we must restore the end-of-party marker to avoid any further corruption when inserting into or removing from the party. Fortunately this is as easy as appending a Pokémon into the party. This can be done by withdrawing one from the Day Care, withdrawing one from the PC, catching one... Basically, any method of adding a Pokémon to the party will do, except "move PkMn w/o mail". Since the egg (or the hatched Celebi) would be the only Pokémon in the party, it is only natural to do one of those things before giving the Celebi to the Day Care or otherwise trying to remove it from the party.