From d8f0f977a3ab0162e89003260c94779f2b93fbfc Mon Sep 17 00:00:00 2001 From: mahlemiut Date: Mon, 22 Sep 2014 08:53:44 +0000 Subject: [PATCH] trident: improved mono pattern drawing, fixing foreground colour, adding background colour, and clipping it. --- src/emu/bus/isa/trident.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/emu/bus/isa/trident.c b/src/emu/bus/isa/trident.c index 10a664796e4..bace8a9ca0d 100644 --- a/src/emu/bus/isa/trident.c +++ b/src/emu/bus/isa/trident.c @@ -98,7 +98,7 @@ UINT32 trident_vga_device::READPIXEL(INT16 x,INT16 y) void trident_vga_device::WRITEPIXEL(INT16 x,INT16 y, UINT32 data) { if(svga.rgb8_en) - WRITEPIXEL8(x,y,data & 0xff); + WRITEPIXEL8(x,y,(((data >> 16) & 0xff) | ((data >> 8) & 0xff) | (data & 0xff))); // XFree86 3.3 sets bits 0-7 to 0 when using mono patterns, does it OR each byte? if(svga.rgb15_en) WRITEPIXEL15(x,y,data & 0x7fff); if(svga.rgb16_en) @@ -1170,8 +1170,13 @@ void trident_vga_device::accel_data_write(UINT32 data) { for(int x=31;x>=0;x--) { - if(((data >> x) & 0x01) != 0) - WRITEPIXEL(tri.accel_mem_x,tri.accel_mem_y,tri.accel_fgcolour); + if(tri.accel_mem_x <= tri.accel_dest_x+tri.accel_dim_x) + { + if(((data >> x) & 0x01) != 0) + WRITEPIXEL(tri.accel_mem_x,tri.accel_mem_y,tri.accel_fgcolour); + else + WRITEPIXEL(tri.accel_mem_x,tri.accel_mem_y,tri.accel_bgcolour); + } tri.accel_mem_x++; } if(tri.accel_mem_x > tri.accel_dest_x+tri.accel_dim_x)