Commit Graph

96 Commits

Author SHA1 Message Date
TC1995
46fbb3bb9e Video related changes:
IBM/ATI 8514/A side:
Made mode switches more immediate when actually switching from VGA to 8514/A and viceversa.

Tseng ET4000AX/W32 series side:
Actually use bit 2 of index 0x3f for the horizontal blank start bit 8 instead of bit 4 (horizontal retrace start), fixes skew issues with the et4000w32i rev B. card with resolutions like 1024x768 at 15 or 16bpp and others.
2024-02-22 13:35:04 +01:00
OBattler
4c3cceec69 Fixed off by one errors in (S)VGA horizontal blanking start calculation. 2024-02-18 17:54:14 +01:00
OBattler
f3d585a1e1 Fix horizontal blanking calculation, fixes some S3 blanking excesses. 2024-02-07 00:11:02 +01:00
OBattler
481b8c8b22 Tseng improvements. 2024-01-15 18:42:32 +01:00
OBattler
ca4f5bad13 More horizontal blanking calculation fixes (and actually use blank start, not retrace start), fixes graphics cut-off on Voodoo on Windows 98 SE. 2024-01-13 00:41:45 +01:00
OBattler
cd0636ee04 Fixed horizontal retrace start and end extensions on almost every applicable card, fixes #4025. 2024-01-11 14:42:54 +01:00
Cacodemon345
8e9a2e0b79 Apply blanking extensions to more SVGA cards.
* Fix duplicated logic in vid_svga.c
* Voodoo 3/Banshee emulation now has blanking extensions applied
* S3 ViRGE and Matrox video cards as well
* Tseng ET4000-series cards as well
* Fix off-by-one error in vid_cl54xx.c

Trident cards are yet to be investigated. XGA and 8514/A are yet to be made blanking extensions compliant. Mach64, Paradise/WDC and OAK OTI cards remain as-is for now.
2024-01-11 01:48:49 +06:00
OBattler
0a8b4d061c Conflict resolution. 2024-01-10 08:59:46 +01:00
Jasmine Iwanek
506d548b38 More linting in src/video 2023-08-23 00:50:52 -04:00
TC1995
f240e8cb0c Video changes:
1. The passthrough from VGA to 8514/A and/or 8514/A to VGA no longer relies on hackish places where to switch from/to, instead, relying on port 0x3c3 of VGA doing so (though the Mach8/32 still needs some places where to manually switch from/to, mainly the MCA one when configuring the EEPROM).
2. Implemented the MCA behalf of the Mach32 and its corresponding reset function.
3. Properly implemented (more or less) true color, including 24-bit BGR rendering
4. Other fixes such as color patterns and mono patterns being more correct than before in various operating systems and in 24-bit true color.
5. Implemented the onboard Mach32 video of the IBM PS/ValuePoint P60 machine.
6. Made the onboard internal video detect when it's 8514/A compatible or not (CGA/EGA/MDA/VGA/etc.). If the former is selected, then the video monitor flag is used instead (for QT).
7. The TGUI9400 and 9440, if on VLB, now detect the right amount of memory if on 2MB.
8. Initial implementation of the ATI 68875 ramdac used by the Mach32 and made the ATI 68860 8514/A aware when selected with the Mach32AX PCI.
9. Separated the 8514/A ramdac ports from the VGA ramdac ports, allowing seamless transition from/to 8514/A/VGA.
10. Fixed a hdisp problem in the ET4000/W32 cards, where it was doubling the horizontal display in 15bpp+ graphics mode.
11. Removed the 0x3da/0x3ba port hack that was on the Mach8/32 code, relying on the (S)VGA core instead.
12. Reworked and simplified the TGUI9440 pitch register based on logging due to no documentation at all.
2023-08-12 00:00:46 +02:00
OBattler
c30d5d90b7 PCI and IRQ rework, pci.c rewritten from ground up, fixes numerous issues such as the bridge being added when the number of normal PCI devices equals the number of normal PCI slots, Windows 95 PCI operation on Intel 430NX, sharing of PCI IRQ's with non-PCI level-triggered devices, having both configuration mechanisms operating at the same time (ALi M1435), etc., and makes the code much more readable. 2023-08-07 03:04:52 +02:00
Jasmine Iwanek
01ffb60df8 SVGA hskew 2023-08-06 20:29:39 -04:00
Jasmine Iwanek
ee695e71f9 More sonarlint work 2023-07-25 17:59:22 -04:00
Jasmine Iwanek
54c52fb55c Fix several instances of uninitialized variables. 2023-07-21 13:46:08 -04:00
TC1995
01c05781e2 Tseng ET4000W32/i: corrected (in the best possible way) the mouse cursor shape (under NT) when it's at the top edges while not affecting the proper shape in other operating systems. 2023-07-14 20:46:12 +02:00
Jasmine Iwanek
d1127e68fa Even more sonarlint work 2023-06-04 23:39:14 -04:00
TC1995
247c5df801 ET4000w32/i (and non-i): Mouse cursor shape is now alright by being forced to be 128x128 and if the cursor regs (0xe2 and 0xe6) have a non-0 value in the non-i chip (or if on 15/16bpp, forcing it to 128x128 anyway).
Also fixed are the blitter patterns in 8/15/16bpp modes by re-ordering (if it's the right term) the pixels of the Y pattern coordinates (code lines are from 1165 to 1183).
And properly implemented X/Y Count control routing blitters, fixes anything that uses software Bresenham and/or polygon stuff.
2023-03-21 23:49:28 +01:00
Jasmine Iwanek
1860700eab Fix some small issues 2023-01-07 17:02:23 -05:00
Jasmine Iwanek
3fe4f75108 A bit more clang-format 2022-11-19 11:53:07 -05:00
Jasmine Iwanek
aa2c07bed2 Random header cleanups I noticed while porting things 2022-11-05 22:12:35 -04:00
Jasmine Iwanek
883e7c256a clang format in src/video (#2654) 2022-08-31 20:19:29 -03:00
Cacodemon345
8a3367ff6f Multi-monitor support (backend preparation part) 2022-07-03 01:18:23 +06:00
Alexander Babikov
eba088c692 Remove trailing whitespace + indentation consistency fixes 2022-04-14 07:10:18 +05:00
Jasmine Iwanek
d28cec126a src/video 2022-04-12 17:26:07 -04:00
Jasmine Iwanek
3b73ce330c src/video 2022-03-18 18:07:09 -04:00
Jasmine Iwanek
801f81fbda clean up device_config_t formatting 2022-02-26 23:31:28 -05:00
TC1995
1037c048b4 Sort out the ET4000/w32p cards and add a VLB/PCI videomagic revision B card variant. 2022-02-23 13:50:47 +01:00
Jasmine Iwanek
4674756664 More newline and whitespace cleanups 2022-02-20 16:26:40 -05:00
OBattler
6f2b93923c A lot of fixes - everything now seems to work properly. 2022-02-03 03:10:06 +01:00
Jess Lovelace
f18615ae87 refactored device_t and all declarations 2022-02-02 16:31:22 -05:00
TC1995
e29dafa17a Changes list 5:
Added the AT&T 2xc498 Precision RAMDAC.
Added 1MB configurations to the Cirrus Logic GD5434 as well as re-organized the memory size options of the other Cirrus cards.
Separated the et4000w32/i blitter from the standard et4000w32p blitter and properly implemented the X/Y Count route.
Added several Diamond Cirrus cards.
Added Number Nine S3 cards (868 and 968-based).
Fixed the WD90c30 1MB modes.
Re-organized the video card names.
2021-11-18 23:58:04 +01:00
TC1995
7bf6fc3844 Video changes (ET4000W32/i):
Bit 1 is of 0x3DA (read only) is apparently required to make the OS/2 Tseng ET4000W32/i drivers work fine, fixes hangs upon reaching the GUI with said drivers.
Avoid division by zero in the blitter of the ET4000W32/i under OS/2.

Video changes (PVGA):
Fixes mode changes of the PVGA1a, including the built-in video card of the Amstrad 2086/3086.
2021-10-31 19:06:16 +01:00
TC1995
61273f5c1f Video changes:
Improved the banking of the ATI 28800-5 cards (VGA Charger and VGA Wonder XL).
Improved the skew and horizontal display of some of the ET4000W32P cards as well as the cursor.
Made the Oak OTI 077 and PVGA WD90c30 cards use the Sierra 11487 (actually a clone is used in the real cards).
For the WD90c30, changed the way the hack is involved.
Reverted some changes of the S3 Vision/Trio that originally made glitches, now the glitches are gone and the accelerator renders fine.
Re-organized the Sierra 1148x RAMDAC's and added the 11486 (Mark 1).
MCA SVGA cards use the full 32-bit mapping.
2021-10-24 19:06:05 +02:00
TC1995
fd5ac14f26 Fixed scrolling anomalies in the EGA and SVGA card cores for Commander Keen to work right without glitches. 2021-07-12 22:12:27 +02:00
Daniel Gurney
f2cd3756dd Revert "Merge branch 'feature/machine_and_kb' into master"
This reverts commit 6604a29d7e, reversing
changes made to 1d7fca0abd.
2021-07-04 18:22:52 +03:00
OBattler
fd4817a87b All the current WIP work (warning: the PIT is currently using some temporary test rewrite that is going to be undone). 2021-06-29 19:11:19 +02:00
TC1995
51655552e2 Fixed a small skew issue under win95 using the ET4000/W32p in 4bpp/16 color mode. 2021-06-18 18:08:06 +02:00
TC1995
d63ce5ab82 Port of the reworked svga memory addressing, normal chain4 mapping and ma13/14 mapping for non-CGA modes.
Fixed ET4000/W32 (without letters) hardware cursor.
Fixed non-interlaced 1280x1024x8bpp Cirrus mode in the 5434.
Added a note regarding the Radius (HT209) 8bpp render.
Reworked the TGUI9440, but still WIP.
2021-05-30 01:52:43 +02:00
David Hrdlička
dfbbe08a07 rewrite the emulator to use UTF-8 internally 2021-03-30 09:46:49 +02:00
TC1995
f43284985d Tseng ET4000w32x changes:
Fixed freezes, once and for all, on win2000 (W32p).
Fixed some graphical glitches under win3.x that were caused by the FIFO (W32p).
Fixed vlb flag, now it loads the VLB rom properly (W32i).
Anything using the ICS ramdacs now has a svga->clock /= 2 in recalctimings (W32p rev c and W32/W32i).
2021-03-28 19:17:12 +02:00
TC1995
37def45e0e More skew changes, fixed the missing pixels in hdisp in 24bpp mode as well as properly organized hdisp in other bpp modes.
Clear bit 7 of attr reg 0x10 in the v7 code otherwise it would scramble the colors in 8-bit graphics mode if issued.
2021-03-25 21:46:39 +01:00
Miran Grča
92a5e09659 Merge pull request #1329 from F10Setup/master
Added the ValuePoint's on-board video
2021-03-25 21:36:46 +01:00
OBattler
a3e4e7d37a RAMDAC and hardware cursor fixes for the Cardex Tseng ET4000/W32p Rev. C. 2021-03-25 19:33:58 +01:00
F10Setup
590ab0983a Added the ValuePoint's on-board video 2021-03-25 11:01:57 +02:00
OBattler
7b22fa60d1 Cleaned up the ET4000/W32, fixed the ICS 53xx/GENDAC/SDAC RAMDAC's, and readded the Cardex ET4000/W32p Rev. C with ICS 5341 RAMDAC. 2021-03-25 06:32:10 +01:00
OBattler
52e9d06b5f And a fix to the cursor fix. 2021-03-24 22:12:46 +01:00
OBattler
18fd40f293 Fixed the hardware cursor on the ET4000w32 and ET4000w32i. 2021-03-24 22:11:36 +01:00
TC1995
1763b2fcb2 Disabled defective ics5341-based bioses (16bpp would appear purprlish even on 16bpp and on 15bpp, though their roms won't be removed) and re-enabled the stg170x-based bioses with appropriate skew fixes (for real).
Replaced the ET4000/W32 (without letters) bios with a newer one.
Added ET4000/W32i VLB.
2021-03-24 19:06:38 +01:00
TC1995
95976a2b26 Added Tseng specific variants of the GenDAC ramdac (ICS 53x1).
Fixed (at least in a more correct way) software cursor under OS/2 Warp with the s3 trio/vision drivers.
Implemented 128x128 sprite/hwcursor on the et4000w32 cards per manual.
2021-03-24 03:51:56 +01:00
TC1995
ec97408088 Fixed some regressions from the previous big et4000w32 commit.
Unified the et4000w32 blitters into one with the relative differences set.
2021-03-17 15:11:20 +01:00