diff options
Diffstat (limited to 'src/devices/machine/sunplus_gcm394.h')
-rw-r--r-- | src/devices/machine/sunplus_gcm394.h | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/src/devices/machine/sunplus_gcm394.h b/src/devices/machine/sunplus_gcm394.h index a4fa4808b7c..bebd0df4b15 100644 --- a/src/devices/machine/sunplus_gcm394.h +++ b/src/devices/machine/sunplus_gcm394.h @@ -22,7 +22,12 @@ class sunplus_gcm394_base_device : public unsp_20_device, public device_mixer_in { 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)), + sunplus_gcm394_base_device(mconfig, type, tag, owner, clock, address_map_constructor(FUNC(sunplus_gcm394_base_device::gcm394_internal_map), this)) + { + } + + sunplus_gcm394_base_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock, address_map_constructor internal) : + unsp_20_device(mconfig, type, tag, owner, clock, internal), device_mixer_interface(mconfig, *this, 2), m_screen(*this, finder_base::DUMMY_TAG), m_spg_video(*this, "spgvideo"), @@ -59,7 +64,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; - void internal_map(address_map &map); + void gcm394_internal_map(address_map &map); required_device<screen_device> m_screen; required_device<gcm394_video_device> m_spg_video; @@ -260,8 +265,8 @@ class sunplus_gcm394_device : public sunplus_gcm394_base_device { public: template <typename T> - sunplus_gcm394_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&screen_tag) - : sunplus_gcm394_device(mconfig, tag, owner, clock) + sunplus_gcm394_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&screen_tag) : + sunplus_gcm394_device(mconfig, tag, owner, clock) { m_screen.set_tag(std::forward<T>(screen_tag)); } @@ -270,6 +275,28 @@ public: }; +class generalplus_gpac800_device : public sunplus_gcm394_base_device +{ +public: + template <typename T> + generalplus_gpac800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&screen_tag) : + generalplus_gpac800_device(mconfig, tag, owner, clock) + { + m_screen.set_tag(std::forward<T>(screen_tag)); + } + + generalplus_gpac800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + void gpac800_internal_map(address_map &map); + +private: + DECLARE_READ16_MEMBER(unkarea_7850_r); +}; + + + DECLARE_DEVICE_TYPE(GCM394, sunplus_gcm394_device) +DECLARE_DEVICE_TYPE(GPAC800, generalplus_gpac800_device) #endif // MAME_MACHINE_SUNPLUS_GCM394_H |