summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/msx/cart/ascii.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/msx/cart/ascii.cpp')
-rw-r--r--src/devices/bus/msx/cart/ascii.cpp42
1 files changed, 18 insertions, 24 deletions
diff --git a/src/devices/bus/msx/cart/ascii.cpp b/src/devices/bus/msx/cart/ascii.cpp
index 61572df0fdd..9beb17197fc 100644
--- a/src/devices/bus/msx/cart/ascii.cpp
+++ b/src/devices/bus/msx/cart/ascii.cpp
@@ -20,7 +20,7 @@ public:
protected:
// device_t implementation
virtual void device_start() override { }
- virtual void device_reset() override;
+ virtual void device_reset() override ATTR_COLD;
private:
static constexpr size_t BANK_SIZE = 0x2000;
@@ -94,7 +94,7 @@ public:
protected:
// device_t implementation
virtual void device_start() override { }
- virtual void device_reset() override;
+ virtual void device_reset() override ATTR_COLD;
private:
static constexpr size_t BANK_SIZE = 0x4000;
@@ -158,8 +158,7 @@ public:
: device_t(mconfig, MSX_CART_ASCII8_SRAM, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_rombank(*this, "rombank%u", 0U)
- , m_view2(*this, "view2")
- , m_view3(*this, "view3")
+ , m_view{ {*this, "view2"}, {*this, "view3"} }
, m_bank_mask(0)
, m_sram_select_mask(0)
{ }
@@ -169,7 +168,7 @@ public:
protected:
// device_t implementation
virtual void device_start() override { }
- virtual void device_reset() override;
+ virtual void device_reset() override ATTR_COLD;
private:
static constexpr size_t BANK_SIZE = 0x2000;
@@ -177,8 +176,7 @@ private:
void mapper_write(offs_t offset, u8 data);
memory_bank_array_creator<4> m_rombank;
- memory_view m_view2;
- memory_view m_view3;
+ memory_view m_view[2];
u8 m_bank_mask;
u8 m_sram_select_mask;
};
@@ -187,8 +185,8 @@ void msx_cart_ascii8_sram_device::device_reset()
{
for (int i = 0; i < 4; i++)
m_rombank[i]->set_entry(0);
- m_view2.select(0);
- m_view3.select(0);
+ m_view[0].select(0);
+ m_view[1].select(0);
}
std::error_condition msx_cart_ascii8_sram_device::initialize_cartridge(std::string &message)
@@ -229,12 +227,12 @@ std::error_condition msx_cart_ascii8_sram_device::initialize_cartridge(std::stri
page(1)->install_read_bank(0x4000, 0x5fff, m_rombank[0]);
page(1)->install_read_bank(0x6000, 0x7fff, m_rombank[1]);
page(1)->install_write_handler(0x6000, 0x7fff, emu::rw_delegate(*this, FUNC(msx_cart_ascii8_sram_device::mapper_write)));
- page(2)->install_view(0x8000, 0x9fff, m_view2);
- m_view2[0].install_read_bank(0x8000, 0x9fff, m_rombank[2]);
- m_view2[1].install_ram(0x8000, 0x9fff, cart_sram_region()->base());
- page(2)->install_view(0xa000, 0xbfff, m_view3);
- m_view3[0].install_read_bank(0xa000, 0xbfff, m_rombank[3]);
- m_view3[1].install_ram(0xa000, 0xbfff, cart_sram_region()->base());
+ page(2)->install_view(0x8000, 0x9fff, m_view[0]);
+ m_view[0][0].install_read_bank(0x8000, 0x9fff, m_rombank[2]);
+ m_view[0][1].install_ram(0x8000, 0x9fff, cart_sram_region()->base());
+ page(2)->install_view(0xa000, 0xbfff, m_view[1]);
+ m_view[1][0].install_read_bank(0xa000, 0xbfff, m_rombank[3]);
+ m_view[1][1].install_ram(0xa000, 0xbfff, cart_sram_region()->base());
return std::error_condition();
}
@@ -244,17 +242,13 @@ void msx_cart_ascii8_sram_device::mapper_write(offs_t offset, u8 data)
u8 bank = (offset / 0x800) & 0x03;
if (data & m_sram_select_mask)
{
- if (bank == 2)
- m_view2.select(1);
- if (bank == 3)
- m_view3.select(1);
+ if (BIT(bank, 1))
+ m_view[BIT(bank, 0)].select(1);
}
else
{
- if (bank == 2)
- m_view2.select(0);
- if (bank == 3)
- m_view3.select(0);
+ if (BIT(bank, 1))
+ m_view[BIT(bank, 0)].select(0);
m_rombank[bank]->set_entry(data & m_bank_mask);
}
@@ -280,7 +274,7 @@ public:
protected:
// device_t implementation
virtual void device_start() override { }
- virtual void device_reset() override;
+ virtual void device_reset() override ATTR_COLD;
private:
static constexpr size_t BANK_SIZE = 0x4000;