aboutsummaryrefslogtreecommitdiff
path: root/plugins/dfxvideo/draw_fb.c
diff options
context:
space:
mode:
authornotaz2010-12-08 02:10:06 +0200
committernotaz2010-12-14 15:25:04 +0200
commit1972732abfea710d3d7b61180971580d9e5081ce (patch)
tree193b88cbec7a9ff4c01a9921b823baf8dcf4e64c /plugins/dfxvideo/draw_fb.c
parent514ed0d98e058596720f94af4af347b609980de9 (diff)
downloadpcsx_rearmed-1972732abfea710d3d7b61180971580d9e5081ce.tar.gz
pcsx_rearmed-1972732abfea710d3d7b61180971580d9e5081ce.tar.bz2
pcsx_rearmed-1972732abfea710d3d7b61180971580d9e5081ce.zip
add support for 24bpp mode
Diffstat (limited to 'plugins/dfxvideo/draw_fb.c')
-rw-r--r--plugins/dfxvideo/draw_fb.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/plugins/dfxvideo/draw_fb.c b/plugins/dfxvideo/draw_fb.c
index e251071..b48b487 100644
--- a/plugins/dfxvideo/draw_fb.c
+++ b/plugins/dfxvideo/draw_fb.c
@@ -38,16 +38,19 @@ char * pCaptionText;
#ifndef __arm__
#define bgr555_to_rgb565 memcpy
+#define bgr888_to_rgb888 memcpy
#endif
static void blit(void)
{
extern void bgr555_to_rgb565(void *dst, void *src, int bytes);
+ extern void bgr888_to_rgb888(void *dst, void *src, int bytes);
int x = PSXDisplay.DisplayPosition.x;
int y = PSXDisplay.DisplayPosition.y;
int w = PreviousPSXDisplay.Range.x1;
int h = PreviousPSXDisplay.DisplayMode.y;
- int pitch = PreviousPSXDisplay.DisplayMode.x * 2;
+ int pitch = PreviousPSXDisplay.DisplayMode.x;
+ unsigned short *srcs = psxVuw + y * 1024 + x;
unsigned char *dest = pl_fbdev_buf;
if (w <= 0)
@@ -55,13 +58,22 @@ static void blit(void)
// TODO: clear border if centering
+ pitch *= PSXDisplay.RGB24 ? 3 : 2;
+
// account for centering
h -= PreviousPSXDisplay.Range.y0;
dest += PreviousPSXDisplay.Range.y0 / 2 * pitch;
dest += PreviousPSXDisplay.Range.x0 * 2; // XXX
+ if (PSXDisplay.RGB24)
+ {
+ for (; h-- > 0; dest += pitch, srcs += 1024)
+ {
+ bgr888_to_rgb888(dest, srcs, w * 3);
+ }
+ }
+ else
{
- unsigned short *srcs = psxVuw + y * 1024 + x;
for (; h-- > 0; dest += pitch, srcs += 1024)
{
bgr555_to_rgb565(dest, srcs, w * 2);