On Mon, Jun 18, 2018 at 11:38:16PM +0200, Sebastian Bauer wrote: > According to the sm501 specs the hardware cursor colors are to be given in > the rgb565 format, but the code currently interprets them as bgr565.
Can those specs be found online somewhere? > > Therefore, the colors of the hardware cursors are wrong in the QEMU > display, e.g., the standard mouse pointer of AmigaOS appears blue instead > of red. This change fixes this issue by replacing the existing naive > bgr565 => rgb888 conversion with a standard rgb565 => rgb888 one that also > scales the color component values properly. > > Signed-off-by: Sebastian Bauer <m...@sebastianbauer.info> > --- > hw/display/sm501.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/hw/display/sm501.c b/hw/display/sm501.c > index 0488ab69d3..6c7f8483f3 100644 > --- a/hw/display/sm501.c > +++ b/hw/display/sm501.c > @@ -668,9 +668,9 @@ static inline void get_hwc_palette(SM501State *state, int > crt, uint8_t *palette) > } else { > rgb565 = color_reg & 0xFFFF; > } > - palette[i * 3 + 0] = (rgb565 << 3) & 0xf8; /* red */ > - palette[i * 3 + 1] = (rgb565 >> 3) & 0xfc; /* green */ > - palette[i * 3 + 2] = (rgb565 >> 8) & 0xf8; /* blue */ > + palette[i * 3 + 0] = ((rgb565 >> 11) * 527 + 23) >> 6; /* r */ > + palette[i * 3 + 1] = (((rgb565 >> 5) & 0x3f) * 259 + 33) >> 6; /* g > */ > + palette[i * 3 + 2] = ((rgb565 & 0x1f) * 527 + 23) >> 6; /* b */ > } > } > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature