More video fixes:

ATI Mach64 is temporarily unthreaded because of blitter desyncing.
ATI Mach32 now returns to ATI mode from IBM mode and vice versa more correctly.
Make the IBM 8514/A compatible poll not run if a 3D add-on card (Voodoo1/2) takes precedence (seen on a Mach32 PCI and Voodoo2 3D combo).
Finally ended the mess ups of the TGUI9440/96x0 pitch, it actually was the CRTC offset reg (SVGA CRTC 0x13) that defined it with some shifting based on the BPP.
This commit is contained in:
TC1995
2023-10-11 18:46:15 +02:00
parent 528c269cdd
commit 6913de32c5
4 changed files with 134 additions and 185 deletions

View File

@@ -117,6 +117,9 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
uint8_t o;
uint8_t index;
if (!dev && (addr >= 0x2ea) && (addr <= 0x2ed))
return;
switch (addr) {
case 0x2ea:
dev->dac_mask = val;
@@ -363,6 +366,9 @@ svga_in(uint16_t addr, void *priv)
uint8_t index;
uint8_t ret = 0xff;
if (!dev && (addr >= 0x2ea) && (addr <= 0x2ed))
return ret;
switch (addr) {
case 0x2ea:
ret = dev->dac_mask;
@@ -827,15 +833,17 @@ svga_poll(void *priv)
int ret;
int old_ma;
if (ibm8514_active && dev->on) {
ibm8514_poll(dev, svga);
return;
}
if (xga_active && xga->on) {
if ((xga->disp_cntl_2 & 7) >= 2) {
xga_poll(xga, svga);
if (!svga->override) {
if (ibm8514_active && dev->on) {
ibm8514_poll(dev, svga);
return;
}
if (xga_active && xga->on) {
if ((xga->disp_cntl_2 & 7) >= 2) {
xga_poll(xga, svga);
return;
}
}
}
if (!svga->linepos) {