Jump to content

Shiny Rate Offset for All Generation 4 Pokemon Roms


Rabid_Pastry

Recommended Posts

Let me just start by saying what a pain it was to figure all of this out. So, I'm putting my knowledge out here in order to help others enjoy playing Gen 4 Roms with an increased shiny rate. The base of my knowledge is based on this Reddit Post:

 and from there I reverse engineered the rest of the games. Note that I did this with English version Roms. I don't think this will work for other languages but I'll include a way to try. So, without further ado I'll explain the process.

Before starting, you will need to download a hex editor. I used HxD for this process and here's the link: https://mh-nexus.de/en/hxd/

For Pokemon Diamond and Pokemon Pearl (I only tried Pearl but they should be similar enough it doesn't matter), take your rom and open the .nds file in the Hex Editor. Hit Control + G and search for the offset 0006CAC0. Starting at Line 4, you should see the values 08 28 01 D2. For full odds possible without hacking, replace the "08" with "FF". This will give you a shiny odds of 1/257, or 0.4%. Make sure to save the file.

For Pokemon HeartGold and SoulSilver (I only tried HeartGold but again it shouldn't matter), do the same as you did for Diamond and Pearl but search for the offset 000559A0. Starting at line 0A, you should see the values 08 28 01 D2 01. Again, change the "08" to "FF" for 1/257 shiny odds. Make sure to save the file.

From there, I recommend starting that Rom or making a randomizer of that specific rom and doing encounters until you find a shiny to double check. Should take roughly 150ish, at least from my experience with testing. A 100% guarantee that it's working is that if you do a playthrough and a opponent trainer sends out a Pokemon that is shiny. Then it definitely works because that only happens when the rate is boosted this way.

If for some reason you can't find the value, specified or you want to try a different rom language, try this method that I used to find the offsets. For Pokemon Diamond, Pearl, and Platinum, hit Control + F and click on the Hex Values tab. In the bar, search for "08 28 01 D2 01 20 00" and change the "08" value ONLY! For HeartGold and SoulSilver, search for "08 28 01 D2 01" and replace the "08" value ONLY! Hopefully that works, let me know below.

NOTE***: I tried sharing my files with my friend so he could use my modified shiny boosted roms and they weren't working. Changing and saving the Rom .nds file ALSO modifies the .nds.bak file. You need both the modified .nds file and the .nds.bak file that goes with it for this to work. So if it isn't working there may be an unknown problem with your .nds.bak file.

If this tutorial is confusing or hard to follow please let me know and I will make a YouTube video from start to finish to help. Thanks and happy gaming!

Edited by Rabid_Pastry
  • Like 1
Link to comment
Share on other sites

For the record, this method doesn't make your Pokémon shiny. If you used any value larger than 8 (basically from 0x09 to 0xFF), it basically lowers the xor threshold for them to *appear* shiny.

image.png

Focus on the 8/65536 part. Now, recall that you've modified an 8. That's what you changed.
So by changing the value away from 8, you're merely increasing the range of Pokémon that would appear shiny in your game (even if they weren't)

So with that same PID, if the mon was transferred/traded away to other unmodified games, they'll continue to be non-shiny.

Here's an example. I got the exact same Gengar, and it appeared shiny in-game, while not being shiny in PKHeX.
image.png

(If you have doubts, here's the pk4: 094 - HAUNT - 9B274A7D4DCF.pk4)

Anyhow, this definitely works, and is fun for single player play. Just don't expect the shininess to retain if trading/transferring out.

  • Like 1
Link to comment
Share on other sites

  • 1 year later...
  • 1 month later...
  • 4 months later...
On 8/16/2021 at 7:40 AM, Rabid_Pastry said:

Let me just start by saying what a pain it was to figure all of this out. So, I'm putting my knowledge out here in order to help others enjoy playing Gen 4 Roms with an increased shiny rate. The base of my knowledge is based on this Reddit Post:

 and from there I reverse engineered the rest of the games. Note that I did this with English version Roms. I don't think this will work for other languages but I'll include a way to try. So, without further ado I'll explain the process.

Before starting, you will need to download a hex editor. I used HxD for this process and here's the link: https://mh-nexus.de/en/hxd/

For Pokemon Diamond and Pokemon Pearl (I only tried Pearl but they should be similar enough it doesn't matter), take your rom and open the .nds file in the Hex Editor. Hit Control + G and search for the offset 0006CAC0. Starting at Line 4, you should see the values 08 28 01 D2. For full odds possible without hacking, replace the "08" with "FF". This will give you a shiny odds of 1/257, or 0.4%. Make sure to save the file.

For Pokemon HeartGold and SoulSilver (I only tried HeartGold but again it shouldn't matter), do the same as you did for Diamond and Pearl but search for the offset 000559A0. Starting at line 0A, you should see the values 08 28 01 D2 01. Again, change the "08" to "FF" for 1/257 shiny odds. Make sure to save the file.

From there, I recommend starting that Rom or making a randomizer of that specific rom and doing encounters until you find a shiny to double check. Should take roughly 150ish, at least from my experience with testing. A 100% guarantee that it's working is that if you do a playthrough and a opponent trainer sends out a Pokemon that is shiny. Then it definitely works because that only happens when the rate is boosted this way.

If for some reason you can't find the value, specified or you want to try a different rom language, try this method that I used to find the offsets. For Pokemon Diamond, Pearl, and Platinum, hit Control + F and click on the Hex Values tab. In the bar, search for "08 28 01 D2 01 20 00" and change the "08" value ONLY! For HeartGold and SoulSilver, search for "08 28 01 D2 01" and replace the "08" value ONLY! Hopefully that works, let me know below.

NOTE***: I tried sharing my files with my friend so he could use my modified shiny boosted roms and they weren't working. Changing and saving the Rom .nds file ALSO modifies the .nds.bak file. You need both the modified .nds file and the .nds.bak file that goes with it for this to work. So if it isn't working there may be an unknown problem with your .nds.bak file.

If this tutorial is confusing or hard to follow please let me know and I will make a YouTube video from start to finish to help. Thanks and happy gaming!

is it like this? image.png.3a591a4dda9887636295f6f0d9d116af.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...