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.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/devices/machine/sunplus_gcm394.h b/src/devices/machine/sunplus_gcm394.h
index 70480f4d9ed..c822893b543 100644
--- a/src/devices/machine/sunplus_gcm394.h
+++ b/src/devices/machine/sunplus_gcm394.h
@@ -24,8 +24,8 @@ public:
, device_mixer_interface(mconfig, *this, 2)
, m_cpu(*this, finder_base::DUMMY_TAG)
, m_screen(*this, finder_base::DUMMY_TAG)
- , m_palette(*this, "palette")
, m_spg_video(*this, "spgvideo")
+ , m_porta_in(*this)
{
}
@@ -33,6 +33,8 @@ public:
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return m_spg_video->screen_update(screen, bitmap, cliprect); }
+ auto porta_in() { return m_porta_in.bind(); }
+
DECLARE_WRITE_LINE_MEMBER(vblank) { m_spg_video->vblank(state); }
virtual void device_add_mconfig(machine_config& config) override;
@@ -44,9 +46,10 @@ protected:
required_device<unsp_device> m_cpu;
required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
required_device<gcm394_video_device> m_spg_video;
+ devcb_read16 m_porta_in;
+
uint16_t m_dma_params[7];
// unk 78xx
@@ -109,6 +112,7 @@ protected:
// unk 79xx
uint16_t m_7934;
+ uint16_t m_7935;
uint16_t m_7936;
@@ -194,12 +198,24 @@ private:
DECLARE_READ16_MEMBER(unkarea_7934_r);
DECLARE_WRITE16_MEMBER(unkarea_7934_w);
+
+ DECLARE_READ16_MEMBER(unkarea_7935_r);
+ DECLARE_WRITE16_MEMBER(unkarea_7935_w);
+
DECLARE_READ16_MEMBER(unkarea_7936_r);
DECLARE_WRITE16_MEMBER(unkarea_7936_w);
DECLARE_WRITE_LINE_MEMBER(videoirq_w);
+
+ void checkirq6();
+
+ emu_timer *m_unk_timer;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
};
+
+
class sunplus_gcm394_device : public sunplus_gcm394_base_device
{
public: