summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/machine/gb_rom.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/machine/gb_rom.h')
-rw-r--r--src/mess/machine/gb_rom.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/src/mess/machine/gb_rom.h b/src/mess/machine/gb_rom.h
new file mode 100644
index 00000000000..0a538effd55
--- /dev/null
+++ b/src/mess/machine/gb_rom.h
@@ -0,0 +1,143 @@
+#ifndef __GB_ROM_H
+#define __GB_ROM_H
+
+#include "machine/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);
+ gb_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_config_complete() { m_shortname = "gb_rom"; }
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom);
+ virtual DECLARE_READ8_MEMBER(read_ram);
+ virtual DECLARE_WRITE8_MEMBER(write_ram);
+};
+
+// ======================> 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();
+ virtual void device_config_complete() { m_shortname = "gb_rom_tama5"; }
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom);
+ virtual DECLARE_READ8_MEMBER(read_ram);
+ virtual DECLARE_WRITE8_MEMBER(write_ram);
+ 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();
+ virtual void device_config_complete() { m_shortname = "gb_rom_wisdom"; }
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom);
+ virtual DECLARE_WRITE8_MEMBER(write_bank);
+};
+
+// ======================> 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();
+ virtual void device_config_complete() { m_shortname = "gb_rom_yong"; }
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom);
+ virtual DECLARE_WRITE8_MEMBER(write_bank);
+};
+
+// ======================> 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();
+ virtual void device_config_complete() { m_shortname = "gb_rom_atvrac"; }
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom);
+ virtual DECLARE_WRITE8_MEMBER(write_bank);
+};
+
+// ======================> 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();
+ virtual void device_config_complete() { m_shortname = "gb_rom_lasama"; }
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom);
+ virtual DECLARE_WRITE8_MEMBER(write_bank);
+};
+
+
+
+
+// ======================> 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);
+ megaduck_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_config_complete() { m_shortname = "megaduck_rom"; }
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom);
+ virtual DECLARE_WRITE8_MEMBER(write_bank);
+ virtual DECLARE_WRITE8_MEMBER(write_ram);
+};
+
+// 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