diff options
Diffstat (limited to 'src/devices/video/sed1520.h')
-rw-r--r-- | src/devices/video/sed1520.h | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/devices/video/sed1520.h b/src/devices/video/sed1520.h index 8b1529f8790..1c7b60e040e 100644 --- a/src/devices/video/sed1520.h +++ b/src/devices/video/sed1520.h @@ -12,15 +12,18 @@ #pragma once -#define MCFG_SED1520_ADD( _tag, _cb ) \ - MCFG_DEVICE_ADD( _tag, SED1520, 0 ) \ - downcast<sed1520_device &>(*device).set_screen_update_cb(_cb); +#define SED1520CB_UPDATE(cls, fnc) sed1520_device::screen_update_delegate((&cls::fnc), (#cls "::" #fnc), DEVICE_SELF, ((cls *)nullptr)) +#define SED1520CB_DEVUPDATE(tag, cls, fnc) sed1520_device::screen_update_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr)) + +#define MCFG_SED1520_ADD(tag, cb) \ + MCFG_DEVICE_ADD(tag, SED1520, 0) \ + downcast<sed1520_device &>(*device).set_screen_update_cb(SED1520CB_##cb); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -#define SED1520_UPDATE_CB(name) uint32_t name(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc) +#define SED1520_UPDATE_CB(name) uint32_t name(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc) // ======================> sed1520_device @@ -28,13 +31,13 @@ class sed1520_device : public device_t { public: - typedef uint32_t (*screen_update_func)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc); + typedef device_delegate<uint32_t (bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc)> screen_update_delegate; // construction/destruction sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // sconfiguration helpers - template <typename Object> void set_screen_update_cb(Object &&cb) { m_screen_update_func = std::forward<Object>(cb); } + template <typename Object> void set_screen_update_cb(Object &&cb) { m_screen_update_cb = std::forward<Object>(cb); } // device interface virtual DECLARE_WRITE8_MEMBER(write); @@ -52,18 +55,18 @@ protected: private: // internal state - uint8_t m_lcd_on; - uint8_t m_busy; - uint8_t m_page; - uint8_t m_column; - uint8_t m_old_column; - uint8_t m_start_line; - uint8_t m_adc; - uint8_t m_static_drive; + uint8_t m_lcd_on; + uint8_t m_busy; + uint8_t m_page; + uint8_t m_column; + uint8_t m_old_column; + uint8_t m_start_line; + uint8_t m_adc; + uint8_t m_static_drive; bool m_modify_write; - screen_update_func m_screen_update_func; + screen_update_delegate m_screen_update_cb; - uint8_t m_vram[0x140]; + uint8_t m_vram[0x140]; }; |