Repository navigation
SEAD RNG
Yannik Marchand edited this page Jul 3, 2026
·
5 revisions
SEAD is Nintendo's private standard library. It is used by various first party games and the Pia library uses it as well.
Its random number generator works as follows:
class Random:
def __init__(self, seed: int | list[int]):
if isinstance(seed, int):
multiplier = 0x6C078965
temp = seed
self.state = []
for i in range(1, 5):
temp ^= temp >> 30
temp = (temp * multiplier + i) & 0xFFFFFFFF
self.state.append(temp)
else:
self.state = seed
# Returns a random 32-bit integer
def u32(self) -> int:
temp = self.state[0]
temp = (temp ^ (temp << 11)) & 0xFFFFFFFF
temp ^= temp >> 8
temp ^= self.state[3]
temp ^= self.state[3] >> 19
self.state[0] = self.state[1]
self.state[1] = self.state[2]
self.state[2] = self.state[3]
self.state[3] = temp
return temp
def u64(self) -> int:
return (self.u32() << 32) | self.u32()
# Returns a random integer smaller than 'max'
def uint(self, max: int) -> int:
return (self.u32() * max) >> 32The random number generator is used by ENL to generate the game-specific Pia key and also by Pia to generate the session key in LDN mode.
- Home
-
NEX
- PRUDP Protocol
- RMC Protocol
-
NEX Services
- Common
- Nintendo
- Kerberos Authentication
- Hpp Server
- NPLN
- Pia
- Switch Servers
- Other Pages