Commit graph

1,612 commits

Author SHA1 Message Date
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
SarahW
7570ba4271 Add numeric-keypad alternatives to CTRL-ALT-END/PGUP/PGDN shortcuts.
Patch from tigerforce.
2020-07-14 19:17:25 +01:00
SarahW
bb7dff751e Enable shadow RAM control at A0000-BFFFF on CS8230 chipset (ECS 386/32).
Patch from Greatpsycho.
2020-07-14 19:07:02 +01:00
SarahW
1f63723d9d Add -fcommon to configure.ac. Should fix building on GCC 10.x. 2020-06-20 18:40:53 +01:00
SarahW
c49fcff413 Update autoconf version to v16. 2020-04-19 16:30:54 +01:00
SarahW
d0c7ea56a7 Update version number to v16. 2020-04-19 15:50:51 +01:00
SarahW
adfda61a2f Initialise AT keyboard scancode set properly on reset. 2020-04-18 17:13:24 +01:00
SarahW
bc42a068c0 Don't require gd5434.bin for Itautec Infoway Multimidia; it isn't currently used. 2020-04-18 17:12:58 +01:00
SarahW
d0ea349f3f Some readme.txt updating and reformatting. 2020-04-18 17:12:15 +01:00