Removed the 440FX-related video hacks and properly fixed the issue by implementing the SMRAM register for the 430HX, 430VX, and 440FX chips.

This commit is contained in:
OBattler
2017-10-17 08:53:16 +02:00
parent 483ebc17d7
commit da8029ba5e
10 changed files with 15 additions and 24 deletions

View File

@@ -130,6 +130,10 @@ static void i430hx_write(int func, int addr, uint8_t val, void *priv)
if ((card_i430hx[0x5f] ^ val) & 0xf0)
i430hx_map(0xec000, 0x04000, val >> 4);
break;
case 0x72: /*SMRAM*/
if ((card_i430hx[0x72] ^ val) & 0x48)
i430hx_map(0xa0000, 0x20000, ((val & 0x48) == 0x48) ? 3 : 0);
break;
}
card_i430hx[addr] = val;
@@ -171,6 +175,7 @@ static void i430hx_reset(void)
static void i430hx_pci_reset(void)
{
i430hx_write(0, 0x59, 0x00, NULL);
i430hx_write(0, 0x72, 0x02, NULL);
}

View File

@@ -133,6 +133,10 @@ static void i430vx_write(int func, int addr, uint8_t val, void *priv)
i430vx_map(0xec000, 0x04000, val >> 4);
/* pclog("i430vx_write : PAM6 write %02X\n", val); */
break;
case 0x72: /*SMRAM*/
if ((card_i430vx[0x72] ^ val) & 0x48)
i430vx_map(0xa0000, 0x20000, ((val & 0x48) == 0x48) ? 3 : 0);
break;
}
card_i430vx[addr] = val;
@@ -174,6 +178,7 @@ static void i430vx_reset(void)
static void i430vx_pci_reset(void)
{
i430vx_write(0, 0x59, 0x00, NULL);
i430vx_write(0, 0x72, 0x02, NULL);
}

View File

@@ -130,6 +130,10 @@ static void i440fx_write(int func, int addr, uint8_t val, void *priv)
if ((card_i440fx[0x5f] ^ val) & 0xf0)
i440fx_map(0xec000, 0x04000, val >> 4);
break;
case 0x72: /*SMRAM*/
if ((card_i440fx[0x72] ^ val) & 0x48)
i440fx_map(0xa0000, 0x20000, ((val & 0x48) == 0x48) ? 3 : 0);
break;
}
card_i440fx[addr] = val;
@@ -175,6 +179,7 @@ static void i440fx_reset(void)
static void i440fx_pci_reset(void)
{
i440fx_write(0, 0x59, 0x00, NULL);
i440fx_write(0, 0x72, 0x02, NULL);
}