Commit graph

1,620 commits

Author SHA1 Message Date
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
SarahW
4fd7305d1d Limit P6 pipeline throughput to 3 uOPs/cycle 2020-11-14 19:33:02 +00:00
SarahW
21dbd868e1 Add initial P6 timing model. Currently only basic decoder limits
(4-1-1 rule and 16-byte limit) have been implemented.
2020-11-14 19:33:02 +00:00
SarahW
cf33ab6c39 Add initial implementation of Intel VS440FX motherboard.
As part of this, add dummy Pentium Pro emulation, as well as Intel 440FX
chipset, PC87307 SuperIO and Intel 28FB200BX-T Flash.
2020-11-14 19:33:01 +00:00
SarahW
602d6f1ce6 Add VHD hard disc image support. Patch from shermanp. 2020-11-14 19:12:07 +00:00
SarahW
d1021b5b6b SÂ3: implement RCBASE/DSTBASE, treat clip rectangle as unsigned.
Patch from twilen.
2020-11-14 15:34:27 +00:00
SarahW
87941f2903 Added Kasan Hangulmadang-16 emulation. Patch from Greatpsycho. 2020-11-14 14:20:37 +00:00
SarahW
ed30e17128 Implement VGA byte panning and cursor skew. Patch from Greatpsycho. 2020-11-14 13:38:07 +00:00
SarahW
9bdbcc18c0 Added Samsung SPC-6000A and SPC-6033P. Patch from Greatpsycho. 2020-11-14 12:25:36 +00:00
SarahW
2efda3598b Trident TVGA8900D appears to implement port 0x3db as an alternative
clock select. Fixes pixel clocks & refresh rates on this card.
2020-10-02 17:21:41 +01:00
SarahW
264cfc3a12 Add Trident TVGA9000B emulation. 2020-10-02 17:21:12 +01:00
SarahW
7d4bc7237c Add Compaq Deskpro emulation. 2020-09-30 21:31:33 +01:00
SarahW
9b737f65b1 Fix warnings when compiling codegen_*.c
Patch from davefiddes. Original commit message :

This fixes the following warnings:

codegen_allocator.c:
 - implict function declaration of rand() due to missing stdlib.h

codegen_backend_x86-64.c:
 - implict function declaration of malloc() due to missing stdlib.h
 - unused variables in codegen_backend_init()
 - invalid typecast in use of host_x86_CALL()

codegen_backend_x86-64-uop.c:
 - Remove unused variable declarations in codegen_CALL_FUNC_RESULT(),
   codegen_LOAD_SEG(), codegen_OR_IMM(), codegen_XOR() and codegen_XOR_IMM()
 - Move debug only variable declarations under the debug conditional define in
   codegen_CALL_FUNC_RESULT(), codegen_LOAD_SEG(), codegen_MEM_LOAD_SINGLE(),
   codegen_MEM_LOAD_DOUBLE(), codegen_MEM_STORE_SINGLE(),
   codegen_MEM_STORE_DOUBLE()

codegen_reg.c:
 - Change (int) typecasts to the correct (intptr_t) for small values stored
   in a pointer. This fixes a series of 64-bit compilation warnings.

Tests:
 - Build with no warnings on Fedora 32 with gcc 10.1
 - Boot a Win98 machine with dynamic compilation enabled
2020-07-14 19:54:15 +01:00
SarahW
b5bc47ea2f Fix buffer overflow warnings in OpenGL 3.0 video display file handling
Patch from davefiddes. Original commit message :

This fixes issues reported by gcc 10 with the size of various filename buffers
when concatenating strings into them.

Tests:
 - Build cleanly with gcc 10
 - Run a Pentium MMX Win98 machine and use custom GLSLP shader
2020-07-14 19:42:20 +01:00
SarahW
a52066c75a Fix unused variable in vid_voodoo_codegen_x86-64.h
Patch from davefiddes. Original commit message :

Remove several unused variable references which look like they were required for
earlier versions of the code.

Tests:
 - Clean build on Fedora 32 with gcc 10.1
2020-07-14 19:36:02 +01:00
SarahW
9441cd9446 scamp.c: Fix 64-bit integer-as-pointer use for bank number warning
Patch from davefiddes. Original commit message :

The bank number is stored in a pointer value but is used exclusively as a
bank number integer reference. To do this safely it needs to be an intptr_t.
2020-07-14 19:33:06 +01:00
SarahW
e3fd8698df Remove faulty cyrix special register read access
Patch from davefiddes. Original commit message :

GCC 10.1 reports this line as being logically always false so will never run.
On inspection it may be that this was intended to be:

   if ((cyrix_addr & 0xf0) == 0xc0) return 0xff;

According to the IBM 6X86MX Microprocessor Databook
(http://datasheets.chipdb.org/IBM/x86/6x86MX/mx_full.pdf) this would correspond
to the Address Region 0 - 3 registers but omit Address Region 4 - 7 registers
which doesn't seem to make a lot of sense.

Delete the code as the default response from the function is to return 0xff
and this is what its behviour up until now has been.
2020-07-14 19:30:19 +01:00