From: notaz Date: Sun, 18 Jan 2026 01:39:12 +0000 (+0200) Subject: cspace: fix 24bit downscaler X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d3858fd0caec027121d08c5d1c54d694d8b991e;p=pcsx_rearmed.git cspace: fix 24bit downscaler --- diff --git a/frontend/cspace.c b/frontend/cspace.c index c9d5a51a..908c64a8 100644 --- a/frontend/cspace.c +++ b/frontend/cspace.c @@ -35,15 +35,16 @@ static inline uint32_t bgr555_to_rgb565_pair(uint32_t p) return r | g | b; } -static inline uint32_t bgr888_to_rgb565_pair(const uint8_t * __restrict__ src, int o2) +static inline uint32_t bgr888_to_rgb565_pair(const uint8_t * __restrict__ src, + int o0, int o1) { uint32_t r1, g1, b1, r2, g2, b2; - r1 = src[0] & 0xf8; - g1 = src[1] & 0xfc; - b1 = src[2] & 0xf8; - r2 = src[o2 + 0] & 0xf8; - g2 = src[o2 + 1] & 0xfc; - b2 = src[o2 + 2] & 0xf8; + r1 = src[o0 + 0] & 0xf8; + g1 = src[o0 + 1] & 0xfc; + b1 = src[o0 + 2] & 0xf8; + r2 = src[o1 + 0] & 0xf8; + g2 = src[o1 + 1] & 0xfc; + b2 = src[o1 + 2] & 0xf8; #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ return (r1 << 24) | (g1 << 19) | (b1 << 13) | (r2 << 8) | (g2 << 3) | (b2 >> 3); @@ -152,7 +153,7 @@ void attr_weak bgr888_to_rgb565(void * __restrict__ dst_, uint32_t * __restrict__ dst = dst_; for (; pixels >= 2; pixels -= 2, src += 3*2, dst++) - *dst = bgr888_to_rgb565_pair(src, 3); + *dst = bgr888_to_rgb565_pair(src, 0, 3); } // TODO? @@ -222,7 +223,7 @@ void bgr888_to_rgb565_640_to_320(void * __restrict__ dst_, uint32_t * __restrict__ dst = dst_; for (; dpixels >= 2; dpixels -= 2, src += 4*3, dst++) - *dst = bgr888_to_rgb565_pair(src, 2*3); + *dst = bgr888_to_rgb565_pair(src, 0*3, 2*3); } void bgr888_to_rgb888_640_to_320(void * __restrict__ dst_, @@ -279,11 +280,11 @@ void bgr888_to_rgb565_512_to_320(void * __restrict__ dst_, uint32_t * __restrict__ dst = dst_; for (; dpixels >= 10; dpixels -= 10, src += 16*3, dst += 5) { - dst[0] = bgr888_to_rgb565_pair(src + 3*0, 3*2); - dst[1] = bgr888_to_rgb565_pair(src + 3*4, 3*5); - dst[2] = bgr888_to_rgb565_pair(src + 3*7, 3*8); - dst[3] = bgr888_to_rgb565_pair(src + 3*10, 3*12); - dst[4] = bgr888_to_rgb565_pair(src + 3*13, 3*15); + dst[0] = bgr888_to_rgb565_pair(src, 3*0, 3*2); + dst[1] = bgr888_to_rgb565_pair(src, 3*4, 3*5); + dst[2] = bgr888_to_rgb565_pair(src, 3*7, 3*8); + dst[3] = bgr888_to_rgb565_pair(src, 3*10, 3*12); + dst[4] = bgr888_to_rgb565_pair(src, 3*13, 3*15); } }