User:Sherkel/RNG Notes
Well well well, how the turntables...
Method | PID1 | PID2 | IV1 | IV2 |
---|---|---|---|---|
1 | 1 | 2 | 3 | 4 |
2 | 1 | 2 | 4 | 5 |
4 | 1 | 2 | 3 | 5 |
Colo/XD | 4 | 5 | 1 | 2 |
Reason for Method 4: VBlank takes priority when it occurs; Box probably doesn't emulate VCount properly
XD LCG: increment 269EC3, multiplier 343FD
Method H determines nature first (to account for Synchronize and the routine described here), then conducts a "hunt" for a PID that matches it in the possible ones for the numbered method, then generates the two IV halfwords based on above
How the hunt (also in Gen 4's Method J/K) works: [https://www.smogon.com/forums/threads/rng-manipulation-in-firered-leafgreen-wild-pok%C3%A9mon-supported-in-rng-reporter-9-93.62357/page-16#post-3807317 The game takes a seed and does (seed >> 16) % 0x19. Then it starts making PIDs and doing PID % 0x19 and it keeps making PIDs until it gets a match to that original (seed >> 16) % 0x19.
Method H is rarely H-1 as it's slow enough to fill up VCount
In some maps, the LCG advances exactly twice per frame
blocks of three 31s (0b11111 11111 11111) are bold
Frame | 32bit | 16bit high | Method 1 PID | Method 1 IVs | Method 1 IVs (IV1, IV2) | Method 2 IVs | Method H-2 PID | Method H-2 IVs |
---|---|---|---|---|---|---|---|---|
-1 | 35CC77B9 | 35CC | EF72C69F | 04AF7FFF | ? | 3FFFFFFF | ||
0 | C69FB838 | C69F | 7942EF72 | 3FFFFFFF | FFFFFFFF | 3FFFA899 | E1695F0A(*) | 34AC44F6 |
1 | EF72E04B | EF72 | FFFF7942 | 3FFFA899 | FFFFA899 | 30A27E81 | ||
2 | 7942BA62 | 7942 | FFFFFFFF | |||||
3 | FFFF982D | FFFF | 1158FFFF | |||||
4 | FFFFE19C | FFFF | D3E11158 | |||||
5 | 1158F7DF | 1158 | 6536D3E1 |
(*) E1695F0A is Timid and is the PID of "otherwise frame" 48