User:Sherkel/RNG Notes

From Glitch City Wiki
Jump to navigation Jump to search

Well well well, how the turntables...

Generation III

Sequential RNG calls
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

Why does this multiplier look so...familiar?

Reason for Method 4: VBlank takes priority when it occurs; Box probably doesn't emulate the CPU timing well enough for uninterrupted Method 1

XD LCG: increment 269EC3, multiplier 343FD

ID in FRLG is 0x04000104 (Timer1 -- https://www.cs.rit.edu/~tjh8300/CowBite/CowBiteSpec.htm#Memory-Mapped%20Hardware%20Registers ); SID is upper 16 of RNG state

"FRLG initial seed is Timer1 as well

The timer starts counting when the screen changes to the "Press Start"-Screen.

This is initiated by the first button press or waiting till intro is finished.

Once it started counting, it will do so until the initial seed has been determinated.

A soft reset will have the same effect as if you switch off the GBA. "

~ flovv

http://www.coranac.com/tonc/text/timers.htm

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: 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

Example seed: C69FB838, LCRNG (Gen 3)
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

Generation V

Initial seeding:

"Time is in (decimal)

00SSMMHH

HH from 00-11 (12-11AM), 52-63 (12-11 PM).

0XDDMMYY date

X=weekday, [starting at 0]"

~ Kaphotics

Kazowar: OFFSETS BLACK (add 0x20 to offset for white)

02216084 = SEED

0221608C = 0x5D588B656C078965

02216094 = 0x0000000000269EC3

SEED = (0x5D588B656C078965 * SEED) + 0x0000000000269EC3;

Generation VIII

Shiny generation: twitter.com/Kaphotics/status/1197027047224176640