From 2988cbb8ac0a1767846cfdd11fe0f7542f408d96 Mon Sep 17 00:00:00 2001 From: Brandon Wright Date: Thu, 21 Mar 2019 15:28:31 -0500 Subject: [PATCH] Proper 16-bit color conversion. --- gfx.h | 4 ++++ pixform.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gfx.h b/gfx.h index 2e624bed..01f788ab 100644 --- a/gfx.h +++ b/gfx.h @@ -136,6 +136,10 @@ inline uint16 COLOR_ADD(uint16 C1, uint16 C2) { return ((brightness_cap[ (C1 >> RED_SHIFT_BITS) + (C2 >> RED_SHIFT_BITS) ] << RED_SHIFT_BITS) | (brightness_cap[((C1 >> GREEN_SHIFT_BITS) & 0x1f) + ((C2 >> GREEN_SHIFT_BITS) & 0x1f)] << GREEN_SHIFT_BITS) | +// Proper 15->16bit color conversion moves the high bit of green into the low bit. +#if GREEN_SHIFT_BITS == 6 + ((brightness_cap[((C1 >> 6) & 0x1f) + ((C2 >> 6) & 0x1f)] & 0x10) << 1) | +#endif (brightness_cap[ (C1 & 0x1f) + (C2 & 0x1f)] )); } diff --git a/pixform.h b/pixform.h index 633463e4..bfb05fa3 100644 --- a/pixform.h +++ b/pixform.h @@ -8,7 +8,7 @@ #define _PIXFORM_H_ /* RGB565 format */ -#define BUILD_PIXEL_RGB565(R, G, B) (((int)(R) << 11) | ((int)(G) << 6) | (int)(B)) +#define BUILD_PIXEL_RGB565(R, G, B) (((int)(R) << 11) | ((int)(G) << 6) | (((int)(G) & 0x10) << 1) | (int)(B)) #define BUILD_PIXEL2_RGB565(R, G, B) (((int)(R) << 11) | ((int)(G) << 5) | (int)(B)) #define DECOMPOSE_PIXEL_RGB565(PIX, R, G, B) \ { \