summaryrefslogtreecommitdiffstats
path: root/src/rng.c
blob: 96760b81592bb33a370e14ce4e6e52a6c9f0fe1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
u16 rng_state;

u32 hash16(u32 input, u32 key) {
    u32 hash = input * key;
    return ((hash >> 16) ^ hash) & 0xFFFF;
}

u16 rng16() {
    rng_state += 0xbadd;
    return hash16(rng_state, 0x10de);
}

u32 rng32() {
    return (rng16() << 16) | rng16();
}