diff options
author | 2025-02-21 06:25:13 -0300 | |
---|---|---|
committer | 2025-02-21 10:25:13 +0100 | |
commit | 123826d046486145148b00e5ef14d1553d91d1db (patch) | |
tree | 1f86f986aef5c95a73199e3aea99fe0488faa502 | |
parent | 530bfd4d734548307bcff0a9218a9bddb67f9033 (diff) |
[kn5000] Initial portions of dumps of the subcpu boot rom (#13386)
* [kn5000] Initial portions of dumps of the subcpu boot rom
* [kn5000] Invert the state of the subcpu reset line
* [kn5000] subcpu boot rom (currently marked as BAD_DUMP)
-rw-r--r-- | src/mame/matsushita/kn5000.cpp | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/src/mame/matsushita/kn5000.cpp b/src/mame/matsushita/kn5000.cpp index d6678bdad5b..709da7a3675 100644 --- a/src/mame/matsushita/kn5000.cpp +++ b/src/mame/matsushita/kn5000.cpp @@ -161,17 +161,14 @@ void kn5000_state::subcpu_mem(address_map &map) // There seems to also be devices at 110000, 130000 and 1e0000 map(0x000000, 0x0fffff).ram(); // 1Mbyte = 2 * 4Mbit DRAMs @ IC28, IC29 + //map(0x110000, 0x11????).rw(FUNC(kn5000_state::tone_generator_r), FUNC(kn5000_state::tone_generator_w)); // @ IC303 map(0x120000, 0x12ffff).r(m_subcpu_latch, FUNC(generic_latch_8_device::read)); // @ IC22 map(0x120000, 0x12ffff).w(m_maincpu_latch, FUNC(generic_latch_8_device::write)); // @ IC23 - //map(0x??????, 0x??????).rw(FUNC(kn5000_state::tone_generator_r), FUNC(kn5000_state::tone_generator_w)); // @ IC303 - //map(0x??????, 0x??????).rw(FUNC(kn5000_state::dsp1_r), FUNC(kn5000_state::dsp1_w)); // @ IC311 - - // This is not necessarily correct. - // Just silencing oslog messages for the subcpu while we don't have a proper ROM dump. - map(0xfe0000, 0xffffff).rom().region("mask", 0); // 1Mbit MASK ROM @ IC30 + //map(0x130000, 0x13????).rw(FUNC(kn5000_state::dsp1_r), FUNC(kn5000_state::dsp1_w)); // @ IC311 + map(0xfe0000, 0xffffff).rom().region("subcpu", 0); // 1Mbit MASK ROM @ IC30 //Note: - // DSP2 @ IC302 uses a serial bus + // DSP2 @ IC302 uses a serial #0 pins but I think it is bitbanging those pins. } static void kn5000_floppies(device_slot_interface &device) @@ -661,7 +658,7 @@ void kn5000_state::kn5000(machine_config &config) // MAINCPU PORT A: // bit 0 (output) = sub_cpu ~RESET / SRST m_maincpu->porta_write().set([this] (u8 data) { - m_subcpu->set_input_line(INPUT_LINE_RESET, BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE); + m_subcpu->set_input_line(INPUT_LINE_RESET, BIT(data, 0) ? CLEAR_LINE : ASSERT_LINE); }); // MAINCPU PORT C: @@ -836,15 +833,8 @@ ROM_START(kn5000) ROMX_LOAD("kn5000_subprogram_v140.rom", 0x000000, 0x030000, CRC(d9a537aa) SHA1(b7f471522ab3125e5eb42c7368d57a56084ce32a), ROM_BIOS(5)) // v5 ROMX_LOAD("kn5000_subprogram_v139.rom", 0x000000, 0x030000, NO_DUMP, ROM_BIOS(6)) // v4 - ROM_REGION16_LE(0x20000, "mask", 0) // subcpu boot rom - ROM_LOAD("kn5000_mask_rom.ic30", 0x00000, 0x20000, NO_DUMP) - // hack to keep the CPU from touching SFRs arbitrarily while we do not have a proper ROM dump: - ROM_FILL(0x000000, 1, 0x68) // 68 fe = infinite loop - ROM_FILL(0x000001, 1, 0xfe) - ROM_FILL(0x01ff00, 1, 0x00) // RESET vector = 0x00fe0000 - ROM_FILL(0x01ff01, 1, 0x00) - ROM_FILL(0x01ff02, 1, 0xfe) - ROM_FILL(0x01ff03, 1, 0x00) + ROM_REGION16_LE(0x20000, "subcpu", 0) + ROM_LOAD("kn5000_subcpu_boot.ic30", 0x00000, 0x20000, BAD_DUMP CRC(a45ceb77) SHA1(d29429a9a1ef7a718fa88c1aa38d0f7238ba5d94)) // Ranges fe0800-ff7800 and ff9800-fff000 not dumped yet. Assumed here as being filled with 0xFF. ROM_REGION16_LE(0x200000, "table_data", 0) ROM_LOAD32_WORD("kn5000_table_data_rom_even.ic3", 0x000000, 0x100000, CRC(b6f0becd) SHA1(1fd2604236b8d12ea7281fad64d72746eb00c525)) |