summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/msx_slot/sony08.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/msx_slot/sony08.h')
-rw-r--r--src/devices/bus/msx_slot/sony08.h27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/devices/bus/msx_slot/sony08.h b/src/devices/bus/msx_slot/sony08.h
index 74c8fd95f35..22538a74a18 100644
--- a/src/devices/bus/msx_slot/sony08.h
+++ b/src/devices/bus/msx_slot/sony08.h
@@ -15,32 +15,29 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_SONY08, msx_slot_sony08_device)
class msx_slot_sony08_device : public device_t, public msx_internal_slot_interface
{
public:
- msx_slot_sony08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_slot_sony08_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// configuration helpers
- void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
-
- virtual uint8_t read(offs_t offset) override;
- virtual void write(offs_t offset, uint8_t data) override;
+ void set_rom_start(const char *region, u32 offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
protected:
virtual void device_start() override;
- virtual void device_post_load() override;
+ virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
- void restore_banks();
-
private:
+ static constexpr size_t SRAM_SIZE = 0x4000;
+
+ template <int Bank> void bank_w(u8 data);
+
required_device<nvram_device> m_nvram;
required_memory_region m_rom_region;
- uint32_t m_region_offset;
- const uint8_t *m_rom;
- uint8_t m_selected_bank[8];
- const uint8_t *m_bank_base[8];
- uint8_t m_sram[0x4000];
-
- void map_bank(int bank);
+ memory_bank_array_creator<6> m_rombank;
+ memory_view m_view0;
+ memory_view m_view1;
+ u32 m_region_offset;
+ std::vector<u8> m_sram;
};