summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nes/sunsoft_dcs.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/nes/sunsoft_dcs.h')
-rw-r--r--src/devices/bus/nes/sunsoft_dcs.h33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/devices/bus/nes/sunsoft_dcs.h b/src/devices/bus/nes/sunsoft_dcs.h
index 479f27aa39e..4b564a20f07 100644
--- a/src/devices/bus/nes/sunsoft_dcs.h
+++ b/src/devices/bus/nes/sunsoft_dcs.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_SUNSOFT_DCS_H
-#define __NES_SUNSOFT_DCS_H
+#ifndef MAME_BUS_NES_SUNSOFT_DCS_H
+#define MAME_BUS_NES_SUNSOFT_DCS_H
+
+#pragma once
#include "sunsoft.h"
#include "softlist_dev.h"
@@ -19,7 +21,6 @@ class ntb_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- ntb_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~ntb_cart_interface();
// reading and writing
@@ -28,16 +29,21 @@ public:
uint8_t *get_cart_base() { return m_rom; }
protected:
+ ntb_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
};
// ======================> nes_ntb_slot_device
+class nes_sunsoft_dcs_device;
+
class nes_ntb_slot_device : public device_t,
public device_image_interface,
public device_slot_interface
{
+ friend class nes_sunsoft_dcs_device;
public:
// construction/destruction
nes_ntb_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -64,11 +70,12 @@ public:
virtual DECLARE_READ8_MEMBER(read);
+protected:
ntb_cart_interface* m_cart;
};
// device type definition
-extern const device_type NES_NTB_SLOT;
+DECLARE_DEVICE_TYPE(NES_NTB_SLOT, nes_ntb_slot_device)
#define MCFG_NTB_MINICART_ADD(_tag, _slot_intf) \
@@ -101,7 +108,7 @@ protected:
};
// device type definition
-extern const device_type NES_NTB_ROM;
+DECLARE_DEVICE_TYPE(NES_NTB_ROM, nes_ntb_rom_device)
@@ -121,10 +128,7 @@ public:
// construction/destruction
nes_sunsoft_dcs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
@@ -132,18 +136,23 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
+ static constexpr device_timer_id TIMER_PROTECT = 0;
+
int m_timer_on, m_exrom_enable;
required_device<nes_ntb_slot_device> m_subslot;
- static const device_timer_id TIMER_PROTECT = 0;
emu_timer *ntb_enable_timer;
attotime timer_freq;
};
-
// device type definition
-extern const device_type NES_SUNSOFT_DCS;
+DECLARE_DEVICE_TYPE(NES_SUNSOFT_DCS, nes_sunsoft_dcs_device)
-#endif
+#endif // MAME_BUS_NES_SUNSOFT_DCS_H