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(); }