Mirai's Miscellaneous Misadventures
M21 / core / noise.c
1
2
3
4#include <mimimi/assets.h>
5
6static unsigned long int mimimi_xorshift(unsigned long int n)
7{
8 struct { unsigned long int n:32; } s = {n};
9 s.n ^= s.n << 13;
10 s.n ^= s.n >> 17;
11 s.n ^= s.n << 5;
12 return s.n;
13}
14
15void mimimi_noise(struct mimimi_image *image, unsigned char *colors, int count)
16{
17 unsigned long int n = 1;
18 for (int i = 0 ; i < image->width * image->height ; i++)
19 {
20 n = mimimi_xorshift(n);
21 unsigned char color = colors[n % count];
22 if (color != 0) image->colors[i] = color;
23 }
24}