Attempted fix for PS/2 Model 55SX.

This commit is contained in:
OBattler
2021-12-06 22:33:52 +01:00
parent 8ef7103c04
commit 00e00fa5c6

View File

@@ -432,6 +432,8 @@ static void model_50_write(uint16_t port, uint8_t val)
static void model_55sx_write(uint16_t port, uint8_t val) static void model_55sx_write(uint16_t port, uint8_t val)
{ {
int remap_size;
switch (port) switch (port)
{ {
case 0x100: case 0x100:
@@ -477,26 +479,26 @@ static void model_55sx_write(uint16_t port, uint8_t val)
case 0x105: case 0x105:
ps2_mca_log("Write POS3 %02x\n", val); ps2_mca_log("Write POS3 %02x\n", val);
ps2.option[3] = val; ps2.option[3] = val;
shadowbios = !(val & 0x10); shadowbios = !(val & 0x10) && !(val & 0x20);
shadowbios_write = val & 0x10; shadowbios_write = (val & 0x10) && !(val & 0x20);
if (shadowbios) if (shadowbios)
{ {
mem_set_mem_state(0xe0000, 0x20000, MEM_READ_INTERNAL | MEM_WRITE_DISABLED); mem_set_mem_state(0xe0000, 0x20000, MEM_READ_INTERNAL | MEM_WRITE_DISABLED);
mem_set_mem_state((mem_size+256) * 1024, 128 * 1024, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
mem_mapping_disable(&ps2.shadow_mapping); mem_mapping_disable(&ps2.shadow_mapping);
} }
else else
{ {
mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_INTERNAL); mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_DISABLED);
mem_set_mem_state((mem_size+256) * 1024, 128 * 1024, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
mem_mapping_enable(&ps2.shadow_mapping); mem_mapping_enable(&ps2.shadow_mapping);
} }
if ((ps2.option[1] & 1) && !(ps2.option[3] & 0x20)) remap_size = (val & 0x10) ? 384 : 256;
mem_set_mem_state(mem_size * 1024, 256 * 1024, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
if (val & 0x20)
mem_set_mem_state(mem_size * 1024, remap_size * 1024, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
else else
mem_set_mem_state(mem_size * 1024, 256 * 1024, MEM_READ_EXTANY | MEM_WRITE_EXTANY); mem_set_mem_state(mem_size * 1024, remap_size * 1024, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
flushmmucache_nopc(); flushmmucache_nopc();
break; break;