How to breed shinies in Pokemon Emerald

So, as you all know, I've figured out a way of breeding shinies in Emerald. Like I've said all along, I did plan on making the information known to everyone, so here we are. I hope keeping it to myself for a time doesn't majorly offend anyone. I am not going to explain my reasoning here, because I am sure that's not why you are reading this! For the record, even Tase said she would have done the same thing when I explained my thoughts to her, so I feel OK.

One of the more practical reasons for delaying the announcements is that (obviously) it has taken some effort to type it up, and I have wanted to do this properly. I hope you appreciate it, given that I don't have heaps of time for Pokemon these days.

Feel free to make comments here, or ask questions. Make sure you read and re-read this post before you ask anything like "how do i.......?" because I went to a lot of effort explaining how the method works, and I won't have time to individually answer questions that can be answered by reading it for yourself. On the other hand, if something actually does need improving, I'm happy to hear any constuctive criticism on the layout, explanations etc, and will gladly try and update this post if will help make it easier to digest.

Also, please keep "moral" objections to a minimum! Not everyone likes VBA, and I can live with that. Some people object to AR use too. But the trick is based on no more "perverse" methods than those used by people like Negator and Aragornbird (and myself) to catch legends or ditto's whose frames occur hours into the game. I know that some people will be unable to use this trick because of a lack of equipment; please do not complain about that either - I have simply come up with a method that works, and could not think of another one.
2. Background.

Let me start by giving you a brief idea about how I thought of the trick.....

I had actually been thinking for a long time about how to breed shinies on Emerald. My first idea was to try and create a save state exactly one step before an egg was about to be (possibly) created, and then see if I could move at just the right time for a shiny egg to be produced. It is interesting that a couple of Smogoners (eg Negator) asked if this was my trick, so it seems like some other people have thought of this idea. It might actually work, but some kind of knowledge about how egg PID's are created would be necessary - at this point in time, not even Mingot knows how that is done. So I ended up abandoning that approach.

In the end, the idea I came up with was far simpler.

Say you have two gameboys and two Emerald cartridges. If you receive an egg on one, you can clone it and hatch it on both games. Assuming the games have different ID/SID combinations, you will have a 1/4096 chance of the egg hatching shiny on one of the games. This is still a small chance, but you have effectively doubled your odds from the original 1/8192. If you have more cartridges (possibly even other 3rd Generation Pokemon games) then your chances will increase even more. If you had access to 100 cartridges, then there would effectively be roughly a 1/80 chance of a given egg hatching shiny on one of your games.

Now, you will still need to hatch the same egg 100 times to have a 1/80 chance of getting a shiny. Each of those 100 times involves a trade also. And you might have to repeat the process 80 times until you hatch a shiny, meaning that you still had to hatch 8000 eggs. (And you are not even guaranteed a shiny after all this.) Of course, if you had a lot of friends, you could clone and trade to one person; you now both clone and trade to another person; and repeat this, at each step doubling the number of people cloning/trading, before finally all hatching the egg at the same time. But it is still very time consuming, and hardly seems easier than just hatching thousands and thousands of eggs until you get lucky. And besides, you and your 100 friends could just hatch eggs at the same time, eventually finding a shiny the normal (luck based) way.

So, in a nutshell, my method is all about making this process more manageable.

The gist of the method is this (more specific details below). Basically, I used the VBA to restart Emerald over and over and over, creating many many different files (save states), each with its own unique ID/SID combination, recording each of these combinations as I went - this step essentially replicates the "many friends" idea, but rather with one person owning lots of games. Then each time I received an egg, I checked not only its nature/ability/gender, but also its PID; I then checked the PID against the ID/SID list to see if it would hatch shiny on any of my games, discarding any eggs that didn't work, until I found one that did. Then I would SR the egg until it came up with perfect IVs and, finally, hatch it on the relevant game. The crux of the method is that knowing the PID of the egg, and the ID/SID combination of a great number of games, will allow you to eliminate the need to hatch the egg multiple times checking for shininess, and only hatch it on the game you know will produce a shiny.
3. The Method.

So, that's the basic idea behind it. Now to the details. Before starting, I need to emphasise that this method is nowhere near as "easy" as the corresponding method for breeding shinies in the 4th generation. In particular, you will actually have to do some basic mathematical calculations yourself - specifically converting numbers between decimal, hexadecimal, binary (just use google to find an online converter). Once you are familiar with the strategy though, and have everything set up, it goes rather smoothly, so please be patient if you want to try it.

3.1. What you need.

First and foremost, you will need to use the VBA, and a flashcart to transfer save games from the VBA to a (real) game cartridge. The ability to create and move save states is pretty much essential for this whole process. I realise some people will not like this, but I was unable to think of a way to avoid it. If you don't like it, then don't bother trading for legends from Negator/Aragornbird (or even some of my own), or any of the other amazing things that exist only because of VBA. You will also need two Gameboys and two Emerald cartridges, since there will be some trading going on.

Secondly, you will need to have some kind of knowledge of how to breed in Emerald. I will assume you know this. If you don't, then you really should go and look for the information elsewhere on this site before reading any further - this guide does not address this in any way, shape or form. A basic understanding of terms like ID, SID, PID, etc will prove useful too.

Finally, you will need to be able to:

check your SID, and

check the PID of an egg.

You can use an action replay code for the first (find it using google - do not ask about it here). I'll address the second later on. First I'll describe the method, which comes in two phases.

3.2. Initial phase - creating and organising the save files.

This first phase is a kind of setting-up phase. You need to do this step first before being able to hatch shinies. The more time and effort you put into this phase the quicker the second phase will be. If you plan on hatching lots and lots of shinies, then I highly recommend you work very hard on this phase.

So what you need to do is this............

On the VBA, start a new game of Pokemon Emerald. Find out your ID and SID. The only SID checking code I know of works by displaying your SID instead of your regular ID in a pokemon's summary box. So to do this step you will have to play at least as far as the first battle, where you save the professor from the zigzagoon. (Check your trainer card to see your regular ID.) Once you know your ID and SID, you should create a save state. You will also need to record a 13 digit binary number as follows:

1. Convert your ID and SID into binary, and write them on two lines, one above the other. You will need these to be 16 digits long, so you may need to add zero's to the front.

As an example, one of my ID/SID combinations is ID=30420, SID=13594. Converting to binary gives:

0111 0110 1101 0100
0011 0101 0001 1010
​

2. Now remove the last 3 digits from both numbers.

In the example:

0111 0110 1101 0
0011 0101 0001 1
​

3. Next, "add" the two rows together in the following way. For each column, add the numbers according to the rules 0+0=1+1=0, and 0+1=1+0=1. Essentially we are recording a "0" if the numbers agree in that column, or a "1" if they are different.
​

4. Make a note of this final number. It is the most important number associated to this game (save state). I will call it the MID ("M" for "merged").

​

OK, you are now going to repeat this process many times, until you have a big collection of save states (the more the better). It is important that you have a good way of managing them. Personally, I have a folder called "VBA Save States" or something, and inside it folders named "1" up to "23", each with 9 save states inside. I have a list of the 207 corresponding MID's, arranged in numerical order, each marked with the folder and save state they correspond to.

3.3. Secondary phase - breeding.

Now you want to breed some shinies.......

As a first step, you will need to work out what spread you are going for, what egg moves etc. I am going to assume you know how to do this - if not, read a guide. So let's suppose from now on that you have two flawless parents in the daycare, with an everstone on the female/ditto and the required egg moves (if any) on the male. Assuming this, you will now follow these steps:

1. Ride your bike until the man has an egg. (I strongly recommend that you have pokemon of the same species with different OT's, so that this will happen as quickly as possible. This is not always possible - some pokemon are all one gender, such as Blissey or Tauros.)
​

2. Create a save state. Receive the egg, and check the nature/ability/gender. If it matches what you want, check its PID. (I will explain more about how to do this later on.) You will now have to create a 13 digit binary number in much the same way as before. Follow these steps:
​

2a. Convert the PID to binary, and add initial zero's (if necessary) to make it 32 digits long.
​

As an example, a PID might be 243EE5A8 (in hexadecimal), which converts to
​

0010 0100 0011 1110 1110 0101 1010 1000.
​

2b. Now split this up into two rows of 16 digits.
​

In the example:

0010 0100 0011 1110
1110 0101 1010 1000.
​

2c. Again, delete the last 3 digits from both rows, and add them according to the rule above.
​

2e. Examine your list of MID's created in the initial phase, looking for a game whose MID matches the MPID of the egg. If you find a perfect match, then this egg will hatch shiny on that game!
​

3. Now that you know this egg will hatch shiny on that game, you will want to SR that egg until you get one with perfect IVs. Note that you will need to use save states to do this, because you need to know the pokemon will hatch flawless, but still have it in its egg. I will explain more about this later on.
​

4. When you have got the egg with perfect IV's, trade it to the game whose MID matches the egg's MPID and hatch it. If everything was done correctly, it will be shiny!

​

There you are, a flawless shiny bred in Emerald, ready to learn all those cool Emerald tutor moves!!

4. Some technical details.

This section addresses two important details I brushed over above: how to check the PID of an egg, and how to SR the IV's of the egg.

4.1. How to check the PID of an egg.

The only thing I can suggest for this step is that you keep the save state with the uncollected egg (which you know is the right nature/etc), but then hatch the egg, migrate it to the 4th generation, and use pokesav to see its PID. If someone has a better idea I would be happy to hear it, especially if it does not involve migration.

4.2. How to SR the IV's of an egg (and keep it as an egg).

So, at this point you have a save state with the uncollected egg - call this Save State 1, or SS1 for short. For simplicity's sake, let's say the frame you're aiming at is at 20.3 seconds. You will need to follow these steps:

1. Save the game (using the in-game menu) and reset the game, while starting a stopwatch as usual.
​

2. Collect the egg at 20.3 seconds (or as close as you can get to it) and create a second save state, say SS2 (Save State 2).
​

3. Hatch the egg and check its IV's. If they are not what you were after, reset and try again. If they are perfect, then SS2 has a flawless egg which will hatch shiny on the game whose MID matches the egg's MPID.
​

Obviously this process can be sped up by creating a save state just before 20.3 seconds, so you don't have to wait 20.3 seconds each time (this is especially useful on spreads that require a wait of several minutes).

5. Final comments.

5.1. Credits.

Although this was my own original idea, it pretty much goes without saying that none of this would be possible without the efforts of Mingot (and others) whose research has made working in emerald so easy.

Also, it is worth mentioning that it does bear some kind of similarity to the "shiny hatching clubs" I have seen on some other forums, where the basic idea is that each member shares the ID/SID of any game they have, and then members collect eggs, recording PIDs, and seeing if they can hatch shiny on any other member's games. To the best of my knowledge, these people were more interested in collecting shinies (as I was before coming to Smogon), and I don't think there was ever an attempt to breed good ones. It doesn't really matter but, for the record, this is not how I thought of my idea.

5.2.I can help.

Like I said before, I have put in the hard work of creating 207 save files with their own MID's. This means that any given egg has roughly a 1/40 chance of hatching shiny on one of my games. If anyone is interested, I can post my list of MID's somewhere. Then, if anyone comes up with an egg whose MPID matches one of my MID's, they can send me the egg (this can be done over the internet - say by email - using the VBA) and I will happily hatch it shiny for them. Note that if you do this, the OT will be BOZO of course, so you will have to keep that in mind.

The main reason I include this offer is because the initial phase is the most time-consuming and unrewarding, and would feel my efforts were even less in vain if I was able to help someone else. I am also able to tutor any Emerald moves onto your pokemon at no extra cost.

5.3. My shiny adamant legends

It is worth mentioning a connection here to the near-flawless adamant legends I reported in the DMP thread recently. Once I had 200+ games, I figured I may as well see if I had any decent shiny Method 1 spreads, and that is the best I came up with. Actually, I had MID's that were only one digit away from making Negator's 29/x/29/29/31/31 timid spread shiny, and I also missed out on Aragornbird's flawless timid spread by one digit (although I would not have had the patience to wait for them, and had already traded for them anyway). If anyone else manages to replicate my method, they might also get lucky and find some good shiny Method 1 spreads that they can use too.

Hmmm, since I assume you are done, looking at it more thoroughly than when you PMd it to me it seems pretty insane...almost not worth it. Im almost convinced to try it just because of the last section about the shiny spreads and i want a few pokemon really badly.....i just dont know if it will be worth it....

Also, dont be surprised if people accuse you of hacking. The fact that you need pokesav,vba, and save states just to do it is going to make some people not like it.

Awesome job though =/

EDIT: Do you play through all of the savs? Im guessing just warp to Mauville?

Hmmm, since I assume you are done, looking at it more thoroughly than when you PMd it to me it seems pretty insane...almost not worth it. Im almost convinced to try it just because of the last section about the shiny spreads and i want a few pokemon really badly.....i just dont know if it will be worth it....

Also, dont be surprised if people accuse you of hacking. The fact that you need pokesav,vba, and save states just to do it is going to make some people not like it.

Awesome job though =/

EDIT: Do you play through all of the savs? Im guessing just warp to Mauville?

Click to expand...

i am anticipating some people of complaining about the legitimacy of the method. but it is absolutely no more hacking than someone checking their SID and then using VBA to catch a shiny legend that appears fifty million frames into the game.

also, strictly speaking, pokesav is not required to check PID's.

as for playing through the savs, no. all you need to do for each game is to get as far as is necessary to know your ID and SID. if you then find an egg that will hatch shiny on a given game, then of course you will need to go far enough to be able to trade. but by that stage, the prospect of getting a flawless shiny pokemon will outweigh the "burden" of spending a few minutes catching zigzagoons :P

well done bozo to bad i don't have a vba or any of that fancy crap just a plain old gameboy advanced and an emerald cart.....

great work on this though.

Click to expand...

one thing i'm interested in is trying to think of a way this could be done without VBA. i dont think the method as it stands is adaptable to a non-VBA setting. but most of my pokemon-time is on the train; hence i can't do much of this stuff.

one thing i'm interested in is trying to think of a way this could be done without VBA. i dont think the method as it stands is adaptable to a non-VBA setting. but most of my pokemon-time is on the train; hence i can't do much of this stuff.

Click to expand...

I really dont think it is possible without VBA, it really looks like you need save states, i dont know how you would check the PID.....

The only thing I can suggest for this step is that you keep the save state with the uncollected egg (which you know is the right nature/etc), but then hatch the egg, migrate it to the 4th generation, and use pokesav to see its PID. If someone has a better idea I would be happy to hear it, especially if it does not involve migration.

Click to expand...

RSEDecode will display the PID of a pokemon; I believe it works with eggs too, if not there's always fast hatch.

Yeah, I have the formulas and everything, but I still don't know why the frame counter which controls the first half of the PID doesn't correspond exactly to the normal RNG...

Actually, that's given me an idea. For the 5 PIDs I tested, the difference was around 30 frames. I found out that the frame counter resets at 13 frames in (I think), so that leaves 15-20 frames. The RNG starts right when you press A+B+Start+Select, right? I think that the frame counter starts when you release at least one of them.
So for egg PID abuse, it would be best to hard-reset rather than soft-reset, to keep the difference consistent.
There's still the problem of generating the egg when it's needed, though... I guess that depends on the normal RNG. What are the probabilities of getting an egg for how much the Pokémon like each other?

EDIT: Could someone help me out here? I need someone to save when the Day-Care Man doesn't have an egg, hard-reset, then cycle around and collect the egg. Repeat a few times, then check the PIDs of the Pokémon (migrate to D/P/Pt and Pokésav, maybe?) and post them here. I just want to check whether my theory is correct, and if so, what the frame difference is between the RNG and the frame counter. Once I have that, I just need to figure out how the game checks whether an egg should be generated, and then I could probably make a program to tell you your shiny frames for breeding :D

RSEDecode will display the PID of a pokemon; I believe it works with eggs too, if not there's always fast hatch.

Click to expand...

yep - rsedecode makes things work WAY faster, but i was confused about what i was allowed to say about it! sounds like its ok to mention it though, so perhaps i'll use the 2nd or 3rd post to mention how it can be used. i think viletung has developed something for help with organising MID's and MPID's.

i didnt know there was a reliable fast egg hatch for emerald. but given that you can speed up the emulator, it probably doesnt save that much time? and yes, rsedecode does work on eggs too.

i second that! its the key step towards breeding shinies without VBA, although my guess is that it will be fairly difficult to implement, possibly requiring to move at just the right time.

Click to expand...

That's no worse than having to hit A at just the right time for anything else. ;) The difficulty probably lies in the fact that not every PID will be available. (Due to the fact that on any given step an egg may or may not be created).

Could someone help me out here? I need someone to save when the Day-Care Man doesn't have an egg, hard-reset, then cycle around and collect the egg. Repeat a few times, then check the PIDs of the Pokémon (migrate to D/P/Pt and Pokésav, maybe?) and post them here. I just want to check whether my theory is correct, and if so, what the frame difference is between the RNG and the frame counter. Once I have that, I just need to figure out how the game checks whether an egg should be generated, and then I could probably make a program to tell you your shiny frames for breeding :D

Click to expand...

I'll do some quick and painless Magikarp hatching for you when I get a chance :).

And great work, Bozo! Hopefully we can crack this even more and figure out shiny Egg frames without VBA or any other external devices!

You could always get a Nintendo screwdriver and fix the buttons. They're pretty easy to fix- they're kept connected by these dodgy wire loop things. If you can put those back in position (not hard), it'll work.

Yeah...I have 400 SMG files on my USB, but if I try to load them into VBA, I get an Error, something with 'unsupported type'....which sucks.

Oh and the thing you're mention about: It's a little online program, you can upload the SGM file + ID + SID, then the program will calculate the MPID and add it to the Database, and with a small search program I can easily search through all my SGMs =)

I was wondering about this and maybe it could be possible to see whether the shinyness is generated at the same time as the spreads by using the woman that gives you a wynaut egg

Click to expand...

The Wynaut egg isn't like a normal bred egg. With a normal egg, the gender/nature/ability/color are determined while you're walking around, and the IVs are determined when you take it. For the Wynaut egg, everything is determined when you take it, so the shininess will be coupled with the spreads, which is NOT true for standard eggs.

edit: i did some research into eggs being produced and emloop when the text is in google translate there seems to be a bit that says eggs are decided every 255 steps. I also found upon trying this that the step counter is not reset when you reset the game so you can save a step before the egg is produced

Edit: This is what I got when I put some of the emloop stuff in a translator:

1) Inserting check in “hatching place” with [emetaima], drawing up the list.
2) The individual value which becomes matter of concern is searched.
3) Preparing the parent who matches to that, you raise and deposit to the house.4) When you aim for color, it is necessary to adjust from the frame of the instantaneous 255th step which can do.
5) When you aim for individual value, it is necessary to adjust the instantaneous frame which receives.