Shiny Probability Simulator

Simulate encounter rates, chaining scaling, and cumulative likelihoods based on decompiled battle mechanics.

SOURCES

Methods without primary decompiled sources (B2W2 Shiny Charm, Gen VI+ 1/4096, Gen V+ Masuda, chain fishing, SOS, LGPE combo, Dynamax Adventures, SV outbreaks / sandwiches, PLA, BDSP radar) are not shown yet: no primary source.

500
CUMULATIVE CHANCE · AT LEAST ONE SHINY
5.9%
Base Gen IV encounter: 1 personality roll at 8/65,536 (1/8,192).
Base Chance (Per Attempt)1/8,192
RNG Check Rolls1 at 1/8,192
50% Probability Point5,678 attempts
Statistical Average8,192 attempts
Estimated Median Duration3d 23h
99% Likelihood Duration26d 5h

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.

METHODGAME1005001,0002,0004,0968,192ODDS

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).