summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/gba/rom.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/gba/rom.h')
-rw-r--r--src/devices/bus/gba/rom.h160
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