summaryrefslogtreecommitdiffstats
path: root/src/rng.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rng.c')
-rw-r--r--src/rng.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/rng.c b/src/rng.c
new file mode 100644
index 0000000..96760b8
--- /dev/null
+++ b/src/rng.c
@@ -0,0 +1,15 @@
1u16 rng_state;
2
3u32 hash16(u32 input, u32 key) {
4 u32 hash = input * key;
5 return ((hash >> 16) ^ hash) & 0xFFFF;
6}
7
8u16 rng16() {
9 rng_state += 0xbadd;
10 return hash16(rng_state, 0x10de);
11}
12
13u32 rng32() {
14 return (rng16() << 16) | rng16();
15}