The DPP / HGSS RNG Manipulation Guide

Introduction by mingot. Art by Bummer.
Art by Bummer

What is RNG Manipulation?

There are many seemingly random events in Pokemon: the IVs and natures of the Pokemon that you capture or breed, the number of steps an NPC walks before turning, or the odds that your newly hatched Totodile is shiny. As it turns out, these events are all governed by the output of a class of mathematical formulas, which are known as pseudo random number generators. The word "pseudo", often used to paint things as "fraudulent" or "false", is very appropriate in this case. Even though the numbers output by these formulas may appear to be random, they are not. Each sequence begins with a single number, often referred to as a seed, and continues on in a predictable pattern.

As the seed determines the sequence of numbers that will follow, it is important that it is different each and every time you play. If the same seed was chosen each time, the pattern of numbers, and how they affect the game, would be noticeable over time, breaking the illusion of randomness. To alleviate this potential problem, the developers decided to create the seed using something that should be different every time you play: the date and time on your Nintendo DS, DSi, or 3DS. By doing some light math on the individual components (year, month, hours, etc.) of the date and time, a "unique" seed is created each time you start the game.

There is an obvious flaw in this technique; we can change the date and time on our Nintendo DS systems before we start the game. With knowledge of how the date and time affect the seed, it is possible to choose a combination that yields a desirable result, allowing us to control the sequence of pseudo-random numbers that is generated. Coupled with the knowledge of how the game uses those numbers to create Pokemon, we become the creators, picking and choosing desirable traits, removing any remaining vestiges of randomicity.

Credits and Thanks

Pioneering research by X-Act, Peterko, and loadingNOW gave us insight into the operation of the PRNG and how its results were used to govern in-game actions. Heavy use was made of SCV's implementation of the reverse PRNG, which was independently derived by X-Act and tsanth. =Jonny= spent countless hours scouring and translating Japanese articles to expand our knowledge of the DPPt PRNG specifics, including the method for generating egg PIDs. Wild Eep delved deep into Pokemon generation, allowing us to capture perfect Pokemon with ease. OmegaDonut worked tirelessly to refine the process for hatching perfect Pokemon. Testers and researchers such as LightningFusion, Syberia, bearsfan092, Pink, Romsstar, Bond697, Kaphotics, Slashmolder, and many others worked through spotty information and came back with real, verifiable results. Special thanks to Everstone for re-writing these guides for DPP, as well as HGSS. Thanks to ToastPlusOne for designing EonTimer to assist in the process of RNG manipulation. In short, this product is the culmination of the hard efforts of a large group of people, without whom none of these these articles could exist. Thank you all!