Commit graph

1,636 commits

Author SHA1 Message Date
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
SarahW
fb391d2484 Rewrite Voodoo triangle setup vertex selection code. Fixes missing triangles
on Banshee with some D3D games (eg Black & White, Viper Racing)
2020-11-14 19:33:49 +00:00
SarahW
1915149391 Increase Banshee revision to 3, matching my real CL Banshee card. Removes
the need for any fogTable hack, which is in any case inconsistently applied
by drivers and I think may only be needed on pre-production devices.
2020-11-14 19:33:49 +00:00
SarahW
95ccdcae5c Implement bilinear filtering on Banshee video overlay. 2020-11-14 19:33:49 +00:00
SarahW
1ebaa7c640 Banshee 2D blitter should wait for 3D to go idle before starting a
blit. Fixes text in Forsaken.
2020-11-14 19:33:49 +00:00
SarahW
9adb36ece3 Banshee status now returns busy when either of the render threads is
busy. Fixed HUD in Jedi Knight.
2020-11-14 19:33:49 +00:00
SarahW
c9bf81f599 Fix Banshee CMDFIFO base address mask. 2020-11-14 19:33:49 +00:00
SarahW
fccd59ba92 Add Banshee RGB565 undithered overlay format. Currently dithered and
undithered are handled the same.
2020-11-14 19:33:49 +00:00
SarahW
870a19f537 Don't fatal() on unknown Banshee port read/write. Fixes Windows 95
hardware detection.
2020-11-14 19:33:48 +00:00
SarahW
801e560b53 Remove duplicates from Slot 1 CPU list. 2020-11-14 19:33:48 +00:00
SarahW
93c0bc85c7 Mark Banshee mappings as external. Banshee cards now work on GA-686BX. 2020-11-14 19:33:48 +00:00
SarahW
a85f315daf The existing A-Trend Banshee card is AGP, which is not currently emulated.
Replaced with a reference SGRAM PCI card, and added a Creative SDRAM card.
2020-11-14 19:33:48 +00:00
SarahW
2212b9a470 Implement out-of-order CMDFIFO handling on Banshee. 2020-11-14 19:33:31 +00:00
SarahW
8ee4396b4c Fix race condition in Voodoo FIFO code that could cause an 'Unknown fifo
entry' error
2020-11-14 19:33:30 +00:00
SarahW
bb70f4ff0f Re-enable fog on Banshee. 2020-11-14 19:33:30 +00:00
SarahW
21a3a9acec Update Voodoo framebuffer read/write for Banshee. 2020-11-14 19:33:30 +00:00
SarahW
06a07cfcbc Fix off-by-one size error with Banshee overlay. 2020-11-14 19:33:30 +00:00
SarahW
6318624661 Banshee fog table seems to be inverted compared to other Voodoo cards
(hardware bug?). Re-enabled fog.
2020-11-14 19:33:30 +00:00
SarahW
771c5c6ba3 More Banshee host data size tweaking. 2020-11-14 19:33:30 +00:00
SarahW
3040c4e994 Additional Banshee host data size fix. 2020-11-14 19:33:30 +00:00
SarahW
d1f17cd8ae Don't flush Banshee pipeline when reading clipping registers. Fixes
severe slowdown in 3dMark2000 fill rate test.
2020-11-14 19:33:29 +00:00
SarahW
0298d0ffaf Fix uninitialised variable in Banshee texture writes. 2020-11-14 19:33:29 +00:00
SarahW
11b29c7c18 Fix Banshee host data size when source format is 1 bpp. Fixes some
bad icon masks in Windows 98.
2020-11-14 19:33:29 +00:00
SarahW
133f19fe39 Implement Banshee tiled surfaces 2020-11-14 19:33:29 +00:00
SarahW
32900491b7 Update Makefiles 2020-11-14 19:33:29 +00:00
SarahW
19a5dfa579 Added Voodoo Banshee emulation.
Known issues :
- Tiled framebuffer layout is not yet implemented. This causes horizontal
  offsets in some 2D 16bpp stuff (eg FMV in Tomb Raider 2, UI in Expendable)
- Fog is broken and currently disabled for Banshee
- Possibly at least 1 race in 2D blitter emulation
- A few things not yet emulated - overlay filters, some (rarely used) 2D
  blitter functions
2020-11-14 19:33:28 +00:00
SarahW
41238b3c85 Split vid_voodoo.c into multiple source & header files. 2020-11-14 19:33:04 +00:00
SarahW
3cbcf5f575 Optimise Voodoo FIFO processing of framebuffer / texture / register
writes. Speeds up games that write large amounts of data to the FIFO,
eg menus in Expendable.
2020-11-14 19:33:04 +00:00
SarahW
4fe71bdbed The instruction following STI is always executed, even if an interrupt
is pending. Fixes Windows 9x boot broken by SYSENTER commit.
2020-11-14 19:33:03 +00:00
SarahW
5b2087f84d Added Celeron emulation. 2020-11-14 19:33:03 +00:00
SarahW
bf68656e8f Implement CPUID cache register for Pentium Pro/II. 2020-11-14 19:33:03 +00:00
SarahW
b973755ca3 Add hintable NOPs for Pentium Pro and II. 2020-11-14 19:33:03 +00:00
SarahW
7eff4f4ba8 Add SYSENTER and SYSEXIT instructions 2020-11-14 19:33:03 +00:00
SarahW
fda3832e3a Add Gigabyte GA-686BX emulation.
As part of this, add i440BX chipset, PIIX4, and i28F002BC Flash.
2020-11-14 19:33:03 +00:00
SarahW
3c4fa0511e Add Pentium II Overdrive emulation. 2020-11-14 19:33:02 +00:00
SarahW
5ad5764500 Add P6 execution unit timing. OoO behaviour is not very faithful yet. 2020-11-14 19:33:02 +00:00