mirror of
https://github.com/holub/mame
synced 2025-05-06 22:35:43 +03:00
electron_rombox: Use required_device_array (nw)
This commit is contained in:
parent
08588682d4
commit
fa469fe16c
@ -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)
|
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_t(mconfig, ELECTRON_ROMBOX, tag, owner, clock),
|
||||||
device_electron_expansion_interface(mconfig, *this),
|
device_electron_expansion_interface(mconfig, *this),
|
||||||
m_rom1(*this, "rom1"),
|
m_rom(*this, "rom%u", 1),
|
||||||
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_option(*this, "OPTION")
|
m_option(*this, "OPTION")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -118,42 +111,19 @@ void electron_rombox_device::device_reset()
|
|||||||
{
|
{
|
||||||
std::string region_tag;
|
std::string region_tag;
|
||||||
memory_region *tmp_reg;
|
memory_region *tmp_reg;
|
||||||
int rom_base;
|
|
||||||
|
|
||||||
rom_base = 4;
|
int rom_base = (m_option->read() & 0x04) ? 0 : 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_rom[i] && (tmp_reg = memregion(region_tag.assign(m_rom[i]->tag()).append(GENERIC_ROM_REGION_TAG).c_str())))
|
||||||
}
|
{
|
||||||
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(4 + i, tmp_reg->base());
|
||||||
{
|
}
|
||||||
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_rom[i + 4] && (tmp_reg = memregion(region_tag.assign(m_rom[i + 4]->tag()).append(GENERIC_ROM_REGION_TAG).c_str())))
|
||||||
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 + i, tmp_reg->base());
|
||||||
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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,23 +37,16 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
image_init_result load_rom(device_image_interface &image, generic_slot_device *slot);
|
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(rom1_load) { return load_rom(image, m_rom[0]); }
|
||||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom2_load) { return load_rom(image, m_rom2); }
|
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_rom3); }
|
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_rom4); }
|
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_rom5); }
|
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_rom6); }
|
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_rom7); }
|
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_rom8); }
|
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom8_load) { return load_rom(image, m_rom[7]); }
|
||||||
|
|
||||||
required_device<generic_slot_device> m_rom1;
|
required_device_array<generic_slot_device, 8> m_rom;
|
||||||
required_device<generic_slot_device> m_rom2;
|
|
||||||
required_device<generic_slot_device> m_rom3;
|
|
||||||
required_device<generic_slot_device> m_rom4;
|
|
||||||
required_device<generic_slot_device> m_rom5;
|
|
||||||
required_device<generic_slot_device> m_rom6;
|
|
||||||
required_device<generic_slot_device> m_rom7;
|
|
||||||
required_device<generic_slot_device> m_rom8;
|
|
||||||
required_ioport m_option;
|
required_ioport m_option;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -96,10 +96,10 @@ MACHINE_CONFIG_MEMBER( electron_romboxp_device::device_add_mconfig )
|
|||||||
MCFG_GENERIC_LOAD(electron_romboxp_device, rom4_load)
|
MCFG_GENERIC_LOAD(electron_romboxp_device, rom4_load)
|
||||||
|
|
||||||
/* cartridges */
|
/* cartridges */
|
||||||
MCFG_GENERIC_CARTSLOT_ADD("cart_sk1", generic_plain_slot, "electron_cart") // ROM SLOT 2/3
|
MCFG_GENERIC_CARTSLOT_ADD("cart1", generic_plain_slot, "electron_cart") // ROM SLOT 0/1
|
||||||
MCFG_GENERIC_LOAD(electron_romboxp_device, electron_cart_sk1)
|
MCFG_GENERIC_LOAD(electron_romboxp_device, cart1_load)
|
||||||
MCFG_GENERIC_CARTSLOT_ADD("cart_sk2", generic_plain_slot, "electron_cart") // ROM SLOT 0/1
|
MCFG_GENERIC_CARTSLOT_ADD("cart2", generic_plain_slot, "electron_cart") // ROM SLOT 2/3
|
||||||
MCFG_GENERIC_LOAD(electron_romboxp_device, electron_cart_sk2)
|
MCFG_GENERIC_LOAD(electron_romboxp_device, cart2_load)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
const tiny_rom_entry *electron_romboxp_device::device_rom_region() const
|
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_t(mconfig, ELECTRON_ROMBOXP, tag, owner, clock),
|
||||||
device_electron_expansion_interface(mconfig, *this),
|
device_electron_expansion_interface(mconfig, *this),
|
||||||
m_exp_rom(*this, "exp_rom"),
|
m_exp_rom(*this, "exp_rom"),
|
||||||
m_rom1(*this, "rom1"),
|
m_rom(*this, "rom%u", 1),
|
||||||
m_rom2(*this, "rom2"),
|
m_cart(*this, "cart%u", 1),
|
||||||
m_rom3(*this, "rom3"),
|
|
||||||
m_rom4(*this, "rom4"),
|
|
||||||
m_cart_sk1(*this, "cart_sk1"),
|
|
||||||
m_cart_sk2(*this, "cart_sk2"),
|
|
||||||
m_centronics(*this, "centronics"),
|
m_centronics(*this, "centronics"),
|
||||||
m_cent_data_out(*this, "cent_data_out"),
|
m_cent_data_out(*this, "cent_data_out"),
|
||||||
m_option(*this, "OPTION")
|
m_option(*this, "OPTION")
|
||||||
@ -154,30 +150,20 @@ void electron_romboxp_device::device_reset()
|
|||||||
memory_region *tmp_reg;
|
memory_region *tmp_reg;
|
||||||
|
|
||||||
int rom_base = (m_option->read() & 0x02) ? 4 : 12;
|
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_rom[i] && (tmp_reg = memregion(region_tag.assign(m_rom[i]->tag()).append(GENERIC_ROM_REGION_TAG).c_str())))
|
||||||
}
|
{
|
||||||
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 + i, tmp_reg->base());
|
||||||
{
|
}
|
||||||
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_cart_sk2 && (tmp_reg = memregion(region_tag.assign(m_cart_sk2->tag()).append(GENERIC_ROM_REGION_TAG).c_str())))
|
for (int i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
machine().root_device().membank("bank2")->configure_entries(0, 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())))
|
||||||
}
|
{
|
||||||
if (m_cart_sk1 && (tmp_reg = memregion(region_tag.assign(m_cart_sk1->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_entries(2, 2, tmp_reg->base(), 0x4000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
machine().root_device().membank("bank2")->configure_entry(12, memregion("exp_rom")->base());
|
machine().root_device().membank("bank2")->configure_entry(12, memregion("exp_rom")->base());
|
||||||
|
@ -42,22 +42,18 @@ private:
|
|||||||
DECLARE_WRITE_LINE_MEMBER(busy_w);
|
DECLARE_WRITE_LINE_MEMBER(busy_w);
|
||||||
|
|
||||||
image_init_result load_rom(device_image_interface &image, generic_slot_device *slot);
|
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(rom1_load) { return load_rom(image, m_rom[0]); }
|
||||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom2_load) { return load_rom(image, m_rom2); }
|
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_rom3); }
|
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_rom4); }
|
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);
|
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(cart1_load) { return load_cart(image, m_cart[0]); }
|
||||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(electron_cart_sk2) { return load_cart(image, m_cart_sk2); }
|
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart2_load) { return load_cart(image, m_cart[1]); }
|
||||||
|
|
||||||
required_memory_region m_exp_rom;
|
required_memory_region m_exp_rom;
|
||||||
required_device<generic_slot_device> m_rom1;
|
required_device_array<generic_slot_device, 4> m_rom;
|
||||||
required_device<generic_slot_device> m_rom2;
|
required_device_array<generic_slot_device, 2> m_cart;
|
||||||
required_device<generic_slot_device> m_rom3;
|
|
||||||
required_device<generic_slot_device> m_rom4;
|
|
||||||
required_device<generic_slot_device> m_cart_sk1;
|
|
||||||
required_device<generic_slot_device> m_cart_sk2;
|
|
||||||
required_device<centronics_device> m_centronics;
|
required_device<centronics_device> m_centronics;
|
||||||
required_device<output_latch_device> m_cent_data_out;
|
required_device<output_latch_device> m_cent_data_out;
|
||||||
required_ioport m_option;
|
required_ioport m_option;
|
||||||
|
Loading…
Reference in New Issue
Block a user