summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/sunplus_gcm394.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/sunplus_gcm394.h')
-rw-r--r--src/devices/machine/sunplus_gcm394.h38
1 files changed, 30 insertions, 8 deletions
diff --git a/src/devices/machine/sunplus_gcm394.h b/src/devices/machine/sunplus_gcm394.h
index dd5dad14fe5..01f2f13abca 100644
--- a/src/devices/machine/sunplus_gcm394.h
+++ b/src/devices/machine/sunplus_gcm394.h
@@ -21,14 +21,18 @@
class sunplus_gcm394_base_device : public unsp_20_device, public device_mixer_interface
{
public:
- sunplus_gcm394_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
- : unsp_20_device(mconfig, type, tag, owner, clock, address_map_constructor(FUNC(sunplus_gcm394_base_device::internal_map), this))
- , device_mixer_interface(mconfig, *this, 2)
- , m_screen(*this, finder_base::DUMMY_TAG)
- , m_spg_video(*this, "spgvideo")
- , m_spg_audio(*this, "spgaudio")
- , m_porta_in(*this)
- , m_portb_in(*this)
+ sunplus_gcm394_base_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock) :
+ unsp_20_device(mconfig, type, tag, owner, clock, address_map_constructor(FUNC(sunplus_gcm394_base_device::internal_map), this)),
+ device_mixer_interface(mconfig, *this, 2),
+ m_screen(*this, finder_base::DUMMY_TAG),
+ m_spg_video(*this, "spgvideo"),
+ m_spg_audio(*this, "spgaudio"),
+ m_porta_in(*this),
+ m_portb_in(*this),
+ m_porta_out(*this),
+ m_space_read_cb(*this),
+ m_space_write_cb(*this),
+ m_bank_write_cb(*this)
{
}
@@ -37,6 +41,14 @@ public:
auto porta_in() { return m_porta_in.bind(); }
auto portb_in() { return m_portb_in.bind(); }
+ auto porta_out() { return m_porta_out.bind(); }
+
+
+ auto space_read_callback() { return m_space_read_cb.bind(); }
+ auto space_write_callback() { return m_space_write_cb.bind(); }
+ auto bank_write_callback() { return m_bank_write_cb.bind(); }
+
+
DECLARE_WRITE_LINE_MEMBER(vblank) { m_spg_video->vblank(state); }
virtual void device_add_mconfig(machine_config& config) override;
@@ -55,6 +67,8 @@ protected:
devcb_read16 m_porta_in;
devcb_read16 m_portb_in;
+ devcb_write16 m_porta_out;
+
uint16_t m_dma_params[7];
// unk 78xx
@@ -124,6 +138,10 @@ protected:
uint16_t m_7961;
private:
+ devcb_read16 m_space_read_cb;
+ devcb_write16 m_space_write_cb;
+ devcb_write16 m_bank_write_cb;
+
DECLARE_READ16_MEMBER(unk_r);
DECLARE_WRITE16_MEMBER(unk_w);
@@ -189,6 +207,8 @@ private:
DECLARE_WRITE16_MEMBER(unkarea_78a0_w);
+ DECLARE_READ16_MEMBER(unkarea_78a1_r);
+
DECLARE_WRITE16_MEMBER(unkarea_78a4_w);
DECLARE_WRITE16_MEMBER(unkarea_78a5_w);
DECLARE_WRITE16_MEMBER(unkarea_78a6_w);
@@ -197,6 +217,8 @@ private:
DECLARE_WRITE16_MEMBER(unkarea_78b0_w);
DECLARE_WRITE16_MEMBER(unkarea_78b1_w);
+
+ DECLARE_READ16_MEMBER(unkarea_78b2_r);
DECLARE_WRITE16_MEMBER(unkarea_78b2_w);
DECLARE_WRITE16_MEMBER(unkarea_78b8_w);