From 3d938579ef0e904a566371785c4f7d782fdf3a2b Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Sat, 7 Feb 2004 22:22:19 +0000 Subject: [PATCH] Add the 3rd cga palette Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1662 --- src/hardware/vga_misc.cpp | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/hardware/vga_misc.cpp b/src/hardware/vga_misc.cpp index 650d56ad..9ee6148f 100644 --- a/src/hardware/vga_misc.cpp +++ b/src/hardware/vga_misc.cpp @@ -106,14 +106,29 @@ static void write_p3d9(Bit32u port,Bit8u val) { { VGA_ATTR_SetPalette(0,(val & 0xf)); Bit8u pal_base=(val & 0x10) ? 0x08 : 0; - if (val & 0x020) { - VGA_ATTR_SetPalette(1,0x03+pal_base); - VGA_ATTR_SetPalette(2,0x05+pal_base); - VGA_ATTR_SetPalette(3,0x07+pal_base); + /* Check for BW Mode */ + if (vga.cga.mode_control & 0x4) { + if (val & 0x20) { + VGA_ATTR_SetPalette(1,0x03+pal_base); + VGA_ATTR_SetPalette(2,0x04+pal_base); + VGA_ATTR_SetPalette(3,0x07+pal_base); + } else { + //TODO Maybe? will anyone ever use, + //will also need to setup a BW palette,but could put it behind normal cga... + VGA_ATTR_SetPalette(1,0x02+pal_base); + VGA_ATTR_SetPalette(2,0x04+pal_base); + VGA_ATTR_SetPalette(3,0x06+pal_base); + } } else { - VGA_ATTR_SetPalette(1,0x02+pal_base); - VGA_ATTR_SetPalette(2,0x04+pal_base); - VGA_ATTR_SetPalette(3,0x06+pal_base); + if (val & 0x20) { + VGA_ATTR_SetPalette(1,0x03+pal_base); + VGA_ATTR_SetPalette(2,0x05+pal_base); + VGA_ATTR_SetPalette(3,0x07+pal_base); + } else { + VGA_ATTR_SetPalette(1,0x02+pal_base); + VGA_ATTR_SetPalette(2,0x04+pal_base); + VGA_ATTR_SetPalette(3,0x06+pal_base); + } } } break;