// license:BSD-3-Clause // copyright-holders:etabeta #ifndef __ASTROCADE_ROM_H #define __ASTROCADE_ROM_H #include "slot.h" // ======================> astrocade_rom_device class astrocade_rom_device : public device_t, public device_astrocade_cart_interface { public: // construction/destruction astrocade_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); astrocade_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // device-level overrides virtual void device_start() {} virtual void device_reset() {} // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); }; // ======================> astrocade_rom_256k_device class astrocade_rom_256k_device : public astrocade_rom_device { public: // construction/destruction astrocade_rom_256k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); virtual void device_start(); virtual void device_reset(); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); private: UINT8 m_base_bank; }; // ======================> astrocade_rom_512k_device class astrocade_rom_512k_device : public astrocade_rom_device { public: // construction/destruction astrocade_rom_512k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); virtual void device_start(); virtual void device_reset(); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); private: UINT8 m_base_bank; }; // device type definition extern const device_type ASTROCADE_ROM_STD; extern const device_type ASTROCADE_ROM_256K; extern const device_type ASTROCADE_ROM_512K; #endif