fixed palette-to-color conversion
authorJustin Wind <justin.wind@gmail.com>
Mon, 14 May 2012 04:25:05 +0000 (21:25 -0700)
committerJustin Wind <justin.wind@gmail.com>
Mon, 14 May 2012 04:25:05 +0000 (21:25 -0700)
wups, was shifting the wrong number of bits

hw_lem1802.c

index 92e5149c64d5be7b42489b4f9a371222949b1b5f..dd8d33fdcb48fcdda46cef9f0dd718fc09042f30 100644 (file)
@@ -65,7 +65,7 @@ static const DCPU16_WORD palette_default_[PALETTE_ENTRIES] = {
     0x0f55, /* light red */
     0x0f5f, /* light magenta */
     0x0ff5, /* light yellow */
-    0x0fff, /* white */
+    0x0fff  /* white */
 };
 
 struct pixel_ {
@@ -97,10 +97,19 @@ struct lem1802_ {
 
 static inline
 void pixel_color_(struct pixel_ *pix, DCPU16_WORD color) {
-    pix->r = (color & 0x000f) | ((color & 0x000f) << 8);
-    pix->g = ((color & 0x00f0) >> 8) | (color & 0x00f0);
-    pix->b = ((color & 0x0f00) >> 8) | ((color & 0x0f00) >> 16);
-    pix->a = ((color & 0xf000) >> 16) | ((color & 0xf000) >> 24);
+    unsigned char x;
+
+    x = (color >> 0) & 0x000f;
+    pix->r = x | (x << 4);
+
+    x = (color >> 4) & 0x000f;
+    pix->g = x | (x << 4);
+
+    x = (color >> 8) & 0x000f;
+    pix->b = x | (x << 4);
+
+    x = (color >> 12) & 0x000f;
+    pix->a = x | (x << 4);
 }
 
 static