• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Tool: TSK's Shiny Chance Changing tool[v2.1 released: Graphical User Interface, Ruby support]

daniilS

busy trying to do stuff not done yet
409
Posts
10
Years
  • Age 24
  • Seen Jan 29, 2024
Oh really huh, I always assumed the pokemon of random trainers were guarded against being shiny. You can see I haven't gotten around to debugging that part =p

afaik you're right

By the way, this line has no purpose but to get my post to 25 characters because PC likes having retarded rules.
 

Criminon

Forever Spriting
265
Posts
11
Years
Despite me putting it on a 1% chance, I'm finding shinies like 1/6. Anyone else having this problem? Would love to increase chances, and I love the fact that trainer's pokemon can be shiny, however this just seems like its happening way too often.
 

The Shadow Knight

Roaming Kanto
195
Posts
16
Years
  • Seen Jun 26, 2022
Despite me putting it on a 1% chance, I'm finding shinies like 1/6. Anyone else having this problem? Would love to increase chances, and I love the fact that trainer's pokemon can be shiny, however this just seems like its happening way too often.

Hmm, have you tried putting in a numerator and denominator rather than a percentage? I have to admit that the percentage to two integers conversion function was implemented in a bit of a hurry so it might be misbehaving.
 

Splash

But nothing happened.
658
Posts
14
Years
Despite me putting it on a 1% chance, I'm finding shinies like 1/6. Anyone else having this problem? Would love to increase chances, and I love the fact that trainer's pokemon can be shiny, however this just seems like its happening way too often.

The tool didn't do anything wrong 1% is a high enough number as it is because the normal shiny rate is afaik 0.00625% so adjusting it to 1% is deemed really high. Try lowering it to 0.3 or 0.4%..

@TSK I found a bug where in the Pokedex shows only the shiny forms of the pokemon the player catches I hope you check it out sometime..
 
Last edited:

Criminon

Forever Spriting
265
Posts
11
Years
The tool didn't do anything wrong 1% is a high enough number as it is because the normal shiny rate is afaik 0.00625% so adjusting it to 1% is deemed really high. Try lowering it to 0.3 or 0.4%..

@TSK I found a bug where in the Pokedex shows only the shiny forms of the pokemon the player catches I hope you check it out sometime..

I've tried the lower parts as well. Just seemed a bit odd. And I'm not beleiving that 1/6 = 1% chance to find a pokemon. I'm really happy with the program existing, I just want to make sure I fully understand it before I impliment it into my hack. With the ranges. Are these ranges the ID numbers it can land on with a chance of it being shiny? I didn't quite understand it, so I didn't use that part.

Edit: I'm an idiot for not knowing numerators and denominators, ha.
 

The Shadow Knight

Roaming Kanto
195
Posts
16
Years
  • Seen Jun 26, 2022
@Splash: I'll have a look when I find some time and when I've set up my dev stuff on my new laptop. The current version already uses all of the space available for an in-place edit though, I really want to avoid having to start repointing stuff.

@Criminon: Oh and if entering 1 and 100 doesn't work try 15 and 1500 or something. It might be the 1 tripping something up.
 

FIQ

251
Posts
11
Years
  • Seen Sep 15, 2022
Hi!
Just curious, but how does this tool actually work? Because judging by posts in this thread, as I understand it, some Pokémon previously shiny will no longer be Shiny

This makes me wonder, how did you implement this? Is this the best approach to this? I assume you are aware of how shiny generation in Generation III work, hence this tool. Now, why not adjust the final xored result threshould for Shiny? This way, older shinies will retain their status (as long as you don't *lower* the chance). Or, if you want to retain shininess during trading/etc, hook into the routine calculating the personality value/IVs, perhaps generating up to 3 different sets for the Shiny Charm for example. Or if you want full control, hook into the routine, make your own shiny calculation and if it returns a shiny result, force a shiny, otherwise force NOT to be a shiny.
 

The Shadow Knight

Roaming Kanto
195
Posts
16
Years
  • Seen Jun 26, 2022
Hi!
Just curious, but how does this tool actually work? Because judging by posts in this thread, as I understand it, some Pokémon previously shiny will no longer be Shiny

This makes me wonder, how did you implement this? Is this the best approach to this? I assume you are aware of how shiny generation in Generation III work, hence this tool. Now, why not adjust the final xored result threshould for Shiny? This way, older shinies will retain their status (as long as you don't *lower* the chance). Or, if you want to retain shininess during trading/etc, hook into the routine calculating the personality value/IVs, perhaps generating up to 3 different sets for the Shiny Charm for example. Or if you want full control, hook into the routine, make your own shiny calculation and if it returns a shiny result, force a shiny, otherwise force NOT to be a shiny.

The final check for shininess compares a 16 bit derived from the Pokemon's PID, the Trainer ID and the Secret ID to an 8 bit value, which is 8 normally. If the 16 bit value is smaller than the 8 bit value the mon is shiny. So under normal circumstances 8(0-7) out of 65535 values result in a shiny, or 1 in 8192. I could have edited that 8 bit value and the maximum shiny chance would have been 255 divided by 65535 or 1 in 256, decent odds but I wanted to be able to do better. I decided to use an in-place replacement of the instructions to avoid that users that had already altered their ROMs would not have any of their edits overwritten or corrupted. In order to get the needed space for this I had to change the way the 16-bit check value is determined.
 

Criminon

Forever Spriting
265
Posts
11
Years
@Splash: I'll have a look when I find some time and when I've set up my dev stuff on my new laptop. The current version already uses all of the space available for an in-place edit though, I really want to avoid having to start repointing stuff.

@Criminon: Oh and if entering 1 and 100 doesn't work try 15 and 1500 or something. It might be the 1 tripping something up.

Looks like I got it working. Yeah, I think its just the %s. Regardless, thanks so much for this!
 
1
Posts
8
Years
  • Age 45
  • Seen Sep 2, 2023
Can you add LeafGreen support? I am making a hack of LeafGreen due to it being more preferable to me.
 
17
Posts
11
Years
  • Seen Nov 16, 2015
For me it doesn't work at all, tried with 100% with 50% with 10% with 0,1%
Also directly as 1/512 and 10/512 and this were the results: 100% 50% and 10% were the same: ~95% real chance.
0.1% was like 30% real chance and 1/512 and 10/5120 were like 10%.
 
417
Posts
9
Years
  • Age 33
  • Seen Nov 20, 2016
This tools forks fine HOWEVER :
- The sprites of pokemon in the dex are Shiny!
same here.... any fix of this?
I have not used this tool, so I have no clue what specifically it does, but at 0x08104A24, there's an instruction
mov r1, #0x8
This is used for a "fake" eor later on to generate the pokemon's picture in the dex.
The number 8 is used because for the normal shiny calculation, a number of 8 or greater for the eor will automatically not be shiny. This tool's creator might wanna update that instruction.
EDIT: the offset is for FireRed.

This is a side effect of the patch in every version, I haven't found a way to circumvent it =p The game avoids trainer shinies by generating a PID that isn't shiny under the normal shiny rules, but my patch changes those.
Actually, the game appears to generate a trainer id/ secret id such that the eor does not create a shiny, making it pretty simple to modify. That loop is at 0x0803DB30.
 
Last edited:
3
Posts
11
Years
  • Seen Jan 27, 2018
The sprites of pokemon in the dex are Shiny!
any fix of this?

Please I need a Patch to fix my Fire Red ='(
 

FIQ

251
Posts
11
Years
  • Seen Sep 15, 2022
The final check for shininess compares a 16 bit derived from the Pokemon's PID, the Trainer ID and the Secret ID to an 8 bit value, which is 8 normally. If the 16 bit value is smaller than the 8 bit value the mon is shiny. So under normal circumstances 8(0-7) out of 65535 values result in a shiny, or 1 in 8192. I could have edited that 8 bit value and the maximum shiny chance would have been 255 divided by 65535 or 1 in 256, decent odds but I wanted to be able to do better. I decided to use an in-place replacement of the instructions to avoid that users that had already altered their ROMs would not have any of their edits overwritten or corrupted. In order to get the needed space for this I had to change the way the 16-bit check value is determined.
A rather late reply, sorry, but surely you could make it more flexible than that? Either <1 (1/65536), <2 (1/32768), <4 (1/16384), <8 (1/8192, the usual), 16 (1/4096), ..., and configurable? A bit less intuitive than percentages perhaps, but IMO much more sensical.
 
17
Posts
9
Years
  • Age 27
  • Seen Jul 4, 2022
can you add the german version of pokemeon emerald / pokemon smaragd?
 
Back
Top