Mirai's Miscellaneous Misadventures
M24 / core / noise.c
#include <mimimi/assets.h>
static unsigned long int mimimi_xorshift(unsigned long int n)
{
struct { unsigned long int n:32; } s = {n};
s.n ^= s.n << 13;
s.n ^= s.n >> 17;
s.n ^= s.n << 5;
return s.n;
}
void mimimi_noise(struct mimimi_image *image, unsigned char *colors, int count)
{
unsigned long int n = 1;
for (int i = 0 ; i < image->width * image->height ; i++)
{
n = mimimi_xorshift(n);
unsigned char color = colors[n % count];
if (color != 0) image->colors[i] = color;
}
}