Dither using a pattern, closer to actual GameBoy Camera
This commit is contained in:
parent
de7c15fc68
commit
479a64dca6
@ -1,22 +1,5 @@
|
|||||||
#include "camera.h"
|
#include "camera.h"
|
||||||
|
|
||||||
static int8_t dither_random(uint8_t x, uint8_t y)
|
|
||||||
{
|
|
||||||
static bool once = false;
|
|
||||||
static int8_t random[128*112];
|
|
||||||
if (!once) {
|
|
||||||
unsigned int r = 0x1337c0de;
|
|
||||||
for (int i = 0; i < sizeof(random); i++) {
|
|
||||||
random[i] = r % 85 - 42;
|
|
||||||
r += 11;
|
|
||||||
r *= 25214903917;
|
|
||||||
}
|
|
||||||
once = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return random[x + y * 128];
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t GB_camera_read_image(GB_gameboy_t *gb, uint16_t addr)
|
uint8_t GB_camera_read_image(GB_gameboy_t *gb, uint16_t addr)
|
||||||
{
|
{
|
||||||
uint8_t tile_x = addr / 0x10 % 0x10;
|
uint8_t tile_x = addr / 0x10 % 0x10;
|
||||||
@ -31,8 +14,8 @@ uint8_t GB_camera_read_image(GB_gameboy_t *gb, uint16_t addr)
|
|||||||
|
|
||||||
int color = gb->camera_get_pixel_callback? gb->camera_get_pixel_callback(gb, x,y) ^ 0xFF : (rand() & 0xFF);
|
int color = gb->camera_get_pixel_callback? gb->camera_get_pixel_callback(gb, x,y) ^ 0xFF : (rand() & 0xFF);
|
||||||
|
|
||||||
/* Dither using a deterministic random */
|
/* Dither using a pattern */
|
||||||
color += dither_random(x, y);
|
color += ((x + y) & 1? 21 : -21) >> (y & 1);
|
||||||
if (color > 255) {
|
if (color > 255) {
|
||||||
color = 255;
|
color = 255;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user