From 035a5b8a005927680a55596e97fcab37e41b8ee3 Mon Sep 17 00:00:00 2001 From: Ralf Grillenberger Date: Thu, 10 Sep 2009 17:44:57 +0000 Subject: [PATCH] In Hercules mode the cursor should always be monochrome. Fixes part of SF Bug 2833492. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3464 --- src/hardware/vga_draw.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/hardware/vga_draw.cpp b/src/hardware/vga_draw.cpp index 8175ca25..89f94de2 100644 --- a/src/hardware/vga_draw.cpp +++ b/src/hardware/vga_draw.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: vga_draw.cpp,v 1.110 2009-07-11 10:25:24 c2woody Exp $ */ +/* $Id: vga_draw.cpp,v 1.111 2009-09-10 17:44:57 h-a-l-9000 Exp $ */ #include #include @@ -428,8 +428,16 @@ static Bit8u * VGA_TEXT_Herc_Draw_Line(Bitu vidstart, Bitu line) { if (linevga.draw.cursor.eline) goto skip_cursor; draw=(Bit32u *)&TempLine[font_addr*8]; - Bit32u att=TXT_FG_Table[vga.tandy.draw_base[vga.draw.cursor.address+1]&0xf]; - *draw++=att;*draw++=att; + Bit8u attr = vga.tandy.draw_base[vga.draw.cursor.address+1]; + Bit32u cg; + if (attr&0x8) { + cg = TXT_FG_Table[0xf]; + } else if ((attr&0x77)==0x70) { + cg = TXT_FG_Table[0x0]; + } else { + cg = TXT_FG_Table[0x7]; + } + *draw++=cg;*draw++=cg; } skip_cursor: return TempLine;