aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/util.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/common/util.h b/common/util.h
index 79a6eb1068..85ea599278 100644
--- a/common/util.h
+++ b/common/util.h
@@ -38,6 +38,20 @@
#define SWAP(a,b) do{int tmp=a; a=b; b=tmp; } while(0)
#define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
+#if USE_555_FORMAT
+// Assume the 16 bit graphics data is in 5-5-5 format
+#define RGB_TO_16(r,g,b) (((((r)>>3)&0x1F) << 10) | ((((g)>>3)&0x1F) << 5) | (((b)>>3)&0x1F))
+#define RED_FROM_16(x) ((((x)>>10)&0x1F) << 3)
+#define GREEN_FROM_16(x) ((((x)>>5)&0x1F) << 3)
+#define BLUE_FROM_16(x) (((x)&0x1F) << 3)
+
+#else
+// Assume the 16 bit graphics data is in 5-6-5 format
+#define RGB_TO_16(r,g,b) (((((r)>>3)&0x1F) << 11) | ((((g)>>2)&0x3F) << 5) | (((b)>>3)&0x1F))
+#define RED_FROM_16(x) ((((x)>>11)&0x1F) << 3)
+#define GREEN_FROM_16(x) ((((x)>>5)&0x3F) << 2)
+#define BLUE_FROM_16(x) (((x)&0x1F) << 3)
+#endif
int RGBMatch(byte *palette, int r, int g, int b);
int Blend(int src, int dst, byte *palette);