summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/upd7220.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/upd7220.h')
-rw-r--r--src/devices/video/upd7220.h51
1 files changed, 45 insertions, 6 deletions
diff --git a/src/devices/video/upd7220.h b/src/devices/video/upd7220.h
index 6a9837d90eb..7c7370c0cd9 100644
--- a/src/devices/video/upd7220.h
+++ b/src/devices/video/upd7220.h
@@ -62,19 +62,58 @@ public:
// construction/destruction
upd7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <typename... T> void set_display_pixels_callback(T &&... args) { m_display_cb = display_pixels_delegate(std::forward<T>(args)...); }
- template <typename... T> void set_draw_text_callback(T &&... args) { m_draw_text_cb = draw_text_delegate(std::forward<T>(args)...); }
+ // FIXME: these should be aware of current device for resolving the tag
+ template <class FunctionClass>
+ void set_display_pixels(void (FunctionClass::*init)(bitmap_rgb32 &, int, int, uint32_t), const char *name)
+ {
+ m_display_cb = display_pixels_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr));
+ }
+ template <class FunctionClass>
+ void set_display_pixels(void (FunctionClass::*init)(bitmap_rgb32 &, int, int, uint32_t) const, const char *name)
+ {
+ m_display_cb = display_pixels_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr));
+ }
+ template <class FunctionClass>
+ void set_display_pixels(const char *devname, void (FunctionClass::*init)(bitmap_rgb32 &, int, int, uint32_t), const char *name)
+ {
+ m_display_cb = display_pixels_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr));
+ }
+ template <class FunctionClass>
+ void set_display_pixels(const char *devname, void (FunctionClass::*init)(bitmap_rgb32 &, int, int, uint32_t) const, const char *name)
+ {
+ m_display_cb = display_pixels_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr));
+ }
+ template <class FunctionClass>
+ void set_draw_text(void (FunctionClass::*init)(bitmap_rgb32 &, uint32_t, int, int, int, int, int, int), const char *name)
+ {
+ m_draw_text_cb = draw_text_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr));
+ }
+ template <class FunctionClass>
+ void set_draw_text(void (FunctionClass::*init)(bitmap_rgb32 &, uint32_t, int, int, int, int, int, int) const, const char *name)
+ {
+ m_draw_text_cb = draw_text_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr));
+ }
+ template <class FunctionClass>
+ void set_draw_text(const char *devname, void (FunctionClass::*init)(bitmap_rgb32 &, uint32_t, int, int, int, int, int, int), const char *name)
+ {
+ m_draw_text_cb = draw_text_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr));
+ }
+ template <class FunctionClass>
+ void set_draw_text(const char *devname, void (FunctionClass::*init)(bitmap_rgb32 &, uint32_t, int, int, int, int, int, int) const, const char *name)
+ {
+ m_draw_text_cb = draw_text_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr));
+ }
auto drq_wr_callback() { return m_write_drq.bind(); }
auto hsync_wr_callback() { return m_write_hsync.bind(); }
auto vsync_wr_callback() { return m_write_vsync.bind(); }
auto blank_wr_callback() { return m_write_blank.bind(); }
- DECLARE_READ8_MEMBER( read );
- DECLARE_WRITE8_MEMBER( write );
+ uint8_t read(offs_t offset);
+ void write(offs_t offset, uint8_t data);
- DECLARE_READ8_MEMBER( dack_r );
- DECLARE_WRITE8_MEMBER( dack_w );
+ uint8_t dack_r();
+ void dack_w(uint8_t data);
DECLARE_WRITE_LINE_MEMBER( ext_sync_w );
DECLARE_WRITE_LINE_MEMBER( lpen_w );