- 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:
parent
b8b2a7253b
commit
a0b4b4898b
@ -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
|
||||
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user