fixed cache memory encoding for 5550-V

This commit is contained in:
Akamaki
2025-02-15 23:15:10 +09:00
parent bbc237866b
commit 5f831603e9

View File

@@ -145,7 +145,7 @@ static struct ps2_t {
static uint8_t ps2_cache[65536]; static uint8_t ps2_cache[65536];
static int ps2_cache_valid[65536 / 8]; static int ps2_cache_valid[65536 / 8];
static void mem_encoding_update(void); static void mem_encoding_update(void);
#define ENABLE_PS2_MCA_LOG 1
#ifdef ENABLE_PS2_MCA_LOG #ifdef ENABLE_PS2_MCA_LOG
int ps2_mca_do_log = ENABLE_PS2_MCA_LOG; int ps2_mca_do_log = ENABLE_PS2_MCA_LOG;
@@ -452,7 +452,7 @@ ps55_model_50v_read(uint16_t port)
} }
return val; return val;
case 0x104: case 0x104:
return ps2.option[2]; return ps2.option[2] & 0xf3;
case 0x105: case 0x105:
return ps2.option[3]; return ps2.option[3];
case 0x106: case 0x106:
@@ -1472,10 +1472,12 @@ mem_encoding_write_cached_ps55(uint16_t addr, uint8_t val, UNUSED(void *priv))
mem_mapping_disable(&ram_low_mapping); mem_mapping_disable(&ram_low_mapping);
mem_mapping_enable(&ps2.cache_mapping); mem_mapping_enable(&ps2.cache_mapping);
flushmmucache(); flushmmucache();
ps2_mca_log("mem_encoding_write: low ram mapping disabled\n");
} else { } else {
mem_mapping_disable(&ps2.cache_mapping); mem_mapping_disable(&ps2.cache_mapping);
mem_mapping_enable(&ram_low_mapping); mem_mapping_enable(&ram_low_mapping);
flushmmucache(); flushmmucache();
ps2_mca_log("mem_encoding_write: low ram mapping enabled\n");
} }
if (ps2.option[2] & 1) /* reset memstate for E0000 - E0FFFh hole */ if (ps2.option[2] & 1) /* reset memstate for E0000 - E0FFFh hole */
{ {
@@ -1906,7 +1908,7 @@ ps55_mca_board_model_50v_init()
device_add(&ps2_nvr_device); device_add(&ps2_nvr_device);
io_sethandler(0x00e0, 0x0002, mem_encoding_read_cached, NULL, NULL, mem_encoding_write_cached_ps55, NULL, NULL, NULL); io_sethandler(0x00e0, 0x0003, mem_encoding_read_cached, NULL, NULL, mem_encoding_write_cached_ps55, NULL, NULL, NULL);
ps2.mem_regs[1] = 2; ps2.mem_regs[1] = 2;
ps2.option[2] &= 0xf2; /* Bit 3-2: -Cache IDs, Bit 1: Reserved ps2.option[2] &= 0xf2; /* Bit 3-2: -Cache IDs, Bit 1: Reserved
@@ -1926,6 +1928,20 @@ ps55_mca_board_model_50v_init()
NULL); NULL);
mem_mapping_disable(&ps2.split_mapping); mem_mapping_disable(&ps2.split_mapping);
mem_mapping_add(&ps2.cache_mapping,
0,
64 * 1024,
ps2_read_cache_ram,
ps2_read_cache_ramw,
ps2_read_cache_raml,
ps2_write_cache_ram,
NULL,
NULL,
ps2_cache,
MEM_MAPPING_INTERNAL,
NULL);
mem_mapping_disable(&ps2.cache_mapping);
if (mem_size > 8192) { if (mem_size > 8192) {
/* Only 8 MB supported on planar, create a memory expansion card for the rest */ /* Only 8 MB supported on planar, create a memory expansion card for the rest */
ps2_mca_mem_fffc_init(8); ps2_mca_mem_fffc_init(8);