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.
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.
In the example:
0111 0110 1101 0 +
0011 0101 0001 1
0100 0011 1100 1
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.
In the example:
0010 0100 0011 1 +
1110 0101 1010 1
1100 0001 1001 0
2d. I will call this number the egg's MPID.
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.
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.
Well, that's it - you all know my secret now - enjoy!!!