summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2018-11-18 08:55:46 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2018-11-18 08:55:46 +0100
commit8d029da480431d6042e6f49f7088f6696d05dd4d (patch)
tree85a46f6e2b2bd9f378dc734d21a8110858b9fff2
parentd8420e2c8f3babc90c0be99b8638b9e518317a55 (diff)
ym2151: removed MCFG macros (nw)
-rw-r--r--src/devices/bus/a7800/xboard.cpp3
-rw-r--r--src/devices/bus/isa/ibm_mfc.cpp10
-rw-r--r--src/devices/bus/msx_cart/yamaha.cpp8
-rw-r--r--src/devices/machine/i8255.h37
-rw-r--r--src/mame/audio/atarijsa.cpp58
-rw-r--r--src/mame/audio/leland.cpp6
-rw-r--r--src/mame/audio/leland.h2
-rw-r--r--src/mame/audio/s11c_bg.cpp10
-rw-r--r--src/mame/audio/williams.cpp12
-rw-r--r--src/mame/audio/wpcsnd.cpp8
-rw-r--r--src/mame/drivers/88games.cpp4
-rw-r--r--src/mame/drivers/airraid.cpp8
-rw-r--r--src/mame/drivers/ajax.cpp4
-rw-r--r--src/mame/drivers/aliens.cpp8
-rw-r--r--src/mame/drivers/amspdwy.cpp8
-rw-r--r--src/mame/drivers/aquarium.cpp8
-rw-r--r--src/mame/drivers/asterix.cpp4
-rw-r--r--src/mame/drivers/atarisy1.cpp8
-rw-r--r--src/mame/drivers/atarisy2.cpp6
-rw-r--r--src/mame/drivers/badlands.cpp4
-rw-r--r--src/mame/drivers/badlandsbl.cpp4
-rw-r--r--src/mame/drivers/bigstrkb.cpp4
-rw-r--r--src/mame/drivers/bingoc.cpp4
-rw-r--r--src/mame/drivers/bionicc.cpp4
-rw-r--r--src/mame/drivers/blockhl.cpp4
-rw-r--r--src/mame/drivers/blockout.cpp8
-rw-r--r--src/mame/drivers/boogwing.cpp10
-rw-r--r--src/mame/drivers/cabal.cpp12
-rw-r--r--src/mame/drivers/cave.cpp12
-rw-r--r--src/mame/drivers/cbuster.cpp6
-rw-r--r--src/mame/drivers/chinagat.cpp16
-rw-r--r--src/mame/drivers/chqflag.cpp8
-rw-r--r--src/mame/drivers/cischeat.cpp8
-rw-r--r--src/mame/drivers/cninja.cpp56
-rw-r--r--src/mame/drivers/contra.cpp4
-rw-r--r--src/mame/drivers/cps1.cpp8
-rw-r--r--src/mame/drivers/crimfght.cpp8
-rw-r--r--src/mame/drivers/darkmist.cpp9
-rw-r--r--src/mame/drivers/darkseal.cpp8
-rw-r--r--src/mame/drivers/dassault.cpp10
-rw-r--r--src/mame/drivers/dblewing.cpp6
-rw-r--r--src/mame/drivers/dbz.cpp8
-rw-r--r--src/mame/drivers/dcon.cpp8
-rw-r--r--src/mame/drivers/ddragon.cpp24
-rw-r--r--src/mame/drivers/ddragon3.cpp16
-rw-r--r--src/mame/drivers/de_2.cpp6
-rw-r--r--src/mame/drivers/deadang.cpp8
-rw-r--r--src/mame/drivers/deco32.cpp83
-rw-r--r--src/mame/drivers/dietgo.cpp6
-rw-r--r--src/mame/drivers/dooyong.cpp16
-rw-r--r--src/mame/drivers/exterm.cpp3
-rw-r--r--src/mame/drivers/exzisus.cpp8
-rw-r--r--src/mame/drivers/f-32.cpp12
-rw-r--r--src/mame/drivers/fantland.cpp12
-rw-r--r--src/mame/drivers/fb01.cpp8
-rw-r--r--src/mame/drivers/fcrash.cpp52
-rw-r--r--src/mame/drivers/flkatck.cpp4
-rw-r--r--src/mame/drivers/funkyjet.cpp8
-rw-r--r--src/mame/drivers/gaiden.cpp3
-rw-r--r--src/mame/drivers/gauntlet.cpp6
-rw-r--r--src/mame/drivers/gotcha.cpp8
-rw-r--r--src/mame/drivers/gradius3.cpp4
-rw-r--r--src/mame/drivers/hyprduel.cpp6
-rw-r--r--src/mame/drivers/jackal.cpp4
-rw-r--r--src/mame/drivers/kaneko16.cpp6
-rw-r--r--src/mame/drivers/legionna.cpp24
-rw-r--r--src/mame/drivers/lemmings.cpp8
-rw-r--r--src/mame/drivers/m107.cpp8
-rw-r--r--src/mame/drivers/m72.cpp6
-rw-r--r--src/mame/drivers/m90.cpp11
-rw-r--r--src/mame/drivers/m92.cpp8
-rw-r--r--src/mame/drivers/madmotor.cpp8
-rw-r--r--src/mame/drivers/mainevt.cpp4
-rw-r--r--src/mame/drivers/megasys1.cpp8
-rw-r--r--src/mame/drivers/metlfrzr.cpp9
-rw-r--r--src/mame/drivers/metro.cpp12
-rw-r--r--src/mame/drivers/moo.cpp4
-rw-r--r--src/mame/drivers/mugsmash.cpp8
-rw-r--r--src/mame/drivers/mustache.cpp8
-rw-r--r--src/mame/drivers/namcos2.cpp39
-rw-r--r--src/mame/drivers/namcos21.cpp4
-rw-r--r--src/mame/drivers/namcos21_c67.cpp4
-rw-r--r--src/mame/drivers/namcos21_de.cpp4
-rw-r--r--src/mame/drivers/namcos86.cpp4
-rw-r--r--src/mame/drivers/nemesis.cpp24
-rw-r--r--src/mame/drivers/nmk16.cpp8
-rw-r--r--src/mame/drivers/opwolf.cpp20
-rw-r--r--src/mame/drivers/overdriv.cpp4
-rw-r--r--src/mame/drivers/panicr.cpp9
-rw-r--r--src/mame/drivers/parodius.cpp4
-rw-r--r--src/mame/drivers/raiden2.cpp8
-rw-r--r--src/mame/drivers/rastan.cpp10
-rw-r--r--src/mame/drivers/rbisland.cpp10
-rw-r--r--src/mame/drivers/rbmk.cpp6
-rw-r--r--src/mame/drivers/rockrage.cpp4
-rw-r--r--src/mame/drivers/rohga.cpp40
-rw-r--r--src/mame/drivers/rpunch.cpp16
-rw-r--r--src/mame/drivers/s11.cpp6
-rw-r--r--src/mame/drivers/s11a.cpp6
-rw-r--r--src/mame/drivers/s11b.cpp6
-rw-r--r--src/mame/drivers/segahang.cpp8
-rw-r--r--src/mame/drivers/segaorun.cpp4
-rw-r--r--src/mame/drivers/segas16a.cpp22
-rw-r--r--src/mame/drivers/segas16b.cpp13
-rw-r--r--src/mame/drivers/segas24.cpp8
-rw-r--r--src/mame/drivers/segaxbd.cpp8
-rw-r--r--src/mame/drivers/segaybd.cpp8
-rw-r--r--src/mame/drivers/seta.cpp5
-rw-r--r--src/mame/drivers/sf.cpp8
-rw-r--r--src/mame/drivers/shadfrce.cpp8
-rw-r--r--src/mame/drivers/shisen.cpp8
-rw-r--r--src/mame/drivers/sidearms.cpp8
-rw-r--r--src/mame/drivers/silkroad.cpp4
-rw-r--r--src/mame/drivers/silvmil.cpp18
-rw-r--r--src/mame/drivers/simpsons.cpp10
-rw-r--r--src/mame/drivers/snowbros.cpp16
-rw-r--r--src/mame/drivers/supbtime.cpp8
-rw-r--r--src/mame/drivers/surpratk.cpp8
-rw-r--r--src/mame/drivers/system16.cpp12
-rw-r--r--src/mame/drivers/taito_x.cpp8
-rw-r--r--src/mame/drivers/tatsumi.cpp24
-rw-r--r--src/mame/drivers/tceptor.cpp4
-rw-r--r--src/mame/drivers/tecmo16.cpp8
-rw-r--r--src/mame/drivers/thunderx.cpp4
-rw-r--r--src/mame/drivers/tmnt.cpp40
-rw-r--r--src/mame/drivers/tomcat.cpp4
-rw-r--r--src/mame/drivers/tumbleb.cpp17
-rw-r--r--src/mame/drivers/twin16.cpp8
-rw-r--r--src/mame/drivers/ultraman.cpp4
-rw-r--r--src/mame/drivers/unico.cpp4
-rw-r--r--src/mame/drivers/vamphalf.cpp12
-rw-r--r--src/mame/drivers/vaportra.cpp8
-rw-r--r--src/mame/drivers/vball.cpp8
-rw-r--r--src/mame/drivers/vendetta.cpp4
-rw-r--r--src/mame/drivers/vigilant.cpp16
-rw-r--r--src/mame/drivers/wecleman.cpp4
-rw-r--r--src/mame/drivers/wwfsstar.cpp8
-rw-r--r--src/mame/drivers/x1.cpp6
-rw-r--r--src/mame/drivers/xexex.cpp10
-rw-r--r--src/mame/drivers/xmen.cpp8
140 files changed, 663 insertions, 836 deletions
diff --git a/src/devices/bus/a7800/xboard.cpp b/src/devices/bus/a7800/xboard.cpp
index 7859b655b93..6a772f3210c 100644
--- a/src/devices/bus/a7800/xboard.cpp
+++ b/src/devices/bus/a7800/xboard.cpp
@@ -123,8 +123,7 @@ MACHINE_CONFIG_START(a78_xm_device::device_add_mconfig)
MCFG_DEVICE_ADD("xb_pokey", POKEY, XTAL(14'318'181)/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "xb_speaker", 1.00)
- MCFG_DEVICE_ADD("xm_ym2151", YM2151, XTAL(14'318'181)/4)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "xb_speaker", 1.00)
+ YM2151(config, m_ym, XTAL(14'318'181)/4).add_route(ALL_OUTPUTS, "xb_speaker", 1.00);
MACHINE_CONFIG_END
diff --git a/src/devices/bus/isa/ibm_mfc.cpp b/src/devices/bus/isa/ibm_mfc.cpp
index d6c5c4a98ce..30a638d1c27 100644
--- a/src/devices/bus/isa/ibm_mfc.cpp
+++ b/src/devices/bus/isa/ibm_mfc.cpp
@@ -126,7 +126,7 @@ void isa8_ibm_mfc_device::io_map(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
- map(0x00, 0x01).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x00, 0x01).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x10, 0x10).rw("d71051", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
map(0x11, 0x11).rw("d71051", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
map(0x20, 0x23).rw("d71055c_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
@@ -405,10 +405,10 @@ MACHINE_CONFIG_START(isa8_ibm_mfc_device::device_add_mconfig)
SPEAKER(config, "ymleft").front_left();
SPEAKER(config, "ymright").front_right();
- MCFG_DEVICE_ADD("ym2151", YM2151, XTAL(4'000'000))
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, isa8_ibm_mfc_device, ibm_mfc_ym_irq))
- MCFG_SOUND_ROUTE(0, "ymleft", 1.00)
- MCFG_SOUND_ROUTE(1, "ymright", 1.00)
+ YM2151(config, m_ym2151, XTAL(4'000'000));
+ m_ym2151->irq_handler().set(FUNC(isa8_ibm_mfc_device::ibm_mfc_ym_irq));
+ m_ym2151->add_route(0, "ymleft", 1.00);
+ m_ym2151->add_route(1, "ymright", 1.00);
MACHINE_CONFIG_END
diff --git a/src/devices/bus/msx_cart/yamaha.cpp b/src/devices/bus/msx_cart/yamaha.cpp
index 25152208bc9..b480879fc29 100644
--- a/src/devices/bus/msx_cart/yamaha.cpp
+++ b/src/devices/bus/msx_cart/yamaha.cpp
@@ -53,10 +53,10 @@ MACHINE_CONFIG_START(msx_cart_sfg_device::device_add_mconfig)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ym2151", YM2151, XTAL(3'579'545)) // The SFG01 uses a YM2151, the SFG05 uses a YM2164, input clock comes from the main cpu frequency
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, msx_cart_sfg_device, ym2151_irq_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ YM2151(config, m_ym2151, XTAL(3'579'545)); // The SFG01 uses a YM2151, the SFG05 uses a YM2164, input clock comes from the main cpu frequency
+ m_ym2151->irq_handler().set(FUNC(msx_cart_sfg_device::ym2151_irq_w));
+ m_ym2151->add_route(0, "lspeaker", 0.80);
+ m_ym2151->add_route(1, "rspeaker", 0.80);
YM2148(config, m_ym2148, XTAL(4'000'000));
m_ym2148->txd_handler().set("mdout", FUNC(midi_port_device::write_txd));
diff --git a/src/devices/machine/i8255.h b/src/devices/machine/i8255.h
index bf540a26545..76753ba4c47 100644
--- a/src/devices/machine/i8255.h
+++ b/src/devices/machine/i8255.h
@@ -36,35 +36,6 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_I8255_IN_PORTA_CB(_devcb) \
- downcast<i8255_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
-
-#define MCFG_I8255_IN_PORTB_CB(_devcb) \
- downcast<i8255_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
-
-#define MCFG_I8255_IN_PORTC_CB(_devcb) \
- downcast<i8255_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
-
-#define MCFG_I8255_OUT_PORTA_CB(_devcb) \
- downcast<i8255_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
-
-#define MCFG_I8255_OUT_PORTB_CB(_devcb) \
- downcast<i8255_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
-
-#define MCFG_I8255_OUT_PORTC_CB(_devcb) \
- downcast<i8255_device &>(*device).set_out_pc_callback(DEVCB_##_devcb);
-
-// output state when pins are in tri-state, default 0xff
-#define MCFG_I8255_TRISTATE_PORTA_CB(_devcb) \
- downcast<i8255_device &>(*device).set_tri_pa_callback(DEVCB_##_devcb);
-
-#define MCFG_I8255_TRISTATE_PORTB_CB(_devcb) \
- downcast<i8255_device &>(*device).set_tri_pb_callback(DEVCB_##_devcb);
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -76,14 +47,6 @@ public:
// construction/destruction
i8255_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
- template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_in_pc_callback(Object &&cb) { return m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_pc_callback(Object &&cb) { return m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_tri_pa_callback(Object &&cb) { return m_tri_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_tri_pb_callback(Object &&cb) { return m_tri_pb_cb.set_callback(std::forward<Object>(cb)); }
auto in_pa_callback() { return m_in_pa_cb.bind(); }
auto in_pb_callback() { return m_in_pb_cb.bind(); }
auto in_pc_callback() { return m_in_pc_cb.bind(); }
diff --git a/src/mame/audio/atarijsa.cpp b/src/mame/audio/atarijsa.cpp
index aa93f8ef1ee..7ba889a9df1 100644
--- a/src/mame/audio/atarijsa.cpp
+++ b/src/mame/audio/atarijsa.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Aaron Giles
/***************************************************************************
- atarijsa.c
+ atarijsa.cpp
Functions to emulate the Atari "JSA" audio boards
@@ -98,13 +98,13 @@ DEFINE_DEVICE_TYPE(ATARI_JSA_IIIS, atari_jsa_iiis_device, "atjsa3s", "Atari JSA
void atari_jsa_i_device::atarijsa1_map(address_map &map)
{
map(0x0000, 0x1fff).ram();
- map(0x2000, 0x2001).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2000, 0x2001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x2800, 0x2800).mirror(0x01f9); // N/C
- map(0x2802, 0x2802).mirror(0x01f9).r("soundcomm", FUNC(atari_sound_comm_device::sound_command_r)); // /RDP
+ map(0x2802, 0x2802).mirror(0x01f9).r(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r)); // /RDP
map(0x2804, 0x2804).mirror(0x01f9).r(FUNC(atari_jsa_i_device::rdio_r)); // /RDIO
- map(0x2806, 0x2806).mirror(0x01f9).rw("soundcomm", FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w)); // R/W=/IRQACK
+ map(0x2806, 0x2806).mirror(0x01f9).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w)); // R/W=/IRQACK
map(0x2a00, 0x2a00).mirror(0x01f9).w(FUNC(atari_jsa_i_device::tms5220_voice)); // /VOICE
- map(0x2a02, 0x2a02).mirror(0x01f9).w("soundcomm", FUNC(atari_sound_comm_device::sound_response_w)); // /WRP
+ map(0x2a02, 0x2a02).mirror(0x01f9).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_response_w)); // /WRP
map(0x2a04, 0x2a04).mirror(0x01f9).w(FUNC(atari_jsa_i_device::wrio_w)); // /WRIO
map(0x2a06, 0x2a06).mirror(0x01f9).w(FUNC(atari_jsa_i_device::mix_w)); // /MIX
map(0x2c00, 0x2c0f).mirror(0x03f0).rw(FUNC(atari_jsa_i_device::pokey_r), FUNC(atari_jsa_i_device::pokey_w));
@@ -116,13 +116,13 @@ void atari_jsa_i_device::atarijsa1_map(address_map &map)
void atari_jsa_ii_device::atarijsa2_map(address_map &map)
{
map(0x0000, 0x1fff).ram();
- map(0x2000, 0x2001).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2000, 0x2001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x2800, 0x2800).mirror(0x01f9).r(FUNC(atari_jsa_ii_device::oki_r)); // /RDV
- map(0x2802, 0x2802).mirror(0x01f9).r("soundcomm", FUNC(atari_sound_comm_device::sound_command_r)); // /RDP
+ map(0x2802, 0x2802).mirror(0x01f9).r(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r)); // /RDP
map(0x2804, 0x2804).mirror(0x01f9).r(FUNC(atari_jsa_ii_device::rdio_r)); // /RDIO
- map(0x2806, 0x2806).mirror(0x01f9).rw("soundcomm", FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w)); // R/W=/IRQACK
+ map(0x2806, 0x2806).mirror(0x01f9).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w)); // R/W=/IRQACK
map(0x2a00, 0x2a00).mirror(0x01f9).w(FUNC(atari_jsa_ii_device::oki_w)); // /WRV
- map(0x2a02, 0x2a02).mirror(0x01f9).w("soundcomm", FUNC(atari_sound_comm_device::sound_response_w)); // /WRP
+ map(0x2a02, 0x2a02).mirror(0x01f9).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_response_w)); // /WRP
map(0x2a04, 0x2a04).mirror(0x01f9).w(FUNC(atari_jsa_ii_device::wrio_w)); // /WRIO
map(0x2a06, 0x2a06).mirror(0x01f9).w(FUNC(atari_jsa_ii_device::mix_w)); // /MIX
map(0x3000, 0x3fff).bankr("cpubank");
@@ -134,13 +134,13 @@ void atari_jsa_ii_device::atarijsa2_map(address_map &map)
void atari_jsa_iii_device::atarijsa3_map(address_map &map)
{
map(0x0000, 0x1fff).ram();
- map(0x2000, 0x2001).mirror(0x07fe).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2000, 0x2001).mirror(0x07fe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x2800, 0x2801).mirror(0x05f8).rw(FUNC(atari_jsa_iii_device::oki_r), FUNC(atari_jsa_iii_device::overall_volume_w)); // /RDV
- map(0x2802, 0x2802).mirror(0x05f9).r("soundcomm", FUNC(atari_sound_comm_device::sound_command_r)); // /RDP
+ map(0x2802, 0x2802).mirror(0x05f9).r(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r)); // /RDP
map(0x2804, 0x2804).mirror(0x05f9).r(FUNC(atari_jsa_iii_device::rdio_r)); // /RDIO
- map(0x2806, 0x2806).mirror(0x05f9).rw("soundcomm", FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w)); // R/W=/IRQACK
+ map(0x2806, 0x2806).mirror(0x05f9).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w)); // R/W=/IRQACK
map(0x2a00, 0x2a01).mirror(0x05f8).w(FUNC(atari_jsa_iii_device::oki_w)); // /WRV
- map(0x2a02, 0x2a02).mirror(0x05f9).w("soundcomm", FUNC(atari_sound_comm_device::sound_response_w)); // /WRP
+ map(0x2a02, 0x2a02).mirror(0x05f9).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_response_w)); // /WRP
map(0x2a04, 0x2a04).mirror(0x05f9).w(FUNC(atari_jsa_iii_device::wrio_w)); // /WRIO
map(0x2a06, 0x2a06).mirror(0x05f9).w(FUNC(atari_jsa_iii_device::mix_w)); // /MIX
map(0x3000, 0x3fff).bankr("cpubank");
@@ -706,14 +706,14 @@ MACHINE_CONFIG_START(atari_jsa_i_device::device_add_mconfig)
MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, JSA_MASTER_CLOCK/4/16/16/14)
// sound hardware
- ATARI_SOUND_COMM(config, "soundcomm", "cpu")
+ ATARI_SOUND_COMM(config, m_soundcomm, "cpu")
.int_callback().set(FUNC(atari_jsa_base_device::main_int_write_line));
- MCFG_DEVICE_ADD("ym2151", YM2151, JSA_MASTER_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, atari_jsa_base_device, ym2151_port_w))
- MCFG_MIXER_ROUTE(0, *this, 0.60, 0)
- MCFG_MIXER_ROUTE(1, *this, 0.60, 1)
+ YM2151(config, m_ym2151, JSA_MASTER_CLOCK);
+ m_ym2151->irq_handler().set(m_soundcomm, FUNC(atari_sound_comm_device::ym2151_irq_gen));
+ m_ym2151->port_write_handler().set(FUNC(atari_jsa_base_device::ym2151_port_w));
+ m_ym2151->add_route(0, *this, 0.60, AUTO_ALLOC_INPUT, 0);
+ m_ym2151->add_route(1, *this, 0.60, AUTO_ALLOC_INPUT, 1);
MCFG_DEVICE_ADD("pokey", POKEY, JSA_MASTER_CLOCK/2)
MCFG_MIXER_ROUTE(ALL_OUTPUTS, *this, 0.40, 0)
@@ -837,13 +837,13 @@ MACHINE_CONFIG_START(atari_jsa_ii_device::device_add_mconfig)
MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, JSA_MASTER_CLOCK/4/16/16/14)
// sound hardware
- ATARI_SOUND_COMM(config, "soundcomm", "cpu")
+ ATARI_SOUND_COMM(config, m_soundcomm, "cpu")
.int_callback().set(FUNC(atari_jsa_base_device::main_int_write_line));
- MCFG_DEVICE_ADD("ym2151", YM2151, JSA_MASTER_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, atari_jsa_base_device, ym2151_port_w))
- MCFG_MIXER_ROUTE(ALL_OUTPUTS, *this, 0.60, 0)
+ YM2151(config, m_ym2151, JSA_MASTER_CLOCK);
+ m_ym2151->irq_handler().set(m_soundcomm, FUNC(atari_sound_comm_device::ym2151_irq_gen));
+ m_ym2151->port_write_handler().set(FUNC(atari_jsa_base_device::ym2151_port_w));
+ m_ym2151->add_route(ALL_OUTPUTS, *this, 0.60, AUTO_ALLOC_INPUT, 0);
MCFG_DEVICE_ADD("oki1", OKIM6295, JSA_MASTER_CLOCK/3, okim6295_device::PIN7_HIGH)
MCFG_MIXER_ROUTE(ALL_OUTPUTS, *this, 0.75, 0)
@@ -920,13 +920,13 @@ MACHINE_CONFIG_START(atari_jsa_iii_device::device_add_mconfig)
MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, JSA_MASTER_CLOCK/4/16/16/14)
// sound hardware
- ATARI_SOUND_COMM(config, "soundcomm", "cpu")
+ ATARI_SOUND_COMM(config, m_soundcomm, "cpu")
.int_callback().set(FUNC(atari_jsa_base_device::main_int_write_line));
- MCFG_DEVICE_ADD("ym2151", YM2151, JSA_MASTER_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, atari_jsa_base_device, ym2151_port_w))
- MCFG_MIXER_ROUTE(ALL_OUTPUTS, *this, 0.60, 0)
+ YM2151(config, m_ym2151, JSA_MASTER_CLOCK);
+ m_ym2151->irq_handler().set(m_soundcomm, FUNC(atari_sound_comm_device::ym2151_irq_gen));
+ m_ym2151->port_write_handler().set(FUNC(atari_jsa_base_device::ym2151_port_w));
+ m_ym2151->add_route(ALL_OUTPUTS, *this, 0.60, AUTO_ALLOC_INPUT, 0);
MCFG_DEVICE_ADD("oki1", OKIM6295, JSA_MASTER_CLOCK/3, okim6295_device::PIN7_HIGH)
MCFG_DEVICE_ADDRESS_MAP(0, jsa3_oki1_map)
diff --git a/src/mame/audio/leland.cpp b/src/mame/audio/leland.cpp
index 8235dbf3eac..218b72d8ce6 100644
--- a/src/mame/audio/leland.cpp
+++ b/src/mame/audio/leland.cpp
@@ -300,9 +300,9 @@ MACHINE_CONFIG_START(wsf_80186_sound_device::device_add_mconfig)
MCFG_SOUND_ROUTE(0, "dac9", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac9", -1.0, DAC_VREF_NEG_INPUT)
/* sound hardware */
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_SOUND_ROUTE(0, "speaker", 0.40)
- MCFG_SOUND_ROUTE(1, "speaker", 0.40)
+ YM2151(config, m_ymsnd, 4000000);
+ m_ymsnd->add_route(0, "speaker", 0.40);
+ m_ymsnd->add_route(1, "speaker", 0.40);
PIT8254(config, m_pit[0], 0);
m_pit[0]->set_clk<0>(4000000);
diff --git a/src/mame/audio/leland.h b/src/mame/audio/leland.h
index bf660b6eeed..322b8cae4a1 100644
--- a/src/mame/audio/leland.h
+++ b/src/mame/audio/leland.h
@@ -62,6 +62,7 @@ protected:
optional_device_array<dac_byte_interface, 8> m_dacvol;
optional_device_array<pit8254_device, 3> m_pit;
optional_device<i80186_cpu_device> m_audiocpu;
+ optional_device<ym2151_device> m_ymsnd;
void ataxx_80186_map_io(address_map &map);
void leland_80186_map_io(address_map &map);
@@ -83,7 +84,6 @@ private:
uint8_t m_ext_active;
uint8_t* m_ext_base;
- optional_device<ym2151_device> m_ymsnd;
required_device<cpu_device> m_master;
};
diff --git a/src/mame/audio/s11c_bg.cpp b/src/mame/audio/s11c_bg.cpp
index 71fca2276bc..97053be6b50 100644
--- a/src/mame/audio/s11c_bg.cpp
+++ b/src/mame/audio/s11c_bg.cpp
@@ -29,7 +29,7 @@ s11c_bg_device::s11c_bg_device(const machine_config &mconfig, const char *tag, d
void s11c_bg_device::s11c_bg_map(address_map &map)
{
map(0x0000, 0x07ff).ram();
- map(0x2000, 0x2001).mirror(0x1ffe).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x4000, 0x4003).mirror(0x1ffc).rw("pia40", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x6000, 0x67ff).w(FUNC(s11c_bg_device::bg_speech_digit_w));
map(0x6800, 0x6fff).w(FUNC(s11c_bg_device::bg_speech_clock_w));
@@ -62,9 +62,9 @@ MACHINE_CONFIG_START(s11c_bg_device::device_add_mconfig)
MCFG_DEVICE_PROGRAM_MAP(s11c_bg_map)
MCFG_QUANTUM_TIME(attotime::from_hz(50))
- MCFG_DEVICE_ADD("ym2151", YM2151, XTAL(3'579'545)) // "3.58 MHz" on schematics and parts list
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, s11c_bg_device, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, *this, 0.25)
+ YM2151(config, m_ym2151, XTAL(3'579'545)); // "3.58 MHz" on schematics and parts list
+ m_ym2151->irq_handler().set(FUNC(s11c_bg_device::ym2151_irq_w));
+ m_ym2151->add_route(ALL_OUTPUTS, *this, 0.25);
MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, *this, 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
@@ -76,7 +76,7 @@ MACHINE_CONFIG_START(s11c_bg_device::device_add_mconfig)
PIA6821(config, m_pia40, 0);
m_pia40->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
m_pia40->writepb_handler().set(FUNC(s11c_bg_device::pia40_pb_w));
- m_pia40->ca2_handler().set("ym2151", FUNC(ym2151_device::reset_w));
+ m_pia40->ca2_handler().set(m_ym2151, FUNC(ym2151_device::reset_w));
m_pia40->cb2_handler().set(FUNC(s11c_bg_device::pia40_cb2_w));
m_pia40->irqa_handler().set_inputline("bgcpu", M6809_FIRQ_LINE);
m_pia40->irqb_handler().set_inputline("bgcpu", INPUT_LINE_NMI);
diff --git a/src/mame/audio/williams.cpp b/src/mame/audio/williams.cpp
index c8968b1085a..c94bea20c9a 100644
--- a/src/mame/audio/williams.cpp
+++ b/src/mame/audio/williams.cpp
@@ -504,9 +504,9 @@ MACHINE_CONFIG_START(williams_narc_sound_device::device_add_mconfig)
MCFG_DEVICE_ADD("cpu1", MC6809E, NARC_MASTER_CLOCK / 4)
MCFG_DEVICE_PROGRAM_MAP(williams_narc_slave_map)
- MCFG_DEVICE_ADD("ym2151", YM2151, NARC_FM_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("cpu0", M6809_FIRQ_LINE))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, *this, 0.10)
+ ym2151_device &ym2151(YM2151(config, "ym2151", NARC_FM_CLOCK));
+ ym2151.irq_handler().set_inputline("cpu0", M6809_FIRQ_LINE);
+ ym2151.add_route(ALL_OUTPUTS, *this, 0.10);
MCFG_DEVICE_ADD("dac1", AD7224, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, *this, 0.25)
MCFG_DEVICE_ADD("dac2", AD7224, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, *this, 0.25)
@@ -758,9 +758,9 @@ MACHINE_CONFIG_START(williams_adpcm_sound_device::device_add_mconfig)
MCFG_DEVICE_ADD("cpu", MC6809E, ADPCM_MASTER_CLOCK / 4)
MCFG_DEVICE_PROGRAM_MAP(williams_adpcm_map)
- MCFG_DEVICE_ADD("ym2151", YM2151, ADPCM_FM_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("cpu", M6809_FIRQ_LINE))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, *this, 0.10)
+ ym2151_device &ym2151(YM2151(config, "ym2151", ADPCM_FM_CLOCK));
+ ym2151.irq_handler().set_inputline("cpu", M6809_FIRQ_LINE);
+ ym2151.add_route(ALL_OUTPUTS, *this, 0.10);
MCFG_DEVICE_ADD("dac", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, *this, 0.10)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
diff --git a/src/mame/audio/wpcsnd.cpp b/src/mame/audio/wpcsnd.cpp
index 87d75acd4d5..bb34e560a8d 100644
--- a/src/mame/audio/wpcsnd.cpp
+++ b/src/mame/audio/wpcsnd.cpp
@@ -35,7 +35,7 @@ void wpcsnd_device::wpcsnd_map(address_map &map)
{
map(0x0000, 0x1fff).ram();
map(0x2000, 0x2000).mirror(0x03ff).w(FUNC(wpcsnd_device::rombank_w));
- map(0x2400, 0x2401).mirror(0x03fe).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2400, 0x2401).mirror(0x03fe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x2800, 0x2800).mirror(0x03ff).w("dac", FUNC(dac_byte_interface::data_w));
map(0x2c00, 0x2fff).w(FUNC(wpcsnd_device::bg_speech_digit_w));
map(0x3000, 0x33ff).r(FUNC(wpcsnd_device::latch_r));
@@ -74,9 +74,9 @@ MACHINE_CONFIG_START(wpcsnd_device::device_add_mconfig)
MCFG_DEVICE_PROGRAM_MAP(wpcsnd_map)
MCFG_QUANTUM_TIME(attotime::from_hz(50))
- MCFG_DEVICE_ADD("ym2151", YM2151, 3580000)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, wpcsnd_device, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, *this, 0.25)
+ YM2151(config, m_ym2151, 3580000);
+ m_ym2151->irq_handler().set(FUNC(wpcsnd_device::ym2151_irq_w));
+ m_ym2151->add_route(ALL_OUTPUTS, *this, 0.25);
MCFG_DEVICE_ADD("dac", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, *this, 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
diff --git a/src/mame/drivers/88games.cpp b/src/mame/drivers/88games.cpp
index 28ee66b131d..9524301dccd 100644
--- a/src/mame/drivers/88games.cpp
+++ b/src/mame/drivers/88games.cpp
@@ -348,9 +348,7 @@ MACHINE_CONFIG_START(_88games_state::_88games)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_SOUND_ROUTE(0, "mono", 0.75)
- MCFG_SOUND_ROUTE(1, "mono", 0.75)
+ YM2151(config, "ymsnd", 3579545).add_route(0, "mono", 0.75).add_route(1, "mono", 0.75);
MCFG_DEVICE_ADD("upd1", UPD7759)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp
index 9dcd18f2065..75e733920d8 100644
--- a/src/mame/drivers/airraid.cpp
+++ b/src/mame/drivers/airraid.cpp
@@ -411,10 +411,10 @@ MACHINE_CONFIG_START(airraid_state::airraid)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181)/4));
+ ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0)
MCFG_SEIBU_SOUND_CPU("audiocpu")
diff --git a/src/mame/drivers/ajax.cpp b/src/mame/drivers/ajax.cpp
index 6f6113ae314..104fce7083c 100644
--- a/src/mame/drivers/ajax.cpp
+++ b/src/mame/drivers/ajax.cpp
@@ -219,9 +219,7 @@ MACHINE_CONFIG_START(ajax_state::ajax)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", 3579545).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("k007232_1", K007232, 3579545)
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, ajax_state, volume_callback0))
diff --git a/src/mame/drivers/aliens.cpp b/src/mame/drivers/aliens.cpp
index a41726fe493..6a0742704b3 100644
--- a/src/mame/drivers/aliens.cpp
+++ b/src/mame/drivers/aliens.cpp
@@ -236,10 +236,10 @@ MACHINE_CONFIG_START(aliens_state::aliens)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, aliens_state,aliens_snd_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "mono", 0.60)
- MCFG_SOUND_ROUTE(1, "mono", 0.60)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ymsnd.port_write_handler().set(FUNC(aliens_state::aliens_snd_bankswitch_w));
+ ymsnd.add_route(0, "mono", 0.60);
+ ymsnd.add_route(1, "mono", 0.60);
MCFG_DEVICE_ADD("k007232", K007232, XTAL(3'579'545)) /* verified on pcb */
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, aliens_state, volume_callback))
diff --git a/src/mame/drivers/amspdwy.cpp b/src/mame/drivers/amspdwy.cpp
index 55ae5d18448..1fc92a6e013 100644
--- a/src/mame/drivers/amspdwy.cpp
+++ b/src/mame/drivers/amspdwy.cpp
@@ -280,10 +280,10 @@ MACHINE_CONFIG_START(amspdwy_state::amspdwy)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3000000)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, m_ym2151, 3000000);
+ m_ym2151->irq_handler().set_inputline(m_audiocpu, 0);
+ m_ym2151->add_route(0, "lspeaker", 1.0);
+ m_ym2151->add_route(1, "rspeaker", 1.0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/aquarium.cpp b/src/mame/drivers/aquarium.cpp
index 1168eff394f..362a36be814 100644
--- a/src/mame/drivers/aquarium.cpp
+++ b/src/mame/drivers/aquarium.cpp
@@ -324,10 +324,10 @@ MACHINE_CONFIG_START(aquarium_state::aquarium)
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
m_soundlatch->set_separate_acknowledge(true);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4) // clock not verified on pcb
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181)/4)); // clock not verified on pcb
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.45);
+ ymsnd.add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'056'000), okim6295_device::PIN7_HIGH) // pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
diff --git a/src/mame/drivers/asterix.cpp b/src/mame/drivers/asterix.cpp
index b43a526d2a2..0c98bff5b64 100644
--- a/src/mame/drivers/asterix.cpp
+++ b/src/mame/drivers/asterix.cpp
@@ -301,9 +301,7 @@ MACHINE_CONFIG_START(asterix_state::asterix)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'000'000)/8) // 4MHz
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(32'000'000)/8).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); // 4MHz
MCFG_K053260_ADD("k053260", XTAL(32'000'000)/8) // 4MHz
MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
diff --git a/src/mame/drivers/atarisy1.cpp b/src/mame/drivers/atarisy1.cpp
index 05b2303b4f4..15efca07abd 100644
--- a/src/mame/drivers/atarisy1.cpp
+++ b/src/mame/drivers/atarisy1.cpp
@@ -780,10 +780,10 @@ MACHINE_CONFIG_START(atarisy1_state::atarisy1)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", ATARI_CLOCK_14MHz/4));
+ ymsnd.irq_handler().set(m_soundcomm, FUNC(atari_sound_comm_device::ym2151_irq_gen));
+ ymsnd.add_route(0, "lspeaker", 0.80);
+ ymsnd.add_route(1, "rspeaker", 0.80);
MCFG_DEVICE_ADD("pokey", POKEY, ATARI_CLOCK_14MHz/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
diff --git a/src/mame/drivers/atarisy2.cpp b/src/mame/drivers/atarisy2.cpp
index 5b01de2eaf6..cf1e4c95029 100644
--- a/src/mame/drivers/atarisy2.cpp
+++ b/src/mame/drivers/atarisy2.cpp
@@ -1236,9 +1236,9 @@ MACHINE_CONFIG_START(atarisy2_state::atarisy2)
ATARI_SOUND_COMM(config, "soundcomm", "audiocpu").int_callback().set_nop();
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CLOCK/4)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
+ YM2151(config, m_ym2151, SOUND_CLOCK/4);
+ m_ym2151->add_route(0, "lspeaker", 0.60);
+ m_ym2151->add_route(1, "rspeaker", 0.60);
MCFG_DEVICE_ADD("pokey1", POKEY, SOUND_CLOCK/8)
MCFG_POKEY_ALLPOT_R_CB(IOPORT("DSW0"))
diff --git a/src/mame/drivers/badlands.cpp b/src/mame/drivers/badlands.cpp
index 4228d334fa2..4a04e73c714 100644
--- a/src/mame/drivers/badlands.cpp
+++ b/src/mame/drivers/badlands.cpp
@@ -483,9 +483,7 @@ MACHINE_CONFIG_START(badlands_state::badlands)
.int_callback().set_inputline("maincpu", M68K_IRQ_2);
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
- MCFG_SOUND_ROUTE(0, "mono", 0.30)
- MCFG_SOUND_ROUTE(1, "mono", 0.30)
+ YM2151(config, "ymsnd", ATARI_CLOCK_14MHz/4).add_route(0, "mono", 0.30).add_route(1, "mono", 0.30);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/badlandsbl.cpp b/src/mame/drivers/badlandsbl.cpp
index c82eb0a28cd..6531adb9a17 100644
--- a/src/mame/drivers/badlandsbl.cpp
+++ b/src/mame/drivers/badlandsbl.cpp
@@ -257,9 +257,7 @@ MACHINE_CONFIG_START(badlandsbl_state::badlandsb)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(20'000'000)/8) /* Divisor estimated */
- MCFG_SOUND_ROUTE(0, "mono", 0.30)
- MCFG_SOUND_ROUTE(1, "mono", 0.30)
+ YM2151(config, "ymsnd", XTAL(20'000'000)/8).add_route(0, "mono", 0.30).add_route(1, "mono", 0.30); /* Divisor estimated */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bigstrkb.cpp b/src/mame/drivers/bigstrkb.cpp
index 1196c121e81..07907a455f8 100644
--- a/src/mame/drivers/bigstrkb.cpp
+++ b/src/mame/drivers/bigstrkb.cpp
@@ -5,7 +5,7 @@
Driver by David Haywood
Inputs by Stephh
- maybe it could be merged with megasys1.c, could be messy
+ maybe it could be merged with megasys1.cpp, could be messy
todo:
@@ -222,7 +222,7 @@ MACHINE_CONFIG_START(bigstrkb_state::bigstrkb)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-// MCFG_DEVICE_ADD("ymsnd", YM2151, ym2151_config)
+// YM2151(config, "ymsnd", 4000000);
MCFG_DEVICE_ADD("oki1", OKIM6295, 4000000, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
diff --git a/src/mame/drivers/bingoc.cpp b/src/mame/drivers/bingoc.cpp
index 09a42d18122..e6a55bd123d 100644
--- a/src/mame/drivers/bingoc.cpp
+++ b/src/mame/drivers/bingoc.cpp
@@ -209,9 +209,7 @@ MACHINE_CONFIG_START(bingoc_state::bingoc)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 7159160/2)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", 7159160/2).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("upd", UPD7759)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp
index 73e60278fe0..90509c086cc 100644
--- a/src/mame/drivers/bionicc.cpp
+++ b/src/mame/drivers/bionicc.cpp
@@ -431,9 +431,7 @@ MACHINE_CONFIG_START(bionicc_state::bionicc)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181) / 4)
- MCFG_SOUND_ROUTE(0, "mono", 0.60)
- MCFG_SOUND_ROUTE(1, "mono", 0.60)
+ YM2151(config, "ymsnd", XTAL(14'318'181) / 4).add_route(0, "mono", 0.60).add_route(1, "mono", 0.60);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/blockhl.cpp b/src/mame/drivers/blockhl.cpp
index 85eb1801e27..fe6a4f530e7 100644
--- a/src/mame/drivers/blockhl.cpp
+++ b/src/mame/drivers/blockhl.cpp
@@ -319,9 +319,7 @@ MACHINE_CONFIG_START(blockhl_state::blockhl)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "mono", 0.60)
- MCFG_SOUND_ROUTE(1, "mono", 0.60)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "mono", 0.60).add_route(1, "mono", 0.60);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/blockout.cpp b/src/mame/drivers/blockout.cpp
index 9686ffde145..3249c589183 100644
--- a/src/mame/drivers/blockout.cpp
+++ b/src/mame/drivers/blockout.cpp
@@ -332,10 +332,10 @@ MACHINE_CONFIG_START(blockout_state::blockout)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, AUDIO_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, blockout_state,irq_handler))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", AUDIO_CLOCK));
+ ymsnd.irq_handler().set(FUNC(blockout_state::irq_handler));
+ ymsnd.add_route(0, "lspeaker", 0.60);
+ ymsnd.add_route(1, "rspeaker", 0.60);
MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
diff --git a/src/mame/drivers/boogwing.cpp b/src/mame/drivers/boogwing.cpp
index bd2a19485ed..79a4ab80c44 100644
--- a/src/mame/drivers/boogwing.cpp
+++ b/src/mame/drivers/boogwing.cpp
@@ -413,11 +413,11 @@ MACHINE_CONFIG_START(boogwing_state::boogwing)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_XTAL/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ2 */
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, boogwing_state, sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_XTAL/9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ymsnd.port_write_handler().set(FUNC(boogwing_state::sound_bankswitch_w));
+ ymsnd.add_route(0, "lspeaker", 0.80);
+ ymsnd.add_route(1, "rspeaker", 0.80);
MCFG_DEVICE_ADD("oki1", OKIM6295, SOUND_XTAL/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.40)
diff --git a/src/mame/drivers/cabal.cpp b/src/mame/drivers/cabal.cpp
index 430896381a7..2aac2903299 100644
--- a/src/mame/drivers/cabal.cpp
+++ b/src/mame/drivers/cabal.cpp
@@ -537,9 +537,9 @@ MACHINE_CONFIG_START(cabal_state::cabal)
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler));
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
MCFG_DEVICE_ADD("adpcm1", SEIBU_ADPCM, 8000) /* it should use the msm5205 */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
@@ -619,9 +619,9 @@ MACHINE_CONFIG_START(cabal_state::cabalbl)
GENERIC_LATCH_8(config, "soundlatch2");
GENERIC_LATCH_8(config, "soundlatch3");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
MCFG_DEVICE_ADD("msm1", MSM5205, XTAL(12'000'000)/32) /* verified on pcb (no resonator) */
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B)
diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp
index 0b7742e5b34..df20177d6a7 100644
--- a/src/mame/drivers/cave.cpp
+++ b/src/mame/drivers/cave.cpp
@@ -2528,9 +2528,9 @@ MACHINE_CONFIG_START(cave_state::metmqstr)
GENERIC_LATCH_16(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 16_MHz_XTAL / 4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 16_MHz_XTAL / 4));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.6);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32_MHz_XTAL / 16 , okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
@@ -2778,9 +2778,9 @@ MACHINE_CONFIG_START(cave_state::sailormn)
GENERIC_LATCH_16(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 16_MHz_XTAL/4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 16_MHz_XTAL / 4));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.30);
MCFG_DEVICE_ADD("oki1", OKIM6295, 2112000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
diff --git a/src/mame/drivers/cbuster.cpp b/src/mame/drivers/cbuster.cpp
index 697edfd0325..080dd2e1bdc 100644
--- a/src/mame/drivers/cbuster.cpp
+++ b/src/mame/drivers/cbuster.cpp
@@ -369,9 +369,9 @@ MACHINE_CONFIG_START(cbuster_state::twocrude)
MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000)/24 * 3) /* 1.3425MHz Verified */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- MCFG_DEVICE_ADD("ym2", YM2151, XTAL(32'220'000)/9) /* 3.58MHz Verified */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ2 */
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
+ ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9)); /* 3.58MHz Verified */
+ ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ym2.add_route(ALL_OUTPUTS, "mono", 0.45);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH) /* 1.0068MHz Verified */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
diff --git a/src/mame/drivers/chinagat.cpp b/src/mame/drivers/chinagat.cpp
index bc713fc8262..9d56a7cf482 100644
--- a/src/mame/drivers/chinagat.cpp
+++ b/src/mame/drivers/chinagat.cpp
@@ -593,10 +593,10 @@ MACHINE_CONFIG_START(chinagat_state::chinagat)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.80)
- MCFG_SOUND_ROUTE(1, "mono", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579545));
+ ymsnd.irq_handler().set_inputline(m_soundcpu, 0);
+ ymsnd.add_route(0, "mono", 0.80);
+ ymsnd.add_route(1, "mono", 0.80);
MCFG_DEVICE_ADD("oki", OKIM6295, 1065000, okim6295_device::PIN7_HIGH) // pin 7 not verified, clock frequency estimated with recording
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
@@ -647,10 +647,10 @@ MACHINE_CONFIG_START(chinagat_state::saiyugoub1)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.80)
- MCFG_SOUND_ROUTE(1, "mono", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579545));
+ ymsnd.irq_handler().set_inputline(m_soundcpu, 0);
+ ymsnd.add_route(0, "mono", 0.80);
+ ymsnd.add_route(1, "mono", 0.80);
MCFG_DEVICE_ADD("adpcm", MSM5205, 9263750 / 24)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, chinagat_state, saiyugoub1_m5205_irq_w)) /* Interrupt function */
diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp
index 7d0fdf7b6a3..9749b29589d 100644
--- a/src/mame/drivers/chqflag.cpp
+++ b/src/mame/drivers/chqflag.cpp
@@ -372,10 +372,10 @@ MACHINE_CONFIG_START(chqflag_state::chqflag)
GENERIC_LATCH_8(config, "soundlatch");
GENERIC_LATCH_8(config, "soundlatch2").data_pending_callback().set_inputline(m_audiocpu, 0);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
+ ymsnd.add_route(0, "lspeaker", 1.00);
+ ymsnd.add_route(1, "rspeaker", 1.00);
MCFG_DEVICE_ADD("k007232_1", K007232, XTAL(3'579'545)) /* verified on pcb */
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, chqflag_state, volume_callback0))
diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp
index 1e727f17f64..aba337d61f9 100644
--- a/src/mame/drivers/cischeat.cpp
+++ b/src/mame/drivers/cischeat.cpp
@@ -1998,10 +1998,10 @@ MACHINE_CONFIG_START(cischeat_state::bigrun)
GENERIC_LATCH_16(config, m_soundlatch2);
// TODO: all sound frequencies unverified (assume same as Mega System 1)
- MCFG_DEVICE_ADD("ymsnd", YM2151, 7000000/2)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, cischeat_state,sound_irq))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 7000000/2));
+ ymsnd.irq_handler().set(FUNC(cischeat_state::sound_irq));
+ ymsnd.add_route(0, "lspeaker", 0.50);
+ ymsnd.add_route(1, "rspeaker", 0.50);
MCFG_DEVICE_ADD("oki1", OKIM6295, 4000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
diff --git a/src/mame/drivers/cninja.cpp b/src/mame/drivers/cninja.cpp
index cc6ab7678f9..1c36239b5d4 100644
--- a/src/mame/drivers/cninja.cpp
+++ b/src/mame/drivers/cninja.cpp
@@ -866,11 +866,11 @@ MACHINE_CONFIG_START(cninja_state::cninja)
MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000) / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- MCFG_DEVICE_ADD("ym2", YM2151, XTAL(32'220'000) / 9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, cninja_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "mono", 0.45)
- MCFG_SOUND_ROUTE(1, "mono", 0.45)
+ ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000) / 9));
+ ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ym2.port_write_handler().set(FUNC(cninja_state::sound_bankswitch_w));
+ ym2.add_route(0, "mono", 0.45);
+ ym2.add_route(1, "mono", 0.45);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
@@ -953,10 +953,10 @@ MACHINE_CONFIG_START(cninja_state::stoneage)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'220'000) / 9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
- MCFG_SOUND_ROUTE(0, "mono", 0.45)
- MCFG_SOUND_ROUTE(1, "mono", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'220'000) / 9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, INPUT_LINE_IRQ0);
+ ymsnd.add_route(0, "mono", 0.45);
+ ymsnd.add_route(1, "mono", 0.45);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
@@ -1042,10 +1042,10 @@ MACHINE_CONFIG_START(cninja_state::cninjabl)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'220'000) / 9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
- MCFG_SOUND_ROUTE(0, "mono", 0.45)
- MCFG_SOUND_ROUTE(1, "mono", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'220'000) / 9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, INPUT_LINE_IRQ0);
+ ymsnd.add_route(0, "mono", 0.45);
+ ymsnd.add_route(1, "mono", 0.45);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
@@ -1126,11 +1126,11 @@ MACHINE_CONFIG_START(cninja_state::edrandy)
MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000) / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- MCFG_DEVICE_ADD("ym2", YM2151, XTAL(32'220'000) / 9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, cninja_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "mono", 0.45)
- MCFG_SOUND_ROUTE(1, "mono", 0.45)
+ ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000) / 9));
+ ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ym2.port_write_handler().set(FUNC(cninja_state::sound_bankswitch_w));
+ ym2.add_route(0, "mono", 0.45);
+ ym2.add_route(1, "mono", 0.45);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
@@ -1223,11 +1223,11 @@ MACHINE_CONFIG_START(cninja_state::robocop2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60)
- MCFG_DEVICE_ADD("ym2", YM2151, XTAL(32'220'000) / 9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, cninja_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000) / 9));
+ ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ym2.port_write_handler().set(FUNC(cninja_state::sound_bankswitch_w));
+ ym2.add_route(0, "lspeaker", 0.45);
+ ym2.add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
@@ -1317,11 +1317,11 @@ MACHINE_CONFIG_START(cninja_state::mutantf)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'220'000) / 9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, cninja_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'220'000) / 9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ymsnd.port_write_handler().set(FUNC(cninja_state::sound_bankswitch_w));
+ ymsnd.add_route(0, "lspeaker", 0.45);
+ ymsnd.add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
diff --git a/src/mame/drivers/contra.cpp b/src/mame/drivers/contra.cpp
index 80d1296b766..5aea7db4cdb 100644
--- a/src/mame/drivers/contra.cpp
+++ b/src/mame/drivers/contra.cpp
@@ -247,9 +247,7 @@ MACHINE_CONFIG_START(contra_state::contra)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 0.60).add_route(1, "rspeaker", 0.60);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp
index 48cc00e8c23..aa9d3aa2800 100644
--- a/src/mame/drivers/cps1.cpp
+++ b/src/mame/drivers/cps1.cpp
@@ -3412,10 +3412,10 @@ MACHINE_CONFIG_START(cps_state::cps1_10MHz)
GENERIC_LATCH_8(config, m_soundlatch);
GENERIC_LATCH_8(config, m_soundlatch2);
- MCFG_DEVICE_ADD("2151", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545))); /* verified on pcb */
+ ym2151.irq_handler().set_inputline(m_audiocpu, 0);
+ ym2151.add_route(0, "mono", 0.35);
+ ym2151.add_route(1, "mono", 0.35);
/* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
diff --git a/src/mame/drivers/crimfght.cpp b/src/mame/drivers/crimfght.cpp
index 2f8f73bd6f2..69b5d6d9dbd 100644
--- a/src/mame/drivers/crimfght.cpp
+++ b/src/mame/drivers/crimfght.cpp
@@ -343,10 +343,10 @@ MACHINE_CONFIG_START(crimfght_state::crimfght)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, crimfght_state, ym2151_ct_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ymsnd.port_write_handler().set(FUNC(crimfght_state::ym2151_ct_w));
+ ymsnd.add_route(0, "lspeaker", 1.0);
+ ymsnd.add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("k007232", K007232, XTAL(3'579'545)) /* verified on pcb */
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, crimfght_state, volume_callback))
diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp
index 63c1dd2ea62..84f4548c729 100644
--- a/src/mame/drivers/darkmist.cpp
+++ b/src/mame/drivers/darkmist.cpp
@@ -266,11 +266,10 @@ MACHINE_CONFIG_START(darkmist_state::darkmist)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 14318180/4) /* 3.579545 MHz */
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("t5182", t5182_device, ym2151_irq_handler))
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
-
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 14318180/4)); /* 3.579545 MHz */
+ ymsnd.irq_handler().set(m_t5182, FUNC(t5182_device::ym2151_irq_handler));
+ ymsnd.add_route(0, "mono", 1.0);
+ ymsnd.add_route(1, "mono", 1.0);
MACHINE_CONFIG_END
ROM_START( darkmist )
diff --git a/src/mame/drivers/darkseal.cpp b/src/mame/drivers/darkseal.cpp
index 6eac007f008..3a2452cd9b0 100644
--- a/src/mame/drivers/darkseal.cpp
+++ b/src/mame/drivers/darkseal.cpp
@@ -267,10 +267,10 @@ MACHINE_CONFIG_START(darkseal_state::darkseal)
MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000)/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
- MCFG_DEVICE_ADD("ym2", YM2151, XTAL(32'220'000)/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
- MCFG_SOUND_ROUTE(0, "mono", 0.55)
- MCFG_SOUND_ROUTE(1, "mono", 0.55)
+ ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9));
+ ym2.irq_handler().set_inputline(m_audiocpu, 1); // IRQ2
+ ym2.add_route(0, "mono", 0.55);
+ ym2.add_route(1, "mono", 0.55);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
diff --git a/src/mame/drivers/dassault.cpp b/src/mame/drivers/dassault.cpp
index 189b3999d3e..84e418e4425 100644
--- a/src/mame/drivers/dassault.cpp
+++ b/src/mame/drivers/dassault.cpp
@@ -611,11 +611,11 @@ MACHINE_CONFIG_START(dassault_state::dassault)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
- MCFG_DEVICE_ADD("ym2", YM2151, XTAL(32'220'000)/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, dassault_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9));
+ ym2.irq_handler().set_inputline(m_audiocpu, 1);
+ ym2.port_write_handler().set(FUNC(dassault_state::sound_bankswitch_w));
+ ym2.add_route(0, "lspeaker", 0.45);
+ ym2.add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH) // verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
diff --git a/src/mame/drivers/dblewing.cpp b/src/mame/drivers/dblewing.cpp
index bf81eb8dc90..3d38bf262a2 100644
--- a/src/mame/drivers/dblewing.cpp
+++ b/src/mame/drivers/dblewing.cpp
@@ -416,9 +416,9 @@ MACHINE_CONFIG_START(dblewing_state::dblewing)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'220'000)/9)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundirq", input_merger_device, in_w<1>))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'220'000)/9));
+ ymsnd.irq_handler().set("soundirq", FUNC(input_merger_device::in_w<1>));
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(28'000'000)/28, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp
index 2c5c52a7c7b..6b9a4a4aee8 100644
--- a/src/mame/drivers/dbz.cpp
+++ b/src/mame/drivers/dbz.cpp
@@ -383,10 +383,10 @@ MACHINE_CONFIG_START(dbz_state::dbz)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 4000000));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 1.0);
+ ymsnd.add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
diff --git a/src/mame/drivers/dcon.cpp b/src/mame/drivers/dcon.cpp
index 27e1d561ff3..9aecbdfd336 100644
--- a/src/mame/drivers/dcon.cpp
+++ b/src/mame/drivers/dcon.cpp
@@ -351,10 +351,10 @@ MACHINE_CONFIG_START(dcon_state::sdgndmps) /* PCB number is PB91008 */
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181)/4));
+ ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(20'000'000)/16, okim6295_device::PIN7_LOW) /* 1.25Mhz? unverified clock & divisor (was 1320000) */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
diff --git a/src/mame/drivers/ddragon.cpp b/src/mame/drivers/ddragon.cpp
index e921a615c97..9d839d1c625 100644
--- a/src/mame/drivers/ddragon.cpp
+++ b/src/mame/drivers/ddragon.cpp
@@ -977,10 +977,10 @@ MACHINE_CONFIG_START(ddragon_state::ddragon)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, M6809_IRQ_LINE);
- MCFG_DEVICE_ADD("fmsnd", YM2151, SOUND_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE))
- MCFG_SOUND_ROUTE(0, "mono", 0.60)
- MCFG_SOUND_ROUTE(1, "mono", 0.60)
+ ym2151_device &fmsnd(YM2151(config, "fmsnd", SOUND_CLOCK));
+ fmsnd.irq_handler().set_inputline(m_soundcpu, M6809_FIRQ_LINE);
+ fmsnd.add_route(0, "mono", 0.60);
+ fmsnd.add_route(1, "mono", 0.60);
MCFG_DEVICE_ADD("adpcm1", MSM5205, MAIN_CLOCK / 32)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ddragon_state, dd_adpcm_int_1)) /* interrupt function */
@@ -1050,10 +1050,10 @@ MACHINE_CONFIG_START(ddragon_state::ddragon6809)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, M6809_IRQ_LINE);
- MCFG_DEVICE_ADD("fmsnd", YM2151, SOUND_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE))
- MCFG_SOUND_ROUTE(0, "mono", 0.60)
- MCFG_SOUND_ROUTE(1, "mono", 0.60)
+ ym2151_device &fmsnd(YM2151(config, "fmsnd", SOUND_CLOCK));
+ fmsnd.irq_handler().set_inputline(m_soundcpu, M6809_FIRQ_LINE);
+ fmsnd.add_route(0, "mono", 0.60);
+ fmsnd.add_route(1, "mono", 0.60);
MCFG_DEVICE_ADD("adpcm1", MSM5205, MAIN_CLOCK/32)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ddragon_state, dd_adpcm_int_1)) /* interrupt function */
@@ -1103,10 +1103,10 @@ MACHINE_CONFIG_START(ddragon_state::ddragon2)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("fmsnd", YM2151, SOUND_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.60)
- MCFG_SOUND_ROUTE(1, "mono", 0.60)
+ ym2151_device &fmsnd(YM2151(config, "fmsnd", SOUND_CLOCK));
+ fmsnd.irq_handler().set_inputline(m_soundcpu, 0);
+ fmsnd.add_route(0, "mono", 0.60);
+ fmsnd.add_route(1, "mono", 0.60);
MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
diff --git a/src/mame/drivers/ddragon3.cpp b/src/mame/drivers/ddragon3.cpp
index 50839b0a88c..c54d94c3d6b 100644
--- a/src/mame/drivers/ddragon3.cpp
+++ b/src/mame/drivers/ddragon3.cpp
@@ -850,10 +850,10 @@ MACHINE_CONFIG_START(ddragon3_state::ddragon3)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ym2151", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+ ym2151_device &ym2151(YM2151(config, "ym2151", XTAL(3'579'545)));
+ ym2151.irq_handler().set_inputline(m_audiocpu, 0);
+ ym2151.add_route(0, "lspeaker", 0.50);
+ ym2151.add_route(1, "rspeaker", 0.50);
MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.50)
@@ -927,10 +927,10 @@ MACHINE_CONFIG_START(wwfwfest_state::wwfwfest)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ym2151", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.45)
- MCFG_SOUND_ROUTE(1, "mono", 0.45)
+ ym2151_device &ym2151(YM2151(config, "ym2151", XTAL(3'579'545)));
+ ym2151.irq_handler().set_inputline(m_audiocpu, 0);
+ ym2151.add_route(0, "mono", 0.45);
+ ym2151.add_route(1, "mono", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH) /* Verified - Pin 7 tied to +5VDC */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
diff --git a/src/mame/drivers/de_2.cpp b/src/mame/drivers/de_2.cpp
index db52cf82502..845856a9a2e 100644
--- a/src/mame/drivers/de_2.cpp
+++ b/src/mame/drivers/de_2.cpp
@@ -535,9 +535,9 @@ MACHINE_CONFIG_START(de_2_state::de_bg_audio)
SPEAKER(config, "bg").front_center();
- MCFG_DEVICE_ADD("ym2151", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, de_2_state, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
+ YM2151(config, m_ym2151, XTAL(3'579'545));
+ m_ym2151->irq_handler().set(FUNC(de_2_state::ym2151_irq_w));
+ m_ym2151->add_route(ALL_OUTPUTS, "bg", 0.50);
MCFG_DEVICE_ADD("msm5205", MSM5205, XTAL(384'000))
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, de_2_state, msm5205_irq_w))
diff --git a/src/mame/drivers/deadang.cpp b/src/mame/drivers/deadang.cpp
index 8c3b1905332..80bbcfbb439 100644
--- a/src/mame/drivers/deadang.cpp
+++ b/src/mame/drivers/deadang.cpp
@@ -434,10 +434,10 @@ MACHINE_CONFIG_START(popnrun_state::popnrun)
MCFG_SEIBU_SOUND_YM_READ_CB(READ8("ymsnd", ym2151_device, read))
MCFG_SEIBU_SOUND_YM_WRITE_CB(WRITE8("ymsnd", ym2151_device, write))
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181)/4));
+ ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp
index cb03131bbfa..6f3e0141ad2 100644
--- a/src/mame/drivers/deco32.cpp
+++ b/src/mame/drivers/deco32.cpp
@@ -1926,11 +1926,11 @@ MACHINE_CONFIG_START(captaven_state::captaven)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'220'000)/9) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, deco32_state, sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
+ YM2151(config, m_ym2151, XTAL(32'220'000)/9); /* verified on pcb */
+ m_ym2151->irq_handler().set_inputline(m_audiocpu, 1);
+ m_ym2151->port_write_handler().set(FUNC(deco32_state::sound_bankswitch_w));
+ m_ym2151->add_route(0, "lspeaker", 0.42);
+ m_ym2151->add_route(1, "rspeaker", 0.42);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH) /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -2011,11 +2011,11 @@ MACHINE_CONFIG_START(fghthist_state::fghthist)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, deco32_state, sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
+ YM2151(config, m_ym2151, 32220000/9);
+ m_ym2151->irq_handler().set_inputline(m_audiocpu, 1);
+ m_ym2151->port_write_handler().set(FUNC(deco32_state::sound_bankswitch_w));
+ m_ym2151->add_route(0, "lspeaker", 0.42);
+ m_ym2151->add_route(1, "rspeaker", 0.42);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -2042,26 +2042,23 @@ MACHINE_CONFIG_START(fghthist_state::fghthsta)
MACHINE_CONFIG_END
// DE-0396-0
-MACHINE_CONFIG_START(fghthist_state::fghthistu)
+void fghthist_state::fghthistu(machine_config &config)
+{
fghthsta(config);
- MCFG_DEVICE_REMOVE("audiocpu")
-
- MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(32'220'000) / 9)
- MCFG_DEVICE_PROGRAM_MAP(z80_sound_map)
- MCFG_DEVICE_IO_MAP(z80_sound_io)
- MCFG_INPUT_MERGER_ANY_HIGH("sound_irq_merger")
- MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
+ Z80(config.replace(), m_audiocpu, XTAL(32'220'000) / 9);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &fghthist_state::z80_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &fghthist_state::z80_sound_io);
- MCFG_DEVICE_MODIFY("ioprot")
- MCFG_DECO146_SOUNDLATCH_IRQ_CB(WRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<0>))
+ INPUT_MERGER_ANY_HIGH(config, "sound_irq_merger").output_handler().set_inputline(m_audiocpu, INPUT_LINE_IRQ0);
- MCFG_DEVICE_MODIFY("ymsnd")
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<1>))
+ m_ioprot->soundlatch_irq_cb().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<0>));
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
-MACHINE_CONFIG_END
+ m_ym2151->irq_handler().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
+ m_ym2151->reset_routes();
+ m_ym2151->add_route(0, "lspeaker", 0.40);
+ m_ym2151->add_route(1, "rspeaker", 0.40);
+}
// DE-0359-2 + Bottom board DE-0360-4
MACHINE_CONFIG_START(dragngun_state::dragngun)
@@ -2141,11 +2138,11 @@ MACHINE_CONFIG_START(dragngun_state::dragngun)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, deco32_state, sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
+ YM2151(config, m_ym2151, 32220000/9);
+ m_ym2151->irq_handler().set_inputline(m_audiocpu, 1);
+ m_ym2151->port_write_handler().set(FUNC(deco32_state::sound_bankswitch_w));
+ m_ym2151->add_route(0, "lspeaker", 0.42);
+ m_ym2151->add_route(1, "rspeaker", 0.42);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -2184,8 +2181,7 @@ MACHINE_CONFIG_START(dragngun_state::lockloadu)
MCFG_DECO16IC_PF1_SIZE(DECO_32x32)
MCFG_DECO16IC_PF2_SIZE(DECO_32x32) // lockload definitely wants pf34 half width..
- MCFG_DEVICE_MODIFY("ymsnd")
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, dragngun_state, lockload_okibank_lo_w))
+ m_ym2151->port_write_handler().set(FUNC(dragngun_state::lockload_okibank_lo_w));
MACHINE_CONFIG_END
// DE-0420-1 + Bottom board DE-0421-0
@@ -2272,11 +2268,11 @@ MACHINE_CONFIG_START(dragngun_state::lockload)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<1>))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, dragngun_state, lockload_okibank_lo_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
+ YM2151(config, m_ym2151, 32220000/9);
+ m_ym2151->irq_handler().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
+ m_ym2151->port_write_handler().set(FUNC(dragngun_state::lockload_okibank_lo_w));
+ m_ym2151->add_route(0, "lspeaker", 0.42);
+ m_ym2151->add_route(1, "rspeaker", 0.42);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -2436,11 +2432,11 @@ MACHINE_CONFIG_START(nslasher_state::nslasher)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<1>))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, deco32_state, sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
+ YM2151(config, m_ym2151, 32220000/9);
+ m_ym2151->irq_handler().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
+ m_ym2151->port_write_handler().set(FUNC(deco32_state::sound_bankswitch_w));
+ m_ym2151->add_route(0, "lspeaker", 0.40);
+ m_ym2151->add_route(1, "rspeaker", 0.40);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
@@ -2463,8 +2459,7 @@ MACHINE_CONFIG_START(nslasher_state::nslasheru)
MCFG_DEVICE_REMOVE("sound_irq_merger")
- MCFG_DEVICE_MODIFY("ymsnd")
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
+ m_ym2151->irq_handler().set_inputline(m_audiocpu, 1);
m_ioprot->soundlatch_irq_cb().set_inputline("audiocpu", 0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dietgo.cpp b/src/mame/drivers/dietgo.cpp
index 9e8a9702740..a044626a30e 100644
--- a/src/mame/drivers/dietgo.cpp
+++ b/src/mame/drivers/dietgo.cpp
@@ -262,9 +262,9 @@ MACHINE_CONFIG_START(dietgo_state::dietgo)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'220'000)/9) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'220'000)/9)); /* verified on pcb */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp
index a8e5524cdaf..9bf0e84049c 100644
--- a/src/mame/drivers/dooyong.cpp
+++ b/src/mame/drivers/dooyong.cpp
@@ -1452,10 +1452,10 @@ MACHINE_CONFIG_START(dooyong_z80_state::sound_2151)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3.579'545_MHz_XTAL)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3.579'545_MHz_XTAL));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("oki", OKIM6295, 1_MHz_XTAL, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
@@ -1466,10 +1466,10 @@ MACHINE_CONFIG_START(dooyong_state::sound_2151_4mhz)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, 16_MHz_XTAL/4) /* 4MHz (16MHz/4 for most, 8Mhz/2 for Super-X) */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 16_MHz_XTAL/4)); /* 4MHz (16MHz/4 for most, 8Mhz/2 for Super-X) */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("oki", OKIM6295, 16_MHz_XTAL/16, okim6295_device::PIN7_HIGH) /* 1MHz (16MHz/16 for most, 8Mhz/8 for Super-X) */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
diff --git a/src/mame/drivers/exterm.cpp b/src/mame/drivers/exterm.cpp
index 68e16e60229..cf84ea42a9a 100644
--- a/src/mame/drivers/exterm.cpp
+++ b/src/mame/drivers/exterm.cpp
@@ -425,8 +425,7 @@ MACHINE_CONFIG_START(exterm_state::exterm)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dacvol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_DEVICE_ADD(m_ym2151, YM2151, 4000000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ YM2151(config, m_ym2151, 4000000).add_route(ALL_OUTPUTS, "speaker", 1.0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/exzisus.cpp b/src/mame/drivers/exzisus.cpp
index 053ac12b093..236b4e258bb 100644
--- a/src/mame/drivers/exzisus.cpp
+++ b/src/mame/drivers/exzisus.cpp
@@ -264,10 +264,10 @@ MACHINE_CONFIG_START(exzisus_state::exzisus)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 4000000));
+ ymsnd.irq_handler().set_inputline("audiocpu", 0);
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("ciu", PC060HA, 0)
MCFG_PC060HA_MASTER_CPU("cpub")
diff --git a/src/mame/drivers/f-32.cpp b/src/mame/drivers/f-32.cpp
index 979a48f7b19..df80fe1292a 100644
--- a/src/mame/drivers/f-32.cpp
+++ b/src/mame/drivers/f-32.cpp
@@ -194,9 +194,9 @@ MACHINE_CONFIG_START(mosaicf2_state::mosaicf2)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4) /* 3.579545 MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181)/4)); /* 3.579545 MHz */
+ ymsnd.add_route(0, "lspeaker", 1.0);
+ ymsnd.add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(14'318'181)/8, okim6295_device::PIN7_HIGH) /* 1.7897725 MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -273,9 +273,9 @@ MACHINE_CONFIG_START(mosaicf2_state::royalpk2)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-// MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4) /* 3.579545 MHz */
-// MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
-// MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+// ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181)/4)); /* 3.579545 MHz */
+// ymsnd.add_route(0, "lspeaker", 1.0);
+// ymsnd.add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(14'318'181)/8, okim6295_device::PIN7_HIGH) /* 1.7897725 MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
diff --git a/src/mame/drivers/fantland.cpp b/src/mame/drivers/fantland.cpp
index 67ae47255b7..39b3d2e8dde 100644
--- a/src/mame/drivers/fantland.cpp
+++ b/src/mame/drivers/fantland.cpp
@@ -841,9 +841,7 @@ MACHINE_CONFIG_START(fantland_state::fantland)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3000000)
- MCFG_SOUND_ROUTE(0, "speaker", 0.35)
- MCFG_SOUND_ROUTE(1, "speaker", 0.35)
+ YM2151(config, "ymsnd", 3000000).add_route(0, "speaker", 0.35).add_route(1, "speaker", 0.35);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
@@ -886,10 +884,10 @@ MACHINE_CONFIG_START(fantland_state::galaxygn)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3000000)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, fantland_state, galaxygn_sound_irq))
- MCFG_SOUND_ROUTE(0, "speaker", 1.0)
- MCFG_SOUND_ROUTE(1, "speaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3000000));
+ ymsnd.irq_handler().set(FUNC(fantland_state::galaxygn_sound_irq));
+ ymsnd.add_route(0, "speaker", 1.0);
+ ymsnd.add_route(1, "speaker", 1.0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/fb01.cpp b/src/mame/drivers/fb01.cpp
index 018714dbb66..304e680085d 100644
--- a/src/mame/drivers/fb01.cpp
+++ b/src/mame/drivers/fb01.cpp
@@ -219,10 +219,10 @@ MACHINE_CONFIG_START(fb01_state::fb01)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ym2164", YM2151, XTAL(4'000'000))
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, fb01_state, ym2164_irq_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
+ ym2151_device &ym2164(YM2151(config, "ym2164", XTAL(4'000'000)));
+ ym2164.irq_handler().set(FUNC(fb01_state::ym2164_irq_w));
+ ym2164.add_route(0, "lspeaker", 1.00);
+ ym2164.add_route(1, "rspeaker", 1.00);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/fcrash.cpp b/src/mame/drivers/fcrash.cpp
index 478c3121893..ea196c71bf7 100644
--- a/src/mame/drivers/fcrash.cpp
+++ b/src/mame/drivers/fcrash.cpp
@@ -1770,10 +1770,10 @@ MACHINE_CONFIG_START(cps_state::kodb)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("2151", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545))); /* verified on pcb */
+ ym2151.irq_handler().set_inputline(m_audiocpu, 0);
+ ym2151.add_route(0, "mono", 0.35);
+ ym2151.add_route(1, "mono", 0.35);
/* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
@@ -1812,10 +1812,10 @@ MACHINE_CONFIG_START(cps_state::mtwinsb)
GENERIC_LATCH_8(config, m_soundlatch);
GENERIC_LATCH_8(config, m_soundlatch2);
- MCFG_DEVICE_ADD("2151", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545)));
+ ym2151.irq_handler().set_inputline(m_audiocpu, 0);
+ ym2151.add_route(0, "mono", 0.35);
+ ym2151.add_route(1, "mono", 0.35);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@@ -1852,9 +1852,7 @@ MACHINE_CONFIG_START(cps_state::sf2mdt)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("2151", YM2151, 3579545)
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ YM2151(config, "2151", XTAL(3'579'545)).add_route(0, "mono", 0.35).add_route(1, "mono", 0.35);
/* has 2x MSM5205 instead of OKI6295 */
MCFG_DEVICE_ADD("msm1", MSM5205, 24000000/64) /* ? */
@@ -1905,10 +1903,10 @@ MACHINE_CONFIG_START(cps_state::knightsb)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("2151", YM2151, 29821000 / 8)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ ym2151_device &ym2151(YM2151(config, "2151", 29821000 / 8));
+ ym2151.irq_handler().set_inputline(m_audiocpu, 0);
+ ym2151.add_route(0, "mono", 0.35);
+ ym2151.add_route(1, "mono", 0.35);
/* has 2x MSM5205 instead of OKI6295 */
MCFG_DEVICE_ADD("msm1", MSM5205, 24000000/64) /* ? */
@@ -2478,10 +2476,10 @@ MACHINE_CONFIG_START(cps_state::sgyxz)
GENERIC_LATCH_8(config, m_soundlatch);
GENERIC_LATCH_8(config, m_soundlatch2);
- MCFG_DEVICE_ADD("2151", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545))); /* verified on pcb */
+ ym2151.irq_handler().set_inputline(m_audiocpu, 0);
+ ym2151.add_route(0, "mono", 0.35);
+ ym2151.add_route(1, "mono", 0.35);
/* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
@@ -2790,10 +2788,10 @@ MACHINE_CONFIG_START(cps_state::sf2m1)
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
GENERIC_LATCH_8(config, m_soundlatch2);
- MCFG_DEVICE_ADD("2151", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545)));
+ ym2151.irq_handler().set_inputline(m_audiocpu, 0);
+ ym2151.add_route(0, "mono", 0.35);
+ ym2151.add_route(1, "mono", 0.35);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
@@ -3272,10 +3270,10 @@ MACHINE_CONFIG_START(cps_state::varthb)
GENERIC_LATCH_8(config, m_soundlatch);
GENERIC_LATCH_8(config, m_soundlatch2);
- MCFG_DEVICE_ADD("2151", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545)));
+ ym2151.irq_handler().set_inputline(m_audiocpu, 0);
+ ym2151.add_route(0, "mono", 0.35);
+ ym2151.add_route(1, "mono", 0.35);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
diff --git a/src/mame/drivers/flkatck.cpp b/src/mame/drivers/flkatck.cpp
index 1728c860d22..fcfd7286c6d 100644
--- a/src/mame/drivers/flkatck.cpp
+++ b/src/mame/drivers/flkatck.cpp
@@ -248,9 +248,7 @@ MACHINE_CONFIG_START(flkatck_state::flkatck)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", 3579545).add_route(0, "lspeaker", 1.0).add_route(0, "rspeaker", 1.0);
MCFG_DEVICE_ADD("k007232", K007232, 3579545)
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, flkatck_state, volume_callback))
diff --git a/src/mame/drivers/funkyjet.cpp b/src/mame/drivers/funkyjet.cpp
index ae529c63665..161c288c82d 100644
--- a/src/mame/drivers/funkyjet.cpp
+++ b/src/mame/drivers/funkyjet.cpp
@@ -356,10 +356,10 @@ MACHINE_CONFIG_START(funkyjet_state::funkyjet)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'220'000)/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'220'000)/9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1); // IRQ2
+ ymsnd.add_route(0, "lspeaker", 0.45);
+ ymsnd.add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(28'000'000)/28, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
diff --git a/src/mame/drivers/gaiden.cpp b/src/mame/drivers/gaiden.cpp
index 129a1bc0ca1..276e10b4d5d 100644
--- a/src/mame/drivers/gaiden.cpp
+++ b/src/mame/drivers/gaiden.cpp
@@ -874,8 +874,7 @@ MACHINE_CONFIG_START(gaiden_state::drgnbowl)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
+ YM2151(config, "ymsnd", 4000000).add_route(ALL_OUTPUTS, "mono", 0.40);
MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
diff --git a/src/mame/drivers/gauntlet.cpp b/src/mame/drivers/gauntlet.cpp
index 70b6e528c96..76c70197809 100644
--- a/src/mame/drivers/gauntlet.cpp
+++ b/src/mame/drivers/gauntlet.cpp
@@ -526,9 +526,9 @@ MACHINE_CONFIG_START(gauntlet_state::gauntlet_base)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
- MCFG_SOUND_ROUTE(1, "lspeaker", 0.48)
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.48)
+ YM2151(config, m_ym2151, ATARI_CLOCK_14MHz/4);
+ m_ym2151->add_route(1, "lspeaker", 0.48);
+ m_ym2151->add_route(0, "rspeaker", 0.48);
MCFG_DEVICE_ADD("pokey", POKEY, ATARI_CLOCK_14MHz/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.32)
diff --git a/src/mame/drivers/gotcha.cpp b/src/mame/drivers/gotcha.cpp
index 099fa5815dd..4476ec6faa4 100644
--- a/src/mame/drivers/gotcha.cpp
+++ b/src/mame/drivers/gotcha.cpp
@@ -295,10 +295,10 @@ MACHINE_CONFIG_START(gotcha_state::gotcha)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, 14318180/4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.80)
- MCFG_SOUND_ROUTE(1, "mono", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 14318180/4));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "mono", 0.80);
+ ymsnd.add_route(1, "mono", 0.80);
MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
diff --git a/src/mame/drivers/gradius3.cpp b/src/mame/drivers/gradius3.cpp
index eadbc2855f9..93a648accef 100644
--- a/src/mame/drivers/gradius3.cpp
+++ b/src/mame/drivers/gradius3.cpp
@@ -328,9 +328,7 @@ MACHINE_CONFIG_START(gradius3_state::gradius3)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", 3579545).add_route(0, "lspeaker", 1.0).add_route(0, "rspeaker", 1.0);
MCFG_DEVICE_ADD("k007232", K007232, 3579545)
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, gradius3_state, volume_callback))
diff --git a/src/mame/drivers/hyprduel.cpp b/src/mame/drivers/hyprduel.cpp
index d1eedd0255f..c956983534a 100644
--- a/src/mame/drivers/hyprduel.cpp
+++ b/src/mame/drivers/hyprduel.cpp
@@ -465,9 +465,9 @@ MACHINE_CONFIG_START(hyprduel_state::hyprduel)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("sub", 1))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 4000000));
+ ymsnd.irq_handler().set_inputline(m_subcpu, 1);
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
MCFG_DEVICE_ADD("oki", OKIM6295, 4000000/16/16*132, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.57)
diff --git a/src/mame/drivers/jackal.cpp b/src/mame/drivers/jackal.cpp
index f1d37d55095..4debcc73ef4 100644
--- a/src/mame/drivers/jackal.cpp
+++ b/src/mame/drivers/jackal.cpp
@@ -391,9 +391,7 @@ MACHINE_CONFIG_START(jackal_state::jackal)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CLOCK) // verified on pcb
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+ YM2151(config, "ymsnd", SOUND_CLOCK).add_route(0, "lspeaker", 0.50).add_route(1, "rspeaker", 0.50); // verified on pcb
MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp
index f7ae7585f58..d1971bee264 100644
--- a/src/mame/drivers/kaneko16.cpp
+++ b/src/mame/drivers/kaneko16.cpp
@@ -1952,9 +1952,9 @@ MACHINE_CONFIG_START(kaneko16_state::blazeon)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD(m_ymsnd, YM2151, 4000000)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, m_ymsnd, 4000000);
+ m_ymsnd->add_route(0, "lspeaker", 1.0);
+ m_ymsnd->add_route(1, "rspeaker", 1.0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/legionna.cpp b/src/mame/drivers/legionna.cpp
index 34d45eb65ed..2a715ccb9d8 100644
--- a/src/mame/drivers/legionna.cpp
+++ b/src/mame/drivers/legionna.cpp
@@ -1349,10 +1349,10 @@ MACHINE_CONFIG_START(legionna_state::godzilla)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 14318180/4)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 14318180/4));
+ ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("oki", OKIM6295, 1320000, okim6295_device::PIN7_LOW)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
@@ -1405,10 +1405,10 @@ MACHINE_CONFIG_START(legionna_state::denjinmk)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 14318180/4)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 14318180/4));
+ ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("oki", OKIM6295, 1320000, okim6295_device::PIN7_LOW)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
@@ -1461,10 +1461,10 @@ MACHINE_CONFIG_START(legionna_state::grainbow)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 14318180/4)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 14318180/4));
+ ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("oki", OKIM6295, 1320000, okim6295_device::PIN7_LOW)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
diff --git a/src/mame/drivers/lemmings.cpp b/src/mame/drivers/lemmings.cpp
index d5fa8836049..d56cfa5728e 100644
--- a/src/mame/drivers/lemmings.cpp
+++ b/src/mame/drivers/lemmings.cpp
@@ -260,10 +260,10 @@ MACHINE_CONFIG_START(lemmings_state::lemmings)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 32220000/9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1);
+ ymsnd.add_route(0, "lspeaker", 0.45);
+ ymsnd.add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, 1023924, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
diff --git a/src/mame/drivers/m107.cpp b/src/mame/drivers/m107.cpp
index 7abdc485c7a..6d149ea11c2 100644
--- a/src/mame/drivers/m107.cpp
+++ b/src/mame/drivers/m107.cpp
@@ -773,10 +773,10 @@ MACHINE_CONFIG_START(m107_state::firebarr)
GENERIC_LATCH_8(config, "soundlatch2").data_pending_callback().set(m_upd71059c, FUNC(pic8259_device::ir3_w));
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181)/4));
+ ymsnd.irq_handler().set_inputline(m_soundcpu, NEC_INPUT_LINE_INTP0);
+ ymsnd.add_route(0, "lspeaker", 0.40);
+ ymsnd.add_route(1, "rspeaker", 0.40);
iremga20_device &ga20(IREMGA20(config, "irem", XTAL(14'318'181)/4));
ga20.add_route(0, "lspeaker", 1.0);
diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp
index 60e6c98ccad..b95dffc2804 100644
--- a/src/mame/drivers/m72.cpp
+++ b/src/mame/drivers/m72.cpp
@@ -1817,9 +1817,9 @@ MACHINE_CONFIG_START(m72_state::m72_audio_chips)
MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO)
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundirq", rst_neg_buffer_device, rst28_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CLOCK));
+ ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w));
+ ymsnd.add_route(ALL_OUTPUTS, "speaker", 1.0);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp
index 8e41e64b154..fe63826ffa9 100644
--- a/src/mame/drivers/m90.cpp
+++ b/src/mame/drivers/m90.cpp
@@ -768,10 +768,10 @@ MACHINE_CONFIG_START(m90_state::m90)
MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO)
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundirq", rst_neg_buffer_device, rst28_w))
- MCFG_SOUND_ROUTE(0, "speaker", 0.15)
- MCFG_SOUND_ROUTE(1, "speaker", 0.15)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w));
+ ymsnd.add_route(0, "speaker", 0.15);
+ ymsnd.add_route(1, "speaker", 0.15);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
@@ -880,8 +880,7 @@ MACHINE_CONFIG_START(m90_state::dynablsb)
soundlatch.data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
soundlatch.set_separate_acknowledge(false);
- MCFG_DEVICE_MODIFY("ymsnd")
- MCFG_YM2151_IRQ_HANDLER(NOOP) /* this bootleg polls the YM2151 instead of taking interrupts from it */
+ subdevice<ym2151_device>("ymsnd")->irq_handler().set_nop(); /* this bootleg polls the YM2151 instead of taking interrupts from it */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/m92.cpp b/src/mame/drivers/m92.cpp
index d5764aa32d3..3153a00b69f 100644
--- a/src/mame/drivers/m92.cpp
+++ b/src/mame/drivers/m92.cpp
@@ -958,10 +958,10 @@ MACHINE_CONFIG_START(m92_state::m92)
GENERIC_LATCH_8(config, "soundlatch2").data_pending_callback().set(m_upd71059c, FUNC(pic8259_device::ir3_w));
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP0))
- MCFG_SOUND_ROUTE(0, "mono", 0.40)
- MCFG_SOUND_ROUTE(1, "mono", 0.40)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181)/4));
+ ymsnd.irq_handler().set_inputline(m_soundcpu, NEC_INPUT_LINE_INTP0);
+ ymsnd.add_route(0, "mono", 0.40);
+ ymsnd.add_route(1, "mono", 0.40);
iremga20_device &ga20(IREMGA20(config, "irem", XTAL(14'318'181)/4));
ga20.add_route(ALL_OUTPUTS, "mono", 1.0);
diff --git a/src/mame/drivers/madmotor.cpp b/src/mame/drivers/madmotor.cpp
index a04bb19a0cc..b0b7b73df8e 100644
--- a/src/mame/drivers/madmotor.cpp
+++ b/src/mame/drivers/madmotor.cpp
@@ -305,10 +305,10 @@ MACHINE_CONFIG_START(madmotor_state::madmotor)
MCFG_DEVICE_ADD("ym1", YM2203, 21470000/6)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
- MCFG_DEVICE_ADD("ym2", YM2151, 21470000/6)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
- MCFG_SOUND_ROUTE(0, "mono", 0.45)
- MCFG_SOUND_ROUTE(1, "mono", 0.45)
+ ym2151_device &ym2(YM2151(config, "ym2", 21470000/6));
+ ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ym2.add_route(0, "mono", 0.45);
+ ym2.add_route(1, "mono", 0.45);
MCFG_DEVICE_ADD("oki1", OKIM6295, 1023924, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
diff --git a/src/mame/drivers/mainevt.cpp b/src/mame/drivers/mainevt.cpp
index 97312ca768c..f0827cb1d4d 100644
--- a/src/mame/drivers/mainevt.cpp
+++ b/src/mame/drivers/mainevt.cpp
@@ -513,9 +513,7 @@ MACHINE_CONFIG_START(mainevt_state::devstors)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3.579545_MHz_XTAL)
- MCFG_SOUND_ROUTE(0, "mono", 0.30)
- MCFG_SOUND_ROUTE(1, "mono", 0.30)
+ YM2151(config, "ymsnd", 3.579545_MHz_XTAL).add_route(0, "mono", 0.30).add_route(1, "mono", 0.30);
MCFG_DEVICE_ADD("k007232", K007232, 3.579545_MHz_XTAL)
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, mainevt_state, volume_callback))
diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp
index 48b7efa4904..0cee8cf3126 100644
--- a/src/mame/drivers/megasys1.cpp
+++ b/src/mame/drivers/megasys1.cpp
@@ -1722,10 +1722,10 @@ MACHINE_CONFIG_START(megasys1_state::system_A)
GENERIC_LATCH_16(config, m_soundlatch);
GENERIC_LATCH_16(config, m_soundlatch2);
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK/2) /* 3.5MHz (7MHz / 2) verified */
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, megasys1_state,sound_irq))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CPU_CLOCK/2)); /* 3.5MHz (7MHz / 2) verified */
+ ymsnd.irq_handler().set(FUNC(megasys1_state::sound_irq));
+ ymsnd.add_route(0, "lspeaker", 0.80);
+ ymsnd.add_route(1, "rspeaker", 0.80);
MCFG_DEVICE_ADD("oki1", OKIM6295, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH) /* 4MHz verified */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
diff --git a/src/mame/drivers/metlfrzr.cpp b/src/mame/drivers/metlfrzr.cpp
index 8b6da9c5e78..58888eb8867 100644
--- a/src/mame/drivers/metlfrzr.cpp
+++ b/src/mame/drivers/metlfrzr.cpp
@@ -394,11 +394,10 @@ MACHINE_CONFIG_START(metlfrzr_state::metlfrzr)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181) / 4) /* 3.579545 MHz */
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("t5182", t5182_device, ym2151_irq_handler))
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
-
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181) / 4)); /* 3.579545 MHz */
+ ymsnd.irq_handler().set("t5182", FUNC(t5182_device::ym2151_irq_handler));
+ ymsnd.add_route(0, "mono", 1.0);
+ ymsnd.add_route(1, "mono", 1.0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp
index 6575ac23513..8ac503eecf2 100644
--- a/src/mame/drivers/metro.cpp
+++ b/src/mame/drivers/metro.cpp
@@ -3189,9 +3189,9 @@ MACHINE_CONFIG_START(metro_state::daitorid)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3.579545_MHz_XTAL)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", UPD7810_INTF2))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3.579545_MHz_XTAL));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, UPD7810_INTF2);
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
MCFG_DEVICE_ADD("oki", OKIM6295, 1200000, okim6295_device::PIN7_HIGH) // sample rate = M6295 clock / 132
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
@@ -3529,9 +3529,9 @@ MACHINE_CONFIG_START(metro_state::pururun)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3.579545_MHz_XTAL) /* Confirmed match to reference video */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", UPD7810_INTF2))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3.579545_MHz_XTAL)); /* Confirmed match to reference video */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, UPD7810_INTF2);
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
MCFG_DEVICE_ADD("oki", OKIM6295, 3.579545_MHz_XTAL/3, okim6295_device::PIN7_HIGH) // sample rate = M6295 clock / 132
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
diff --git a/src/mame/drivers/moo.cpp b/src/mame/drivers/moo.cpp
index 1aaf6ccd826..daa24c6120b 100644
--- a/src/mame/drivers/moo.cpp
+++ b/src/mame/drivers/moo.cpp
@@ -548,9 +548,7 @@ MACHINE_CONFIG_START(moo_state::moo)
K054321(config, m_k054321, "lspeaker", "rspeaker");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'000'000)/8) // 4MHz verified
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+ YM2151(config, "ymsnd", XTAL(32'000'000)/8).add_route(0, "lspeaker", 0.50).add_route(1, "rspeaker", 0.50); // 4MHz verified
MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
MCFG_SOUND_ROUTE(0, "rspeaker", 0.75)
diff --git a/src/mame/drivers/mugsmash.cpp b/src/mame/drivers/mugsmash.cpp
index e2871564057..f8a2d19882d 100644
--- a/src/mame/drivers/mugsmash.cpp
+++ b/src/mame/drivers/mugsmash.cpp
@@ -428,10 +428,10 @@ MACHINE_CONFIG_START(mugsmash_state::mugsmash)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) /* music */
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579545));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 1.00); /* music */
+ ymsnd.add_route(1, "rspeaker", 1.00);
MCFG_DEVICE_ADD("oki", OKIM6295, 1122000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) /* sound fx */
diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp
index 8c3bce539b7..92792b6bfa0 100644
--- a/src/mame/drivers/mustache.cpp
+++ b/src/mame/drivers/mustache.cpp
@@ -207,10 +207,10 @@ MACHINE_CONFIG_START(mustache_state::mustache)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, YM_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("t5182", t5182_device, ym2151_irq_handler))
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", YM_CLOCK));
+ ymsnd.irq_handler().set("t5182", FUNC(t5182_device::ym2151_irq_handler));
+ ymsnd.add_route(0, "mono", 1.0);
+ ymsnd.add_route(1, "mono", 1.0);
MACHINE_CONFIG_END
ROM_START( mustache )
diff --git a/src/mame/drivers/namcos2.cpp b/src/mame/drivers/namcos2.cpp
index 3f3b5bc93a7..80279914f30 100644
--- a/src/mame/drivers/namcos2.cpp
+++ b/src/mame/drivers/namcos2.cpp
@@ -1825,9 +1825,7 @@ MACHINE_CONFIG_START(namcos2_state::base_noio)
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
- MCFG_DEVICE_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
MACHINE_CONFIG_END
@@ -1857,17 +1855,16 @@ MACHINE_CONFIG_START(namcos2_state::assaultp)
MCFG_QUANTUM_TIME(attotime::from_hz(12000*8)) /* CPU slices per frame - boosted (along with MCU speed) so that the Mode Select works */
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(namcos2_state::base3)
+void namcos2_state::base3(machine_config &config)
+{
base(config);
m_c140->reset_routes();
m_c140->add_route(0, "lspeaker", 0.45);
m_c140->add_route(1, "rspeaker", 0.45);
- MCFG_DEVICE_REPLACE("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-MACHINE_CONFIG_END
+ YM2151(config.replace(), "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* 3.579545MHz */
+}
MACHINE_CONFIG_START(namcos2_state::gollygho)
MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
@@ -1919,9 +1916,7 @@ MACHINE_CONFIG_START(namcos2_state::gollygho)
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
- MCFG_DEVICE_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
MACHINE_CONFIG_END
@@ -1971,9 +1966,7 @@ MACHINE_CONFIG_START(namcos2_state::finallap_noio)
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
- MCFG_DEVICE_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::finallap)
@@ -2052,9 +2045,7 @@ MACHINE_CONFIG_START(namcos2_state::sgunner)
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
- MCFG_DEVICE_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::sgunner2)
@@ -2108,9 +2099,7 @@ MACHINE_CONFIG_START(namcos2_state::sgunner2)
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
- MCFG_DEVICE_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::suzuka8h)
@@ -2167,9 +2156,7 @@ MACHINE_CONFIG_START(namcos2_state::suzuka8h)
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
- MCFG_DEVICE_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::luckywld)
@@ -2244,10 +2231,8 @@ MACHINE_CONFIG_START(namcos2_state::metlhawk)
m_c140->add_route(0, "lspeaker", 1.0);
m_c140->add_route(1, "rspeaker", 1.0);
- MCFG_DEVICE_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
-// MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
+// ymsnd.irq_handler().set_inputline("audiocpu", 1);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp
index 5b716da7488..f232fd7710d 100644
--- a/src/mame/drivers/namcos21.cpp
+++ b/src/mame/drivers/namcos21.cpp
@@ -910,9 +910,7 @@ MACHINE_CONFIG_START(namcos21_state::winrun)
m_c140->add_route(0, "lspeaker", 0.50);
m_c140->add_route(1, "rspeaker", 0.50);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579580)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
+ YM2151(config, "ymsnd", 3579580).add_route(0, "lspeaker", 0.30).add_route(1, "rspeaker", 0.30);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/namcos21_c67.cpp b/src/mame/drivers/namcos21_c67.cpp
index 0d719353f49..e49b8a49a9c 100644
--- a/src/mame/drivers/namcos21_c67.cpp
+++ b/src/mame/drivers/namcos21_c67.cpp
@@ -865,9 +865,7 @@ MACHINE_CONFIG_START(namcos21_c67_state::namcos21)
m_c140->add_route(0, "lspeaker", 0.50);
m_c140->add_route(1, "rspeaker", 0.50);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579580)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
+ YM2151(config, "ymsnd", 3579580).add_route(0, "lspeaker", 0.30).add_route(1, "rspeaker", 0.30);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos21_c67_state::aircomb)
diff --git a/src/mame/drivers/namcos21_de.cpp b/src/mame/drivers/namcos21_de.cpp
index 10bad673d0a..e85de195659 100644
--- a/src/mame/drivers/namcos21_de.cpp
+++ b/src/mame/drivers/namcos21_de.cpp
@@ -238,9 +238,7 @@ MACHINE_CONFIG_START(namco_de_pcbstack_device::device_add_mconfig)
m_c140->add_route(0, "lspeaker", 0.50);
m_c140->add_route(1, "rspeaker", 0.50);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579580)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
+ YM2151(config, "ymsnd", 3579580).add_route(0, "lspeaker", 0.30).add_route(1, "rspeaker", 0.30);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/namcos86.cpp b/src/mame/drivers/namcos86.cpp
index 838a0e97f60..07866feec04 100644
--- a/src/mame/drivers/namcos86.cpp
+++ b/src/mame/drivers/namcos86.cpp
@@ -1084,9 +1084,7 @@ MACHINE_CONFIG_START(namcos86_state::hopmappy)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579580)
- MCFG_SOUND_ROUTE(0, "mono", 0.0)
- MCFG_SOUND_ROUTE(1, "mono", 0.60) /* only right channel is connected */
+ YM2151(config, "ymsnd", 3579580).add_route(0, "mono", 0.0).add_route(1, "mono", 0.60); /* only right channel is connected */
MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2048)
MCFG_NAMCO_AUDIO_VOICES(8)
diff --git a/src/mame/drivers/nemesis.cpp b/src/mame/drivers/nemesis.cpp
index a271ecd1c70..f8db2b6d1f3 100644
--- a/src/mame/drivers/nemesis.cpp
+++ b/src/mame/drivers/nemesis.cpp
@@ -1783,10 +1783,10 @@ MACHINE_CONFIG_START(nemesis_state::salamand)
MCFG_SOUND_ROUTE(1, "lspeaker", 0.08)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.08)
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
-// MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) ... Interrupts _are_ generated, I wonder where they go
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.2) // reversed according to MT #4565
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.2)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579545));
+// ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ... Interrupts _are_ generated, I wonder where they go
+ ymsnd.add_route(0, "rspeaker", 1.2); // reversed according to MT #4565
+ ymsnd.add_route(1, "lspeaker", 1.2);
MACHINE_CONFIG_END
@@ -1830,10 +1830,10 @@ MACHINE_CONFIG_START(nemesis_state::blkpnthr)
MCFG_SOUND_ROUTE(1, "lspeaker", 0.10)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
-// MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) ... Interrupts _are_ generated, I wonder where they go
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579545));
+// ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ... Interrupts _are_ generated, I wonder where they go
+ ymsnd.add_route(0, "lspeaker", 1.0);
+ ymsnd.add_route(1, "rspeaker", 1.0);
MACHINE_CONFIG_END
@@ -1988,10 +1988,10 @@ MACHINE_CONFIG_START(nemesis_state::hcrash)
MCFG_SOUND_ROUTE(1, "lspeaker", 0.10)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
-// MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) ... Interrupts _are_ generated, I wonder where they go
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579545));
+// ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ... Interrupts _are_ generated, I wonder where they go
+ ymsnd.add_route(0, "lspeaker", 1.0);
+ ymsnd.add_route(1, "rspeaker", 1.0);
MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp
index e58253c17de..7aef282cd48 100644
--- a/src/mame/drivers/nmk16.cpp
+++ b/src/mame/drivers/nmk16.cpp
@@ -5399,10 +5399,10 @@ MACHINE_CONFIG_START(nmk16_state::stagger1)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(4'000'000)) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(4'000'000))); /* verified on pcb */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.30);
+ ymsnd.add_route(1, "rspeaker", 0.30);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(4'000'000)/4, okim6295_device::PIN7_HIGH) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.70)
diff --git a/src/mame/drivers/opwolf.cpp b/src/mame/drivers/opwolf.cpp
index 768c0f015d3..8ac662a86b7 100644
--- a/src/mame/drivers/opwolf.cpp
+++ b/src/mame/drivers/opwolf.cpp
@@ -979,11 +979,11 @@ MACHINE_CONFIG_START(opwolf_state::opwolf)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK) /* 4 MHz */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, opwolf_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CPU_CLOCK)); /* 4 MHz */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.port_write_handler().set(FUNC(opwolf_state::sound_bankswitch_w));
+ ymsnd.add_route(0, "lspeaker", 1.0);
+ ymsnd.add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm0", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>))
@@ -1054,11 +1054,11 @@ MACHINE_CONFIG_START(opwolf_state::opwolfb) /* OSC clocks unknown for the bootle
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, opwolf_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CPU_CLOCK));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.port_write_handler().set(FUNC(opwolf_state::sound_bankswitch_w));
+ ymsnd.add_route(0, "lspeaker", 1.0);
+ ymsnd.add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm0", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>))
diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp
index cff5b92b5c0..3957ead1706 100644
--- a/src/mame/drivers/overdriv.cpp
+++ b/src/mame/drivers/overdriv.cpp
@@ -384,9 +384,7 @@ MACHINE_CONFIG_START(overdriv_state::overdriv)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.5)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.5)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 0.5).add_route(1, "rspeaker", 0.5);
MCFG_K053260_ADD("k053260_1", XTAL(3'579'545))
MCFG_DEVICE_ADDRESS_MAP(0, overdriv_k053260_map)
diff --git a/src/mame/drivers/panicr.cpp b/src/mame/drivers/panicr.cpp
index d3904332a8c..d238882b2e5 100644
--- a/src/mame/drivers/panicr.cpp
+++ b/src/mame/drivers/panicr.cpp
@@ -638,11 +638,10 @@ MACHINE_CONFIG_START(panicr_state::panicr)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CLOCK/4) /* 3.579545 MHz */
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("t5182", t5182_device, ym2151_irq_handler))
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
-
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CLOCK/4)); /* 3.579545 MHz */
+ ymsnd.irq_handler().set(m_t5182, FUNC(t5182_device::ym2151_irq_handler));
+ ymsnd.add_route(0, "mono", 1.0);
+ ymsnd.add_route(1, "mono", 1.0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/parodius.cpp b/src/mame/drivers/parodius.cpp
index 70273a3d104..e23ab184b00 100644
--- a/src/mame/drivers/parodius.cpp
+++ b/src/mame/drivers/parodius.cpp
@@ -273,9 +273,7 @@ MACHINE_CONFIG_START(parodius_state::parodius)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", 3579545).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_K053260_ADD("k053260", 3579545)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
diff --git a/src/mame/drivers/raiden2.cpp b/src/mame/drivers/raiden2.cpp
index 62105e47c63..79b62c9f224 100644
--- a/src/mame/drivers/raiden2.cpp
+++ b/src/mame/drivers/raiden2.cpp
@@ -1458,10 +1458,10 @@ MACHINE_CONFIG_START(raiden2_state::raiden2)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(28'636'363)/8)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(28'636'363)/8));
+ ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(28'636'363)/28, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
diff --git a/src/mame/drivers/rastan.cpp b/src/mame/drivers/rastan.cpp
index 46bb1fc138a..88c0ab849e4 100644
--- a/src/mame/drivers/rastan.cpp
+++ b/src/mame/drivers/rastan.cpp
@@ -403,11 +403,11 @@ MACHINE_CONFIG_START(rastan_state::rastan)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(16'000'000)/4) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, rastan_state,rastan_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.port_write_handler().set(FUNC(rastan_state::rastan_bankswitch_w));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) /* verified on pcb */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, rastan_state, rastan_msm5205_vck)) /* VCK function */
diff --git a/src/mame/drivers/rbisland.cpp b/src/mame/drivers/rbisland.cpp
index 958ced3cea3..39e47760c7b 100644
--- a/src/mame/drivers/rbisland.cpp
+++ b/src/mame/drivers/rbisland.cpp
@@ -698,11 +698,11 @@ MACHINE_CONFIG_START(rbisland_state::rbisland)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(16'000'000)/4) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, rbisland_state,bankswitch_w))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.port_write_handler().set(FUNC(rbisland_state::bankswitch_w));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("ciu", PC060HA, 0)
MCFG_PC060HA_MASTER_CPU("maincpu")
diff --git a/src/mame/drivers/rbmk.cpp b/src/mame/drivers/rbmk.cpp
index 0d803d2c4bc..f971b2bef54 100644
--- a/src/mame/drivers/rbmk.cpp
+++ b/src/mame/drivers/rbmk.cpp
@@ -597,9 +597,9 @@ MACHINE_CONFIG_START(rbmk_state::rbmk)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
- MCFG_DEVICE_ADD("ymsnd", YM2151, 22000000 / 8)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
+ YM2151(config, m_ymsnd, 22000000 / 8);
+ m_ymsnd->add_route(0, "lspeaker", 0.60);
+ m_ymsnd->add_route(1, "rspeaker", 0.60);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(rbmk_state::rbspm)
diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp
index ab33ebb0bc1..4bb347a8a14 100644
--- a/src/mame/drivers/rockrage.cpp
+++ b/src/mame/drivers/rockrage.cpp
@@ -292,9 +292,7 @@ MACHINE_CONFIG_START(rockrage_state::rockrage)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
+ YM2151(config, "ymsnd", 3579545).add_route(0, "lspeaker", 0.60).add_route(1, "rspeaker", 0.60);
MCFG_DEVICE_ADD("vlm", VLM5030, 3579545)
MCFG_DEVICE_ADDRESS_MAP(0, rockrage_vlm_map)
diff --git a/src/mame/drivers/rohga.cpp b/src/mame/drivers/rohga.cpp
index 8005b40fb35..a465c80abe2 100644
--- a/src/mame/drivers/rohga.cpp
+++ b/src/mame/drivers/rohga.cpp
@@ -948,11 +948,11 @@ MACHINE_CONFIG_START(rohga_state::rohga)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, rohga_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.78)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.78)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 32220000/9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ymsnd.port_write_handler().set(FUNC(rohga_state::sound_bankswitch_w));
+ ymsnd.add_route(0, "lspeaker", 0.78);
+ ymsnd.add_route(1, "rspeaker", 0.78);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -1045,11 +1045,11 @@ MACHINE_CONFIG_START(rohga_state::wizdfire)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, rohga_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 32220000/9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ymsnd.port_write_handler().set(FUNC(rohga_state::sound_bankswitch_w));
+ ymsnd.add_route(0, "lspeaker", 0.80);
+ ymsnd.add_route(1, "rspeaker", 0.80);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -1143,11 +1143,11 @@ MACHINE_CONFIG_START(rohga_state::nitrobal)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, rohga_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 32220000/9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ymsnd.port_write_handler().set(FUNC(rohga_state::sound_bankswitch_w));
+ ymsnd.add_route(0, "lspeaker", 0.80);
+ ymsnd.add_route(1, "rspeaker", 0.80);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -1235,11 +1235,11 @@ MACHINE_CONFIG_START(rohga_state::schmeisr)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, rohga_state,sound_bankswitch_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 32220000/9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ymsnd.port_write_handler().set(FUNC(rohga_state::sound_bankswitch_w));
+ ymsnd.add_route(0, "lspeaker", 0.80);
+ ymsnd.add_route(1, "rspeaker", 0.80);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
diff --git a/src/mame/drivers/rpunch.cpp b/src/mame/drivers/rpunch.cpp
index 40a3b33a6d2..2273a1bbd5a 100644
--- a/src/mame/drivers/rpunch.cpp
+++ b/src/mame/drivers/rpunch.cpp
@@ -492,10 +492,10 @@ MACHINE_CONFIG_START(rpunch_state::rpunch)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, MASTER_CLOCK/4)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundirq", input_merger_device, in_w<1>))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", MASTER_CLOCK/4));
+ ymsnd.irq_handler().set("soundirq", FUNC(input_merger_device::in_w<1>));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("upd", UPD7759)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
@@ -544,10 +544,10 @@ MACHINE_CONFIG_START(rpunch_state::svolleybl)
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, MASTER_CLOCK/4)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundirq", input_merger_device, in_w<1>))
- MCFG_SOUND_ROUTE(0, "mono", 0.50)
- MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", MASTER_CLOCK/4));
+ ymsnd.irq_handler().set("soundirq", FUNC(input_merger_device::in_w<1>));
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("upd", UPD7759)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp
index 10917b22ec5..e3e55a08f20 100644
--- a/src/mame/drivers/s11.cpp
+++ b/src/mame/drivers/s11.cpp
@@ -470,9 +470,9 @@ MACHINE_CONFIG_START(s11_state::s11)
MCFG_DEVICE_PROGRAM_MAP(s11_bg_map)
SPEAKER(config, "bg").front_center();
- MCFG_DEVICE_ADD("ym2151", YM2151, 3580000)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, s11_state, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
+ YM2151(config, m_ym, 3580000);
+ m_ym->irq_handler().set(FUNC(s11_state::ym2151_irq_w));
+ m_ym->add_route(ALL_OUTPUTS, "bg", 0.50);
MCFG_DEVICE_ADD("dac1", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.25)
diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp
index d42e9c79466..ddfc4d8fe4f 100644
--- a/src/mame/drivers/s11a.cpp
+++ b/src/mame/drivers/s11a.cpp
@@ -261,9 +261,9 @@ MACHINE_CONFIG_START(s11a_state::s11a)
MCFG_DEVICE_PROGRAM_MAP(s11a_bg_map)
SPEAKER(config, "bg").front_center();
- MCFG_DEVICE_ADD("ym2151", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, s11a_state, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
+ YM2151(config, m_ym, XTAL(3'579'545));
+ m_ym->irq_handler().set(FUNC(s11a_state::ym2151_irq_w));
+ m_ym->add_route(ALL_OUTPUTS, "bg", 0.50);
MCFG_DEVICE_ADD("dac1", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.25)
diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp
index d8ac786e597..cc40eaa7be5 100644
--- a/src/mame/drivers/s11b.cpp
+++ b/src/mame/drivers/s11b.cpp
@@ -339,9 +339,9 @@ MACHINE_CONFIG_START(s11b_state::s11b)
MCFG_QUANTUM_TIME(attotime::from_hz(50))
SPEAKER(config, "bg").front_center();
- MCFG_DEVICE_ADD("ym2151", YM2151, 3580000)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, s11b_state, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.25)
+ YM2151(config, m_ym, 3580000);
+ m_ym->irq_handler().set(FUNC(s11b_state::ym2151_irq_w));
+ m_ym->add_route(ALL_OUTPUTS, "bg", 0.25);
MCFG_DEVICE_ADD("dac1", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.25)
diff --git a/src/mame/drivers/segahang.cpp b/src/mame/drivers/segahang.cpp
index a004ffc2e3c..762820401ef 100644
--- a/src/mame/drivers/segahang.cpp
+++ b/src/mame/drivers/segahang.cpp
@@ -914,10 +914,10 @@ MACHINE_CONFIG_START(segahang_state::sound_board_2151)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, MASTER_CLOCK_8MHz/2)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.43)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", MASTER_CLOCK_8MHz/2));
+ ymsnd.irq_handler().set_inputline(m_soundcpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.43);
+ ymsnd.add_route(1, "rspeaker", 0.43);
MCFG_DEVICE_ADD("pcm", SEGAPCM, MASTER_CLOCK_8MHz/2)
MCFG_SEGAPCM_BANK(BANK_512)
diff --git a/src/mame/drivers/segaorun.cpp b/src/mame/drivers/segaorun.cpp
index 8fc0481435e..0dcb52288e1 100644
--- a/src/mame/drivers/segaorun.cpp
+++ b/src/mame/drivers/segaorun.cpp
@@ -1190,9 +1190,7 @@ MACHINE_CONFIG_START(segaorun_state::outrun_base)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CLOCK/4)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.43)
+ YM2151(config, "ymsnd", SOUND_CLOCK/4).add_route(0, "lspeaker", 0.43).add_route(1, "rspeaker", 0.43);
MCFG_DEVICE_ADD("pcm", SEGAPCM, SOUND_CLOCK/4)
MCFG_SEGAPCM_BANK(BANK_512)
diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp
index 81a3af1935d..448ef191b31 100644
--- a/src/mame/drivers/segas16a.cpp
+++ b/src/mame/drivers/segas16a.cpp
@@ -2016,9 +2016,9 @@ MACHINE_CONFIG_START(segas16a_state::system16a)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(*this, segas16a_state, n7751_control_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.43)
+ YM2151(config, m_ymsnd, 4000000);
+ m_ymsnd->irq_handler().set(FUNC(segas16a_state::n7751_control_w));
+ m_ymsnd->add_route(ALL_OUTPUTS, "speaker", 0.43);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
@@ -2077,8 +2077,8 @@ MACHINE_CONFIG_START(segas16a_state::system16a_no7751)
MCFG_DEVICE_REMOVE("dac")
MCFG_DEVICE_REMOVE("vref")
- MCFG_DEVICE_REPLACE("ymsnd", YM2151, 4000000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ YM2151(config.replace(), m_ymsnd, 4000000);
+ m_ymsnd->add_route(ALL_OUTPUTS, "speaker", 1.0);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(segas16a_state::system16a_no7751p)
@@ -2111,8 +2111,8 @@ MACHINE_CONFIG_START(segas16a_state::system16a_fd1089a_no7751)
MCFG_DEVICE_REMOVE("dac")
MCFG_DEVICE_REMOVE("vref")
- MCFG_DEVICE_REPLACE("ymsnd", YM2151, 4000000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ YM2151(config.replace(), m_ymsnd, 4000000);
+ m_ymsnd->add_route(ALL_OUTPUTS, "speaker", 1.0);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(segas16a_state::system16a_fd1089b_no7751)
@@ -2124,8 +2124,8 @@ MACHINE_CONFIG_START(segas16a_state::system16a_fd1089b_no7751)
MCFG_DEVICE_REMOVE("dac")
MCFG_DEVICE_REMOVE("vref")
- MCFG_DEVICE_REPLACE("ymsnd", YM2151, 4000000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ YM2151(config.replace(), m_ymsnd, 4000000);
+ m_ymsnd->add_route(ALL_OUTPUTS, "speaker", 1.0);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(segas16a_state::system16a_fd1094_no7751)
@@ -2137,8 +2137,8 @@ MACHINE_CONFIG_START(segas16a_state::system16a_fd1094_no7751)
MCFG_DEVICE_REMOVE("dac")
MCFG_DEVICE_REMOVE("vref")
- MCFG_DEVICE_REPLACE("ymsnd", YM2151, 4000000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ YM2151(config.replace(), m_ymsnd, 4000000);
+ m_ymsnd->add_route(ALL_OUTPUTS, "speaker", 1.0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp
index 01970b34c42..a8766678dc7 100644
--- a/src/mame/drivers/segas16b.cpp
+++ b/src/mame/drivers/segas16b.cpp
@@ -1894,7 +1894,7 @@ void segas16b_state::lockonph_sound_map(address_map &map)
void segas16b_state::lockonph_sound_iomap(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x00, 0x01).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x40, 0x40).nopw(); // ??
map(0x80, 0x80).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
@@ -3748,8 +3748,7 @@ MACHINE_CONFIG_START(segas16b_state::system16b)
// sound hardware
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ym2151", YM2151, MASTER_CLOCK_8MHz/2)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43)
+ YM2151(config, m_ym2151, MASTER_CLOCK_8MHz/2).add_route(ALL_OUTPUTS, "mono", 0.43);
MCFG_DEVICE_ADD("upd", UPD7759)
MCFG_UPD7759_MD(0)
@@ -3950,10 +3949,10 @@ MACHINE_CONFIG_START(segas16b_state::lockonph)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, 0);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(16'000'000)/4) // ??
-// MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) // does set up the timer, but end up with no sound?
- MCFG_SOUND_ROUTE(0, "mono", 0.5)
- MCFG_SOUND_ROUTE(1, "mono", 0.5)
+ YM2151(config, m_ym2151, XTAL(16'000'000)/4); // ??
+// m_ym2151->irq_handler().set_inputline(m_soundcpu", 0); // does set up the timer, but end up with no sound?
+ m_ym2151->add_route(0, "mono", 0.5);
+ m_ym2151->add_route(1, "mono", 0.5);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_LOW) // clock / pin not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.2)
diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp
index 11d9975a551..1ec64a35a26 100644
--- a/src/mame/drivers/segas24.cpp
+++ b/src/mame/drivers/segas24.cpp
@@ -1961,10 +1961,10 @@ MACHINE_CONFIG_START(segas24_state::system24)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, segas24_state,irq_ym))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 4000000));
+ ymsnd.irq_handler().set(FUNC(segas24_state::irq_ym));
+ ymsnd.add_route(0, "lspeaker", 0.50);
+ ymsnd.add_route(1, "rspeaker", 0.50);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp
index 9b9d31c1965..1d2f4d6aa63 100644
--- a/src/mame/drivers/segaxbd.cpp
+++ b/src/mame/drivers/segaxbd.cpp
@@ -1733,10 +1733,10 @@ MACHINE_CONFIG_START(segaxbd_state::xboard_base_mconfig )
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CLOCK/4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.43)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CLOCK/4));
+ ymsnd.irq_handler().set_inputline(m_soundcpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.43);
+ ymsnd.add_route(1, "rspeaker", 0.43);
MCFG_DEVICE_ADD("pcm", SEGAPCM, SOUND_CLOCK/4)
MCFG_SEGAPCM_BANK(BANK_512)
diff --git a/src/mame/drivers/segaybd.cpp b/src/mame/drivers/segaybd.cpp
index f2bc0ff7d20..83873f7d587 100644
--- a/src/mame/drivers/segaybd.cpp
+++ b/src/mame/drivers/segaybd.cpp
@@ -1338,10 +1338,10 @@ MACHINE_CONFIG_START(segaybd_state::yboard)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, SOUND_CLOCK/8)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.43)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CLOCK/8));
+ ymsnd.irq_handler().set_inputline(m_soundcpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.43);
+ ymsnd.add_route(1, "rspeaker", 0.43);
MCFG_DEVICE_ADD("pcm", SEGAPCM, SOUND_CLOCK/8)
MCFG_SEGAPCM_BANK_MASK(BANK_12M, BANK_MASKF8)
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index 4845622f6da..451ff7f4a64 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -9405,10 +9405,9 @@ MACHINE_CONFIG_START(seta_state::thunderlbl)
MCFG_DEVICE_IO_MAP(thunderlbl_sound_portmap)
/* the sound hardware / program is ripped from Tetris (S16B) */
- MCFG_DEVICE_REMOVE("x1snd")
+ config.device_remove("x1snd");
- MCFG_DEVICE_ADD("ymsnd", YM2151, 10000000/2)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ YM2151(config, "ymsnd", 10000000/2).add_route(ALL_OUTPUTS, "mono", 1.0);
GENERIC_LATCH_8(config, m_soundlatch[0]);
m_soundlatch[0]->data_pending_callback().set_inputline(m_audiocpu, 0);
diff --git a/src/mame/drivers/sf.cpp b/src/mame/drivers/sf.cpp
index f5992f378c4..73df678c5b3 100644
--- a/src/mame/drivers/sf.cpp
+++ b/src/mame/drivers/sf.cpp
@@ -565,10 +565,10 @@ MACHINE_CONFIG_START(sf_state::sfan)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545)));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.60);
+ ymsnd.add_route(1, "rspeaker", 0.60);
MCFG_DEVICE_ADD("msm1", MSM5205, 384000)
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */
diff --git a/src/mame/drivers/shadfrce.cpp b/src/mame/drivers/shadfrce.cpp
index 9150ce7dfdb..a449ec95a30 100644
--- a/src/mame/drivers/shadfrce.cpp
+++ b/src/mame/drivers/shadfrce.cpp
@@ -563,10 +563,10 @@ MACHINE_CONFIG_START(shadfrce_state::shadfrce)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.50);
+ ymsnd.add_route(1, "rspeaker", 0.50);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(13'495'200)/8, okim6295_device::PIN7_HIGH) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
diff --git a/src/mame/drivers/shisen.cpp b/src/mame/drivers/shisen.cpp
index c8654f930e5..3e6fecca5a9 100644
--- a/src/mame/drivers/shisen.cpp
+++ b/src/mame/drivers/shisen.cpp
@@ -252,10 +252,10 @@ MACHINE_CONFIG_START(shisen_state::shisen)
MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO)
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundirq", rst_neg_buffer_device, rst28_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.5)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.5)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579545));
+ ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w));
+ ymsnd.add_route(0, "lspeaker", 0.5);
+ ymsnd.add_route(1, "rspeaker", 0.5);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
diff --git a/src/mame/drivers/sidearms.cpp b/src/mame/drivers/sidearms.cpp
index a5d763028f7..bebc05c6871 100644
--- a/src/mame/drivers/sidearms.cpp
+++ b/src/mame/drivers/sidearms.cpp
@@ -734,10 +734,10 @@ MACHINE_CONFIG_START(sidearms_state::whizz)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 4000000));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "mono", 1.0);
+ ymsnd.add_route(1, "mono", 1.0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/silkroad.cpp b/src/mame/drivers/silkroad.cpp
index 2c973489e14..2fd5f31fb9f 100644
--- a/src/mame/drivers/silkroad.cpp
+++ b/src/mame/drivers/silkroad.cpp
@@ -305,9 +305,7 @@ MACHINE_CONFIG_START(silkroad_state::silkroad)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'000'000)/32, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified (was 1056000)
MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
diff --git a/src/mame/drivers/silvmil.cpp b/src/mame/drivers/silvmil.cpp
index a9002334958..b4ca8b265aa 100644
--- a/src/mame/drivers/silvmil.cpp
+++ b/src/mame/drivers/silvmil.cpp
@@ -5,7 +5,7 @@
yet another Data East / Tumble Pop derived hardware
this one seems similar to (but not identical to)
- the crospang.c hardware from F2 system
+ the crospang.cpp hardware from F2 system
also very close to gotcha.c, which was also a Para
board.
@@ -441,9 +441,9 @@ MACHINE_CONFIG_START(silvmil_state::silvmil)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4) /* Verified */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(14'318'181)/4)); /* Verified */
+ ymsnd.irq_handler().set_inputline("audiocpu", 0);
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(4'096'000)/4, okim6295_device::PIN7_HIGH) /* Verified */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
@@ -463,13 +463,11 @@ MACHINE_CONFIG_START(silvmil_state::puzzlove)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(silvmil_state::puzzlovek)
+void silvmil_state::puzzlovek(machine_config &config)
+{
puzzlove(config);
- MCFG_DEVICE_REMOVE("ymsnd")
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(15'000'000)/4) /* Verified */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-MACHINE_CONFIG_END
+ subdevice<ym2151_device>("ymsnd")->set_clock(XTAL(15'000'000)/4); /* Verified */
+}
ROM_START( silvmil )
diff --git a/src/mame/drivers/simpsons.cpp b/src/mame/drivers/simpsons.cpp
index 68ac2aba230..0b0c9b90d88 100644
--- a/src/mame/drivers/simpsons.cpp
+++ b/src/mame/drivers/simpsons.cpp
@@ -369,11 +369,11 @@ MACHINE_CONFIG_START(simpsons_state::simpsons)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) /* only left channel is connected */
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "lspeaker", 0.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ymsnd.add_route(0, "lspeaker", 1.0); /* only left channel is connected */
+ ymsnd.add_route(0, "rspeaker", 1.0);
+ ymsnd.add_route(1, "lspeaker", 0.0);
+ ymsnd.add_route(1, "rspeaker", 0.0);
MCFG_DEVICE_ADD("k053260", K053260, XTAL(3'579'545)) /* verified on pcb */
MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp
index 8c69aef1f27..ba0cc8f9113 100644
--- a/src/mame/drivers/snowbros.cpp
+++ b/src/mame/drivers/snowbros.cpp
@@ -1805,10 +1805,10 @@ MACHINE_CONFIG_START(snowbros_state::semicom)
config.device_remove("soundlatch2");
/* sound hardware */
- MCFG_DEVICE_REPLACE("ymsnd", YM2151, XTAL(16'000'000)/4) /* 4MHz - Confirmed */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.10)
- MCFG_SOUND_ROUTE(1, "mono", 0.10)
+ ym2151_device &ymsnd(YM2151(config.replace(), "ymsnd", XTAL(16'000'000)/4)); /* 4MHz - Confirmed */
+ ymsnd.irq_handler().set_inputline(m_soundcpu, 0);
+ ymsnd.add_route(0, "mono", 0.10);
+ ymsnd.add_route(1, "mono", 0.10);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* 1MHz & pin 7 High - Confirmed */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@@ -1942,10 +1942,10 @@ MACHINE_CONFIG_START(snowbros_state::finalttr)
MCFG_MACHINE_RESET_OVERRIDE (snowbros_state, finalttr )
- MCFG_DEVICE_REPLACE("ymsnd", YM2151, XTAL(3'579'545)) /* possible but less likely 4MHz (12MHz/3) */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.08)
- MCFG_SOUND_ROUTE(1, "mono", 0.08)
+ ym2151_device &ymsnd(YM2151(config.replace(), "ymsnd", XTAL(3'579'545))); /* possible but less likely 4MHz (12MHz/3) */
+ ymsnd.irq_handler().set_inputline(m_soundcpu, 0);
+ ymsnd.add_route(0, "mono", 0.08);
+ ymsnd.add_route(1, "mono", 0.08);
MCFG_DEVICE_REPLACE("oki", OKIM6295, 999900, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
diff --git a/src/mame/drivers/supbtime.cpp b/src/mame/drivers/supbtime.cpp
index cbfa225b3b5..d2fd9dd8e01 100644
--- a/src/mame/drivers/supbtime.cpp
+++ b/src/mame/drivers/supbtime.cpp
@@ -379,10 +379,10 @@ MACHINE_CONFIG_START(supbtime_state::supbtime)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'220'000) / 9)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ 2
- MCFG_SOUND_ROUTE(0, "mono", 0.45)
- MCFG_SOUND_ROUTE(1, "mono", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'220'000) / 9));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ymsnd.add_route(0, "mono", 0.45);
+ ymsnd.add_route(1, "mono", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(21'477'272) / 20, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
diff --git a/src/mame/drivers/surpratk.cpp b/src/mame/drivers/surpratk.cpp
index dfb920ea624..1dce1bae9e1 100644
--- a/src/mame/drivers/surpratk.cpp
+++ b/src/mame/drivers/surpratk.cpp
@@ -208,10 +208,10 @@ MACHINE_CONFIG_START(surpratk_state::surpratk)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("maincpu", KONAMI_FIRQ_LINE))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545)));
+ ymsnd.irq_handler().set_inputline(m_maincpu, KONAMI_FIRQ_LINE);
+ ymsnd.add_route(0, "lspeaker", 1.0);
+ ymsnd.add_route(1, "rspeaker", 1.0);
MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp
index 968a0a70204..2404ac07378 100644
--- a/src/mame/drivers/system16.cpp
+++ b/src/mame/drivers/system16.cpp
@@ -2070,9 +2070,7 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::z80_ym2151)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.32)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.32)
+ YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32);
MACHINE_CONFIG_END
WRITE_LINE_MEMBER(segas1x_bootleg_state::sound_cause_nmi)
@@ -2091,9 +2089,7 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::z80_ym2151_upd7759)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.32)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.32)
+ YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32);
MCFG_DEVICE_ADD("7759", UPD7759)
MCFG_UPD7759_MD(0)
@@ -2115,9 +2111,7 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::datsu_ym2151_msm5205)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 4000000)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.32)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.32)
+ YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32);
MCFG_DEVICE_ADD("5205", MSM5205, 220000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, tturfbl_msm5205_callback))
diff --git a/src/mame/drivers/taito_x.cpp b/src/mame/drivers/taito_x.cpp
index d828680a2f4..f0280a07e32 100644
--- a/src/mame/drivers/taito_x.cpp
+++ b/src/mame/drivers/taito_x.cpp
@@ -919,10 +919,10 @@ MACHINE_CONFIG_START(taitox_state::daisenpu)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(16'000'000)/4) /* verified on pcb */
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.45);
+ ymsnd.add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("ciu", PC060HA, 0)
MCFG_PC060HA_MASTER_CPU("maincpu")
diff --git a/src/mame/drivers/tatsumi.cpp b/src/mame/drivers/tatsumi.cpp
index b26bea65e53..9333f1d8b2f 100644
--- a/src/mame/drivers/tatsumi.cpp
+++ b/src/mame/drivers/tatsumi.cpp
@@ -920,10 +920,10 @@ MACHINE_CONFIG_START(apache3_state::apache3)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, CLOCK_1 / 4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ YM2151(config, m_ym2151, CLOCK_1 / 4);
+ m_ym2151->irq_handler().set_inputline(m_audiocpu, INPUT_LINE_IRQ0);
+ m_ym2151->add_route(0, "lspeaker", 0.45);
+ m_ym2151->add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, CLOCK_1 / 4 / 2, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
@@ -967,10 +967,10 @@ MACHINE_CONFIG_START(roundup5_state::roundup5)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, CLOCK_1 / 4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ YM2151(config, m_ym2151, CLOCK_1 / 4);
+ m_ym2151->irq_handler().set_inputline(m_audiocpu, INPUT_LINE_IRQ0);
+ m_ym2151->add_route(0, "lspeaker", 0.45);
+ m_ym2151->add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, CLOCK_1 / 4 / 2, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
@@ -1051,10 +1051,10 @@ MACHINE_CONFIG_START(cyclwarr_state::cyclwarr)
GENERIC_LATCH_8(config, m_soundlatch);
// m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, CLOCK_1 / 4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ YM2151(config, m_ym2151, CLOCK_1 / 4);
+ m_ym2151->irq_handler().set_inputline(m_audiocpu, INPUT_LINE_IRQ0);
+ m_ym2151->add_route(0, "lspeaker", 0.45);
+ m_ym2151->add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, CLOCK_1 / 8, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
diff --git a/src/mame/drivers/tceptor.cpp b/src/mame/drivers/tceptor.cpp
index 87d9284cbe0..6eec072bf91 100644
--- a/src/mame/drivers/tceptor.cpp
+++ b/src/mame/drivers/tceptor.cpp
@@ -364,9 +364,7 @@ MACHINE_CONFIG_START(tceptor_state::tceptor)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2048)
MCFG_NAMCO_AUDIO_VOICES(8)
diff --git a/src/mame/drivers/tecmo16.cpp b/src/mame/drivers/tecmo16.cpp
index 6e178f12414..b895fc43b89 100644
--- a/src/mame/drivers/tecmo16.cpp
+++ b/src/mame/drivers/tecmo16.cpp
@@ -398,10 +398,10 @@ MACHINE_CONFIG_START(tecmo16_state::fstarfrc)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, MASTER_CLOCK/6) // 4 MHz
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", MASTER_CLOCK/6)); // 4 MHz
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.60);
+ ymsnd.add_route(1, "rspeaker", 0.60);
MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK/8, okim6295_device::PIN7_HIGH) // sample rate 1 MHz / 132
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
diff --git a/src/mame/drivers/thunderx.cpp b/src/mame/drivers/thunderx.cpp
index 0c6085cf828..a9fe79af424 100644
--- a/src/mame/drivers/thunderx.cpp
+++ b/src/mame/drivers/thunderx.cpp
@@ -679,9 +679,7 @@ MACHINE_CONFIG_START(thunderx_state::scontra)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified on pcb */
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "mono", 1.0).add_route(1, "mono", 1.0); /* verified on pcb */
MCFG_DEVICE_ADD("k007232", K007232, XTAL(3'579'545)) /* verified on pcb */
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, thunderx_state, volume_callback))
diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp
index 0aff7e84108..4d9b13fdfda 100644
--- a/src/mame/drivers/tmnt.cpp
+++ b/src/mame/drivers/tmnt.cpp
@@ -1960,10 +1960,10 @@ MACHINE_CONFIG_START(tmnt_state::cuebrick)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("maincpu", M68K_IRQ_6))
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545)));
+ ymsnd.irq_handler().set_inputline(m_maincpu, M68K_IRQ_6);
+ ymsnd.add_route(0, "mono", 1.0);
+ ymsnd.add_route(1, "mono", 1.0);
MACHINE_CONFIG_END
@@ -2014,9 +2014,7 @@ MACHINE_CONFIG_START(tmnt_state::mia)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "mono", 1.0).add_route(1, "mono", 1.0);
MCFG_DEVICE_ADD("k007232", K007232, XTAL(3'579'545))
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, tmnt_state, volume_callback))
@@ -2080,9 +2078,7 @@ MACHINE_CONFIG_START(tmnt_state::tmnt)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "mono", 1.0).add_route(1, "mono", 1.0);
MCFG_DEVICE_ADD("k007232", K007232, XTAL(3'579'545))
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, tmnt_state, volume_callback))
@@ -2144,9 +2140,7 @@ MACHINE_CONFIG_START(tmnt_state::punkshot)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "mono", 1.0)
- MCFG_SOUND_ROUTE(1, "mono", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "mono", 1.0).add_route(1, "mono", 1.0);
MCFG_K053260_ADD("k053260", XTAL(3'579'545))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
@@ -2200,9 +2194,7 @@ MACHINE_CONFIG_START(tmnt_state::lgtnfght)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_K053260_ADD("k053260", XTAL(3'579'545))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
@@ -2262,9 +2254,7 @@ MACHINE_CONFIG_START(tmnt_state::blswhstl)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.70)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 0.70).add_route(1, "rspeaker", 0.70);
MCFG_K053260_ADD("k053260", XTAL(3'579'545))
MCFG_SOUND_ROUTE(0, "rspeaker", 0.50) /* fixed inverted stereo channels */
@@ -2476,9 +2466,7 @@ MACHINE_CONFIG_START(tmnt_state::tmnt2)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_K053260_ADD("k053260", XTAL(3'579'545))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
@@ -2536,9 +2524,7 @@ MACHINE_CONFIG_START(tmnt_state::ssriders)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_K053260_ADD("k053260", XTAL(3'579'545))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
@@ -2640,9 +2626,7 @@ MACHINE_CONFIG_START(tmnt_state::thndrx2)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_K053260_ADD("k053260", XTAL(3'579'545))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
diff --git a/src/mame/drivers/tomcat.cpp b/src/mame/drivers/tomcat.cpp
index f59e5b1f04b..1cb495c4c38 100644
--- a/src/mame/drivers/tomcat.cpp
+++ b/src/mame/drivers/tomcat.cpp
@@ -383,9 +383,7 @@ MACHINE_CONFIG_START(tomcat_state::tomcat)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181) / 4)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
+ YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 0.60).add_route(1, "rspeaker", 0.60);
MACHINE_CONFIG_END
ROM_START( tomcat )
diff --git a/src/mame/drivers/tumbleb.cpp b/src/mame/drivers/tumbleb.cpp
index 0bbb07b7032..666f4a8cad6 100644
--- a/src/mame/drivers/tumbleb.cpp
+++ b/src/mame/drivers/tumbleb.cpp
@@ -2194,8 +2194,7 @@ MACHINE_CONFIG_START(tumbleb_state::fncywld)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ymsnd", YM2151, 32220000/9)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
+ YM2151(config, "ymsnd", 32220000/9).add_route(ALL_OUTPUTS, "mono", 0.20);
MCFG_DEVICE_ADD("oki", OKIM6295, 1023924, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@@ -2257,9 +2256,9 @@ MACHINE_CONFIG_START(tumbleb_state::htchctch)
GENERIC_LATCH_8(config, m_soundlatch);
/* on at least hatch catch, cookie & bibi and choky choky the YM2151 clock is connected directly to the Z80 clock so the speed should match */
- MCFG_DEVICE_ADD("ymsnd", YM2151, 15000000/4)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 15000000/4));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 0.10);
/* correct for cookie & bibi and hatch catch, (4096000/4) */
MCFG_DEVICE_ADD("oki", OKIM6295, 1024000, okim6295_device::PIN7_HIGH)
@@ -2300,9 +2299,7 @@ MACHINE_CONFIG_START(tumbleb_state::bcstory)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_bcstory)
- MCFG_DEVICE_REPLACE("ymsnd", YM2151, 3427190)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
+ subdevice<ym2151_device>("ymsnd")->set_clock(3427190);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(tumbleb_state::semibase)
@@ -2324,9 +2321,7 @@ MACHINE_CONFIG_START(tumbleb_state::metlsavr)
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
- MCFG_DEVICE_REPLACE("ymsnd", YM2151, 3427190)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
+ subdevice<ym2151_device>("ymsnd")->set_clock(3427190);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/twin16.cpp b/src/mame/drivers/twin16.cpp
index bdc95c1a3ab..bba948d0b43 100644
--- a/src/mame/drivers/twin16.cpp
+++ b/src/mame/drivers/twin16.cpp
@@ -686,9 +686,7 @@ MACHINE_CONFIG_START(twin16_state::twin16)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("k007232", K007232, XTAL(3'579'545))
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, twin16_state, volume_callback))
@@ -741,9 +739,7 @@ MACHINE_CONFIG_START(fround_state::fround)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("k007232", K007232, XTAL(3'579'545))
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, twin16_state, volume_callback))
diff --git a/src/mame/drivers/ultraman.cpp b/src/mame/drivers/ultraman.cpp
index e98e746bb14..2445bc0f559 100644
--- a/src/mame/drivers/ultraman.cpp
+++ b/src/mame/drivers/ultraman.cpp
@@ -230,9 +230,7 @@ MACHINE_CONFIG_START(ultraman_state::ultraman)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 24000000/6)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", 24000000/6).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
diff --git a/src/mame/drivers/unico.cpp b/src/mame/drivers/unico.cpp
index 501962cf5c4..68800feee9e 100644
--- a/src/mame/drivers/unico.cpp
+++ b/src/mame/drivers/unico.cpp
@@ -679,9 +679,7 @@ MACHINE_CONFIG_START(zeropnt2_state::zeropnt2)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4) /* 3.579545 MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.70)
+ YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 0.70).add_route(1, "rspeaker", 0.70); /* 3.579545 MHz */
MCFG_DEVICE_ADD("oki1", OKIM6295, 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_DEVICE_ADDRESS_MAP(0, zeropnt_oki_map)
diff --git a/src/mame/drivers/vamphalf.cpp b/src/mame/drivers/vamphalf.cpp
index c717dd59a1d..bb58b2867a6 100644
--- a/src/mame/drivers/vamphalf.cpp
+++ b/src/mame/drivers/vamphalf.cpp
@@ -1133,9 +1133,7 @@ MACHINE_CONFIG_START(vamphalf_state::sound_ym_oki)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(28'000'000)/8) /* 3.5MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(28'000'000)/8).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* 3.5MHz */
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(28'000'000)/16 , okim6295_device::PIN7_HIGH) /* 1.75MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -1153,9 +1151,7 @@ MACHINE_CONFIG_START(vamphalf_state::sound_suplup)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4) /* 3.579545 MHz */
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* 3.579545 MHz */
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(14'318'181)/8, okim6295_device::PIN7_HIGH) /* 1.7897725 MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -1319,9 +1315,7 @@ MACHINE_CONFIG_START(vamphalf_state::aoh)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki_1", OKIM6295, XTAL(32'000'000)/8, okim6295_device::PIN7_HIGH) /* 4MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
diff --git a/src/mame/drivers/vaportra.cpp b/src/mame/drivers/vaportra.cpp
index 217a7f58cbd..4008e4ccaea 100644
--- a/src/mame/drivers/vaportra.cpp
+++ b/src/mame/drivers/vaportra.cpp
@@ -277,10 +277,10 @@ MACHINE_CONFIG_START(vaportra_state::vaportra)
MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000)/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- MCFG_DEVICE_ADD("ym2", YM2151, XTAL(32'220'000)/9) // uses a preset LS163 to force the odd speed
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
- MCFG_SOUND_ROUTE(0, "mono", 0.60)
- MCFG_SOUND_ROUTE(1, "mono", 0.60)
+ ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9)); // uses a preset LS163 to force the odd speed
+ ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
+ ym2.add_route(0, "mono", 0.60);
+ ym2.add_route(1, "mono", 0.60);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
diff --git a/src/mame/drivers/vball.cpp b/src/mame/drivers/vball.cpp
index db9d72e77bc..263e7f746a8 100644
--- a/src/mame/drivers/vball.cpp
+++ b/src/mame/drivers/vball.cpp
@@ -425,10 +425,10 @@ MACHINE_CONFIG_START(vball_state::vball)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579545));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.60);
+ ymsnd.add_route(1, "rspeaker", 0.60);
MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
diff --git a/src/mame/drivers/vendetta.cpp b/src/mame/drivers/vendetta.cpp
index 597a56880ed..5f4fadc2f93 100644
--- a/src/mame/drivers/vendetta.cpp
+++ b/src/mame/drivers/vendetta.cpp
@@ -476,9 +476,7 @@ MACHINE_CONFIG_START(vendetta_state::vendetta)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545)) /* verified with PCB */
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* verified with PCB */
MCFG_K053260_ADD("k053260", XTAL(3'579'545)) /* verified with PCB */
MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
diff --git a/src/mame/drivers/vigilant.cpp b/src/mame/drivers/vigilant.cpp
index b79b13c8b16..9e1d40a5efe 100644
--- a/src/mame/drivers/vigilant.cpp
+++ b/src/mame/drivers/vigilant.cpp
@@ -519,10 +519,10 @@ MACHINE_CONFIG_START(vigilant_state::vigilant)
MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO)
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579645)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundirq", rst_neg_buffer_device, rst28_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.55)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.55)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579645));
+ ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w));
+ ymsnd.add_route(0, "lspeaker", 0.55);
+ ymsnd.add_route(1, "rspeaker", 0.55);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
@@ -634,10 +634,10 @@ MACHINE_CONFIG_START(vigilant_state::kikcubic)
MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO)
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579645)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE("soundirq", rst_neg_buffer_device, rst28_w))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.55)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.55)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579645));
+ ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w));
+ ymsnd.add_route(0, "lspeaker", 0.55);
+ ymsnd.add_route(1, "rspeaker", 0.55);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
diff --git a/src/mame/drivers/wecleman.cpp b/src/mame/drivers/wecleman.cpp
index 7809e70342e..84639e61952 100644
--- a/src/mame/drivers/wecleman.cpp
+++ b/src/mame/drivers/wecleman.cpp
@@ -1087,9 +1087,7 @@ MACHINE_CONFIG_START(wecleman_state::wecleman)
GENERIC_LATCH_8(config, "soundlatch");
- MCFG_DEVICE_ADD("ymsnd", YM2151, 3579545)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.85)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.85)
+ YM2151(config, "ymsnd", 3579545).add_route(0, "lspeaker", 0.85).add_route(1, "rspeaker", 0.85);
MCFG_DEVICE_ADD("k007232_1", K007232, 3579545)
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, wecleman_state, wecleman_volume_callback))
diff --git a/src/mame/drivers/wwfsstar.cpp b/src/mame/drivers/wwfsstar.cpp
index ce855a64b49..a4458c1f6c4 100644
--- a/src/mame/drivers/wwfsstar.cpp
+++ b/src/mame/drivers/wwfsstar.cpp
@@ -440,10 +440,10 @@ MACHINE_CONFIG_START(wwfsstar_state::wwfsstar)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(3'579'545))
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545)));
+ ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
+ ymsnd.add_route(0, "lspeaker", 0.45);
+ ymsnd.add_route(1, "rspeaker", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
diff --git a/src/mame/drivers/x1.cpp b/src/mame/drivers/x1.cpp
index 55c9652d601..6eecebcd390 100644
--- a/src/mame/drivers/x1.cpp
+++ b/src/mame/drivers/x1.cpp
@@ -2308,9 +2308,9 @@ MACHINE_CONFIG_START(x1_state::x1turbo)
m_fdc->drq_wr_callback().set(FUNC(x1_state::fdc_drq_w));
- MCFG_DEVICE_ADD("ym", YM2151, MAIN_CLOCK/8) //option board
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+ YM2151(config, m_ym, MAIN_CLOCK/8); //option board
+ m_ym->add_route(0, "lspeaker", 0.50);
+ m_ym->add_route(1, "rspeaker", 0.50);
MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/xexex.cpp b/src/mame/drivers/xexex.cpp
index 226aa4ba573..845494a2321 100644
--- a/src/mame/drivers/xexex.cpp
+++ b/src/mame/drivers/xexex.cpp
@@ -522,11 +522,11 @@ MACHINE_CONFIG_START(xexex_state::xexex)
K054321(config, m_k054321, "lspeaker", "rspeaker");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(32'000'000)/8) // 4MHz
- MCFG_SOUND_ROUTE(0, "filter1_l", 0.50)
- MCFG_SOUND_ROUTE(0, "filter1_r", 0.50)
- MCFG_SOUND_ROUTE(1, "filter2_l", 0.50)
- MCFG_SOUND_ROUTE(1, "filter2_r", 0.50)
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'000'000)/8)); // 4MHz
+ ymsnd.add_route(0, "filter1_l", 0.50);
+ ymsnd.add_route(0, "filter1_r", 0.50);
+ ymsnd.add_route(1, "filter2_l", 0.50);
+ ymsnd.add_route(1, "filter2_r", 0.50);
MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
MCFG_K054539_APAN_CB(xexex_state, ym_set_mixing)
diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp
index f4a7f6700c4..3b44b500b91 100644
--- a/src/mame/drivers/xmen.cpp
+++ b/src/mame/drivers/xmen.cpp
@@ -342,9 +342,7 @@ MACHINE_CONFIG_START(xmen_state::xmen)
K054321(config, m_k054321, "lspeaker", "rspeaker");
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(16'000'000)/4) /* verified on pcb */
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
+ YM2151(config, "ymsnd", XTAL(16'000'000)/4).add_route(0, "lspeaker", 0.20).add_route(1, "rspeaker", 0.20); /* verified on pcb */
MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
@@ -408,9 +406,7 @@ MACHINE_CONFIG_START(xmen_state::xmen6p)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(16'000'000)/4)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
+ YM2151(config, "ymsnd", XTAL(16'000'000)/4).add_route(0, "lspeaker", 0.20).add_route(1, "rspeaker", 0.20);
MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)