summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Felipe CorrĂȘa da Silva Sanches <juca@members.fsf.org>2025-02-21 06:25:13 -0300
committer GitHub <noreply@github.com>2025-02-21 10:25:13 +0100
commit123826d046486145148b00e5ef14d1553d91d1db (patch)
tree1f86f986aef5c95a73199e3aea99fe0488faa502
parent530bfd4d734548307bcff0a9218a9bddb67f9033 (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.cpp24
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))