From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.30) id 1BIxkJ-0006Av-94 for qemu-devel@nongnu.org; Wed, 28 Apr 2004 18:41:39 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.30) id 1BIxjM-0005Po-QT for qemu-devel@nongnu.org; Wed, 28 Apr 2004 18:41:13 -0400 Received: from [193.252.22.23] (helo=mwinf0803.wanadoo.fr) by monty-python.gnu.org with esmtp (Exim 4.30) id 1BIxjC-00058S-Jq for qemu-devel@nongnu.org; Wed, 28 Apr 2004 18:40:30 -0400 Received: from bellard.org (ATuileries-112-1-3-31.w81-48.abo.wanadoo.fr [81.48.134.31]) by mwinf0803.wanadoo.fr (SMTP Server) with ESMTP id CDC5518001BB for ; Thu, 29 Apr 2004 00:40:28 +0200 (CEST) Message-ID: <4090335C.2010108@bellard.org> Date: Thu, 29 Apr 2004 00:42:36 +0200 From: Fabrice Bellard MIME-Version: 1.0 Subject: Re: [Qemu-devel] Fix for bochs vbe issues References: <4090235C.6040305@aclaro.com> In-Reply-To: <4090235C.6040305@aclaro.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Hi, I just commited a slightly different patch. Tell me if it works. Fabrice Matthew Mastracci wrote: > I found a way to fix the bochs VBE issues in Windows 2000. It looks > really good in 16+ bit color. The changes in this patch are: > > - Use linear (chain-4) mode for all VBE_DISPI_ENABLED modes > - Add ff80 and ff81 as valid ioport registers (these are the old ports, > still used by the driver) > > Some of the issues with the patch: > > - There are black lines that appear on the screen at what appear to be > lines that span a display bank. This only seems to happen in 8- or > 24-bit. Puzzling! > - The shutdown screen in windows 2000 is corrupted. > > A better patch might tweak some of the sequence controller and bank > select registers to set the chain-4 mode, but I haven't tried that yet. > > diff -u -r ./hw/vga.c ../../qemu-0.5.4/hw/vga.c > --- ./hw/vga.c 2004-04-26 15:17:28.000000000 -0600 > +++ ../../qemu-0.5.4/hw/vga.c 2004-04-27 21:46:20.828796000 -0600 > @@ -678,7 +678,10 @@ > break; > } > > - if (s->sr[4] & 0x08) { > + if (s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED) { > + /* VBE mode : simplest access */ > + ret = s->vram_ptr[addr]; > + } else if (s->sr[4] & 0x08) { > /* chain 4 mode : simplest access */ > ret = s->vram_ptr[addr]; > } else if (s->gr[5] & 0x10) { > @@ -756,7 +759,17 @@ > break; > } > > - if (s->sr[4] & 0x08) { > + if (s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED) { > + /* VBE mode : simplest access */ > + plane = (s->gr[4] & 2) | (addr & 1); > + if (s->sr[2] & (1 << plane)) { > + s->vram_ptr[addr] = val; > +#ifdef DEBUG_VGA_MEM > + printf("vga: VBE: [0x%x]\n", addr); > +#endif > + cpu_physical_memory_set_dirty(s->vram_offset + addr); > + } > + } else if (s->sr[4] & 0x08) { > /* chain 4 mode : simplest access */ > plane = addr & 3; > if (s->sr[2] & (1 << plane)) { > @@ -1768,6 +1781,11 @@ > > register_ioport_write(0x1ce, 1, 2, vbe_ioport_write, s); > register_ioport_write(0x1cf, 1, 2, vbe_ioport_write, s); > + register_ioport_read(0xff80, 1, 2, vbe_ioport_read, s); > + register_ioport_read(0xff81, 1, 2, vbe_ioport_read, s); > + > + register_ioport_write(0xff80, 1, 2, vbe_ioport_write, s); > + register_ioport_write(0xff81, 1, 2, vbe_ioport_write, s); > #endif > > vga_io_memory = cpu_register_io_memory(0, vga_mem_read, vga_mem_write); > > > ------------------------------------------------------------------------ > > _______________________________________________ > Qemu-devel mailing list > Qemu-devel@nongnu.org > http://mail.nongnu.org/mailman/listinfo/qemu-devel