User:Sherkel/RNG Notes: Difference between revisions

From Glitch City Wiki
Jump to navigation Jump to search
Content added Content deleted
>Sherkel
(This is really just my own curiosity, isn't it?)
>Sherkel
mNo edit summary
 
Line 22: Line 22:
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
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
"FRLG initial seed is Timer1 as well

The timer starts counting when the screen changes to the "Press Start"-Screen.
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.
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.
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.
A soft reset will have the same effect as if you switch off the GBA. "

~ flovv
~ flovv


Line 65: Line 70:


Initial seeding:
Initial seeding:

Time is in (decimal)
"Time is in (decimal)

00SSMMHH
00SSMMHH

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

0XDDMMYY date
0XDDMMYY date

X=weekday, starting at 0
X=weekday, [starting at 0]"

~ Kaphotics
~ Kaphotics


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

02216084 = SEED
02216084 = SEED

0221608C = 0x5D588B656C078965
0221608C = 0x5D588B656C078965

02216094 = 0x0000000000269EC3
02216094 = 0x0000000000269EC3


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

== Generation VIII ==
Shiny generation: twitter.com/Kaphotics/status/1197027047224176640

Latest revision as of 08:03, 20 November 2019

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