diff options
Diffstat (limited to 'src/devices/cpu/tms34010')
-rw-r--r-- | src/devices/cpu/tms34010/tms34010.cpp | 12 | ||||
-rw-r--r-- | src/devices/cpu/tms34010/tms34010.h | 70 |
2 files changed, 23 insertions, 59 deletions
diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp index 7b2bc7d30ba..bd039d7e706 100644 --- a/src/devices/cpu/tms34010/tms34010.cpp +++ b/src/devices/cpu/tms34010/tms34010.cpp @@ -88,8 +88,12 @@ tms340x0_device::tms340x0_device(const machine_config &mconfig, device_type type , m_pixperclock(0) , m_scantimer(nullptr) , m_icount(0) + , m_scanline_ind16_cb(*this) + , m_scanline_rgb32_cb(*this) , m_output_int_cb(*this) , m_ioreg_pre_write_cb(*this) + , m_to_shiftreg_cb(*this) + , m_from_shiftreg_cb(*this) { } @@ -629,12 +633,12 @@ void tms340x0_device::check_interrupt() void tms340x0_device::device_start() { - m_scanline_ind16_cb.bind_relative_to(*owner()); - m_scanline_rgb32_cb.bind_relative_to(*owner()); + m_scanline_ind16_cb.resolve(); + m_scanline_rgb32_cb.resolve(); m_output_int_cb.resolve(); m_ioreg_pre_write_cb.resolve(); - m_to_shiftreg_cb.bind_relative_to(*owner()); - m_from_shiftreg_cb.bind_relative_to(*owner()); + m_to_shiftreg_cb.resolve(); + m_from_shiftreg_cb.resolve(); m_external_host_access = false; diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h index 313f94d3503..e4488f3ca72 100644 --- a/src/devices/cpu/tms34010/tms34010.h +++ b/src/devices/cpu/tms34010/tms34010.h @@ -137,72 +137,32 @@ public: auto output_int() { return m_output_int_cb.bind(); } auto ioreg_pre_write() { return m_ioreg_pre_write_cb.bind(); } - // Setters for ind16 scanline callback - template <class FunctionClass> - void set_scanline_ind16_callback(void (FunctionClass::*callback)(screen_device &, bitmap_ind16 &, int, const display_params *), - const char *name) + // Setter for ind16 scanline callback + template <typename... T> + void set_scanline_ind16_callback(T &&... args) { - set_scanline_ind16_callback(scanline_ind16_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_scanline_ind16_callback(const char *devname, void (FunctionClass::*callback)(screen_device &, bitmap_ind16 &, int, const display_params *), - const char *name) - { - set_scanline_ind16_callback(scanline_ind16_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_scanline_ind16_callback(scanline_ind16_cb_delegate callback) - { - m_scanline_ind16_cb = callback; + m_scanline_ind16_cb.set(std::forward<T>(args)...); } - // Setters for rgb32 scanline callback - template <class FunctionClass> - void set_scanline_rgb32_callback(void (FunctionClass::*callback)(screen_device &, bitmap_rgb32 &, int, const display_params *), - const char *name) - { - set_scanline_rgb32_callback(scanline_rgb32_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_scanline_rgb32_callback(const char *devname, void (FunctionClass::*callback)(screen_device &, bitmap_rgb32 &, int, const display_params *), - const char *name) - { - set_scanline_rgb32_callback(scanline_rgb32_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_scanline_rgb32_callback(scanline_rgb32_cb_delegate callback) + // Setter for rgb32 scanline callback + template <typename... T> + void set_scanline_rgb32_callback(T &&... args) { - m_scanline_rgb32_cb = callback; + m_scanline_rgb32_cb.set(std::forward<T>(args)...); } - // Setters for shift register input callback - template <class FunctionClass> - void set_shiftreg_in_callback(void (FunctionClass::*callback)(address_space &, offs_t, uint16_t *), const char *name) + // Setter for shift register input callback + template <typename... T> + void set_shiftreg_in_callback(T &&... args) { - set_shiftreg_in_callback(shiftreg_in_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_shiftreg_in_callback(const char *devname, void (FunctionClass::*callback)(address_space &, offs_t, uint16_t *), const char *name) - { - set_shiftreg_in_callback(shiftreg_in_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_shiftreg_in_callback(shiftreg_in_cb_delegate callback) - { - m_to_shiftreg_cb = callback; + m_to_shiftreg_cb.set(std::forward<T>(args)...); } // Setters for shift register output callback - template <class FunctionClass> - void set_shiftreg_out_callback(void (FunctionClass::*callback)(address_space &, offs_t, uint16_t *), const char *name) - { - set_shiftreg_out_callback(shiftreg_out_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_shiftreg_out_callback(const char *devname, void (FunctionClass::*callback)(address_space &, offs_t, uint16_t *), const char *name) - { - set_shiftreg_out_callback(shiftreg_out_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_shiftreg_out_callback(shiftreg_out_cb_delegate callback) + template <typename... T> + void set_shiftreg_out_callback(T &&... args) { - m_from_shiftreg_cb = callback; + m_from_shiftreg_cb.set(std::forward<T>(args)...); } void get_display_params(display_params *params); |