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.h35
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