Fixed the third batch of problems.

This commit is contained in:
OBattler
2020-01-15 04:58:28 +01:00
parent af023ff5dd
commit 932ad5595a
39 changed files with 127 additions and 80 deletions

View File

@@ -668,6 +668,7 @@ static void mach64_accel_write_fifo(mach64_t *mach64, uint32_t addr, uint8_t val
case 0x118: case 0x119: case 0x11a: case 0x11b:
case 0x11e: case 0x11f:
WRITE8(addr, mach64->dst_height_width, val);
/*FALLTHROUGH*/
case 0x113:
if (((addr & 0x3ff) == 0x11b || (addr & 0x3ff) == 0x11f ||
(addr & 0x3ff) == 0x113) && !(val & 0x80))
@@ -797,6 +798,7 @@ static void mach64_accel_write_fifo(mach64_t *mach64, uint32_t addr, uint8_t val
break;
case 0x2b0: case 0x2b1:
addr += 2;
/*FALLTHROUGH*/
case 0x2b6: case 0x2b7:
WRITE8(addr, mach64->sc_top_bottom, val);
break;
@@ -1886,6 +1888,7 @@ uint8_t mach64_ext_readb(uint32_t addr, void *p)
break;
case 0x110: case 0x111:
addr += 2;
/*FALLTHROUGH*/
case 0x114: case 0x115:
case 0x118: case 0x119: case 0x11a: case 0x11b:
case 0x11e: case 0x11f:
@@ -2005,6 +2008,7 @@ uint8_t mach64_ext_readb(uint32_t addr, void *p)
break;
case 0x2b0: case 0x2b1:
addr += 2;
/*FALLTHROUGH*/
case 0x2b6: case 0x2b7:
mach64_wait_fifo_idle(mach64);
READ8(addr, mach64->sc_top_bottom);

View File

@@ -1249,7 +1249,7 @@ void et4000w32p_pci_write(int func, int addr, uint8_t val, void *p)
et4000->linearbase &= 0x00c00000;
et4000->linearbase = (et4000->pci_regs[0x13] << 24);
svga->crtc[0x30] &= 3;
svga->crtc[0x30] = ((et4000->linearbase & 0x3f000000) >> 22);
svga->crtc[0x30] |= ((et4000->linearbase & 0x3f000000) >> 22);
et4000w32p_recalcmapping(et4000);
break;

View File

@@ -112,7 +112,8 @@ static const char *pgc_err_msgs[] = {
"Stack \r",
"Too long\r",
"Area \r",
"Missing \r"
"Missing \r",
"Unknown \r"
};

View File

@@ -2076,15 +2076,9 @@ uint8_t s3_accel_in(uint16_t port, void *p)
break;
temp = s3->accel.pix_trans[1];
if ((s3->accel.multifunc[0xa] & 0xc0) == 0x80 && (s3->accel.cmd & 0x600) == 0x200 && (s3->accel.cmd & 0x100))
{
if (s3->accel.cmd & 0x1000) s3_accel_start(16, 1, 0xffffffff, 0, s3);
else s3_accel_start(16, 1, 0xffffffff, 0, s3);
}
s3_accel_start(16, 1, 0xffffffff, 0, s3);
else if ((s3->accel.cmd & 0x600) == 0x200 && (s3->accel.cmd & 0x100))
{
if (s3->accel.cmd & 0x1000) s3_accel_start(2, 1, 0xffffffff, 0xffffffff, s3);
else s3_accel_start(2, 1, 0xffffffff, 0xffffffff, s3);
}
s3_accel_start(2, 1, 0xffffffff, 0xffffffff, s3);
return temp;
case 0xe14a: case 0xe2ea:
if (!s3_cpu_dest(s3))