- 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.
VS2008Ex can now create a BOCHS.EXE with a set of 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
- Networking
@ -70,6 +73,8 @@ Bochs repository moved to the SVN version control !
Linux (ALSA / OSS)
- PCI
- 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
- 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)
@ -88,11 +93,16 @@ Bochs repository moved to the SVN version control !
(WARNING: legacy BIOS no longer works with a PCI display adapter)
- 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 -
independent from the "clock" setting)
- 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
[3302668] VMX preemption timer by Jianan Hao

View File

@ -2,7 +2,7 @@
// $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
// 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;
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 (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) {
return BX_GUI_SNAPSHOT_TXT;
} 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;
} else if ((BX_VGA_THIS s.graphics_ctrl.shift_reg == 2) &&
(BX_VGA_THIS s.sequencer.chain_four)) {
} else if (BX_VGA_THIS s.graphics_ctrl.shift_reg == 2) {
return BX_GUI_SNAPSHOT_GFX;
} else {
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);
return len;
} else if ((BX_VGA_THIS s.graphics_ctrl.shift_reg == 2) &&
(BX_VGA_THIS s.sequencer.chain_four)) {
} else if (BX_VGA_THIS s.graphics_ctrl.shift_reg == 2) {
for (y = 0; y < BX_VGA_THIS s.last_yres; y++) {
for (x = 0; x < BX_VGA_THIS s.last_xres; x++) {
px = x >> 1;
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];
}
}

View File

@ -2,7 +2,7 @@
// $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
// modify it under the terms of the GNU Lesser General Public