Better camera noise on frontends without camera support
This commit is contained in:
parent
f9b13c66b1
commit
29a3b18186
@ -1,26 +1,26 @@
|
||||
#include "gb.h"
|
||||
|
||||
static signed noise_seed = 0;
|
||||
static uint32_t noise_seed = 0;
|
||||
|
||||
/* This is not a complete emulation of the camera chip. Only the features used by the Game Boy Camera ROMs are supported.
|
||||
We also do not emulate the timing of the real cart, as it might be actually faster than the webcam. */
|
||||
|
||||
static uint8_t generate_noise(uint8_t x, uint8_t y)
|
||||
{
|
||||
signed value = (x + y * 128 + noise_seed);
|
||||
uint8_t *data = (uint8_t *) &value;
|
||||
unsigned hash = 0;
|
||||
uint32_t value = (x * 151 + y * 149) ^ noise_seed;
|
||||
uint32_t hash = 0;
|
||||
|
||||
while ((signed *) data != &value + 1) {
|
||||
hash ^= (*data << 8);
|
||||
if (hash & 0x8000) {
|
||||
hash ^= 0x8a00;
|
||||
hash ^= *data;
|
||||
}
|
||||
data++;
|
||||
while (value) {
|
||||
hash <<= 1;
|
||||
if (hash & 0x100) {
|
||||
hash ^= 0x101;
|
||||
}
|
||||
return (hash >> 8);
|
||||
if (value & 0x80000000) {
|
||||
hash ^= 0xA1;
|
||||
}
|
||||
value <<= 1;
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
static long get_processed_color(GB_gameboy_t *gb, uint8_t x, uint8_t y)
|
||||
|
Loading…
Reference in New Issue
Block a user