// license:BSD-3-Clause // copyright-holders:Fabio Priuli, Wilbert Pol #ifndef __GB_ROM_H #define __GB_ROM_H #include "gb_slot.h" // ======================> gb_rom_device class gb_rom_device : public device_t, public device_gb_cart_interface { public: // construction/destruction gb_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); gb_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // device-level overrides virtual void device_start() override { shared_start(); }; virtual void device_reset() override { shared_reset(); }; void shared_start(); void shared_reset(); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom) override; virtual DECLARE_READ8_MEMBER(read_ram) override; virtual DECLARE_WRITE8_MEMBER(write_ram) override; }; // ======================> gb_rom_tama5_device class gb_rom_tama5_device : public gb_rom_device { public: // construction/destruction gb_rom_tama5_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // device-level overrides virtual void device_start() override; virtual void device_reset() override; // reading and writing virtual DECLARE_READ8_MEMBER(read_rom) override; virtual DECLARE_READ8_MEMBER(read_ram) override; virtual DECLARE_WRITE8_MEMBER(write_ram) override; UINT16 m_tama5_data, m_tama5_addr, m_tama5_cmd; UINT8 m_regs[32]; UINT8 m_rtc_reg; }; // ======================> gb_rom_wisdom_device class gb_rom_wisdom_device : public gb_rom_device { public: // construction/destruction gb_rom_wisdom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // device-level overrides virtual void device_start() override { shared_start(); }; virtual void device_reset() override { shared_reset(); }; // reading and writing virtual DECLARE_READ8_MEMBER(read_rom) override; virtual DECLARE_WRITE8_MEMBER(write_bank) override; }; // ======================> gb_rom_yong_device class gb_rom_yong_device : public gb_rom_device { public: // construction/destruction gb_rom_yong_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // device-level overrides virtual void device_start() override { shared_start(); }; virtual void device_reset() override { shared_reset(); }; // reading and writing virtual DECLARE_READ8_MEMBER(read_rom) override; virtual DECLARE_WRITE8_MEMBER(write_bank) override; }; // ======================> gb_rom_atvrac_device class gb_rom_atvrac_device : public gb_rom_device { public: // construction/destruction gb_rom_atvrac_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // device-level overrides virtual void device_start() override { shared_start(); }; virtual void device_reset() override { shared_reset(); }; // reading and writing virtual DECLARE_READ8_MEMBER(read_rom) override; virtual DECLARE_WRITE8_MEMBER(write_bank) override; }; // ======================> gb_rom_lasama_device class gb_rom_lasama_device : public gb_rom_device { public: // construction/destruction gb_rom_lasama_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // device-level overrides virtual void device_start() override { shared_start(); }; virtual void device_reset() override { shared_reset(); }; // reading and writing virtual DECLARE_READ8_MEMBER(read_rom) override; virtual DECLARE_WRITE8_MEMBER(write_bank) override; }; // ======================> megaduck_rom_device class megaduck_rom_device :public device_t, public device_gb_cart_interface { public: // construction/destruction megaduck_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); megaduck_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // device-level overrides virtual void device_start() override; virtual void device_reset() override; // reading and writing virtual DECLARE_READ8_MEMBER(read_rom) override; virtual DECLARE_WRITE8_MEMBER(write_bank) override; virtual DECLARE_WRITE8_MEMBER(write_ram) override; }; // device type definition extern const device_type GB_STD_ROM; extern const device_type GB_ROM_TAMA5; extern const device_type GB_ROM_WISDOM; extern const device_type GB_ROM_YONG; extern const device_type GB_ROM_ATVRAC; extern const device_type GB_ROM_LASAMA; extern const device_type MEGADUCK_ROM; #endif