Commit graph

1,671 commits

Author SHA1 Message Date
SarahW
c598f88f67 Implement Banshee/V3 vidProcCfg half mode. Fixes low res 16 bpp modes. 2020-11-14 19:33:58 +00:00
SarahW
4683d674b6 Implement PIIX SMI gate. Fixes some issues seen on Shuttle HOT-433
when power management disabled in BIOS, which results in the BIOS
failing to initialise and relocate the SMI handler but still advertise
APM availability.
2020-11-14 19:33:58 +00:00
SarahW
a01cc90866 Tweak search range when codegen looking for start uOP for given
instruction. Fixes range when unrolling LOOP instruction pointing
to itself (which could skip initial cycle count update), fixes
Windows 98 boot on 6x86 chips.
2020-11-14 19:33:58 +00:00
SarahW
624f1cfcfc Set raw limits on LLDT & LTR instructions - Cyrix RSLDT/RSTS instructions
no longer corrupt LDT/TR limits.
2020-11-14 19:33:58 +00:00
SarahW
7f206c5484 Clear CR4 mask by default. Fixes issues when switching between CPUs
that implement CR4 and those that don't.
2020-11-14 19:33:57 +00:00
SarahW
c0bc163eaf Implement Cyrix SMM mode. 2020-11-14 19:33:57 +00:00
SarahW
8a5a0fc48c Intel flash chips respond to writes at all addresses. Fixes NVRAM errors
on VS440FX.
2020-11-14 19:33:57 +00:00
SarahW
193645a426 Add mutex to protect Voodoo swap count and pending. Should fix hangs
sometimes changing video mode on Voodoo 3.
2020-11-14 19:33:57 +00:00
SarahW
984437dfa9 Default W83877TF SuperIO to all devices disabled. Fixes FIC VA-503+ IO
port conflicts introduced following APM/ACPI implementation.
2020-11-14 19:33:57 +00:00
SarahW
038a27767a Implement APM/ACPI functionality for MVP3/VT82C586B, including soft
power off.
2020-11-14 19:33:57 +00:00
SarahW
82b1486f6b Implement APM on i430LX and SIO chipset. 2020-11-14 19:33:57 +00:00
SarahW
38cee364d3 Add basic APM functionality for PIIX/PIIX3 and i430FX, i430VX, i430HX
and i440FX chipsets.
2020-11-14 19:33:57 +00:00
SarahW
93756d3f01 SMM fixes 2020-11-14 19:33:56 +00:00
SarahW
00034c1ece Implement API to terminate current emulator session from within main
emulator thread (ie soft power off).
2020-11-14 19:33:56 +00:00
SarahW
8f04c11a76 Implement PIIX4 power management. Soft power off is currently 'implemented'
by killing the emulator.
2020-11-14 19:33:56 +00:00
SarahW
0cbbd22c88 Add emulation of System Management Mode. 2020-11-14 19:33:55 +00:00
SarahW
70ab938439 Update dest x/y at end of Banshee blitter command if required. Fixes
corruption in Windows 2000.
2020-11-14 19:33:55 +00:00
SarahW
f705fd8261 Change Voodoo 3 PCI revision from 3 to 1. 2020-11-14 19:33:55 +00:00
SarahW
9fc93833c4 Disable logging added in previous commit. 2020-11-14 19:33:55 +00:00
SarahW
826389a37a Rework Voodoo texture precalc to support non-split trilinear textures.
Fixes trilinear bugs on Voodoo 3.
2020-11-14 19:33:55 +00:00
SarahW
b40cc2b87e Implement P6 operand & address size prefix penalties. 2020-11-14 19:33:55 +00:00
SarahW
ec9ca6c97b Fix missing immediate markers in opcode_deps[] tables. 2020-11-14 19:33:54 +00:00
SarahW
6ead42d868 Fix off-by-one issue with Voodoo clipping. 2020-11-14 19:33:54 +00:00
SarahW
44433fd020 Reset Banshee/V3 2D blitter coordinates on new command start. Fixes
corruption in Winamp.
2020-11-14 19:33:54 +00:00
SarahW
a19829cf11 Add DDC / plug and play monitor support for Mach64VT2. 2020-11-14 19:33:54 +00:00
SarahW
7e2c6a5344 Add DDC/plug and play monitor support to S3 ViRGE. 2020-11-14 19:33:54 +00:00
SarahW
5eb6f4d168 Implement plug and play monitor support on Voodoo Banshee & 3. 2020-11-14 19:33:54 +00:00
SarahW
c9891895da Implement Voodoo CMDFIFO enable bit. 2020-11-14 19:33:54 +00:00
SarahW
d254f41817 Banshee/Voodoo 3 status returns busy when FIFO thread is busy, regardless
of command/cmdfifo/render thread status. Fixes some 2D races where drivers
start to write to framebuffer while (final) 2D blit command is still
running.
2020-11-14 19:33:53 +00:00
SarahW
086287809b Mark Banshee/Voodoo 3 cards as PCI. 2020-11-14 19:33:53 +00:00
SarahW
114cdd7a15 Add VIA Cyrix III CPUs. Note that this is currently limited to 500 MHz,
as Windows 98 won't boot on anything any faster than this. This is most
likely a limitation of the current timer subsystem.
2020-11-14 19:33:53 +00:00
SarahW
2b43125f79 Rename Banshee reference card to match Voodoo 3s. 2020-11-14 19:33:53 +00:00
SarahW
6df66c59fb Add Voodoo 3 emulation. 2020-11-14 19:33:53 +00:00
SarahW
2415d8ad50 Mask Banshee desktop start address correctly. 2020-11-14 19:33:52 +00:00
SarahW
52a79fbb57 Add option for Voodoo to use 4 render threads. 2020-11-14 19:33:52 +00:00
SarahW
dbb10c0894 Don't sample & filter EMU8000 voice if current volume is zero. 2020-11-14 19:33:52 +00:00
SarahW
92e0b78548 Add missing svga_render_null() function. 2020-11-14 19:33:52 +00:00
SarahW
679322882b Add missing svga_render_null() function. 2020-11-14 19:33:51 +00:00
SarahW
f6406c77e5 Add fast path in Banshee overlay render; if overlay is unfiltered and
unscaled then just write straight to destination buffer.
2020-11-14 19:33:51 +00:00
SarahW
2cf57ab8b2 If Banshee video overlay is full screen (as would be the case for
full screen 3D), don't bother rendering the desktop behind it.
2020-11-14 19:33:51 +00:00
SarahW
3e5e519d10 Implement dirty updating on Banshee 16bpp tiled modes 2020-11-14 19:33:51 +00:00
SarahW
e761045e40 Remove unused variables in Banshee. 2020-11-14 19:33:51 +00:00
SarahW
1900499ace Fix "effective clockspeed" display when using Banshee. 2020-11-14 19:33:51 +00:00
SarahW
6a09e9636c Disable a lot of dynarec sanity checks in release builds. 2020-11-14 19:33:51 +00:00
SarahW
25fe224ea9 Add dynarec optimisation for UOP_MOV_IMM, to avoid register allocation
if the destination register won't be immediately used again.
2020-11-14 19:33:50 +00:00
SarahW
0d7103368a Add register rename optimisation to dynarec to eliminate some redundant
UOP_MOVs.
2020-11-14 19:33:50 +00:00
SarahW
cccaf86fd3 Mark some exceptions (mainly v86 related) as 'expected', meaning they
won't cause a code block deletion. This speeds up some v86 code due
to a reduction in code block churning.
2020-11-14 19:33:50 +00:00
SarahW
5a94c78cbb Split up exec386_dynarec() a bit. 2020-11-14 19:33:50 +00:00
SarahW
eb524e6f12 Move trap handling out of main dynarec loop. 2020-11-14 19:33:50 +00:00
SarahW
24d8176594 Reset P6 current ifetch_length on start of code block and on decoder
flush.
2020-11-14 19:33:49 +00:00