- implemented graphics snapshot for mode X (variant of VGA mode 0x13)

- bugfix: CGA1 mode depends on the CGA compatiblity switch
This commit is contained in:
Volker Ruppert 2011-08-14 14:56:54 +00:00
parent b8b2a7253b
commit a0b4b4898b
3 changed files with 24 additions and 11 deletions

View File

@ -54,6 +54,9 @@ Bochs repository moved to the SVN version control !
- added support for MSVC DLL plugins with a separate workspace package. - added support for MSVC DLL plugins with a separate workspace package.
VS2008Ex can now create a BOCHS.EXE with a set of plugin DLLs. VS2008Ex can now create a BOCHS.EXE with a set of plugin DLLs.
TODO: nmake still cannot create plugin DLLs. TODO: nmake still cannot create plugin DLLs.
- removed some outdated / unmaintained parts from the Bochs code: BeOS host
support, plex86 support, networking module 'arpback', text snapshot check
feature.
- I/O Devices - I/O Devices
- Networking - Networking
@ -70,6 +73,8 @@ Bochs repository moved to the SVN version control !
Linux (ALSA / OSS) Linux (ALSA / OSS)
- PCI - PCI
- added framework for PCI ROM support - added framework for PCI ROM support
- new bochsrc option 'pci' replaces the 'i440fxsupport' option. The 'chipset'
parameter for now only accepts the value 'i440fx'.
- VGA - VGA
- added PCI ROM support to cirrus and pcivga and moved ROM loading for the ISA - added PCI ROM support to cirrus and pcivga and moved ROM loading for the ISA
case to the vga code (SeaBIOS now usable by Bochs) case to the vga code (SeaBIOS now usable by Bochs)
@ -88,11 +93,16 @@ Bochs repository moved to the SVN version control !
(WARNING: legacy BIOS no longer works with a PCI display adapter) (WARNING: legacy BIOS no longer works with a PCI display adapter)
- GUI and display libraries - GUI and display libraries
- vga update interval now uses host timing if the realtime synchronization - new parameter 'update_freq' for the 'vga' bochsrc option replaces the
'vga_update_interval' option
- vga update frequency now uses host timing if the realtime synchronization
is enabled with the "clock" option (FIXME: it should always be used - is enabled with the "clock" option (FIXME: it should always be used -
independent from the "clock" setting) independent from the "clock" setting)
- Implemented graphics mode snapshot for VBE, Cirrus and standard VGA modes. - Implemented graphics mode snapshot for VBE, Cirrus and standard VGA modes.
Some unusual modes like CGA, and mode X are not supported yet. CGA modes are not supported yet.
- Config interface
- win32paramdlg: dialog size now adjusted to support larger label text
- SF patches applied - SF patches applied
[3302668] VMX preemption timer by Jianan Hao [3302668] VMX preemption timer by Jianan Hao

View File

@ -2,7 +2,7 @@
// $Id$ // $Id$
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2002-2009 The Bochs Project // Copyright (C) 2002-2011 The Bochs Project
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public
@ -1874,7 +1874,7 @@ void bx_vga_c::update(void)
unsigned long line_compare; unsigned long line_compare;
Bit8u *plane[4]; Bit8u *plane[4];
if (BX_VGA_THIS s.graphics_ctrl.memory_mapping == 3) { // CGA 640x200x2 if ((BX_VGA_THIS s.CRTC.reg[0x17] & 1) == 0) { // CGA 640x200x2
for (yc=0, yti=0; yc<iHeight; yc+=Y_TILESIZE, yti++) { for (yc=0, yti=0; yc<iHeight; yc+=Y_TILESIZE, yti++) {
for (xc=0, xti=0; xc<iWidth; xc+=X_TILESIZE, xti++) { for (xc=0, xti=0; xc<iWidth; xc+=X_TILESIZE, xti++) {
@ -2713,10 +2713,9 @@ int bx_vga_c::get_snapshot_mode()
} else if (!BX_VGA_THIS s.graphics_ctrl.graphics_alpha) { } else if (!BX_VGA_THIS s.graphics_ctrl.graphics_alpha) {
return BX_GUI_SNAPSHOT_TXT; return BX_GUI_SNAPSHOT_TXT;
} else if ((BX_VGA_THIS s.graphics_ctrl.shift_reg == 0) && } else if ((BX_VGA_THIS s.graphics_ctrl.shift_reg == 0) &&
(BX_VGA_THIS s.graphics_ctrl.memory_mapping != 3)) { ((BX_VGA_THIS s.CRTC.reg[0x17] & 1) != 0)) {
return BX_GUI_SNAPSHOT_GFX; return BX_GUI_SNAPSHOT_GFX;
} else if ((BX_VGA_THIS s.graphics_ctrl.shift_reg == 2) && } else if (BX_VGA_THIS s.graphics_ctrl.shift_reg == 2) {
(BX_VGA_THIS s.sequencer.chain_four)) {
return BX_GUI_SNAPSHOT_GFX; return BX_GUI_SNAPSHOT_GFX;
} else { } else {
return BX_GUI_SNAPSHOT_UNSUP; return BX_GUI_SNAPSHOT_UNSUP;
@ -2824,13 +2823,17 @@ Bit32u bx_vga_c::get_gfx_snapshot(Bit8u **snapshot_ptr, Bit8u **palette_ptr,
} }
BX_VGA_THIS get_dac_palette(palette_ptr, 2); BX_VGA_THIS get_dac_palette(palette_ptr, 2);
return len; return len;
} else if ((BX_VGA_THIS s.graphics_ctrl.shift_reg == 2) && } else if (BX_VGA_THIS s.graphics_ctrl.shift_reg == 2) {
(BX_VGA_THIS s.sequencer.chain_four)) {
for (y = 0; y < BX_VGA_THIS s.last_yres; y++) { for (y = 0; y < BX_VGA_THIS s.last_yres; y++) {
for (x = 0; x < BX_VGA_THIS s.last_xres; x++) { for (x = 0; x < BX_VGA_THIS s.last_xres; x++) {
px = x >> 1; px = x >> 1;
py = y >> BX_VGA_THIS s.y_doublescan; py = y >> BX_VGA_THIS s.y_doublescan;
byte_offset = start_addr + py * BX_VGA_THIS s.line_offset + (px & ~0x03); byte_offset = start_addr + py * BX_VGA_THIS s.line_offset;
if (BX_VGA_THIS s.sequencer.chain_four) {
byte_offset += (px & ~0x03);
} else {
byte_offset += (px >> 2);
}
*(dst_ptr++) = plane[px % 4][byte_offset]; *(dst_ptr++) = plane[px % 4][byte_offset];
} }
} }

View File

@ -2,7 +2,7 @@
// $Id$ // $Id$
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2002-2009 The Bochs Project // Copyright (C) 2002-2011 The Bochs Project
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public