Browse Source

Cleanup

master
cancel 5 years ago
parent
commit
b87bcd287c
  1. 22
      sim.c

22
sim.c

@ -611,16 +611,6 @@ BEGIN_OPERATOR(query)
}
END_OPERATOR
static Usz hash32_shift_mult(Usz key) {
Usz c2 = UINT32_C(0x27d4eb2d);
key = (key ^ UINT32_C(61)) ^ (key >> UINT32_C(16));
key = key + (key << UINT32_C(3));
key = key ^ (key >> UINT32_C(4));
key = key * c2;
key = key ^ (key >> UINT32_C(15));
return key;
}
BEGIN_OPERATOR(random)
LOWERCASE_REQUIRES_BANG;
PORT(0, -1, IN | PARAM);
@ -641,8 +631,16 @@ BEGIN_OPERATOR(random)
min = b;
max = a;
}
Usz key = hash32_shift_mult((extra_params->random_seed + y * width + x) ^
(Tick_number << UINT32_C(16)));
// Initial input params for the hash
Usz key = (extra_params->random_seed + y * width + x) ^
(Tick_number << UINT32_C(16));
// 32-bit shift_mult hash to evenly distribute bits
key = (key ^ UINT32_C(61)) ^ (key >> UINT32_C(16));
key = key + (key << UINT32_C(3));
key = key ^ (key >> UINT32_C(4));
key = key * UINT32_C(0x27d4eb2d);
key = key ^ (key >> UINT32_C(15));
// Hash finished. Restrict to desired range of numbers.
Usz val = key % (max - min) + min;
POKE(1, 0, glyph_of(val));
END_OPERATOR

Loading…
Cancel
Save