Most Generation PRNG Help / Information


free agent
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Top Researcher Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
Topic Overview



Encounter Slots Here

The 4th Generation RNG, or Random Number Generator, is not quite as broken as Emerald's, but can be exploited by patient people. This thread will document what we do know and act as a clearinghouse for people interested in the research.


If you are asking for help, these are questions you need to be answering in your post.

What are you trying to capture\hatch? Please specify whether you are attempting to breed a shiny Pokémon, breed IVs onto a Pokémon, or capture a Pokémon.

What is your target seed and frame? What is the delay of that seed?

How did you verify your seed? If using Elm's responses or coin flips to verify, tell us what YOU got. Not what RNG Reporter says.

If you tried and failed, what results did you get? You NEED to know this so you can figure out what went wrong. Results are either the IV\nature of the Pokemon you caught, or an ID\SID if you are attempting ID\SID abuse.

Posts asking for help without following these rules will be ignored.

Please do not ask for AR codes. Please do not give them to people to ask for them. They are all out there on the internet and can be googled.

Please do not make "Help me find my SID" requests in this thread! For that you may use the Simple Questions sticky in this forum. If you have a naturally caught (non-chained, non-bred) shiny you can get your SID from RNG Reporter. If you have between 4 and 7 chained shinies you can get your SID from RNG Reporter.

The Guides

Please refer to these guides for instructions on how to RNG Abuse Pokemon. The reset of the information in this post is technical and should probably be skipped.

The DPP / HGSS RNG Abuse Guide A comprehensive guide to RNG abuse in DPP and HGSS, thanks to Everstone.

The Emerald RNG Abuse Guide A comprehensive guide to RNG abuse in Emerald, thanks to Arseus.

HGSS Information

This is going to be a list of some of the differences, coming very soon.

Technical Information (Hidden)
All 3rd Generation and 4th Generation games share a random number generator. It is a Linear Congruent Generator and very simple. Please refer to Section 1.4 of X-Act's PID and IV creation article article for a general overview of the Pokémon RNG and implementation details.

The RNG outputs a series of numbers between 0-4294967296. Not sequentially, but in a known pattern, with no numbers repeated. In Emerald each time the game is reset/restarted the numbers being generated begin at a known point, called a "seed", and progress at a farily steady rate of 60 per second. This lets us know, at a certain time after a reset, what number the RNG is going to produce. If you've seen the frame spreadsheets or the output of emloop this should make sense.

To clarify, think of exploiting the RNG in Emerald in the terms of taking a trip.

With a fixed starting point (seed), route (frame listing), and speed (60 frames per second) it is easy to tell where you are going to be after a certain point in time.

Emerald always starts from the same location, and this is the magic behind all of the wonderful things that people are resetting and breeding. The other games all travel the same route, but they mix things up by starting you at a different location on the route each time the game is reset. Since your location at start is not known it is not possible to know where you are after any given time. Additionally 4th Generation games do not advance the RNG at a consistent 60 frames per second, but uses in game actions.

This thread documents how get our starting location (seed) and how to determine what actions we need to take to know what and it will output.

4th Generation Specific Information for RNG Seeding

The RNG is seeded when "Continue" is selected. The seed of the RNG is not fixed, but is determined by your current date, current time, and the amount of time it took from reset until continuing.

The seed formula:

Given a date/time set the current variables:

Year (4 Digits, 2000-2099)
Month (1-12)
Day (1-31)
Hour (0-23)
Minute (0-59)
Seconds (0-59)

Delay = Seconds between game start and hitting A on the continue screen * 60

* = Multiply
% = Mod (divide and take remainder of)
0x = Numbers prefixed with this are Hexadecimal

(((Month * Day + Minute + Second) % 0x100) * 0x1000000) + (Hour * 0x10000) + (Year-2000 + Delay)


But wait, there's more. In addition to the RNG described above there is another, which uses a different algorithm, coded into the 4th Generation games. This other RNG (called the IRNG for the duration of this article) is used solely for the generation of egg PIDs.

The IRNG is seeded with the same initial value as the normal RNG, so the information about seeding in the previous section is applicable here as well.

The IRNG is an implementation of the Mersenne twister. It is a somewhat complex algorithm, but is well-known and well-documented. Those interested in further research on this algorithm can find a wealth of information by searching for "Mersenne twister".

PID Generation For Eggs using the IRNG

Each call to the IRNG returns a single 32-bit value, which is used in its entirety to create the PID of the egg. The IRNG is called when an egg is produced, and the Day-Care Man begins holding an egg.

When breeding with two parents from games with different languages (Japanese and US Platinum are examples of different regions) there is a slight modification to the algorithm. When an initial PID is generated by the IRNG the game checks to see if it generates a shiny, and if not the following formula is applied:

PID = PID * 0x6c078965 (Hexadecimal) + 1

Only the first 32 bits of this new PID are kept, so if you are calculating this yourself simply discard any digits higher than the 8th position (in Hexadecimal).

This is repeated a maximum of three times. Each time the multiplication is applied to the PID a check is made to see if it will generate a shiny egg. If so, no further multiplications and are performed and the egg is assigned this PID. This gives us four tries for a shiny Pokémon, increasing our overall odds from 1:8196 to 1:2048.

IRNG Advancement

There are very few in game actions that advance the IRNG and they are listed below.

- Double clicking the Pokétch Happiness Checker Application will advance the Incubator RNG by the number of Pokémon in your party multiplied by two.
- Switching to the Pokétch Happiness Checker Application will advance the Incubator RNG by the number of Pokémon in your party multiplied by two.
- Using the coin flip application will advance the Incubator RNG by one. The in game results of the coin flip are determined by odd or even numbers being returned by the Incubator RNG. Even numbers produce tails (PokeBall) and odd numbers produce heads (Magikarp).
- Having an egg generated will advance the Incubator RNG by one.
- Going into a Wi-Fi trade will reseed the Incubator RNG to an unknown value.
- Going into a union room trade will reseed the Incubator RNG to an unknown value.

IV Generation For Eggs

For a general guide to breeding, it is suggested that you read X-Act and Peterko's Guide on the subject. For those interested in the nitty-gritty details of how RNG results determine the IVs of bred Pokémon, read on.

The IVs of an egg are determined the instant you speak to the Daycare Man and are created by eight calls to the RNG.

The first two calls are used to generate a baseline set of IVs. This mechanic is covered extremely well in X-Act's PID and IV creation article, but is quickly summarized here for completeness' sake.

Call 1 is used to generate the Defense, Attack, and Hit Points. These are stored internally as a single 16-bit value and the mask below can be used to extract the individual IVs. The high bit is unused and may be disregarded.


Call 2 is used to generate the Special Defense, Special Attack, and Speed. These are stored internally as a single 16-bit value and the mask below can be used to extract the individual IVs. The high bit is unused and may be disregarded.


The next three calls determine which IVs are inherited. These inherited IVs overwrite up to three of the baseline IVs that were created above.

Call 3 (or s[3] in the formula below) is used to determine the first IV to be inherited.

s[3] is divided by 6 and the remainder taken (Inh1 = s[3] % 6). This result is used with the table below to determine which IV is overwritten.

If Inh1 = 0, then HP is inherited
If Inh1 = 1, then Attack is inherited
If Inh1 = 2, then Defense is inherited
If Inh1 = 3, then Speed is inherited
If Inh1 = 4, then Special Attack is inherited
If Inh1 = 5, then Special Defense is inherited

Call 4 (or s[4] in the formula below) is used to determine the second IV to be inherited.

s[4] is divided by 5 and the remainder taken (Inh2 = s[4] % 5). This result is used with the table below to determine which IV is overwritten.

If Inh2 = 0, then Attack is inherited
If Inh2 = 1, then Defense is inherited
If Inh2 = 2, then Speed is iInherited
If Inh2 = 3, then Special Attack is inherited
If Inh2 = 4, then Special Defense is Inherited

Call 5 (or s[5] in the formula below) is used to determine the third IV to be inherited.

s[5] is divided by 4 and the remainder taken (Inh3 = s[5] % 4). This result is used with the table below to determine which IV is overwritten.

If Inh3 = 0, then Attack is Inherited
If Inh3 = 1, then Speed is Inherited
If Inh3 = 2, then Special Attack is Inherited
If Inh3 = 3, then Special Defense is Inherited

The final three calls determine which parent IVs are inherited from.

Call 6 (or s[6] in the formula below) is used to determine which parent will contribute the IV that was determined by call 3.

s[6] is divided by 2 and the remainder taken (Parent1 = s[6] % 2).

If Parent1 = 0, then the IV from the parent in slot 1 is taken.
If Parent1 = 1, then the IV from the parent in slot 2 is taken.

Call 7 (or s[7] in the formula below) is used to determine which parent will contribute the IV that was determined by call 4.

s[7] is divided by 2 and the remainder taken (Parent2 = s[7] % 2).

If Parent2 = 0, then the IV from the parent in slot 1 is taken.
If Parent2 = 1, then the IV from the parent in slot 2 is taken.

Call 8 (or s[8] in the formula below) is used to determine which parent will contribute the IV that was determined by call 5.

s[8] is divided by 2 and the remainder taken (Parent3 = s[8] % 2).

If Parent3 = 0, then the IV from the parent in slot 1 is taken.
If Parent3 = 1, then the IV from the parent in slot 2 is taken.

PID Generation for Wild Pokémon

For the most part, PID generation is handled in the same manner described by X-Act in his article, but the process of getting the initial PID has changed in the 4th generation. In the 3rd generation, without a synchronizer present, the next two or three numbers from the RNG were taken and used directly to form a PID. In the 4th generation games this procedure has changed and there is an initial call to the RNG to get the nature and then the RNG is advanced until an appropriate PID (that is, one that has a matching nature) is found.

Starting from s[n], which can be thought as your current seed, when entering a battle with a Pokémon (wild or Synchronizable legend), the first seed used to generate the Pokémon is s[n+1].

This number is used to determine the nature of the Pokémon as follows:

floor (s[n+1]/0xA3E)

This operation will produce a number between 0 and 24, which is the target nature.

Next is the PID generation.

PID is [s[m]][s[m+1]]

where m starts as m = n+2 and is incremented by 2 until a PID is found with the target nature.

In the end the IVs, as usual, are formed with [s[m+2]][s[m+3]]

<insert complete example with pid generation>

Effect of Synchronize:

The high bit of s[n+1] acts as a trigger.

If it's 1, Synchronize has failed. In this case the method above is used, but s[n+1] is NOT recycled to determine nature. Instead another call is made to the RNG and that number is considered to be s[n+1].

If it's 0, the the target nature will be that of the first Pokémon in your party.

Next step is the PID generation.

PID is [s[m]][s[m+1]]

where m starts as m = n+2 and is incremented by 2 until a PID is found with the target nature.

In the end the IVs, as usual, are formed with [s[m+2]][s[m+3]]

<insert complete example with pid generation>
RNG Advancement For Wild Pokémon

The RNG used for wild Pokémon, legends, and nearly everything else ingame uses the same algorithm to generate its number. Known as a linear congruent random number generator, they are easy to understand and implement. One other thing is the ease in knowing the next number by performing some simple math on the previous number that was returned. In the earlier games the RNG ran constantly at a fixed frequency. In the 4th generation it appears that the RNG is only called when it is needed. Here is a list of items we know advance (or affect) the RNG.

Currently the information below is untested, so at some point we will need to verify each one of these.

GRASS / WATER / CAVES (Where there are wild Pokémon)

- Straight walking advances the RNG by 1 seed per step. The RNG is advanced even if there is a repel in use.

- Each time you turn around (reverse direction) the RNG is advanced by 1 seed. The RNG is advanced even if there is a repel in use.

- Turning and walking (1 step) at the same time advances the RNG by 2 seeds. The RNG is advanced even if there is a repel in use.

- Sweet Scenting in the grass / caves advance the RNG by 1 seed. This does not include the calls to generate the monster or the effects of battle.

- Sweet Scenting in the water advance the RNG by 2 seeds. This does not include the calls to generate the monster or the effects of battle.

- Random encounters advance the RNG by 1 seed, but a number of calls are made to create the Pokémon you will battle afterwards. The exact numbers for this and the following need further research.

- Battles makes a large number of RNG calls, but appear to unwind these calls after the battle to either seven or eight calls after the PID/IV generation of the Pokémon you battled.


- 128 steps advance the RNG by a number of seeds equal to the number of Pokémon in your party. The step counter is stored when you save your game.

- Wandering NPCs (Non-Player Characters) advance the RNG by 1 seed each time they move or turn. NPCs that move in a fixed pattern do not advance the RNG. All NPCs in a zone advance the RNG, even if they are not visible on the screen

- Opening the Journal, or having it automatically open, when there is a caught or defeated Pokémon on the first page advances the RNG by 2 seeds. There are a number of formats for the caught Pokémon text. Those listed below have been verified to advance the RNG.

'Caught a female BIDOOF.'
'UXIE was caught (DAY).'
'Defeated a male BIDOOF.'

- Flipping to a page in the journal where a caught or defeated Pokémon is listed advances the RNG by 2 seeds. The same message formats listed above will advance the RNG.

- Attempting to fish and getting the message 'Not even a nibble...' advances the RNG by 1 seed.

- Attempting to fish and getting the message 'The Pokémon got away...' advances the RNG as if a Pokémon had been encountered.


- For each wandering Pokémon that is currently roaming the RNG will advanced by one upon game start. Wandering Pokémon are Mespirit, Cresselia, Moltres, Zapdos and Articuno.

Research Needed

Does going in an out of a building with the friendship checker application running trigger IRNG advancement. Method to check: Find initial seed, get egg. Open friendship checker. Go in and out of a door 20 times, close friendship checker get egg. After this check the PIDs of both monsters and see what the gap is on the PID listing.

Does "weather" advance the IRNG? People have reporter issues with coin flips not matching in weather zones, so verify how/if the IRNG is advanced. Same issue has been reported in the sandstorm.

DS Date Rollover was reporter to advance the RNG by 7. Verify under debugger and check to make sure that it is not dependent upon the number of Pokemon in party.

Seed some monsters back to back in a quiet (like the water on the lakes) area and determine if the number of RNG calls between battles is a consistant 8. IE. Scent 10 Pokémon back to back. Note the method J frames of each one and report. Using a syncher here is probably not a good idea.

Do eggs in party count as party members for happiness taps


1. What does MOD mean?

MOD is an operator like +,-, etc.

It is the remainder.

Answers below are bolded:

10 mod 3 = 1 (10/3 = 3 remainder 1)
21 mod 7 = 0 (21/7 = 3 remainder 0)
5 mod 3 = 2 (5/3 = 1 remainder 2)

Tool Links

Please post your tool with a description and I will update this area.

RNGReporter by mingot (updated by AdmiralFish)
General spread finder, but has some 4th Generation specific features related to finding an initial seed from either all time/delay information or by catching a wild Pokémon and entering a subset of time information to find probable starting seeds.

Wichu's RNG Tools by Wichu
A set of tools for RNG abuse in 4th gen games, for both Windows and Mac OS X. It consists of PokéRNG (a powerful and very fast spread finder), Wonder Card Helper (a seed finder for use in Wonder Card abuse), and Coin Flip Checker (a small tool for quickly and accurately checking your seed in D/P/Pt).

PokéRNG can find any method 1/J/K spread in around a minute; a popular use is to find all your shiny spreads, but its customisable search makes it useful for much more. It's also capable of finding every single possible encounter slot for a spread; much faster than checking each method J/K frame individually!

Wonder Card Helper accepts a target seed and a set of stats from a Wonder Card Pokémon, and lets you know what spread you actually hit. If you're RNGing Wonder Cards, it's invaluable.

Coin Flip Checker is a simple tool which uses D/P/Pt's Coin Flip Pokétch app to narrow down possible seeds on the fly; it can work with any number of coin flip results and find your seed immediately.

ShinyFinder by MinusOne
Very handy program which acts as an egg PID timefinder. If you understand general RNG abuse and have no problem resetting on a particular time and delay this is a must have program. If you don't, learn, and then use this.

ID Finder by Wild Eep (no longer distributed as a separate program as it is integrated into RNG Reporter)
This program is designed to find seeds to manipulate your trainer ID when starting a new game. Understanding how to reach very high delays (5000+) is crucial. (Detailed instructions for manipulating ID and SID are available here.)

Radio Seed by MinusOne
RadioSeed lets you use the Variety Channel for verification/tracking as well as frame advancement. The advantage of this is that the radio works in the champion's room, whereas the phone inexplicably doesn't, so anyone trying to RNG Raikou/Entei/Latias/Latios has to use the roamer method to verify (which can't tell you if you hit the right second) and count one-by-one frame advancements on the radio, which is tedious (and frustrating if you miscount) if you are going for a frame in the thousands. Another advantage is that locating your seed/frame is faster since the radio outputs are chosen from a much larger pool than the Elm responses (a unique sequence from a pool of 22 can be much shorter than a unique sequence from a pool of 3).

Thanks and Credits

These are folks that have helped with testing, ideas, encouragement. And some who had published papers that got my up to speed with things. This is truely a huge project and I could have spent a lifetime and never gotten half as far without all of the information, ideas, testing, and just general help of a lot of people.

bearsfan092, DarkProphet, Davy, Expert Evan, = Jonny =, LightningFusion, Lorak, Misdreavous, oddsock, OmegaDonut, Pink, Red Phoenix, Romsstar, Sabresite, SCV, Syberia, thetorsoboy, Wichu, Wild Eep, X-Act, Xenavire.

pidcalc author.

seed author.

emloop author.

Contributed something to help out and think you should be here? Say so.

The following three posts may have something interesting from some other researchers:

Instructions for installing and running RNG Reporter on Intel Macs

1) Download and install Mono for Mac OSX (note: you will need administrative privileges to install Mono).

2) Download RNG Reporter. Unpack the contents of the RNG Reporter .zip file onto your Desktop.

4) Download the RNG Reporter Mac supplement .zip file, attached to this post. Unpack the contents onto your Desktop

DOUBLE-CHECK: The files RNGReporter.exe, RNGReporter.exe.config MUST be directly on your Desktop, not contained within a folder on the Desktop. The RNG Reporter Mac supplement can actually be run from any location, but the Desktop is preferred.

5) Double-click the RNG Reporter icon. (Not the icon with the .exe extension.)


Last edited by a moderator:
PokéRNG is a program for finding Pokémon spreads and how to hit them. It's extremely fast compared to other methods, taking only a few seconds at most to search all possible spreads for the one you're looking for.

First, download the program, and if necessary, the Qt library files needed (it won't work without them).
Use the various controls to specify search conditions, and click 'Start Search'. If you want to stop searching at any time, click 'Stop Search'.
If your search was successful, you'll see a list of spreads. Click the table headers to sort by any column. Double-click a spread to bring up the spread information window. If you want to store the search results in a file, click one of the buttons at the bottom, or right-click the table to copy the selected rows to the clipboard.

And now for some more detail :)
The 'Game Mode' box (DPPt/HGSS) sets the minimum/maximum delays appropriately, and also makes it search for either Method J or Method K frames respectively.
The 'Search Mode' box changes the search algorithm. The 'Narrow' algorithm is usually preferred; its speed is proportional to the possible IV combinations in the search (technically, the combinations of HP/Atk/Def or SpA/SpD/Spe, whichever is smaller). Under some circumstances, though, 'Wide' can be slightly faster (when you have no conditions on IVs). If it seems to be going slowly in 'Narrow', try switching to 'Wide' (and restarting the search). Rule of thumb: 'Narrow' mode when you want a narrow IV range on at least one stat, 'Wide' when you want a wide IV range on all stats (i.e. 0-31ish large). If even one IV has a narrow range, 'Narrow' will be better.
TID/SID are only necessary if you're searching for shinies - they have no effect otherwise.
The Hidden Power base power you input is the minimum it will search for; for example, choosing 60 will search for any HP power between 60 and 70. If you need a specific HP Power, search for at least that much, then sort using the HP power column in ascending order.
The four options in each 'Search Type' box are:
  • >= : at least (searching for >= 20 will find 20, 21, 22 etc)
  • == : equal to (searching for == 20 will find 20 only)
  • <= : at most (searching for <= 20 will find 20, 19, 18 etc)
  • HP : at least + same Hidden Power (see the Hidden Power page - searching for HP 20 will find 20, 24, 28)
The minimum and minimum delay boxes specify the delay range for the current year. The drop-down next to them lets you only search for odd or even delays. Changing these won't affect what spreads you get; it will only change their seeds, delays and frames. By default, the boxes take values depending on the current year; choosing a year in the time finder should make the delays reachable (in Pt/HG/SS at least).
The 'Max. Method 1 Frame' is the highest Method 1 frame to search to. This is not the same as the highest Method J/K frame; Method 1 frames above the cutoff may have a Method J/K frame below. A value of 0 in this box means 'no maximum frame'
The 'Max. Method J/K Frame' is exactly what it describes. The value you put in here is affected by the 'Use Synch' box; if the 'Use Synch' box is not checked, it will discard any results which need a synchroniser to reach that frame. Like with the 'Max. Method 1 Frame', a value of 0 is ignored.
Specifying maximum frames will make PokéRNG discard spreads, unlike altering delay conditions. If you get no results when you set a maximum frame, try unsetting it (set it to 0) and searching again.
The 'Encounter Slots' box enables searching by encounter slots - click the 'Edit' button to select the slots you want. The search will find spreads that are available in any of the slots selected; for example, searching for slots Land 10 and Land 11 will yield results available in Land 10, Land 11, or both. The 'Use Synch' box affects this too; if it's not checked, it will only search for spreads available in that encounter slot without a synchroniser.
Keep in mind that calculating Method J/K frames and encounter slots takes a while; if you decide to search using these criteria, make sure you specify other criteria, such as IVs, shininess or nature too (so it doesn't have to do calculations for every single seed).
The CSV format (opens in Excel) has data in the same order as the in-program table and text format - this is different to the old version!

In the Spread Information window, the encounter slots listed are the only slots available for that spread (if the Method 1 frame is very low, narrowing the delay range could help by finding a different seed). Fishing spreads listed take into account the chance of not fishing anything up (HG/SS fishing and Rock Smash slots are unconfirmed; if the result you get doesn't match with what PokéRNG says, let me know). The frames listed are the minimum frames for each encounter slot.
The time finder is similar to RNG Reporter's - changing the year affects the delay, and changing the second affects time/date.

28/02/2011: Implemented a new faster search algorithm ('Narrow' mode), searching by ability, and made the text output more descriptive in terms of search criteria.
04/02/2011: Added maximum Method J/K frame support, year and odd/even boxes to help with searching for specific delays, searching by encounter slots, copying data from the table, and fixed a few minor bugs.
02/02/2011: Fixed a few errors in the encounter slot finder and spread finder, made year in time finder default to the current year, fixed default max delay, added Rock Smash (tentative) to encounter slot finder.

Wonder Card Helper
Wonder Card Helper is a program to, well, help with abusing Wonder Cards. It functions as a stat-based seed finder with customisable accuracy ranges.

Set the date/time/delay/frame you're aiming for, and check the seed and IVs match up. Then, each time you reset, input stats of the Pokémon you got, and click 'Find Spreads'; this will bring up a list of possibilities. Find the one you actually got, and adjust your procedure accordingly (if your actual delay was smaller than your target delay, for example, wait a tiny bit more on the title screen next time).
Adjusting the accuracy changes the number of spreads searched. If you're confident, lower the numbers in the boxes (increasing the accuracy), and you'll get more precise results.

Coin Flip Checker
Coin Flip Checker is a real-time seed finder for D/P/Pt which uses the Coin Flip Pokétch app.

Input the date/time/delay you're aiming for, and make sure the seed matches up. Then, each time you reset, input the coin flip sequence you get (either typing it in or pressing the buttons); the list at the bottom will automatically filter itself until there's just one possibility.
The accuracies here have the same function as in Wonder Card Helper. Increasing the number increases the range of flips searched. If you're not too confident with your timing skills, put in higher numbers - you'll have to do more flips to narrow down the results, but it will catch you even if you're a way off the target time. The opposite is true if you're good at timing. Increasing the 'Max Flips' box will increase the length of the generated coin flip sequences, and vice versa. You shouldn't really need to increase this unless two of your sequences are nearly identical.
Try not to set the variables too high, as it may make the program hang.

Download the whole package (all three apps, and the DLLs for Windows):
Mac OS X 10.6 (Snow Leopard)

Or download separately (Windows only at the moment):
Wonder Card Helper
Coin Flip Checker
Qt DLL files

Windows users will need to place the 4 DLL files in the same folder as the programs.
Mac OS X users will need to install the Qt library from this page.
Without the Qt DLLs/library, the programs will not function.

Hosting courtesy of Bond697 :)

Download link: New version / Old version (Emerald)

About PokéRNG
PokéRNG is a command-line program specifically written to find Pokémon spreads. It can be used to find high-IVed spreads, shiny spreads, or both. It is very fast compared with RNG Reporter's spread finder; PokéRNG can search through every possible spread in a minute or two. However, it's best used in combination with RNG Reporter, as it does not have many of functions required to RNG a Pokémon.

The first thing you will be asked for upon starting the program is the nature. Simply type the name of a nature (not case-sensitive) and press Enter; if you do not want to search by nature, press Enter without typing anything (or type something which is not the name of a nature).
Next, you can choose to search for shiny spreads. Type Y to do so (or 1 if you're used to the old version). Anything else (N, 0 etc) will mean that shininess is ignored.
If you chose to search for shinies, you will now have to input your trainer ID and secret ID.
If you want to search for a specific Hidden Power, type the minimum base damage, and then when prompted, the type. An invalid value for the base damage (i.e. not between 30 and 70) will make it ignore Hidden Powers; an invalid type name will make it search for Hidden Powers of any type.
Now for the IVs. The first thing you will be asked is whether you want to search for exact IVs; for example, if you're looking for a specific spread.
Then, enter each IV when prompted. If you're not looking for exact IVs, these will be treated as minimum IVs. If you don't want to search by that stat, just enter 0.
The final option is the delay range. This differs for everyone; however, this actually takes into account the year. For example, if your usual delay is 600, possible delays will range from 600 (in the year 2000) to 699 (in 2099). It's a good idea to enter a range of at least 100 for this reason. If you enter 0 here, it will use default values of 595 and 735.

After inputting the criteria for the spreads, it will start searching through the range specified. The results will be output to the Spreads.txt and Spreads.csv files, which will appear in the same folder as the program. Have a look through these files to find a suitable spread.
You shouldn't run the program multiple times at once, as starting a search erases the contents of the Spreads file. If you want to search using different criteria at the same time, you should copy the program to a different folder.
If you want to keep your results after running the program, simply rename the output file, and the program will create a new one when it is run again.

Reading the results
The text file will display the results like this:
PID: 7942ef72 (TIMID, ability 0) 31/31/31/31/31/31 (Seed: d2140289 Method 1: 114, J (synch): 71, J (no synch): None, K (synch): 71, K (no synch): 87) HP DARK 70
     PID       Nature Ability ID        IVs         Seed and frames (ones marked [i]synch[/i] are frames when a correct-natured Synchronizer is used)        Hidden Power
The CSV file will display the results like this:
Seed, Method 1 frame, Method J frame (synch), Method J frame (no synch), Method K frame (synch), Method K frame (no synch), Nature, Ability, HP, Atk, Def, SpA, SpD, Spe, HP Type, HP Damage
In both cases, the ability can be either viewed here, or in RNG Reporter's mini Pokédex.

Old version instructions
This program was developed for Pokémon Emerald's RNG, rather than D/P/Pt's (as evidenced by the filename). However, as all Pokémon games use the same basic RNG, it can actually be used for D/P/Pt too. In fact, this program includes some handy features specific to those games.

Upon starting up the program, you will be asked to input the method wanted. For D/P/Pt, it will always be 1 (I'll come to method J later).
Next, you will be asked for the wanted nature. This must be in uppercase (for example, MODEST). If you do not want to search by nature, enter any non-nature text, and press Enter.
The program will ask whether to search for shinies. Sinply type 0 or 1, and press Enter.
If you chose to search for shiny spreads, you will now have to input your ID and SID.
Next, it will ask you to specify the minimum Hidden Power base power. Type anything between 0 and 70; if the number below 30, it will not search by Hidden Power.
If the Hidden Power base power is 30 or more, it will ask you for the type. This, again, must be in uppercase (spelling it out fully; for example, FIGHTING). Similarly to the nature, you can input a non-type value to have it search for any HP type.
Now for the IVs. Firstly, input 0 if you want to search for minimum IVs, or 1 for exact IVs.
Input each minimum IV in turn; if you're not fussed, enter 0. Remember not to search for IVs which would make your Hidden Power impossible; for example, if you searched for Hidden Power Fire, don't expect to get any results for 31 Speed.
After each individual IV, you have the choice of specifying an average IV. This isn't really that important, but it could prove useful sometimes.
The next option is the delay range. This differs for everyone; however, this actually takes into account the year. For example, if your usual delay is 600, possible delays will range from 600 (in the year 2000) to 699 (in 2099). It's a good idea to enter a range of at least 100 for this reason.
Finally, the start and end points of the search. If you want to search every spread, enter 0 both times. The start and end points can be used to find neighbouring spreads, however.
Please note that due to a small glitch, if you start at any number above 0, the first few spreads searched are incorrect. Simply start your search a few frames earlier to solve this. Also the very last spread isn't searched. This shouldn't have a major effect, as it is Brave, with IVs of 21/17/2/0/0/0.

After inputting the criteria for the spreads, it will start searching through the range specified. The results will be output to both the spreads1.txt and spreads1.csv files, which will appear in the same folder as the program. Have a look through those files to find a suitable spread.
However, do not run the program multiple times at once, as they will interfere with each other and mess up the results. To avoid this, copy the program to a different folder and run it there.
If you want to keep your results after running the program, simply rename the output file, and the program will create a new one when it is run again.

Reading the results
The program outputs the results in two different formats. These are detailed below.
The text file will display the results like this:
   176562491F 7942ef72 (TIMID, ability 0) 31/31/31/31/31/31 (Seed: d2140289 Frame: 114) HP DARK 70 !!!
Emerald frame      PID  Nature   Ability                IVs     D/P/Pt seed and frame Hidden Power Shiny
The CSV file, on the other hand, will display the same results in a different format. This is the same as that used by RNG Reporter:
Seed,Frame,PID,Shiny,Nature,Ability,HP,Atk,Def,SpA,SpD,Spe,HP Type,HP Power
In both cases, the ability can be either viewed here, or in RNG Reporter's mini Pokédex.

Method J
The program has no option to search for method J spreads. However, you can still find them.
Method J is actually very similar to method 1. In fact, all method J spreads are also method 1 spreads (but not vice versa). This means that if you find a good method 1 spread, chances are it will work with method J too. However, the frame will be different. Fortunately, you can use RNG Reporter to find this.
Find a suitable method 1 spread, and open up RNG Reporter. Input the spread's seed into the field labelled 'Seed (hex)', and the frame into 'Max Results'. Change the method to J, and enter the IVs and nature into the corresponding fields. Press 'Generate', and you should see your spread. If it doesn't appear, change the 'Synch Nature' field to the nature of your spread, and try again. If you still can't find it, then you should look for another spread, as the one you have chosen isn't available using method J.

Finding the time
The program does not include a time finder. However, you can use RNG Reporter to find the time you need to set your DS clock to. Open it up, and click the 'Seed to Time' button on the right. Copy and paste the seed of your spread into the window, and click Generate. This should show you a list of possible times you can use.

Q: How do I get Method J/K spreads? The program only lets me use method 1!
A: The newest release of PokéRNG D/P can find Method J and K spreads. If they are not appearing, either upgrade to the newest version, or read the Method J section in the old instructions.

Q: I'm hardly getting any shiny spreads... What am I doing wrong?
A: If you're using PokéRNG D/P, then I have no idea (are you waiting long enough?). Otherwise, the most common reason for this is that you changed the maximum frame. This is not the same 'frame' as RNG Reporter's; rather, it is the Emerald frame. Since we're using D/P/Pt, make both minimum and maximum frames 0.

Version 1.2
-made the method frame text a bit clearer
Version 1.1
-added Method J and K frame output
-re-added CSV output
-fixed some bugs with the input
-fixed bug with incorrect frame numbers
Version 1.0 (upgrade to D/P)
-completely recoded for speed; removed Emerald compatibility.

Version 1.01
-fixed a bug where the default delay didn't work.
Version 1.0
-changed name to PokéRNG.
-added exact IV search option.
-added delay range option.

PokéRNG Wonder Card Seed Finder
Download link

About PokéRNG Wonder Card Seed Finder
PokéRNG WCSF is a standalone command-line program made to help out with abusing Wonder Cards. RNG Reporter's seed finder utilities are useful for abusing wild Pokémon; however, their use when abusing Wonder Cards is more limited. PokéRNG WCSF is designed to make Wonder Card abuse faster and easier.

When starting up the program, the first thing you will be asked is whether the Wonder Card has a fixed nature. This is true for all shiny event Pokémon (e.g. Pikachu-colored Pichu), and certain others (e.g. PBR Electivire). If so, type Y, and then the name of the nature. Otherwise, type anything else.
The next step is to enter details about the Pokémon. You may enter the species name, or its National Pokédex number (both Arceus and 493 will work). It is not case-sensitive. Then, enter its level.
Now, you will need to enter the time and date for your seed. This must be correct to the second.
Next, enter the delay; this is usually the delay given by RNG Reporter's seed finder. However, it can be up to 50 off in either direction (for example, if you usually get a too-high delay, you can compensate by increasing the delay you input).
Finally, enter the frame you are aiming for. Confirm that the information outputted is correct.
Now to start abusing. Once you pick up the Pokémon, enter its nature (if needed), and its stats. The program will calculate its IVs, and then give you a list of possible frames. It searches to +/- 1 second, 50 delay, and 10 frames. If you haven't hit the spread you are aiming for, take note of the information it gives you, and adjust your resetting appropriately. For example, if the frame you landed on is too high, reduce the number of Journal flips you do (and if necessary, wait for an NPC to move).

Version 1.0
-first release


don't glaze me bro
is a Programmer Alumnusis a Forum Moderator Alumnusis a Top Researcher Alumnusis a Top Contributor Alumnus
Consolidation of HGSS info, so people don't have to hunt through the thread.

Advancing the frame

It is still possible to advance the RNG by walking\turning in an area with wild Pokemon. However this method is inconsistent; sometimes it advances by 1, 2, or not at all. It should not be relied upon for predictable advancement.

Calling Professor Elm once you have a) gotten the Pokecenter nurse to see your Pokemon has Pokerus, b) visited Kanto, and c) shown him a hatched Togepi egg advances the RNG by 1 each time. Furthermore, the response he gives can be used to determine your current seed (guide here).

Confirmed: calling the Youngster Joey on your phone (when he isn't seeking a rematch) advances the RNG by 2.

Letting time pass in-game so the date rolls over to the next day seems to advance the RNG by 2.

When using Sweet Scent to advance the frame, your final frame will be the Method 1 frame of the Pokemon you catch (listed as "Actual" in RNG Reporter) + 6. Sweet Scent advances by 1 whenever you're on a bike, but having a Pokemon follow you seems to make this advance inconsistent.

Advancing the RNG using the radio is usually possible everywhere except inside a cave, or on top of Ho-oh's tower. The level just below it still gets radio reception, though.

To advance frames with the radio, start from the middle (no shows running), then click the button for the appropriate corner. You have then have to drag the cursor back to the middle without touching any other stations. Here are a list of shows and the amount of frames they advance.

Show            Advances                Day of Week                Location
[B]Pokémon Music[/B]                1 frame, sometimes none - inconsistent        All day everyday                                               top-left.
[B]Pokémon Talk[/B]                 14-18 frames -  inconsistent                  All day, every day                                             Top-right
[B]Trainer Profiles[/B]             3 frames - inconsistent                       Everyday 12-1, 2-3, 4-5, 6-7, 8-9, 10-11 (BOTH AM AND PM)      Bottom-left
[B]That town, these people[/B]       3 frames - inconsistent                      everyday 1-2, 3-4, 5-6, 7-8, 9-10, 11-12 (BOTH AM AND PM)      Bottom-left
[B]Pokémon Search Party[/B]         1 frame                                        everyday 12-1, 3-4, 6-7, 9-10 (BOTH AM AND PM)                Bottom-right
[B]Serial Radio Drama[/B]            1 frame                                      everyday 1-2, 4-5, 7-8, 10-11 (BOTH AM AND PM)                 Bottom-right
[B]Buena's Password[/B]             none                                          everyday 2-3, 5-6, 8-9, 11-12 (BOTH AM AND PM)                 Bottom-right
For Kyogre, Groudon, and Rayquaza: walking in and out of the Embedded Tower advances the RNG by 1 each time.

Methods of Generation:

All roamers (Raikou, Entei, and the Latis), as well as gift Pokemon (all of the starters, Eevee, Togepi, the Arceus event that gives you Dialga\Palkia\Giratina, Game Corner Pokemon, etc.) are Method 1.
Everything else uses Method K.

Suicune is NOT a roamer.

Starting frames:

If a Pokemon is NOT listed here, assume it has a starting frame of 1.

Raikou: 1
Entei: 6 (unless Raikou has been caught, then it's 1)
Note: It has been reported that in European versions Entei is 1 and Raikou is 6.

Chikorita: 1
Cyndaquil: 5
Totodile: 9

Roaming Latios\Latias: varies, there is an NPC that advances the frame. You will have to save inside the Fan Club and immediately walk out the door or bring up the Pokegear. You will have to do a test run first to calibrate for the Lati's frame, similar to how you calibrate for your egg frame in DPPt.

Spiky-Eared Pichu: Frame 1, but on the Wondercard Method -- it is always Naughty natured

Interactable Pokemon, except Red Gyarados: 1

Hatching for shiny Eggs\Eggs of a certain nature

Unlike DPPt, HGSS does not have the benefit of coin flips and happiness taps, which were used to skip through eggs until one of the desired nature and\or shininess is found. In HGSS, eggs must be received\rejected from the Day-Care Man one at a time until the desired egg is reached. RNG Reporter (link in signature) has an option to search for very low egg PID frames, making it possible to find a shiny egg on the very first.

Hatching for flawless-IV eggs

Breeding for flawless IVs in HGSS uses very much the same procedure as that in DPPt, save for a few differences.

In DPPt, there were many wandering NPCs that made it a requirement to "calibrate" for the starting frame of an egg received from the Daycare Man. In HGSS, there is only one NPC on that route to worry about, and as a result the starting frame is usually 3 and there is no need to calibrate. To hit higher frames you have to open the Pokegear very quickly (before the NPC moves) and advance the RNG via the radio.

Furthermore, the method of IV inheritance has been changed, so all IVs have an equal change of being passed down. The Breeding (HGSS) option reflects this.

The effects of Power Items on the RNG and egg IVs is yet to be fully understood. It is known that it forces the inheritance of the chosen stat in lieu of another (example: a 31\A\B\7\A\13 spread becomes 31\19\B\7\A\A with a Power Anklet on the A parent). However, it has thus far shown some unpredictable patterns, sometimes it turns everything to the inheritance of the item-holding parent (31\19\A\7\A\A), and it is not yet known how the game decides what stat it favors the Power item stat over. The Power items very much mess up the spreads found in the Time Finder, so it's best to leave them alone.

Red Gyarados Info:

The Red Gyarados is generated by the same algorithm used to generate chained shinies in DPPt. Version 7.50 and later of RNG Reporter lists the spreads, but not necessarily the correct frames they appear on.

As a side note, it is possible to figure out your SID in HGSS very easily. This can be done by catching multiple Gyarados and recording their IVs and nature, resetting after each time. Putting these spreads into RNG Reporter's Chain to SID feature will reveal your game's SID.

Other tips:

In DPPt, roamers advanced the RNG by 1 for each roaming Pokemon. In HGSS, this appears to be inconsistent - sometimes a roamer advances the RNG by 2. It is recommended that all roamers are killed off before attempting RNG manipulation in HGSS. Don't worry, beating the Elite Four will bring them back if you haven't captured them.

In fact, all stationary Pokemon (including Sudowoodo, Snorlax, and the Red Gyarados) will respawn after you beat the Elite Four, if you haven't capture them.

Sixfortyfive and Destiny100 have provided a guide for RNGing Entei\Raikou after you encounter them in the Burned Tower:


(tested on HeartGold, US version) [Note: It has been reported that in European versions Entei is on frame 1 and Raikou on frame 5, rather than the other way around.]

First, a hat tip to Destiny100 for suggesting this method. This is pretty much his idea; I just typed up a short guide for it.


- Figure out the seed and frame you need to hit for your desired spread, either with RNG Reporter or another program. It is recommended that you select a frame as low as possible for your spread but not lower than 3.
- Have all 3 roamers (Entei, Raikou, Lati@s) released and roaming on the map. It is probably fine if you only have 2 roamers released, however.
- Familiarize yourself with the Roamer method for Seed Verifier.


When the roamers are regenerated post-E4, their stats are created via Method 1 on the following frames:

1st roamer: frame 1
2nd roamer: frame 6
3rd roamer: frame 11

The order for regeneration is Entei -> Raikou -> Lati@s. If all 3 roamers have been released and KOd, then defeating Lance will respawn Entei with frame 1's spread, Raikou with frame 6's spread, and Lati@s with frame 11's spread. If Raikou has been caught and the other 2 have been KOd, then Entei will respawn with frame 1's stats and Lati@s will respawn with frame 6's stats. If Entei is still roaming and the other 2 have been KOd, then Raikou will (probably) respawn on frame 2 and Lati@s on frame 7. The extra offset on the last example is due to the fact that having Entei on the map will cause the frame to automatically advance by (at least) 1 when the game starts.


Make sure that all the roamers are released. Find and KO the roamer that you wish to abuse. The other roamer(s) must be roaming the map. I will assume that you have released all 3 roamers and fainted only the one you are currently trying to abuse.

Fight your way to Lance and stop one step in front of him. To be more precise, stop one step before the auto-walk sequence begins and forces you into the fight with him. Open your radio and drag the tuner to the very center so that no station is playing. Open the map and note the locations of the other roamers. Save your game.

Adjust your date/time settings and hit your desired seed. Use the Roamer method of Seed Verifier to confirm it.

Once you have hit your seed, use the radio to advance the frame. Remember, since you have 2 other roamers on the map, then you (probably) begin the count from frame 3 instead of frame 1. (Make sure to check the output of Seed Verifier to confirm whether you should start from 3.) So if your desired spread is on frame 100, you must advance the frame exactly 97 times. Use the bottom-right station of the radio to advance your frame. Keep in mind that Buena's Password does not advance the frame, and that commercials may throw off the count as well. Other programs on this station always advance the frame by 1. The other stations are not as consistent as this one. You may need to use a different date/time setting in order to get a program other than Buena's Password.

Once you advance to the desired frame, walk forward and beat Lance. Skip the credits and load the game once more.

Find the roamer you just respawned and capture it. Use a Master Ball if you have one. Check its stats to see if everything worked correctly. If you hit the wrong spread, figure out which frame it was respawned on and determine why you missed the one you wanted. Did you miscount the radio taps? Did you accidentally hit another station? Was some other program than Pokemon Search Party or Silver Drama playing? Did you properly verify your seed and starting frame? Restart and try again.

If you hit the correct spread, restart without saving. The roamer will keep its desired stats, and you get your Master Ball back. Furthermore, now you can repeat the process for one of the other roamers, and since you need multiple roamers released simultaneously in order to verify your seed, it's best that you don't actually capture and keep any of the roamers until all 3 of them have been respawned with the stats that you want.

For Dialga\Palkia\Giratina in the Arceus event:

I just finished RNG-ing Giratina at the Sinjoh Ruins (Naive 30/30/31/30/27/30 w/ Hidden Power Fire - seed F1060C88). Thought I'd share how I did it in case anyone wanted tips for the dragon trio:

- Saved my game one step in front of the Ruins of Alph head office with only Arceus in my party.
- Reset the game and took note of the seed I landed on by using Seed Verifier. I called Elm 10 times to confirm the seed, leaving me at frame 10 for this seed.
- I advanced one step forward to trigger the cutscene that takes you to the ruins. Once at the ruins, I took the shortest path to Cynthia, then took the shortest path back to the chamber and the tile on the stage that begins the event.
- After receiving Giratina, I checked its stats and deduced that this Giratina was produced on frame 19, meaning that between calling Elm and receiving Giratina, my frame advanced 8 times. (This will possibly be different for you.)
- I quit and restarted, attempting to hit the proper seed and frame for the spread that I wanted. This time, after confirming my seed by calling Elm, I advanced the frame 139 more times with a combination of the radio and additional calls to Elm. This puts me at frame 149. I repeated my earlier steps by taking the shortest path to Giratina (advancing the frame 8 times) and receiving it (advancing it one final time, to frame 158, which contained the spread I wanted).

You can probably save and begin the process one step outside of the Sinjoh Ruins main chamber, after Cynthia is already inside. I only did it this way because I was nervous about initiating any of this before saving.
Not bad. I did the same thing recently, except I saved inside Arceus' chamber used the roamers to verify my seed, so I only needed to hit it once. You would have to verify your seed twice in the case they advanced inconsistently, but that's it.
Thanks to Romsstar, Newts_Ute, Sixfortyfive and everyone else who contributed tips! If you feel you've been left out of this list, let me know.


RNG Reporter Seed Verifying

Heart Gold and Soul Silver use a different method of Seed Verifying.

Alas, we don't have the Poketch in HG/SS anymore.

But we got the Pokégear and we still can use it to verify our seed, it just works different this time.

Let me try illustrate this with a concrete example.


Roamer Method:


- You have to note down the Routes of your Roamers at the moment when you saved as their Route is stored in the Save.

In this example Entei was Roaming at Route: 37


Ok you noted down the Routes of your Roamers at the moment you saved, k?
Because this is important if you want 100% accurate results.
Let's start!

Open RNG Reporter.
Go to the Seed to Time Panel

D2140289 is our Target Seed.

First of all we enter the Route when we saved in RNG Reporter. Entei was roaming at Route 37 in this example.
Now read the Output.

E: 30
Elm Responses for the Seed : (K skipped) E, P, P, K, P, P, E, E, K, K
Frame Advanced: 1

We have so far, two methods of verifying our Seed with RNG Reporter.
First one is using the Roamer.

In this example this would work like this:

You press Generate and the Adjacent Finder will output Results.
If you hit your Delay the results will match the above.
(E: 30, Elm Responses for the Seed : (K skipped) E, P, P, K, P, P, E, E, K, K)

If not, you can use "Search Roamers" and input the Route your Roamer is at to see how much you were off.

Or you can input the Elm Response pattern.

The Elm Response Pattern is another method for Seed Verifying

Elm Method:

Prerequisites for this Method to work:

- You must have shown Elm the hatched Togepi Egg
- Transfer a Pokemon with cured Pokerus and show it at the Pokemon Center. You get a message and soon after that a call from Elm. If you seem not to get the call from Elm, just advance your DS Calender one two days forward till it shows (It will)
- You must have been in Kanto

All right I love this method since it has so many benefits after you finally get it actually to work-
You can check your seed everywhere anytime and on top of that: You can advance your frame everywhere, anytime.
Calling Elm will advance your frame constantly +1

We got there a nice sheet with P, K, and E.
Now every of this buttons stand for a Message that you get if you call Prof Elm after doing everything that is required for this method.
P stand for PKRS,
E for Evolution
K for Kanto.
He has three messages and this they are.

Remember our Seed &pattern? If not here it is:

Seed: D2140289
Pattern. (K skipped) E, P, P, K, P, P, E, E, K, K)
Frame Advanced: 1
So if you got your desired Seed, call him 10 times and the pattern will be:
1 x Evolution,
2 x PKRS,
1 x Kanto
2 x PKRS
2 x Evolution
2 x Kanto

Now this makes 10. So we call Elm 10 times to verify our seed and if it matches this pattern we know we're right. If not, well you can check how much you were off or simply reset:P

New RNG Reporter works with Calling Elm 9 times but it also works fine with 10,
you can use whether you want as it's quite the same.

Also: There is Vertical Line in RNG Reporter with the E,K,P messages so you can keep track of your current frame which is very useful as you can advance your frame with calling Elm.

Frequently Asked Question: The results of Elm Method don't match with the ones I'm getting when I call him.

Answer: All right before you suspect that it might be RNG Reporter please check following things:

1. Are there any NPCs that might advance your frame? If you are aware of NPCs, please press X as soon as you enter the Game, advance your frame with Radio or Elm and then press as fast as possible A.
This goes for Breeding as there is one NPC. If you RNG for legends the RNG is mostly calm (Expect Roamers as you RNG them at E4 but I won't cover this here)

2. Have you really took all Roamers into account? Maybe you forgot Latias/Latios at Kanto Roaming? Did you fill in the Routes? Check the exact number of Pokemon Roaming and their Routes, which you were supposed to note down when you saved.

3. Calm, concentrate, so you really are sure you didn't miscalculate.

How to use PikaTimer

Here it is, big, beautiful, and many input boxes.
Confusing huh?
Wait, it gets worse :P
They all serve a purpose! No way?

Ok as you might have noticed we have

Calibrated Delay
Wanted Delay
Calibrated Second"
Wanted Second"

Let's start with these.
All right if you ask me, Calibration process is something old and useless.(Really it is)

So don't even bother to calibrate.
For DPPt: Let the Calibrated Delay and Calibrated Second the way they are.
For HGSS: Calibrated Delay 480, Calibrated Second 14.
These are parameters we can work with.

All right, let's say we chose a seed.
My preferred example is Seed D2140289
All right you selected your seed.
You selected your Target Time.
To waste as less time as needen it is adviceable to use a Seconds Value which gives you at least 30 seconds for the first timer but not much more as we don't want waste time.
in our example 50 works pretty good.

There is a formula to explain how the two timers work (Credit to Pehu for that)
It works like this:

First Timer + Second Timer = (Minutes before target x 60) + Wanted Seconds

So, for your example: 33.35 + 16.65 = (0 x 60) + 50

50 = 50
In that example, if you'd hit your delay, it would've been on the correct seconds of 50.

The reason why I explain this is because when you adjust your Other Delay and update, pikatimer changes only the second timer, the one that controls your delay. But because of that, if the number in the second timer is changed significantly, it can make you hit your delay but miss your seconds. Always double check that sum, and make sure it's as close to your Desired Seconds as possible.

So for example on D2140289 you get: 2010 04 26 20:56:50 639
20:55:25 is the time we have to hit on the continue screen
639 is our delay.Now how this is supposed to work for PikaTimer yeah?
Easy fellas, we'll get to it.
Let's assume you wanna hit 639 in HGSS.This would have to look like this;

First timer gives you 33,35 second one 16,65.
Minutes before target is the time you have to setup in your DS Menu.
Actually you have to press start after you set the time in your DS Menu.

20:56:50 was our target time remember?
Meaning: Set your DS Clock to 20:56:00 and press start on PikaTimer simultaneously. This is pretty easy if you use spacebar for it
at the instant the first timer reaches 0 you have to enter the game (means start the game at the DS Menu)As soon as the second timer reaches seacher you have to hit in that instant A at the Continue Screen.

Now it is rather rare that you'd hit your Delay at the first time.
So you have another box at PikaTimer called "Other Delay" you can use this to adjust your results.
For example you hit instead of 639 just 600.
Put in 600 at Other Delay press update and it will adjust the time for you.
Do this as many times needen till you get to your desired delay.

For finding out which Delay/Seed you actually hit you can use the Adjacent Finder in RNG Reporter.

If you keep missing your second(!=delay) try adjusting the first timer by a bit.

After all this is a bit a process of try&error but PikaTimer makes it kinda fun.

Actually I started using PikaTimer two days ago and can hit delays betweeen 2000-3000, I don't wanna brag but show you beginners that even if you completely new to this PikaTimer will be a grand help.

As I hope my explanation was.
If not, well I had the spare time:P

How to abuse your ID/SID

Let us take this for example:
PID: 7942ef72 (TIMID, ability 0) 31/31/31/31/31/31 (Seed: d2140289 Frames - 1: 114, J (synch): 71, J (no synch): None, K (synch): 71, K (no synch): 87) HP DARK 70

Hexflawless Spread generated with Wichus PokeRNG.

I guess you know how to do that.

After that: RNG as usual
(Calibration, etc.)

A normal delay for HG can lie between 5000 und 5700. for me it's easy to hit 5730 (I don't know why.xD)

If you abused succesfully, you will have a Shiny Spread on the PID you used.
Of course you can also use the Seed PokeRNG gives you. In the example case it would be: D2140289

Two Stage Timer

While RNGing for different stuff I realized how much it sucks that the only ms reliable timers are useable on computer only. Well here it is, a simple ms reading two stage timer in Javascript.

I tested this on my Sony Ericsson K850i and on
some other phones it works just nice. Enjoy!




free agent
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Top Researcher Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
RNG Reporter Support

On any method J/K frame right click and select "Calculate Encounter Slots". It will do all of the work for you and provide links to charts so that you can look up what monster appears on which frame. Unless you are interested in the low level details you may skip all of the information below.

For encounters on grass/caves

To use this requires getting the RNG call previous to the frame of the Pokemon you are attempting to capture. To do this switch to method 1 and take the last 4 digits of the PID of the frame before your method J frame. For example, if you are targeting Method J frame 99, switch to Method 1 and take the last 4 digits of the PID on frame 98. This is the previous RNG result in hexadecimal. Use a calculator to convert this to decimal and then use the steps below to figure out what the monster will be for the frame.

Divide this number by 656 and discard any remainder or the decimal portion of the result (ie round down).

This gives a result between 0 and 99.

This number is then evaluated to produce and encounter slot that is between 0 and 11 (12 possible values).

Slot 0: 0-19 20% (Swarm)
Slot 1: 20-39 20% (Swarm)
Slot 2: 40-49 10%
Slot 3: 50-59 10%
Slot 4: 60-69 10%
Slot 5: 70-79 10%
Slot 6: 80-84 5% (Trophy Garden, Current)
Slot 7: 85-89 5% (Trophy Garden, Previous)
Slot 8: 90-93 4%
Slot 9: 94-97 4%
Slot 10: 98 1%
Slot 11: 99 1%

Use the charts linked below to find a slot for a particular area.

And finally the code:

;bcs Unsigned higher than or the same
;bcc Unsigned lower than

; rng call and create number from 0-99 with result

bl       #0x201B9EC ; call rng
mov  r1,#0x29 
lsl     r1,r1,#0x4 ; set r1 to 0x290
blx     #0x20EBC80 ; divide r0/r1, results in r0 (0-99)

0223C5C6 0400     lsl     r0,r0,#0x10
0223C5C8 0C04     lsr     r4,r0,#0x10

; Check to see if r4 is >= 0x64 (how can this happen?)
; what is #0x2020C2C ?
0223C5CA 2C64     cmp     r4,#0x64
0223C5CC D301     bcc     #0x223C5D2
0223C5CE F5E4FB2D bl      #0x2020C2C

; put the original result back into r0
0223C5D2 0620     lsl     r0,r4,#0x18
0223C5D4 0E00     lsr     r0,r0,#0x18

0223C5D6 2814     cmp     r0,#0x14 ; is r0 < 0x14 (20)
0223C5D8 D201     bcs     #0x223C5DE
0223C5DA 2000     mov     r0,#0x0 (0-19)
0223C5DC BD10     pop     {r4,r15}

0223C5DE D303     bcc     #0x223C5E8 ; if >= 0x14(20)
0223C5E0 2828     cmp     r0,#0x28 ; 40
0223C5E2 D201     bcs     #0x223C5E8 ; if r0 < 0x28 (30)
0223C5E4 2001     mov     r0,#0x1 ; (20-29)
0223C5E6 BD10     pop     {r4,r15}

0223C5E8 2828     cmp     r0,#0x28 ; 40
0223C5EA D303     bcc     #0x223C5F4 ; >= 40 
0223C5EC 2832     cmp     r0,#0x32 ; 50
0223C5EE D201     bcs     #0x223C5F4 ; < 50
0223C5F0 2002     mov     r0,#0x2
0223C5F2 BD10     pop     {r4,r15}

0223C5F4 2832     cmp     r0,#0x32 ; 50
0223C5F6 D303     bcc     #0x223C600
0223C5F8 283C     cmp     r0,#0x3C ; 60
0223C5FA D201     bcs     #0x223C600
0223C5FC 2003     mov     r0,#0x3
0223C5FE BD10     pop     {r4,r15}

0223C600 283C     cmp     r0,#0x3C
0223C602 D303     bcc     #0x223C60C
0223C604 2846     cmp     r0,#0x46
0223C606 D201     bcs     #0x223C60C
0223C608 2004     mov     r0,#0x4
0223C60A BD10     pop     {r4,r15}

0223C60C 2846     cmp     r0,#0x46
0223C60E D303     bcc     #0x223C618
0223C610 2850     cmp     r0,#0x50
0223C612 D201     bcs     #0x223C618
0223C614 2005     mov     r0,#0x5
0223C616 BD10     pop     {r4,r15}

0223C618 2850     cmp     r0,#0x50
0223C61A D303     bcc     #0x223C624
0223C61C 2855     cmp     r0,#0x55
0223C61E D201     bcs     #0x223C624
0223C620 2006     mov     r0,#0x6
0223C622 BD10     pop     {r4,r15}

0223C624 2855     cmp     r0,#0x55
0223C626 D303     bcc     #0x223C630
0223C628 285A     cmp     r0,#0x5A
0223C62A D201     bcs     #0x223C630
0223C62C 2007     mov     r0,#0x7
0223C62E BD10     pop     {r4,r15}

0223C630 285A     cmp     r0,#0x5A
0223C632 D303     bcc     #0x223C63C
0223C634 285E     cmp     r0,#0x5E
0223C636 D201     bcs     #0x223C63C
0223C638 2008     mov     r0,#0x8
0223C63A BD10     pop     {r4,r15}

0223C63C 285E     cmp     r0,#0x5E
0223C63E D303     bcc     #0x223C648
0223C640 2862     cmp     r0,#0x62
0223C642 D201     bcs     #0x223C648
0223C644 2009     mov     r0,#0x9
0223C646 BD10     pop     {r4,r15}

0223C648 2862     cmp     r0,#0x62
0223C64A D101     bne     #0x223C650
0223C64C 200A     mov     r0,#0xA
0223C64E BD10     pop     {r4,r15}

:Check 99
0223C650 200B     mov     r0,#0xB
0223C652 BD10     pop     {r4,r15}
If anyone wants to double check it, feel free, more eyes can't hurt.

Looks like there is nearly enough information to go ahead and add this to RNG Reporter in the near future, but for now it should be easy enough to do by hand for those serious about it.

For encounters surfing and scenting in water

To do this, make a note of your method J frame and then locate the this frame - 2 in a method 1 list. Take the last 4 digits of the PID on this method 1 frame and convert it from hexadecimal to decimal.

Divide this number by 656 and discard any remainder or the decimal portion of the result (ie round down).

This gives a result between 0 and 99.

This number is then evaluated to produce and encounter slot that is between 0 and 4 (5 possible values).

Slot 0: 0-59 60%
Slot 1: 60-89 30%
Slot 2: 90-94 5%
Slot 3: 95-98 4%
Slot 4: 99 1%

Use the charts linked below to find a slot for a particular area.

0223C654 (water encounter code)
; rng call and reduce it to a number between 0 and 99
0223C654 B510     push    {r4,r14}
0223C656 F5DFF9C9 bl      #0x201B9EC
0223C65A 2129     mov     r1,#0x29
0223C65C 0109     lsl     r1,r1,#0x4
0223C65E F6AFEB10 blx     #0x20EBC80

0223C662 0400     lsl     r0,r0,#0x10
0223C664 0C04     lsr     r4,r0,#0x10

0223C666 2C64     cmp     r4,#0x64

0223C668 D301     bcc     #0x223C66E
0223C66A F5E4FADF bl      #0x2020C2C

0223C66E 0620     lsl     r0,r4,#0x18
0223C670 0E00     lsr     r0,r0,#0x18

;check 0-59
0223C672 283C     cmp     r0,#0x3C
0223C674 D201     bcs     #0x223C67A
0223C676 2000     mov     r0,#0x0
0223C678 BD10     pop     {r4,r15}

;check 60-89
0223C67A D303     bcc     #0x223C684
0223C67C 285A     cmp     r0,#0x5A
0223C67E D201     bcs     #0x223C684
0223C680 2001     mov     r0,#0x1
0223C682 BD10     pop     {r4,r15}

;check 90-94
0223C684 285A     cmp     r0,#0x5A
0223C686 D303     bcc     #0x223C690
0223C688 285F     cmp     r0,#0x5F
0223C68A D201     bcs     #0x223C690
0223C68C 2002     mov     r0,#0x2
0223C68E BD10     pop     {r4,r15}

;check 95-98
0223C690 285F     cmp     r0,#0x5F
0223C692 D303     bcc     #0x223C69C
0223C694 2863     cmp     r0,#0x63
0223C696 D201     bcs     #0x223C69C
0223C698 2003     mov     r0,#0x3
0223C69A BD10     pop     {r4,r15}

;check/fallthrough 99
0223C69C 2004     mov     r0,#0x4
0223C69E BD10     pop     {r4,r15}

For encounters fishing

Fishing is handled a bit differently from the previous two encounter scenarios.

First, since you can't sweet scent you have to determine if you are going to catch something at all for a particular frame. To do this, make a note of your method J frame and then locate the this frame - 3 in a method 1 list. Take the last 4 digits of the PID on this method 1 frame and convert it from hexadecimal to decimal.

Divide this number by 656 and discard any remainder or the decimal portion of the result (ie round down).

This gives a result between 0 and 99.

Now depending on your fishing rod here are the results:

Old Rod: Numbers between 0 and 24 mean a catch will be made.
Good Rod: Numbers between 0 and 49 mean a catch will be made.
Super Rod: Numbers between 0 and 74 mean a catch will be made.

Numbers that do not meet the criteria above will result in the "not even a nibble message"

Next take the last four digits of the method 1 PID that is on your method J frame - 2.

Divide this number by 656 and discard any remainder or the decimal portion of the result (ie round down).

Now use this number to figure out which slot you will get.

Old Rod:

Slot 0: 0-59 60%
Slot 1: 60-89 30%
Slot 2: 90-94 5%
Slot 3: 95-98 4%
Slot 4: 99 1%

Good and Super Rods:

Slot 0: 0-39 40%
Slot 1: 40-79 40%
Slot 2: 80-94 15%
Slot 3: 95-98 4%
Slot 4: 99 1%

Use the charts linked below to find a slot for a particular area.

; start, rod type passed into r0 (0=old, 1=good, 2=super)
0223C6A0 B570     push    {r4-r6,r14}
0223C6A2 1C05     mov     r5,r0
0223C6A4 2400     mov     r4,#0x0

; Call RNG and end up with 0-99
0223C6A6 F5DFF9A1 bl      #0x201B9EC
0223C6AA 2129     mov     r1,#0x29
0223C6AC 0109     lsl     r1,r1,#0x4
0223C6AE F6AFEAE8 blx     #0x20EBC80
0223C6B2 0400     lsl     r0,r0,#0x10
0223C6B4 0C06     lsr     r6,r0,#0x10
0223C6B6 2E64     cmp     r6,#0x64
0223C6B8 D301     bcc     #0x223C6BE
0223C6BA F5E4FAB7 bl      #0x2020C2C
0223C6BE 0630     lsl     r0,r6,#0x18
0223C6C0 0E00     lsr     r0,r0,#0x18

; old rod
0223C6C2 2D00     cmp     r5,#0x0
0223C6C4 D004     beq     #0x223C6D0

; good rod
0223C6C6 2D01     cmp     r5,#0x1
0223C6C8 D014     beq     #0x223C6F4

; super rod
0223C6CA 2D02     cmp     r5,#0x2
0223C6CC D024     beq     #0x223C718

0223C6CE E035     b       #0x223C73C

; old rod routine
0223C6D0 283C     cmp     r0,#0x3C ;
0223C6D2 D201     bcs     #0x223C6D8
0223C6D4 2400     mov     r4,#0x0
0223C6D6 E033     b       #0x223C740
0223C6D8 285A     cmp     r0,#0x5A ;
0223C6DA D201     bcs     #0x223C6E0
0223C6DC 2401     mov     r4,#0x1
0223C6DE E02F     b       #0x223C740
0223C6E0 285F     cmp     r0,#0x5F ;
0223C6E2 D201     bcs     #0x223C6E8
0223C6E4 2402     mov     r4,#0x2
0223C6E6 E02B     b       #0x223C740
0223C6E8 2863     cmp     r0,#0x63 ;
0223C6EA D201     bcs     #0x223C6F0
0223C6EC 2403     mov     r4,#0x3
0223C6EE E027     b       #0x223C740
0223C6F0 2404     mov     r4,#0x4
0223C6F2 E025     b       #0x223C740

; good rod routine
0223C6F4 2828     cmp     r0,#0x28
0223C6F6 D201     bcs     #0x223C6FC
0223C6F8 2400     mov     r4,#0x0
0223C6FA E021     b       #0x223C740
0223C6FC 2850     cmp     r0,#0x50
0223C6FE D201     bcs     #0x223C704
0223C700 2401     mov     r4,#0x1
0223C702 E01D     b       #0x223C740
0223C704 285F     cmp     r0,#0x5F
0223C706 D201     bcs     #0x223C70C
0223C708 2402     mov     r4,#0x2
0223C70A E019     b       #0x223C740
0223C70C 2863     cmp     r0,#0x63
0223C70E D201     bcs     #0x223C714
0223C710 2403     mov     r4,#0x3
0223C712 E015     b       #0x223C740
0223C714 2404     mov     r4,#0x4
0223C716 E013     b       #0x223C740

; super rod routine
0223C718 2828     cmp     r0,#0x28
0223C71A D201     bcs     #0x223C720
0223C71C 2400     mov     r4,#0x0
0223C71E E00F     b       #0x223C740
0223C720 2850     cmp     r0,#0x50
0223C722 D201     bcs     #0x223C728
0223C724 2401     mov     r4,#0x1
0223C726 E00B     b       #0x223C740
0223C728 285F     cmp     r0,#0x5F
0223C72A D201     bcs     #0x223C730
0223C72C 2402     mov     r4,#0x2
0223C72E E007     b       #0x223C740
0223C730 2863     cmp     r0,#0x63
0223C732 D201     bcs     #0x223C738
0223C734 2403     mov     r4,#0x3
0223C736 E003     b       #0x223C740
0223C738 2404     mov     r4,#0x4
0223C73A E001     b       #0x223C740

0223C73C F5E4FA76 bl      #0x2020C2C

; DONE, final results in r0
0223C740 1C20     mov     r0,r4
0223C742 BD70     pop     {r4-r6,r15}
Charts and stuff

Charts are here:

Platinum Chart

Diamond Chart

Pearl Chart

Heart Gold Chart

Soul Silver Chart
This post serves as an easy to find location for the various videos designed to serve as tutorials to those who wish to abuse the 4th generation RNG. These are put in order from what I feel is most basic to most difficult


Calibration Phase by Bearsfan092

RNG Abuse for Shiny Eggs by thetorsoboy

RNG Abuse for Legends by Bearsfan092

RNG Abuse for Eggs: Part 1 by Bearsfan092

RNG Abuse for Eggs: Part 2 by Bearsfan092


RNG Abuse for Legends/Regular Pokemon by Bearsfan092

RNG Abuse for Shiny Eggs and IV's by Bearsfan092

If you feel there is an RNG video that should be added here, PM me with a link. No low quality films please.



[custom user title]
is a Smogon Media Contributor Alumnus
new guide.

Here's an alternate method of using emloop, since I can't seem to understand Sephirona's. I'm sure hers works just fine, I just can't seem to make sense of it @_@

Note: This guide requires that you be able to SR your game when the timer hits 0. It will not work for AR users, who cannot do this without turning their codes off. You can try the guide below mine, in that case, but I have no idea if it will work for you or not.


The Emloop Window:

The boxes are referred to in the guide by the color I have marked them. For a quick list of what does what, look here:
Red: Delay (frames)
Green: Pre-delay
Yellow: Delay (seconds)
Blue: Convert delay to seconds
Purple: Start timer

Step 1:
Find the seed of something you want to SR. Use RNGReporter to calculate a delay based on that seed for a given year (since you're trying to hit a non-standard delay if you're reading this, you're probably going to want to use 2008 or 2009 as the year, depending on if you commonly get even or odd delays). Enter the delay given by RNGReporter into the red box on Emloop.

Step 2:
Enter a value of 60 into the green box.

Step 3:
Press the blue button on emloop, and note the value that appears in the yellow box. This is your delay converted to seconds, and is necessary for finding a proper date/time combination in RNGReporter.

Ignore anything after the decimal place, it's only the first two numbers that matter. Don't round, just cut them off. In this case, I would simply be using "12."

Step 3.5:
Not a requirement, but this can make things a lot less difficult in certain situations.

If the value you get for seconds is dangerously close to the next whole number (to be safe, anything that's .8 or higher), I would add 0.2 to the green box (so, enter 60.2 instead of 60) and use (seconds +1) as the value to look for in RNGReporter. This minimizes the effects of not resetting your game and starting Emloop at the exact same time, as it gives you closer to a whole second's margin of error, as opposed to at most 0.2 seconds.

For example, if my delay converted to 12.87 seconds, I'd enter 60.2 in the green box and search for things with a seconds value of 13 in RNGReporter.

When doing this, you do not make any changes to the delay you entered into the red box.

Step 4:
Find a suitable date/time combination for your year in RNGReporter that uses the seconds from step 3 (or 3.5, if applicable).

Step 5:
Set the date on your DS to the date provided by RNGReporter. Change your DS time to be one minute before the time of your seed. If your seed came at 11:25.13, you'd want to set the DS clock to 11:24.

Step 5.5:
At the moment you press A to confirm the DS time change, press SPACE on the emloop window with your other hand. Alternatively, you may press the purple button, but SPACE is probably more convenient.

At this point, the timer will begin counting down from 60 (or 60.2, depending on step 3.5).

Step 6:
The DS will require you to turn it off after the time change; do that. Turn it back on and load your game.

Step 7:
When the first emloop timer hits 0, soft reset your game. It's wise to keep your fingers on three of the buttons (I like to use start, select, and R) so that all you have to do is press the fourth when it's time. Emloop's second timer (using your actual delay) should begin at the same time you SR.

The screen will be white for a second or two while the game re-loads itself, don't worry. You will correct for that in step #.

Step 8:
Mash A as rapidly as possible to get through the game's intro as quickly as possible. Pause on the continue screen (shown below) until emloop's time runs out, at which time you should press A to load your game.

Step 9:
Catch a pokemon and check your seed. You should note that the delay is probably nowhere near what you want it to be. This is because during the white screen, the game was loading, and not counting delay. You will need to adjust the delay you put into emloop as follows:

For example, say I was aiming for a delay of 767 (the number in the red box).
Let's also say the delay I got when I checked my seed was 663.
That's a difference of 104 (767-663=104).
In other words, my game took the equivalent of 104 frames to load.
To adjust, I'd simply add that time to my original delay.
The new number I'd enter into the red box is 871 (767+104=871).

If this causes the seconds to increase (more than likely it will, by either 1 or 2), you will need to lower the minutes of the time you are SRing for by an equal amount to compensate.

For example, if I was setting my clock to 11:24 in step 5, and my seconds changed from 13 to 15 (a change of 2), I'd now set the clock to 11:22 instead. Everything else would remain exactly the same.

Every game takes a different amount of time to load, especially if you are using a flash card. To make sure you have enough delay time available to you to actually calculate your specific load time, try adding about 200 frames to the initial value you use (so, if you were going for a delay of 767, try entering 967), go through the process once, figure out what delay you actually hit, and adjust accordingly. If you don't give yourself enough of a buffer to account for your load time, the timer will hit 0 before your game finishes loading, and that won't be very helpful.

Step 10:
Using the adjusted delay, repeat steps 3 through 8. Catch another pokemon and check your seed again. The delay should be close to what you're aiming for. If it is, you're ready to SR some pokemon using the same process. Normal human imperfection should cause you to hit the correct delay within a few tries.

If not, repeat the adjustment procedure outlined in the previous step.


t-t-t-tubearrific. (✿≖ᴗ≖) ・゚✧*:・゚✧
is a Top Artist Alumnus
Catching Wild Legends without Weird Years
Scroll to the bottom for a few NPC controlling tips ~

It's easy to change the year on your DS to achieve the higher delay you want, but here's a method you can use to more accurately predict the delay for those of you who dislike having Pokemon caught or hatched in the distant future.

This is by no means the only method, but so far it is one of the most predictable since you can tell the approximate time at which you should press the A button at the continue screen.

We'll cover:

- How to better predict a higher-than-normal delay
- How to incorporate a higher seconds value into the process


1. RNG Reporter (Note to Mac Users: This software is for Windows and there is no Macintosh version. If you would like to try to run it using Wine/Mono please give it a shot, but no one has managed to make this work yet. You really should have Bootcamp, though.)

2. The Emloop Timer. This is in Japanese, but pictorial representations will be provided below. You should familiarize yourself with how it works.
(If you are interested in the other functions of Emloop, here's a pretty nice guide by MrSableye. We'll be using just the Timer, however.)

3. The Coin Flip (#15) Pokétch Application. You need this to determine whether you've hit the correct delay. You can find this in the Valor Resort area, south of where the woman lost her key. You need to use Rock Climb, and go down to the house on the ledge. The man in the house will give you the application.

4. Before trying this, it would also be easier if you already have a decent grasp of how to RNG for wild Pokemon in the first place, which is covered in the OP. This method is really for aesthetics for those who can RNG for Legends but do not like the outrageous dates associated with high delays, and it might be a bit challenging if you don't already know your average delay range and/or how to reset for delays.

Step 1

Before starting:

1. Using the RNG Reporter, you should already have found your desired initial seed with the Time Finder.

2. Plug the initial seed into the RNG Reporter's Seed to Time function, and choose a suitable date. Take note of the time, especially the seconds, that you need.

3. You should be in front of your target Pokemon, with the proper number of Pokemon in your party depending on whether you need an odd or even frame you are trying to achieve, and with knowledge of how to use the Journal to advance your frame.
As a note, it is useful to have at least one spot open in your party to capture your target and note what its initial seed is so you know the delay you just hit.

4. Have the Coin Flip Application open. You will need this to determine if you've hit the correct delay.

5. Save your game and get ready to use the Emloop Timer.

Step 2
Here's a screenshot of the Em-timer interface:

Here's where you have to do some math. Take the higher target delay you want and subtract your normal delay from it. This number, which you normally would add to the Years on your DS, should be plugged into the box I labeled Frames. Press the button under this box and it will convert this to some amount of seconds in the Time box. This is the additional time you need to wait at the Continue Screen before you press A, and it is okay if it's in decimals.

Step 3

Take your target time and note the seconds. First, subtract your usual seconds value (14-15 ish) from the seconds of your target time. From the answer you get, further subtract the value you have from
your Time box. Now take this final answer and plug it into the Pre-Reset Time Box, as labeled above.

The emloop timer is a two-stage timer - the value in the
Pre-Reset Time Box will count down first, and you should later be ready to reset your game the instance it reaches zero.

Step 4

You're almost ready. Remember the time in the Time box you converted?
Add your usual seconds value (14-15 ish) to this number. The number in this box is the second count-down of emloop's two-stage timer.

Check the Ten Second Beeper, because it will be extremely useful (even necessary) to time yourself.

Step 5

Now when you are ready, hold down both the Start button on the Emloop Timer and the confirm button for your DS clock. (DS time should be on the same minute as your Target Time.) Release both buttons at the same time, wait for your DS to shut off automatically, and turn it back on and load the game.

From here, it is up to you to practice

- Soft-reseting exactly when the Pre-Reset Timer hits 00:00:00 but a literal split second before you hear the chime that signifies the start of your second timer
- And to press A at Continue exactly when you hear the final chime that signifies your 2nd timer has hit 00:00:00.

If you don't know what these chimes sound like, just take some time and run the timer once just to listen to the sounds it makes. Remember that even a 00:00:01 difference can throw your delay off by at least a few, so practice consistency. With good timing, you can narrow your range to just about the same amount you would normally have (a difference of ten or less).

When your coin flips match at least TEN in the column when you put your Initial Seed into the RNG Reporter and set the method to DPPt Egg (Normal), you've probably hit your delay! Congrats. :>


- The final number you count down from in the Time Box and the final number you count down from in the Pre-Reset Time Box should add up to the seconds value of your Target Time. (i.e. 14.80 + 44.20 = 59)

- It is always wise to capture your target Pokemon and check the initial seed you got when you know your delay was wrong based on your coin flips. This will tell you if you've messed up on the seconds and how far off your delay value is from what you desire.

- If you happen to find that your average range is consistently a little lower or higher than you want, don't be afraid to add or subtract 2 into the delay you first put into the Frames box in Step 2. Just remember to follow the same steps to subtract the resulting larger or smaller seconds value to the time in your Pre-Reset Time box, and to follow the rest of the steps accordingly.

- You can always just increase your year by one or two if you don't really mind the difference, but part of the challenge is hitting exactly what you want exactly when you want. :0 Challenge yourself!

- As a small note in case there's any confusion, the usage of the term 'frame' for the Frames box that you put your extra delay value in is different from the "frame" you use NPC movements and Journal flips to advance. So don't worry about it too much.


An Example


SEED: 8702028F
DATE: 2009/05/05
TIME: 02:51:59
DELAY: 646

Usual Values:

Delay Range: 594-602
Seconds: 14

**The picture of the Emloop Interface up there is actually of what my final numbers looked like while I was reseting, read below.

First, I took the extra delay value I needed - in my case, I needed 646 and my normal value is usually 600, so 46 - and put that into the Frames box. That gave me .76 seconds after converting.

Then, I subtracted 14 from my target 59 seconds - that made 45 seconds.

Since I need to wait the extra .76 seconds at the continue screen, I subtracted .76 from 45 and got 44.24. I put this in the pre-seconds counting box. Then, I added 14 to the .76 and used that for my countdown instead. Now, with the second part of the timer, I proceed to the continue screen as usual, except in this case, it gives me a visual approximation for when I should press A - right as 14.76 seconds finishes. This way, I still hit 59 seconds, while satisfying the longer time period I needed to stay at the continue screen to hit my delay.

However, I realized that by doing this, my delay range was still a little lower than I wanted. So I added 2 to what I put into the Frames Box and got .80 seconds. I went back and did all the math, so that I would still be hitting A at exactly 59 seconds, but that I would be waiting a split second longer at the Continue screen - which would raise my delay a tiny bit. The picture of the Emloop Timer provided is what my final interface looked like when I started reseting again - and got my Pokemon. :0

Good luck, everyone! Remember, we're not machines, so don't worry if it takes a bit more practice to reset and press A at exactly 00:00:00.

Credits: Mingot, OmegaDonut, Sephirona (me.) (for fleshing out Omega's idea about the Emloop Timer and writing this lul), Expert Evan for his version of the method that I read over before playing with my own, and everyone else who's responded to my noobish questions about how to fiddle with the RNG :0

Tips for better NPC control when catching wild Pokemon

NPC movements are annoying when you're trying to land on a specific frame in an area infested with wandering NPCs, but here are a few tips to possibly limit the effects of NPC movements. This works best in an area with wandering NPCs that are mostly trainers.

- Use the Vs. Seeker to rebattle all the wandering trainers you can in the entire zone. If you stay in the same zone and save, when you next turn on the game they will stay unmoving. The Vs. Seeker is obtained from Lucas around Cycling Road in Diamond/Pearl and in front of the Mt. Coronet entrance north of Oreburgh in Platinum.
A zone refers to a whole area, but keep in mind that certain routes may be divided into two separate zones (as in the case of Route 210) even if the little box that normally scrolls down when you enter a new area doesn't appear.

After you've 'eliminated' as many wandering trainers as you can, save (while staying in the same zone). If there are no wandering NPCs left (the ones you could not Vs. Seeker to battle) you can proceed as normal with your RNGing. If there are any left, you should save with as many of them in view as possible while standing in a grass patch, with the Coin Flip application open as usual. Hopefully you don't have many non-trainer NPCs left .-.

- Try to save at an instance where your remaining NPCs don't start moving immediately after you press A at continue. Now, when you next turn on the game, as soon as the screen loads after the continue screen hit the x button to open the menu. This will pause the NPCs on screen and prevent the RNG from advancing due to their movements. Now, when you're ready, cancel the start screen very quickly, tap the Coin Flip app, and press x immediately again. The Coin will keep flipping even after the start screen is up, and the results will still tell you if you've hit your delay.
If you haven't hit your delay, go catch a wild Pokemon and find out why as usual, etc.etc.

-If you need to take a step forward to make your frames odd, do so in the same manner.
I haven't tested to see how long this can be kept up before an NPC tries to move, but I successfully flipped the coin like this three times without them moving, and took a step forward without them moving either. I didn't have to flip any more because I knew from previous experience with the same seed that it was correct.

- Note that if you save after using Defog, the fog will not return upon restarting the game unless you leave the zone.

-Poke Radar Abuse-

The pokeradar advances the RNG based on the number of patches that show up.

4 Patches = 10
3 Patches = 8
2 Patches = 6
1 Patch = 4

The pokemon for the patch is based off the same as the Sweet scent encounter slot. The pokemon radar slot for the encounter slots does not always get the radar pokemon. As of right now, I am unsure what determines if it will be the radar pokemon or not, but the best odds to get your target radar pokemon and the right frame, is to catch one first, getting you a chain of one.

- How to Abuse -

Getting prepared
- Choose a frame that is high. Peferably over 700.
- Bring a Syncher and a Flyer only! Or add 1 extra pokemon only.
- Go to the route your pokemon is on.
- Battle every moving NPC that you can that affects the RNG.
- Use any repel, the higher the better.
- Save in the middle of a big patch. Set the pokeradar so you don't have to open the menu every time.

Reset your game until you hit your seed, verifing by coin flips, or in weather by catching a pokemon.

What you want to do is pokeradar, and go into a patch that is sparkling. For reference in this guide:
shiny patch = shiny
sparkling patch = radar pokemon
plain patch = no radar pokemon

You want to try catching your radar pokemon and thus starting a chain of one. Keep radaring and walk into the sparkling patches until you battle the radar pokemon. Any other pokemon run from. If it is your target pokemon, catch it. Notice where the patches are and find the sparkling patch. That is the patch you will walk in to. Note the amount of steps it takes to get there and all the advancement that will occur. Walking forward is one advancement and turning is one advancement. In some cases, forward steps randomly advance by 2. I suggest doing a turn+walk, which is 2 advancements, and seems not to occur the random additional advancement for walking forward. Calculate the amount of advancements for you to walk to that patch. This will be used to calculate the journal flips required later on.

If there is no sparkling patch, try radaring again and you must capture the radar pokemon to find out what frame you are on.

Check the frame of the caught pokemon, and find out the actual frame. This will be coloumn two. Now you have everything to do the calculations for the journal flips.

~Calculations for journal flip

Target frame - Actual frame - Steps advancement - Radar advancement - 6

If this number is odd, you have to do an extra turn while walking to your patch. If even, divide by 2 for the amount of journal flips.

The -6 is from 5 for battling and 1 for the monster frame.

After performing your journal flips, walk to the patch and hopefully it should be your target pokemon with the target frame. There are many things that can go wrong. You can get the random advancement. You can reach the 128 step counter and thus advance the steps counter. It may be better to bring 3 pokes, because once you catch the radar pokemon, that would be 4 advancements from the step counter and thus can still hit your target spread.

Helpful hints/tricks
-If you are standing in the same spot when resetting, when you hit the same delay, you will always have the same patches show up in the same spot. You can use this to confirm the seed you hit. Also, you can repeat your exact steps when trying to abuse in case you go over/under X amount of frames.

Wild Eep

pet pet pet
is a Forum Moderatoris a Senior Staff Member Alumnusis a Researcher Alumnus
Manipulating your Trainer ID and Secret ID in the 4th Generation

Thanks to TCCPhreak's research, we know that the Trainer ID and Secret ID (and the seed from which they are found) are generated at the end of the new game sequence (after the TV scene is dismissed in Diamond, Pearl, and Platinum) using the same RNG as PID generation of eggs. For a given seed, the game calls this RNG twice and looks at the second call (frame 2 of DPPt Egg PID in RNG Reporter). The left four hexadecimal digits are the Secret ID, and the right four digits are the visible Trainer ID.

How to use this knowledge to our advantage:

We'll need:
RNG Reporter and ID Finder (Requires .NET Framework 3.5) (both available to download in the first post) [EDIT: the latest versions of RNG Reporter have IDFinder built in via the Pandora's Box button]
Basic understanding of how the RNG works
Ability to reach high delays (5000+) with Emloop or equivalent (This post and the one below it have tutorials)

Process of RNG Manipulation:

1. A different type of calibration is required for manipulating your ID numbers. The seed is determined after you end the new game sequence (in Diamond, Pearl, and Platinum, this occurs after you dismiss the TV program and before the camera switches to you in your room). A new game takes some time to set up, so even the fastest new game will have at least 5000 delay. You can check your seed by keeping track of when you start the game and when your seed is determined (at the minute level, these should be different as it should take well over a minute to set up the new game). Insert the end-time and the trainer ID you ended up getting in the right column of ID Finder (the Seed Finder) along with a large delay range that should hopefully contain the seed you hit, and the results will tell you the delay ranges to aim for. Also keep in mind how many seconds it takes to complete the new game sequence.

2. Next, you're going to want to find your target seed. The course of action depends on whether you want an ID that will make a desired PID (Nature/Gender/Ability, and for wild Pokemon and legendary Pokemon, this will also include IVs) or a specific ID number for aesthetics (e.g. 1337) or for nicknaming event Pokemon (only the visible ID needs to match - 12/27 edit).

2a. If you want to get a certain Nature/IV spread shiny, you'll want to use the left column of the ID Finder. To get the desired PID, you'll have to find the PID of the target spread in RNG Reporter. Insert the appropriate year and delay ranges according to your calibration. As of version, you can also choose to search for a specific trainer ID at the same time.

2b. If you want to get a certain ID number, you'll want to use the middle column of the ID Finder. If you need a specific SID too, you can check the Search SID box and Also insert the appropriate year and delay ranges according to your calibration.

-The "Infinite Search" feature added in version will search from the minimum delay specified (assuming year 2000) until it reaches the highest minimum delay for any seed (which is 15269887) or until you cancel it. Setting minimum delay to 0 will let you search through all 4294967296 seeds, which is time-consuming, but thorough.

3. Once you have a target seed, use RNG Reporter again for the Seed to Time function, finding a date/time with the appropriate seconds number to make it easy to find the right time to soft reset (or enter the DS game if you hard reset). If you miss your desired seed, you can input the Trainer ID you did get into the right column (Seed Finder) to find out how far off you were.

If you have a seed and want to find out which ID/SID combo it will yield, you can use the Simple Calculator in the upper right corner. It will calculate delay based on year 2000.

Happy ID hunting!

Version history:

0.2: Accidentally broke the seed finder in the previous version - this is now fixed. Version number jump is overdue because my changes from 0.11 to 0.12 were larger than I realized when I numbered the versions. (11/12/09) Added "infinite search," search for Trainer ID and Shiny PID in left column, and simple seed to ID/SID feature. Fixed bugs such as errors when number of digits in min delay doesn't match number of digits in max delay as well as crashes when shiny PID was left blank. (10/31/09) First release to forums, ordered search in ascending order of delay, added progress percentage to status bar. Crappy beta.


Manipulating the Pokemon in Honey Trees

Sources: Honey Tree (Technical) article at projectpokemon and

Relevant basic information:

Juking a seed:

After you know your basic delay and how long it takes to enter the game world from calibration, use the Simple Seed Generator in RNG Reporter to create a basic seed such that you can enter the game world at a consistent time (e.g. if you had 600 delay and 15 seconds, you might want to make a seed for 19:13:15 and 600 delay such that when you start at 19:13:00, you would achieve a seed close to the basic seed.) Then you will want to take your seed and input it into the Seed to Time dialog. Find your target date/time, and generate a series of seeds (I recommend -20 to +20 delays and -1 to +1 seconds). When you fire up the game, use the coin flip app to try to determine which seed you actually hit. As long as you can identify which seed you got, any seed will work.

Determining the raw random number order for a given seed:

The raw random number for a given frame is the last four hex digits of the PID for that frame in Method 1. When you slather a tree with honey (and it's not the tree you just battled), the random number for the frame you are on and the two after that are used. I haven't worked with same-tree slathering, and it's likely to add an unnecessary degree of complexity to this process.


These locations have no NPCs to worry about: Floaroma Meadow, Valley Windworks, Fuego Ironworks
These locations have NPCs that all can be stopped with the Vs. Seeker: Route 205 North, Route 207, Route 208, Route 210 South, Route 214, Route 218, Route 221

It is advisable to avoid the trees in areas with uncontrollable NPCs.

Finding your Munchlax trees:

Munchlax trees are three to four trees determined by your trainer ID and secret ID that are the only trees in which you have a chance to find Munchlax. In addition, you have a better chance of finding Column 2 (rarer) Pokemon in Munchlax trees.

Convert your Secret ID and Trainer ID into hexadecimal. They should each have four digits (if not, add zero(s) to the left until you do). They should then look like:

Secret ID = [QQRR]
Trainer ID = [SSTT]

[QQ] = first two hex digits of SID
[RR] = latter two hex digits of SID
[SS] = first two hex digits of trainer ID
[TT] = latter two hex digits of trainer ID

Divide QQ, RR, SS, and TT by hex [15] (decimal 21) and return the remainders:

[WW] = [QQ] % [15] (% = modulo operator -> divide first number by second, return remainder)
[XX] = [RR] % [15]
[YY] = [SS] % [15]
[ZZ] = [TT] % [15]

The games have a system that mostly avoids duplicate numbers such that most IDs have four trees. If any of these four variables reach [15], that variable rolls over to [00].

1. If XX = WW, add 1 to XX.
2. If YY = WW, add 1 to YY.
3. If YY = XX, add 1 to YY.
4. If ZZ = WW, add 1 to ZZ.
5. If ZZ = XX, add 1 to ZZ.
6. If ZZ = YY, add 1 to ZZ.

After this series of steps, a tree is a Munchlax tree if its index number is equal to WW, XX, YY, or ZZ.

Hex = Decimal = Location

[00] = 0 = Route 205 South
[01] = 1 = Route 205 North
[02] = 2 = Route 206
[03] = 3 = Route 207
[04] = 4 = Route 208
[05] = 5 = Route 209
[06] = 6 = Route 210 South
[07] = 7 = Route 210 North
[08] = 8 = Route 211
[09] = 9 = Route 212 West
[0A] = 10 = Route 212 East
[0B] = 11 = Route 213
[0C] = 12 = Route 214
[0D] = 13 = Route 215
[0E] = 14 = Route 218
[0F] = 15 = Route 221
[10] = 16 = Route 222
[11] = 17 = Valley Windworks
[12] = 18 = Eterna Forest (cut shortcut)
[13] = 19 = Fuego Ironworks
[14] = 20 = Floaroma Meadow

There are rare cases where two of WW, XX, YY, or ZZ end up equal, and the game has only three Munchlax trees.

If you don't know your secret ID, you can use the two halves of your visible ID (and ignore the correction algorithm unless the two are equal) to find two of your Munchlax trees.

Determining the species of Pokemon in the tree:

The game has a table of Pokemon that you can face with two columns (and Munchlax) and six rows. The column determination of the Pokemon you will face depends on whether or not you are slathering a Munchlax tree, as well as whether or not the tree you slathered was the last one you interacted with. This guide will focus on different-tree Honey Tree manipulation, as I mentioned before.

So when you slather a tree, three consecutive random numbers are called. The first helps determine the column, the second helps determine the row, and the third helps determine the shake value, which governs how vigorously the tree will shake once the Pokemon is available to catch.


The first random number called determines the column of the Honey Tree table from which the species of Pokemon will be determined. Divide this random number by 656 to get a number from 0 to 99 (ignore any remainders).

Non-Munchlax Tree:

Rand#/656   Result
   0-9     Failure
  10-29    Column 2
  30-99    Column 1
Munchlax Tree:

Rand#/656   Result
    0      Munchlax
   1-9     Failure
  10-29    Column 1
  30-99    Column 2

The second random number called determines the row. Divide this random number by 656 to get another number from 0 to 99. If you get a Munchlax, this process still happens even though it doesn't change anything.

Rand#/656   Result
   0-4      Row 6
   5-9      Row 5
  10-19     Row 4
  20-39     Row 3
  40-59     Row 2
  60-99     Row 1
Shake Value:

6 realtime hours after slathering the tree, the tree will be ready, and it will shake with vigor related to the column obtained, as well as a third random number, which determines the shake value. A shake value of 0 causes the tree to be stationary, while the other values cause the tree to shake with increasing vigor.

Column 1:

Rand#/656   Shake
   0-19       2
  20-78       1
  79-98       0
    99        3
Column 2:

Rand#/656   Shake
   0-74       2
  75-94       1
    95        0
  96-99       3

Rand#/656   Shake
   0-4        2
    5         1
    6         0
   7-99       3
The Tables:


Row   Column 1   Column 2
 1    Wurmple     Combee
 2    Silcoon     Burmy
 3     Combee    Cherubi
 4     Burmy      Aipom
 5    Cherubi   Heracross
 6     Aipom     Wurmple

Row   Column 1   Column 2
 1    Wurmple     Combee
 2    Cascoon     Burmy
 3     Combee    Cherubi
 4     Burmy      Aipom
 5    Cherubi   Heracross
 6     Aipom     Wurmple

Row   Column 1   Column 2
 1     Combee     Burmy
 2    Wurmple    Cherubi
 3     Burmy      Combee
 4    Cherubi     Aipom
 5     Aipom      Aipom
 6     Aipom    Heracross
Species Manipulating Example:

Say we are slathering a non-Munchlax tree in Platinum, and we land seed [8D17025B].

The first five Method 1 PIDs for this seed are as follows:

Taking the last four digits of each PID produces the raw random number ordering.

If we were to slather honey on a tree immediately with this seed, we would first determine the column by looking at the first random number, [02E6]. This is 742 in decimal. We divide it by 656 while ignoring any remainder, and we get 1. Looking at the column determination table above for non-Munchlax trees, we see that a result of 1 would end in failure. The honey wouldn't even stick to the tree.

Now let's back up and say that we turn the Journal to a page with a caught or defeated Pokemon entry on it before slathering. This advances the RNG by 2, skipping over our failure case above. So we skip [02E6] and [12EF], so for the column, we look at [9FDF]. This is 40927 in decimal. We divide it by 656 while ignoring any remainder, and we get 62. We see from the non-Munchlax tree column determination table above that our resultant Pokemon would be from Column 1.

Now we need to determine the row. The next random number in order is [A285], which is 41605 in decimal. We divide this number by 656, ignoring remainders again, and we get 63. This number is greater than 60, so the Pokemon will come from Row 1.

We look at the Platinum table and find Row 1 in Column 1. In this case, we are set up to find a Combee in that tree in six hours!

A third random number is called to determine how vigorously the tree will shake when our Combee has arrived. [A9A2] is our next random number in the sequence. This is 43426 in decimal, and when divided by 656 becomes 66. The Column 1 shake table above indicates that 66 would result in a shake value of 1. The tree will shake rather unenthusiastically when the Combee appears. If the tree doesn't shake when there's a Pokemon in it or if it shakes too vigorously, we know we messed up the RNG advancement or seed determination when we slathered the honey.

So now we know what would happen if we get the seed [8D17025B] and flip the journal once before slathering the tree.

If you are slathering a Munchlax tree and you get a Munchlax (column number divided by 656 = 0) either by chance or by design, the row number is still called, but it doesn't change the fact you will get a Munchlax.

Manipulating the Pokemon once it is there:

The Pokemon in the tree follows Method J. The starting frame is 2. This is the simplest part of the process.

Program for checking how the game messes with Ranger Manaphy eggs' PID if they would end up shiny:

If the PID of a Ranger Manaphy egg is shiny in the game it is being obtained in, the game will invoke the ARNG to adjust the PID such that it is not shiny.

The replacement PID is calculated by doing this bit of math on the PID that RNG Reporter reports, as many times as necessary, until the Pokemon is NOT shiny:

pid = pid * 0x6c078965 + 1;

Level of Wild Encounter (Especially Surfing/Fishing)

Here is how the level of the wild Pokemon you'll face when you do get in an encounter is determined. The encounter tables at Ultimate Pokemon Center again have level info. For grass/caves, you'll simply want to use the same level as the slot you're aiming for.

For surfing/fishing, it's a bit trickier. The maximum level is the one listed to the left of the species name for a given slot, and the minimum level is the number in parentheses. The key is the Method J frame - 1 in the Method 1 list. Get the decimal equivalent of the last 4 digits of that frame's PID (let's call it R for random number). Level = Min Level + [R Mod (1 + Max Level - Min Level)] (the Mod operation means take the remainder when you divide R by the term in parentheses)


don't glaze me bro
is a Programmer Alumnusis a Forum Moderator Alumnusis a Top Researcher Alumnusis a Top Contributor Alumnus
A problem with using Pandora's Box to find an ID\SID to get a certain shiny spread is that you have to go through the whole game just to get one good spread (like a flawless shiny Zapdos), then play through the game again for another good shiny spread. So, I made a list of good spreads (29+ in all stats, 30\31 in Speed), and found out which ones were shiny together. This way you only need to play through the game once for multiple near-flawless shinies.

All you have to do is plug the PID of one of the spreads into Pandora's Box, it'll give you an ID\SID that will make all the spreads in the group shiny.

Since HGSS was just released today, I thought this would come in handy for most people. Sorry if you already started playing through it.

It can be found here. Here are a few of the groups I've picked as an example.

PID		Nature	Ability	IVs
e9b838a5	ADAMANT	1	31\30\31\15\31\31
69b8b8a5	CAREFUL	1	31\30\31\15\31\31
6c96bd8f	BOLD	1	31\19\31\30\30\31 (HP Ground 70)
ec963d8f	TIMID	1	31\19\31\30\30\31 (HP Ground 70)
ff8e2e5f	JOLLY	1	29\31\29\12\29\31
7f8eae5f	IMPISH	1	29\31\29\12\29\31
34f0e527	TIMID	1	30\11\31\30\31\31 (HP Grass 70)
b4f06527	MODEST	1	30\11\31\30\31\31 (HP Grass 70)
The two applications I have out so far are JavaRNG and PikaTimer. JavaRNG 2.00 and on have PikaTimer built into them as well.

Download JavaRNG.
Download PikaTimer.




- Searches take from 18 - 40 minutes for an infinite search, depending on how specific you are. More specific IVs and natures lower the time, more specific Hidden Power (Base Power and Type) raises the time.
- If you are searching Method J or K, two files (SpreadsJunk.txt and SpreadsJunk.csv) will be created. These contain the method 1 spreads for your search in a modified form so that the program can use them to find your Method J or K spreads. These contain no useful information for use by humans, and can be deleted any time after the end search message is displayed.
- The Method 1 frames are still off like in PokeRNG (I am working on fixing this), but the Method J frames are right on.
- If something breaks, let me know and I will get right on it.
- The only way to hose the program is to do a search with too many results (in the multiple hundreds of thousands). This is generally on accident, but be warned that if you do do this on accident, you need to manually close down the program in the task manager.
- The "Timer" Button brings up PikaTimer.

Explanation of Buttons:
- Method List: Simply Click on the Method you wish to search. An error will be returned if you do not select one and press "Start."
- Nature List: Once again, click on the Nature you want, or select "ANY." It will get mad at you if you do not choose an option.
- Start box: Select your Emerald Starting frame. For DPPt/HGSS users, this should usually always be 0 (the default).
- End box: Select your Emerald End frame, with 0 being a search through every spread in the game. Once again, DPPt/HGSS users should probably select 0 (the default).
- Synch Nature: If you are doing Method J or K, this is required, otherwise it is ignored. "NONE" means you will have no synchronizer (Duh), and "SAME AS SPREAD" means that you will use a synchronizer the same nature as whatever spread you are aiming for.
- IV Search Buttons: Select ">=" (the default) to search for IVs greater than or equal to what you have entered, select "==" to search for the exact IVs you have entered.
- HP through Spe entry boxes: Type the IV you want (either minimum or exact, depending on what you selected above). The default is 0 in all. If there is nothing in the box, or whatever is in there is not an integer from 0 to 31, an error will be returned.
- Minimum Delay: Input the minimum Delay you can hit comfortably in your game. The Default is 595. If you have something weird that isn't a positive integer in here, you get an error.
- Maximum Delay/Wait Buttons: Pick if you want to tell the game the maximum delay you want to hit, or the maximum amount of time you want to wait on the title screen after your minimum delay has been reached. Maximum Delay is the default. Once again, weird entries throw errors.
- Hidden Power Minimum Base Power: If the number here is not an integer less than or equal to seventy, an error is thrown. 30 is the minimum for Hidden Power's Base Power, so it is the default, and will not cause the search to go slowly.
- Hidden Power Type: Select a type, or any. This is required.
- Shiny: Select "Yes" or "No." If you selected "Yes," type in your ID/SID. If the ID or SID is not legal, you will be notified.
- The "Start" Button: Notifies you of any errors, and if there are none, gives you the notice that your search will start when you hit "OK" to the message that pops up. You will be notified by pop-up when your search is complete.





- It will take a few tries to get used to this from Emloop, but it is easier, at least I think so.
- For the SR countdown, beeps are given at T -10, T -3, T -2, T -1, and at SR.
- For the delay countdown, beeps are every second starting at T -10
- The two timer boxes are editable, so you can enter your own values if you wish.
- The "End" Button stops the search (duh).
- Pressing "Start" or hitting Space while the timer is running does nothing.
- The "Reset" Button resets all values except the top line.

- Type your average calibrated delay into the box for that, your wanted delay into the box for that, and so on and so forth for the top row.
- Click "Create Timer." You will notice that it will automatically find a combination to give you at least thirty seconds from synchronize to SR.
- Note the "Minutes Before Target" box. This is how many minutes before your current minute you should synch at (generally 0 or 1). For example, if you were going for 18:54:36 and that said 0, you would synch at 18:54:00. However, if it was one, you would synch at 18:53:00.
- Press either "Start" or the Space bar to start the timer.
- If you are off consistently, type the average delay you have been hitting into the "Other Delay" box, and click "Update." This will adjust the timer to help you hit your spread automatically. The Total Change is how many delay units you have cumulatively adjusted.


- Press "Start" or the Space Bar to start the Timer.
- Pressing "End" ends the timer.
- The "Reset" Button resets all values except the top row.
- The "DPPt/HGSS" and "Emerald/3rd Gen" Buttons toggle between the 3rd and 4th Generation modes of the timer.
- For the soft reset countdown, beeps are given at T -10 (or start if it is less than 10), T -3, T -2, T-1 and at reset.
- The two timer boxes are editable, so you can enter your own values.

- Enter the amount of time you wish to countdown before reseting in the "Time to Reset" box, or a 0 if you plan to start the timer as you reset.
- Type the frame of your desired spread in the "Frame" Box.
- If you know your particular calibration time for the spread you are going for, type it that box. If not, you will calibrate as you go.
- Click "Create Timer" to create your timer.
- Start the timer, soft reseting when the first timer hits zero, and spamming 'A' to start whatever encounter it might be when the second one finishes.
- Catch the pokemon and determine what frame you hit.
- Type this frame into "Other Frame" and hit "Update".
- Repeat until you hit your spread.
- If you are calibrating, look in the calibration box. That is your calibrated time for this particular pokemon.

Feel free to VM me any suggestions, comments, or improvements!


free agent
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Top Researcher Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
@ChouTosio - That could prove to be extremely helpful and I would really appreciate it. I think the Japanese article explains how to actually perform the exploit.
Here's a calculator I made to find the seed given the date/time. It only works on Windows... if you are a Mac user and would really like to have it, I can send you the source code so you can compile it in any C language compiler for a workable version.

Hope this helps!
So, Misdreavus, with your program we get the Seed, right? What can we do with the Seed? And where can I find the Seconds?
So, Misdreavus, with your program we get the Seed, right? What can we do with the Seed? And where can I find the Seconds?
Correct. As of right now, I'm not too sure, since there's still so much to be discovered. I was actually wondering about the seconds too... it must be the seconds on the DS clock, which are only visible on the DS menu. I would imagine that using a website with the official time (for the US, it's would be helpful. You could manually sync the time on your DS clock with the official time (within the correct second), then use the website to effectively monitor the time on the DS clock.
Correct. As of right now, I'm not too sure, since there's still so much to be discovered. I was actually wondering about the seconds too... it must be the seconds on the DS clock, which are only visible on the DS menu. I would imagine that using a website with the official time (for the US, it's would be helpful. You could manually sync the time on your DS clock with the official time (within the correct second), then use the website to effectively monitor the time on the DS clock.
Ok, so we need to synchronize the DS, well I need to wait till may 22 before Platinum comes, so I have we will know more by then =X


free agent
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Top Researcher Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
I would imagine that using a website with the official time (for the US, it's would be helpful. You could manually sync the time on your DS clock with the official time (within the correct second), then use the website to effectively monitor the time on the DS clock.
Since I think there is going to be a lot of time changing it (to times that are not correct) would probably be just as well to change the second hand on your PC to that of the DS and at least know when you are within a certain minute, which should be good enough for our purposes.
Since I think there is going to be a lot of time changing it (to times that are not correct) would probably be just as well to change the second hand on your PC to that of the DS and at least know when you are within a certain minute, which should be good enough for our purposes.
Ah, okay. Yeah, I figured we'd be changing it to incorrect times to get the spreads we want.


free agent
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Top Researcher Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
I have a couple of questions about this.

Could someone clarify the % and 0x signs for me? For instance, is the 0x random?

MOD is an operator like +,-, etc.

It is the remainder.

10 mod 3 = 1 (10/3 = 3 remainder 1)
21 mod 7 = 0 (21/7 = 3 remainder 0)
5 mod 3 = 2 (5/3 = 1 remainder 2)

Hexadecimal is base 16 number system. You're used to base 10. That is there are 10 digits (0-9) and each place is 10^(to the power of)X where X is the place.

1,241 =

10 ^ 0 * 1 = 1
10 ^ 1 * 4 = 40
10 ^ 2 * 2 = 200
10 ^ 3 * 1 = 1000

1 + 40 + 200 + 1000 = 1,241.

Hexadecimal is base 16. There are 16 digits (0-F) and each place is 16^X where x is the place.

FA =

16 ^ 0 * A(10 in decimal) = 10 (in decimal)
16 ^ 1 * F(15 in decimal) = 240 (in decimal)

10 + 240 = 250.

If that doesn't make sense google it, because it's the best you'll get out of me.

Also, wouldn't you have to adjust your game start day and time (not your playtime, but your "Adventure Started" time) to abuse the RNG? If so, wouldn't they still be relatively inaccessible for people without Pokesav or (perhaps) AR?
What makes you think it's adventure started time and not the time of the DS? (Serious question, it could be, but my understanding is that it's not). What leads you to believe this?
Ah, thanks for the clarification. The mod thing threw off my whole understanding of it.

For some reason, I was under the impression that the formula was actually a mix between "Adventure Start" time and Actual DS time. For instance, if the Actual DS time was 10 months and 6 hours after Adventure Start time, the Month variable would equal 10 and the Hour would equal 6. I don't know, it was just a misinterpretation, in part because I got slightly confused by the formula. Sorry if the question sounded kinda strange D:

I honestly think it could be neither or one or the other in a way. What i mean is that Emerald's RNG couldnt be generated by the DS time since it was originally GBA which didnt have its own clock. It could be possible, but maybe not.

On the otherhand, if it were by the start time it could be possibly calculated from the last point in which you saved and the frames are counted up from that point by the same timer which counts your gameplay time.

So I think it might be neither seeing as though the gameplay time shouldnt matter since it would probably go by the point from when you last SR to the time you press A just like emerald, which is calculated from the time you saved. Just my interpretation, it seems the most valid.

Users Who Are Viewing This Thread (Users: 1, Guests: 6)