aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/display/blizzard.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/hw/display/blizzard.c b/hw/display/blizzard.c
index 359e399..1052415 100644
--- a/hw/display/blizzard.c
+++ b/hw/display/blizzard.c
@@ -19,6 +19,7 @@
*/
#include "qemu/osdep.h"
+#include "qemu/bitops.h"
#include "ui/console.h"
#include "hw/display/blizzard.h"
#include "ui/pixel_ops.h"
@@ -932,12 +933,9 @@ static void blizzard_draw_line16_32(uint32_t *dest,
const uint16_t *end = (const void *) src + width;
while (src < end) {
data = *src ++;
- b = (data & 0x1f) << 3;
- data >>= 5;
- g = (data & 0x3f) << 2;
- data >>= 6;
- r = (data & 0x1f) << 3;
- data >>= 5;
+ b = extract16(data, 0, 5) << 3;
+ g = extract16(data, 5, 6) << 2;
+ r = extract16(data, 11, 5) << 3;
*dest++ = rgb_to_pixel32(r, g, b);
}
}