height *= 2;
}
/* keep aspect if CGX doublescan mode */
- if (s->graphic_mode == 1 && cirrus_get_bpp(s) >= 8 && height * 3 / 4 >= width) {
+ if (s->graphic_mode == 1 && cirrus_get_bpp(s) >= 8 && height * 9 / 10 >= width) {
width *= 2;
s->double_scan2 = 1;
} else {
int w;
uint32_t v, r, g, b;
- w = width;
+ w = width / 2;
do {
v = lduw_raw((void *)s);
r = (v >> 7) & 0xf8;
int w;
uint32_t v, r, g, b;
- w = width;
+ w = width / 2;
do {
v = lduw_raw((void *)s);
r = (v >> 8) & 0xf8;
int w;
uint32_t r, g, b;
- w = width;
+ w = width / 2;
do {
#if defined(TARGET_WORDS_BIGENDIAN)
r = s[0];
g = s[1];
r = s[2];
#endif
- ((PIXEL_TYPE *)d)[0] = ((PIXEL_TYPE *)d)[1] = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b);
+ PIXEL_TYPE v = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b);
+ ((PIXEL_TYPE *)d)[0] = v;
+ ((PIXEL_TYPE *)(d + BPP))[0] = v;
s += 3;
d += BPP * 2;
} while (--w != 0);
int w;
uint32_t r, g, b;
- w = width;
+ w = width / 2;
do {
#if defined(TARGET_WORDS_BIGENDIAN)
r = s[1];