de-staticify initializations for mame/includes and mame/audio (#3256)

This commit is contained in:
wilbertpol 2018-02-22 08:42:44 +01:00 committed by Olivier Galibert
parent 38ee2fe8e8
commit 2d15c999db
28 changed files with 99 additions and 144 deletions

View File

@ -38,22 +38,22 @@ DECLARE_DEVICE_TYPE(ATARI_JSA_IIIS, atari_jsa_iiis_device)
#define MCFG_ATARI_JSA_I_ADD(_tag, _intcb) \
MCFG_DEVICE_ADD(_tag, ATARI_JSA_I, 0) \
devcb = &atari_jsa_i_device::static_set_main_int_cb(*device, DEVCB_##_intcb);
devcb = &downcast<atari_jsa_base_device &>(*device).set_main_int_cb(DEVCB_##_intcb);
#define MCFG_ATARI_JSA_II_ADD(_tag, _intcb) \
MCFG_DEVICE_ADD(_tag, ATARI_JSA_II, 0) \
devcb = &atari_jsa_ii_device::static_set_main_int_cb(*device, DEVCB_##_intcb);
devcb = &downcast<atari_jsa_base_device &>(*device).set_main_int_cb(DEVCB_##_intcb);
#define MCFG_ATARI_JSA_III_ADD(_tag, _intcb) \
MCFG_DEVICE_ADD(_tag, ATARI_JSA_III, 0) \
devcb = &atari_jsa_iii_device::static_set_main_int_cb(*device, DEVCB_##_intcb);
devcb = &downcast<atari_jsa_base_device &>(*device).set_main_int_cb(DEVCB_##_intcb);
#define MCFG_ATARI_JSA_IIIS_ADD(_tag, _intcb) \
MCFG_DEVICE_ADD(_tag, ATARI_JSA_IIIS, 0) \
devcb = &atari_jsa_iiis_device::static_set_main_int_cb(*device, DEVCB_##_intcb);
devcb = &downcast<atari_jsa_base_device &>(*device).set_main_int_cb(DEVCB_##_intcb);
#define MCFG_ATARI_JSA_TEST_PORT(_port, _bitnum) \
devcb = &atari_jsa_base_device::static_set_test_read_cb(*device, DEVCB_IOPORT(_port)); \
devcb = &downcast<atari_jsa_base_device &>(*device).set_test_read_cb(DEVCB_IOPORT(_port)); \
MCFG_DEVCB_RSHIFT(_bitnum);
@ -83,9 +83,9 @@ protected:
atari_jsa_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels);
public:
// static configuration
template <class Object> static devcb_base &static_set_test_read_cb(device_t &device, Object &&cb) { return downcast<atari_jsa_base_device &>(device).m_test_read_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> static devcb_base &static_set_main_int_cb(device_t &device, Object &&cb) { return downcast<atari_jsa_base_device &>(device).m_main_int_cb.set_callback(std::forward<Object>(cb)); }
// configuration
template <class Object> devcb_base &set_test_read_cb(Object &&cb) { return m_test_read_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_main_int_cb(Object &&cb) { return m_main_int_cb.set_callback(std::forward<Object>(cb)); }
// getters
m6502_device &soundcpu() const { return *m_jsacpu; }

View File

@ -19,10 +19,10 @@
#define CAGE_IRQ_REASON_BUFFER_EMPTY (2)
#define MCFG_ATARI_CAGE_IRQ_CALLBACK(_write) \
devcb = &atari_cage_device::set_irqhandler_callback(*device, DEVCB_##_write);
devcb = &downcast<atari_cage_device &>(*device).set_irqhandler_callback(DEVCB_##_write);
#define MCFG_ATARI_CAGE_SPEEDUP(_speedup) \
atari_cage_device::static_set_speedup(*device, _speedup);
downcast<atari_cage_device &>(*device).set_speedup(_speedup);
class atari_cage_device : public device_t
{
@ -30,8 +30,8 @@ public:
// construction/destruction
atari_cage_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_speedup(device_t &device, offs_t speedup) { downcast<atari_cage_device &>(device).m_speedup = speedup; }
template <class Object> static devcb_base &set_irqhandler_callback(device_t &device, Object &&cb) { return downcast<atari_cage_device &>(device).m_irqhandler.set_callback(std::forward<Object>(cb)); }
void set_speedup(offs_t speedup) { m_speedup = speedup; }
template <class Object> devcb_base &set_irqhandler_callback(Object &&cb) { return m_irqhandler.set_callback(std::forward<Object>(cb)); }
void reset_w(int state);

View File

@ -17,18 +17,18 @@
#include "machine/timer.h"
#define MCFG_DCS2_AUDIO_DRAM_IN_MB(_dram_in_mb) \
dcs_audio_device::static_set_dram_in_mb(*device, _dram_in_mb);
downcast<dcs_audio_device &>(*device).set_dram_in_mb(_dram_in_mb);
#define MCFG_DCS2_AUDIO_POLLING_OFFSET(_polling_offset) \
dcs_audio_device::static_set_polling_offset(*device, _polling_offset);
downcast<dcs_audio_device &>(*device).set_polling_offset(_polling_offset);
class dcs_audio_device : public device_t
{
public:
// for dcs2 (int dram_in_mb, offs_t polling_offset)
static void static_set_dram_in_mb(device_t &device, int dram_in_mb) { downcast<dcs_audio_device &>(device).m_dram_in_mb = dram_in_mb; }
static void static_set_polling_offset(device_t &device, offs_t polling_offset) { downcast<dcs_audio_device &>(device).m_polling_offset = polling_offset; }
void set_dram_in_mb(int dram_in_mb) { m_dram_in_mb = dram_in_mb; }
void set_polling_offset(offs_t polling_offset) { m_polling_offset = polling_offset; }
void set_auto_ack(int state);

View File

@ -15,7 +15,7 @@
MCFG_DEVICE_ADD(_tag, DSBZ80, 0)
#define MCFG_DSBZ80_RXD_HANDLER(_devcb) \
devcb = &dsbz80_device::set_rxd_handler(*device, DEVCB_##_devcb);
devcb = &downcast<dsbz80_device &>(*device).set_rxd_handler(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@ -27,8 +27,8 @@ public:
// construction/destruction
dsbz80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration
template<class _Object> static devcb_base &set_rxd_handler(device_t &device, _Object &&object) { return downcast<dsbz80_device &>(device).m_rxd_handler.set_callback(std::forward<_Object>(object)); }
// configuration
template<class Object> devcb_base &set_rxd_handler(device_t &device, Object &&object) { return m_rxd_handler.set_callback(std::forward<Object>(object)); }
required_device<cpu_device> m_ourcpu;
required_device<i8251_device> m_uart;

View File

@ -416,17 +416,6 @@ gottlieb_sound_r2_device::gottlieb_sound_r2_device(const machine_config &mconfig
}
//-------------------------------------------------
// static_enable_cobram3_mods - enable changes
// for cobram3
//-------------------------------------------------
void gottlieb_sound_r2_device::static_enable_cobram3_mods(device_t &device)
{
downcast<gottlieb_sound_r2_device &>(device).m_cobram3_mod = true;
}
//-------------------------------------------------
// write - handle an external command write
//-------------------------------------------------

View File

@ -30,7 +30,7 @@ DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_REV2, gottlieb_sound_r2_device)
//**************************************************************************
#define MCFG_GOTTLIEB_ENABLE_COBRAM3_MODS() \
gottlieb_sound_r2_device::static_enable_cobram3_mods(*device);
downcast<gottlieb_sound_r2_device &>(*device).enable_cobram3_mods();
//**************************************************************************
@ -137,8 +137,8 @@ public:
// construction/destruction
gottlieb_sound_r2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
static void static_enable_cobram3_mods(device_t &device);
// configuration helpers
void enable_cobram3_mods() { m_cobram3_mod = true; }
// read/write
DECLARE_WRITE8_MEMBER( write );

View File

@ -114,12 +114,6 @@ lynx2_sound_device::lynx2_sound_device(const machine_config &mconfig, const char
{
}
void lynx_sound_device::set_timer_delegate(device_t &device, timer_delegate cb)
{
lynx_sound_device &dev = downcast<lynx_sound_device &>(device);
dev.m_timer_delegate = cb;
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------

View File

@ -16,7 +16,7 @@ public:
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
void count_down(int nr);
static void set_timer_delegate(device_t &device, timer_delegate cb);
template<typename Object> void set_timer_delegate(Object&& cb) { m_timer_delegate = std::forward<Object>(cb); }
protected:
struct LYNX_AUDIO {
@ -84,7 +84,7 @@ DECLARE_DEVICE_TYPE(LYNX2_SND, lynx2_sound_device)
#define MCFG_LYNX_SND_SET_TIMER( _class, _method) \
lynx_sound_device::set_timer_delegate(*device, lynx_sound_device::timer_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
downcast<lynx_sound_device &>(*device).set_timer_delegate(lynx_sound_device::timer_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
#endif // MAME_AUDIO_LYNX_H

View File

@ -10,19 +10,19 @@
MCFG_DEVICE_ADD(_tag, NAMCO_52XX, _clock)
#define MCFG_NAMCO_52XX_DISCRETE(_tag) \
namco_52xx_device::set_discrete(*device, "^" _tag);
downcast<namco_52xx_device &>(*device).set_discrete("^" _tag);
#define MCFG_NAMCO_52XX_BASENODE(_node) \
namco_52xx_device::set_basenote(*device, _node);
downcast<namco_52xx_device &>(*device).set_basenote(_node);
#define MCFG_NAMCO_52XX_EXT_CLOCK(_clock) \
namco_52xx_device::set_extclock(*device, _clock);
downcast<namco_52xx_device &>(*device).set_extclock(_clock);
#define MCFG_NAMCO_52XX_ROMREAD_CB(_devcb) \
devcb = &namco_52xx_device::set_romread_callback(*device, DEVCB_##_devcb);
devcb = &downcast<namco_52xx_device &>(*device).set_romread_callback(DEVCB_##_devcb);
#define MCFG_NAMCO_52XX_SI_CB(_devcb) \
devcb = &namco_52xx_device::set_si_callback(*device, DEVCB_##_devcb);
devcb = &downcast<namco_52xx_device &>(*device).set_si_callback(DEVCB_##_devcb);
class namco_52xx_device : public device_t
@ -30,11 +30,11 @@ class namco_52xx_device : public device_t
public:
namco_52xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_discrete(device_t &device, const char *tag) { downcast<namco_52xx_device &>(device).m_discrete.set_tag(tag); }
static void set_basenote(device_t &device, int node) { downcast<namco_52xx_device &>(device).m_basenode = node; }
static void set_extclock(device_t &device, attoseconds_t clk) { downcast<namco_52xx_device &>(device).m_extclock = clk; }
template <class Object> static devcb_base &set_romread_callback(device_t &device, Object &&cb) { return downcast<namco_52xx_device &>(device).m_romread.set_callback(std::forward<Object>(cb)); }
template <class Object> static devcb_base &set_si_callback(device_t &device, Object &&cb) { return downcast<namco_52xx_device &>(device).m_si.set_callback(std::forward<Object>(cb)); }
void set_discrete(const char *tag) { m_discrete.set_tag(tag); }
void set_basenote(int node) { m_basenode = node; }
void set_extclock(attoseconds_t clk) { m_extclock = clk; }
template <class Object> devcb_base &set_romread_callback(Object &&cb) { return m_romread.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_si_callback(Object &&cb) { return m_si.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(write);

View File

@ -11,10 +11,10 @@
MCFG_DEVICE_ADD(_tag, NAMCO_54XX, _clock)
#define MCFG_NAMCO_54XX_DISCRETE(_tag) \
namco_54xx_device::set_discrete(*device, "^" _tag);
downcast<namco_54xx_device &>(*device).set_discrete("^" _tag);
#define MCFG_NAMCO_54XX_BASENODE(_node) \
namco_54xx_device::set_basenote(*device, _node);
downcast<namco_54xx_device &>(*device).set_basenote(_node);
class namco_54xx_device : public device_t
@ -22,8 +22,8 @@ class namco_54xx_device : public device_t
public:
namco_54xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_discrete(device_t &device, const char *tag) { downcast<namco_54xx_device &>(device).m_discrete.set_tag(tag); }
static void set_basenote(device_t &device, int node) { downcast<namco_54xx_device &>(device).m_basenode = node; }
void set_discrete(const char *tag) { m_discrete.set_tag(tag); }
void set_basenote(int node) { m_basenode = node; }
DECLARE_READ8_MEMBER( K_r );
DECLARE_READ8_MEMBER( R0_r );

View File

@ -5,7 +5,7 @@
#define MAME_AUDIO_RAD_EU3A05_H
#define MCFG_RADICA6502_SOUND_SPACE_READ_CB(_devcb) \
devcb = &radica6502_sound_device::set_space_read_callback(*device, DEVCB_##_devcb);
devcb = &downcast<radica6502_sound_device &>(*device).set_space_read_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@ -18,7 +18,7 @@ class radica6502_sound_device : public device_t, public device_sound_interface
public:
radica6502_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> static devcb_base &set_space_read_callback(device_t &device, Object &&cb) { return downcast<radica6502_sound_device &>(device).m_space_read_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_space_read_callback(Object &&cb) { return m_space_read_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(radicasi_sound_addr_w);
DECLARE_READ8_MEMBER(radicasi_sound_addr_r);

View File

@ -97,12 +97,6 @@ void s11c_bg_device::device_reset()
m_cpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE);
}
void s11c_bg_device::static_set_romregion(device_t &device, const char *tag)
{
s11c_bg_device &cpuboard = downcast<s11c_bg_device &>(device);
cpuboard.m_regiontag = tag;
}
WRITE_LINE_MEMBER( s11c_bg_device::ym2151_irq_w)
{
if(state == CLEAR_LINE)

View File

@ -18,7 +18,7 @@
#define MCFG_S11C_BG_ROM_REGION(_region) \
s11c_bg_device::static_set_romregion(*device, _region);
downcast<s11c_bg_device &>(*device).set_romregion(_region);
class s11c_bg_device : public device_t,
@ -42,7 +42,7 @@ public:
void ctrl_w(uint8_t data);
void data_w(uint8_t data);
static void static_set_romregion(device_t &device, const char *tag);
void set_romregion(const char *tag) { m_regiontag = tag; }
void s11c_bg_map(address_map &map);
protected:

View File

@ -19,7 +19,7 @@
MCFG_DEVICE_ADD(_tag, SEGAM1AUDIO, 0)
#define MCFG_SEGAM1AUDIO_RXD_HANDLER(_devcb) \
devcb = &segam1audio_device::set_rxd_handler(*device, DEVCB_##_devcb);
devcb = &downcast<segam1audio_device &>(*device).set_rxd_handler(DEVCB_##_devcb);
//**************************************************************************
@ -32,8 +32,8 @@ public:
// construction/destruction
segam1audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration
template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<segam1audio_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
// configuration
template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk1_w);
DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk2_w);

View File

@ -87,17 +87,6 @@ seibu_sound_device::seibu_sound_device(const machine_config &mconfig, const char
{
}
void seibu_sound_device::static_set_cpu_tag(device_t &device, const char *tag)
{
downcast<seibu_sound_device &>(device).m_sound_cpu.set_tag(tag);
downcast<seibu_sound_device &>(device).m_sound_rom.set_tag(tag);
}
void seibu_sound_device::static_set_rombank_tag(device_t &device, const char *tag)
{
downcast<seibu_sound_device &>(device).m_rom_bank.set_tag(tag);
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------

View File

@ -44,11 +44,15 @@ public:
seibu_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~seibu_sound_device() {}
// static configuration
static void static_set_cpu_tag(device_t &device, const char *tag);
static void static_set_rombank_tag(device_t &device, const char *tag);
template<class _Object> static devcb_base &set_ym_read_callback(device_t &device, _Object object) { return downcast<seibu_sound_device &>(device).m_ym_read_cb.set_callback(object); }
template<class _Object> static devcb_base &set_ym_write_callback(device_t &device, _Object object) { return downcast<seibu_sound_device &>(device).m_ym_write_cb.set_callback(object); }
// configuration
void set_cpu_tag(const char *tag)
{
m_sound_cpu.set_tag(tag);
m_sound_rom.set_tag(tag);
}
void set_rombank_tag(const char *tag) { m_rom_bank.set_tag(tag); }
template<class Object> devcb_base &set_ym_read_callback(Object&& object) { return m_ym_read_cb.set_callback(std::forward<Object>(object)); }
template<class Object> devcb_base &set_ym_write_callback(Object&& object) { return m_ym_write_cb.set_callback(std::forward<Object>(object)); }
DECLARE_READ8_MEMBER( main_r );
DECLARE_WRITE8_MEMBER( main_w );
@ -178,16 +182,16 @@ DECLARE_DEVICE_TYPE(SEIBU_ADPCM, seibu_adpcm_device)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
#define MCFG_SEIBU_SOUND_CPU(_audiocputag) \
seibu_sound_device::static_set_cpu_tag(*device, "^" _audiocputag);
downcast<seibu_sound_device &>(*device).set_cpu_tag("^" _audiocputag);
#define MCFG_SEIBU_SOUND_ROMBANK(_banktag) \
seibu_sound_device::static_set_rombank_tag(*device, "^" _banktag);
downcast<seibu_sound_device &>(*device).set_rombank_tag("^" _banktag);
#define MCFG_SEIBU_SOUND_YM_READ_CB(_devcb) \
devcb = &seibu_sound_device::set_ym_read_callback(*device, DEVCB_##_devcb);
devcb = &downcast<seibu_sound_device &>(*device).set_ym_read_callback(DEVCB_##_devcb);
#define MCFG_SEIBU_SOUND_YM_WRITE_CB(_devcb) \
devcb = &seibu_sound_device::set_ym_write_callback(*device, DEVCB_##_devcb);
devcb = &downcast<seibu_sound_device &>(*device).set_ym_write_callback(DEVCB_##_devcb);
/**************************************************************************/

View File

@ -19,7 +19,7 @@
#define SVISION_SND_IRQ_MEMBER(_name) void _name(void)
#define SVISION_SND_IRQ_CB(_class, _method) \
svision_sound_device::set_irq_callback(*device, svision_sound_device::irq_delegate(&_class::_method, #_class "::" #_method, this));
downcast<svision_sound_device &>(*device).set_irq_callback(svision_sound_device::irq_delegate(&_class::_method, #_class "::" #_method, this));
// ======================> svision_sound_device
@ -30,8 +30,8 @@ public:
svision_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration
static void set_irq_callback(device_t &device, irq_delegate callback) { downcast<svision_sound_device &>(device).m_irq_cb = callback; }
// configuration
template<typename Object> void set_irq_callback(Object&& callback) { m_irq_cb = std::forward<Object>(callback); }
DECLARE_WRITE8_MEMBER( sounddma_w );
DECLARE_WRITE8_MEMBER( noise_w );

View File

@ -9,10 +9,10 @@
//**************************************************************************
#define MCFG_TC0140SYT_MASTER_CPU(_tag) \
tc0140syt_device::set_master_tag(*device, "^" _tag);
downcast<tc0140syt_device &>(*device).set_master_tag("^" _tag);
#define MCFG_TC0140SYT_SLAVE_CPU(_tag) \
tc0140syt_device::set_slave_tag(*device, "^" _tag);
downcast<tc0140syt_device &>(*device).set_slave_tag("^" _tag);
#define MCFG_PC060HA_MASTER_CPU(_tag) MCFG_TC0140SYT_MASTER_CPU(_tag)
#define MCFG_PC060HA_SLAVE_CPU(_tag) MCFG_TC0140SYT_SLAVE_CPU(_tag)
@ -29,8 +29,8 @@ class tc0140syt_device : public device_t
public:
tc0140syt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_master_tag(device_t &device, const char *tag) { downcast<tc0140syt_device &>(device).m_mastercpu.set_tag(tag); }
static void set_slave_tag(device_t &device, const char *tag) { downcast<tc0140syt_device &>(device).m_slavecpu.set_tag(tag); }
void set_master_tag(const char *tag) { m_mastercpu.set_tag(tag); }
void set_slave_tag(const char *tag) { m_slavecpu.set_tag(tag); }
// MASTER (4-bit bus) control functions
DECLARE_WRITE8_MEMBER( master_port_w );

View File

@ -12,7 +12,7 @@
#pragma once
#define MCFG_TVC_SOUND_SNDINT_CALLBACK(_write) \
devcb = &tvc_sound_device::set_sndint_wr_callback(*device, DEVCB_##_write);
devcb = &downcast<tvc_sound_device &>(*device).set_sndint_wr_callback(DEVCB_##_write);
//**************************************************************************
// TYPE DEFINITIONS
@ -26,7 +26,7 @@ public:
// construction/destruction
tvc_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> static devcb_base &set_sndint_wr_callback(device_t &device, Object &&cb) { return downcast<tvc_sound_device &>(device).m_write_sndint.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_sndint_wr_callback(Object &&cb) { return m_write_sndint.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(write);
void reset_divider();

View File

@ -104,12 +104,6 @@ void wpcsnd_device::device_reset()
m_reply_available = false;
}
void wpcsnd_device::static_set_romregion(device_t &device, const char *tag)
{
wpcsnd_device &cpuboard = downcast<wpcsnd_device &>(device);
cpuboard.m_rom.set_tag(tag);
}
WRITE_LINE_MEMBER( wpcsnd_device::ym2151_irq_w)
{
m_cpu->set_input_line(M6809_FIRQ_LINE,state ? ASSERT_LINE : CLEAR_LINE);

View File

@ -17,7 +17,7 @@
#define MCFG_WPC_ROM_REGION(_region) \
wpcsnd_device::static_set_romregion(*device, _region);
downcast<wpcsnd_device &>(*device).set_romregion(_region);
#define MCFG_WPC_SOUND_REPLY_CALLBACK(_reply) \
downcast<wpcsnd_device *>(device)->set_reply_callback(DEVCB_##_reply);
@ -49,7 +49,7 @@ public:
uint8_t ctrl_r();
uint8_t data_r();
static void static_set_romregion(device_t &device, const char *tag);
void set_romregion(const char *tag) { m_rom.set_tag(tag); }
// callbacks
template <class Reply> void set_reply_callback(Reply &&cb) { m_reply_cb.set_callback(std::forward<Reply>(cb)); }

View File

@ -25,7 +25,7 @@ DECLARE_DEVICE_TYPE(ZACCARIA_1B11142, zac1b11142_audio_device)
//**************************************************************************
#define MCFG_ZACCARIA_1B11142_SET_ACS_CALLBACK(_devcb) \
devcb = &zac1b11142_audio_device::static_set_acs_cb(*device, DEVCB_##_devcb);
devcb = &downcast<zac1b11142_audio_device &>(device).set_acs_cb(DEVCB_##_devcb);
@ -84,8 +84,7 @@ protected:
class zac1b11142_audio_device : public zac1b111xx_melody_base
{
public:
template <class Object> static devcb_base &static_set_acs_cb(device_t &device, Object &&cb)
{ return downcast<zac1b11142_audio_device &>(device).m_acs_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_acs_cb(device_t &device, Object &&cb) { return m_acs_cb.set_callback(std::forward<Object>(cb)); }
zac1b11142_audio_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);

View File

@ -685,7 +685,7 @@ DECLARE_DEVICE_TYPE(APOLLO_MONO19I, apollo_graphics_19i)
//**************************************************************************
#define MCFG_APOLLO_STDIO_TX_CALLBACK(_cb) \
devcb = &apollo_stdio_device::set_tx_cb(*device, DEVCB_##_cb);
devcb = &downcast<apollo_stdio_device &>(*device).set_tx_cb(DEVCB_##_cb);
//**************************************************************************
// TYPE DEFINITIONS
@ -700,9 +700,9 @@ public:
apollo_stdio_device(const machine_config &mconfig, const char *tag,
device_t *owner, uint32_t clock);
template<class _Object> static devcb_base &set_tx_cb(device_t &device, _Object object)
template<class Object> devcb_base &set_tx_cb(Object &&object)
{
return downcast<apollo_stdio_device &> (device).m_tx_w.set_callback(object);
return m_tx_w.set_callback(std::forward<Object>(object));
}
devcb_write_line m_tx_w;

View File

@ -191,11 +191,11 @@ public:
// construction/destruction
hp48_port_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_port_config(device_t &device, int port, int module, int max_size)
void set_port_config(int port, int module, int max_size)
{
downcast<hp48_port_image_device &>(device).m_port = port;
downcast<hp48_port_image_device &>(device).m_module = module;
downcast<hp48_port_image_device &>(device).m_max_size = max_size;
m_port = port;
m_module = module;
m_max_size = max_size;
}
// image-level overrides
@ -231,6 +231,6 @@ DECLARE_DEVICE_TYPE(HP48_PORT, hp48_port_image_device)
#define MCFG_HP48_PORT_ADD(_tag, _port, _module, _max_size) \
MCFG_DEVICE_ADD(_tag, HP48_PORT, 0) \
hp48_port_image_device::set_port_config(*device, _port, _module, _max_size);
downcast<hp48_port_image_device &>(*device).set_port_config(_port, _module, _max_size);
#endif // MAME_INCLUDES_HP84_H

View File

@ -125,7 +125,7 @@ enum {
};
#define MCFG_NB1413M3_TYPE(_type) \
nb1413m3_device::set_type(*device, _type);
downcast<nb1413m3_device &>(*device).set_type(_type);
class nb1413m3_device : public device_t
{
@ -133,8 +133,8 @@ public:
nb1413m3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~nb1413m3_device() {}
// (static) configuration helpers
static void set_type(device_t &device, int type) { downcast<nb1413m3_device &>(device).m_nb1413m3_type = type; }
// configuration helpers
void set_type(int type) { m_nb1413m3_type = type; }
enum
{

View File

@ -111,10 +111,10 @@ enum
#define MCFG_SLAPSTIC_NUM(_chipnum) \
atari_slapstic_device::static_set_chipnum(*device, _chipnum);
downcast<atari_slapstic_device &>(*device).set_chipnum(_chipnum);
#define MCFG_SLAPSTIC_68K_ACCESS(_type) \
atari_slapstic_device::static_set_access68k(*device, _type);
downcast<atari_slapstic_device &>(*device).set_access68k(_type);
@ -132,17 +132,9 @@ public:
int alt2_kludge(address_space &space, offs_t offset);
static void static_set_access68k(device_t &device, int type)
{
atari_slapstic_device &dev = downcast<atari_slapstic_device &>(device);
dev.access_68k = type;
}
void set_access68k(int type) { access_68k = type; }
static void static_set_chipnum(device_t &device, int chipnum)
{
atari_slapstic_device &dev = downcast<atari_slapstic_device &>(device);
dev.m_chipnum = chipnum;
}
void set_chipnum(int chipnum) { m_chipnum = chipnum; }
int m_chipnum;

View File

@ -17,7 +17,7 @@ public:
nv2a_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override;
void set_cpu_tag(const char *_cpu_tag);
void set_cpu_tag(const char *cpu_tag);
protected:
virtual void device_start() override;
@ -80,7 +80,7 @@ public:
mcpx_smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void register_device(int address, std::function<int(int command, int rw, int data)> callback) { if (address < 128) smbusst.devices[address] = callback; }
template<class _Object> static devcb_base &set_interrupt_handler(device_t &device, _Object object) { return downcast<mcpx_smbus_device &>(device).m_interrupt_handler.set_callback(object); }
template<class Object> devcb_base &set_interrupt_handler(Object object) { return m_interrupt_handler.set_callback(object); }
DECLARE_READ32_MEMBER(smbus_r);
DECLARE_WRITE32_MEMBER(smbus_w);
@ -109,7 +109,7 @@ private:
extern const device_type MCPX_SMBUS;
#define MCFG_MCPX_SMBUS_INTERRUPT_HANDLER(_devcb) \
devcb = &mcpx_smbus_device::set_interrupt_handler(*device, DEVCB_##_devcb);
devcb = &downcast<mcpx_smbus_device &>(*device).set_interrupt_handler(DEVCB_##_devcb);
/*
* OHCI USB Controller
@ -121,7 +121,7 @@ public:
void set_hack_callback(std::function<void(void)> hack) { hack_callback = hack; }
void plug_usb_device(int port, ohci_function *function);
template<class _Object> static devcb_base &set_interrupt_handler(device_t &device, _Object object) { return downcast<mcpx_ohci_device &>(device).m_interrupt_handler.set_callback(object); }
template<class Object> devcb_base &set_interrupt_handler(Object object) { return m_interrupt_handler.set_callback(object); }
DECLARE_READ32_MEMBER(ohci_r);
DECLARE_WRITE32_MEMBER(ohci_w);
@ -148,7 +148,7 @@ private:
extern const device_type MCPX_OHCI;
#define MCFG_MCPX_OHCI_INTERRUPT_HANDLER(_devcb) \
devcb = &mcpx_ohci_device::set_interrupt_handler(*device, DEVCB_##_devcb);
devcb = &downcast<mcpx_ohci_device &>(*device).set_interrupt_handler(DEVCB_##_devcb);
/*
* Ethernet
@ -181,7 +181,7 @@ extern const device_type MCPX_ETH;
class mcpx_apu_device : public pci_device {
public:
mcpx_apu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void set_cpu_tag(const char *_cpu_tag);
void set_cpu_tag(const char *cpu_tag);
DECLARE_READ32_MEMBER(apu_r);
DECLARE_WRITE32_MEMBER(apu_w);
@ -274,7 +274,7 @@ class mcpx_ide_device : public pci_device {
public:
mcpx_ide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template<class _Object> static devcb_base &set_interrupt_handler(device_t &device, _Object object) { return downcast<mcpx_ide_device &>(device).m_interrupt_handler.set_callback(object); }
template<class Object> devcb_base &set_interrupt_handler(Object object) { return m_interrupt_handler.set_callback(object); }
protected:
virtual void device_start() override;
@ -290,7 +290,7 @@ private:
extern const device_type MCPX_IDE;
#define MCFG_MCPX_IDE_INTERRUPT_HANDLER(_devcb) \
devcb = &mcpx_ide_device::set_interrupt_handler(*device, DEVCB_##_devcb);
devcb = &downcast<mcpx_ide_device &>(*device).set_interrupt_handler(DEVCB_##_devcb);
/*
* AGP Bridge
@ -314,10 +314,10 @@ DECLARE_DEVICE_TYPE(NV2A_AGP, nv2a_agp_device)
class nv2a_gpu_device : public pci_device {
public:
nv2a_gpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void set_cpu_tag(const char *_cpu_tag);
void set_cpu_tag(const char *cpu_tag);
nv2a_renderer *debug_get_renderer() { return nvidia_nv2a; }
template<class _Object> static devcb_base &set_interrupt_handler(device_t &device, _Object object) { return downcast<nv2a_gpu_device &>(device).m_interrupt_handler.set_callback(object); }
template<class Object> devcb_base &set_interrupt_handler(Object object) { return m_interrupt_handler.set_callback(object); }
DECLARE_READ32_MEMBER(geforce_r);
DECLARE_WRITE32_MEMBER(geforce_w);
@ -342,6 +342,6 @@ DECLARE_DEVICE_TYPE(NV2A_GPU, nv2a_gpu_device)
#define MCFG_MCPX_NV2A_GPU_CPU(_cpu_tag) \
downcast<nv2a_gpu_device *>(device)->set_cpu_tag(_cpu_tag);
#define MCFG_MCPX_NV2A_GPU_INTERRUPT_HANDLER(_devcb) \
devcb = &nv2a_gpu_device::set_interrupt_handler(*device, DEVCB_##_devcb);
devcb = &downcast<nv2a_gpu_device &>(*device).set_interrupt_handler(DEVCB_##_devcb);
#endif // MAME_INCLUDES_XBOX_PCI_H

View File

@ -17,7 +17,7 @@
#define LOG_Move0905 0
#define MCFG_RAIDEN2COP_VIDEORAM_OUT_CB(_devcb) \
devcb = &raiden2cop_device::set_m_videoramout_cb(*device, DEVCB_##_devcb);
devcb = &downcast<raiden2cop_device &>(*device).set_m_videoramout_cb(DEVCB_##_devcb);
#define MCFG_RAIDEN2COP_ADD(_tag ) \
MCFG_DEVICE_ADD(_tag, RAIDEN2COP, 0)
@ -76,7 +76,7 @@ public:
uint8_t fade_table(int v);
template<class _Object> static devcb_base &set_m_videoramout_cb(device_t &device, _Object object) { return downcast<raiden2cop_device &>(device).m_videoramout_cb.set_callback(object); }
template<class Object> devcb_base &set_m_videoramout_cb(Object object) { return m_videoramout_cb.set_callback(object); }
// Number Conversion