diff options
Diffstat (limited to 'src/devices/bus/gba/rom.h')
-rw-r--r-- | src/devices/bus/gba/rom.h | 160 |
1 files changed, 91 insertions, 69 deletions
diff --git a/src/devices/bus/gba/rom.h b/src/devices/bus/gba/rom.h index a7886c79c59..118f075e416 100644 --- a/src/devices/bus/gba/rom.h +++ b/src/devices/bus/gba/rom.h @@ -1,20 +1,15 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont,Ryan Holtz,Fabio Priuli -#ifndef __GBA_ROM_H -#define __GBA_ROM_H +#ifndef MAME_BUS_GBA_ROM_H +#define MAME_BUS_GBA_ROM_H + +#pragma once #include "gba_slot.h" #include "machine/intelfsh.h" // GBA RTC device -enum { - S3511_RTC_IDLE = 0, - S3511_RTC_DATAOUT, - S3511_RTC_DATAIN, - S3511_RTC_COMMAND -}; - class gba_s3511_device { public: @@ -28,6 +23,14 @@ public: void write(uint16_t data, int gpio_dirs); protected: + enum + { + S3511_RTC_IDLE = 0, + S3511_RTC_DATAOUT, + S3511_RTC_DATAIN, + S3511_RTC_COMMAND + }; + int m_phase; uint8_t m_last_val, m_bits, m_command; int m_data_len; @@ -41,18 +44,6 @@ protected: // GBA EEPROM device // TODO: is it possible to merge this with the standard EEPROM devices in the core? -enum -{ - EEP_IDLE = 0, - EEP_COMMAND, - EEP_ADDR, - EEP_AFTERADDR, - EEP_READ, - EEP_WRITE, - EEP_AFTERWRITE, - EEP_READFIRST -}; - class gba_eeprom_device { public: @@ -63,6 +54,18 @@ public: void write(uint32_t data); protected: + enum + { + EEP_IDLE = 0, + EEP_COMMAND, + EEP_ADDR, + EEP_AFTERADDR, + EEP_READ, + EEP_WRITE, + EEP_AFTERWRITE, + EEP_READFIRST + }; + uint8_t *m_data; uint32_t m_data_size; int m_state; @@ -85,13 +88,8 @@ class gba_rom_device : public device_t, { public: // construction/destruction - gba_rom_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); gba_rom_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; - // reading and writing virtual DECLARE_READ32_MEMBER(read_rom) override { return m_rom[offset]; } @@ -99,7 +97,14 @@ public: virtual DECLARE_WRITE32_MEMBER(write_gpio) override; virtual uint16_t gpio_dev_read(int gpio_dirs) { return 0; } - virtual void gpio_dev_write(uint16_t data, int gpio_dirs) {} + virtual void gpio_dev_write(uint16_t data, int gpio_dirs) { } + +protected: + gba_rom_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; private: uint16_t m_gpio_regs[4]; @@ -113,12 +118,14 @@ class gba_rom_sram_device : public gba_rom_device { public: // construction/destruction - gba_rom_sram_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); gba_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // reading and writing virtual DECLARE_READ32_MEMBER(read_ram) override; virtual DECLARE_WRITE32_MEMBER(write_ram) override; + +protected: + gba_rom_sram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); }; @@ -145,13 +152,14 @@ public: virtual ioport_constructor device_input_ports() const override; + virtual uint16_t gpio_dev_read(int gpio_dirs) override; + virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override; + +protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual uint16_t gpio_dev_read(int gpio_dirs) override; - virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override; - private: uint8_t m_last_val; int m_counter; @@ -165,18 +173,20 @@ class gba_rom_flash_device : public gba_rom_device { public: // construction/destruction - gba_rom_flash_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); gba_rom_flash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual void device_reset() override; // reading and writing virtual DECLARE_READ32_MEMBER(read_ram) override; virtual DECLARE_WRITE32_MEMBER(write_ram) override; protected: + gba_rom_flash_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + virtual void device_reset() override; + //uint32_t m_flash_size; uint32_t m_flash_mask; required_device<intelfsh8_device> m_flash; @@ -192,10 +202,12 @@ public: gba_rom_flash_rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device-level overrides - virtual void device_start() override; virtual uint16_t gpio_dev_read(int gpio_dirs) override; virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override; +protected: + virtual void device_start() override; + private: std::unique_ptr<gba_s3511_device> m_rtc; }; @@ -207,18 +219,20 @@ class gba_rom_flash1m_device : public gba_rom_device { public: // construction/destruction - gba_rom_flash1m_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); gba_rom_flash1m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual void device_reset() override; // reading and writing virtual DECLARE_READ32_MEMBER(read_ram) override; virtual DECLARE_WRITE32_MEMBER(write_ram) override; protected: + gba_rom_flash1m_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + virtual void device_reset() override; + //uint32_t m_flash_size; uint32_t m_flash_mask; required_device<intelfsh8_device> m_flash; @@ -234,10 +248,12 @@ public: gba_rom_flash1m_rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device-level overrides - virtual void device_start() override; virtual uint16_t gpio_dev_read(int gpio_dirs) override; virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override; +protected: + virtual void device_start() override; + private: std::unique_ptr<gba_s3511_device> m_rtc; }; @@ -249,16 +265,18 @@ class gba_rom_eeprom_device : public gba_rom_device { public: // construction/destruction - gba_rom_eeprom_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); gba_rom_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides - virtual void device_start() override; - // reading and writing virtual DECLARE_READ32_MEMBER(read_ram) override; virtual DECLARE_WRITE32_MEMBER(write_ram) override; +protected: + gba_rom_eeprom_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; + private: std::unique_ptr<gba_eeprom_device> m_eeprom; }; @@ -273,14 +291,16 @@ public: gba_rom_yoshiug_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 ioport_constructor device_input_ports() const override; // reading and writing virtual DECLARE_READ32_MEMBER(read_tilt) override; virtual DECLARE_WRITE32_MEMBER(write_tilt) override; +protected: + virtual void device_start() override; + virtual void device_reset() override; + private: int m_tilt_ready; uint16_t m_xpos, m_ypos; @@ -295,17 +315,18 @@ class gba_rom_eeprom64_device : public gba_rom_device { public: // construction/destruction - gba_rom_eeprom64_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); gba_rom_eeprom64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides - virtual void device_start() override; - // reading and writing virtual DECLARE_READ32_MEMBER(read_ram) override; virtual DECLARE_WRITE32_MEMBER(write_ram) override; protected: + gba_rom_eeprom64_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; + std::unique_ptr<gba_eeprom_device> m_eeprom; }; @@ -319,14 +340,15 @@ public: gba_rom_boktai_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 ioport_constructor device_input_ports() const override; virtual uint16_t gpio_dev_read(int gpio_dirs) override; virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override; private: + virtual void device_start() override; + virtual void device_reset() override; + std::unique_ptr<gba_s3511_device> m_rtc; required_ioport m_sensor; uint8_t m_last_val; @@ -342,33 +364,33 @@ public: // construction/destruction gba_rom_3dmatrix_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + // reading and writing + virtual DECLARE_WRITE32_MEMBER(write_mapper) override; + +protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - // reading and writing - virtual DECLARE_WRITE32_MEMBER(write_mapper) override; - private: uint32_t m_src, m_dst, m_nblock; }; // device type definition -extern const device_type GBA_ROM_STD; -extern const device_type GBA_ROM_SRAM; -extern const device_type GBA_ROM_DRILLDOZ; -extern const device_type GBA_ROM_WARIOTWS; -extern const device_type GBA_ROM_EEPROM; -extern const device_type GBA_ROM_YOSHIUG; -extern const device_type GBA_ROM_EEPROM64; -extern const device_type GBA_ROM_BOKTAI; -extern const device_type GBA_ROM_FLASH; -extern const device_type GBA_ROM_FLASH_RTC; -extern const device_type GBA_ROM_FLASH1M; -extern const device_type GBA_ROM_FLASH1M_RTC; -extern const device_type GBA_ROM_3DMATRIX; - - - -#endif +DECLARE_DEVICE_TYPE(GBA_ROM_STD, gba_rom_device) +DECLARE_DEVICE_TYPE(GBA_ROM_SRAM, gba_rom_sram_device) +DECLARE_DEVICE_TYPE(GBA_ROM_DRILLDOZ, gba_rom_drilldoz_device) +DECLARE_DEVICE_TYPE(GBA_ROM_WARIOTWS, gba_rom_wariotws_device) +DECLARE_DEVICE_TYPE(GBA_ROM_EEPROM, gba_rom_eeprom_device) +DECLARE_DEVICE_TYPE(GBA_ROM_YOSHIUG, gba_rom_yoshiug_device) +DECLARE_DEVICE_TYPE(GBA_ROM_EEPROM64, gba_rom_eeprom64_device) +DECLARE_DEVICE_TYPE(GBA_ROM_BOKTAI, gba_rom_boktai_device) +DECLARE_DEVICE_TYPE(GBA_ROM_FLASH, gba_rom_flash_device) +DECLARE_DEVICE_TYPE(GBA_ROM_FLASH_RTC, gba_rom_flash_rtc_device) +DECLARE_DEVICE_TYPE(GBA_ROM_FLASH1M, gba_rom_flash1m_device) +DECLARE_DEVICE_TYPE(GBA_ROM_FLASH1M_RTC, gba_rom_flash1m_rtc_device) +DECLARE_DEVICE_TYPE(GBA_ROM_3DMATRIX, gba_rom_3dmatrix_device) + + +#endif // MAME_BUS_GBA_ROM_H |