Commit Graph

206 Commits

Author SHA1 Message Date
Volker Ruppert
bf1d96e7e0 Using the correct variable type fixes Cirrus pattern copy issues introduced with
the segfault fix.
2020-08-03 18:25:10 +00:00
Volker Ruppert
0d7f37f233 VBE: retrieve gui capabilities only on demand (fixes VBE mode list in RFB gui). 2020-06-28 17:44:55 +00:00
Volker Ruppert
f6825e31de Modified svga_patterncopy() to avoid writing to video memory out of bounds.
This fixes segfault when moving window in guest Win 3.1x with CL-GD 5446 and
suitable drivers for it.
2020-06-16 18:46:37 +00:00
Volker Ruppert
c036bcb7ab Compilation fix for MSYS2 gcc 10.1.0 (narrowing conversion). 2020-06-09 07:30:01 +00:00
Volker Ruppert
e36217533a Added support for 256-byte EDID file (e.g. QEMU monitor). 2020-03-25 16:54:50 +00:00
Volker Ruppert
ed223c6499 DDC: changed the "off" case to Bochs default name "disabled" and updated docs. 2020-03-22 12:31:34 +00:00
Volker Ruppert
e23a930864 Added "ddc" parameter to the "vga" option to make it possible either to disable
the DDC feature or to read the monitor EDID from file. By the default the
builtin "Bochs Screen" EDID is used.
2020-03-21 18:00:02 +00:00
Volker Ruppert
21e035957d Don't force a gui display update in bx_vgacore_c::after_restore_state() since it
makes trouble with SDL / SDL2. The first timer-based update after restore should
draw the screen correctly.
2020-01-24 19:42:52 +00:00
Volker Ruppert
a088949447 Save / restore fixes
- Don't set up and load pre-defined optional plugins in restore mode.
- Remove the save/restore registration in Voodoo destructors.
- TODO: Fix frozen SDL/SDL2 display after restore.
2020-01-24 16:01:00 +00:00
Volker Ruppert
d641af80bb Removed lfb_enabled switch from Bochs VBE code. Now banked and LFB writes to
VRAM are possible at the same time without changing mode. This makes the GRUB
bootloader menu visible when using the Bochs VBE adapter instead of Cirrus.
2020-01-11 06:07:18 +00:00
Volker Ruppert
546b4a78e5 Setting default values for VCLK registers not necessary. They should be set up
by the VGABIOS. Happy new year!
2020-01-01 14:16:29 +00:00
Volker Ruppert
8b5586bb79 Small optimization in the TRANSPARENTCOMP code. 2019-12-30 21:40:40 +00:00
Volker Ruppert
f960acf028 Added missing Cirrus SVGA bitblt feature "tranparent color compare". 2019-12-29 21:38:05 +00:00
Stanislav Shwartsman
96e2c50bef applying SF patch #545 Speling fixes 2019-12-09 16:29:23 +00:00
Volker Ruppert
449c65a625 Fixed possible deadlock on exit. The pthread library cannot kill a waiting
thread and destroying an object locked by another thread is not possible.
2019-11-13 12:00:27 +00:00
Stanislav Shwartsman
eec720c62b convert bochs.h macros to inline functions with strong types 2019-10-16 20:46:00 +00:00
Volker Ruppert
91bad8e4b2 Fixed screen flickering in case the hardware cursor is enabled in 3D mode. 2018-07-21 16:14:53 +00:00
Volker Ruppert
d0936f618b Attempt to fix crash that happens in some cases (suggested by Luigi B.). 2018-06-26 17:58:11 +00:00
Volker Ruppert
67135b4429 Fixed wrong model string caused by typo. 2018-06-18 20:26:51 +00:00
Volker Ruppert
20edb4600b Fixed mem read/write data conversion (mem_read() could cause segfault / thanks
to Luigi B. for pointing out this issue).
2018-06-17 11:27:18 +00:00
Volker Ruppert
1f1159013d Some small additions for the Voodoo3 model. 2018-05-21 18:01:49 +00:00
Volker Ruppert
e88f14558d The VSYNC timing is now based on the PIT clock sync mode instead of the VGA
screen update timing mode.
2018-05-21 07:31:18 +00:00
Volker Ruppert
e476c0f01a Two small VGA core changes.
- Allow 16-bit reads from address 0x03da.
- Added BX_ERROR for unimplemented bits in CRTC register 0x08.
2018-05-18 18:00:09 +00:00
Volker Ruppert
3f45d44184 Added subsystem ID for Voodoo3 AGP with an existing VGA ROM.
Updated some comments.
TODO: full AGP support, LGPL'd VGABIOS for Banshee / Voodoo3
2018-05-06 06:13:57 +00:00
Volker Ruppert
4462ac7319 Fixed Banshee status reading via MMIO (unaligned access is allowed).
The Banshee AGP model is now basicly working (tested with Win98SE).
Started documentation updates about i440BX chipset and Banshee AGP.
2018-05-03 19:46:12 +00:00
Volker Ruppert
7412ebc07b Added new macros BX_DEBUG_PCI_READ and BX_DEBUG_PCI_WRITE to unify the debug
output of PCI config space handlers.
Banshee: some PCI register fixes.
2018-05-01 15:54:37 +00:00
Volker Ruppert
a086cdf08f Some work on the Voodoo Banshee emulation.
- Added default value for the video clock frequency to make sure that the
  vertical timer works.
- Changing vidDesktopStartAddr register when the video processor is on now
  forces a screen update.
2018-04-01 16:05:40 +00:00
Volker Ruppert
e639d9dd29 Report AGP model in PCI status, new PCI capabilities and strapInfo register.
AGP specific features are not present yet.
2018-03-09 18:33:44 +00:00
Volker Ruppert
8952c144bd Some work on the i440BX chipset and related changes.
- Fixed PCI BAR initialization (now using memset()).
  - Fixed reset failure (set all PAM memory types to ROM).
  - Added stub for the AGP aperture (register BAR #0, handle APSIZE and read
    GART entry in read/write handlers).
  - Added some more PCI register defaults and write masks.
  - Fixed a warning in the ES1370 code.
  - Voodoo Banshee: set up PCI subsystem ID depending on bus and model.
  - Volatile BIOS write support must also be present in ISA BIOS memory.
2018-03-04 04:53:16 +00:00
Volker Ruppert
73bc76072e Added support for assigning a device (banshee or voodoo3) on Bochs PCI slot #5
to AGP if chipset i440BX is selected. AGP-specific features are not implemented
yet.
2018-02-25 20:59:30 +00:00
Volker Ruppert
04981c35d3 Added the subsystem ID of a Voodoo3 PCI model to make it work with an external
VGABIOS image in Win95/98 guest without hacking. Mention the Voodoo3 model in
the docs.
2018-02-16 13:11:30 +00:00
Volker Ruppert
05da2a4dff Added basic support for the Voodoo3 model (Banshee plus secondary TMU).
Using a temporary subsystem ID, since I haven't found a VGABIOS ROM image for
the PCI version and Bochs doesn't support AGP yet. After modifying Voodoo3.inf
the driver could be installed successfully in Win95/98 and the Voodoo3 works as
expected (same issues as the Banshee model).
Removed BX_ERROR message about setting undocumented srcXY register bits. They
seem to have no effect on the emulation and could be ignored.
2018-02-13 19:36:20 +00:00
Volker Ruppert
e14f70088c Fixed possible infinite loop: width for redraw_area() cannot be 0. 2018-02-12 21:07:04 +00:00
Volker Ruppert
6610382b31 Fixed possible infinte loop when text_update() is called within video mode change
(found with Voodoo Banshee).
2018-02-12 09:19:33 +00:00
Volker Ruppert
bb472a78f9 Some work on the Voodoo Banshee emulation and related changes.
- Screen-to-screen blt: added support for expanding monochrome source data.
- Fixed calculation of the pitch for packed source data.
- Fixed repeated execution of some commands in non-immediate mode.
- PCI devices: fixed and improved BX_INFO / BX_DEBUG messages.
2018-02-11 22:40:30 +00:00
Stanislav Shwartsman
1e35e64ec6 fixed compilation warnings 2018-02-05 16:02:53 +00:00
Volker Ruppert
50c1370216 Some work on the PCI devices code.
- Added INT pin init to method init_pci_conf().
- Moved readonly register handling to the common PCI write handler.
- Moved IRQ line reporting to the common PCI write handler.
2018-02-04 18:17:28 +00:00
Volker Ruppert
87145baf61 Rewrite of the PCI base address (BAR) handling to reduce code duplication.
- Added new structure bx_pci_bar_t that contains all parameters related to the
  PCI BARs (type, size, address and r/w handlers).
- Added new methods init_bar_io() and init_bar_mem() to set up the new structure
  in the pci device init code.
- Added new method pci_write_handler_common() to handle writes to the normal
  BARs and the ROM BAR. Writes to other registers are forwarded to the device
  specific PCI write handlers. Removed BAR and ROM BAR handling from the
  specific code.
- Added new method pci_bar_change_notify() to execute specific code after BAR
  update (vga, ne2k).
- Moved normal BAR handling to method after_restore_pci_state().
- Store pointer to PCI device name in bx_pci_device_c and use it for i/o setup.
2018-02-04 09:41:50 +00:00
Volker Ruppert
26314fb8b7 Implemented basic DDC support for the Bochs VBE adapter.
TODO: Update both Bochs VBE and Cirrus version of the LGPL'd VGABIOS to return
the EDID using this feature.
2018-01-26 09:37:26 +00:00
Stanislav Shwartsman
7bdcc826d7 fixed ambiguous function definition 2018-01-23 19:08:23 +00:00
Volker Ruppert
5154285270 Some work on the Voodoo Banshee emulation.
- Added support for stippled lines.
- Fixed return values of the I2C interface with no VMI/decoder connected.
- Added some comments about current status of the Banshee code.
2018-01-19 20:58:06 +00:00
Volker Ruppert
e647f7b120 Implemented basic DDC support.
- Basic I2C implementation for DDC2B support.
- Added VESA EDID structure (values from a patch for the LGPL'd VGABIOS).
- Windows now detecting plug&play monitor "Bochs Screen" if an original VGABIOS
  image is used (Cirrus PCI / Voodoo Banshee).
- TODO: Add this feature in the Cirrus version of the LGPL'd VGABIOS.
2018-01-14 18:44:28 +00:00
Volker Ruppert
1f2d9ca668 Added DDC stub for the Cirrus and Voodoo Banshee display adapters (when ready,
this code should return the VESA EDID for the Bochs plug&play monitor).
2018-01-11 19:02:08 +00:00
Volker Ruppert
5903673b3d Two small changes in the Voodoo Banshee emulation.
- More accurate calculation of the stretch factor.
- Added support for writing the subsystem IDs in PCI space and set up default
  value in reset().
2018-01-08 20:52:23 +00:00
Volker Ruppert
23df53aae5 Voodoo Banshee: added basic screen-to-screen stretching support (using nearest
source pixel).
2018-01-06 17:27:55 +00:00
Volker Ruppert
7f321d0c20 Moved Voodoo Banshee specific code to separate file banshee.cc.
TODO: code cleanup, update workspace files.
2018-01-05 17:43:51 +00:00
Volker Ruppert
55c9bad4ef Some work on the Voodoo Banshee emulation.
- Happy new year!
- Improved pixel format conversion in host-to-screen operations.
- Rewrite of the linear framebuffer read/write code fixes icons in 16 bpp mode.
- Don't flood log file when polling the 2D status register (similar to 3D one).
- FIXME list:
  - Minor issues in all Banshee modes (e.g. forward/back buttons in explorer).
  - Display errors in 16 bpp mode after leaving 3D mode.
  - Display errors in 16 bpp mode in case debug messages are turned on (timing).
  - Voodoo2 3D demo "donut" still fails.
  - Bochs crashes on Windows host (MSVC in some cases, MSYS2 64-bit build also
    reported, but not yet reproduced.
- TODO list:
  - Remaining 2D stuff: polygon fill, stretching functions.
  - Move Banshee stuff to separate files.
  - Add Voodoo3 support (it's an improved Banshee card).
2018-01-01 19:08:16 +00:00
Volker Ruppert
6a8a204f09 Two fixes in the Voodoo Banshee emulation.
- Fixed reading from ROM in word/dword mode (SeaBIOS needs this).
- Fixed an MSVC warning.
2017-12-31 16:52:02 +00:00
Volker Ruppert
bcad3aa655 Some work on the Voodoo Banshee emulation.
- Simplified register writes from CMDFIFO using new methods in the new classes.
- Started work on reset() and continued work on save/restore support.
- Mention the Banshee model in the Bochs documentation.
2017-12-29 11:18:45 +00:00
Volker Ruppert
c505716ff1 First step of the Voodoo code restructuring. Now we have a base class
bx_voodoo_base_c that contains the shared code and the new classes
bx_voodoo_1_2_c and bx_banshee_c with the specific implementations. There are
not functional changes yet. TODO: The Banshee specific stuff could be moved to
separate files, but should still remain in the same plugin as Voodoo 1/2.
2017-12-28 09:54:22 +00:00