diff options
Diffstat (limited to 'src/devices/bus/snes/bsx.h')
-rw-r--r-- | src/devices/bus/snes/bsx.h | 96 |
1 files changed, 53 insertions, 43 deletions
diff --git a/src/devices/bus/snes/bsx.h b/src/devices/bus/snes/bsx.h index 677b81808dc..926959a7b32 100644 --- a/src/devices/bus/snes/bsx.h +++ b/src/devices/bus/snes/bsx.h @@ -1,45 +1,22 @@ // license:BSD-3-Clause // copyright-holders:Fabio Priuli -#ifndef __SNS_BSX_H -#define __SNS_BSX_H +#ifndef MAME_BUS_SNES_BSX_H +#define MAME_BUS_SNES_BSX_H + +#pragma once #include "snes_slot.h" #include "rom.h" #include "rom21.h" -class BSX_base -{ -public: - BSX_base(running_machine &machine); - running_machine &machine() const { return m_machine; } - - void init(); - uint8_t read(uint32_t offset); - void write(uint32_t offset, uint8_t data); - -private: - // regs - uint8_t regs[0x18]; // 0x2188-0x219f - - // counter + clock - uint8_t r2192_counter; - uint8_t r2192_hour, r2192_minute, r2192_second; - - running_machine& m_machine; -}; - // ======================> sns_rom_bsx_device class sns_rom_bsx_device : public sns_rom_device { public: // construction/destruction - sns_rom_bsx_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); sns_rom_bsx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; // additional reading and writing @@ -50,8 +27,38 @@ public: virtual DECLARE_READ8_MEMBER(chip_read) override; virtual DECLARE_WRITE8_MEMBER(chip_write) override; +protected: + class bsx_base + { + public: + bsx_base(running_machine &machine); + running_machine &machine() const { return m_machine; } + + void init(); + uint8_t read(uint32_t offset); + void write(uint32_t offset, uint8_t data); + + private: + // regs + uint8_t regs[0x18]; // 0x2188-0x219f + + // counter + clock + uint8_t r2192_counter; + uint8_t r2192_hour, r2192_minute, r2192_second; + + running_machine& m_machine; + }; + + sns_rom_bsx_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + void access_update(); + // base regs - std::unique_ptr<BSX_base> m_base_unit; + std::unique_ptr<bsx_base> m_base_unit; // cart regs uint8_t m_cart_regs[16]; @@ -61,8 +68,6 @@ public: uint8_t access_50_5f; // 1 = NOTHING, 0 = PRAM uint8_t access_60_6f; // 1 = PRAM, 0 = NOTHING uint8_t rom_access; // 2 = HiROM, 1 = LoROM, 0 = PRAM - void access_update(); - uint8_t m_pram[0x80000]; @@ -78,14 +83,16 @@ public: // construction/destruction sns_rom_bsxlo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides - virtual void device_start() override; virtual machine_config_constructor device_mconfig_additions() const override; // additional reading and writing virtual DECLARE_READ8_MEMBER(read_l) override; virtual DECLARE_READ8_MEMBER(read_h) override; +protected: + // device-level overrides + virtual void device_start() override; + private: required_device<sns_bsx_cart_slot_device> m_slot; }; @@ -98,14 +105,16 @@ public: // construction/destruction sns_rom_bsxhi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides - virtual void device_start() override; virtual machine_config_constructor device_mconfig_additions() const override; // additional reading and writing virtual DECLARE_READ8_MEMBER(read_l) override; virtual DECLARE_READ8_MEMBER(read_h) override; +protected: + // device-level overrides + virtual void device_start() override; + private: required_device<sns_bsx_cart_slot_device> m_slot; }; @@ -119,10 +128,6 @@ public: // construction/destruction sns_rom_bsmempak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - // additional reading and writing virtual DECLARE_READ8_MEMBER(read_l) override; virtual DECLARE_READ8_MEMBER(read_h) override; @@ -131,6 +136,11 @@ public: // virtual DECLARE_READ8_MEMBER(chip_read); // virtual DECLARE_WRITE8_MEMBER(chip_write); +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + // flash regs uint32_t m_command; uint8_t m_write_old; @@ -143,9 +153,9 @@ public: // device type definition -extern const device_type SNS_ROM_BSX; -extern const device_type SNS_LOROM_BSX; -extern const device_type SNS_HIROM_BSX; -extern const device_type SNS_BSMEMPAK; +DECLARE_DEVICE_TYPE(SNS_ROM_BSX, sns_rom_bsx_device) +DECLARE_DEVICE_TYPE(SNS_LOROM_BSX, sns_rom_bsxlo_device) +DECLARE_DEVICE_TYPE(SNS_HIROM_BSX, sns_rom_bsxhi_device) +DECLARE_DEVICE_TYPE(SNS_BSMEMPAK, sns_rom_bsmempak_device) -#endif +#endif // MAME_BUS_SNES_BSX_H |