summary refs log tree commit diff
path: root/bin/gfxx.c
diff options
context:
space:
mode:
authorJune McEnroe <programble@gmail.com>2018-02-05 17:29:21 -0500
committerJune McEnroe <programble@gmail.com>2018-02-05 17:29:21 -0500
commit373a74f4d7d104ba110e62b3f23887fc1109aa67 (patch)
tree998a6999e7a55dafa9ccb55144868d7183f6b0c1 /bin/gfxx.c
parentSet title in gfcocoa (diff)
downloadsrc-373a74f4d7d104ba110e62b3f23887fc1109aa67.tar.gz
src-373a74f4d7d104ba110e62b3f23887fc1109aa67.zip
Always skip most significant bits in gfxx
This works for CARDS.DLL but might not for other things. We'll see.
Diffstat (limited to 'bin/gfxx.c')
-rw-r--r--bin/gfxx.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/bin/gfxx.c b/bin/gfxx.c
index 6d187cb9..11f9aa20 100644
--- a/bin/gfxx.c
+++ b/bin/gfxx.c
@@ -28,7 +28,7 @@
 
 #define RGB(r,g,b) ((uint32_t)(r) << 16 | (uint32_t)(g) << 8 | (uint32_t)(b))
 #define GRAY(n)    RGB(n, n, n)
-#define MASK(b)    ((1 << b) - 1)
+#define MASK(b)    ((1 << (b)) - 1)
 #define SCALE(b,n) ((b) ? (uint8_t)(255 * (uint32_t)(n) / MASK(b)) : 0)
 
 static enum {
@@ -208,7 +208,7 @@ static uint32_t interpolate(uint32_t n) {
         g = (n >>= bits[3]) & MASK(bits[2]);
         r = (n >>= bits[2]) & MASK(bits[1]);
     } else {
-        r = (n >>= bits[0]) & MASK(bits[1]);
+        r = n & MASK(bits[1]);
         g = (n >>= bits[1]) & MASK(bits[2]);
         b = (n >>= bits[2]) & MASK(bits[3]);
     }