From b6ca334e31c8406624fecb936cb044eed5ac1e90 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Wed, 13 Dec 2017 19:54:26 +1100 Subject: [PATCH] pgm2: use optional_device_array (nw) --- src/mame/drivers/pgm2.cpp | 51 ++++++++++++++++++--------------------- src/mame/includes/pgm2.h | 12 ++------- 2 files changed, 25 insertions(+), 38 deletions(-) diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp index cc53cce7b50..a439f84ee01 100644 --- a/src/mame/drivers/pgm2.cpp +++ b/src/mame/drivers/pgm2.cpp @@ -205,20 +205,20 @@ void pgm2_state::mcu_command(address_space &space, bool is_command) break; // C0-C9 commands is IC Card RW comms case 0xc0: // insert card or/and check card presence. result: F7 - ok, F4 - no card - if (m_memcard_device[arg1 & 3]->present() == -1) + if (m_memcard[arg1 & 3]->present() == -1) status = 0xf4; m_mcu_result0 = cmd; break; case 0xc1: // check ready/busy ? - if (m_memcard_device[arg1 & 3]->present() == -1) + if (m_memcard[arg1 & 3]->present() == -1) status = 0xf4; m_mcu_result0 = cmd; break; case 0xc2: // read data to shared ram for (int i = 0; i < arg3; i++) { - if (m_memcard_device[arg1 & 3]->present() != -1) - m_shareram[i + (~m_share_bank & 1) * 128] = m_memcard_device[arg1 & 3]->read(space, arg2 + i); + if (m_memcard[arg1 & 3]->present() != -1) + m_shareram[i + (~m_share_bank & 1) * 128] = m_memcard[arg1 & 3]->read(space, arg2 + i); else status = 0xf4; } @@ -227,60 +227,60 @@ void pgm2_state::mcu_command(address_space &space, bool is_command) case 0xc3: // save data from shared ram for (int i = 0; i < arg3; i++) { - if (m_memcard_device[arg1 & 3]->present() != -1) - m_memcard_device[arg1 & 3]->write(space, arg2 + i, m_shareram[i + (~m_share_bank & 1) * 128]); + if (m_memcard[arg1 & 3]->present() != -1) + m_memcard[arg1 & 3]->write(space, arg2 + i, m_shareram[i + (~m_share_bank & 1) * 128]); else status = 0xf4; } m_mcu_result0 = cmd; break; case 0xc4: // presumable read security mem (password only?) - if (m_memcard_device[arg1 & 3]->present() != -1) + if (m_memcard[arg1 & 3]->present() != -1) { - m_mcu_result1 = m_memcard_device[arg1 & 3]->read_sec(space, 1) | - (m_memcard_device[arg1 & 3]->read_sec(space, 2) << 8) | - (m_memcard_device[arg1 & 3]->read_sec(space, 3) << 16); + m_mcu_result1 = m_memcard[arg1 & 3]->read_sec(space, 1) | + (m_memcard[arg1 & 3]->read_sec(space, 2) << 8) | + (m_memcard[arg1 & 3]->read_sec(space, 3) << 16); } else status = 0xf4; m_mcu_result0 = cmd; break; case 0xc5: // write security mem - if (m_memcard_device[arg1 & 3]->present() != -1) - m_memcard_device[arg1 & 3]->write_sec(space, arg2 & 3, arg3); + if (m_memcard[arg1 & 3]->present() != -1) + m_memcard[arg1 & 3]->write_sec(space, arg2 & 3, arg3); else status = 0xf4; m_mcu_result0 = cmd; break; case 0xc6: // presumable write protection mem - if (m_memcard_device[arg1 & 3]->present() != -1) - m_memcard_device[arg1 & 3]->write_prot(space, arg2 & 3, arg3); + if (m_memcard[arg1 & 3]->present() != -1) + m_memcard[arg1 & 3]->write_prot(space, arg2 & 3, arg3); else status = 0xf4; m_mcu_result0 = cmd; break; case 0xc7: // read protection mem - if (m_memcard_device[arg1 & 3]->present() != -1) + if (m_memcard[arg1 & 3]->present() != -1) { - m_mcu_result1 = m_memcard_device[arg1 & 3]->read_prot(space, 0) | - (m_memcard_device[arg1 & 3]->read_prot(space, 1) << 8) | - (m_memcard_device[arg1 & 3]->read_prot(space, 2) << 16) | - (m_memcard_device[arg1 & 3]->read_prot(space, 3) << 24); + m_mcu_result1 = m_memcard[arg1 & 3]->read_prot(space, 0) | + (m_memcard[arg1 & 3]->read_prot(space, 1) << 8) | + (m_memcard[arg1 & 3]->read_prot(space, 2) << 16) | + (m_memcard[arg1 & 3]->read_prot(space, 3) << 24); } else status = 0xf4; m_mcu_result0 = cmd; break; case 0xc8: // write data mem - if (m_memcard_device[arg1 & 3]->present() != -1) - m_memcard_device[arg1 & 3]->write(space, arg2, arg3); + if (m_memcard[arg1 & 3]->present() != -1) + m_memcard[arg1 & 3]->write(space, arg2, arg3); else status = 0xf4; m_mcu_result0 = cmd; break; case 0xc9: // card authentication - if (m_memcard_device[arg1 & 3]->present() != -1) - m_memcard_device[arg1 & 3]->auth(arg2, arg3, m_mcu_regs[1] & 0xff); + if (m_memcard[arg1 & 3]->present() != -1) + m_memcard[arg1 & 3]->auth(arg2, arg3, m_mcu_regs[1] & 0xff); else status = 0xf4; m_mcu_result0 = cmd; @@ -481,11 +481,6 @@ void pgm2_state::machine_start() save_item(NAME(m_mcu_last_cmd)); save_item(NAME(m_shareram)); save_item(NAME(m_share_bank)); - - m_memcard_device[0] = m_memcard0; - m_memcard_device[1] = m_memcard1; - m_memcard_device[2] = m_memcard2; - m_memcard_device[3] = m_memcard3; } void pgm2_state::machine_reset() diff --git a/src/mame/includes/pgm2.h b/src/mame/includes/pgm2.h index c31ee657c4a..1447a5d6fc6 100644 --- a/src/mame/includes/pgm2.h +++ b/src/mame/includes/pgm2.h @@ -41,10 +41,7 @@ public: m_bg_palette(*this, "bg_palette"), m_tx_palette(*this, "tx_palette"), m_mcu_timer(*this, "mcu_timer"), - m_memcard0(*this, "memcard_p1"), - m_memcard1(*this, "memcard_p2"), - m_memcard2(*this, "memcard_p3"), - m_memcard3(*this, "memcard_p4") + m_memcard(*this, "memcard_p%u", 1U) { } DECLARE_READ32_MEMBER(unk_startup_r); @@ -143,12 +140,7 @@ private: required_device m_tx_palette; required_device m_mcu_timer; - optional_device m_memcard0; - optional_device m_memcard1; - optional_device m_memcard2; - optional_device m_memcard3; - pgm2_memcard_device *m_memcard_device[4]; - + optional_device_array m_memcard; }; #endif