From 39efc20d3e70c0cbae2d1f630cb4cea8f7def7f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Strohh=C3=A4cker?= Date: Sat, 8 Mar 2008 12:29:59 +0000 Subject: [PATCH] pel panning+line compare handled different in textmodes, fixes diamond cave (thanks to hal for spotting this) Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3116 --- src/hardware/vga_draw.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/hardware/vga_draw.cpp b/src/hardware/vga_draw.cpp index 28640222..dbfb1ba6 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.92 2008-01-12 17:37:48 c2woody Exp $ */ +/* $Id: vga_draw.cpp,v 1.93 2008-03-08 12:29:59 c2woody Exp $ */ #include #include @@ -656,8 +656,10 @@ static void VGA_DrawSingleLine(Bitu blah) { vga.draw.lines_done++; if (vga.draw.split_line==vga.draw.lines_done) { vga.draw.address=0; - if(!(vga.attr.mode_control&0x20)) - vga.draw.address += vga.config.pel_panning; + if (!(vga.attr.mode_control&0x20)) { + // pel panning enabled + if (!(vga.mode==M_TEXT)) vga.draw.address = vga.config.pel_panning; + } vga.draw.address_line=0; } if ((vga.draw.lines_done < vga.draw.lines_total) && (!vga.draw.resizing)) { @@ -680,8 +682,10 @@ static void VGA_DrawPart(Bitu lines) { VGA_ChangesEnd( ); #endif vga.draw.address=0; - if(!(vga.attr.mode_control&0x20)) - vga.draw.address += vga.config.pel_panning; + if (!(vga.attr.mode_control&0x20)) { + // pel panning enabled + if (!(vga.mode==M_TEXT)) vga.draw.address = vga.config.pel_panning; + } vga.draw.address_line=0; #ifdef VGA_KEEP_CHANGES vga.changes.start = vga.draw.address >> VGA_CHANGE_SHIFT;