diff --git a/gfx.h b/gfx.h index b2524977..5bd2f897 100644 --- a/gfx.h +++ b/gfx.h @@ -7,6 +7,8 @@ #ifndef _GFX_H_ #define _GFX_H_ +#include "port.h" + struct SGFX { uint16 *Screen; @@ -146,13 +148,15 @@ extern struct SGFX GFX; (((C1) ^ (C2)) & RGB_LOW_BITS_MASK)) #else + inline uint16 COLOR_ADD(uint16 C1, uint16 C2) { - return ((brightness_cap[ (C1 >> 11) + (C2 >> 11) ] << 11) | - (brightness_cap[((C1 >> 6) & 0x1f) + ((C2 >> 6) & 0x1f)] << 6 ) | - (brightness_cap[ (C1 & 0x1f) + (C2 & 0x1f) ] )); + 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) | + (brightness_cap[ (C1 & 0x1f) + (C2 & 0x1f)] )); } -#endif + +#endif // GFX_MULTI_FORMAT #define COLOR_SUB1_2(C1, C2) \ GFX.ZERO[(((C1) | RGB_HI_BITS_MASKx2) - \ diff --git a/pixform.h b/pixform.h index 657061fe..ee816696 100644 --- a/pixform.h +++ b/pixform.h @@ -49,6 +49,8 @@ extern uint32 SPARE_RGB_BIT_MASK; #define MAX_RED_RGB565 31 #define MAX_GREEN_RGB565 63 #define MAX_BLUE_RGB565 31 +#define RED_SHIFT_BITS_RGB565 11 +#define GREEN_SHIFT_BITS_RGB565 6 #define RED_LOW_BIT_MASK_RGB565 0x0800 #define GREEN_LOW_BIT_MASK_RGB565 0x0020 #define BLUE_LOW_BIT_MASK_RGB565 0x0001 @@ -69,6 +71,8 @@ extern uint32 SPARE_RGB_BIT_MASK; #define MAX_RED_RGB555 31 #define MAX_GREEN_RGB555 31 #define MAX_BLUE_RGB555 31 +#define RED_SHIFT_BITS_RGB555 10 +#define GREEN_SHIFT_BITS_RGB555 5 #define RED_LOW_BIT_MASK_RGB555 0x0400 #define GREEN_LOW_BIT_MASK_RGB555 0x0020 #define BLUE_LOW_BIT_MASK_RGB555 0x0001 @@ -197,6 +201,8 @@ extern uint32 SPARE_RGB_BIT_MASK; #define MAX_RED_D(F) CONCAT(MAX_RED_, F) #define MAX_GREEN_D(F) CONCAT(MAX_GREEN_, F) #define MAX_BLUE_D(F) CONCAT(MAX_BLUE_, F) +#define RED_SHIFT_BITS_D(F) CONCAT(RED_SHIFT_BITS_, F) +#define GREEN_SHIFT_BITS_D(F) CONCAT(GREEN_SHIFT_BITS_, F) #define RED_LOW_BIT_MASK_D(F) CONCAT(RED_LOW_BIT_MASK_, F) #define GREEN_LOW_BIT_MASK_D(F) CONCAT(GREEN_LOW_BIT_MASK_, F) #define BLUE_LOW_BIT_MASK_D(F) CONCAT(BLUE_LOW_BIT_MASK_, F) @@ -211,6 +217,8 @@ extern uint32 SPARE_RGB_BIT_MASK; #define MAX_RED MAX_RED_D(PIXEL_FORMAT) #define MAX_GREEN MAX_GREEN_D(PIXEL_FORMAT) #define MAX_BLUE MAX_BLUE_D(PIXEL_FORMAT) +#define RED_SHIFT_BITS RED_SHIFT_BITS_D(PIXEL_FORMAT) +#define GREEN_SHIFT_BITS GREEN_SHIFT_BITS_D(PIXEL_FORMAT) #define RED_LOW_BIT_MASK RED_LOW_BIT_MASK_D(PIXEL_FORMAT) #define GREEN_LOW_BIT_MASK GREEN_LOW_BIT_MASK_D(PIXEL_FORMAT) #define BLUE_LOW_BIT_MASK BLUE_LOW_BIT_MASK_D(PIXEL_FORMAT)