From fa469fe16c8f476b255eeb3fb80efab92f2a0af0 Mon Sep 17 00:00:00 2001 From: Nigel Barnes Date: Fri, 12 Jan 2018 18:43:33 +0000 Subject: electron_rombox: Use required_device_array (nw) --- src/devices/bus/electron/rombox.cpp | 54 ++++++++---------------------------- src/devices/bus/electron/rombox.h | 27 +++++++----------- src/devices/bus/electron/romboxp.cpp | 46 +++++++++++------------------- src/devices/bus/electron/romboxp.h | 20 ++++++------- 4 files changed, 46 insertions(+), 101 deletions(-) diff --git a/src/devices/bus/electron/rombox.cpp b/src/devices/bus/electron/rombox.cpp index 701e9640aa6..6622784d731 100644 --- a/src/devices/bus/electron/rombox.cpp +++ b/src/devices/bus/electron/rombox.cpp @@ -89,14 +89,7 @@ MACHINE_CONFIG_END electron_rombox_device::electron_rombox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ELECTRON_ROMBOX, tag, owner, clock), device_electron_expansion_interface(mconfig, *this), - m_rom1(*this, "rom1"), - m_rom2(*this, "rom2"), - m_rom3(*this, "rom3"), - m_rom4(*this, "rom4"), - m_rom5(*this, "rom5"), - m_rom6(*this, "rom6"), - m_rom7(*this, "rom7"), - m_rom8(*this, "rom8"), + m_rom(*this, "rom%u", 1), m_option(*this, "OPTION") { } @@ -118,42 +111,19 @@ void electron_rombox_device::device_reset() { std::string region_tag; memory_region *tmp_reg; - int rom_base; - rom_base = 4; - if (m_rom1 && (tmp_reg = memregion(region_tag.assign(m_rom1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) + int rom_base = (m_option->read() & 0x04) ? 0 : 12; + for (int i = 0; i < 4; i++) { - machine().root_device().membank("bank2")->configure_entry(rom_base + 0, tmp_reg->base()); - } - if (m_rom2 && (tmp_reg = memregion(region_tag.assign(m_rom2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 1, tmp_reg->base()); - } - if (m_rom3 && (tmp_reg = memregion(region_tag.assign(m_rom3->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 2, tmp_reg->base()); - } - if (m_rom4 && (tmp_reg = memregion(region_tag.assign(m_rom4->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 3, tmp_reg->base()); - } - - rom_base = (m_option->read() & 0x04) ? 0 : 12; - if (m_rom5 && (tmp_reg = memregion(region_tag.assign(m_rom5->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 0, tmp_reg->base()); - } - if (m_rom6 && (tmp_reg = memregion(region_tag.assign(m_rom6->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 1, tmp_reg->base()); - } - if (m_rom7 && (tmp_reg = memregion(region_tag.assign(m_rom7->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 2, tmp_reg->base()); - } - if (m_rom8 && (tmp_reg = memregion(region_tag.assign(m_rom8->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 3, tmp_reg->base()); + if (m_rom[i] && (tmp_reg = memregion(region_tag.assign(m_rom[i]->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) + { + machine().root_device().membank("bank2")->configure_entry(4 + i, tmp_reg->base()); + } + + if (m_rom[i + 4] && (tmp_reg = memregion(region_tag.assign(m_rom[i + 4]->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) + { + machine().root_device().membank("bank2")->configure_entry(rom_base + i, tmp_reg->base()); + } } } diff --git a/src/devices/bus/electron/rombox.h b/src/devices/bus/electron/rombox.h index bde3ae0d3f7..694f8d0d17d 100644 --- a/src/devices/bus/electron/rombox.h +++ b/src/devices/bus/electron/rombox.h @@ -37,23 +37,16 @@ protected: private: image_init_result load_rom(device_image_interface &image, generic_slot_device *slot); - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom1_load) { return load_rom(image, m_rom1); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom2_load) { return load_rom(image, m_rom2); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom3_load) { return load_rom(image, m_rom3); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom4_load) { return load_rom(image, m_rom4); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom5_load) { return load_rom(image, m_rom5); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom6_load) { return load_rom(image, m_rom6); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom7_load) { return load_rom(image, m_rom7); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom8_load) { return load_rom(image, m_rom8); } - - required_device m_rom1; - required_device m_rom2; - required_device m_rom3; - required_device m_rom4; - required_device m_rom5; - required_device m_rom6; - required_device m_rom7; - required_device m_rom8; + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom1_load) { return load_rom(image, m_rom[0]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom2_load) { return load_rom(image, m_rom[1]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom3_load) { return load_rom(image, m_rom[2]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom4_load) { return load_rom(image, m_rom[3]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom5_load) { return load_rom(image, m_rom[4]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom6_load) { return load_rom(image, m_rom[5]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom7_load) { return load_rom(image, m_rom[6]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom8_load) { return load_rom(image, m_rom[7]); } + + required_device_array m_rom; required_ioport m_option; }; diff --git a/src/devices/bus/electron/romboxp.cpp b/src/devices/bus/electron/romboxp.cpp index 32ee6185a01..3a4b90eb51d 100644 --- a/src/devices/bus/electron/romboxp.cpp +++ b/src/devices/bus/electron/romboxp.cpp @@ -96,10 +96,10 @@ MACHINE_CONFIG_MEMBER( electron_romboxp_device::device_add_mconfig ) MCFG_GENERIC_LOAD(electron_romboxp_device, rom4_load) /* cartridges */ - MCFG_GENERIC_CARTSLOT_ADD("cart_sk1", generic_plain_slot, "electron_cart") // ROM SLOT 2/3 - MCFG_GENERIC_LOAD(electron_romboxp_device, electron_cart_sk1) - MCFG_GENERIC_CARTSLOT_ADD("cart_sk2", generic_plain_slot, "electron_cart") // ROM SLOT 0/1 - MCFG_GENERIC_LOAD(electron_romboxp_device, electron_cart_sk2) + MCFG_GENERIC_CARTSLOT_ADD("cart1", generic_plain_slot, "electron_cart") // ROM SLOT 0/1 + MCFG_GENERIC_LOAD(electron_romboxp_device, cart1_load) + MCFG_GENERIC_CARTSLOT_ADD("cart2", generic_plain_slot, "electron_cart") // ROM SLOT 2/3 + MCFG_GENERIC_LOAD(electron_romboxp_device, cart2_load) MACHINE_CONFIG_END const tiny_rom_entry *electron_romboxp_device::device_rom_region() const @@ -119,12 +119,8 @@ electron_romboxp_device::electron_romboxp_device(const machine_config &mconfig, : device_t(mconfig, ELECTRON_ROMBOXP, tag, owner, clock), device_electron_expansion_interface(mconfig, *this), m_exp_rom(*this, "exp_rom"), - m_rom1(*this, "rom1"), - m_rom2(*this, "rom2"), - m_rom3(*this, "rom3"), - m_rom4(*this, "rom4"), - m_cart_sk1(*this, "cart_sk1"), - m_cart_sk2(*this, "cart_sk2"), + m_rom(*this, "rom%u", 1), + m_cart(*this, "cart%u", 1), m_centronics(*this, "centronics"), m_cent_data_out(*this, "cent_data_out"), m_option(*this, "OPTION") @@ -154,30 +150,20 @@ void electron_romboxp_device::device_reset() memory_region *tmp_reg; int rom_base = (m_option->read() & 0x02) ? 4 : 12; - if (m_rom1 && (tmp_reg = memregion(region_tag.assign(m_rom1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) + for (int i = 0; i < 4; i++) { - machine().root_device().membank("bank2")->configure_entry(rom_base + 0, tmp_reg->base()); - } - if (m_rom2 && (tmp_reg = memregion(region_tag.assign(m_rom2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 1, tmp_reg->base()); - } - if (m_rom3 && (tmp_reg = memregion(region_tag.assign(m_rom3->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 2, tmp_reg->base()); - } - if (m_rom4 && (tmp_reg = memregion(region_tag.assign(m_rom4->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entry(rom_base + 3, tmp_reg->base()); + if (m_rom[i] && (tmp_reg = memregion(region_tag.assign(m_rom[i]->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) + { + machine().root_device().membank("bank2")->configure_entry(rom_base + i, tmp_reg->base()); + } } - if (m_cart_sk2 && (tmp_reg = memregion(region_tag.assign(m_cart_sk2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) - { - machine().root_device().membank("bank2")->configure_entries(0, 2, tmp_reg->base(), 0x4000); - } - if (m_cart_sk1 && (tmp_reg = memregion(region_tag.assign(m_cart_sk1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) + for (int i = 0; i < 2; i++) { - machine().root_device().membank("bank2")->configure_entries(2, 2, tmp_reg->base(), 0x4000); + if (m_cart[i] && (tmp_reg = memregion(region_tag.assign(m_cart[i]->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) + { + machine().root_device().membank("bank2")->configure_entries(i * 2, 2, tmp_reg->base(), 0x4000); + } } machine().root_device().membank("bank2")->configure_entry(12, memregion("exp_rom")->base()); diff --git a/src/devices/bus/electron/romboxp.h b/src/devices/bus/electron/romboxp.h index 74580661dc6..ec4a9c16c00 100644 --- a/src/devices/bus/electron/romboxp.h +++ b/src/devices/bus/electron/romboxp.h @@ -42,22 +42,18 @@ private: DECLARE_WRITE_LINE_MEMBER(busy_w); image_init_result load_rom(device_image_interface &image, generic_slot_device *slot); - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom1_load) { return load_rom(image, m_rom1); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom2_load) { return load_rom(image, m_rom2); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom3_load) { return load_rom(image, m_rom3); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom4_load) { return load_rom(image, m_rom4); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom1_load) { return load_rom(image, m_rom[0]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom2_load) { return load_rom(image, m_rom[1]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom3_load) { return load_rom(image, m_rom[2]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom4_load) { return load_rom(image, m_rom[3]); } image_init_result load_cart(device_image_interface &image, generic_slot_device *slot); - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(electron_cart_sk1) { return load_cart(image, m_cart_sk1); } - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(electron_cart_sk2) { return load_cart(image, m_cart_sk2); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart1_load) { return load_cart(image, m_cart[0]); } + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart2_load) { return load_cart(image, m_cart[1]); } required_memory_region m_exp_rom; - required_device m_rom1; - required_device m_rom2; - required_device m_rom3; - required_device m_rom4; - required_device m_cart_sk1; - required_device m_cart_sk2; + required_device_array m_rom; + required_device_array m_cart; required_device m_centronics; required_device m_cent_data_out; required_ioport m_option; -- cgit v1.2.3