Shiny Probability Simulator
Simulate encounter rates, chaining scaling, and cumulative likelihoods based on decompiled battle mechanics.
PRIMARY SHINY HUNTING METHODS AT A GLANCE
Cumulative probabilities of finding at least one shiny across encounter milestones. Click any method row to select it.
| METHOD | GAME | 100 | 500 | 1,000 | 2,000 | 4,096 | 8,192 | ODDS |
|---|
How Shiny Odds Work in Decompiled Code
Generation II DV Model
In pret/pokecrystal (engine/gfx/color.asm CheckShininess), a Pokémon is shiny based strictly on its determinant values (DVs). Defense, Speed, and Special must each be 10, while Attack must be 2, 3, 6, 7, 10, 11, 14, or 15. This yields 8 shiny DV combinations out of 65,536 (1/8,192).
Generation III & IV Personality ID Model
In pret/pokeemerald (src/pokemon.c CreateBoxMon) and pret/pokeplatinum (src/pokemon.c Pokemon_IsShiny), shininess is evaluated by XORing the high and low 16 bits of the Trainer ID with the high and low 16 bits of the Personality ID:((TID ^ SID) ^ (PID_hi ^ PID_lo)) < 8. Exactly 8 values out of 65,536 satisfy this condition (1/8,192).
Masuda Method in Generation IV
In pret/pokeplatinum (src/overlay005/daycare.c Daycare_AreParentLanguagesDifferent), when two parent Pokémon have different language identifiers, the game performs 1 initial personality roll plus up to 4 rerolls if non-shiny. This yields 5 total rolls at 1/8,192 (effective odds ~1/1,638.8).
Poké Radar in Generation IV
In pret/pokeplatinum (src/pokeradar.c CheckPatchShiny), chain 0 yields no shiny patch. For chains 1–40, the game computesrate = 8200 - chain * 200 (bounded to minimum 200). A patch is shiny when LCRNG_RandMod(rate) == 0, giving exactly 1 / rate per patch (1/200 at chain 40).