1. Welcome to Smogon Forums! Please take a minute to read the rules.
2. Click here to ensure that you never miss a new SmogonU video upload!

# [on site] The Process of PID and IV Creation of Non-Bred Pokemon

Discussion in 'Archives' started by X-Act, Aug 26, 2008.

1. ### X-Actnp: Biffy Clyro - Shock Shock

Joined:
Feb 17, 2006
Messages:
4,675
Check out http://www.smogon.com/dp/articles/pid_iv_creation for the version on the website. The applet for PID generation using the IVs is available here. Part 2 is in http://www.smogon.com/forums/showthread.php?t=45230.

The Process of PID and IV Creation of Non-Bred Pokemon

0. Credits

Before I even start, I need to give credit to loadingNOW (a.k.a. pika) and yamipoli for providing me with invaluable information regarding this topic.

1. Preliminaries

We start by providing preliminary information, without which the reader will have a very hard time understanding this article.

1.1 The Binary System

In a computer, numbers are not stored normally, but in a format called binary. The numbers we normally use are said to be in the decimal system. Every number in the decimal system is written as a series of digits, each of which can be one of the following ten: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. In the binary system, the same thing is true, but there are only two possible digits: 0 and 1. Each of these binary digits is called a bit (short for binary digit). For example, the binary number 10001110 has 8 bits.

The Game Boy Advance and Nintendo DS systems, on which the Pokemon games Ruby, Sapphire, Emerald, Fire Red, Leaf Green, Diamond and Pearl run, are, in effect, small computers, and thus also utilise binary numbers. The Pokemon games, however, have an extra simplification: they always use non-negative whole numbers only. This makes our discussion of binary numbers easier.

How do we interpret a binary number? To do this, let’s think for a moment about how we interpret decimal numbers. What does the number 635, say, mean? It means a number that has 5 units, 3 tens (= 1 × 10) and 6 hundreds (= 10 × 10) added together. Notice that the value of a digit in the decimal system is ten times as big as that of the digit immediately to the right of it. So the number 635 really means 600 + 30 + 5.

The same thing happens in binary, except that the value of a digit in the binary system is twice as big as that of the bit immediately to the right of it, not ten times as big.

Let’s provide an example. Say we need to interpret the binary number 10001110 as a number in the decimal (i.e. normal) system. We have 0 units, 1 twos (= 1 × 2), 1 fours (= 2 × 2), 1 eights (= 4 × 2), 0 sixteens (= 8 × 2), 0 thirty-twos (= 16 × 2), 0 sixty-fours (= 32 × 2) and 1 one-hundred-and-twenty-eights (= 64 × 2). Thus, the binary number 10001110 is equal to 2 + 4 + 8 + 128 = 142.

Another example: let’s interpret the 12-bit binary number 101110010101 as a number in decimal. It is equal to 1 units, 0 twos, 1 fours, 0 eights, 1 sixteens, 0 thirty-twos, 0 sixty-fours, 1 one-hundred-and-twenty-eights, 1 two-hundred-and-fifty-sixes (= 128 × 2), 1 five-hundred-and-twelves (= 256 × 2), 0 one-thousand-and-twenty-fours (= 512 × 2) and 1 two-thousand-and-forty-eights (= 1024 × 2). Hence it is equal to 1 + 4 + 16 + 128 + 256 + 512 + 2048 = 2965.

1.2 The Hexadecimal System

Binary numbers tend to have quite a large number of digits. A way to write binary numbers in a shorter way is the hexadecimal system.

In the hexadecimal system, a binary number is first grouped into groups of four bits each. If the number of bits in the binary number is not divisible by 4, extra 0 bits are added at the start of the binary number so that the number of digits is divisible by 4. Then each group of four bits is replaced by a symbol as follows:

Code:
```0000 is replaced by 0
0001 is replaced by 1
0010 is replaced by 2
0011 is replaced by 3
0100 is replaced by 4
0101 is replaced by 5
0110 is replaced by 6
0111 is replaced by 7
1000 is replaced by 8
1001 is replaced by 9
1010 is replaced by A
1011 is replaced by B
1100 is replaced by C
1101 is replaced by D
1110 is replaced by E
1111 is replaced by F```
For example, the binary number 10001110 is written in hexadecimal as 8E. The first 4 bits are 1000, written as 8 in hexadecimal, while the last 4 bits are 1110, written as E. The binary number 101110010101 is written as B95 in hexadecimal (1011 = B, 1001 = 9, 0101 = 5). The binary number 1110000001 has 10 bits. We first add two zeros at the beginning so that it has 12 bits: 001110000001. Then we convert it to hexadecimal as 381 (0011 = 3, 1000 = 8, 0001 = 1).

Of course, we can also convert hexadecimal numbers to binary numbers easily by doing the reverse process. For example, the hexadecimal number 5AF7 is equal to 0101101011110111 in binary (5 = 0101, A = 1010, F = 1111, 7 = 0111).

From now on, a hexadecimal number will be written surrounded by square brackets [] so as not to possibly confuse it with a decimal number. This is because the hexadecimal number [4680] is a different number from the decimal number 4680.

1.3 What is a PID?

Whenever a Pokemon is created in the games, the first thing that is generated is a 32-bit number called a PID (Pokemon IDentification number). This number is sometimes also called the Personality Value of a Pokemon, and is not visible anywhere in the game. It can only be found by looking into the Pokemon save file... or by an applet that will be revealed soon. A lot of information about the Pokemon can be found using just the PID alone. In particular, the nature of a Pokemon is found just from its PID. Where applicable, the gender, ability and Unown letter shape are also found just from the PID of the Pokemon in question.

1.4 The Pokemon Random Number Generator

Whenever a random event occurs in the Pokemon games, and indeed in the majority of games, the randomness of the event is not truly random, but is governed by a mathematical formula that generates so-called pseudo-random numbers. When we say pseudo-random, we mean that the numbers generated are not truly random numbers, but are sort-of fake random numbers.

There are various methods that can be used to generate pseudo-random numbers. One of the simplest types of random number generators is the class of linear congruential random number generators. Many computer applications adopt this method of random number generation, as, while it is very simple to implement, it produces good random numbers when given particular values. By "good random numbers" we mean that if the numbers were to be listed next to each other, we wouldn’t have a clue as to what the next pseudo-random number would be in the list unless we apply the formula.

The random number generator (RNG) used in all the Pokemon games from Ruby and Sapphire onwards works as follows. When the game loads, the program assigns a number to a 32-bit variable which we shall call seed. The way this is done varies from game to game (you can read loadingNOW’s article for more information). Then, whenever the random number generator is invoked, the following steps are executed:

Code:
```Make seed equal to the last 32 bits of (seed × [41C64E6D] + [6073])
Output first 16 bits of seed as the next pseudo-random number```
Thus, as you can see, the Pokemon RNG produces pseudo-random 16-bit numbers, i.e. numbers between 0 and 65535 (or between [0000] and [FFFF]).

For instance, given the seed [1A56B091], what is the random number that the above RNG outputs?

First we need to multiply [1A56B091] by [41C64E6D]. Using a calculator, the answer of this multiplication is [6C469F301DB5BBD]. We now add [6073] to this, becoming [6C469F301DBBC30]. Remember that a computer adds and multiplies numbers only in binary, so multiplying and adding hexadecimal numbers is very easy for it. Windows’ own calculator application allows multiplication and addition of hexadecimal numbers to be done easily, if you want to do them yourself. We now make the new seed equal to the last 32 bits of this hexadecimal number, or [01DBBC30] (remember that a hexadecimal digit is 4 bits). The random number produced is thus the first 16 bits of this new seed, or [01DB].

Repeatedly invoking the RNG produces the following list of pseudo-random numbers:

[01DB], [7B06], [5233], [E470], [5CC4], [36BB], ...

It can be shown that the seed variable will become the same as it was at the start of the program only after the RNG is invoked 4,294,967,296 times. In all those RNG invocations, the variable seed would have become equal to every number between 0 and 4,294,967,295 (or between [00000000] and [FFFFFFFF]) exactly once. This essentially means that the random number sequence won’t repeat itself until after that amount of invocations.

2. Pokemon Creation

2.1 How the PID of a Pokemon is created

The game creates a PID from two RNG calls. Since each RNG call results in a 16-bit number, appending these two 16-bit numbers together results in a 32-bit number, which becomes the PID of the Pokemon. The second random number becomes the first 16 bits of the PID, and the first random number becomes the second 16 bits.

For example, suppose the two random numbers generated were [01DB] and [7B06] as above. Then the PID of the Pokemon would be [7B0601DB], or 2063991259 in decimal.

2.2 How to extract information about the Pokemon from its PID

As was said before, a lot of things about a Pokemon can be known from just its PID. Here, we shall mention only three of these: nature, gender and ability.

2.2.1 How to find the nature of a Pokemon from its PID

First, convert the PID to decimal as described at the start of the article, and consider only this decimal number’s last two digits. If the number having these two digits is greater than 24, subtract 25 from it, and repeat this procedure until it becomes a number between 0 and 24. This number then corresponds to a particular nature according to the following table:

Code:
```Number   Nature
-----------------
0     Hardy
1     Lonely
2     Brave
4     Naughty
5     Bold
6     Docile
7     Relaxed
8     Impish
9     Lax
10     Timid
11     Hasty
12     Serious
13     Jolly
14     Naive
15     Modest
16     Mild
17     Quiet
18     Bashful
19     Rash
20     Calm
21     Gentle
22     Sassy
23     Careful
24     Quirky```
2.2.2 How to find the gender of a Pokemon from its PID

This only applies to Pokemon that can be either male or female. If a Pokemon is always genderless (for example Staryu), always male (for example Tauros) or always female (for example Chansey), the Pokemon will, of course, always assume that gender.

For the other Pokemon, first take the last two digits of the PID in hexadecimal form and convert that number to decimal. This number should be between 0 and 255.

As is commonly known, some Pokemon are more probable to be of one gender than another (for example Bulbasaur). There are four gender categories in all, other than the genderless, always male and always female categories:
1. Pokemon that have a 12.5% chance of being female In this case, the Pokemon will be female if the number found above is between 0 and 30 inclusive, otherwise it will be male.
2. Pokemon that have a 25% chance of being female In this case, the Pokemon will be female if the number found above is between 0 and 63 inclusive, otherwise it will be male.
3. Pokemon that have a 50% chance of being female In this case, the Pokemon will be female if the number found above is between 0 and 126 inclusive, otherwise it will be male.
4. Pokemon that have a 75% chance of being female In this case, the Pokemon will be female if the number found above is between 0 and 190 inclusive, otherwise it will be male.
2.2.3 How to find the ability of a Pokemon from its PID

This only applies to Pokemon that can have one of two possible abilities. If a Pokemon can have only one ability, then it will have that ability, of course.

For the other Pokemon that can have one of two abilities, first convert the PID to binary, and look at the last bit. If it is 0, the Pokemon will have its first possible ability, while if it is 1, it will have the second possible ability.

The following table lists all Pokemon having two possible abilities, showing which ability corresponds to 0 and which corresponds to 1 in Diamond and Pearl (thanks yamipoli for providing this chart):

Code:
```Pokemon     Ability 0     Ability 1
--------------------------------------
Pidgey      Keen Eye      Tangled Feet
Pidgeotto   Keen Eye      Tangled Feet
Pidgeot     Keen Eye      Tangled Feet
Rattata     Run Away      Guts
Raticate    Run Away      Guts
Ekans       Intimidate    Shed Skin
Arbok       Intimidate    Shed Skin
Nidoran-F   Poison Point  Rivalry
Nidorina    Poison Point  Rivalry
Nidoqueen   Poison Point  Rivalry
Nidoran-M   Poison Point  Rivalry
Nidorino    Poison Point  Rivalry
Nidoking    Poison Point  Rivalry
Cleffa      Cute Charm    Magic Guard
Clefairy    Cute Charm    Magic Guard
Clefable    Cute Charm    Magic Guard
Paras       Effect Spore  Dry Skin
Parasect    Effect Spore  Dry Skin
Venonat     Compoundeyes  Tinted Lens
Venomoth    Shield Dust   Tinted Lens
Diglett     Sand Veil     Arena Trap
Dugtrio     Sand Veil     Arena Trap
Meowth      Pick Up       Technician
Persian     Pick Up       Technician
Psyduck     Damp          Cloud Nine
Golduck     Damp          Cloud Nine
Mankey      Vital Spirit  Anger Point
Primeape    Vital Spirit  Anger Point
Growlithe   Intimidate    Flash Fire
Arcanine    Intimidate    Flash Fire
Poliwag     Water Absorb  Damp
Poliwhirl   Water Absorb  Damp
Poliwrath   Water Absorb  Damp
Politoed    Water Absorb  Damp
Abra        Synchronize   Inner Focus
Kadabra     Synchronize   Inner Focus
Alakazam    Synchronize   Inner Focus
Machop      Guts          No Guard
Machoke     Guts          No Guard
Machamp     Guts          No Guard
Tentacool   Clear Body    Liquid Ooze
Tentacruel  Clear Body    Liquid Ooze
Geodude     Rock Head     Sturdy
Graveler    Rock Head     Sturdy
Golem       Rock Head     Sturdy
Ponyta      Run Away      Flash Fire
Rapidash    Run Away      Flash Fire
Slowpoke    Oblivious     Own Tempo
Slowbro     Oblivious     Own Tempo
Slowking    Oblivious     Own Tempo
Magnemite   Magnet Pull   Sturdy
Magneton    Magnet Pull   Sturdy
Magnezone   Magnet Pull   Sturdy
Farfetch’d  Keen Eye      Inner Focus
Doduo       Run Away      Early Bird
Dodrio      Run Away      Early Bird
Seel        Thick Fat     Hydration
Dewgong     Thick Fat     Hydration
Grimer      Stench        Sticky Hold
Muk         Stench        Sticky Hold
Shellder    Shell Armor   Skill Link
Cloyster    Shell Armor   Skill Link
Onix        Rock Head     Sturdy
Steelix     Rock Head     Sturdy
Drowzee     Insomnia      Forewarn
Hypno       Insomnia      Forewarn
Krabby      Hyper Cutter  Shell Armor
Kingler     Hyper Cutter  Shell Armor
Voltorb     Soundproof    Static
Electrode   Soundproof    Static
Cubone      Rock Head     Lightningrod
Marowak     Rock Head     Lightningrod
Hitmonlee   Limber        Reckless
Hitmonchan  Keen Eye      Iron Fist
Hitmontop   Intimidate    Technician
Lickitung   Own Tempo     Oblivious
Lickilicky  Own Tempo     Oblivious
Rhyhorn     Lightningrod  Rock Head
Rhydon      Lightningrod  Rock Head
Rhyperior   Lightningrod  Solid Rock
Happiny     Natural Cure  Serene Grace
Chansey     Natural Cure  Serene Grace
Blissey     Natural Cure  Serene Grace
Tangela     Chlorophyll   Leaf Guard
Tangrowth   Chlorophyll   Leaf Guard
Kangaskhan  Early Bird    Scrappy
Horsea      Swift Swim    Sniper
Seadra      Swift Swim    Sniper
Kingdra     Swift Swim    Sniper
Goldeen     Swift Swim    Water Veil
Seaking     Swift Swim    Water Veil
Staryu      Illuminate    Natural Cure
Starmie     Illuminate    Natural Cure
Mime Jr.    Soundproof    Filter
Mr. Mime    Soundproof    Filter
Scyther     Swarm         Technician
Scizor      Swarm         Technician
Smoochum    Oblivious     Forewarn
Jynx        Oblivious     Forewarn
Pinsir      Hyper Cutter  Mold Breaker
Tauros      Intimidate    Anger Point
Lapras      Water Absorb  Shell Armor
Eevee       Run Away      Adaptability
Omanyte     Swift Swim    Shell Armor
Omastar     Swift Swim    Shell Armor
Kabuto      Swift Swim    Battle Armor
Kabutops    Swift Swim    Battle Armor
Aerodactyl  Rock Head     Pressure
Munchlax    Pick Up       Thick Fat
Snorlax     Immunity      Thick Fat
Sentret     Run Away      Keen Eye
Furret      Run Away      Keen Eye
Hoothoot    Insomnia      Keen Eye
Noctowl     Insomnia      Keen Eye
Ledyba      Swarm         Early Bird
Ledian      Swarm         Early Bird
Spinarak    Swarm         Insomnia
Chinchou    Volt Absorb   Illuminate
Lanturn     Volt Absorb   Illuminate
Togepi      Hustle        Serene Grace
Togetic     Hustle        Serene Grace
Togekiss    Hustle        Serene Grace
Natu        Synchronize   Early Bird
Xatu        Synchronize   Early Bird
Azurill     Thick Fat     Huge Power
Marill      Thick Fat     Huge Power
Azumarill   Thick Fat     Huge Power
Bonsly      Sturdy        Rock Head
Sudowoodo   Sturdy        Rock Head
Aipon       Run Away      Pick Up
Ambipom     Technician    Pick Up
Sunkern     Chlorophyll   Solar Power
Sunflora    Chlorophyll   Solar Power
Yanma       Speed Boost   Compoundeyes
Yanmega     Speed Boost   Tinted Lens
Wooper      Damp          Water Absorb
Quagsire    Damp          Water Absorb
Murkrow     Insomnia      Super Luck
Honchkrow   Insomnia      Super Luck
Girafarig   Inner Focus   Early Bird
Dunsparce   Serene Grace  Run Away
Gligar      Hyper Cutter  Sand Veil
Gliscor     Hyper Cutter  Sand Veil
Snubbull    Intimidate    Run Away
Granbull    Intimidate    Quick Feet
Qwilfish    Poison Point  Swift Swim
Heracross   Swarm         Guts
Sneasel     Inner Focus   Keen Eye
Teddiursa   Pick Up       Quick Feet
Ursaring    Guts          Quick Feet
Slugma      Magma Armor   Flame Body
Magcargo    Magma Armor   Flame Body
Swinub      Oblivious     Snow Cloak
Piloswine   Oblivious     Snow Cloak
Mamoswine   Oblivious     Snow Cloak
Corsola     Hustle        Natural Cure
Remoraid    Hustle        Sniper
Octillery   Suction Cups  Sniper
Delibird    Vital Spirit  Hustle
Mantyke     Swift Swim    Water Absorb
Mantine     Swift Swim    Water Absorb
Skarmory    Keen Eye      Sturdy
Houndour    Early Bird    Flash Fire
Houndoom    Early Bird    Flash Fire
Stantler    Intimidate    Frisk
Smeargle    Own Tempo     Technician
Miltank     Thick Fat     Scrappy
Poochyena   Run Away      Quick Feet
Mightyena   Intimidate    Quick Feet
Zigzagoon   Pick Up       Gluttony
Linoone     Pick Up       Gluttony
Lotad       Swift Swim    Rain Dish
Lombre      Swift Swim    Rain Dish
Ludicolo    Swift Swim    Rain Dish
Seedot      Chlorophyll   Early Bird
Nuzleaf     Chlorophyll   Early Bird
Shiftry     Chlorophyll   Early Bird
Ralts       Synchronize   Trace
Kirlia      Synchronize   Trace
Gardevoir   Synchronize   Trace
Shroomish   Effect Spore  Poison Heal
Breloom     Effect Spore  Poison Heal
Makuhita    Thick Fat     Guts
Hariyama    Thick Fat     Guts
Nosepass    Sturdy        Magnet Pull
Probopass   Sturdy        Magnet Pull
Skitty      Cute Charm    Normalize
Delcatty    Cute Charm    Normalize
Sableye     Keen Eye      Stall
Mawile      Hyper Cutter  Intimidate
Aron        Sturdy        Rock Head
Lairon      Sturdy        Rock Head
Aggron      Sturdy        Rock Head
Electrike   Static        Lightningrod
Manectric   Static        Lightningrod
Volbeat     Illuminate    Swarm
Illumise    Oblivious     Tinted Lens
Budew       Natural Cure  Poison Point
Roselia     Natural Cure  Poison Point
Roserade    Natural Cure  Poison Point
Gulpin      Liquid Ooze   Sticky Hold
Swalot      Liquid Ooze   Sticky Hold
Wailmer     Water Veil    Oblivious
Wailord     Water Veil    Oblivious
Numel       Oblivious     Simple
Camerupt    Magma Armor   Solid Rock
Spoink      Thick Fat     Own Tempo
Grumpig     Thick Fat     Own Tempo
Spinda      Own Tempo     Tangled Feet
Trapinch    Hyper Cutter  Arena Trap
Barboach    Oblivious     Anticipation
Whiscash    Oblivious     Anticipation
Corphish    Hyper Cutter  Shell Armor
Crawdaunt   Hyper Cutter  Shell Armor
Shuppet     Insomnia      Frisk
Banette     Insomnia      Frisk
Tropius     Chlorophyll   Solar Power
Absol       Pressure      Super Luck
Snorunt     Inner Focus   Ice Body
Glalie      Inner Focus   Ice Body
Spheal      Thick Fat     Ice Body
Sealeo      Thick Fat     Ice Body
Walrein     Thick Fat     Ice Body
Relicanth   Swift Swim    Rock Head
Bidoof      Simple        Unaware
Bibarel     Simple        Unaware
Shinx       Rivalry       Intimidate
Luxio       Rivalry       Intimidate
Luxray      Rivalry       Intimidate
Pachirisu   Run Away      Pick Up
Shellos     Sticky Hold   Storm Drain
Gastrodon   Sticky Hold   Storm Drain
Drifloon    Aftermath     Unburden
Drifblim    Aftermath     Unburden
Buneary     Run Away      Klutz
Lopunny     Cute Charm    Klutz
Glameow     Limber        Own Tempo
Purugly     Thick Fat     Own Tempo
Stunky      Stench        Aftermath
Skuntank    Stench        Aftermath
Bronzor     Levitate      Heatproof
Bronzong    Levitate      Heatproof
Chatot      Keen Eye      Tangled Feet
Riolu       Steadfast     Inner Focus
Lucario     Steadfast     Inner Focus
Skorupi     Battle Armor  Sniper
Drapion     Battle Armor  Sniper
Croagunk    Anticipation  Dry Skin
Toxicroak   Anticipation  Dry Skin
Finneon     Swift Swim    Storm Drain
Lumineon    Swift Swim    Storm Drain```
2.3 How the IVs of a Pokemon are created

The six IVs of the Pokemon are also created from just two RNG calls. Since each IV consists of 5 bits (because the binary number 11111 is equal to 31 in decimal), the first random number would contain 3 of these IVs (5 × 3 = 15), with one redundant bit, while the second random number would contain the other 3.

The IVs would be extracted from the two random numbers as follows:

Code:
```First Random Number:  x|xxxxx|xxxxx|xxxxx
-|DefIV|AtkIV|HP IV

Second Random Number: x|xxxxx|xxxxx|xxxxx
-|SpDIV|SpAIV|SpeIV```
For example, given the subsequent two random numbers [5233] and [E470] as above, we would have:

First Random Number = [5233] = 0|10100|10001|10011. Hence, the Defense IV would be 10100 = 20, the Attack IV would be 10001 = 17 and the HP IV would be 10011 = 19.

Second Random Number = [E470] = 1|11001|00011|10000. Hence, the Special Defense IV would be 11001 = 25, the Special Attack IV would be 00011 = 3 and the Speed IV would be 10000 = 16.

Thus, our Pokemon would have the IVs 19/17/20/3/25/16, written in the usual format of HP IV/Atk IV/Def IV/SpA IV/SpD IV/Spe IV.

2.4 How the RNG is called in the games to generate a Pokemon

There are basically three different ways of how the RNG is invoked to produce a Pokemon, depending on the game and the Pokemon:
• Method 1: Four RNG calls are made, two to generate the PID and two to generate the IVs. It can be illustrated as [PID] [PID] [IVs] [IVs].
• Method 2: Five RNG calls are made. The first two are used to generate the PID and the last two are used to generate the IVs. The third RNG call is not used for anything. It can be illustrated as [PID] [PID] [xxxx] [IVs] [IVs].
• Method 3: Five RNG calls are made. The first and third are used to generate the PID and the last two are used to generate the IVs. The second RNG call is not used for anything. It can be illustrated as [PID] [xxxx] [PID] [IVs] [IVs].
Methods 2 and 3 are only used in Pokemon Ruby, Sapphire, Emerald, Fire Red and Leaf Green (RSEFRLG) to produce wild Pokemon. All the Pokemon you catch in these games that are not wild Pokemon are created using Method 1. Examples of non-wild Pokemon that you can catch or be given in the game are:
• Legendary Pokemon
• Starter Pokemon
• Eevee in Fire Red and Leaf Green
• Castform and Beldum in Ruby, Sapphire and Emerald
Method 1 is also used for some RSEFRLG wild Pokemon and for all Diamond and Pearl Pokemon, whether they are wild or not.

The criterion for choosing whether to use Method 1, 2 or 3 in the creation of wild Pokemon in Ruby, Sapphire, Fire Red and Leaf Green seems to be arbitrary, although it might be related to the terrain where they are situated.

To summarise, here are the methods used for each game depending on the Pokemon being caught or given:

Code:
``` Game    Wild Pokemon Methods    Non-wild Pokemon Methods
---------------------------------------------------------
RSFRLGE        1, 2 or 3                    1
DP              1                         1```

3. A Complete Example

Suppose you meet a wild Tentacool in Emerald. Let’s assume that Method 2 is chosen for Tentacool to be generated. Also we assume that the current RNG seed is [560B9CE3].

The game calls the RNG and gets the number [2751]. The game calls the RNG again and gets the number [7E48]. Thus, the PID of this Tentacool is [7E482751].

This hexadecimal number is the 32-bit binary number

01111110010010000010011101010001

which is equal to 2118657873 in decimal. The last two digits of this decimal number are 73. Since this number is greater than 24, we subtract 25 from it. 73 minus 25 is equal to 48. 48 is still greater than 24, so we again subtract 25 from it, becoming 23. Hence this Tentacool would have a Careful nature, since that is the nature that the number 23 corresponds to.

The last two digits of the PID in hexadecimal are 51, which is equal to 01010001 in binary, or 81 in decimal. Tentacool has a 50% chance of being female. Since the number 81 is between 0 and 126, this Tentacool would be female.

The last digit of the binary representation of the PID is 1. Thus, this Tentacool would have the second possible ability, i.e. Liquid Ooze.

The game now calls the RNG for a third time, getting the number [CAB4]. This number is discarded since we’re using Method 2 to generate the Pokemon. A fourth call to the RNG yields the number [629C]. This number is equal to

0|11000|10100|11100

in binary. The Defense IV would then be the binary number 11000, which is 24 in decimal, the Attack IV would be 10100, which is 20 in decimal, and the HP IV would be 11100, which is 28 in decimal.

A final invocation to the RNG gives us the number [5EE9]. This number is equal to

0|10111|10111|01001

in binary. The Special Defense IV would thus be the binary number 10111, which is 23 in decimal, the Special Attack IV would be 10111, which is 23 in decimal and the Speed IV would be 01001, which is 9 in decimal.

To recapitulate, you would have encountered a female Tentacool having a Careful nature, the Liquid Ooze ability and 28/20/24/23/23/9 IVs.
2. ### Tortured_Soul

Joined:
Jul 7, 2008
Messages:
800
Excellent X-Act, very well done. I cannot say that I know much on PID, as I haven't really taken much notice of it in the past, but from what I see this is very well constructed. Can't wait for the Applet that you say is coming, looking forward to it!
3. ### yamipolithe only person more obsessive than jumpman

Joined:
Nov 2, 2006
Messages:
373
Excellent and well written as usual. However I also noticed something odd and you should probably add that method 1 is used for "some" ruby/sapphire/emerald/firered/leaf green wilds as well, I've got an alakazam and a tentacool that both validate as method 1.
4. ### ToothacheLet the music play!

Joined:
Dec 27, 2004
Messages:
3,730
Do you know what conditions affect what method is used to generate the wild Pokemon by different methods?
5. ### yamipolithe only person more obsessive than jumpman

Joined:
Nov 2, 2006
Messages:
373
If I had to guess, I would think it is the terrain it is caught on. Such as the difference between diving, surfing, wild grasses, tall grasses, and fishing. For fishing, all of my pokemon are showing up as method 3, and the tenta was by surfing, the abra/alakazam was by grass.
6. ### Syberia[custom user title]

Joined:
Jun 22, 2005
Messages:
5,070
You win at the internet.
7. ### jujuomi

Joined:
Oct 21, 2007
Messages:
1,698
This is really helpful. But can you explain something?

On the PID, what would you need to look for to know if wurmple would evolve into a silcoon or a cascoon? And where on the PID would I look for to know spinda's spots?

Bulbapedia explained wurmple, but I couldn't understand.

http://www.freewebs.com/gatorshark/Spinda Painter.htm

The above generater can determine spinda's spots via hex and DEC, 2 variables I don't know anything bout.Can you explain how the hex and DEC are related to the spinda's PID?
8. ### Syberia[custom user title]

Joined:
Jun 22, 2005
Messages:
5,070
Hex is base 16. Dec is the same number, just in base 10.

Hex is what you would use if you were editing the PID directly into the .pkm file, dec is what you would type into the attribute box on pokesav.
9. ### chaosOwner

Joined:
Dec 18, 2004
Messages:
10,572
Lets get this on the site ASAP.
10. ### VoiceOfReason

Joined:
Sep 11, 2007
Messages:
27
Brilliant article, incredible resource.

Are you not worried however that this could spell doom for people with real SR'ed legends etc??

As an afterthought could you perhaps edit in a link to pika's article on PRNGs and seeds?

Outstanding piece of work though, the Pokemon community has been long in wait of this!
11. ### X-Actnp: Biffy Clyro - Shock Shock

Joined:
Feb 17, 2006
Messages:
4,675
Well, all my RSFRLG Pokemon I checked were all Method 2 or 3. I haven't checked them all, though, and I trust you, so I'll edit my article. :)
12. ### Mario With LasersSelf-proclaimed DEAD king

Joined:
Nov 15, 2006
Messages:
7,376
X-Act for king of internet. An excellent article, I must say.

I have one doubt, though: Doesn't emerald have a glitched RNG, or something like that, that makes you get a lot of the same pokémon while soft-resetting? Will you add more info about it on the article?
13. ### ryubahamut

Joined:
Jan 18, 2007
Messages:
999
X-Act, I would like to volunteer for HTMLizing this article, if you're not on it already :)
14. ### Arseus

Joined:
Oct 13, 2006
Messages:
869
From what I understand from lodadingNOW's Emerald RNG Analysis, the only difference would be

1. Emerald always starts with the same seed.
2. Emerald calls the RNG every 1/60 seconds, rather than when only creating a Pokémon.

Is this correct, X-Act?

So given a certain Trainer ID, the seed will generate the same random numbers after the same amount of time.
15. ### Syberia[custom user title]

Joined:
Jun 22, 2005
Messages:
5,070
The Emerald RNG seeds itself exactly the same way most of the time. However, the pokemon it produces from that seed will, as far as I know, still follow the normal formula for validation.
16. ### Arseus

Joined:
Oct 13, 2006
Messages:
869
I also have a question on the seeds. Assuming you know the number last randomly generated by the RNG (in the Tentacool's case, [5EE9]), is it possible to calculate the current seed, thus finding the next set of random numbers?

Also, I read somewhere that a Trainer ID can be between 0 and 65535, not unlike the random number output. Supposedly, another number is created alongside it, called a "Secret ID", which is also between 0 and 65535. Since these are two 16-bit numbers, they can be simply placed beside each other to create a 32-bit number, which is the length of a seed. Does Emerald simply use a "fusion" of the Trainer ID and the Secret ID as the starting seed every time?

I also remember hearing that most people get IDs in a similar range, due to spending a similar time in the "introduction sequence" where the Professor explains everything, asks for Trainer name, etc. Would this explain why users seem to find the same IV spreads "common" in Emerald, while many others go unnoticed? Or am I just totally off?
17. ### hrc969

Joined:
Jul 24, 2007
Messages:
58
Well there had already been a guide up since Aug. 21st elsewhere. It was also planned that an english guide would be released last night. It wasn't released until this morning.

But anyways, slowly the information was going to get out anyways.

We might as well have a guide from someone that is more qualified to write one.

X-Act: Great guide. Glad that you decided to post it.

EDIT: Wow, I finally posted something after more than a year of being a member.
18. ### X-Actnp: Biffy Clyro - Shock Shock

Joined:
Feb 17, 2006
Messages:
4,675
No, unless you have further information about the Pokemon.

The problem with this is that the Trainer ID and Secret ID are generated at different times in the game. Thus, you cann't map a Trainer ID with a Secret ID.

Emerald always starts with the same seed (0). Hence, players have a high chance of getting the same few Trainer IDs if they take roughly the same time to start the game. This only happens in Emerald, though.
19. ### Nutty

Joined:
Sep 18, 2007
Messages:
56
Nice work X-Act. It's really a excellent article.
20. ### X-Actnp: Biffy Clyro - Shock Shock

Joined:
Feb 17, 2006
Messages:
4,675
Wurmple evolves like this. Look at the PID's last 16 bits, and convert them to decimal. If the last digit of this decimal number is between 0 and 4, Wurmple will evolve into Silcoon, otherwise it will evolve into Cascoon.

Example: Say a Wurmple has a PID of [5CF4091C]. The last 16 bits of the PID are [091C], which is equal to 2332 in decimal. Since the last digit of this decimal number is 2, this Wumple would evolve into Silcoon.

Spinda's spots work as follows. Suppose a Spinda has PID [5B3E948D]. Consider each of these hexadecimal digits one by one and convert each of them to decimal. Thus, we have
5 = 5, B = 11, 3 = 3, E = 14, 9 = 9, 4 = 4, 8 = 8, D = 13.

Thus we construct the following co-ordinates: (5,11), (3,14), (9,4), (8,13).

Now Spinda always has 4 spots: two on its face and one on each of its ears. The game would correspond each of the above co-ordinates with the relative position of the centre of the spot next to some kind of starting position (a different starting position for each of the spot) which I don't know about.

EDIT: After playing a bit with that Spinda Painter you linked, the first co-ordinate is for the spot on Spinda's face (from its centre to its right in the front sprite), the second co-ordinate is for the spot on Spinda's face (from its left to its centre in the front sprite), the third co-ordinate is for the spot on Spinda's left ear (from its centre to its right in the front sprite) and the fourth co-ordinate is for the spot on Spinda's right ear (from its left to its centre in the front sprite).

This article probably won't. But the applet that's going to be revealed soon might.

Yes. Though I would like to add that the RNG is used for every random decision that happens in the game, not just for Pokemon creation. It's used to see whether a move is a Critical hit or not, whether Stone Edge misses, and even whether or not a person sprite on the screen turns around to look in a different direction!

Not quite. As long as you keep soft-resetting, Emerald will generate the same random numbers. It doesn't have anything to do with the Trainer ID.
21. ### hrc969

Joined:
Jul 24, 2007
Messages:
58
So are you going to be releasing such an applet?
22. ### yamipolithe only person more obsessive than jumpman

Joined:
Nov 2, 2006
Messages:
373
It's very few, like say, out of three boxes of randoms, only two showed as method 1.

More explanation: The game generates your secret id when you first talk to Birch or Rowan. It then generates your ID right before sending you into the world of Pokemon.
23. ### X-Actnp: Biffy Clyro - Shock Shock

Joined:
Feb 17, 2006
Messages:
4,675
Yes I am. The algorithm is ready. What still needs to be done is to make it appear 'pretty'.
24. ### Arseus

Joined:
Oct 13, 2006
Messages:
869
Okay, so you would need the full PID to be able to find the seed? Or would this only work for method 1 Pokémon, due to the useless RNG call in methods 2 and 3?

Ah, I see. So if Emerald always starts with the same seed, then theoretically, it should be possible to follow the "random" numbers until they created a desirable PID, at whatever time, correct? I say theoretically because 1/60 of a second is going to be awful hard to pinpoint. But it's better than nothing.

I was aware that the RNG is also used in battles, though the trainer turning tidbit is interesting!

I remember there was earlier speculation that it had to do with Trainer ID, but I guess now that we know that's not the case, it definitely explains the "common" IV spreads.
25. ### tsanth

Joined:
Nov 29, 2007
Messages:
8
Kudos on the write-up. I'm glad to see that this is finally being properly released into the wild.