diff options
84 files changed, 481 insertions, 600 deletions
diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp index af759eddace..172b268330a 100644 --- a/src/devices/imagedev/floppy.cpp +++ b/src/devices/imagedev/floppy.cpp @@ -1107,7 +1107,7 @@ void floppy_sound_device::device_start() { // What kind of drive do we have? bool is525 = strstr(tag(), "525") != nullptr; - static_set_samples_names(*this, is525? floppy525_sample_names : floppy35_sample_names); + set_samples_names(is525? floppy525_sample_names : floppy35_sample_names); m_motor_on = false; diff --git a/src/devices/sound/2203intf.h b/src/devices/sound/2203intf.h index d06de139d8b..345129c98f7 100644 --- a/src/devices/sound/2203intf.h +++ b/src/devices/sound/2203intf.h @@ -12,15 +12,15 @@ struct ssg_callbacks; #define MCFG_YM2203_IRQ_HANDLER(cb) \ - devcb = &ym2203_device::set_irq_handler(*device, (DEVCB_##cb)); + devcb = &downcast<ym2203_device &>(*device).set_irq_handler((DEVCB_##cb)); class ym2203_device : public ay8910_device { public: ym2203_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2203_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/2608intf.h b/src/devices/sound/2608intf.h index 67deb180164..444d31a5efc 100644 --- a/src/devices/sound/2608intf.h +++ b/src/devices/sound/2608intf.h @@ -12,15 +12,15 @@ struct ssg_callbacks; #define MCFG_YM2608_IRQ_HANDLER(cb) \ - devcb = &ym2608_device::set_irq_handler(*device, DEVCB_##cb); + devcb = &downcast<ym2608_device &>(*device).set_irq_handler(DEVCB_##cb); class ym2608_device : public ay8910_device { public: ym2608_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2608_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/2610intf.h b/src/devices/sound/2610intf.h index 80c47988e41..cc18a94cf3d 100644 --- a/src/devices/sound/2610intf.h +++ b/src/devices/sound/2610intf.h @@ -12,15 +12,15 @@ struct ssg_callbacks; #define MCFG_YM2610_IRQ_HANDLER(cb) \ - devcb = &ym2610_device::set_irq_handler(*device, (DEVCB_##cb)); + devcb = &downcast<ym2610_device &>(*device).set_irq_handler((DEVCB_##cb)); class ym2610_device : public ay8910_device { public: ym2610_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2610_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/2612intf.h b/src/devices/sound/2612intf.h index 371e29cc408..d342fa148ec 100644 --- a/src/devices/sound/2612intf.h +++ b/src/devices/sound/2612intf.h @@ -7,15 +7,15 @@ #define MCFG_YM2612_IRQ_HANDLER(cb) \ - devcb = &ym2612_device::set_irq_handler(*device, (DEVCB_##cb)); + devcb = &downcast<ym2612_device &>(*device).set_irq_handler((DEVCB_##cb)); class ym2612_device : public device_t, public device_sound_interface { public: ym2612_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2612_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/262intf.h b/src/devices/sound/262intf.h index 912568f669a..c9650b97deb 100644 --- a/src/devices/sound/262intf.h +++ b/src/devices/sound/262intf.h @@ -7,15 +7,15 @@ #define MCFG_YMF262_IRQ_HANDLER(cb) \ - devcb = &ymf262_device::set_irq_handler(*device, (DEVCB_##cb)); + devcb = &downcast<ymf262_device &>(*device).set_irq_handler((DEVCB_##cb)); class ymf262_device : public device_t, public device_sound_interface { public: ymf262_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ymf262_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/3526intf.h b/src/devices/sound/3526intf.h index 1f53b5b9969..24b77d16fbf 100644 --- a/src/devices/sound/3526intf.h +++ b/src/devices/sound/3526intf.h @@ -7,15 +7,15 @@ #define MCFG_YM3526_IRQ_HANDLER(cb) \ - devcb = &ym3526_device::set_irq_handler(*device, (DEVCB_##cb)); + devcb = &downcast<ym3526_device &>(*device).set_irq_handler((DEVCB_##cb)); class ym3526_device : public device_t, public device_sound_interface { public: ym3526_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym3526_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/3812intf.h b/src/devices/sound/3812intf.h index 6dfff0bec9d..e9a17944c17 100644 --- a/src/devices/sound/3812intf.h +++ b/src/devices/sound/3812intf.h @@ -5,15 +5,15 @@ #define MCFG_YM3812_IRQ_HANDLER(cb) \ - devcb = &ym3812_device::set_irq_handler(*device, (DEVCB_##cb)); + devcb = &downcast<ym3812_device &>(*device).set_irq_handler((DEVCB_##cb)); class ym3812_device : public device_t, public device_sound_interface { public: ym3812_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym3812_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/8950intf.h b/src/devices/sound/8950intf.h index 81a00c36662..a6a29e5b644 100644 --- a/src/devices/sound/8950intf.h +++ b/src/devices/sound/8950intf.h @@ -7,31 +7,31 @@ #define MCFG_Y8950_IRQ_HANDLER(cb) \ - devcb = &y8950_device::set_irq_handler(*device, (DEVCB_##cb)); + devcb = &downcast<y8950_device &>(*device).set_irq_handler((DEVCB_##cb)); #define MCFG_Y8950_KEYBOARD_READ_HANDLER(cb) \ - devcb = &y8950_device::set_keyboard_read_handler(*device, (DEVCB_##cb)); + devcb = &downcast<y8950_device &>(*device).set_keyboard_read_handler((DEVCB_##cb)); #define MCFG_Y8950_KEYBOARD_WRITE_HANDLER(cb) \ - devcb = &y8950_device::set_keyboard_write_handler(*device, (DEVCB_##cb)); + devcb = &downcast<y8950_device &>(*device).set_keyboard_write_handler((DEVCB_##cb)); #define MCFG_Y8950_IO_READ_HANDLER(cb) \ - devcb = &y8950_device::set_io_read_handler(*device, (DEVCB_##cb)); + devcb = &downcast<y8950_device &>(*device).set_io_read_handler((DEVCB_##cb)); #define MCFG_Y8950_IO_WRITE_HANDLER(cb) \ - devcb = &y8950_device::set_io_write_handler(*device, (DEVCB_##cb)); + devcb = &downcast<y8950_device &>(*device).set_io_write_handler((DEVCB_##cb)); class y8950_device : public device_t, public device_sound_interface { public: y8950_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_keyboard_read_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_keyboard_read_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_keyboard_write_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_keyboard_write_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_io_read_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_io_read_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_io_write_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_io_write_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_keyboard_read_handler(Object &&cb) { return m_keyboard_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_keyboard_write_handler(Object &&cb) { return m_keyboard_write_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_io_read_handler(Object &&cb) { return m_io_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_io_write_handler(Object &&cb) { return m_io_write_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/ad1848.h b/src/devices/sound/ad1848.h index 802f32d7504..efc5bf3228c 100644 --- a/src/devices/sound/ad1848.h +++ b/src/devices/sound/ad1848.h @@ -9,18 +9,18 @@ #define MCFG_AD1848_IRQ_CALLBACK(cb) \ - devcb = &ad1848_device::set_irq_callback(*device, (DEVCB_##cb)); + devcb = &downcast<ad1848_device &>(*device).set_irq_callback((DEVCB_##cb)); #define MCFG_AD1848_DRQ_CALLBACK(cb) \ - devcb = &ad1848_device::set_drq_callback(*device, (DEVCB_##cb)); + devcb = &downcast<ad1848_device &>(*device).set_drq_callback((DEVCB_##cb)); class ad1848_device : public device_t { public: ad1848_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<ad1848_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast<ad1848_device &>(device).m_drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_callback(Object &&cb) { return m_drq_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/sound/aica.h b/src/devices/sound/aica.h index 9ec0c4734de..a1d43f911b6 100644 --- a/src/devices/sound/aica.h +++ b/src/devices/sound/aica.h @@ -15,16 +15,16 @@ #define MCFG_AICA_MASTER \ - aica_device::set_master(*device); + downcast<aica_device &>(*device).set_master(true); #define MCFG_AICA_ROFFSET(offs) \ - aica_device::set_roffset(*device, (offs)); + downcast<aica_device &>(*device).set_roffset((offs)); #define MCFG_AICA_IRQ_CB(cb) \ - devcb = &aica_device::set_irq_callback(*device, (DEVCB_##cb)); + devcb = &downcast<aica_device &>(*device).set_irq_callback((DEVCB_##cb)); #define MCFG_AICA_MAIN_IRQ_CB(cb) \ - devcb = &aica_device::set_main_irq_callback(*device, (DEVCB_##cb)); + devcb = &downcast<aica_device &>(*device).set_main_irq_callback((DEVCB_##cb)); class aica_device : public device_t, public device_sound_interface @@ -32,10 +32,10 @@ class aica_device : public device_t, public: aica_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_master(device_t &device) { downcast<aica_device &>(device).m_master = true; } - static void set_roffset(device_t &device, int roffset) { downcast<aica_device &>(device).m_roffset = roffset; } - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<aica_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_main_irq_callback(device_t &device, Object &&cb) { return downcast<aica_device &>(device).m_main_irq_cb.set_callback(std::forward<Object>(cb)); } + void set_master(bool master) { m_master = master; } + void set_roffset(int roffset) { m_roffset = roffset; } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_main_irq_callback(Object &&cb) { return m_main_irq_cb.set_callback(std::forward<Object>(cb)); } // AICA register access DECLARE_READ16_MEMBER( read ); diff --git a/src/devices/sound/asc.cpp b/src/devices/sound/asc.cpp index be3b7d9356b..d0a2c491679 100644 --- a/src/devices/sound/asc.cpp +++ b/src/devices/sound/asc.cpp @@ -56,17 +56,6 @@ asc_device::asc_device(const machine_config &mconfig, const char *tag, device_t //------------------------------------------------- -// static_set_type - configuration helper to set -// the chip type -//------------------------------------------------- - -void asc_device::static_set_type(device_t &device, asc_type type) -{ - asc_device &asc = downcast<asc_device &>(device); - asc.m_chip_type = type; -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/sound/asc.h b/src/devices/sound/asc.h index d8dfa6e30f1..f3435c799b3 100644 --- a/src/devices/sound/asc.h +++ b/src/devices/sound/asc.h @@ -31,7 +31,7 @@ MCFG_IRQ_FUNC(_irqf) #define MCFG_ASC_TYPE(_type) \ - asc_device::static_set_type(*device, asc_device::asc_type::_type); + downcast<asc_device &>(*device).set_type(asc_device::asc_type::_type); #define MCFG_IRQ_FUNC(_irqf) \ devcb = &downcast<asc_device *>(device)->set_irqf(DEVCB_##_irqf); @@ -64,7 +64,7 @@ public: asc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - static void static_set_type(device_t &device, asc_type type); + void set_type(asc_type type) { m_chip_type = type; } template <class Write> devcb_base &set_irqf(Write &&wr) diff --git a/src/devices/sound/ay8910.h b/src/devices/sound/ay8910.h index 717359d6dd7..4961c297566 100644 --- a/src/devices/sound/ay8910.h +++ b/src/devices/sound/ay8910.h @@ -53,22 +53,22 @@ #define MCFG_AY8910_OUTPUT_TYPE(_flag) \ - ay8910_device::set_flags(*device, _flag); + downcast<ay8910_device &>(*device).set_flags(_flag); #define MCFG_AY8910_RES_LOADS(_res0, _res1, _res2) \ - ay8910_device::set_resistors_load(*device, _res0, _res1, _res2); + downcast<ay8910_device &>(*device).set_resistors_load(_res0, _res1, _res2); #define MCFG_AY8910_PORT_A_READ_CB(_devcb) \ - devcb = &ay8910_device::set_port_a_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay8910_device &>(*device).set_port_a_read_callback(DEVCB_##_devcb); #define MCFG_AY8910_PORT_B_READ_CB(_devcb) \ - devcb = &ay8910_device::set_port_b_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay8910_device &>(*device).set_port_b_read_callback(DEVCB_##_devcb); #define MCFG_AY8910_PORT_A_WRITE_CB(_devcb) \ - devcb = &ay8910_device::set_port_a_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay8910_device &>(*device).set_port_a_write_callback(DEVCB_##_devcb); #define MCFG_AY8910_PORT_B_WRITE_CB(_devcb) \ - devcb = &ay8910_device::set_port_b_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay8910_device &>(*device).set_port_b_write_callback(DEVCB_##_devcb); class ay8910_device : public device_t, @@ -84,14 +84,14 @@ public: // construction/destruction ay8910_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_flags(device_t &device, int flags) { downcast<ay8910_device &>(device).m_flags = flags; } - static void set_psg_type(device_t &device, psg_type_t psg_type) { downcast<ay8910_device &>(device).set_type(psg_type); } - static void set_resistors_load(device_t &device, int res_load0, int res_load1, int res_load2) { downcast<ay8910_device &>(device).m_res_load[0] = res_load0; downcast<ay8910_device &>(device).m_res_load[1] = res_load1; downcast<ay8910_device &>(device).m_res_load[2] = res_load2; } - template <class Object> static devcb_base &set_port_a_read_callback(device_t &device, Object &&cb) { return downcast<ay8910_device &>(device).m_port_a_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_b_read_callback(device_t &device, Object &&cb) { return downcast<ay8910_device &>(device).m_port_b_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_a_write_callback(device_t &device, Object &&cb) { return downcast<ay8910_device &>(device).m_port_a_write_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_b_write_callback(device_t &device, Object &&cb) { return downcast<ay8910_device &>(device).m_port_b_write_cb.set_callback(std::forward<Object>(cb)); } + // configuration helpers + void set_flags(int flags) { m_flags = flags; } + void set_psg_type(psg_type_t psg_type) { set_type(psg_type); } + void set_resistors_load(int res_load0, int res_load1, int res_load2) { m_res_load[0] = res_load0; m_res_load[1] = res_load1; m_res_load[2] = res_load2; } + template <class Object> devcb_base &set_port_a_read_callback(Object &&cb) { return m_port_a_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_b_read_callback(Object &&cb) { return m_port_b_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_a_write_callback(Object &&cb) { return m_port_a_write_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_b_write_callback(Object &&cb) { return m_port_b_write_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( data_r ); DECLARE_WRITE8_MEMBER( address_w ); diff --git a/src/devices/sound/bsmt2000.cpp b/src/devices/sound/bsmt2000.cpp index 1f43fbfb00f..1c300816099 100644 --- a/src/devices/sound/bsmt2000.cpp +++ b/src/devices/sound/bsmt2000.cpp @@ -78,18 +78,6 @@ bsmt2000_device::bsmt2000_device(const machine_config &mconfig, const char *tag, //------------------------------------------------- -// static_set_ready_callback - configuration -// helper to set the ready callback -//------------------------------------------------- - -void bsmt2000_device::static_set_ready_callback(device_t &device, ready_callback &&callback) -{ - bsmt2000_device &bsmt = downcast<bsmt2000_device &>(device); - bsmt.m_ready_callback = std::move(callback); -} - - -//------------------------------------------------- // rom_region - return a pointer to the device's // internal ROM region //------------------------------------------------- diff --git a/src/devices/sound/bsmt2000.h b/src/devices/sound/bsmt2000.h index 785379bd259..c3b110b5b13 100644 --- a/src/devices/sound/bsmt2000.h +++ b/src/devices/sound/bsmt2000.h @@ -25,7 +25,7 @@ #define MCFG_BSMT2000_REPLACE(_tag, _clock) \ MCFG_DEVICE_REPLACE(_tag, BSMT2000, _clock) #define MCFG_BSMT2000_READY_CALLBACK(_class, _method) \ - bsmt2000_device::static_set_ready_callback(*device, bsmt2000_device::ready_callback(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); + downcast<bsmt2000_device &>(*device).set_ready_callback(bsmt2000_device::ready_callback(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); //************************************************************************** @@ -46,7 +46,7 @@ public: bsmt2000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - static void static_set_ready_callback(device_t &device, ready_callback &&callback); + template <typename Object> void set_ready_callback(Object &&cb) { m_ready_callback = std::forward<Object>(cb); } // public interface uint16_t read_status(); diff --git a/src/devices/sound/c140.h b/src/devices/sound/c140.h index ff1e2c87d6d..b86ed60e50c 100644 --- a/src/devices/sound/c140.h +++ b/src/devices/sound/c140.h @@ -12,13 +12,13 @@ //************************************************************************** #define MCFG_C140_ADD(tag, clock) \ - MCFG_DEVICE_ADD((tag), C140, (clock)) + MCFG_DEVICE_ADD((tag), C140, (clock)) #define MCFG_C140_REPLACE(tag, clock) \ - MCFG_DEVICE_REPLACE((tag), C140, (clock)) + MCFG_DEVICE_REPLACE((tag), C140, (clock)) #define MCFG_C140_BANK_TYPE(type) \ - c140_device::set_bank_type(*device, (c140_device::C140_TYPE::type)); + downcast<c140_device &>(*device).set_bank_type((c140_device::C140_TYPE::type)); //************************************************************************** @@ -41,8 +41,8 @@ public: c140_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - static void set_bank_type(device_t &device, C140_TYPE bank) { downcast<c140_device &>(device).m_banking_type = bank; } + // configuration + void set_bank_type(C140_TYPE bank) { m_banking_type = bank; } DECLARE_READ8_MEMBER( c140_r ); DECLARE_WRITE8_MEMBER( c140_w ); diff --git a/src/devices/sound/c352.cpp b/src/devices/sound/c352.cpp index 581cddd3968..7dcff6dcc5a 100644 --- a/src/devices/sound/c352.cpp +++ b/src/devices/sound/c352.cpp @@ -52,17 +52,6 @@ void c352_device::rom_bank_updated() m_stream->update(); } -//------------------------------------------------- -// static_set_dividder - configuration helper to -// set the divider setting -//------------------------------------------------- - -void c352_device::static_set_divider(device_t &device, int setting) -{ - c352_device &c352 = downcast<c352_device &>(device); - c352.m_divider = setting; -} - void c352_device::fetch_sample(c352_voice_t* v) { v->last_sample = v->sample; diff --git a/src/devices/sound/c352.h b/src/devices/sound/c352.h index 4cfce7b7591..bd3db8f70a3 100644 --- a/src/devices/sound/c352.h +++ b/src/devices/sound/c352.h @@ -11,11 +11,11 @@ //************************************************************************** #define MCFG_C352_ADD(tag, clock, setting) \ - MCFG_DEVICE_ADD((tag), C352, (clock)) \ - MCFG_C352_DIVIDER(setting) + MCFG_DEVICE_ADD((tag), C352, (clock)) \ + MCFG_C352_DIVIDER(setting) #define MCFG_C352_DIVIDER(setting) \ - c352_device::static_set_divider(*device, (setting)); + downcast<c352_device &>(*device).set_divider((setting)); //************************************************************************** @@ -33,7 +33,7 @@ public: c352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - static void static_set_divider(device_t &device, int setting); + void set_divider(int setting) { m_divider = setting; } DECLARE_READ16_MEMBER(read); DECLARE_WRITE16_MEMBER(write); diff --git a/src/devices/sound/c6280.h b/src/devices/sound/c6280.h index d69a1736416..11cae3eaa63 100644 --- a/src/devices/sound/c6280.h +++ b/src/devices/sound/c6280.h @@ -12,7 +12,7 @@ class c6280_device : public device_t, public device_sound_interface public: c6280_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_devicecpu_tag(device_t &device, const char *tag) { downcast<c6280_device &>(device).m_cpudevice.set_tag(tag); } + void set_devicecpu_tag(const char *tag) { m_cpudevice.set_tag(tag); } // read/write DECLARE_READ8_MEMBER( c6280_r ); @@ -57,6 +57,6 @@ private: DECLARE_DEVICE_TYPE(C6280, c6280_device) #define MCFG_C6280_CPU(tag) \ - c6280_device::set_devicecpu_tag(*device, ("^" tag)); + downcast<c6280_device &>(*device).set_devicecpu_tag(("^" tag)); #endif // MAME_SOUND_C6280_H diff --git a/src/devices/sound/cdp1863.cpp b/src/devices/sound/cdp1863.cpp index 07bc4aa9704..d2ea2e83c09 100644 --- a/src/devices/sound/cdp1863.cpp +++ b/src/devices/sound/cdp1863.cpp @@ -58,18 +58,6 @@ cdp1863_device::cdp1863_device(const machine_config &mconfig, const char *tag, d //------------------------------------------------- -// static_set_clock2 - configuration helper -//------------------------------------------------- - -void cdp1863_device::static_set_clock2(device_t &device, int clock2) -{ - cdp1863_device &cdp1863 = downcast<cdp1863_device &>(device); - - cdp1863.m_clock2 = clock2; -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/sound/cdp1863.h b/src/devices/sound/cdp1863.h index ddcb5187211..8234f43f142 100644 --- a/src/devices/sound/cdp1863.h +++ b/src/devices/sound/cdp1863.h @@ -31,7 +31,7 @@ #define MCFG_CDP1863_ADD(_tag, _clock, _clock2) \ MCFG_DEVICE_ADD(_tag, CDP1863, _clock) \ - cdp1863_device::static_set_clock2(*device, _clock2); + downcast<cdp1863_device &>(*device).set_clock2(_clock2); @@ -49,8 +49,8 @@ public: cdp1863_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - static void static_set_clock2(device_t &device, int clock2); - static void static_set_clock2(device_t &device, const XTAL &xtal) { xtal.validate("selecting cdp1863 clock"); static_set_clock2(device, xtal.value()); } + void set_clock2(int clock2) { m_clock2 = clock2; } + void set_clock2(const XTAL &xtal) { xtal.validate("selecting cdp1863 clock"); set_clock2(xtal.value()); } DECLARE_WRITE8_MEMBER( str_w ); void str_w(uint8_t data); diff --git a/src/devices/sound/cdp1869.h b/src/devices/sound/cdp1869.h index 95b1c1e9365..bec8336a1ac 100644 --- a/src/devices/sound/cdp1869.h +++ b/src/devices/sound/cdp1869.h @@ -87,18 +87,18 @@ //************************************************************************** #define MCFG_CDP1869_ADD(_tag, _pixclock, _map) \ - MCFG_DEVICE_ADD(_tag, CDP1869, _pixclock) \ - MCFG_DEVICE_ADDRESS_MAP(0, _map) + MCFG_DEVICE_ADD(_tag, CDP1869, _pixclock) \ + MCFG_DEVICE_ADDRESS_MAP(0, _map) #define MCFG_CDP1869_SCREEN_PAL_ADD(_cdptag, _tag, _clock) \ - MCFG_SCREEN_ADD(_tag, RASTER) \ - MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \ - MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_PAL, cdp1869_device::SCANLINE_VBLANK_END_PAL, cdp1869_device::SCANLINE_VBLANK_START_PAL) + MCFG_SCREEN_ADD(_tag, RASTER) \ + MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \ + MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_PAL, cdp1869_device::SCANLINE_VBLANK_END_PAL, cdp1869_device::SCANLINE_VBLANK_START_PAL) #define MCFG_CDP1869_SCREEN_NTSC_ADD(_cdptag, _tag, _clock) \ - MCFG_SCREEN_ADD(_tag, RASTER) \ - MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \ - MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_NTSC, cdp1869_device::SCANLINE_VBLANK_END_NTSC, cdp1869_device::SCANLINE_VBLANK_START_NTSC) + MCFG_SCREEN_ADD(_tag, RASTER) \ + MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \ + MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_NTSC, cdp1869_device::SCANLINE_VBLANK_END_NTSC, cdp1869_device::SCANLINE_VBLANK_START_NTSC) #define MCFG_CDP1869_SET_SCREEN MCFG_VIDEO_SET_SCREEN @@ -107,22 +107,22 @@ #define CDP1869_PCB_READ_MEMBER(name) int name(uint16_t pma, uint8_t cma, uint8_t pmd) #define MCFG_CDP1869_PAL_NTSC_CALLBACK(_read) \ - devcb = &cdp1869_device::set_pal_ntsc_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1869_device &>(*device).set_pal_ntsc_rd_callback(DEVCB_##_read); #define MCFG_CDP1869_PRD_CALLBACK(_write) \ - devcb = &cdp1869_device::set_prd_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cdp1869_device &>(*device).set_prd_wr_callback(DEVCB_##_write); #define MCFG_CDP1869_COLOR_CLOCK(_clk) \ - cdp1869_device::static_set_color_clock(*device, _clk); + downcast<cdp1869_device &>(*device).set_color_clock(_clk); #define MCFG_CDP1869_CHAR_RAM_READ_OWNER(_class, _method) \ - cdp1869_device::static_set_char_ram_read(*device, cdp1869_device::char_ram_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<cdp1869_device &>(*device).set_char_ram_read(cdp1869_device::char_ram_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(_class, _method) \ - cdp1869_device::static_set_char_ram_write(*device, cdp1869_device::char_ram_write_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<cdp1869_device &>(*device).set_char_ram_write(cdp1869_device::char_ram_write_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_CDP1869_CHAR_PCB_READ_OWNER(_class, _method) \ - cdp1869_device::static_set_pcb_read(*device, cdp1869_device::pcb_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<cdp1869_device &>(*device).set_pcb_read(cdp1869_device::pcb_read_delegate(&_class::_method, #_class "::" #_method, this)); //************************************************************************** @@ -188,13 +188,13 @@ public: // construction/destruction cdp1869_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_pal_ntsc_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1869_device &>(device).m_read_pal_ntsc.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_prd_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1869_device &>(device).m_write_prd.set_callback(std::forward<Object>(cb)); } - static void static_set_char_ram_read(device_t &device, char_ram_read_delegate &&cb) { downcast<cdp1869_device &>(device).m_in_char_ram_func = std::move(cb); } - static void static_set_char_ram_write(device_t &device, char_ram_write_delegate &&cb) { downcast<cdp1869_device &>(device).m_out_char_ram_func = std::move(cb); } - static void static_set_pcb_read(device_t &device, pcb_read_delegate &&cb) { downcast<cdp1869_device &>(device).m_in_pcb_func = std::move(cb); } - static void static_set_color_clock(device_t &device, int color_clock) { downcast<cdp1869_device &>(device).m_color_clock = color_clock; } - static void static_set_color_clock(device_t &device, const XTAL &xtal) { xtal.validate("selecting cdp1869 clock"); static_set_color_clock(device, xtal.value()); } + template <class Object> devcb_base &set_pal_ntsc_rd_callback(Object &&cb) { return m_read_pal_ntsc.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_prd_wr_callback(Object &&cb) { return m_write_prd.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_char_ram_read(Object &&cb) { m_in_char_ram_func = std::forward<Object>(cb); } + template <typename Object> void set_char_ram_write(Object &&cb) { m_out_char_ram_func = std::forward<Object>(cb); } + template <typename Object> void set_pcb_read(Object &&cb) { m_in_pcb_func = std::forward<Object>(cb); } + void set_color_clock(int color_clock) { m_color_clock = color_clock; } + void set_color_clock(const XTAL &xtal) { xtal.validate("selecting cdp1869 clock"); set_color_clock(xtal.value()); } virtual void io_map(address_map &map); virtual void char_map(address_map &map); diff --git a/src/devices/sound/cem3394.h b/src/devices/sound/cem3394.h index 63480d4dd8f..b5a73f19941 100644 --- a/src/devices/sound/cem3394.h +++ b/src/devices/sound/cem3394.h @@ -17,13 +17,13 @@ MCFG_DEVICE_REPLACE(_tag, CEM3394, _clock) #define MCFG_CEM3394_EXT_INPUT_CB(_class, _method) \ - cem3394_device::set_ext_input_callback(*device, cem3394_device::ext_input_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<cem3394_device &>(*device).set_ext_input_callback(cem3394_device::ext_input_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_CEM3394_VCO_ZERO(_freq) \ - cem3394_device::set_vco_zero_freq(*device, _freq); + downcast<cem3394_device &>(*device).set_vco_zero_freq(_freq); #define MCFG_CEM3394_FILTER_ZERO(_freq) \ - cem3394_device::set_filter_zero_freq(*device, _freq); + downcast<cem3394_device &>(*device).set_filter_zero_freq(_freq); class cem3394_device : public device_t, public device_sound_interface @@ -48,9 +48,9 @@ public: cem3394_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_ext_input_callback(device_t &device, ext_input_delegate &&callback) { downcast<cem3394_device &>(device).m_ext_cb = std::move(callback); } - static void set_vco_zero_freq(device_t &device, double freq) { downcast<cem3394_device &>(device).m_vco_zero_freq = freq; } - static void set_filter_zero_freq(device_t &device, double freq) { downcast<cem3394_device &>(device).m_filter_zero_freq = freq; } + template <typename Object> void set_ext_input_callback(Object &&cb) { m_ext_cb = std::forward<Object>(cb); } + void set_vco_zero_freq(double freq) { m_vco_zero_freq = freq; } + void set_filter_zero_freq(double freq) { m_filter_zero_freq = freq; } protected: // device-level overrides diff --git a/src/devices/sound/dave.h b/src/devices/sound/dave.h index 918c7bf26cd..d6d450a673e 100644 --- a/src/devices/sound/dave.h +++ b/src/devices/sound/dave.h @@ -32,13 +32,13 @@ #define MCFG_DAVE_IRQ_CALLBACK(_write) \ - devcb = &dave_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<dave_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_DAVE_LH_CALLBACK(_write) \ - devcb = &dave_device::set_lh_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<dave_device &>(*device).set_lh_wr_callback(DEVCB_##_write); #define MCFG_DAVE_RH_CALLBACK(_write) \ - devcb = &dave_device::set_rh_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<dave_device &>(*device).set_rh_wr_callback(DEVCB_##_write); @@ -55,9 +55,9 @@ class dave_device : public device_t, public: dave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<dave_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_lh_wr_callback(device_t &device, Object &&cb) { return downcast<dave_device &>(device).m_write_lh.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rh_wr_callback(device_t &device, Object &&cb) { return downcast<dave_device &>(device).m_write_rh.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_lh_wr_callback(Object &&cb) { return m_write_lh.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rh_wr_callback(Object &&cb) { return m_write_rh.set_callback(std::forward<Object>(cb)); } virtual void z80_program_map(address_map &map); virtual void z80_io_map(address_map &map); diff --git a/src/devices/sound/discrete.cpp b/src/devices/sound/discrete.cpp index 847f24f9f17..8e0ff993dc4 100644 --- a/src/devices/sound/discrete.cpp +++ b/src/devices/sound/discrete.cpp @@ -824,17 +824,6 @@ int discrete_device::same_module_index(const discrete_base_node &node) //************************************************************************** //------------------------------------------------- -// static_set_intf - configuration helper to set -// the interface -//------------------------------------------------- - -void discrete_device::static_set_intf(device_t &device, const discrete_block *intf) -{ - discrete_device &disc = downcast<discrete_device &>(device); - disc.m_intf = intf; -} - -//------------------------------------------------- // discrete_device - constructor //------------------------------------------------- diff --git a/src/devices/sound/discrete.h b/src/devices/sound/discrete.h index da0197b7e67..3bdcedcc3bc 100644 --- a/src/devices/sound/discrete.h +++ b/src/devices/sound/discrete.h @@ -4264,7 +4264,7 @@ public: MCFG_DISCRETE_INTF(_intf) #define MCFG_DISCRETE_INTF(_intf) \ - discrete_device::static_set_intf(*device, (const discrete_block *)&(_intf##_discrete_interface)); + downcast<discrete_device &>(*device).set_intf((const discrete_block *)&(_intf##_discrete_interface)); //************************************************************************** // TYPE DEFINITIONS @@ -4286,7 +4286,7 @@ protected: public: // inline configuration helpers - static void static_set_intf(device_t &device, const discrete_block *intf); + void set_intf(const discrete_block *intf) { m_intf = intf; } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/sound/es5503.cpp b/src/devices/sound/es5503.cpp index 1e3c29b268a..143e685c91a 100644 --- a/src/devices/sound/es5503.cpp +++ b/src/devices/sound/es5503.cpp @@ -63,17 +63,6 @@ es5503_device::es5503_device(const machine_config &mconfig, const char *tag, dev //------------------------------------------------- -// static_set_type - configuration helper to set -// the IRQ callback -//------------------------------------------------- - -void es5503_device::static_set_channels(device_t &device, int channels) -{ - es5503_device &es5503 = downcast<es5503_device &>(device); - es5503.output_channels = channels; -} - -//------------------------------------------------- // device_timer - called when our device timer expires //------------------------------------------------- diff --git a/src/devices/sound/es5503.h b/src/devices/sound/es5503.h index 577e71568d9..825cdc65a0c 100644 --- a/src/devices/sound/es5503.h +++ b/src/devices/sound/es5503.h @@ -11,13 +11,13 @@ MCFG_DEVICE_ADD(_tag, ES5503, _clock) #define MCFG_ES5503_OUTPUT_CHANNELS(_channels) \ - es5503_device::static_set_channels(*device, _channels); + downcast<es5503_device &>(*device).set_channels(_channels); #define MCFG_ES5503_IRQ_FUNC(_write) \ - devcb = &es5503_device::static_set_irqf(*device, DEVCB_##_write); + devcb = &downcast<es5503_device &>(*device).set_irqf(DEVCB_##_write); #define MCFG_ES5503_ADC_FUNC(_read) \ - devcb = &es5503_device::static_set_adcf(*device, DEVCB_##_read); + devcb = &downcast<es5503_device &>(*device).set_adcf(DEVCB_##_read); // ======================> es5503_device @@ -29,10 +29,10 @@ public: // construction/destruction es5503_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_channels(device_t &device, int channels); + void set_channels(int channels) { output_channels = channels; } - template <class Object> static devcb_base &static_set_irqf(device_t &device, Object &&cb) { return downcast<es5503_device &>(device).m_irq_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_adcf(device_t &device, Object &&cb) { return downcast<es5503_device &>(device).m_adc_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irqf(Object &&cb) { return m_irq_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_adcf(Object &&cb) { return m_adc_func.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/sound/es5506.h b/src/devices/sound/es5506.h index baf3762e183..5b8da91ebac 100644 --- a/src/devices/sound/es5506.h +++ b/src/devices/sound/es5506.h @@ -15,53 +15,53 @@ #define ES5506_MAKE_WAVS 0 #define MCFG_ES5506_REGION0(_region) \ - es5506_device::set_region0(*device, _region); + downcast<es5506_device &>(*device).set_region0(_region); #define MCFG_ES5506_REGION1(_region) \ - es5506_device::set_region1(*device, _region); + downcast<es5506_device &>(*device).set_region1(_region); #define MCFG_ES5506_REGION2(_region) \ - es5506_device::set_region2(*device, _region); + downcast<es5506_device &>(*device).set_region2(_region); #define MCFG_ES5506_REGION3(_region) \ - es5506_device::set_region3(*device, _region); + downcast<es5506_device &>(*device).set_region3(_region); #define MCFG_ES5506_CHANNELS(_chan) \ - es5506_device::set_channels(*device, _chan); + downcast<es5506_device &>(*device).set_channels(_chan); #define MCFG_ES5506_IRQ_CB(_devcb) \ - devcb = &es5506_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<es5506_device &>(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_ES5506_READ_PORT_CB(_devcb) \ - devcb = &es5506_device::set_read_port_callback(*device, DEVCB_##_devcb); + devcb = &downcast<es5506_device &>(*device).set_read_port_callback(DEVCB_##_devcb); #define MCFG_ES5505_REGION0(_region) \ - es5505_device::set_region0(*device, _region); + downcast<es5505_device &>(*device).set_region0(_region); #define MCFG_ES5505_REGION1(_region) \ - es5505_device::set_region1(*device, _region); + downcast<es5505_device &>(*device).set_region1(_region); #define MCFG_ES5505_CHANNELS(_chan) \ - es5505_device::set_channels(*device, _chan); + downcast<es5505_device &>(*device).set_channels(_chan); #define MCFG_ES5505_IRQ_CB(_devcb) \ - devcb = &es5505_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<es5505_device &>(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_ES5505_READ_PORT_CB(_devcb) \ - devcb = &es5505_device::set_read_port_callback(*device, DEVCB_##_devcb); + devcb = &downcast<es5505_device &>(*device).set_read_port_callback(DEVCB_##_devcb); class es550x_device : public device_t, public device_sound_interface { public: - static void set_region0(device_t &device, const char *region0) { downcast<es550x_device &>(device).m_region0 = region0; } - static void set_region1(device_t &device, const char *region1) { downcast<es550x_device &>(device).m_region1 = region1; } - static void set_region2(device_t &device, const char *region2) { downcast<es550x_device &>(device).m_region2 = region2; } - static void set_region3(device_t &device, const char *region3) { downcast<es550x_device &>(device).m_region3 = region3; } - static void set_channels(device_t &device, int channels) { downcast<es550x_device &>(device).m_channels = channels; } - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<es550x_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_port_callback(device_t &device, Object &&cb) { return downcast<es550x_device &>(device).m_read_port_cb.set_callback(std::forward<Object>(cb)); } + void set_region0(const char *region0) { m_region0 = region0; } + void set_region1(const char *region1) { m_region1 = region1; } + void set_region2(const char *region2) { m_region2 = region2; } + void set_region3(const char *region3) { m_region3 = region3; } + void set_channels(int channels) { m_channels = channels; } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_port_callback(Object &&cb) { return m_read_port_cb.set_callback(std::forward<Object>(cb)); } protected: // struct describing a single playing voice diff --git a/src/devices/sound/es8712.h b/src/devices/sound/es8712.h index 112846fe98b..5c352c10e3e 100644 --- a/src/devices/sound/es8712.h +++ b/src/devices/sound/es8712.h @@ -16,7 +16,7 @@ #define MCFG_ES8712_REPLACE(_tag, _clock) \ MCFG_DEVICE_REPLACE(_tag, ES8712, _clock) #define MCFG_ES8712_RESET_HANDLER(_devcb) \ - devcb = &es8712_device::set_reset_handler(*device, DEVCB_##_devcb); + devcb = &downcast<es8712_device &>(*device).set_reset_handler(DEVCB_##_devcb); //************************************************************************** @@ -31,8 +31,8 @@ class es8712_device : public device_t, public device_sound_interface public: es8712_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb) { return downcast<es8712_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); } + // configuration + template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER(write); DECLARE_READ8_MEMBER(read); diff --git a/src/devices/sound/flt_rc.cpp b/src/devices/sound/flt_rc.cpp index 361af1a74a8..9a81d14aaa1 100644 --- a/src/devices/sound/flt_rc.cpp +++ b/src/devices/sound/flt_rc.cpp @@ -116,24 +116,3 @@ void filter_rc_device::recalc() /* k = (1-(EXP(-TIMEDELTA/RC))) */ m_k = 0x10000 - 0x10000 * (exp(-1 / (Req * m_C) / machine().sample_rate())); } - - -void filter_rc_device::filter_rc_set_RC(int type, double R1, double R2, double R3, double C) -{ - m_stream->update(); - m_type = type; - m_R1 = R1; - m_R2 = R2; - m_R3 = R3; - m_C = C; - recalc(); -} - -void filter_rc_device::static_set_rc(device_t &device, int type, double R1, double R2, double R3, double C) -{ - downcast<filter_rc_device &>(device).m_type = type; - downcast<filter_rc_device &>(device).m_R1 = R1; - downcast<filter_rc_device &>(device).m_R2 = R2; - downcast<filter_rc_device &>(device).m_R3 = R3; - downcast<filter_rc_device &>(device).m_C = C; -} diff --git a/src/devices/sound/flt_rc.h b/src/devices/sound/flt_rc.h index 7a7851393bf..68a2a201af2 100644 --- a/src/devices/sound/flt_rc.h +++ b/src/devices/sound/flt_rc.h @@ -53,7 +53,7 @@ MCFG_DEVICE_REPLACE(_tag, FILTER_RC, _clock) #define MCFG_FILTER_RC_AC() \ - filter_rc_device::static_set_rc(*device, filter_rc_device::AC, 10000, 0, 0, CAP_U(1)); + downcast<filter_rc_device &>(*device).set_rc(filter_rc_device::AC, 10000, 0, 0, CAP_U(1)); //************************************************************************** @@ -74,10 +74,22 @@ public: filter_rc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - static void static_set_rc(device_t &device, int type, double R1, double R2, double R3, double C); - - void filter_rc_set_RC(int type, double R1, double R2, double R3, double C); + // configuration + void set_rc(int type, double R1, double R2, double R3, double C) + { + m_type = type; + m_R1 = R1; + m_R2 = R2; + m_R3 = R3; + m_C = C; + } + + void filter_rc_set_RC(int type, double R1, double R2, double R3, double C) + { + m_stream->update(); + set_rc(type, R1, R2, R3, C); + recalc(); + } protected: // device-level overrides diff --git a/src/devices/sound/gaelco.h b/src/devices/sound/gaelco.h index 897a182a6cd..d046ab791c4 100644 --- a/src/devices/sound/gaelco.h +++ b/src/devices/sound/gaelco.h @@ -11,10 +11,10 @@ //************************************************************************** #define MCFG_GAELCO_SND_DATA(_tag) \ - gaelco_gae1_device::set_snd_data_tag(*device, "^" _tag); + downcast<gaelco_gae1_device &>(*device).set_snd_data_tag("^" _tag); #define MCFG_GAELCO_BANKS(_offs1, _offs2, _offs3, _offs4) \ - gaelco_gae1_device::set_bank_offsets(*device, _offs1, _offs2, _offs3, _offs4); + downcast<gaelco_gae1_device &>(*device).set_bank_offsets(_offs1, _offs2, _offs3, _offs4); //************************************************************************** @@ -30,14 +30,13 @@ class gaelco_gae1_device : public device_t, public: gaelco_gae1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_snd_data_tag(device_t &device, const char *tag) { downcast<gaelco_gae1_device &>(device).m_snd_data.set_tag(tag); } - static void set_bank_offsets(device_t &device, int offs1, int offs2, int offs3, int offs4) + void set_snd_data_tag(const char *tag) { m_snd_data.set_tag(tag); } + void set_bank_offsets(int offs1, int offs2, int offs3, int offs4) { - gaelco_gae1_device &dev = downcast<gaelco_gae1_device &>(device); - dev.m_banks[0] = offs1; - dev.m_banks[1] = offs2; - dev.m_banks[2] = offs3; - dev.m_banks[3] = offs4; + m_banks[0] = offs1; + m_banks[1] = offs2; + m_banks[2] = offs3; + m_banks[3] = offs4; } DECLARE_WRITE16_MEMBER( gaelcosnd_w ); diff --git a/src/devices/sound/ics2115.h b/src/devices/sound/ics2115.h index 45fe8e7061e..af3d76be7da 100644 --- a/src/devices/sound/ics2115.h +++ b/src/devices/sound/ics2115.h @@ -14,7 +14,7 @@ MCFG_DEVICE_ADD(_tag, ICS2115, _clock) #define MCFG_ICS2115_IRQ_CB(_devcb) \ - devcb = &ics2115_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ics2115_device &>(*device).set_irq_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -28,7 +28,7 @@ public: // construction/destruction ics2115_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<ics2115_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/sound/k007232.h b/src/devices/sound/k007232.h index 874cb410ba2..ee53a90fa94 100644 --- a/src/devices/sound/k007232.h +++ b/src/devices/sound/k007232.h @@ -10,7 +10,7 @@ #pragma once #define MCFG_K007232_PORT_WRITE_HANDLER(_devcb) \ - devcb = &k007232_device::set_port_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<k007232_device &>(*device).set_port_write_handler(DEVCB_##_devcb); class k007232_device : public device_t, public device_sound_interface @@ -18,7 +18,7 @@ class k007232_device : public device_t, public device_sound_interface public: k007232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_port_write_handler(device_t &device, Object &&cb) { return downcast<k007232_device &>(device).m_port_write_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_write_handler(Object &&cb) { return m_port_write_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/sound/k054539.h b/src/devices/sound/k054539.h index a57559c25a2..4b1d55cf534 100644 --- a/src/devices/sound/k054539.h +++ b/src/devices/sound/k054539.h @@ -14,13 +14,13 @@ #define K054539_CB_MEMBER(_name) void _name(double left, double right) #define MCFG_K054539_APAN_CB(_class, _method) \ - k054539_device::set_analog_callback(*device, k054539_device::cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<k054539_device &>(*device).set_analog_callback(k054539_device::cb_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_K054539_REGION_OVERRRIDE(_region) \ - k054539_device::set_override(*device, "^" _region); + downcast<k054539_device &>(*device).set_override("^" _region); #define MCFG_K054539_TIMER_HANDLER(_devcb) \ - devcb = &k054539_device::set_timer_handler(*device, DEVCB_##_devcb); + devcb = &downcast<k054539_device &>(*device).set_timer_handler(DEVCB_##_devcb); class k054539_device : public device_t, @@ -41,9 +41,9 @@ public: // construction/destruction k054539_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_analog_callback(device_t &device, cb_delegate &&cb) { downcast<k054539_device &>(device).m_apan_cb = std::move(cb); } - template <class Object> static devcb_base &set_timer_handler(device_t &device, Object &&cb) { return downcast<k054539_device &>(device).m_timer_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <typename Object> void set_analog_callback(Object &&cb) { m_apan_cb = std::forward<Object>(cb); } + template <class Object> devcb_base &set_timer_handler(Object &&cb) { return m_timer_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/sound/k056800.h b/src/devices/sound/k056800.h index 182700d9b1f..aa05889234c 100644 --- a/src/devices/sound/k056800.h +++ b/src/devices/sound/k056800.h @@ -15,10 +15,10 @@ ***************************************************************************/ #define MCFG_K056800_ADD(tag, clock) \ - MCFG_DEVICE_ADD((tag), K056800, (clock)) + MCFG_DEVICE_ADD((tag), K056800, (clock)) #define MCFG_K056800_INT_HANDLER(cb) \ - devcb = &k056800_device::set_int_handler(*device, (DEVCB_##cb)); + devcb = &downcast<k056800_device &>(*device).set_int_handler((DEVCB_##cb)); @@ -32,8 +32,8 @@ public: // construction/destruction k056800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) { return downcast<k056800_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( host_r ); DECLARE_WRITE8_MEMBER( host_w ); diff --git a/src/devices/sound/lc7535.h b/src/devices/sound/lc7535.h index a43e354c5fa..6cc74d62b6d 100644 --- a/src/devices/sound/lc7535.h +++ b/src/devices/sound/lc7535.h @@ -35,10 +35,10 @@ MCFG_DEVICE_ADD(_tag, LC7535, 0) #define MCFG_LC7535_SELECT_CB(_read) \ - devcb = &lc7535_device::set_select_callback(*device, DEVCB_##_read); + devcb = &downcast<lc7535_device &>(*device).set_select_callback(DEVCB_##_read); #define MCFG_LC7535_VOLUME_CB(_class, _method) \ - lc7535_device::set_volume_callback(*device, lc7535_device::volume_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<lc7535_device &>(*device).set_volume_callback(lc7535_device::volume_delegate(&_class::_method, #_class "::" #_method, this)); #define LC7535_VOLUME_CHANGED(name) void name(int attenuation_right, int attenuation_left, bool loudness) @@ -55,11 +55,9 @@ public: typedef device_delegate<void (int attenuation_right, int attenuation_left, bool loudness)> volume_delegate; - static void set_volume_callback(device_t &device, volume_delegate &&cb) - { downcast<lc7535_device &>(device).m_volume_cb = std::move(cb); } + template <typename Object> void set_volume_callback(Object &&cb) { m_volume_cb = std::forward<Object>(cb); } - template <class Object> static devcb_base &set_select_callback(device_t &device, Object &&cb) - { return downcast<lc7535_device &>(device).m_select_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_select_callback(Object &&cb) { return m_select_cb.set_callback(std::forward<Object>(cb)); } // serial interface DECLARE_WRITE_LINE_MEMBER( ce_w ); diff --git a/src/devices/sound/mea8000.h b/src/devices/sound/mea8000.h index 0ea459c6df3..ffd7a2e76e2 100644 --- a/src/devices/sound/mea8000.h +++ b/src/devices/sound/mea8000.h @@ -14,7 +14,7 @@ #pragma once #define MCFG_MEA8000_REQ_CALLBACK(_write) \ - devcb = &mea8000_device::set_reqwr_callback(*device, DEVCB_##_write); + devcb = &downcast<mea8000_device &>(*device).set_reqwr_callback(*device, DEVCB_##_write); /* define to use double instead of int (slow but useful for debugging) */ #undef MEA8000_FLOAT_MODE @@ -25,7 +25,7 @@ class mea8000_device : public device_t, public device_sound_interface public: mea8000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_req_wr_callback(device_t &device, Object &&cb) { return downcast<mea8000_device &>(device).m_write_req.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_req_wr_callback(Object &&cb) { return m_write_req.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/sound/mm5837.h b/src/devices/sound/mm5837.h index a06cedbc939..171cae609c4 100644 --- a/src/devices/sound/mm5837.h +++ b/src/devices/sound/mm5837.h @@ -29,10 +29,10 @@ MCFG_DEVICE_ADD(_tag, MM5837, 0) #define MCFG_MM5837_VDD(_voltage) \ - mm5837_device::set_vdd_voltage(*device, _voltage); + downcast<mm5837_device &>(*device).set_vdd_voltage(_voltage); #define MCFG_MM5837_OUTPUT_CB(_devcb) \ - devcb = &mm5837_device::set_output_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mm5837_device &>(*device).set_output_callback(DEVCB_##_devcb); //************************************************************************** @@ -46,9 +46,8 @@ public: mm5837_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - static void set_vdd_voltage(device_t &device, int voltage) { downcast<mm5837_device &>(device).m_vdd = voltage; } - template <class Object> static devcb_base &set_output_callback(device_t &device, Object &&cb) - { return downcast<mm5837_device &>(device).m_output_cb.set_callback(std::forward<Object>(cb)); } + void set_vdd_voltage(int voltage) { m_vdd = voltage; } + template <class Object> devcb_base &set_output_callback(Object &&cb) { return m_output_cb.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/sound/mos6560.h b/src/devices/sound/mos6560.h index 004f0ccf3ab..59591b4a5e1 100644 --- a/src/devices/sound/mos6560.h +++ b/src/devices/sound/mos6560.h @@ -79,10 +79,10 @@ #define MCFG_MOS6560_POTX_CALLBACK(_read) \ - devcb = &mos6560_device::set_potx_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos6560_device &>(*device).set_potx_rd_callback(DEVCB_##_read); #define MCFG_MOS6560_POTY_CALLBACK(_read) \ - devcb = &mos6560_device::set_poty_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos6560_device &>(*device).set_poty_rd_callback(DEVCB_##_read); @@ -136,8 +136,8 @@ class mos6560_device : public device_t, public: mos6560_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_potx_rd_callback(device_t &device, Object &&cb) { return downcast<mos6560_device &>(device).m_read_potx.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_poty_rd_callback(device_t &device, Object &&cb) { return downcast<mos6560_device &>(device).m_read_poty.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_potx_rd_callback(Object &&cb) { return m_read_potx.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_poty_rd_callback(Object &&cb) { return m_read_poty.set_callback(std::forward<Object>(cb)); } virtual space_config_vector memory_space_config() const override; diff --git a/src/devices/sound/mos6581.h b/src/devices/sound/mos6581.h index a8dfc0e18de..62c01036f44 100644 --- a/src/devices/sound/mos6581.h +++ b/src/devices/sound/mos6581.h @@ -36,10 +36,10 @@ //************************************************************************** #define MCFG_MOS6581_POTX_CALLBACK(_read) \ - devcb = &mos6581_device::set_potx_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos6581_device &>(*device).set_potx_rd_callback(DEVCB_##_read); #define MCFG_MOS6581_POTY_CALLBACK(_read) \ - devcb = &mos6581_device::set_poty_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos6581_device &>(*device).set_poty_rd_callback(DEVCB_##_read); @@ -64,8 +64,8 @@ public: mos6581_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~mos6581_device(); - template <class Object> static devcb_base &set_potx_rd_callback(device_t &device, Object &&cb) { return downcast<mos6581_device &>(device).m_read_potx.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_poty_rd_callback(device_t &device, Object &&cb) { return downcast<mos6581_device &>(device).m_read_poty.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_potx_rd_callback(Object &&cb) { return m_read_potx.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_poty_rd_callback(Object &&cb) { return m_read_poty.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/msm5205.cpp b/src/devices/sound/msm5205.cpp index 1a3498cdf89..78884068c0b 100644 --- a/src/devices/sound/msm5205.cpp +++ b/src/devices/sound/msm5205.cpp @@ -84,18 +84,6 @@ msm6585_device::msm6585_device(const machine_config &mconfig, const char *tag, d } //------------------------------------------------- -// set_prescaler_selector - configuration helper -//------------------------------------------------- - -void msm5205_device::set_prescaler_selector(device_t &device, int select) -{ - msm5205_device &msm = downcast<msm5205_device &>(device); - msm.m_s1 = BIT(select, 1); - msm.m_s2 = BIT(select, 0); - msm.m_bitwidth = (select & 4) ? 4 : 3; -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/sound/msm5205.h b/src/devices/sound/msm5205.h index 90e6fd58661..ec68e7f21b7 100644 --- a/src/devices/sound/msm5205.h +++ b/src/devices/sound/msm5205.h @@ -8,19 +8,19 @@ /* an interface for the MSM5205 and similar chips */ #define MCFG_MSM5205_PRESCALER_SELECTOR(select) \ - msm5205_device::set_prescaler_selector(*device, (msm5205_device::select)); + downcast<msm5205_device &>(*device).set_prescaler_selector((msm5205_device::select)); #define MCFG_MSM5205_VCK_CALLBACK(cb) \ - devcb = &msm5205_device::set_vck_callback(*device, (DEVCB_##cb)); + devcb = &downcast<msm5205_device &>(*device).set_vck_callback((DEVCB_##cb)); #define MCFG_MSM5205_VCLK_CB(cb) \ - devcb = &msm5205_device::set_vck_legacy_callback(*device, (DEVCB_##cb)); + devcb = &downcast<msm5205_device &>(*device).set_vck_legacy_callback((DEVCB_##cb)); #define MCFG_MSM6585_PRESCALER_SELECTOR(select) \ - msm6585_device::set_prescaler_selector(*device, (msm6585_device::select)); + downcast<msm5205_device &>(*device).set_prescaler_selector((msm6585_device::select)); #define MCFG_MSM6585_VCK_CALLBACK(cb) \ - devcb = &msm6585_device::set_vck_callback(*device, (DEVCB_##cb)); + devcb = &downcast<msm5205_device &>(*device).set_vck_callback((DEVCB_##cb)); class msm5205_device : public device_t, public device_sound_interface @@ -38,9 +38,14 @@ public: msm5205_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - static void set_prescaler_selector(device_t &device, int select); - template <class Object> static devcb_base &set_vck_callback(device_t &device, Object &&cb) { return downcast<msm5205_device &>(device).m_vck_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_vck_legacy_callback(device_t &device, Object &&cb) { return downcast<msm5205_device &>(device).m_vck_legacy_cb.set_callback(std::forward<Object>(cb)); } + void set_prescaler_selector(int select) + { + m_s1 = BIT(select, 1); + m_s2 = BIT(select, 0); + m_bitwidth = (select & 4) ? 4 : 3; + } + template <class Object> devcb_base &set_vck_callback(Object &&cb) { return m_vck_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vck_legacy_callback(Object &&cb) { return m_vck_legacy_cb.set_callback(std::forward<Object>(cb)); } // reset signal should keep for 2cycle of VCLK DECLARE_WRITE_LINE_MEMBER(reset_w); diff --git a/src/devices/sound/msm5232.cpp b/src/devices/sound/msm5232.cpp index fa8ef48387d..eb887a111f7 100644 --- a/src/devices/sound/msm5232.cpp +++ b/src/devices/sound/msm5232.cpp @@ -128,17 +128,16 @@ void msm5232_device::device_stop() #endif } -void msm5232_device::static_set_capacitors(device_t &device, double cap1, double cap2, double cap3, double cap4, double cap5, double cap6, double cap7, double cap8) +void msm5232_device::set_capacitors(double cap1, double cap2, double cap3, double cap4, double cap5, double cap6, double cap7, double cap8) { - msm5232_device &msm = downcast<msm5232_device &>(device); - msm.m_external_capacity[0] = cap1; - msm.m_external_capacity[1] = cap2; - msm.m_external_capacity[2] = cap3; - msm.m_external_capacity[3] = cap4; - msm.m_external_capacity[4] = cap5; - msm.m_external_capacity[5] = cap6; - msm.m_external_capacity[6] = cap7; - msm.m_external_capacity[7] = cap8; + m_external_capacity[0] = cap1; + m_external_capacity[1] = cap2; + m_external_capacity[2] = cap3; + m_external_capacity[3] = cap4; + m_external_capacity[4] = cap5; + m_external_capacity[5] = cap6; + m_external_capacity[6] = cap7; + m_external_capacity[7] = cap8; } /* Default chip clock is 2119040 Hz */ diff --git a/src/devices/sound/msm5232.h b/src/devices/sound/msm5232.h index b650461267b..0010999dedf 100644 --- a/src/devices/sound/msm5232.h +++ b/src/devices/sound/msm5232.h @@ -7,10 +7,10 @@ #define MCFG_MSM5232_SET_CAPACITORS(_a, _b, _c, _d, _e, _f, _g, _h) \ - msm5232_device::static_set_capacitors(*device, _a, _b, _c, _d, _e, _f, _g, _h); + downcast<msm5232_device &>(*device).set_capacitors(_a, _b, _c, _d, _e, _f, _g, _h); #define MCFG_MSM5232_GATE_HANDLER_CB(_devcb) \ - devcb = &msm5232_device::set_gate_handler_callback(*device, DEVCB_##_devcb); + devcb = &downcast<msm5232_device &>(*device).set_gate_handler_callback(DEVCB_##_devcb); class msm5232_device : public device_t, @@ -19,8 +19,8 @@ class msm5232_device : public device_t, public: msm5232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_capacitors(device_t &device, double cap1, double cap2, double cap3, double cap4, double cap5, double cap6, double cap7, double cap8); - template <class Object> static devcb_base &set_gate_handler_callback(device_t &device, Object &&cb) { return downcast<msm5232_device &>(device).m_gate_handler_cb.set_callback(std::forward<Object>(cb)); } + void set_capacitors(double cap1, double cap2, double cap3, double cap4, double cap5, double cap6, double cap7, double cap8); + template <class Object> devcb_base &set_gate_handler_callback(Object &&cb) { return m_gate_handler_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER( write ); void set_clock(int clock); diff --git a/src/devices/sound/namco.h b/src/devices/sound/namco.h index d1ef231e66c..f9d7b68a17e 100644 --- a/src/devices/sound/namco.h +++ b/src/devices/sound/namco.h @@ -7,19 +7,19 @@ #define MCFG_NAMCO_AUDIO_VOICES(_voices) \ - namco_audio_device::set_voices(*device, _voices); + downcast<namco_audio_device &>(*device).set_voices(_voices); #define MCFG_NAMCO_AUDIO_STEREO(_stereo) \ - namco_audio_device::set_stereo(*device, _stereo); + downcast<namco_audio_device &>(*device).set_stereo(_stereo); class namco_audio_device : public device_t, public device_sound_interface { public: - // static configuration - static void set_voices(device_t &device, int voices) { downcast<namco_audio_device &>(device).m_voices = voices; } - static void set_stereo(device_t &device, int stereo) { downcast<namco_audio_device &>(device).m_stereo = stereo; } + // configuration + void set_voices(int voices) { m_voices = voices; } + void set_stereo(int stereo) { m_stereo = stereo; } protected: static constexpr unsigned MAX_VOICES = 8; diff --git a/src/devices/sound/nes_apu.h b/src/devices/sound/nes_apu.h index 1410b02e189..67eb0ac4ff1 100644 --- a/src/devices/sound/nes_apu.h +++ b/src/devices/sound/nes_apu.h @@ -40,10 +40,10 @@ */ #define MCFG_NES_APU_IRQ_HANDLER(_devcb) \ - devcb = &nesapu_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<nesapu_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_NES_APU_MEM_READ_CALLBACK(_devcb) \ - devcb = &nesapu_device::set_mem_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<nesapu_device &>(*device).set_mem_read_callback(DEVCB_##_devcb); class nesapu_device : public device_t, public device_sound_interface @@ -51,9 +51,9 @@ class nesapu_device : public device_t, public: nesapu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<nesapu_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_mem_read_callback(device_t &device, Object &&cb) { return downcast<nesapu_device &>(device).m_mem_read_cb.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mem_read_callback(Object &&cb) { return m_mem_read_cb.set_callback(std::forward<Object>(cb)); } virtual void device_clock_changed() override; diff --git a/src/devices/sound/okim6258.h b/src/devices/sound/okim6258.h index ebaa9ed1559..8194651f277 100644 --- a/src/devices/sound/okim6258.h +++ b/src/devices/sound/okim6258.h @@ -11,19 +11,19 @@ //************************************************************************** #define MCFG_OKIM6258_ADD(tag, clock) \ - MCFG_DEVICE_ADD((tag), OKIM6258, (clock)) + MCFG_DEVICE_ADD((tag), OKIM6258, (clock)) #define MCFG_OKIM6258_REPLACE(tag, clock) \ - MCFG_DEVICE_REPLACE((tag), OKIM6258, (clock)) + MCFG_DEVICE_REPLACE((tag), OKIM6258, (clock)) #define MCFG_OKIM6258_DIVIDER(div) \ - okim6258_device::set_start_div(*device, (okim6258_device::div)); + downcast<okim6258_device &>(*device).set_start_div((okim6258_device::div)); #define MCFG_OKIM6258_ADPCM_TYPE(type) \ - okim6258_device::set_type(*device, (okim6258_device::type)); + downcast<okim6258_device &>(*device).set_type((okim6258_device::type)); #define MCFG_OKIM6258_OUT_BITS(bits) \ - okim6258_device::set_outbits(*device, (okim6258_device::bits)); + downcast<okim6258_device &>(*device).set_outbits((okim6258_device::bits)); //************************************************************************** @@ -48,10 +48,10 @@ public: okim6258_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - static void set_start_div(device_t &device, int div) { downcast<okim6258_device &>(device).m_start_divider = div; } - static void set_type(device_t &device, int type) { downcast<okim6258_device &>(device).m_adpcm_type = type; } - static void set_outbits(device_t &device, int outbit) { downcast<okim6258_device &>(device).m_output_bits = outbit; } + // configuration + void set_start_div(int div) { m_start_divider = div; } + void set_type(int type) { m_adpcm_type = type; } + void set_outbits(int outbit) { m_output_bits = outbit; } DECLARE_READ8_MEMBER( status_r ); DECLARE_WRITE8_MEMBER( data_w ); diff --git a/src/devices/sound/okim6295.cpp b/src/devices/sound/okim6295.cpp index 4b089eb00a6..447433a063e 100644 --- a/src/devices/sound/okim6295.cpp +++ b/src/devices/sound/okim6295.cpp @@ -98,18 +98,6 @@ okim6295_device::okim6295_device(const machine_config &mconfig, const char *tag, //------------------------------------------------- -// static_set_pin7 - configuration helper to set -// the pin 7 state -//------------------------------------------------- - -void okim6295_device::static_set_pin7(device_t &device, int pin7) -{ - okim6295_device &okim6295 = downcast<okim6295_device &>(device); - okim6295.m_pin7_state = pin7; -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/sound/okim6295.h b/src/devices/sound/okim6295.h index 8366bd7b272..0a467fe190a 100644 --- a/src/devices/sound/okim6295.h +++ b/src/devices/sound/okim6295.h @@ -22,15 +22,15 @@ //************************************************************************** #define MCFG_OKIM6295_ADD(tag, clock, pin7) \ - MCFG_DEVICE_ADD((tag), OKIM6295, (clock)) \ - MCFG_OKIM6295_PIN7(pin7) + MCFG_DEVICE_ADD((tag), OKIM6295, (clock)) \ + MCFG_OKIM6295_PIN7(pin7) #define MCFG_OKIM6295_REPLACE(tag, clock, pin7) \ - MCFG_DEVICE_REPLACE((tag), OKIM6295, (clock)) \ - MCFG_OKIM6295_PIN7(pin7) + MCFG_DEVICE_REPLACE((tag), OKIM6295, (clock)) \ + MCFG_OKIM6295_PIN7(pin7) #define MCFG_OKIM6295_PIN7(pin7) \ - okim6295_device::static_set_pin7(*device, (okim6295_device::pin7)); + downcast<okim6295_device &>(*device).config_pin7((okim6295_device::pin7)); //************************************************************************** @@ -55,7 +55,7 @@ public: okim6295_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - static void static_set_pin7(device_t &device, int pin7); + void config_pin7(int pin7) { m_pin7_state = pin7; } // runtime configuration void set_pin7(int pin7); diff --git a/src/devices/sound/pokey.h b/src/devices/sound/pokey.h index 9e093ab252b..668eb34230c 100644 --- a/src/devices/sound/pokey.h +++ b/src/devices/sound/pokey.h @@ -59,45 +59,45 @@ //************************************************************************** #define MCFG_POKEY_POT0_R_CB(_devcb) \ - devcb = &pokey_device::set_pot_r_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<0>(DEVCB_##_devcb); #define MCFG_POKEY_POT1_R_CB(_devcb) \ - devcb = &pokey_device::set_pot_r_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<1>(DEVCB_##_devcb); #define MCFG_POKEY_POT2_R_CB(_devcb) \ - devcb = &pokey_device::set_pot_r_callback<2>(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<2>(DEVCB_##_devcb); #define MCFG_POKEY_POT3_R_CB(_devcb) \ - devcb = &pokey_device::set_pot_r_callback<3>(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<3>(DEVCB_##_devcb); #define MCFG_POKEY_POT4_R_CB(_devcb) \ - devcb = &pokey_device::set_pot_r_callback<4>(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<4>(DEVCB_##_devcb); #define MCFG_POKEY_POT5_R_CB(_devcb) \ - devcb = &pokey_device::set_pot_r_callback<5>(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<5>(DEVCB_##_devcb); #define MCFG_POKEY_POT6_R_CB(_devcb) \ - devcb = &pokey_device::set_pot_r_callback<6>(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<6>(DEVCB_##_devcb); #define MCFG_POKEY_POT7_R_CB(_devcb) \ - devcb = &pokey_device::set_pot_r_callback<7>(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<7>(DEVCB_##_devcb); #define MCFG_POKEY_ALLPOT_R_CB(_devcb) \ - devcb = &pokey_device::set_allpot_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_allpot_r_callback(DEVCB_##_devcb); #define MCFG_POKEY_SERIN_R_CB(_devcb) \ - devcb = &pokey_device::set_serin_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_serin_r_callback(DEVCB_##_devcb); #define MCFG_POKEY_SEROUT_W_CB(_devcb) \ - devcb = &pokey_device::set_serout_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pokey_device &>(*device).set_serout_w_callback(DEVCB_##_devcb); /* k543210 = k5 ... k0 returns bit0: kr1, bit1: kr2 */ /* all are, in contrast to actual hardware, ACTIVE_HIGH */ #define MCFG_POKEY_KEYBOARD_CB(_class, _method) \ - pokey_device::set_keyboard_callback(*device, pokey_device::kb_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<pokey_device &>(*device).set_keyboard_callback(pokey_device::kb_cb_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_POKEY_INTERRUPT_CB(_class, _method) \ - pokey_device::set_interrupt_callback(*device, pokey_device::int_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<pokey_device &>(*device).set_interrupt_callback(pokey_device::int_cb_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_POKEY_OUTPUT_RC(_R, _C, _V) \ @@ -210,13 +210,13 @@ public: // construction/destruction pokey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <unsigned N, class Object> static devcb_base &set_pot_r_callback(device_t &device, Object &&cb) { return downcast<pokey_device &>(device).m_pot_r_cb[N].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_allpot_r_callback(device_t &device, Object &&cb) { return downcast<pokey_device &>(device).m_allpot_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_serin_r_callback(device_t &device, Object &&cb) { return downcast<pokey_device &>(device).m_serin_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_serout_w_callback(device_t &device, Object &&cb) { return downcast<pokey_device &>(device).m_serout_w_cb.set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_pot_r_callback(Object &&cb) { return m_pot_r_cb[N].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_allpot_r_callback(Object &&cb) { return m_allpot_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_serin_r_callback(Object &&cb) { return m_serin_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_serout_w_callback(Object &&cb) { return m_serout_w_cb.set_callback(std::forward<Object>(cb)); } - static void set_keyboard_callback(device_t &device, kb_cb_delegate &&cb) { downcast<pokey_device &>(device).m_keyboard_r = std::move(cb); } - static void set_interrupt_callback(device_t &device, int_cb_delegate &&cb) { downcast<pokey_device &>(device).m_irq_f = std::move(cb); } + template <typename Object> void set_keyboard_callback(Object &&cb) { m_keyboard_r = std::forward<Object>(cb); } + template <typename Object> void set_interrupt_callback(Object &&cb) { m_irq_f = std::forward<Object>(cb); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/qs1000.h b/src/devices/sound/qs1000.h index e6e9746f1ed..a571b7a270c 100644 --- a/src/devices/sound/qs1000.h +++ b/src/devices/sound/qs1000.h @@ -21,28 +21,28 @@ //************************************************************************** #define MCFG_QS1000_EXTERNAL_ROM(_bool) \ - qs1000_device::set_external_rom(*device, _bool); + downcast<qs1000_device &>(*device).set_external_rom(_bool); #define MCFG_QS1000_IN_P1_CB(_devcb) \ - devcb = &qs1000_device::set_in_p1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<qs1000_device &>(*device).set_in_p1_callback(DEVCB_##_devcb); #define MCFG_QS1000_IN_P2_CB(_devcb) \ - devcb = &qs1000_device::set_in_p2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<qs1000_device &>(*device).set_in_p2_callback(DEVCB_##_devcb); #define MCFG_QS1000_IN_P3_CB(_devcb) \ - devcb = &qs1000_device::set_in_p3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<qs1000_device &>(*device).set_in_p3_callback(DEVCB_##_devcb); #define MCFG_QS1000_OUT_P1_CB(_devcb) \ - devcb = &qs1000_device::set_out_p1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<qs1000_device &>(*device).set_out_p1_callback(DEVCB_##_devcb); #define MCFG_QS1000_OUT_P2_CB(_devcb) \ - devcb = &qs1000_device::set_out_p2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<qs1000_device &>(*device).set_out_p2_callback(DEVCB_##_devcb); #define MCFG_QS1000_OUT_P3_CB(_devcb) \ - devcb = &qs1000_device::set_out_p3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<qs1000_device &>(*device).set_out_p3_callback(DEVCB_##_devcb); /*#define MCFG_QS1000_SERIAL_W_CB(_devcb) \ - devcb = &qs1000_device::set_serial_w_callback(*device, DEVCB_##_devcb);*/ + devcb = &downcast<qs1000_device &>(*device).set_serial_w_callback(DEVCB_##_devcb);*/ //************************************************************************** // TYPE DEFINITIONS @@ -58,14 +58,14 @@ public: // construction/destruction qs1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_external_rom(device_t &device, bool external_rom) { downcast<qs1000_device &>(device).m_external_rom = external_rom; } - template <class Object> static devcb_base &set_in_p1_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_in_p1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_p2_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_in_p2_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_p3_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_in_p3_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_p1_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_out_p1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_p2_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_out_p2_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_p3_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_out_p3_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_serial_w_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_serial_w_cb.set_callback(std::forward<Object>(cb)); } + void set_external_rom(bool external_rom) { m_external_rom = external_rom; } + template <class Object> devcb_base &set_in_p1_callback(Object &&cb) { return m_in_p1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_p2_callback(Object &&cb) { return m_in_p2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_p3_callback(Object &&cb) { return m_in_p3_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_p1_callback(Object &&cb) { return m_out_p1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_p2_callback(Object &&cb) { return m_out_p2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_p3_callback(Object &&cb) { return m_out_p3_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_serial_w_callback(Object &&cb) { return m_serial_w_cb.set_callback(std::forward<Object>(cb)); } // external void serial_in(uint8_t data); diff --git a/src/devices/sound/rf5c68.h b/src/devices/sound/rf5c68.h index a841ae44e84..0638315d1dd 100644 --- a/src/devices/sound/rf5c68.h +++ b/src/devices/sound/rf5c68.h @@ -20,7 +20,7 @@ MCFG_DEVICE_REPLACE(_tag, RF5C68, _clock) #define MCFG_RF5C68_SAMPLE_END_CB(_class, _method) \ - rf5c68_device::set_end_callback(*device, rf5c68_device::sample_end_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<rf5c68_device &>(*device).set_end_callback(rf5c68_device::sample_end_cb_delegate(&_class::_method, #_class "::" #_method, this)); //************************************************************************** // TYPE DEFINITIONS @@ -39,7 +39,7 @@ public: rf5c68_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_end_callback(device_t &device, sample_end_cb_delegate &&cb) { downcast<rf5c68_device &>(device).m_sample_end_cb = std::move(cb); } + template <typename Object> void set_end_callback(Object &&cb) { m_sample_end_cb = std::forward<Object>(cb); } DECLARE_READ8_MEMBER( rf5c68_r ); DECLARE_WRITE8_MEMBER( rf5c68_w ); diff --git a/src/devices/sound/s14001a.h b/src/devices/sound/s14001a.h index 13aa4d032ae..78547f0b618 100644 --- a/src/devices/sound/s14001a.h +++ b/src/devices/sound/s14001a.h @@ -9,10 +9,10 @@ #define MAME_SOUND_S14001A_H #define MCFG_S14001A_BSY_HANDLER(_devcb) \ - devcb = &s14001a_device::set_bsy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<s14001a_device &>(*device).set_bsy_handler(DEVCB_##_devcb); #define MCFG_S14001A_EXT_READ_HANDLER(_devcb) \ - devcb = &s14001a_device::set_ext_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<s14001a_device &>(*device).set_ext_read_handler(DEVCB_##_devcb); class s14001a_device : public device_t, public device_sound_interface @@ -20,9 +20,9 @@ class s14001a_device : public device_t, public device_sound_interface public: s14001a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_bsy_handler(device_t &device, Object &&cb) { return downcast<s14001a_device &>(device).m_bsy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast<s14001a_device &>(device).m_ext_read_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_bsy_handler(Object &&cb) { return m_bsy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ext_read_handler(Object &&cb) { return m_ext_read_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ_LINE_MEMBER(busy_r); // /BUSY (pin 40) DECLARE_READ_LINE_MEMBER(romen_r); // ROM /EN (pin 9) diff --git a/src/devices/sound/samples.h b/src/devices/sound/samples.h index d6c56546928..666fe320f4c 100644 --- a/src/devices/sound/samples.h +++ b/src/devices/sound/samples.h @@ -28,15 +28,15 @@ DECLARE_DEVICE_TYPE(SAMPLES, samples_device) //************************************************************************** #define MCFG_SAMPLES_CHANNELS(_channels) \ - samples_device::static_set_channels(*device, _channels); + downcast<samples_device &>(*device).set_channels(_channels); #define MCFG_SAMPLES_NAMES(_names) \ - samples_device::static_set_samples_names(*device, _names); + downcast<samples_device &>(*device).set_samples_names(_names); #define SAMPLES_START_CB_MEMBER(_name) void _name() #define MCFG_SAMPLES_START_CB(_class, _method) \ - samples_device::set_samples_start_callback(*device, samples_device::start_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<samples_device &>(*device).set_samples_start_callback(samples_device::start_cb_delegate(&_class::_method, #_class "::" #_method, this)); //************************************************************************** // TYPE DEFINITIONS @@ -53,10 +53,10 @@ public: // construction/destruction samples_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void static_set_channels(device_t &device, uint8_t channels) { downcast<samples_device &>(device).m_channels = channels; } - static void static_set_samples_names(device_t &device, const char *const *names) { downcast<samples_device &>(device).m_names = names; } - static void set_samples_start_callback(device_t &device, start_cb_delegate &&cb) { downcast<samples_device &>(device).m_samples_start_cb = std::move(cb); } + // configuration helpers + void set_channels(uint8_t channels) { m_channels = channels; } + void set_samples_names(const char *const *names) { m_names = names; } + template <typename Object> void set_samples_start_callback(Object &&cb) { m_samples_start_cb = std::forward<Object>(cb); } // getters bool playing(uint8_t channel) const; diff --git a/src/devices/sound/scsp.h b/src/devices/sound/scsp.h index e1e8b7656c4..d59209fda47 100644 --- a/src/devices/sound/scsp.h +++ b/src/devices/sound/scsp.h @@ -16,16 +16,16 @@ #define MCFG_SCSP_ROFFSET(_offs) \ - scsp_device::set_roffset(*device, _offs); + downcast<scsp_device &>(*device).set_roffset(_offs); #define MCFG_SCSP_IRQ_CB(_devcb) \ - devcb = &scsp_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<scsp_device &>(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_SCSP_MAIN_IRQ_CB(_devcb) \ - devcb = &scsp_device::set_main_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<scsp_device &>(*device).set_main_irq_callback(DEVCB_##_devcb); #define MCFG_SCSP_EXTS_CB(_devcb) \ - devcb = &scsp_device::set_exts_callback(*device, DEVCB_##_devcb); + devcb = &downcast<scsp_device &>(*device).set_exts_callback(DEVCB_##_devcb); class scsp_device : public device_t, @@ -34,10 +34,10 @@ class scsp_device : public device_t, public: scsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_roffset(device_t &device, int roffset) { downcast<scsp_device &>(device).m_roffset = roffset; } - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<scsp_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_main_irq_callback(device_t &device, Object &&cb) { return downcast<scsp_device &>(device).m_main_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_exts_callback(device_t &device, Object &&cb) { return downcast<scsp_device &>(device).m_exts_cb.set_callback(std::forward<Object>(cb)); } + void set_roffset(int roffset) { m_roffset = roffset; } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_main_irq_callback(Object &&cb) { return m_main_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_exts_callback(Object &&cb) { return m_exts_cb.set_callback(std::forward<Object>(cb)); } // SCSP register access DECLARE_READ16_MEMBER( read ); diff --git a/src/devices/sound/segapcm.h b/src/devices/sound/segapcm.h index ec3e8d2dbfa..14825754023 100644 --- a/src/devices/sound/segapcm.h +++ b/src/devices/sound/segapcm.h @@ -15,16 +15,16 @@ //************************************************************************** #define MCFG_SEGAPCM_ADD(tag, clock) \ - MCFG_DEVICE_ADD((tag), SEGAPCM, (clock)) + MCFG_DEVICE_ADD((tag), SEGAPCM, (clock)) #define MCFG_SEGAPCM_REPLACE(tag, clock) \ - MCFG_DEVICE_REPLACE((tag), SEGAPCM, (clock)) + MCFG_DEVICE_REPLACE((tag), SEGAPCM, (clock)) #define MCFG_SEGAPCM_BANK(bank) \ - segapcm_device::set_bank(*device, (segapcm_device::bank)); + downcast<segapcm_device &>(*device).set_bank((segapcm_device::bank)); #define MCFG_SEGAPCM_BANK_MASK(bank, mask) \ - segapcm_device::set_bank(*device, (segapcm_device::bank) | (segapcm_device::mask)); + downcast<segapcm_device &>(*device).set_bank((segapcm_device::bank) | (segapcm_device::mask)); //************************************************************************** @@ -45,8 +45,8 @@ public: segapcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - static void set_bank(device_t &device, int bank) { downcast<segapcm_device &>(device).m_bank = bank; } + // configuration + void set_bank(int bank) { m_bank = bank; } DECLARE_WRITE8_MEMBER( sega_pcm_w ); DECLARE_READ8_MEMBER( sega_pcm_r ); diff --git a/src/devices/sound/sn76477.h b/src/devices/sound/sn76477.h index a785fc936d6..530e9f416ff 100644 --- a/src/devices/sound/sn76477.h +++ b/src/devices/sound/sn76477.h @@ -51,43 +51,43 @@ #define MCFG_SN76477_NOISE_PARAMS(_clock_res, _filter_res, _filter_cap) \ - sn76477_device::set_noise_params(*device, _clock_res, _filter_res, _filter_cap); + downcast<sn76477_device &>(*device).set_noise_params(_clock_res, _filter_res, _filter_cap); #define MCFG_SN76477_DECAY_RES(_decay_res) \ - sn76477_device::set_decay_res(*device, _decay_res); + downcast<sn76477_device &>(*device).set_decay_res(_decay_res); #define MCFG_SN76477_ATTACK_PARAMS(_decay_cap, _res) \ - sn76477_device::set_attack_params(*device, _decay_cap, _res); + downcast<sn76477_device &>(*device).set_attack_params(_decay_cap, _res); #define MCFG_SN76477_AMP_RES(_amp_res) \ - sn76477_device::set_amp_res(*device, _amp_res); + downcast<sn76477_device &>(*device).set_amp_res(_amp_res); #define MCFG_SN76477_FEEDBACK_RES(_feedback_res) \ - sn76477_device::set_feedback_res(*device, _feedback_res); + downcast<sn76477_device &>(*device).set_feedback_res(_feedback_res); #define MCFG_SN76477_VCO_PARAMS(_volt, _cap, _res) \ - sn76477_device::set_vco_params(*device, _volt, _cap, _res); + downcast<sn76477_device &>(*device).set_vco_params(_volt, _cap, _res); #define MCFG_SN76477_PITCH_VOLTAGE(_volt) \ - sn76477_device::set_pitch_voltage(*device, _volt); + downcast<sn76477_device &>(*device).set_pitch_voltage(_volt); #define MCFG_SN76477_SLF_PARAMS(_cap, _res) \ - sn76477_device::set_slf_params(*device, _cap, _res); + downcast<sn76477_device &>(*device).set_slf_params(_cap, _res); #define MCFG_SN76477_ONESHOT_PARAMS(_cap, _res) \ - sn76477_device::set_oneshot_params(*device, _cap, _res); + downcast<sn76477_device &>(*device).set_oneshot_params(_cap, _res); #define MCFG_SN76477_VCO_MODE(_mode) \ - sn76477_device::set_vco_mode(*device, _mode); + downcast<sn76477_device &>(*device).set_vco_mode(_mode); #define MCFG_SN76477_MIXER_PARAMS(_a, _b, _c) \ - sn76477_device::set_mixer_params(*device, _a, _b, _c); + downcast<sn76477_device &>(*device).set_mixer_params(_a, _b, _c); #define MCFG_SN76477_ENVELOPE_PARAMS(_env1, _env2) \ - sn76477_device::set_envelope_params(*device, _env1, _env2); + downcast<sn76477_device &>(*device).set_envelope_params(_env1, _env2); #define MCFG_SN76477_ENABLE(_enable) \ - sn76477_device::set_enable(*device, _enable); + downcast<sn76477_device &>(*device).set_enable(_enable); class sn76477_device : public device_t, public device_sound_interface @@ -95,57 +95,50 @@ class sn76477_device : public device_t, public: sn76477_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_noise_params(device_t &device, double clock_res, double filter_res, double filter_cap) + void set_noise_params(double clock_res, double filter_res, double filter_cap) { - sn76477_device &dev = downcast<sn76477_device &>(device); - dev.m_noise_clock_res = clock_res; - dev.m_noise_filter_res = filter_res; - dev.m_noise_filter_cap = filter_cap; + m_noise_clock_res = clock_res; + m_noise_filter_res = filter_res; + m_noise_filter_cap = filter_cap; } - static void set_decay_res(device_t &device, double decay_res) { downcast<sn76477_device &>(device).m_decay_res = decay_res; } - static void set_attack_params(device_t &device, double decay_cap, double res) + void set_decay_res(double decay_res) { m_decay_res = decay_res; } + void set_attack_params(double decay_cap, double res) { - sn76477_device &dev = downcast<sn76477_device &>(device); - dev.m_attack_decay_cap = decay_cap; - dev.m_attack_res = res; + m_attack_decay_cap = decay_cap; + m_attack_res = res; } - static void set_amp_res(device_t &device, double amp_res) { downcast<sn76477_device &>(device).m_amplitude_res = amp_res; } - static void set_feedback_res(device_t &device, double feedback_res) { downcast<sn76477_device &>(device).m_feedback_res = feedback_res; } - static void set_vco_params(device_t &device, double volt, double cap, double res) + void set_amp_res(double amp_res) { m_amplitude_res = amp_res; } + void set_feedback_res(double feedback_res) { m_feedback_res = feedback_res; } + void set_vco_params(double volt, double cap, double res) { - sn76477_device &dev = downcast<sn76477_device &>(device); - dev.m_vco_voltage = volt; - dev.m_vco_cap = cap; - dev.m_vco_res = res; + m_vco_voltage = volt; + m_vco_cap = cap; + m_vco_res = res; } - static void set_pitch_voltage(device_t &device, double volt) { downcast<sn76477_device &>(device).m_pitch_voltage = volt; } - static void set_slf_params(device_t &device, double cap, double res) + void set_pitch_voltage(double volt) { m_pitch_voltage = volt; } + void set_slf_params(double cap, double res) { - sn76477_device &dev = downcast<sn76477_device &>(device); - dev.m_slf_cap = cap; - dev.m_slf_res = res; + m_slf_cap = cap; + m_slf_res = res; } - static void set_oneshot_params(device_t &device, double cap, double res) + void set_oneshot_params(double cap, double res) { - sn76477_device &dev = downcast<sn76477_device &>(device); - dev.m_one_shot_cap = cap; - dev.m_one_shot_res = res; + m_one_shot_cap = cap; + m_one_shot_res = res; } - static void set_vco_mode(device_t &device, uint32_t mode) { downcast<sn76477_device &>(device).m_vco_mode = mode; } - static void set_mixer_params(device_t &device, uint32_t a, uint32_t b, uint32_t c) + void set_vco_mode(uint32_t mode) { m_vco_mode = mode; } + void set_mixer_params(uint32_t a, uint32_t b, uint32_t c) { - sn76477_device &dev = downcast<sn76477_device &>(device); - dev.m_mixer_a = a; - dev.m_mixer_b = b; - dev.m_mixer_c = c; + m_mixer_a = a; + m_mixer_b = b; + m_mixer_c = c; } - static void set_envelope_params(device_t &device, uint32_t env1, uint32_t env2) + void set_envelope_params(uint32_t env1, uint32_t env2) { - sn76477_device &dev = downcast<sn76477_device &>(device); - dev.m_envelope_1 = env1; - dev.m_envelope_2 = env2; + m_envelope_1 = env1; + m_envelope_2 = env2; } - static void set_enable(device_t &device, uint32_t enable) { downcast<sn76477_device &>(device).m_enable = enable; } + void set_enable(uint32_t enable) { m_enable = enable; } /* these functions take 0 or 1 as a logic input */ diff --git a/src/devices/sound/sn76496.h b/src/devices/sound/sn76496.h index 22ad524e308..65e346ef047 100644 --- a/src/devices/sound/sn76496.h +++ b/src/devices/sound/sn76496.h @@ -19,13 +19,13 @@ DECLARE_DEVICE_TYPE(SEGAPSG, segapsg_device) #define MCFG_SN76496_READY_HANDLER(cb) \ - devcb = &sn76496_base_device::set_ready_handler(*device, (DEVCB_##cb)); + devcb = &downcast<sn76496_base_device &>(*device).set_ready_handler((DEVCB_##cb)); class sn76496_base_device : public device_t, public device_sound_interface { public: - // static configuration helpers - template <class Object> static devcb_base &set_ready_handler(device_t &device, Object &&cb) { return downcast<sn76496_base_device &>(device).m_ready_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_ready_handler(Object &&cb) { return m_ready_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER( stereo_w ); void write(uint8_t data); diff --git a/src/devices/sound/sp0250.h b/src/devices/sound/sp0250.h index 13fc7973f0f..43bbe3b6421 100644 --- a/src/devices/sound/sp0250.h +++ b/src/devices/sound/sp0250.h @@ -10,7 +10,7 @@ class sp0250_device : public device_t, public device_sound_interface public: sp0250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast<sp0250_device &>(device).m_drq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_callback(Object &&cb) { return m_drq.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER( write ); uint8_t drq_r(); @@ -50,6 +50,6 @@ private: DECLARE_DEVICE_TYPE(SP0250, sp0250_device) #define MCFG_SP0250_DRQ_CALLBACK(_write) \ - devcb = &sp0250_device::set_drq_callback(*device, DEVCB_##_write); + devcb = &downcast<sp0250_device &>(*device).set_drq_callback(DEVCB_##_write); #endif // MAME_SOUND_SP0250_H diff --git a/src/devices/sound/sp0256.h b/src/devices/sound/sp0256.h index b7c08e72a46..aa91d415d54 100644 --- a/src/devices/sound/sp0256.h +++ b/src/devices/sound/sp0256.h @@ -36,10 +36,10 @@ #pragma once #define MCFG_SP0256_DATA_REQUEST_CB(_devcb) \ - devcb = &sp0256_device::set_data_request_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sp0256_device &>(*device).set_data_request_callback(DEVCB_##_devcb); #define MCFG_SP0256_STANDBY_CB(_devcb) \ - devcb = &sp0256_device::set_standby_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sp0256_device &>(*device).set_standby_callback(DEVCB_##_devcb); class sp0256_device : public device_t, @@ -48,8 +48,8 @@ class sp0256_device : public device_t, public: sp0256_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_data_request_callback(device_t &device, Object &&cb) { return downcast<sp0256_device &>(device).m_drq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_standby_callback(device_t &device, Object &&cb) { return downcast<sp0256_device &>(device).m_sby_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_request_callback(Object &&cb) { return m_drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_standby_callback(Object &&cb) { return m_sby_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER(ald_w); DECLARE_READ_LINE_MEMBER(lrq_r); diff --git a/src/devices/sound/spkrdev.h b/src/devices/sound/spkrdev.h index 42bf3625876..ac9535108ed 100644 --- a/src/devices/sound/spkrdev.h +++ b/src/devices/sound/spkrdev.h @@ -14,7 +14,7 @@ #define MCFG_SPEAKER_LEVELS(_num, _levels) \ - speaker_sound_device::static_set_levels(*device, _num, _levels); + downcast<speaker_sound_device &>(*device).set_levels(_num, _levels); class speaker_sound_device : public device_t, public device_sound_interface @@ -23,8 +23,8 @@ public: speaker_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~speaker_sound_device() {} - // static configuration - static void static_set_levels(device_t &device, int num_levels, const int16_t *levels) { downcast<speaker_sound_device &>(device).m_num_levels = num_levels; downcast<speaker_sound_device &>(device).m_levels = levels;} + // configuration + void set_levels(int num_levels, const int16_t *levels) { m_num_levels = num_levels; m_levels = levels;} void level_w(int new_level); diff --git a/src/devices/sound/spu.h b/src/devices/sound/spu.h index fe55ce98ab0..05bce4a5421 100644 --- a/src/devices/sound/spu.h +++ b/src/devices/sound/spu.h @@ -10,7 +10,7 @@ //************************************************************************** #define MCFG_SPU_IRQ_HANDLER(_devcb) \ - devcb = &spu_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<spu_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_SPU_ADD(_tag, _clock) \ MCFG_DEVICE_MODIFY( "maincpu" ) \ @@ -230,8 +230,8 @@ protected: public: spu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<spu_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } void dma_read( uint32_t *ram, uint32_t n_address, int32_t n_size ); void dma_write( uint32_t *ram, uint32_t n_address, int32_t n_size ); diff --git a/src/devices/sound/st0016.h b/src/devices/sound/st0016.h index 6138e352368..264a0536322 100644 --- a/src/devices/sound/st0016.h +++ b/src/devices/sound/st0016.h @@ -11,7 +11,7 @@ //************************************************************************** #define MCFG_ST0016_SOUNDRAM_READ_CB(_devcb) \ - devcb = &st0016_device::set_soundram_callback(*device, DEVCB_##_devcb); + devcb = &downcast<st0016_device &>(*device).set_soundram_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -24,7 +24,7 @@ class st0016_device : public device_t, public device_sound_interface public: st0016_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_soundram_callback(device_t &device, Object &&cb) { return downcast<st0016_device &>(device).m_ram_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_soundram_callback(Object &&cb) { return m_ram_read_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( st0016_snd_r ); DECLARE_WRITE8_MEMBER( st0016_snd_w ); diff --git a/src/devices/sound/tms36xx.h b/src/devices/sound/tms36xx.h index d5a349b8713..01fdc22d306 100644 --- a/src/devices/sound/tms36xx.h +++ b/src/devices/sound/tms36xx.h @@ -10,19 +10,19 @@ //************************************************************************** #define MCFG_TMS36XX_ADD(tag, clock) \ - MCFG_DEVICE_ADD((tag), TMS36XX, (clock)) + MCFG_DEVICE_ADD((tag), TMS36XX, (clock)) #define MCFG_TMS36XX_REPLACE(tag, clock) \ - MCFG_DEVICE_REPLACE((tag), TMS36XX, (clock)) + MCFG_DEVICE_REPLACE((tag), TMS36XX, (clock)) #define MCFG_TMS36XX_TYPE(type) \ - tms36xx_device::set_subtype(*device, (tms36xx_device::subtype::type)); + downcast<tms36xx_device &>(*device).set_subtype((tms36xx_device::subtype::type)); #define MCFG_TMS36XX_DECAY_TIMES(_dec0, _dec1, _dec2, _dec3, _dec4, _dec5) \ - tms36xx_device::set_decays(*device, _dec0, _dec1, _dec2, _dec3, _dec4, _dec5); + downcast<tms36xx_device &>(*device).set_decays(_dec0, _dec1, _dec2, _dec3, _dec4, _dec5); #define MCFG_TMS36XX_TUNE_SPEED(_speed) \ - tms36xx_device::set_tune_speed(*device, _speed); + downcast<tms36xx_device &>(*device).set_tune_speed(_speed); //************************************************************************** @@ -46,38 +46,33 @@ public: tms36xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_subtype(device_t &device, subtype type) + void set_subtype(subtype type) { - tms36xx_device &dev = downcast<tms36xx_device &>(device); switch (type) { case subtype::MM6221AA: - dev.m_subtype = "MM6221AA"; + m_subtype = "MM6221AA"; break; case subtype::TMS3615: - dev.m_subtype = "TMS3615"; + m_subtype = "TMS3615"; break; case subtype::TMS3617: - dev.m_subtype = "TMS3617"; + m_subtype = "TMS3617"; break; default: fatalerror("Invalid TMS36XX type: %d\n", int(type)); break; } } - static void set_tune_speed(device_t &device, double speed) + void set_tune_speed(double speed) { m_speed = (speed > 0) ? TMS36XX_VMAX / speed : TMS36XX_VMAX; } + void set_decays(double decay_0, double decay_1, double decay_2, double decay_3, double decay_4, double decay_5) { - downcast<tms36xx_device &>(device).m_speed = (speed > 0) ? TMS36XX_VMAX / speed : TMS36XX_VMAX; - } - static void set_decays(device_t &device, double decay_0, double decay_1, double decay_2, double decay_3, double decay_4, double decay_5) - { - tms36xx_device &dev = downcast<tms36xx_device &>(device); - dev.m_decay_time[0] = decay_0; - dev.m_decay_time[1] = decay_1; - dev.m_decay_time[2] = decay_2; - dev.m_decay_time[3] = decay_3; - dev.m_decay_time[4] = decay_4; - dev.m_decay_time[5] = decay_5; + m_decay_time[0] = decay_0; + m_decay_time[1] = decay_1; + m_decay_time[2] = decay_2; + m_decay_time[3] = decay_3; + m_decay_time[4] = decay_4; + m_decay_time[5] = decay_5; } protected: diff --git a/src/devices/sound/tms5110.h b/src/devices/sound/tms5110.h index 89daa0637a7..01de692eb8d 100644 --- a/src/devices/sound/tms5110.h +++ b/src/devices/sound/tms5110.h @@ -14,19 +14,19 @@ /* usually 800000 for 10000 Hz sample rate. */ #define MCFG_TMS5110_M0_CB(_devcb) \ - devcb = &tms5110_device::set_m0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5110_device &>(*device).set_m0_callback(DEVCB_##_devcb); #define MCFG_TMS5110_M1_CB(_devcb) \ - devcb = &tms5110_device::set_m1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5110_device &>(*device).set_m1_callback(DEVCB_##_devcb); #define MCFG_TMS5110_ADDR_CB(_devcb) \ - devcb = &tms5110_device::set_addr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5110_device &>(*device).set_addr_callback(DEVCB_##_devcb); #define MCFG_TMS5110_DATA_CB(_devcb) \ - devcb = &tms5110_device::set_data_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5110_device &>(*device).set_data_callback(DEVCB_##_devcb); #define MCFG_TMS5110_ROMCLK_CB(_devcb) \ - devcb = &tms5110_device::set_romclk_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5110_device &>(*device).set_romclk_callback(DEVCB_##_devcb); class tms5110_device : public device_t, public device_sound_interface @@ -51,11 +51,11 @@ public: tms5110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_m0_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_m0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_m1_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_m1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_addr_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_addr_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_data_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_romclk_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_romclk_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_m0_callback(Object &&cb) { return m_m0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_m1_callback(Object &&cb) { return m_m1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_addr_callback(Object &&cb) { return m_addr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_callback(Object &&cb) { return m_data_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_romclk_callback(Object &&cb) { return m_romclk_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER( ctl_w ); DECLARE_READ8_MEMBER( ctl_r ); @@ -277,17 +277,17 @@ class tmsprom_device : public device_t public: tmsprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_region(device_t &device, const char *region) { downcast<tmsprom_device &>(device).m_prom.set_tag(region); } - static void set_rom_size(device_t &device, uint32_t rom_size) { downcast<tmsprom_device &>(device).m_rom_size = rom_size; } - static void set_pdc_bit(device_t &device, uint8_t pdc_bit) { downcast<tmsprom_device &>(device).m_pdc_bit = pdc_bit; } - static void set_ctl1_bit(device_t &device, uint8_t ctl1_bit) { downcast<tmsprom_device &>(device).m_ctl1_bit = ctl1_bit; } - static void set_ctl2_bit(device_t &device, uint8_t ctl2_bit) { downcast<tmsprom_device &>(device).m_ctl2_bit = ctl2_bit; } - static void set_ctl4_bit(device_t &device, uint8_t ctl4_bit) { downcast<tmsprom_device &>(device).m_ctl4_bit = ctl4_bit; } - static void set_ctl8_bit(device_t &device, uint8_t ctl8_bit) { downcast<tmsprom_device &>(device).m_ctl8_bit = ctl8_bit; } - static void set_reset_bit(device_t &device, uint8_t reset_bit) { downcast<tmsprom_device &>(device).m_reset_bit = reset_bit; } - static void set_stop_bit(device_t &device, uint8_t stop_bit) { downcast<tmsprom_device &>(device).m_stop_bit = stop_bit; } - template<class _Object> static devcb_base &set_pdc_callback(device_t &device, _Object object) { return downcast<tmsprom_device &>(device).m_pdc_cb.set_callback(object); } - template<class _Object> static devcb_base &set_ctl_callback(device_t &device, _Object object) { return downcast<tmsprom_device &>(device).m_ctl_cb.set_callback(object); } + void set_region(const char *region) { m_prom.set_tag(region); } + void set_rom_size(uint32_t rom_size) { m_rom_size = rom_size; } + void set_pdc_bit(uint8_t pdc_bit) { m_pdc_bit = pdc_bit; } + void set_ctl1_bit(uint8_t ctl1_bit) { m_ctl1_bit = ctl1_bit; } + void set_ctl2_bit(uint8_t ctl2_bit) { m_ctl2_bit = ctl2_bit; } + void set_ctl4_bit(uint8_t ctl4_bit) { m_ctl4_bit = ctl4_bit; } + void set_ctl8_bit(uint8_t ctl8_bit) { m_ctl8_bit = ctl8_bit; } + void set_reset_bit(uint8_t reset_bit) { m_reset_bit = reset_bit; } + void set_stop_bit(uint8_t stop_bit) { m_stop_bit = stop_bit; } + template<class Object> devcb_base &set_pdc_callback(Object object) { return m_pdc_cb.set_callback(std::forward<Object>(object)); } + template<class Object> devcb_base &set_ctl_callback(Object object) { return m_ctl_cb.set_callback(std::forward<Object>(object)); } DECLARE_WRITE_LINE_MEMBER( m0_w ); DECLARE_READ_LINE_MEMBER( data_r ); @@ -338,36 +338,36 @@ private: DECLARE_DEVICE_TYPE(TMSPROM, tmsprom_device) #define MCFG_TMSPROM_REGION(_region) \ - tmsprom_device::set_region(*device, "^" _region); + downcast<tmsprom_device &>(*device).set_region("^" _region); #define MCFG_TMSPROM_ROM_SIZE(_size) \ - tmsprom_device::set_rom_size(*device, _size); + downcast<tmsprom_device &>(*device).set_rom_size(_size); #define MCFG_TMSPROM_PDC_BIT(_bit) \ - tmsprom_device::set_pdc_bit(*device, _bit); + downcast<tmsprom_device &>(*device).set_pdc_bit(_bit); #define MCFG_TMSPROM_CTL1_BIT(_bit) \ - tmsprom_device::set_ctl1_bit(*device, _bit); + downcast<tmsprom_device &>(*device).set_ctl1_bit(_bit); #define MCFG_TMSPROM_CTL2_BIT(_bit) \ - tmsprom_device::set_ctl2_bit(*device, _bit); + downcast<tmsprom_device &>(*device).set_ctl2_bit(_bit); #define MCFG_TMSPROM_CTL4_BIT(_bit) \ - tmsprom_device::set_ctl4_bit(*device, _bit); + downcast<tmsprom_device &>(*device).set_ctl4_bit(_bit); #define MCFG_TMSPROM_CTL8_BIT(_bit) \ - tmsprom_device::set_ctl8_bit(*device, _bit); + downcast<tmsprom_device &>(*device).set_ctl8_bit(_bit); #define MCFG_TMSPROM_RESET_BIT(_bit) \ - tmsprom_device::set_reset_bit(*device, _bit); + downcast<tmsprom_device &>(*device).set_reset_bit(_bit); #define MCFG_TMSPROM_STOP_BIT(_bit) \ - tmsprom_device::set_stop_bit(*device, _bit); + downcast<tmsprom_device &>(*device).set_stop_bit(_bit); #define MCFG_TMSPROM_PDC_CB(_devcb) \ - devcb = &tmsprom_device::set_pdc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmsprom_device &>(*device).set_pdc_callback(DEVCB_##_devcb); #define MCFG_TMSPROM_CTL_CB(_devcb) \ - devcb = &tmsprom_device::set_ctl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmsprom_device &>(*device).set_ctl_callback(DEVCB_##_devcb); #endif // MAME_SOUND_TMS5110_H diff --git a/src/devices/sound/tms5220.h b/src/devices/sound/tms5220.h index 38b9983ac94..4995f7fae3b 100644 --- a/src/devices/sound/tms5220.h +++ b/src/devices/sound/tms5220.h @@ -16,31 +16,31 @@ /* IRQ callback function, active low, i.e. state=0 */ #define MCFG_TMS52XX_IRQ_HANDLER(_devcb) \ - devcb = &tms5220_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<tms5220_device &>(*device).set_irq_handler(DEVCB_##_devcb); /* Ready callback function, active low, i.e. state=0 */ #define MCFG_TMS52XX_READYQ_HANDLER(_devcb) \ - devcb = &tms5220_device::set_readyq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<tms5220_device &>(*device).set_readyq_handler(DEVCB_##_devcb); /* old VSM handler, remove me! */ #define MCFG_TMS52XX_SPEECHROM(_tag) \ - tms5220_device::set_speechrom_tag(*device, _tag); + downcast<tms5220_device &>(*device).set_speechrom_tag(_tag); /* new VSM handler */ #define MCFG_TMS52XX_M0_CB(_devcb) \ - devcb = &tms5220_device::set_m0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5220_device &>(*device).set_m0_callback(DEVCB_##_devcb); #define MCFG_TMS52XX_M1_CB(_devcb) \ - devcb = &tms5220_device::set_m1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5220_device &>(*device).set_m1_callback(DEVCB_##_devcb); #define MCFG_TMS52XX_ADDR_CB(_devcb) \ - devcb = &tms5220_device::set_addr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5220_device &>(*device).set_addr_callback(DEVCB_##_devcb); #define MCFG_TMS52XX_DATA_CB(_devcb) \ - devcb = &tms5220_device::set_data_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5220_device &>(*device).set_data_callback(DEVCB_##_devcb); #define MCFG_TMS52XX_ROMCLK_CB(_devcb) \ - devcb = &tms5220_device::set_romclk_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms5220_device &>(device).set_romclk_callback(DEVCB_##_devcb); class tms5220_device : public device_t, public device_sound_interface { @@ -53,17 +53,17 @@ public: tms5220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_readyq_handler(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_readyq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_readyq_handler(Object &&cb) { return m_readyq_handler.set_callback(std::forward<Object>(cb)); } // old VSM support, remove me! - static void set_speechrom_tag(device_t &device, const char *_tag) { downcast<tms5220_device &>(device).m_speechrom_tag = _tag; } + void set_speechrom_tag(const char *_tag) { m_speechrom_tag = _tag; } // new VSM support - template <class Object> static devcb_base &set_m0_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_m0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_m1_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_m1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_addr_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_addr_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_data_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_romclk_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_romclk_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_m0_callback(Object &&cb) { return m_m0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_m1_callback(Object &&cb) { return m_m1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_addr_callback(Object &&cb) { return m_addr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_callback(Object &&cb) { return m_data_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_romclk_callback(Object &&cb) { return m_romclk_cb.set_callback(std::forward<Object>(cb)); } // Control lines - once written to will switch interface into * "true" timing behaviour. diff --git a/src/devices/sound/upd1771.h b/src/devices/sound/upd1771.h index 5dfcfd9a540..704ea7aecb0 100644 --- a/src/devices/sound/upd1771.h +++ b/src/devices/sound/upd1771.h @@ -11,7 +11,7 @@ #define MCFG_UPD1771_ACK_HANDLER(_devcb) \ - devcb = &upd1771c_device::set_ack_handler(*device, DEVCB_##_devcb); + devcb = &downcast<upd1771c_device &>(*device).set_ack_handler(DEVCB_##_devcb); /*************************************************************************** @@ -24,7 +24,7 @@ class upd1771c_device : public device_t, public: upd1771c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_ack_handler(device_t &device, Object &&cb) { return downcast<upd1771c_device &>(device).m_ack_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ack_handler(Object &&cb) { return m_ack_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/upd7759.h b/src/devices/sound/upd7759.h index c6615a6e2fd..a388bf1276d 100644 --- a/src/devices/sound/upd7759.h +++ b/src/devices/sound/upd7759.h @@ -18,7 +18,7 @@ class upd775x_device : public device_t, public device_sound_interface { public: - template <class Object> static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast<upd775x_device &>(device).m_drqcallback.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_callback(Object &&cb) { return m_drqcallback.set_callback(std::forward<Object>(cb)); } void set_bank_base(offs_t base); @@ -144,9 +144,9 @@ DECLARE_DEVICE_TYPE(UPD7759, upd7759_device) DECLARE_DEVICE_TYPE(UPD7756, upd7756_device) #define MCFG_UPD7759_DRQ_CALLBACK(_write) \ - devcb = &upd7759_device::set_drq_callback(*device, DEVCB_##_write); + devcb = &downcast<upd7759_device &>(*device).set_drq_callback(DEVCB_##_write); #define MCFG_UPD7756_DRQ_CALLBACK(_write) \ - devcb = &upd7756_device::set_drq_callback(*device, DEVCB_##_write); + devcb = &downcast<upd7756_device &>(*device).set_drq_callback(DEVCB_##_write); #endif // MAME_SOUND_UPD7759_H diff --git a/src/devices/sound/volt_reg.h b/src/devices/sound/volt_reg.h index dd036dbad28..f687b3a7713 100644 --- a/src/devices/sound/volt_reg.h +++ b/src/devices/sound/volt_reg.h @@ -15,12 +15,12 @@ #define MCFG_VOLTAGE_REGULATOR_OUTPUT(_output) \ - voltage_regulator_device::set_output(*device, _output); + downcast<voltage_regulator_device &>(*device).set_output(_output); class voltage_regulator_device : public device_t, public device_sound_interface { public: - static void set_output(device_t &device, double analogue_dc) { downcast<voltage_regulator_device &>(device).m_output = (analogue_dc * 32768) / 5.0f; } + void set_output(double analogue_dc) { m_output = (analogue_dc * 32768) / 5.0f; } voltage_regulator_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/sound/vrender0.h b/src/devices/sound/vrender0.h index 5ad9046aede..77306137752 100644 --- a/src/devices/sound/vrender0.h +++ b/src/devices/sound/vrender0.h @@ -16,7 +16,7 @@ MCFG_DEVICE_REPLACE(_tag, VRENDER0, _clock) #define MCFG_VR0_REGBASE(_base) \ - vrender0_device::set_reg_base(*device, _base); + downcast<vrender0_device &>(*device).set_reg_base(_base); //************************************************************************** // TYPE DEFINITIONS @@ -31,8 +31,8 @@ class vrender0_device : public device_t, public: vrender0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - static void set_reg_base(device_t &device, int base) { downcast<vrender0_device &>(device).m_reg_base = base; } + // configuration + void set_reg_base(int base) { m_reg_base = base; } DECLARE_READ32_MEMBER( vr0_snd_read ); DECLARE_WRITE32_MEMBER( vr0_snd_write ); diff --git a/src/devices/sound/wave.cpp b/src/devices/sound/wave.cpp index 810f537e51d..c7dd698dab6 100644 --- a/src/devices/sound/wave.cpp +++ b/src/devices/sound/wave.cpp @@ -25,12 +25,6 @@ -void wave_device::static_set_cassette_tag(device_t &device, const char *cassette_tag) -{ - wave_device &wave = downcast<wave_device &>(device); - wave.m_cassette_tag = cassette_tag; -} - DEFINE_DEVICE_TYPE(WAVE, wave_device, "wave", "Wave") wave_device::wave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) diff --git a/src/devices/sound/wave.h b/src/devices/sound/wave.h index da7797dfbca..53f0ac29254 100644 --- a/src/devices/sound/wave.h +++ b/src/devices/sound/wave.h @@ -17,7 +17,7 @@ class wave_device : public device_t, public device_sound_interface public: wave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_cassette_tag(device_t &device, const char *cassette_tag); + void set_cassette_tag(const char *cassette_tag) { m_cassette_tag = cassette_tag; } protected: // device-level overrides @@ -40,6 +40,6 @@ DECLARE_DEVICE_TYPE(WAVE, wave_device) #define MCFG_SOUND_WAVE_ADD(_tag, _cass_tag) \ MCFG_SOUND_ADD( _tag, WAVE, 0 ) \ - wave_device::static_set_cassette_tag(*device, _cass_tag); + downcast<wave_device &>(*device).set_cassette_tag(_cass_tag); #endif // MAME_SOUND_WAVE_H diff --git a/src/devices/sound/x1_010.h b/src/devices/sound/x1_010.h index bc928a44228..12bf9c975d8 100644 --- a/src/devices/sound/x1_010.h +++ b/src/devices/sound/x1_010.h @@ -10,8 +10,8 @@ class x1_010_device : public device_t, public device_sound_interface public: x1_010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - static void set_address_xor(device_t &device, int addr) { downcast<x1_010_device &>(device).m_xor = addr; } + // configuration + void set_address_xor(int addr) { m_xor = addr; } DECLARE_READ8_MEMBER ( read ); DECLARE_WRITE8_MEMBER( write ); @@ -50,6 +50,6 @@ private: DECLARE_DEVICE_TYPE(X1_010, x1_010_device) #define MCFG_X1_010_ADDRESS_XOR(_addr) \ - x1_010_device::set_address_xor(*device, _addr); + downcast<x1_010_device &>(*device).set_address_xor(_addr); #endif // MAME_SOUND_X1_010_H diff --git a/src/devices/sound/ym2151.h b/src/devices/sound/ym2151.h index fd0c6afca54..989607bbf62 100644 --- a/src/devices/sound/ym2151.h +++ b/src/devices/sound/ym2151.h @@ -44,9 +44,9 @@ MCFG_DEVICE_ADD(_tag, YM2151, _clock) #define MCFG_YM2151_IRQ_HANDLER(_devcb) \ - devcb = &ym2151_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ym2151_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_YM2151_PORT_WRITE_HANDLER(_devcb) \ - devcb = &ym2151_device::set_port_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ym2151_device &>(*device).set_port_write_handler(DEVCB_##_devcb); //************************************************************************** @@ -63,9 +63,9 @@ public: // construction/destruction ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2151_device &>(device).m_irqhandler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_write_handler(device_t &device, Object &&cb) { return downcast<ym2151_device &>(device).m_portwritehandler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irqhandler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_write_handler(Object &&cb) { return m_portwritehandler.set_callback(std::forward<Object>(cb)); } // read/write DECLARE_READ8_MEMBER(read); diff --git a/src/devices/sound/ymf271.h b/src/devices/sound/ymf271.h index f49b08cec2d..c032c764d53 100644 --- a/src/devices/sound/ymf271.h +++ b/src/devices/sound/ymf271.h @@ -7,7 +7,7 @@ #define MCFG_YMF271_IRQ_HANDLER(_devcb) \ - devcb = &ymf271_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ymf271_device &>(*device).set_irq_handler(DEVCB_##_devcb); class ymf271_device : public device_t, public device_sound_interface, public device_rom_interface { @@ -16,8 +16,8 @@ public: ymf271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ymf271_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/ymf278b.h b/src/devices/sound/ymf278b.h index 545ac90dad8..d19815fddbd 100644 --- a/src/devices/sound/ymf278b.h +++ b/src/devices/sound/ymf278b.h @@ -9,15 +9,15 @@ #define YMF278B_STD_CLOCK (33868800) /* standard clock for OPL4 */ #define MCFG_YMF278B_IRQ_HANDLER(_devcb) \ - devcb = &ymf278b_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ymf278b_device &>(*device).set_irq_handler(DEVCB_##_devcb); class ymf278b_device : public device_t, public device_sound_interface, public device_rom_interface { public: ymf278b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ymf278b_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/ymz280b.h b/src/devices/sound/ymz280b.h index 2c2dc7b1f48..40b65e94c3c 100644 --- a/src/devices/sound/ymz280b.h +++ b/src/devices/sound/ymz280b.h @@ -16,15 +16,15 @@ #define YMZ280B_MAKE_WAVS 0 #define MCFG_YMZ280B_IRQ_HANDLER(_devcb) \ - devcb = &ymz280b_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ymz280b_device &>(*device).set_irq_handler(DEVCB_##_devcb); class ymz280b_device : public device_t, public device_sound_interface, public device_rom_interface { public: ymz280b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ymz280b_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/zsg2.h b/src/devices/sound/zsg2.h index c54e2dce3c4..572e551fa4b 100644 --- a/src/devices/sound/zsg2.h +++ b/src/devices/sound/zsg2.h @@ -20,7 +20,7 @@ MCFG_DEVICE_REPLACE(_tag, ZSG2, _clock) #define MCFG_ZSG2_EXT_READ_HANDLER(_devcb) \ - devcb = &zsg2_device::set_ext_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zsg2_device &>(*device).set_ext_read_handler(DEVCB_##_devcb); // ======================> zsg2_device @@ -31,8 +31,8 @@ class zsg2_device : public device_t, public: zsg2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast<zsg2_device &>(device).m_ext_read_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_ext_read_handler(Object &&cb) { return m_ext_read_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER(read); DECLARE_WRITE16_MEMBER(write); diff --git a/src/mame/drivers/inder.cpp b/src/mame/drivers/inder.cpp index 77820a8aa3e..d5ceae4dc46 100644 --- a/src/mame/drivers/inder.cpp +++ b/src/mame/drivers/inder.cpp @@ -1301,7 +1301,7 @@ WRITE8_MEMBER( inder_state::ppic_w ) { // pc4 - READY line back to cpu board, but not used if (BIT(data, 5) != BIT(m_portc, 5)) - m_msm->set_prescaler_selector(*m_msm, BIT(data, 5) ? msm5205_device::S48_4B : msm5205_device::S96_4B); // S1 pin + m_msm->set_prescaler_selector(BIT(data, 5) ? msm5205_device::S48_4B : msm5205_device::S96_4B); // S1 pin m_7a->clock_w(BIT(data, 6)); m_7a->preset_w(!BIT(data, 7)); m_9a->preset_w(!BIT(data, 7)); diff --git a/src/mame/drivers/vgmplay.cpp b/src/mame/drivers/vgmplay.cpp index d4f4f767c39..335a395f196 100644 --- a/src/mame/drivers/vgmplay.cpp +++ b/src/mame/drivers/vgmplay.cpp @@ -1248,8 +1248,8 @@ void vgmplay_state::machine_start() uint8_t type = r8(0x78); if (type & 0x10) { - ay8910_device::set_psg_type(*m_ay8910[0], ay8910_device::PSG_TYPE_YM); - ay8910_device::set_psg_type(*m_ay8910[1], ay8910_device::PSG_TYPE_YM); + m_ay8910[0]->set_psg_type(ay8910_device::PSG_TYPE_YM); + m_ay8910[1]->set_psg_type(ay8910_device::PSG_TYPE_YM); } } if(version >= 0x151 && r8(0x79)) { @@ -1261,8 +1261,8 @@ void vgmplay_state::machine_start() to_set |= AY8910_SINGLE_OUTPUT; if (flags & 4) to_set |= AY8910_DISCRETE_OUTPUT; - ay8910_device::set_flags(*m_ay8910[0], to_set); - ay8910_device::set_flags(*m_ay8910[1], to_set); + m_ay8910[0]->set_flags(to_set); + m_ay8910[1]->set_flags(to_set); } if(version >= 0x151 && r8(0x7a)) { uint8_t flags = r8(0x7a); @@ -1273,8 +1273,8 @@ void vgmplay_state::machine_start() to_set |= AY8910_SINGLE_OUTPUT; if (flags & 4) to_set |= AY8910_DISCRETE_OUTPUT; - ay8910_device::set_flags(*m_ym2203[0], to_set); - ay8910_device::set_flags(*m_ym2203[1], to_set); + m_ym2203[0]->set_flags(to_set); + m_ym2203[1]->set_flags(to_set); } } @@ -1306,13 +1306,13 @@ void vgmplay_state::machine_start() m_okim6295_clock[0] &= ~0x80000000; m_okim6295_pin7[0] = 1; } - okim6295_device::static_set_pin7(*m_okim6295[0], m_okim6295_pin7[0]); + m_okim6295[0]->config_pin7(m_okim6295_pin7[0]); m_okim6295[0]->set_unscaled_clock(m_okim6295_clock[0] & ~0xc0000000); if (m_okim6295_clock[0] & 0x40000000) { m_okim6295_clock[0] &= ~0x40000000; m_okim6295_clock[1] = m_okim6295_clock[0]; m_okim6295_pin7[1] = m_okim6295_pin7[0]; - okim6295_device::static_set_pin7(*m_okim6295[1], m_okim6295_pin7[1]); + m_okim6295[1]->config_pin7(m_okim6295_pin7[1]); m_okim6295[1]->set_unscaled_clock(m_okim6295_clock[1]); } } @@ -1349,7 +1349,7 @@ void vgmplay_state::machine_start() if (data_start > 0xc0) { if(version >= 0x171 && r8(0xd6)) { - c352_device::static_set_divider(*m_c352, r8(0xd6) * 4); + m_c352->set_divider(r8(0xd6) * 4); } if(version >= 0x171 && r32(0xdc)) { m_c352->set_unscaled_clock(r32(0xdc)); @@ -1408,7 +1408,7 @@ WRITE8_MEMBER(vgmplay_state::okim6295_pin7_w) if ((data & mem_mask) != (m_okim6295_pin7[Chip] & mem_mask)) { COMBINE_DATA(&m_okim6295_pin7[Chip]); - okim6295_device::static_set_pin7(*m_okim6295[Chip], m_okim6295_pin7[Chip]); + m_okim6295[Chip]->config_pin7(m_okim6295_pin7[Chip]); } } diff --git a/src/mame/machine/trs80.cpp b/src/mame/machine/trs80.cpp index 2dc9e6e73bd..fae466a84a7 100644 --- a/src/mame/machine/trs80.cpp +++ b/src/mame/machine/trs80.cpp @@ -613,7 +613,7 @@ WRITE8_MEMBER( trs80_state::trs80_ff_w ) { init = 1; static int16_t speaker_levels[4] = { 0, -32768, 0, 32767 }; - m_speaker->static_set_levels(*m_speaker, 4, speaker_levels); + m_speaker->set_levels(4, speaker_levels); } /* Speaker for System-80 MK II - only sounds if relay is off */ |