summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/acorn/cms/4080term.cpp18
-rw-r--r--src/devices/bus/acorn/cms/hires.cpp13
-rw-r--r--src/devices/bus/acorn/system/cass.cpp9
-rw-r--r--src/devices/bus/cgenie/expansion/floppy.cpp2
-rw-r--r--src/devices/bus/isa/pgc.cpp6
-rw-r--r--src/devices/bus/newbrain/eim.cpp2
-rw-r--r--src/devices/machine/74165.cpp7
-rw-r--r--src/devices/machine/74166.cpp7
-rw-r--r--src/devices/machine/stvcd.cpp15
-rw-r--r--src/devices/machine/ticket.h16
-rw-r--r--src/devices/machine/timer.h49
-rw-r--r--src/mame/audio/cage.cpp41
-rw-r--r--src/mame/audio/cage.h3
-rw-r--r--src/mame/drivers/1942.cpp2
-rw-r--r--src/mame/drivers/3do.cpp4
-rw-r--r--src/mame/drivers/abc80x.cpp4
-rw-r--r--src/mame/drivers/acommand.cpp2
-rw-r--r--src/mame/drivers/acrnsys1.cpp4
-rw-r--r--src/mame/drivers/agat.cpp4
-rw-r--r--src/mame/drivers/airbustr.cpp2
-rw-r--r--src/mame/drivers/airraid.cpp2
-rw-r--r--src/mame/drivers/albazc.cpp2
-rw-r--r--src/mame/drivers/alphatro.cpp4
-rw-r--r--src/mame/drivers/amusco.cpp2
-rw-r--r--src/mame/drivers/applix.cpp2
-rw-r--r--src/mame/drivers/astrcorp.cpp6
-rw-r--r--src/mame/drivers/astrof.cpp14
-rw-r--r--src/mame/drivers/atari_s1.cpp4
-rw-r--r--src/mame/drivers/atari_s2.cpp4
-rw-r--r--src/mame/drivers/atarisy1.cpp6
-rw-r--r--src/mame/drivers/atom.cpp4
-rw-r--r--src/mame/drivers/avigo.cpp4
-rw-r--r--src/mame/drivers/badlands.cpp2
-rw-r--r--src/mame/drivers/badlandsbl.cpp2
-rw-r--r--src/mame/drivers/beathead.cpp2
-rw-r--r--src/mame/drivers/bionicc.cpp2
-rw-r--r--src/mame/drivers/bladestl.cpp2
-rw-r--r--src/mame/drivers/blitz68k.cpp2
-rw-r--r--src/mame/drivers/blockout.cpp2
-rw-r--r--src/mame/drivers/blw700i.cpp2
-rw-r--r--src/mame/drivers/bml3.cpp6
-rw-r--r--src/mame/drivers/bnstars.cpp2
-rw-r--r--src/mame/drivers/bsktball.cpp2
-rw-r--r--src/mame/drivers/btime.cpp2
-rw-r--r--src/mame/drivers/buggychl.cpp2
-rw-r--r--src/mame/drivers/bullet.cpp4
-rw-r--r--src/mame/drivers/busicom.cpp2
-rw-r--r--src/mame/drivers/bw12.cpp2
-rw-r--r--src/mame/drivers/by17.cpp17
-rw-r--r--src/mame/drivers/by35.cpp12
-rw-r--r--src/mame/drivers/by6803.cpp12
-rw-r--r--src/mame/drivers/byvid.cpp4
-rw-r--r--src/mame/drivers/calcune.cpp4
-rw-r--r--src/mame/drivers/capbowl.cpp2
-rw-r--r--src/mame/drivers/champbas.cpp5
-rw-r--r--src/mame/drivers/champbwl.cpp2
-rw-r--r--src/mame/drivers/chesstrv.cpp2
-rw-r--r--src/mame/drivers/cischeat.cpp15
-rw-r--r--src/mame/drivers/ckz80.cpp9
-rw-r--r--src/mame/drivers/clpoker.cpp2
-rw-r--r--src/mame/drivers/coolpool.cpp6
-rw-r--r--src/mame/drivers/coolridr.cpp4
-rw-r--r--src/mame/drivers/cosmicos.cpp4
-rw-r--r--src/mame/drivers/cps1.cpp3
-rw-r--r--src/mame/drivers/cps2.cpp2
-rw-r--r--src/mame/drivers/cxgz80.cpp16
-rw-r--r--src/mame/drivers/d6800.cpp4
-rw-r--r--src/mame/drivers/dambustr.cpp2
-rw-r--r--src/mame/drivers/darkmist.cpp2
-rw-r--r--src/mame/drivers/dblcrown.cpp2
-rw-r--r--src/mame/drivers/dbz.cpp2
-rw-r--r--src/mame/drivers/dccons.cpp2
-rw-r--r--src/mame/drivers/dcheese.cpp2
-rw-r--r--src/mame/drivers/ddealer.cpp2
-rw-r--r--src/mame/drivers/ddragon3.cpp4
-rw-r--r--src/mame/drivers/deco_mlc.cpp4
-rw-r--r--src/mame/drivers/decocass.cpp2
-rw-r--r--src/mame/drivers/dfruit.cpp2
-rw-r--r--src/mame/drivers/djboy.cpp2
-rw-r--r--src/mame/drivers/dooyong.cpp4
-rw-r--r--src/mame/drivers/dotrikun.cpp6
-rw-r--r--src/mame/drivers/dragrace.cpp2
-rw-r--r--src/mame/drivers/dvk_kcgd.cpp5
-rw-r--r--src/mame/drivers/dvk_ksm.cpp2
-rw-r--r--src/mame/drivers/e100.cpp2
-rw-r--r--src/mame/drivers/eacc.cpp4
-rw-r--r--src/mame/drivers/einstein.cpp4
-rw-r--r--src/mame/drivers/eolith16.cpp2
-rw-r--r--src/mame/drivers/espial.cpp2
-rw-r--r--src/mame/drivers/exedexes.cpp2
-rw-r--r--src/mame/drivers/expro02.cpp2
-rw-r--r--src/mame/drivers/exterm.cpp2
-rw-r--r--src/mame/drivers/fc100.cpp6
-rw-r--r--src/mame/drivers/feversoc.cpp2
-rw-r--r--src/mame/drivers/fidel68k.cpp27
-rw-r--r--src/mame/drivers/fidelmcs48.cpp2
-rw-r--r--src/mame/drivers/finalizr.cpp2
-rw-r--r--src/mame/drivers/firefox.cpp2
-rw-r--r--src/mame/drivers/firetrk.cpp2
-rw-r--r--src/mame/drivers/fk1.cpp4
-rw-r--r--src/mame/drivers/fp1100.cpp2
-rw-r--r--src/mame/drivers/fresh.cpp2
-rw-r--r--src/mame/drivers/funtech.cpp2
-rw-r--r--src/mame/drivers/galaxian.cpp16
-rw-r--r--src/mame/drivers/galaxold.cpp2
-rw-r--r--src/mame/drivers/galgames.cpp2
-rw-r--r--src/mame/drivers/galpani2.cpp4
-rw-r--r--src/mame/drivers/galpani3.cpp2
-rw-r--r--src/mame/drivers/galpanic.cpp2
-rw-r--r--src/mame/drivers/gberet.cpp2
-rw-r--r--src/mame/drivers/gcpinbal.cpp2
-rw-r--r--src/mame/drivers/gei.cpp6
-rw-r--r--src/mame/drivers/gimix.cpp2
-rw-r--r--src/mame/drivers/glasgow.cpp4
-rw-r--r--src/mame/drivers/goldstar.cpp2
-rw-r--r--src/mame/drivers/gp_2.cpp7
-rw-r--r--src/mame/drivers/gundealr.cpp4
-rw-r--r--src/mame/drivers/gunpey.cpp2
-rw-r--r--src/mame/drivers/halleys.cpp6
-rw-r--r--src/mame/drivers/hankin.cpp4
-rw-r--r--src/mame/drivers/hh_melps4.cpp4
-rw-r--r--src/mame/drivers/hideseek.cpp2
-rw-r--r--src/mame/drivers/higemaru.cpp2
-rw-r--r--src/mame/drivers/hp2640.cpp8
-rw-r--r--src/mame/drivers/hp64k.cpp6
-rw-r--r--src/mame/drivers/hp80.cpp10
-rw-r--r--src/mame/drivers/hp9845.cpp12
-rw-r--r--src/mame/drivers/huebler.cpp4
-rw-r--r--src/mame/drivers/hvyunit.cpp2
-rw-r--r--src/mame/drivers/hyprduel.cpp4
-rw-r--r--src/mame/drivers/igs017.cpp20
-rw-r--r--src/mame/drivers/igspoker.cpp2
-rw-r--r--src/mame/drivers/ikki.cpp2
-rw-r--r--src/mame/drivers/imolagp.cpp2
-rw-r--r--src/mame/drivers/iq151.cpp2
-rw-r--r--src/mame/drivers/iqblock.cpp2
-rw-r--r--src/mame/drivers/ironhors.cpp5
-rw-r--r--src/mame/drivers/jalmah.cpp2
-rw-r--r--src/mame/drivers/jchan.cpp2
-rw-r--r--src/mame/drivers/jclub2.cpp18
-rw-r--r--src/mame/drivers/jeutel.cpp2
-rw-r--r--src/mame/drivers/jpmimpct.cpp4
-rw-r--r--src/mame/drivers/junior.cpp2
-rw-r--r--src/mame/drivers/jupace.cpp4
-rw-r--r--src/mame/drivers/kaneko16.cpp14
-rw-r--r--src/mame/drivers/kas89.cpp4
-rw-r--r--src/mame/drivers/kc.cpp4
-rw-r--r--src/mame/drivers/kdt6.cpp2
-rw-r--r--src/mame/drivers/kim1.cpp4
-rw-r--r--src/mame/drivers/koftball.cpp2
-rw-r--r--src/mame/drivers/konmedal68k.cpp2
-rw-r--r--src/mame/drivers/laserbas.cpp2
-rw-r--r--src/mame/drivers/lastbank.cpp2
-rw-r--r--src/mame/drivers/lazercmd.cpp6
-rw-r--r--src/mame/drivers/lethalj.cpp2
-rw-r--r--src/mame/drivers/littlerb.cpp4
-rw-r--r--src/mame/drivers/ltd.cpp2
-rw-r--r--src/mame/drivers/markham.cpp2
-rw-r--r--src/mame/drivers/maygay1b.cpp2
-rw-r--r--src/mame/drivers/mc10.cpp2
-rw-r--r--src/mame/drivers/mc1000.cpp14
-rw-r--r--src/mame/drivers/mcr3.cpp2
-rw-r--r--src/mame/drivers/mcr68.cpp2
-rw-r--r--src/mame/drivers/mediagx.cpp2
-rw-r--r--src/mame/drivers/meijinsn.cpp2
-rw-r--r--src/mame/drivers/mekd2.cpp4
-rw-r--r--src/mame/drivers/mephisto.cpp10
-rw-r--r--src/mame/drivers/mephisto_montec.cpp2
-rw-r--r--src/mame/drivers/metlfrzr.cpp2
-rw-r--r--src/mame/drivers/meyc8088.cpp2
-rw-r--r--src/mame/drivers/micropin.cpp2
-rw-r--r--src/mame/drivers/midvunit.cpp4
-rw-r--r--src/mame/drivers/mjsenpu.cpp2
-rw-r--r--src/mame/drivers/mk1.cpp2
-rw-r--r--src/mame/drivers/mk2.cpp2
-rw-r--r--src/mame/drivers/modena.cpp7
-rw-r--r--src/mame/drivers/monzagp.cpp7
-rw-r--r--src/mame/drivers/mpf1.cpp6
-rw-r--r--src/mame/drivers/mrflea.cpp2
-rw-r--r--src/mame/drivers/ms32.cpp2
-rw-r--r--src/mame/drivers/mstation.cpp4
-rw-r--r--src/mame/drivers/mtx.cpp4
-rw-r--r--src/mame/drivers/multfish.cpp4
-rw-r--r--src/mame/drivers/multi8.cpp2
-rw-r--r--src/mame/drivers/mustache.cpp2
-rw-r--r--src/mame/drivers/mycom.cpp2
-rw-r--r--src/mame/drivers/mz700.cpp4
-rw-r--r--src/mame/drivers/mz80.cpp2
-rw-r--r--src/mame/drivers/nakajies.cpp2
-rw-r--r--src/mame/drivers/namcofl.cpp6
-rw-r--r--src/mame/drivers/namconb1.cpp8
-rw-r--r--src/mame/drivers/namcos2.cpp14
-rw-r--r--src/mame/drivers/namcos21.cpp2
-rw-r--r--src/mame/drivers/namcos21_c67.cpp2
-rw-r--r--src/mame/drivers/namcos21_de.cpp2
-rw-r--r--src/mame/drivers/namcos22.cpp17
-rw-r--r--src/mame/drivers/nanos.cpp2
-rw-r--r--src/mame/drivers/nc.cpp2
-rw-r--r--src/mame/drivers/nitedrvr.cpp2
-rw-r--r--src/mame/drivers/novag6502.cpp23
-rw-r--r--src/mame/drivers/novag68k.cpp9
-rw-r--r--src/mame/drivers/novagf8.cpp2
-rw-r--r--src/mame/drivers/novagmcs48.cpp2
-rw-r--r--src/mame/drivers/olibochu.cpp2
-rw-r--r--src/mame/drivers/orbit.cpp2
-rw-r--r--src/mame/drivers/panicr.cpp2
-rw-r--r--src/mame/drivers/pasogo.cpp2
-rw-r--r--src/mame/drivers/patapata.cpp2
-rw-r--r--src/mame/drivers/pc100.cpp8
-rw-r--r--src/mame/drivers/pc6001.cpp4
-rw-r--r--src/mame/drivers/pc8401a.cpp4
-rw-r--r--src/mame/drivers/pc8801.cpp2
-rw-r--r--src/mame/drivers/pce220.cpp6
-rw-r--r--src/mame/drivers/pcw16.cpp4
-rw-r--r--src/mame/drivers/pegasus.cpp2
-rw-r--r--src/mame/drivers/photon2.cpp2
-rw-r--r--src/mame/drivers/pingpong.cpp5
-rw-r--r--src/mame/drivers/playmark.cpp8
-rw-r--r--src/mame/drivers/pofo.cpp6
-rw-r--r--src/mame/drivers/popobear.cpp2
-rw-r--r--src/mame/drivers/prestige.cpp2
-rw-r--r--src/mame/drivers/pro80.cpp2
-rw-r--r--src/mame/drivers/proteus3.cpp4
-rw-r--r--src/mame/drivers/psion.cpp5
-rw-r--r--src/mame/drivers/px4.cpp6
-rw-r--r--src/mame/drivers/rad_eu3a14.cpp2
-rw-r--r--src/mame/drivers/rainbow.cpp2
-rw-r--r--src/mame/drivers/rbisland.cpp2
-rw-r--r--src/mame/drivers/rd110.cpp4
-rw-r--r--src/mame/drivers/rex6000.cpp12
-rw-r--r--src/mame/drivers/rmt32.cpp4
-rw-r--r--src/mame/drivers/rowamet.cpp2
-rw-r--r--src/mame/drivers/rulechan.cpp11
-rw-r--r--src/mame/drivers/rzone.cpp12
-rw-r--r--src/mame/drivers/s3.cpp2
-rw-r--r--src/mame/drivers/s4.cpp2
-rw-r--r--src/mame/drivers/sbowling.cpp2
-rw-r--r--src/mame/drivers/scobra.cpp4
-rw-r--r--src/mame/drivers/scorpion.cpp2
-rw-r--r--src/mame/drivers/scramble.cpp4
-rw-r--r--src/mame/drivers/scregg.cpp4
-rw-r--r--src/mame/drivers/seta2.cpp6
-rw-r--r--src/mame/drivers/shadfrce.cpp2
-rw-r--r--src/mame/drivers/shaolins.cpp2
-rw-r--r--src/mame/drivers/sigmab98.cpp16
-rw-r--r--src/mame/drivers/simple_st0016.cpp2
-rw-r--r--src/mame/drivers/skullxbo.cpp2
-rw-r--r--src/mame/drivers/skylncr.cpp2
-rw-r--r--src/mame/drivers/sliver.cpp2
-rw-r--r--src/mame/drivers/smc777.cpp2
-rw-r--r--src/mame/drivers/snk6502.cpp2
-rw-r--r--src/mame/drivers/spc1500.cpp2
-rw-r--r--src/mame/drivers/spirit76.cpp2
-rw-r--r--src/mame/drivers/sprcros2.cpp2
-rw-r--r--src/mame/drivers/sprint8.cpp3
-rw-r--r--src/mame/drivers/spyhuntertec.cpp2
-rw-r--r--src/mame/drivers/squale.cpp2
-rw-r--r--src/mame/drivers/srumbler.cpp2
-rw-r--r--src/mame/drivers/st_mp100.cpp4
-rw-r--r--src/mame/drivers/st_mp200.cpp4
-rw-r--r--src/mame/drivers/stratos.cpp2
-rw-r--r--src/mame/drivers/subsino.cpp10
-rw-r--r--src/mame/drivers/subsino2.cpp2
-rw-r--r--src/mame/drivers/sun3.cpp4
-rw-r--r--src/mame/drivers/sun3x.cpp2
-rw-r--r--src/mame/drivers/suprnova.cpp17
-rw-r--r--src/mame/drivers/svision.cpp7
-rw-r--r--src/mame/drivers/taito.cpp2
-rw-r--r--src/mame/drivers/taito_o.cpp2
-rw-r--r--src/mame/drivers/tapatune.cpp2
-rw-r--r--src/mame/drivers/tasman.cpp2
-rw-r--r--src/mame/drivers/tb303.cpp16
-rw-r--r--src/mame/drivers/tek405x.cpp2
-rw-r--r--src/mame/drivers/thedealr.cpp2
-rw-r--r--src/mame/drivers/ti89.cpp2
-rw-r--r--src/mame/drivers/ticalc1x.cpp22
-rw-r--r--src/mame/drivers/tickee.cpp8
-rw-r--r--src/mame/drivers/tiki100.cpp4
-rw-r--r--src/mame/drivers/tispellb.cpp4
-rw-r--r--src/mame/drivers/tk2000.cpp2
-rw-r--r--src/mame/drivers/tm990189.cpp10
-rw-r--r--src/mame/drivers/tmaster.cpp2
-rw-r--r--src/mame/drivers/tr606.cpp17
-rw-r--r--src/mame/drivers/trs80m2.cpp4
-rw-r--r--src/mame/drivers/v1050.cpp6
-rw-r--r--src/mame/drivers/vball.cpp2
-rw-r--r--src/mame/drivers/vboy.cpp8
-rw-r--r--src/mame/drivers/vcs80.cpp7
-rw-r--r--src/mame/drivers/vd.cpp13
-rw-r--r--src/mame/drivers/vg5k.cpp4
-rw-r--r--src/mame/drivers/vicdual.cpp18
-rw-r--r--src/mame/drivers/videopkr.cpp2
-rw-r--r--src/mame/drivers/viper.cpp2
-rw-r--r--src/mame/drivers/vixen.cpp2
-rw-r--r--src/mame/drivers/volfied.cpp2
-rw-r--r--src/mame/drivers/votrpss.cpp2
-rw-r--r--src/mame/drivers/wheelfir.cpp2
-rw-r--r--src/mame/drivers/wico.cpp4
-rw-r--r--src/mame/drivers/williams.cpp15
-rw-r--r--src/mame/drivers/witch.cpp2
-rw-r--r--src/mame/drivers/wmg.cpp4
-rw-r--r--src/mame/drivers/wpc_95.cpp2
-rw-r--r--src/mame/drivers/wpc_dcs.cpp2
-rw-r--r--src/mame/drivers/wpc_s.cpp2
-rw-r--r--src/mame/drivers/wwfsstar.cpp2
-rw-r--r--src/mame/drivers/x07.cpp2
-rw-r--r--src/mame/drivers/x1.cpp4
-rw-r--r--src/mame/drivers/x1twin.cpp4
-rw-r--r--src/mame/drivers/xain.cpp2
-rw-r--r--src/mame/drivers/xerox820.cpp4
-rw-r--r--src/mame/drivers/xmen.cpp4
-rw-r--r--src/mame/drivers/xtheball.cpp2
-rw-r--r--src/mame/drivers/z9001.cpp2
-rw-r--r--src/mame/drivers/zaurus.cpp2
-rw-r--r--src/mame/machine/megacd.cpp8
-rw-r--r--src/mame/machine/megacdcd.cpp13
-rw-r--r--src/mame/machine/megadriv.cpp7
-rw-r--r--src/mame/video/cgc7900.cpp2
-rw-r--r--src/mame/video/decodmd1.cpp2
-rw-r--r--src/mame/video/pcd.cpp7
-rw-r--r--src/mame/video/wpc_dmd.cpp2
321 files changed, 753 insertions, 770 deletions
diff --git a/src/devices/bus/acorn/cms/4080term.cpp b/src/devices/bus/acorn/cms/4080term.cpp
index 0bf9cf5a7ea..24d77b1ec36 100644
--- a/src/devices/bus/acorn/cms/4080term.cpp
+++ b/src/devices/bus/acorn/cms/4080term.cpp
@@ -68,22 +68,23 @@ DEVICE_INPUT_DEFAULTS_END
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(cms_4080term_device::device_add_mconfig)
+void cms_4080term_device::device_add_mconfig(machine_config &config)
+{
/* video hardware */
- device = &SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(50);
m_screen->set_size(768, 312);
m_screen->set_visarea(0, 492 - 1, 0, 270 - 1);
- MCFG_SCREEN_UPDATE_DEVICE("ef9345", ef9345_device, screen_update)
+ m_screen->set_screen_update("ef9345", FUNC(ef9345_device::screen_update));
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cms_4080term)
- MCFG_PALETTE_ADD("palette", 8)
+ GFXDECODE(config, "gfxdecode", "palette", gfx_cms_4080term);
+ PALETTE(config, "palette").set_entries(8);
EF9345(config, m_ef9345, 0);
m_ef9345->set_screen("screen");
m_ef9345->set_palette_tag("palette");
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cms_4080term_device, update_scanline, "screen", 0, 10)
+ TIMER(config, "scantimer").configure_scanline(FUNC(cms_4080term_device::update_scanline), "screen", 0, 10);
VIA6522(config, m_via, 1_MHz_XTAL);
m_via->writepa_handler().set("cent_data_out", FUNC(output_latch_device::bus_w));
@@ -107,8 +108,9 @@ MACHINE_CONFIG_START(cms_4080term_device::device_add_mconfig)
/* printer */
CENTRONICS(config, m_centronics, centronics_devices, "printer");
m_centronics->ack_handler().set(m_via, FUNC(via6522_device::write_ca1));
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
-MACHINE_CONFIG_END
+ output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
+ m_centronics->set_output_latch(cent_data_out);
+}
const tiny_rom_entry *cms_4080term_device::device_rom_region() const
diff --git a/src/devices/bus/acorn/cms/hires.cpp b/src/devices/bus/acorn/cms/hires.cpp
index d15032bd30c..78dadf9aea8 100644
--- a/src/devices/bus/acorn/cms/hires.cpp
+++ b/src/devices/bus/acorn/cms/hires.cpp
@@ -25,23 +25,24 @@ DEFINE_DEVICE_TYPE(CMS_HIRES, cms_hires_device, "cms_hires", "CMS High Resolutio
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(cms_hires_device::device_add_mconfig)
+void cms_hires_device::device_add_mconfig(machine_config &config)
+{
/* video hardware */
- device = &SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_size(512, 312);
m_screen->set_visarea(0, 512 - 1, 0, 256 - 1);
m_screen->set_refresh_hz(50);
- MCFG_SCREEN_UPDATE_DEVICE("ef9366", ef9365_device, screen_update)
- MCFG_PALETTE_ADD("palette", 16)
+ m_screen->set_screen_update("ef9366", FUNC(ef9365_device::screen_update));
+ PALETTE(config, "palette").set_entries(16);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("flash_rate", cms_hires_device, flash_rate, attotime::from_hz(3)) // from 555 timer (4.7uF, 100K, 470R)
+ TIMER(config, "flash_rate").configure_periodic(FUNC(cms_hires_device::flash_rate), attotime::from_hz(3)); // from 555 timer (4.7uF, 100K, 470R)
EF9365(config, m_gdp, 14_MHz_XTAL / 8);
m_gdp->set_screen("screen");
m_gdp->set_palette_tag("palette");
m_gdp->set_nb_bitplanes(4);
m_gdp->set_display_mode(ef9365_device::DISPLAY_MODE_512x256);
-MACHINE_CONFIG_END
+}
//**************************************************************************
diff --git a/src/devices/bus/acorn/system/cass.cpp b/src/devices/bus/acorn/system/cass.cpp
index 092a72f40a3..6e5b8faf40c 100644
--- a/src/devices/bus/acorn/system/cass.cpp
+++ b/src/devices/bus/acorn/system/cass.cpp
@@ -24,15 +24,16 @@ DEFINE_DEVICE_TYPE(ACORN_CASS, acorn_cass_device, "acorn_cass", "Acorn Cassette
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(acorn_cass_device::device_add_mconfig)
+void acorn_cass_device::device_add_mconfig(machine_config &config)
+{
/* sound hardware */
SPEAKER(config, "mono").front_center();
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
CASSETTE(config, "cassette", 0);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("cass_c", acorn_cass_device, cass_c, attotime::from_hz(4800))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("cass_p", acorn_cass_device, cass_p, attotime::from_hz(40000))
-MACHINE_CONFIG_END
+ TIMER(config, "cass_c").configure_periodic(FUNC(acorn_cass_device::cass_c), attotime::from_hz(4800));
+ TIMER(config, "cass_p").configure_periodic(FUNC(acorn_cass_device::cass_p), attotime::from_hz(40000));
+}
//**************************************************************************
diff --git a/src/devices/bus/cgenie/expansion/floppy.cpp b/src/devices/bus/cgenie/expansion/floppy.cpp
index 021f00e9f8d..56b0c668b6e 100644
--- a/src/devices/bus/cgenie/expansion/floppy.cpp
+++ b/src/devices/bus/cgenie/expansion/floppy.cpp
@@ -72,7 +72,7 @@ const tiny_rom_entry *cgenie_fdc_device::device_rom_region() const
//-------------------------------------------------
MACHINE_CONFIG_START(cgenie_fdc_device::device_add_mconfig)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", cgenie_fdc_device, timer_callback, attotime::from_msec(25))
+ TIMER(config, "timer").configure_periodic(FUNC(cgenie_fdc_device::timer_callback), attotime::from_msec(25));
FD1793(config, m_fdc, 1_MHz_XTAL);
m_fdc->intrq_wr_callback().set(FUNC(cgenie_fdc_device::intrq_w));
diff --git a/src/devices/bus/isa/pgc.cpp b/src/devices/bus/isa/pgc.cpp
index ab242877e01..96b3233a76f 100644
--- a/src/devices/bus/isa/pgc.cpp
+++ b/src/devices/bus/isa/pgc.cpp
@@ -158,9 +158,9 @@ MACHINE_CONFIG_START(isa8_pgc_device::device_add_mconfig)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(isa8_pgc_device, irq_callback)
#endif
- MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", isa8_pgc_device, scanline_callback,
- attotime::from_hz(60*PGC_TOTAL_VERT))
- MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL(50'000'000)/(2*PGC_HORZ_START)))
+ timer_device &scantimer(TIMER(config, "scantimer"));
+ scantimer.configure_periodic(FUNC(isa8_pgc_device::scanline_callback), attotime::from_hz(60*PGC_TOTAL_VERT));
+ scantimer.set_start_delay(attotime::from_hz(XTAL(50'000'000)/(2*PGC_HORZ_START)));
MCFG_SCREEN_ADD(PGC_SCREEN_NAME, RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(50'000'000)/2,
diff --git a/src/devices/bus/newbrain/eim.cpp b/src/devices/bus/newbrain/eim.cpp
index 2bafd008eb6..b3f7cf1a4cc 100644
--- a/src/devices/bus/newbrain/eim.cpp
+++ b/src/devices/bus/newbrain/eim.cpp
@@ -74,7 +74,7 @@ MACHINE_CONFIG_START(newbrain_eim_device::device_add_mconfig)
m_ctc->zc_callback<1>().set(m_acia, FUNC(acia6850_device::write_txc));
m_ctc->zc_callback<2>().set(FUNC(newbrain_eim_device::ctc_z2_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("z80ctc_c2", newbrain_eim_device, ctc_c2_tick, attotime::from_hz(XTAL(16'000'000)/4/13))
+ TIMER(config, "z80ctc_c2").configure_periodic(FUNC(newbrain_eim_device::ctc_c2_tick), attotime::from_hz(XTAL(16'000'000)/4/13));
adc0809_device &adc(ADC0809(config, ADC0809_TAG, 500000));
adc.eoc_callback().set(FUNC(newbrain_eim_device::adc_eoc_w));
diff --git a/src/devices/machine/74165.cpp b/src/devices/machine/74165.cpp
index d33033d5ab7..9ba4415d56c 100644
--- a/src/devices/machine/74165.cpp
+++ b/src/devices/machine/74165.cpp
@@ -22,9 +22,10 @@ DEFINE_DEVICE_TYPE(TTL165, ttl165_device, "ttl165", "SN54/74165")
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(ttl165_device::device_add_mconfig)
- MCFG_TIMER_DRIVER_ADD("timer", ttl165_device, qh_output)
-MACHINE_CONFIG_END
+void ttl165_device::device_add_mconfig(machine_config &config)
+{
+ TIMER(config, m_timer).configure_generic(FUNC(ttl165_device::qh_output));
+}
//**************************************************************************
diff --git a/src/devices/machine/74166.cpp b/src/devices/machine/74166.cpp
index 07a9de653a5..1611b526762 100644
--- a/src/devices/machine/74166.cpp
+++ b/src/devices/machine/74166.cpp
@@ -22,9 +22,10 @@ DEFINE_DEVICE_TYPE(TTL166, ttl166_device, "ttl166", "SN54/74166")
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(ttl166_device::device_add_mconfig)
- MCFG_TIMER_DRIVER_ADD("timer", ttl166_device, qh_output)
-MACHINE_CONFIG_END
+void ttl166_device::device_add_mconfig(machine_config &config)
+{
+ TIMER(config, m_timer).configure_generic(FUNC(ttl166_device::qh_output));
+}
//**************************************************************************
diff --git a/src/devices/machine/stvcd.cpp b/src/devices/machine/stvcd.cpp
index 154a17e895b..c4b7ada9b9f 100644
--- a/src/devices/machine/stvcd.cpp
+++ b/src/devices/machine/stvcd.cpp
@@ -78,16 +78,17 @@ stvcd_device::stvcd_device(const machine_config &mconfig, const char *tag, devic
{
}
-MACHINE_CONFIG_START(stvcd_device::device_add_mconfig)
+void stvcd_device::device_add_mconfig(machine_config &config)
+{
CDROM(config, "cdrom").set_interface("sat_cdrom");
- MCFG_TIMER_DRIVER_ADD("sector_timer", stvcd_device, stv_sector_cb)
- MCFG_TIMER_DRIVER_ADD("sh1_cmd", stvcd_device, stv_sh1_sim)
+ TIMER(config, m_sector_timer).configure_generic(FUNC(stvcd_device::stv_sector_cb));
+ TIMER(config, m_sh1_timer).configure_generic(FUNC(stvcd_device::stv_sh1_sim));
- MCFG_DEVICE_ADD("cdda", CDDA)
- MCFG_MIXER_ROUTE(0, *this, 1.0, 0)
- MCFG_MIXER_ROUTE(1, *this, 1.0, 1)
-MACHINE_CONFIG_END
+ CDDA(config, m_cdda);
+ m_cdda->add_route(0, *this, 1.0, AUTO_ALLOC_INPUT, 0);
+ m_cdda->add_route(1, *this, 1.0, AUTO_ALLOC_INPUT, 1);
+}
void stvcd_device::device_start()
{
diff --git a/src/devices/machine/ticket.h b/src/devices/machine/ticket.h
index 813e27b95c1..7330ad3cb74 100644
--- a/src/devices/machine/ticket.h
+++ b/src/devices/machine/ticket.h
@@ -21,22 +21,6 @@
DECLARE_DEVICE_TYPE(TICKET_DISPENSER, ticket_dispenser_device)
DECLARE_DEVICE_TYPE(HOPPER, hopper_device)
-
-//**************************************************************************
-// DEVICE CONFIGURATION MACROS
-//**************************************************************************
-
-// add/remove dispensers
-#define MCFG_TICKET_DISPENSER_ADD(_tag, _period_in_msec, _motor_sense, _status_sense) \
- MCFG_DEVICE_ADD(_tag, TICKET_DISPENSER, 0) \
- downcast<ticket_dispenser_device &>(*device).set_period(_period_in_msec); \
- downcast<ticket_dispenser_device &>(*device).set_senses(_motor_sense, _status_sense, false);
-
-#define MCFG_HOPPER_ADD(_tag, _period_in_msec, _motor_sense, _status_sense) \
- MCFG_DEVICE_ADD(_tag, TICKET_DISPENSER, 0) \
- downcast<ticket_dispenser_device &>(*device).set_period(_period_in_msec); \
- downcast<ticket_dispenser_device &>(*device).set_senses(_motor_sense, _status_sense, true);
-
//**************************************************************************
// CONSTANTS
//**************************************************************************
diff --git a/src/devices/machine/timer.h b/src/devices/machine/timer.h
index e27c8a8cc53..a68718cea22 100644
--- a/src/devices/machine/timer.h
+++ b/src/devices/machine/timer.h
@@ -23,44 +23,6 @@
#define TIMER_DEVICE_CALLBACK_MEMBER(name) void name(timer_device &timer, void *ptr, s32 param)
//**************************************************************************
-// TIMER DEVICE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_TIMER_ADD_NONE(_tag) \
- MCFG_DEVICE_ADD(_tag, TIMER, 0) \
- downcast<timer_device &>(*device).configure_generic(timer_device::expired_delegate());
-#define MCFG_TIMER_DRIVER_ADD(_tag, _class, _callback) \
- MCFG_DEVICE_ADD(_tag, TIMER, 0) \
- downcast<timer_device &>(*device).configure_generic(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr));
-#define MCFG_TIMER_DEVICE_ADD(_tag, _devtag, _class, _callback) \
- MCFG_DEVICE_ADD(_tag, TIMER, 0) \
- downcast<timer_device &>(*device).configure_generic(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, _devtag, (_class *)nullptr));
-#define MCFG_TIMER_DRIVER_ADD_PERIODIC(_tag, _class, _callback, _period) \
- MCFG_DEVICE_ADD(_tag, TIMER, 0) \
- downcast<timer_device &>(*device).configure_periodic(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr), _period);
-#define MCFG_TIMER_DEVICE_ADD_PERIODIC(_tag, _devtag, _class, _callback, _period) \
- MCFG_DEVICE_ADD(_tag, TIMER, 0) \
- downcast<timer_device &>(*device).configure_periodic(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, _devtag, (_class *)nullptr), _period);
-#define MCFG_TIMER_DRIVER_ADD_SCANLINE(_tag, _class, _callback, _screen, _first_vpos, _increment) \
- MCFG_DEVICE_ADD(_tag, TIMER, 0) \
- downcast<timer_device &>(*device).configure_scanline(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr), _screen, _first_vpos, _increment);
-#define MCFG_TIMER_DEVICE_ADD_SCANLINE(_tag, _devtag, _class, _callback, _screen, _first_vpos, _increment) \
- MCFG_DEVICE_ADD(_tag, TIMER, 0) \
- downcast<timer_device &>(*device).configure_scanline(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, _devtag, (_class *)nullptr), _screen, _first_vpos, _increment);
-#define MCFG_TIMER_MODIFY(_tag) \
- MCFG_DEVICE_MODIFY(_tag)
-
-#define MCFG_TIMER_DRIVER_CALLBACK(_class, _callback) \
- downcast<timer_device &>(*device).set_callback(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr));
-#define MCFG_TIMER_START_DELAY(_start_delay) \
- downcast<timer_device &>(*device).set_start_delay(_start_delay);
-#define MCFG_TIMER_PARAM(_param) \
- downcast<timer_device &>(*device).config_param(_param);
-#define MCFG_TIMER_PTR(_ptr) \
- downcast<timer_device &>(*device).set_ptr((void *)(_ptr));
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -86,6 +48,11 @@ public:
configure_generic(expired_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
}
+ template <class FunctionClass> void configure_generic(const char *devname, void (FunctionClass::*callback)(timer_device &, void *, s32), const char *name)
+ {
+ configure_generic(expired_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+
template <typename Object> void configure_periodic(Object &&cb, const attotime &period)
{
m_type = TIMER_TYPE_PERIODIC;
@@ -98,6 +65,12 @@ public:
configure_periodic(expired_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), period);
}
+ template <class FunctionClass> void configure_periodic(const char *devname, void (FunctionClass::*callback)(timer_device &, void *, s32),
+ const char *name, const attotime &period)
+ {
+ configure_periodic(expired_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), period);
+ }
+
template <typename Object> void configure_scanline(Object &&cb, const char *screen, int first_vpos, int increment)
{
m_type = TIMER_TYPE_SCANLINE;
diff --git a/src/mame/audio/cage.cpp b/src/mame/audio/cage.cpp
index 6d4167b254f..71be3313f6a 100644
--- a/src/mame/audio/cage.cpp
+++ b/src/mame/audio/cage.cpp
@@ -119,8 +119,8 @@ atari_cage_device::atari_cage_device(const machine_config &mconfig, const char *
atari_cage_device::atari_cage_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
- m_cageram(*this, "cageram"),
m_cpu(*this, "cpu"),
+ m_cageram(*this, "cageram"),
m_soundlatch(*this, "soundlatch"),
m_dma_timer(*this, "cage_dma_timer"),
m_timer(*this, "cage_timer%u", 0U),
@@ -612,16 +612,16 @@ void atari_cage_seattle_device::cage_map_seattle(address_map &map)
// machine_add_config - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(atari_cage_device::device_add_mconfig)
-
+void atari_cage_device::device_add_mconfig(machine_config &config)
+{
/* basic machine hardware */
TMS32031(config, m_cpu, 33868800);
m_cpu->set_addrmap(AS_PROGRAM, &atari_cage_device::cage_map);
m_cpu->set_mcbl_mode(true);
- MCFG_TIMER_DEVICE_ADD("cage_dma_timer", DEVICE_SELF, atari_cage_device, dma_timer_callback)
- MCFG_TIMER_DEVICE_ADD("cage_timer0", DEVICE_SELF, atari_cage_device, cage_timer_callback)
- MCFG_TIMER_DEVICE_ADD("cage_timer1", DEVICE_SELF, atari_cage_device, cage_timer_callback)
+ TIMER(config, m_dma_timer).configure_generic(DEVICE_SELF, FUNC(atari_cage_device::dma_timer_callback));
+ TIMER(config, m_timer[0]).configure_generic(DEVICE_SELF, FUNC(atari_cage_device::cage_timer_callback));
+ TIMER(config, m_timer[1]).configure_generic(DEVICE_SELF, FUNC(atari_cage_device::cage_timer_callback));
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -630,25 +630,19 @@ MACHINE_CONFIG_START(atari_cage_device::device_add_mconfig)
GENERIC_LATCH_16(config, m_soundlatch);
#if (DAC_BUFFER_CHANNELS == 4)
- MCFG_DEVICE_ADD("dac1", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+ DMADAC(config, m_dmadac[0]).add_route(ALL_OUTPUTS, "rspeaker", 0.50);
- MCFG_DEVICE_ADD("dac2", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ DMADAC(config, m_dmadac[1]).add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- MCFG_DEVICE_ADD("dac3", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ DMADAC(config, m_dmadac[2]).add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- MCFG_DEVICE_ADD("dac4", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+ DMADAC(config, m_dmadac[3]).add_route(ALL_OUTPUTS, "rspeaker", 0.50);
#else
- MCFG_DEVICE_ADD("dac1", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ DMADAC(config, m_dmadac[0]).add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- MCFG_DEVICE_ADD("dac2", DMADAC)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ DMADAC(config, m_dmadac[1]).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
#endif
-MACHINE_CONFIG_END
+}
DEFINE_DEVICE_TYPE(ATARI_CAGE_SEATTLE, atari_cage_seattle_device, "atari_cage_seattle", "Atari CAGE Seattle")
@@ -669,10 +663,9 @@ atari_cage_seattle_device::atari_cage_seattle_device(const machine_config &mconf
//-------------------------------------------------
-MACHINE_CONFIG_START(atari_cage_seattle_device::device_add_mconfig)
-
+void atari_cage_seattle_device::device_add_mconfig(machine_config &config)
+{
atari_cage_device::device_add_mconfig(config);
- MCFG_DEVICE_MODIFY("cpu")
- MCFG_DEVICE_PROGRAM_MAP(cage_map_seattle)
-MACHINE_CONFIG_END
+ m_cpu->set_addrmap(AS_PROGRAM, &atari_cage_seattle_device::cage_map_seattle);
+}
diff --git a/src/mame/audio/cage.h b/src/mame/audio/cage.h
index e8230aae377..66c86f06cba 100644
--- a/src/mame/audio/cage.h
+++ b/src/mame/audio/cage.h
@@ -64,9 +64,10 @@ protected:
TIMER_DEVICE_CALLBACK_MEMBER( dma_timer_callback );
TIMER_DEVICE_CALLBACK_MEMBER( cage_timer_callback );
+ required_device<tms32031_device> m_cpu;
+
private:
required_shared_ptr<uint32_t> m_cageram;
- required_device<tms32031_device> m_cpu;
required_device<generic_latch_16_device> m_soundlatch;
required_device<timer_device> m_dma_timer;
required_device_array<timer_device, 2> m_timer;
diff --git a/src/mame/drivers/1942.cpp b/src/mame/drivers/1942.cpp
index a063ee16ef9..02b98a77e63 100644
--- a/src/mame/drivers/1942.cpp
+++ b/src/mame/drivers/1942.cpp
@@ -568,7 +568,7 @@ MACHINE_CONFIG_START(_1942_state::_1942)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CPU_CLOCK) /* 4 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(_1942_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", _1942_state, _1942_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(_1942_state::_1942_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK) /* 3 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(sound_map)
diff --git a/src/mame/drivers/3do.cpp b/src/mame/drivers/3do.cpp
index 4171a87cda7..401d7ab40b1 100644
--- a/src/mame/drivers/3do.cpp
+++ b/src/mame/drivers/3do.cpp
@@ -162,7 +162,7 @@ MACHINE_CONFIG_START(_3do_state::_3do)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x16", _3do_state, timer_x16_cb, attotime::from_hz(12000)) // TODO: timing
+ TIMER(config, "timer_x16").configure_periodic(FUNC(_3do_state::timer_x16_cb), attotime::from_hz(12000)); // TODO: timing
MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_RAW_PARAMS( X2_CLOCK_NTSC / 2, 1592, 254, 1534, 263, 22, 262 )
@@ -180,7 +180,7 @@ MACHINE_CONFIG_START(_3do_state::_3do_pal)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x16", _3do_state, timer_x16_cb, attotime::from_hz(12000)) // TODO: timing
+ TIMER(config, "timer_x16").configure_periodic(FUNC(_3do_state::timer_x16_cb), attotime::from_hz(12000)); // TODO: timing
MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_RAW_PARAMS( X2_CLOCK_PAL / 2, 1592, 254, 1534, 263, 22, 262 ) // TODO: proper params
diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp
index 2b5f0279ba1..8342418f444 100644
--- a/src/mame/drivers/abc80x.cpp
+++ b/src/mame/drivers/abc80x.cpp
@@ -1065,7 +1065,7 @@ MACHINE_CONFIG_START(abc800_state::common)
m_ctc->zc_callback<1>().set(FUNC(abc800_state::ctc_z1_w));
m_ctc->zc_callback<2>().set(m_dart, FUNC(z80dart_device::rxca_w));
m_ctc->zc_callback<2>().append(m_dart, FUNC(z80dart_device::txca_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_CTC_TAG, abc800_state, ctc_tick, attotime::from_hz(ABC800_X01/2/2/2))
+ TIMER(config, TIMER_CTC_TAG).configure_periodic(FUNC(abc800_state::ctc_tick), attotime::from_hz(ABC800_X01/2/2/2));
Z80SIO(config, m_sio, ABC800_X01/2/2);
m_sio->out_txda_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
@@ -1085,7 +1085,7 @@ MACHINE_CONFIG_START(abc800_state::common)
MCFG_CASSETTE_ADD(CASSETTE_TAG)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
- MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_CASSETTE_TAG, abc800_state, cassette_input_tick, attotime::from_hz(44100))
+ TIMER(config, TIMER_CASSETTE_TAG).configure_periodic(FUNC(abc800_state::cassette_input_tick), attotime::from_hz(44100));
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr));
rs232a.rxd_handler().set(m_dart, FUNC(z80dart_device::rxa_w));
diff --git a/src/mame/drivers/acommand.cpp b/src/mame/drivers/acommand.cpp
index 2f3174ff42d..9864cbdb312 100644
--- a/src/mame/drivers/acommand.cpp
+++ b/src/mame/drivers/acommand.cpp
@@ -473,7 +473,7 @@ MACHINE_CONFIG_START(acommand_state::acommand)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",M68000,12000000)
MCFG_DEVICE_PROGRAM_MAP(acommand_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", acommand_state, acommand_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(acommand_state::acommand_scanline), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/acrnsys1.cpp b/src/mame/drivers/acrnsys1.cpp
index 0d33002b5b0..3067715fac0 100644
--- a/src/mame/drivers/acrnsys1.cpp
+++ b/src/mame/drivers/acrnsys1.cpp
@@ -285,8 +285,8 @@ MACHINE_CONFIG_START(acrnsys1_state::acrnsys1)
MCFG_CASSETTE_ADD( "cassette" )
- MCFG_TIMER_DRIVER_ADD_PERIODIC("acrnsys1_c", acrnsys1_state, acrnsys1_c, attotime::from_hz(4800))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("acrnsys1_p", acrnsys1_state, acrnsys1_p, attotime::from_hz(40000))
+ TIMER(config, "acrnsys1_c").configure_periodic(FUNC(acrnsys1_state::acrnsys1_c), attotime::from_hz(4800));
+ TIMER(config, "acrnsys1_p").configure_periodic(FUNC(acrnsys1_state::acrnsys1_p), attotime::from_hz(40000));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/agat.cpp b/src/mame/drivers/agat.cpp
index a0560a020af..bba408474a4 100644
--- a/src/mame/drivers/agat.cpp
+++ b/src/mame/drivers/agat.cpp
@@ -1081,7 +1081,7 @@ MACHINE_CONFIG_START(agat7_state::agat7)
MCFG_DEVICE_PROGRAM_MAP(agat7_map)
MCFG_DEVICE_VBLANK_INT_DRIVER(A7_VIDEO_TAG ":a7screen", agat7_state, agat_vblank)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", agat7_state, timer_irq, A7_VIDEO_TAG ":a7screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(agat7_state::timer_irq), A7_VIDEO_TAG ":a7screen", 0, 1);
MCFG_DEVICE_ADD(m_video, AGAT7VIDEO, RAM_TAG, "gfx1")
@@ -1112,7 +1112,7 @@ MACHINE_CONFIG_START(agat7_state::agat7)
m_ay3600->ako().set(FUNC(agat7_state::ay3600_ako_w));
/* repeat timer. 10 Hz per Mymrin's book */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("repttmr", agat7_state, ay3600_repeat, attotime::from_hz(10))
+ TIMER(config, "repttmr").configure_periodic(FUNC(agat7_state::ay3600_repeat), attotime::from_hz(10));
/*
* slot 0 is reserved for SECAM encoder or Apple II compat card.
diff --git a/src/mame/drivers/airbustr.cpp b/src/mame/drivers/airbustr.cpp
index 88294b4bdc4..0114ab2e3e6 100644
--- a/src/mame/drivers/airbustr.cpp
+++ b/src/mame/drivers/airbustr.cpp
@@ -568,7 +568,7 @@ MACHINE_CONFIG_START(airbustr_state::airbustr)
MCFG_DEVICE_ADD("master", Z80, XTAL(12'000'000)/2) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(master_map)
MCFG_DEVICE_IO_MAP(master_io_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", airbustr_state, airbustr_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(airbustr_state::airbustr_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", Z80, XTAL(12'000'000)/2) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(slave_map)
diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp
index bf405a0441c..efcd04d37c0 100644
--- a/src/mame/drivers/airraid.cpp
+++ b/src/mame/drivers/airraid.cpp
@@ -394,7 +394,7 @@ MACHINE_CONFIG_START(airraid_state::airraid)
/* basic machine hardware */
MCFG_DEVICE_ADD(m_maincpu, Z80,XTAL(12'000'000)/2) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(airraid_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", airraid_state, cshooter_scanline, "airraid_vid:screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(airraid_state::cshooter_scanline), "airraid_vid:screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(14'318'181)/4) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(airraid_sound_map)
diff --git a/src/mame/drivers/albazc.cpp b/src/mame/drivers/albazc.cpp
index 35f5d547210..649759b1b68 100644
--- a/src/mame/drivers/albazc.cpp
+++ b/src/mame/drivers/albazc.cpp
@@ -284,7 +284,7 @@ MACHINE_CONFIG_START(albazc_state::hanaroku)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH );
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp
index d173a2928c9..4c8fe4aeb54 100644
--- a/src/mame/drivers/alphatro.cpp
+++ b/src/mame/drivers/alphatro.cpp
@@ -785,8 +785,8 @@ MACHINE_CONFIG_START(alphatro_state::alphatro)
MCFG_CASSETTE_INTERFACE("alphatro_cass")
MCFG_SOFTWARE_LIST_ADD("cass_list","alphatro_cass")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_c", alphatro_state, timer_c, attotime::from_hz(4800))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", alphatro_state, timer_p, attotime::from_hz(40000))
+ TIMER(config, "timer_c").configure_periodic(FUNC(alphatro_state::timer_c), attotime::from_hz(4800));
+ TIMER(config, "timer_p").configure_periodic(FUNC(alphatro_state::timer_p), attotime::from_hz(40000));
RAM(config, "ram").set_default_size("64K");
diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp
index 85bc8c13be9..d1caea3af5c 100644
--- a/src/mame/drivers/amusco.cpp
+++ b/src/mame/drivers/amusco.cpp
@@ -571,7 +571,7 @@ MACHINE_CONFIG_START(amusco_state::amusco)
i8155b.in_pc_callback().set(m_rtc, FUNC(msm5832_device::data_r));
i8155b.out_pc_callback().set(m_rtc, FUNC(msm5832_device::data_w));
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(30), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(30), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/applix.cpp b/src/mame/drivers/applix.cpp
index 2176f468202..2481a2707da 100644
--- a/src/mame/drivers/applix.cpp
+++ b/src/mame/drivers/applix.cpp
@@ -918,7 +918,7 @@ MACHINE_CONFIG_START(applix_state::applix)
MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", applix_floppies, "35dd", applix_state::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("applix_c", applix_state, cass_timer, attotime::from_hz(100000))
+ TIMER(config, "applix_c").configure_periodic(FUNC(applix_state::cass_timer), attotime::from_hz(100000));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/astrcorp.cpp b/src/mame/drivers/astrcorp.cpp
index 9ed45d4c9ba..2185ad065ed 100644
--- a/src/mame/drivers/astrcorp.cpp
+++ b/src/mame/drivers/astrcorp.cpp
@@ -580,13 +580,13 @@ MACHINE_CONFIG_START(astrocorp_state::skilldrp)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2) // JX-1689F1028N GRX586.V5
MCFG_DEVICE_PROGRAM_MAP(skilldrp_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", astrocorp_state, skilldrp_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(astrocorp_state::skilldrp_scanline), "screen", 0, 1);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_16BIT(config, "eeprom");
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
+ TICKET_DISPENSER(config, m_ticket, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW );
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW );
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/astrof.cpp b/src/mame/drivers/astrof.cpp
index 954418c4465..44cb8ea63e4 100644
--- a/src/mame/drivers/astrof.cpp
+++ b/src/mame/drivers/astrof.cpp
@@ -913,17 +913,17 @@ INPUT_PORTS_END
*
*************************************/
-MACHINE_CONFIG_START(astrof_state::base)
-
+void astrof_state::base(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M6502, MAIN_CPU_CLOCK)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("vblank", astrof_state, irq_callback, "screen", VBSTART, 0)
+ M6502(config, m_maincpu, MAIN_CPU_CLOCK);
+ TIMER(config, "vblank").configure_scanline(FUNC(astrof_state::irq_callback), "screen", VBSTART, 0);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
-MACHINE_CONFIG_END
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
+}
MACHINE_CONFIG_START(astrof_state::astrof)
diff --git a/src/mame/drivers/atari_s1.cpp b/src/mame/drivers/atari_s1.cpp
index f8d785178b0..f03a13e8663 100644
--- a/src/mame/drivers/atari_s1.cpp
+++ b/src/mame/drivers/atari_s1.cpp
@@ -468,8 +468,8 @@ MACHINE_CONFIG_START(atari_s1_state::atari_s1)
/* Video */
config.set_default_layout(layout_atari_s1);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi", atari_s1_state, nmi, attotime::from_hz(NMI_INT))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_s", atari_s1_state, timer_s, attotime::from_hz(AUDIO_CLK))
+ TIMER(config, "nmi").configure_periodic(FUNC(atari_s1_state::nmi), attotime::from_hz(NMI_INT));
+ TIMER(config, "timer_s").configure_periodic(FUNC(atari_s1_state::timer_s), attotime::from_hz(AUDIO_CLK));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(atari_s1_state::atarians)
diff --git a/src/mame/drivers/atari_s2.cpp b/src/mame/drivers/atari_s2.cpp
index ff198642ed3..f0e0cc7b714 100644
--- a/src/mame/drivers/atari_s2.cpp
+++ b/src/mame/drivers/atari_s2.cpp
@@ -499,8 +499,8 @@ MACHINE_CONFIG_START(atari_s2_state::atari_s2)
/* Video */
config.set_default_layout(layout_atari_s2);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", atari_s2_state, irq, attotime::from_hz(XTAL(4'000'000) / 8192))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_s", atari_s2_state, timer_s, attotime::from_hz(150000))
+ TIMER(config, "irq").configure_periodic(FUNC(atari_s2_state::irq), attotime::from_hz(XTAL(4'000'000) / 8192));
+ TIMER(config, "timer_s").configure_periodic(FUNC(atari_s2_state::timer_s), attotime::from_hz(150000));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(atari_s2_state::atari_s3)
diff --git a/src/mame/drivers/atarisy1.cpp b/src/mame/drivers/atarisy1.cpp
index 251ecf21fb5..2c56c093bb1 100644
--- a/src/mame/drivers/atarisy1.cpp
+++ b/src/mame/drivers/atarisy1.cpp
@@ -747,9 +747,9 @@ MACHINE_CONFIG_START(atarisy1_state::atarisy1)
WATCHDOG_TIMER(config, "watchdog");
- MCFG_TIMER_DRIVER_ADD("scan_timer", atarisy1_state, atarisy1_int3_callback)
- MCFG_TIMER_DRIVER_ADD("int3off_timer", atarisy1_state, atarisy1_int3off_callback)
- MCFG_TIMER_DRIVER_ADD("yreset_timer", atarisy1_state, atarisy1_reset_yscroll_callback)
+ TIMER(config, m_scanline_timer).configure_generic(FUNC(atarisy1_state::atarisy1_int3_callback));
+ TIMER(config, m_int3off_timer).configure_generic(FUNC(atarisy1_state::atarisy1_int3off_callback));
+ TIMER(config, m_yscroll_reset_timer).configure_generic(FUNC(atarisy1_state::atarisy1_reset_yscroll_callback));
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_atarisy1)
diff --git a/src/mame/drivers/atom.cpp b/src/mame/drivers/atom.cpp
index ca6e0a704b0..93f13d51719 100644
--- a/src/mame/drivers/atom.cpp
+++ b/src/mame/drivers/atom.cpp
@@ -726,7 +726,7 @@ MACHINE_CONFIG_START(atom_state::atom)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("hz2400", atom_state, cassette_output_tick, attotime::from_hz(4806))
+ TIMER(config, "hz2400").configure_periodic(FUNC(atom_state::cassette_output_tick), attotime::from_hz(4806));
via6522_device &via(VIA6522(config, R6522_TAG, X2/4));
via.writepa_handler().set("cent_data_out", FUNC(output_latch_device::bus_w));
@@ -834,7 +834,7 @@ MACHINE_CONFIG_START(atom_state::atombb)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("hz2400", atom_state, cassette_output_tick, attotime::from_hz(4806))
+ TIMER(config, "hz2400").configure_periodic(FUNC(atom_state::cassette_output_tick), attotime::from_hz(4806));
via6522_device &via(VIA6522(config, R6522_TAG, X2/4));
via.writepa_handler().set("cent_data_out", FUNC(output_latch_device::bus_w));
diff --git a/src/mame/drivers/avigo.cpp b/src/mame/drivers/avigo.cpp
index 797564ebbf9..4fc83c27684 100644
--- a/src/mame/drivers/avigo.cpp
+++ b/src/mame/drivers/avigo.cpp
@@ -805,10 +805,10 @@ MACHINE_CONFIG_START(avigo_state::avigo)
NVRAM(config, "nvram").set_custom_handler(FUNC(avigo_state::nvram_init));
// IRQ 1 is used for scan the pen and for cursor blinking
- MCFG_TIMER_DRIVER_ADD_PERIODIC("scan_timer", avigo_state, avigo_scan_timer, attotime::from_hz(50))
+ TIMER(config, "scan_timer").configure_periodic(FUNC(avigo_state::avigo_scan_timer), attotime::from_hz(50));
// IRQ 4 is generated every second, used for auto power off
- MCFG_TIMER_DRIVER_ADD_PERIODIC("1hz_timer", avigo_state, avigo_1hz_timer, attotime::from_hz(1))
+ TIMER(config, "1hz_timer").configure_periodic(FUNC(avigo_state::avigo_1hz_timer), attotime::from_hz(1));
/* quickload */
MCFG_QUICKLOAD_ADD("quickload", avigo_state, avigo, "app", 0)
diff --git a/src/mame/drivers/badlands.cpp b/src/mame/drivers/badlands.cpp
index 9c5eedaa968..544c71dde06 100644
--- a/src/mame/drivers/badlands.cpp
+++ b/src/mame/drivers/badlands.cpp
@@ -449,7 +449,7 @@ MACHINE_CONFIG_START(badlands_state::badlands)
MCFG_DEVICE_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
MCFG_DEVICE_PROGRAM_MAP(audio_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", badlands_state, sound_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(badlands_state::sound_scanline), "screen", 0, 1);
MCFG_MACHINE_START_OVERRIDE(badlands_state,badlands)
MCFG_MACHINE_RESET_OVERRIDE(badlands_state,badlands)
diff --git a/src/mame/drivers/badlandsbl.cpp b/src/mame/drivers/badlandsbl.cpp
index a4c5acfd147..25b6f39e547 100644
--- a/src/mame/drivers/badlandsbl.cpp
+++ b/src/mame/drivers/badlandsbl.cpp
@@ -227,7 +227,7 @@ MACHINE_CONFIG_START(badlandsbl_state::badlandsb)
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(20'000'000)/12) /* Divisor estimated */
MCFG_DEVICE_PROGRAM_MAP(bootleg_audio_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", badlandsbl_state, bootleg_sound_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(badlandsbl_state::bootleg_sound_scanline), "screen", 0, 1);
// MCFG_QUANTUM_PERFECT_CPU("maincpu")
diff --git a/src/mame/drivers/beathead.cpp b/src/mame/drivers/beathead.cpp
index 23456f11fdc..7bafc37d61e 100644
--- a/src/mame/drivers/beathead.cpp
+++ b/src/mame/drivers/beathead.cpp
@@ -343,7 +343,7 @@ MACHINE_CONFIG_START(beathead_state::beathead)
WATCHDOG_TIMER(config, "watchdog");
- MCFG_TIMER_DRIVER_ADD(m_scan_timer, beathead_state, scanline_callback)
+ TIMER(config, m_scan_timer).configure_generic(FUNC(beathead_state::scanline_callback));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp
index 1c80379e0a9..c5afbeab2fd 100644
--- a/src/mame/drivers/bionicc.cpp
+++ b/src/mame/drivers/bionicc.cpp
@@ -393,7 +393,7 @@ MACHINE_CONFIG_START(bionicc_state::bionicc)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2) /* 12 MHz - verified in schematics */
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bionicc_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(bionicc_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(14'318'181) / 4) /* EXO3 C,B=GND, A=5V ==> Divisor 2^2 */
diff --git a/src/mame/drivers/bladestl.cpp b/src/mame/drivers/bladestl.cpp
index 8c64fb7ad7d..449d74bd02a 100644
--- a/src/mame/drivers/bladestl.cpp
+++ b/src/mame/drivers/bladestl.cpp
@@ -308,7 +308,7 @@ MACHINE_CONFIG_START(bladestl_state::bladestl)
/* basic machine hardware */
MCFG_DEVICE_ADD(m_maincpu, HD6309E, XTAL(24'000'000) / 8) // divider not verified (from 007342 custom)
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bladestl_state, bladestl_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(bladestl_state::bladestl_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD(m_audiocpu, MC6809E, XTAL(24'000'000) / 16)
MCFG_DEVICE_PROGRAM_MAP(sound_map)
diff --git a/src/mame/drivers/blitz68k.cpp b/src/mame/drivers/blitz68k.cpp
index 944a3cdd7c8..0ce1d248c3e 100644
--- a/src/mame/drivers/blitz68k.cpp
+++ b/src/mame/drivers/blitz68k.cpp
@@ -1783,7 +1783,7 @@ MACHINE_CONFIG_START(blitz68k_state::steaser)
MCFG_DEVICE_PROGRAM_MAP(steaser_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blitz68k_state, irq5_line_hold) //3, 4 & 6 used, mcu comms?
- MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", blitz68k_state, steaser_mcu_sim, attotime::from_hz(10000))
+ TIMER(config, "coinsim").configure_periodic(FUNC(blitz68k_state::steaser_mcu_sim), attotime::from_hz(10000));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(blitz68k_state::cjffruit)
diff --git a/src/mame/drivers/blockout.cpp b/src/mame/drivers/blockout.cpp
index 3249c589183..9ffdb8bde97 100644
--- a/src/mame/drivers/blockout.cpp
+++ b/src/mame/drivers/blockout.cpp
@@ -309,7 +309,7 @@ MACHINE_CONFIG_START(blockout_state::blockout)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, MAIN_CLOCK) /* MRH - 8.76 makes gfx/adpcm samples sync better -- but 10 is correct speed*/
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", blockout_state, blockout_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(blockout_state::blockout_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, AUDIO_CLOCK) /* 3.579545 MHz */
MCFG_DEVICE_PROGRAM_MAP(audio_map)
diff --git a/src/mame/drivers/blw700i.cpp b/src/mame/drivers/blw700i.cpp
index b0471c08b22..088a1d60ff0 100644
--- a/src/mame/drivers/blw700i.cpp
+++ b/src/mame/drivers/blw700i.cpp
@@ -272,7 +272,7 @@ MACHINE_CONFIG_START(lw700i_state::lw700i)
MCFG_DEVICE_ADD("maincpu", H83003, XTAL(16'000'000))
MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_DEVICE_IO_MAP(io_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lw700i_state, vbl_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(lw700i_state::vbl_interrupt), "screen", 0, 1);
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/bml3.cpp b/src/mame/drivers/bml3.cpp
index 600ee5e2b3b..87df85d73aa 100644
--- a/src/mame/drivers/bml3.cpp
+++ b/src/mame/drivers/bml3.cpp
@@ -984,9 +984,9 @@ MACHINE_CONFIG_START(bml3_state::bml3_common)
// fire once per scan of an individual key
// According to the service manual (p.65), the keyboard timer is driven by the horizontal video sync clock.
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", bml3_state, keyboard_callback, attotime::from_hz(H_CLOCK/2))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("bml3_c", bml3_state, bml3_c, attotime::from_hz(4800))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("bml3_p", bml3_state, bml3_p, attotime::from_hz(40000))
+ TIMER(config, "keyboard_timer").configure_periodic(FUNC(bml3_state::keyboard_callback), attotime::from_hz(H_CLOCK/2));
+ TIMER(config, "bml3_c").configure_periodic(FUNC(bml3_state::bml3_c), attotime::from_hz(4800));
+ TIMER(config, "bml3_p").configure_periodic(FUNC(bml3_state::bml3_p), attotime::from_hz(40000));
pia6821_device &pia(PIA6821(config, "pia", 0));
pia.writepa_handler().set(FUNC(bml3_state::bml3_piaA_w));
diff --git a/src/mame/drivers/bnstars.cpp b/src/mame/drivers/bnstars.cpp
index 00d1aaf266e..2da7d1868b3 100644
--- a/src/mame/drivers/bnstars.cpp
+++ b/src/mame/drivers/bnstars.cpp
@@ -816,7 +816,7 @@ MACHINE_CONFIG_START(bnstars_state::bnstars)
MCFG_DEVICE_PROGRAM_MAP(bnstars_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(ms32_state,irq_callback)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bnstars_state, ms32_interrupt, "lscreen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(bnstars_state::ms32_interrupt), "lscreen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) // Unverified; it's possibly higher than 4MHz
MCFG_DEVICE_PROGRAM_MAP(bnstars_sound_map)
diff --git a/src/mame/drivers/bsktball.cpp b/src/mame/drivers/bsktball.cpp
index 14787c96615..e20d8bf040f 100644
--- a/src/mame/drivers/bsktball.cpp
+++ b/src/mame/drivers/bsktball.cpp
@@ -243,7 +243,7 @@ MACHINE_CONFIG_START(bsktball_state::bsktball)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6502,750000)
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bsktball_state, bsktball_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(bsktball_state::bsktball_scanline), "screen", 0, 1);
f9334_device &outlatch(F9334(config, "outlatch")); // M6
outlatch.q_out_cb<1>().set_nop(); // Coin Counter
diff --git a/src/mame/drivers/btime.cpp b/src/mame/drivers/btime.cpp
index 2cdb297dbe8..2998cf45386 100644
--- a/src/mame/drivers/btime.cpp
+++ b/src/mame/drivers/btime.cpp
@@ -1285,7 +1285,7 @@ MACHINE_CONFIG_START(btime_state::btime)
MCFG_DEVICE_ADD("audiocpu", M6502, HCLK1/3/2)
MCFG_DEVICE_PROGRAM_MAP(audio_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("8vck", btime_state, audio_nmi_gen, "screen", 0, 8)
+ TIMER(config, "8vck").configure_scanline(FUNC(btime_state::audio_nmi_gen), "screen", 0, 8);
INPUT_MERGER_ALL_HIGH(config, "audionmi").output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
diff --git a/src/mame/drivers/buggychl.cpp b/src/mame/drivers/buggychl.cpp
index 475fe490f3d..1b3e25cc09a 100644
--- a/src/mame/drivers/buggychl.cpp
+++ b/src/mame/drivers/buggychl.cpp
@@ -520,7 +520,7 @@ void buggychl_state::buggychl(machine_config &config)
Z80(config, m_audiocpu, 8_MHz_XTAL/2); /* 4 MHz according to schematics */
m_audiocpu->set_addrmap(AS_PROGRAM, &buggychl_state::sound_map);
m_audiocpu->set_periodic_int(FUNC(buggychl_state::irq0_line_hold), attotime::from_hz(8_MHz_XTAL/2/2/256/64)); // timer irq
- //MCFG_TIMER_DEVICE_ADD_PERIODIC("soundirq", "audiocpu", irq0_line_hold, 8_MHz_XTAL/2/2/256/64)
+ //TIMER(config, "soundirq").configure_periodic(m_audiocpu, FUNC(buggychl_state::irq0_line_hold), 8_MHz_XTAL/2/2/256/64);
// The schematics (which are at least partly for the wrong sound board) show a configurable timer with rates of
// 61.035Hz (8_MHz_XTAL/2/2/256/128)
// or 122.0Hz (8_MHz_XTAL/2/2/256/64)
diff --git a/src/mame/drivers/bullet.cpp b/src/mame/drivers/bullet.cpp
index 9c487187e11..4e1e93a660b 100644
--- a/src/mame/drivers/bullet.cpp
+++ b/src/mame/drivers/bullet.cpp
@@ -1120,7 +1120,7 @@ MACHINE_CONFIG_START(bullet_state::bullet)
m_ctc->zc_callback<1>().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", bullet_state, ctc_tick, attotime::from_hz(4.9152_MHz_XTAL /4))
+ TIMER(config, "ctc").configure_periodic(FUNC(bullet_state::ctc_tick), attotime::from_hz(4.9152_MHz_XTAL / 4));
Z80DART(config, m_dart, 16_MHz_XTAL / 4);
m_dart->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
@@ -1199,7 +1199,7 @@ MACHINE_CONFIG_START(bulletf_state::bulletf)
m_ctc->zc_callback<1>().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", bullet_state, ctc_tick, attotime::from_hz(4.9152_MHz_XTAL / 4))
+ TIMER(config, "ctc").configure_periodic(FUNC(bullet_state::ctc_tick), attotime::from_hz(4.9152_MHz_XTAL / 4));
Z80DART(config, m_dart, 16_MHz_XTAL / 4);
m_dart->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp
index 8ac487f27c4..63ab41c8e12 100644
--- a/src/mame/drivers/busicom.cpp
+++ b/src/mame/drivers/busicom.cpp
@@ -244,7 +244,7 @@ MACHINE_CONFIG_START(busicom_state::busicom)
PALETTE(config, m_palette, FUNC(busicom_state::busicom_palette), 16);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("busicom_timer", busicom_state, timer_callback, attotime::from_msec(28*2))
+ TIMER(config, "busicom_timer").configure_periodic(FUNC(busicom_state::timer_callback), attotime::from_msec(28*2));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp
index cd9f2ba1423..5da247d6ef4 100644
--- a/src/mame/drivers/bw12.cpp
+++ b/src/mame/drivers/bw12.cpp
@@ -579,7 +579,7 @@ MACHINE_CONFIG_START(bw12_state::common)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* devices */
- MCFG_TIMER_DRIVER_ADD(FLOPPY_TIMER_TAG, bw12_state, floppy_motor_off_tick)
+ TIMER(config, FLOPPY_TIMER_TAG).configure_generic(FUNC(bw12_state::floppy_motor_off_tick));
UPD765A(config, m_fdc, 8'000'000, false, true);
PIA6821(config, m_pia, 0);
diff --git a/src/mame/drivers/by17.cpp b/src/mame/drivers/by17.cpp
index 63a46128e03..4c3b1f4c25f 100644
--- a/src/mame/drivers/by17.cpp
+++ b/src/mame/drivers/by17.cpp
@@ -993,10 +993,11 @@ void by17_state::machine_reset()
-MACHINE_CONFIG_START(by17_state::by17)
+void by17_state::by17(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M6800, 530000) // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz
- MCFG_DEVICE_PROGRAM_MAP(by17_map)
+ M6800(config, m_maincpu, 530000); // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz
+ m_maincpu->set_addrmap(AS_PROGRAM, &by17_state::by17_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 'F' filled causes Credit Display to be blank on first startup
@@ -1018,8 +1019,8 @@ MACHINE_CONFIG_START(by17_state::by17)
m_pia_u10->cb2_handler().set(FUNC(by17_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z_freq", by17_state, timer_z_freq, attotime::from_hz(100)) // Mains Line Frequency * 2
- MCFG_TIMER_DRIVER_ADD(m_zero_crossing_active_timer, by17_state, timer_z_pulse) // Active pulse length from Zero Crossing detector
+ TIMER(config, "timer_z_freq").configure_periodic(FUNC(by17_state::timer_z_freq), attotime::from_hz(100)); // Mains Line Frequency * 2
+ TIMER(config, m_zero_crossing_active_timer).configure_generic(FUNC(by17_state::timer_z_pulse)); // Active pulse length from Zero Crossing detector
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(by17_state::u11_a_r));
@@ -1031,9 +1032,9 @@ MACHINE_CONFIG_START(by17_state::by17)
m_pia_u11->cb2_handler().set(FUNC(by17_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d_freq", by17_state, u11_timer, attotime::from_hz(317)) // 555 timer
- MCFG_TIMER_DRIVER_ADD(m_display_refresh_timer, by17_state, timer_d_pulse) // 555 Active pulse length
-MACHINE_CONFIG_END
+ TIMER(config, "timer_d_freq").configure_periodic(FUNC(by17_state::u11_timer), attotime::from_hz(317)); // 555 timer
+ TIMER(config, m_display_refresh_timer).configure_generic(FUNC(by17_state::timer_d_pulse)); // 555 Active pulse length
+}
diff --git a/src/mame/drivers/by35.cpp b/src/mame/drivers/by35.cpp
index 4b4cb22de01..7ae2922d4e1 100644
--- a/src/mame/drivers/by35.cpp
+++ b/src/mame/drivers/by35.cpp
@@ -1117,8 +1117,8 @@ MACHINE_CONFIG_START(by35_state::by35)
m_pia_u10->cb2_handler().set(FUNC(by35_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z_freq", by35_state, timer_z_freq, attotime::from_hz(100)) // Mains Line Frequency * 2
- MCFG_TIMER_DRIVER_ADD(m_zero_crossing_active_timer, by35_state, timer_z_pulse) // Active pulse length from Zero Crossing detector
+ TIMER(config, "timer_z_freq").configure_periodic(FUNC(by35_state::timer_z_freq), attotime::from_hz(100)); // Mains Line Frequency * 2
+ TIMER(config, m_zero_crossing_active_timer).configure_generic(FUNC(by35_state::timer_z_pulse)); // Active pulse length from Zero Crossing detector
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(by35_state::u11_a_r));
@@ -1130,8 +1130,8 @@ MACHINE_CONFIG_START(by35_state::by35)
m_pia_u11->cb2_handler().set(FUNC(by35_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d_freq", by35_state, u11_timer, attotime::from_hz(317)) // 555 timer
- MCFG_TIMER_DRIVER_ADD(m_display_refresh_timer, by35_state, timer_d_pulse) // 555 Active pulse length
+ TIMER(config, "timer_d_freq").configure_periodic(FUNC(by35_state::u11_timer), attotime::from_hz(317)); // 555 timer
+ TIMER(config, m_display_refresh_timer).configure_generic(FUNC(by35_state::timer_d_pulse)); // 555 Active pulse length
MACHINE_CONFIG_END
MACHINE_CONFIG_START(as2888_state::as2888_audio)
@@ -1142,8 +1142,8 @@ MACHINE_CONFIG_START(as2888_state::as2888_audio)
m_pia_u11->writepb_handler().set(FUNC(as2888_state::u11_b_as2888_w));
m_pia_u11->cb2_handler().set(FUNC(as2888_state::u11_cb2_as2888_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_s_freq", as2888_state, timer_s, attotime::from_hz(353000)) // Inverter clock on AS-2888 sound board
- MCFG_TIMER_DRIVER_ADD(m_snd_sustain_timer, as2888_state, timer_as2888)
+ TIMER(config, "timer_s_freq").configure_periodic(FUNC(as2888_state::timer_s), attotime::from_hz(353000)); // Inverter clock on AS-2888 sound board
+ TIMER(config, m_snd_sustain_timer).configure_generic(FUNC(as2888_state::timer_as2888));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/by6803.cpp b/src/mame/drivers/by6803.cpp
index 0ff8dfa170b..d5ca10888f6 100644
--- a/src/mame/drivers/by6803.cpp
+++ b/src/mame/drivers/by6803.cpp
@@ -375,7 +375,8 @@ TIMER_DEVICE_CALLBACK_MEMBER( by6803_state::pia0_timer )
m_pia0->cb1_w(m_pia0_timer);
}
-MACHINE_CONFIG_START(by6803_state::by6803)
+void by6803_state::by6803(machine_config &config)
+{
/* basic machine hardware */
M6803(config, m_maincpu, XTAL(3'579'545));
m_maincpu->set_addrmap(AS_PROGRAM, &by6803_state::by6803_map);
@@ -402,7 +403,7 @@ MACHINE_CONFIG_START(by6803_state::by6803)
m_pia0->cb2_handler().set(FUNC(by6803_state::pia0_cb2_w));
m_pia0->irqa_handler().set_inputline("maincpu", M6803_IRQ_LINE);
m_pia0->irqb_handler().set_inputline("maincpu", M6803_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z", by6803_state, pia0_timer, attotime::from_hz(120)) // mains freq*2
+ TIMER(config, "timer_z").configure_periodic(FUNC(by6803_state::pia0_timer), attotime::from_hz(120)); // mains freq*2
PIA6821(config, m_pia1, 0);
m_pia1->readpa_handler().set(FUNC(by6803_state::pia1_a_r));
@@ -410,10 +411,9 @@ MACHINE_CONFIG_START(by6803_state::by6803)
m_pia1->writepb_handler().set(FUNC(by6803_state::pia1_b_w));
m_pia1->cb2_handler().set(FUNC(by6803_state::pia1_cb2_w));
- //MCFG_SPEAKER_STANDARD_MONO("speaker")
- //MCFG_DEVICE_ADD("tcs", MIDWAY_TURBO_CHEAP_SQUEAK) // Cheap Squeak Turbo
- //MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
-MACHINE_CONFIG_END
+ //SPEAKER(config, "mono").front_center();
+ //MIDWAY_TURBO_CHEAP_SQUEAK(config, "tcs").add_route(ALL_OUTPUTS, "speaker", 1.0); // Cheap Squeak Turbo
+}
/*-----------------------------------------------------------
diff --git a/src/mame/drivers/byvid.cpp b/src/mame/drivers/byvid.cpp
index 7799837e073..ad017774b79 100644
--- a/src/mame/drivers/byvid.cpp
+++ b/src/mame/drivers/byvid.cpp
@@ -781,7 +781,7 @@ MACHINE_CONFIG_START(by133_state::babypac)
m_pia_u10->cb2_handler().set(FUNC(by133_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("babypac1", by133_state, u10_timer, attotime::from_hz(120)) // mains freq*2
+ TIMER(config, "babypac1").configure_periodic(FUNC(by133_state::u10_timer), attotime::from_hz(120)); // mains freq*2
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(by133_state::u11_a_r));
@@ -792,7 +792,7 @@ MACHINE_CONFIG_START(by133_state::babypac)
m_pia_u11->cb2_handler().set(FUNC(by133_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("babypac2", by133_state, u11_timer, attotime::from_hz(634)) // 555 timer*2
+ TIMER(config, "babypac2").configure_periodic(FUNC(by133_state::u11_timer), attotime::from_hz(634)); // 555 timer*2
/* video hardware */
TMS9928A(config, m_crtc, XTAL(10'738'635)).set_screen("screen");
diff --git a/src/mame/drivers/calcune.cpp b/src/mame/drivers/calcune.cpp
index f76512a9929..30b07a721b9 100644
--- a/src/mame/drivers/calcune.cpp
+++ b/src/mame/drivers/calcune.cpp
@@ -290,8 +290,8 @@ MACHINE_CONFIG_START(calcune_state::calcune)
m_vdp2->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
m_vdp2->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
- MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
- MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer2", "gen_vdp2", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
+ TIMER(config, "scantimer").configure_scanline("gen_vdp", FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "megadriv", 0, 1);
+ TIMER(config, "scantimer2").configure_scanline("gen_vdp2", FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "megadriv", 0, 1);
MCFG_PALETTE_ADD("palette", 0xc0*2)
diff --git a/src/mame/drivers/capbowl.cpp b/src/mame/drivers/capbowl.cpp
index 119977a7291..6373deaf41b 100644
--- a/src/mame/drivers/capbowl.cpp
+++ b/src/mame/drivers/capbowl.cpp
@@ -332,7 +332,7 @@ MACHINE_CONFIG_START(capbowl_state::capbowl)
NVRAM(config, "nvram", nvram_device::DEFAULT_RANDOM);
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, "ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/champbas.cpp b/src/mame/drivers/champbas.cpp
index 0d928689e43..a880df6149f 100644
--- a/src/mame/drivers/champbas.cpp
+++ b/src/mame/drivers/champbas.cpp
@@ -691,8 +691,9 @@ MACHINE_CONFIG_START(exctsccr_state::exctsccr)
MCFG_DEVICE_IO_MAP(exctsccr_sound_io_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(exctsccr_state, nmi_line_pulse, 4000) // 4 kHz, updates the dac
- MCFG_TIMER_DRIVER_ADD_PERIODIC("exc_snd_irq", exctsccr_state, exctsccr_sound_irq, attotime::from_hz(75)) // irq source unknown, determines music tempo
- MCFG_TIMER_START_DELAY(attotime::from_hz(75))
+ timer_device &exc_snd_irq(TIMER(config, "exc_snd_irq"));
+ exc_snd_irq.configure_periodic(FUNC(exctsccr_state::exctsccr_sound_irq), attotime::from_hz(75)); // irq source unknown, determines music tempo
+ exc_snd_irq.set_start_delay(attotime::from_hz(75));
MCFG_DEVICE_ADD("alpha_8201", ALPHA_8201, XTAL(18'432'000)/6/8) // note: 8302 rom, or 8303 on exctscc2 (same device!)
MCFG_QUANTUM_PERFECT_CPU("alpha_8201:mcu")
diff --git a/src/mame/drivers/champbwl.cpp b/src/mame/drivers/champbwl.cpp
index 5ef96219ec0..bcba22c6383 100644
--- a/src/mame/drivers/champbwl.cpp
+++ b/src/mame/drivers/champbwl.cpp
@@ -565,7 +565,7 @@ MACHINE_CONFIG_START(champbwl_state::doraemon)
SETA001_SPRITE(config, m_seta001, 0);
m_seta001->set_gfxdecode_tag("gfxdecode");
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
MCFG_MACHINE_START_OVERRIDE(champbwl_state,doraemon)
diff --git a/src/mame/drivers/chesstrv.cpp b/src/mame/drivers/chesstrv.cpp
index b7e97f1d7f0..f0f42f2265c 100644
--- a/src/mame/drivers/chesstrv.cpp
+++ b/src/mame/drivers/chesstrv.cpp
@@ -290,7 +290,7 @@ MACHINE_CONFIG_START(borisdpl_state::borisdpl)
/* video hardware */
config.set_default_layout(layout_borisdpl);
- //MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_interrupt", borisdpl_state, timer_interrupt, attotime::from_hz(40))
+ //TIMER(config, "timer_interrupt").configure_periodic(FUNC(borisdpl_state::timer_interrupt), attotime::from_hz(40));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp
index f4366c78afd..8377781e5ba 100644
--- a/src/mame/drivers/cischeat.cpp
+++ b/src/mame/drivers/cischeat.cpp
@@ -1954,7 +1954,7 @@ MACHINE_CONFIG_START(cischeat_state::bigrun)
/* basic machine hardware */
MCFG_DEVICE_ADD("cpu1", M68000, 10000000)
MCFG_DEVICE_PROGRAM_MAP(bigrun_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cischeat_state, bigrun_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(cischeat_state::bigrun_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("cpu2", M68000, 10000000)
MCFG_DEVICE_PROGRAM_MAP(bigrun_map2)
@@ -2133,7 +2133,7 @@ MACHINE_CONFIG_START(cischeat_state::scudhamm)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",M68000, 12000000)
MCFG_DEVICE_PROGRAM_MAP(scudhamm_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cischeat_state, scudhamm_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(cischeat_state::scudhamm_scanline), "screen", 0, 1);
WATCHDOG_TIMER(config, m_watchdog);
@@ -2189,8 +2189,7 @@ MACHINE_CONFIG_START(cischeat_state::armchmp2)
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(armchmp2_map)
- MCFG_TIMER_MODIFY("scantimer")
- MCFG_TIMER_DRIVER_CALLBACK(cischeat_state, armchamp2_scanline)
+ subdevice<timer_device>("scantimer")->set_callback(FUNC(cischeat_state::armchamp2_scanline));
MACHINE_CONFIG_END
@@ -2221,9 +2220,9 @@ MACHINE_CONFIG_START(cischeat_state::captflag)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",M68000, XTAL(24'000'000) / 2) // TMP68000P-12
MCFG_DEVICE_PROGRAM_MAP(captflag_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cischeat_state, captflag_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(cischeat_state::captflag_scanline), "screen", 0, 1);
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
+ TICKET_DISPENSER(config, m_captflag_hopper, attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH );
WATCHDOG_TIMER(config, m_watchdog);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -2246,8 +2245,8 @@ MACHINE_CONFIG_START(cischeat_state::captflag)
MEGASYS1_TILEMAP(config, m_tmap[2], m_palette, 0x4e00/2);
// Motors
- MCFG_TIMER_ADD_NONE("motor_left")
- MCFG_TIMER_ADD_NONE("motor_right")
+ TIMER(config, m_captflag_motor_left).configure_generic(timer_device::expired_delegate());
+ TIMER(config, m_captflag_motor_right).configure_generic(timer_device::expired_delegate());
// Layout
config.set_default_layout(layout_captflag);
diff --git a/src/mame/drivers/ckz80.cpp b/src/mame/drivers/ckz80.cpp
index 7e087426c20..e3487a47e4e 100644
--- a/src/mame/drivers/ckz80.cpp
+++ b/src/mame/drivers/ckz80.cpp
@@ -436,13 +436,14 @@ MACHINE_CONFIG_START(ckz80_state::master)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL/2)
MCFG_DEVICE_PROGRAM_MAP(master_trampoline)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", ckz80_state, irq_on, attotime::from_hz(429)) // theoretical frequency from 555 timer (22nF, 150K, 1K5), measurement was 418Hz
- MCFG_TIMER_START_DELAY(attotime::from_hz(429) - attotime::from_nsec(22870)) // active for 22.87us
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", ckz80_state, irq_off, attotime::from_hz(429))
+ timer_device &irq_on(TIMER(config, "irq_on"));
+ irq_on.configure_periodic(FUNC(ckz80_state::irq_on), attotime::from_hz(429)); // theoretical frequency from 555 timer (22nF, 150K, 1K5), measurement was 418Hz
+ irq_on.set_start_delay(attotime::from_hz(429) - attotime::from_nsec(22870)); // active for 22.87us
+ TIMER(config, "irq_off").configure_periodic(FUNC(ckz80_state::irq_off), attotime::from_hz(429));
ADDRESS_MAP_BANK(config, "master_map").set_map(&ckz80_state::master_map).set_options(ENDIANNESS_LITTLE, 8, 16);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ckz80_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(ckz80_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_ck_master);
/* sound hardware */
diff --git a/src/mame/drivers/clpoker.cpp b/src/mame/drivers/clpoker.cpp
index 587e946bdfc..850152551e5 100644
--- a/src/mame/drivers/clpoker.cpp
+++ b/src/mame/drivers/clpoker.cpp
@@ -271,7 +271,7 @@ MACHINE_CONFIG_START(clpoker_state::clpoker)
ppi_inputs.in_pb_callback().set_ioport("INB");
ppi_inputs.in_pc_callback().set_ioport("INC");
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(60), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(60), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) // wrong
diff --git a/src/mame/drivers/coolpool.cpp b/src/mame/drivers/coolpool.cpp
index 555e1a7f5b7..af17acdb246 100644
--- a/src/mame/drivers/coolpool.cpp
+++ b/src/mame/drivers/coolpool.cpp
@@ -731,7 +731,7 @@ MACHINE_CONFIG_START(coolpool_state::amerdart)
dsp.set_addrmap(AS_IO, &coolpool_state::amerdart_dsp_io_map);
dsp.bio().set(FUNC(coolpool_state::amerdart_dsp_bio_line_r));
- MCFG_TIMER_DRIVER_ADD_SCANLINE("audioint", coolpool_state, amerdart_audio_int_gen, "screen", 0, 1)
+ TIMER(config, "audioint").configure_scanline(FUNC(coolpool_state::amerdart_audio_int_gen), "screen", 0, 1);
GENERIC_LATCH_16(config, m_main2dsp);
GENERIC_LATCH_16(config, m_dsp2main);
@@ -740,7 +740,7 @@ MACHINE_CONFIG_START(coolpool_state::amerdart)
MCFG_MACHINE_RESET_OVERRIDE(coolpool_state,amerdart)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TIMER_DRIVER_ADD(m_nvram_timer, coolpool_state, nvram_write_timeout)
+ TIMER(config, m_nvram_timer).configure_generic(FUNC(coolpool_state::nvram_write_timeout));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -785,7 +785,7 @@ MACHINE_CONFIG_START(coolpool_state::coolpool)
MCFG_MACHINE_RESET_OVERRIDE(coolpool_state,coolpool)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TIMER_DRIVER_ADD(m_nvram_timer, coolpool_state, nvram_write_timeout)
+ TIMER(config, m_nvram_timer).configure_generic(FUNC(coolpool_state::nvram_write_timeout));
/* video hardware */
TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
diff --git a/src/mame/drivers/coolridr.cpp b/src/mame/drivers/coolridr.cpp
index 5e0840bd651..8d4e292a40d 100644
--- a/src/mame/drivers/coolridr.cpp
+++ b/src/mame/drivers/coolridr.cpp
@@ -3222,14 +3222,14 @@ WRITE_LINE_MEMBER(coolridr_state::scsp2_to_sh1_irq)
MACHINE_CONFIG_START(coolridr_state::coolridr)
MCFG_DEVICE_ADD("maincpu", SH2, MAIN_CLOCK) // 28 MHz
MCFG_DEVICE_PROGRAM_MAP(system_h1_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", coolridr_state, interrupt_main, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(coolridr_state::interrupt_main), "screen", 0, 1);
MCFG_DEVICE_ADD("soundcpu", M68000, 22579000/2) // 22.579 MHz XTAL / 2 = 11.2895 MHz
MCFG_DEVICE_PROGRAM_MAP(system_h1_sound_map)
MCFG_DEVICE_ADD("sub", SH1, 16000000) // SH7032 HD6417032F20!! 16 MHz
MCFG_DEVICE_PROGRAM_MAP(coolridr_submap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer2", coolridr_state, interrupt_sub, "screen", 0, 1)
+ TIMER(config, "scantimer2").configure_scanline(FUNC(coolridr_state::interrupt_sub), "screen", 0, 1);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/cosmicos.cpp b/src/mame/drivers/cosmicos.cpp
index cc3929e4cdc..d07a0190604 100644
--- a/src/mame/drivers/cosmicos.cpp
+++ b/src/mame/drivers/cosmicos.cpp
@@ -525,8 +525,8 @@ MACHINE_CONFIG_START(cosmicos_state::cosmicos)
/* video hardware */
config.set_default_layout(layout_cosmicos);
DM9368(config, m_led, 0);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("digit", cosmicos_state, digit_tick, attotime::from_hz(100))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("interrupt", cosmicos_state, int_tick, attotime::from_hz(1000))
+ TIMER(config, "digit").configure_periodic(FUNC(cosmicos_state::digit_tick), attotime::from_hz(100));
+ TIMER(config, "interrupt").configure_periodic(FUNC(cosmicos_state::int_tick), attotime::from_hz(1000));
SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER);
diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp
index 888dc71291a..f8c3ddeef83 100644
--- a/src/mame/drivers/cps1.cpp
+++ b/src/mame/drivers/cps1.cpp
@@ -3452,8 +3452,7 @@ MACHINE_CONFIG_START(cps_state::ganbare)
cps1_10MHz(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cps_state, ganbare_interrupt, "screen", 0, 1) // need to investigate more
+ TIMER(config, "scantimer").configure_scanline(FUNC(cps_state::ganbare_interrupt), "screen", 0, 1); // need to investigate more
MCFG_DEVICE_ADD("m48t35", M48T35, 0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp
index 2f5ad6bd244..43339646889 100644
--- a/src/mame/drivers/cps2.cpp
+++ b/src/mame/drivers/cps2.cpp
@@ -1301,7 +1301,7 @@ MACHINE_CONFIG_START(cps2_state::cps2)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000))
MCFG_DEVICE_PROGRAM_MAP(cps2_map)
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cps2_state, cps2_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(cps2_state::cps2_interrupt), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000))
MCFG_DEVICE_PROGRAM_MAP(qsound_sub_map)
diff --git a/src/mame/drivers/cxgz80.cpp b/src/mame/drivers/cxgz80.cpp
index 32552430251..294fccc855d 100644
--- a/src/mame/drivers/cxgz80.cpp
+++ b/src/mame/drivers/cxgz80.cpp
@@ -396,17 +396,17 @@ INPUT_PORTS_END
******************************************************************************/
MACHINE_CONFIG_START(cxgz80_state::ch2001)
-
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL/2)
- MCFG_DEVICE_PROGRAM_MAP(ch2001_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", cxgz80_state, irq_on, attotime::from_hz(484)) // theoretical frequency from 555 timer (22nF, 100K+33K, 1K2), measurement was 568Hz
- MCFG_TIMER_START_DELAY(attotime::from_hz(484) - attotime::from_nsec(18300)) // active for 18.3us
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", cxgz80_state, irq_off, attotime::from_hz(484))
+ Z80(config, m_maincpu, 8_MHz_XTAL/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cxgz80_state::ch2001_map);
+ timer_device &irq_on(TIMER(config, "irq_on"));
+ irq_on.configure_periodic(FUNC(cxgz80_state::irq_on), attotime::from_hz(484)); // theoretical frequency from 555 timer (22nF, 100K+33K, 1K2), measurement was 568Hz
+ irq_on.set_start_delay(attotime::from_hz(484) - attotime::from_nsec(18300)); // active for 18.3us
+ TIMER(config, "irq_off").configure_periodic(FUNC(cxgz80_state::irq_off), attotime::from_hz(484));
- MCFG_TIMER_DRIVER_ADD("speaker_off", cxgz80_state, speaker_off_callback)
+ TIMER(config, m_speaker_off_timer).configure_generic(FUNC(cxgz80_state::speaker_off_callback));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", cxgz80_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(cxgz80_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_cxg_ch2001);
/* sound hardware */
diff --git a/src/mame/drivers/d6800.cpp b/src/mame/drivers/d6800.cpp
index d0776d1ee56..01f434cd65b 100644
--- a/src/mame/drivers/d6800.cpp
+++ b/src/mame/drivers/d6800.cpp
@@ -422,8 +422,8 @@ MACHINE_CONFIG_START(d6800_state::d6800)
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("d6800_c", d6800_state, d6800_c, attotime::from_hz(4800))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("d6800_p", d6800_state, d6800_p, attotime::from_hz(40000))
+ TIMER(config, "d6800_c").configure_periodic(FUNC(d6800_state::d6800_c), attotime::from_hz(4800));
+ TIMER(config, "d6800_p").configure_periodic(FUNC(d6800_state::d6800_p), attotime::from_hz(40000));
/* quickload */
MCFG_QUICKLOAD_ADD("quickload", d6800_state, d6800, "bin,c8,ch8", 1)
diff --git a/src/mame/drivers/dambustr.cpp b/src/mame/drivers/dambustr.cpp
index a2b7a52340a..42b6fdc1f75 100644
--- a/src/mame/drivers/dambustr.cpp
+++ b/src/mame/drivers/dambustr.cpp
@@ -271,7 +271,7 @@ MACHINE_CONFIG_START(dambustr_state::dambustr)
TTL7474(config, "7474_9m_1", 0).output_cb().set(FUNC(dambustr_state::galaxold_7474_9m_1_callback));
TTL7474(config, "7474_9m_2", 0).comp_output_cb().set(FUNC(dambustr_state::galaxold_7474_9m_2_q_callback));
- MCFG_TIMER_DRIVER_ADD("int_timer", dambustr_state, galaxold_interrupt_timer)
+ TIMER(config, "int_timer").configure_generic(FUNC(dambustr_state::galaxold_interrupt_timer));
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp
index fd2c10f808e..36306862d63 100644
--- a/src/mame/drivers/darkmist.cpp
+++ b/src/mame/drivers/darkmist.cpp
@@ -244,7 +244,7 @@ MACHINE_CONFIG_START(darkmist_state::darkmist)
MCFG_DEVICE_ADD("maincpu", Z80,4000000) /* ? MHz */
MCFG_DEVICE_PROGRAM_MAP(memmap)
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkmist_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(darkmist_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("t5182", T5182, 0)
diff --git a/src/mame/drivers/dblcrown.cpp b/src/mame/drivers/dblcrown.cpp
index 77399816668..3033a501309 100644
--- a/src/mame/drivers/dblcrown.cpp
+++ b/src/mame/drivers/dblcrown.cpp
@@ -605,7 +605,7 @@ MACHINE_CONFIG_START(dblcrown_state::dblcrown)
MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(dblcrown_map)
MCFG_DEVICE_IO_MAP(dblcrown_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dblcrown_state, dblcrown_irq_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(dblcrown_state::dblcrown_irq_scanline), "screen", 0, 1);
WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_msec(1000)); /* 1000 ms. (minimal of MAX693A watchdog long timeout period with internal oscillator) */
diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp
index 0044a9b50f5..392a6f667b7 100644
--- a/src/mame/drivers/dbz.cpp
+++ b/src/mame/drivers/dbz.cpp
@@ -329,7 +329,7 @@ MACHINE_CONFIG_START(dbz_state::dbz)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16000000)
MCFG_DEVICE_PROGRAM_MAP(dbz_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dbz_state, dbz_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(dbz_state::dbz_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 4000000)
MCFG_DEVICE_PROGRAM_MAP(dbz_sound_map)
diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp
index e9e1be60cba..7b0f1c5827e 100644
--- a/src/mame/drivers/dccons.cpp
+++ b/src/mame/drivers/dccons.cpp
@@ -597,7 +597,7 @@ MACHINE_CONFIG_START(dc_cons_state::dc)
m_maincpu->set_addrmap(AS_PROGRAM, &dc_cons_state::dc_map);
m_maincpu->set_addrmap(AS_IO, &dc_cons_state::dc_port);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dc_state, dc_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(dc_state::dc_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("soundcpu", ARM7, ((XTAL(33'868'800)*2)/3)/8) // AICA bus clock is 2/3rds * 33.8688. ARM7 gets 1 bus cycle out of each 8.
MCFG_DEVICE_PROGRAM_MAP(dc_audio_map)
diff --git a/src/mame/drivers/dcheese.cpp b/src/mame/drivers/dcheese.cpp
index beda6b290d3..8993ba7b2ca 100644
--- a/src/mame/drivers/dcheese.cpp
+++ b/src/mame/drivers/dcheese.cpp
@@ -385,7 +385,7 @@ MACHINE_CONFIG_START(dcheese_state::dcheese)
EEPROM_93C46_16BIT(config, "eeprom");
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, "ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/ddealer.cpp b/src/mame/drivers/ddealer.cpp
index 834f0a91ddf..e98802e3bde 100644
--- a/src/mame/drivers/ddealer.cpp
+++ b/src/mame/drivers/ddealer.cpp
@@ -649,7 +649,7 @@ MACHINE_CONFIG_START(ddealer_state::ddealer)
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x200);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", ddealer_state, mcu_sim, attotime::from_hz(10000))
+ TIMER(config, "coinsim").configure_periodic(FUNC(ddealer_state::mcu_sim), attotime::from_hz(10000));
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(6'000'000) / 8) /* 7.5KHz */
diff --git a/src/mame/drivers/ddragon3.cpp b/src/mame/drivers/ddragon3.cpp
index deee7c6d491..88f096a3d5f 100644
--- a/src/mame/drivers/ddragon3.cpp
+++ b/src/mame/drivers/ddragon3.cpp
@@ -825,7 +825,7 @@ MACHINE_CONFIG_START(ddragon3_state::ddragon3)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 20_MHz_XTAL / 2)
MCFG_DEVICE_PROGRAM_MAP(ddragon3_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddragon3_state, ddragon3_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(ddragon3_state::ddragon3_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545))
MCFG_DEVICE_PROGRAM_MAP(sound_map)
@@ -901,7 +901,7 @@ MACHINE_CONFIG_START(wwfwfest_state::wwfwfest)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 24_MHz_XTAL / 2) /* 24 crystal, 12 rated chip */
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddragon3_state, ddragon3_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(ddragon3_state::ddragon3_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545))
MCFG_DEVICE_PROGRAM_MAP(sound_map)
diff --git a/src/mame/drivers/deco_mlc.cpp b/src/mame/drivers/deco_mlc.cpp
index 5215d5db27f..d902574728e 100644
--- a/src/mame/drivers/deco_mlc.cpp
+++ b/src/mame/drivers/deco_mlc.cpp
@@ -515,7 +515,7 @@ MACHINE_CONFIG_START(deco_mlc_state::avengrgs)
EEPROM_93C46_16BIT(config, m_eeprom); /* Actually 93c45 */
- MCFG_TIMER_DRIVER_ADD(m_raster_irq_timer, deco_mlc_state, interrupt_gen)
+ TIMER(config, m_raster_irq_timer).configure_generic(FUNC(deco_mlc_state::interrupt_gen));
/* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER)
@@ -547,7 +547,7 @@ MACHINE_CONFIG_START(deco_mlc_state::mlc)
EEPROM_93C46_16BIT(config, m_eeprom); /* Actually 93c45 */
- MCFG_TIMER_DRIVER_ADD(m_raster_irq_timer, deco_mlc_state, interrupt_gen)
+ TIMER(config, m_raster_irq_timer).configure_generic(FUNC(deco_mlc_state::interrupt_gen));
/* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER)
diff --git a/src/mame/drivers/decocass.cpp b/src/mame/drivers/decocass.cpp
index 305ae5f7889..743f4601c19 100644
--- a/src/mame/drivers/decocass.cpp
+++ b/src/mame/drivers/decocass.cpp
@@ -958,7 +958,7 @@ MACHINE_CONFIG_START(decocass_state::decocass)
MCFG_DEVICE_ADD("audiocpu", M6502, HCLK1/3/2)
MCFG_DEVICE_PROGRAM_MAP(decocass_sound_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("audionmi", decocass_state, decocass_audio_nmi_gen, "screen", 0, 8)
+ TIMER(config, "audionmi").configure_scanline(FUNC(decocass_state::decocass_audio_nmi_gen), "screen", 0, 8);
I8041(config, m_mcu, HCLK);
m_mcu->p1_in_cb().set(FUNC(decocass_state::i8041_p1_r));
diff --git a/src/mame/drivers/dfruit.cpp b/src/mame/drivers/dfruit.cpp
index 4e542240a84..d1b5a66f099 100644
--- a/src/mame/drivers/dfruit.cpp
+++ b/src/mame/drivers/dfruit.cpp
@@ -376,7 +376,7 @@ MACHINE_CONFIG_START(dfruit_state::dfruit)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80,MASTER_CLOCK/2) //!!! TC0091LVC !!!
MCFG_DEVICE_PROGRAM_MAP(dfruit_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dfruit_state, dfruit_irq_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(dfruit_state::dfruit_irq_scanline), "screen", 0, 1);
//MCFG_MACHINE_START_OVERRIDE(dfruit_state,4enraya)
//MCFG_MACHINE_RESET_OVERRIDE(dfruit_state,4enraya)
diff --git a/src/mame/drivers/djboy.cpp b/src/mame/drivers/djboy.cpp
index 0387de96fe4..c0e47b908f2 100644
--- a/src/mame/drivers/djboy.cpp
+++ b/src/mame/drivers/djboy.cpp
@@ -483,7 +483,7 @@ MACHINE_CONFIG_START(djboy_state::djboy)
MCFG_DEVICE_ADD("mastercpu", Z80, 12_MHz_XTAL / 2) // 6.000MHz, verified
MCFG_DEVICE_PROGRAM_MAP(mastercpu_am)
MCFG_DEVICE_IO_MAP(mastercpu_port_am)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", djboy_state, djboy_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(djboy_state::djboy_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slavecpu", Z80, 12_MHz_XTAL / 2) // 6.000MHz, verified
MCFG_DEVICE_PROGRAM_MAP(slavecpu_am)
diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp
index 44b4c2aa5d8..e14fee57396 100644
--- a/src/mame/drivers/dooyong.cpp
+++ b/src/mame/drivers/dooyong.cpp
@@ -1730,7 +1730,7 @@ MACHINE_CONFIG_START(rshark_state::dooyong_68k)
// basic machine hardware
MCFG_DEVICE_ADD("maincpu", M68000, 8_MHz_XTAL) // 8MHz measured on Super-X
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", rshark_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(rshark_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 8_MHz_XTAL/2) // 4MHz measured on Super-X
MCFG_DEVICE_PROGRAM_MAP(bluehawk_sound_map)
@@ -1781,7 +1781,7 @@ MACHINE_CONFIG_START(popbingo_state::popbingo)
// basic machine hardware
MCFG_DEVICE_ADD("maincpu", M68000, 20_MHz_XTAL/2) // 10MHz measured
MCFG_DEVICE_PROGRAM_MAP(popbingo_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", popbingo_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(popbingo_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 16_MHz_XTAL/4) // 4MHz measured
MCFG_DEVICE_PROGRAM_MAP(bluehawk_sound_map)
diff --git a/src/mame/drivers/dotrikun.cpp b/src/mame/drivers/dotrikun.cpp
index 0a224a121e5..cc4a1a22bec 100644
--- a/src/mame/drivers/dotrikun.cpp
+++ b/src/mame/drivers/dotrikun.cpp
@@ -203,9 +203,9 @@ MACHINE_CONFIG_START(dotrikun_state::dotrikun)
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(dotrikun_map)
MCFG_DEVICE_IO_MAP(io_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scanline_on", dotrikun_state, scanline_on, "screen", 0, 1)
- MCFG_TIMER_DRIVER_ADD("scanline_off", dotrikun_state, scanline_off)
- MCFG_TIMER_DRIVER_ADD("interrupt", dotrikun_state, interrupt)
+ TIMER(config, "scanline_on").configure_scanline(FUNC(dotrikun_state::scanline_on), "screen", 0, 1);
+ TIMER(config, m_scanline_off_timer).configure_generic(FUNC(dotrikun_state::scanline_off));
+ TIMER(config, m_interrupt_timer).configure_generic(FUNC(dotrikun_state::interrupt));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/dragrace.cpp b/src/mame/drivers/dragrace.cpp
index 6b79539e335..c18f42fab60 100644
--- a/src/mame/drivers/dragrace.cpp
+++ b/src/mame/drivers/dragrace.cpp
@@ -281,7 +281,7 @@ MACHINE_CONFIG_START(dragrace_state::dragrace)
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("frame_timer", dragrace_state, dragrace_frame_callback, attotime::from_hz(60))
+ TIMER(config, "frame_timer").configure_periodic(FUNC(dragrace_state::dragrace_frame_callback), attotime::from_hz(60));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/dvk_kcgd.cpp b/src/mame/drivers/dvk_kcgd.cpp
index 40836bc3791..f09b7d2fd75 100644
--- a/src/mame/drivers/dvk_kcgd.cpp
+++ b/src/mame/drivers/dvk_kcgd.cpp
@@ -351,8 +351,9 @@ MACHINE_CONFIG_START(kcgd_state::kcgd)
m_maincpu->set_addrmap(AS_PROGRAM, &kcgd_state::kcgd_mem);
m_maincpu->set_initial_mode(0100000);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", kcgd_state, scanline_callback, attotime::from_hz(50*28*11)) // XXX verify
- MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL(30'800'000)/KCGD_HORZ_START))
+ timer_device &scantimer(TIMER(config, "scantimer"));
+ scantimer.configure_periodic(FUNC(kcgd_state::scanline_callback), attotime::from_hz(50*28*11)); // XXX verify
+ scantimer.set_start_delay(attotime::from_hz(XTAL(30'800'000)/KCGD_HORZ_START));
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_UPDATE_DRIVER(kcgd_state, screen_update)
diff --git a/src/mame/drivers/dvk_ksm.cpp b/src/mame/drivers/dvk_ksm.cpp
index e7af7616f7a..9de0f5270ef 100644
--- a/src/mame/drivers/dvk_ksm.cpp
+++ b/src/mame/drivers/dvk_ksm.cpp
@@ -422,7 +422,7 @@ MACHINE_CONFIG_START(ksm_state::ksm)
MCFG_DEVICE_IO_MAP(ksm_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ksm_state, scanline_callback, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(ksm_state::scanline_callback), "screen", 0, 1);
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
MCFG_SCREEN_UPDATE_DRIVER(ksm_state, screen_update)
diff --git a/src/mame/drivers/e100.cpp b/src/mame/drivers/e100.cpp
index cd77707ade0..faffc4cebb0 100644
--- a/src/mame/drivers/e100.cpp
+++ b/src/mame/drivers/e100.cpp
@@ -596,7 +596,7 @@ MACHINE_CONFIG_START(e100_state::e100)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* There is a 50Hz signal from the video circuit to CA1 which generates interrupts and drives a software RTC */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("video50hz", e100_state, rtc_w, attotime::from_hz(100)) /* Will be divided by two through toggle in the handler */
+ TIMER(config, "video50hz").configure_periodic(FUNC(e100_state::rtc_w), attotime::from_hz(100)); /* Will be divided by two through toggle in the handler */
MACHINE_CONFIG_END
/* ROM sets from Didact was not versioned in general, so the numbering are just assumptions */
diff --git a/src/mame/drivers/eacc.cpp b/src/mame/drivers/eacc.cpp
index 54f40da22c3..cad1434da44 100644
--- a/src/mame/drivers/eacc.cpp
+++ b/src/mame/drivers/eacc.cpp
@@ -264,8 +264,8 @@ MACHINE_CONFIG_START(eacc_state::eacc)
m_pia->irqb_handler().set_inputline("maincpu", M6802_IRQ_LINE);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("eacc_nmi", eacc_state, eacc_nmi, attotime::from_hz(600))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("eacc_cb1", eacc_state, eacc_cb1, attotime::from_hz(30))
+ TIMER(config, "eacc_nmi").configure_periodic(FUNC(eacc_state::eacc_nmi), attotime::from_hz(600));
+ TIMER(config, "eacc_cb1").configure_periodic(FUNC(eacc_state::eacc_cb1), attotime::from_hz(30));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp
index 9b06d8bfd80..d9421a41483 100644
--- a/src/mame/drivers/einstein.cpp
+++ b/src/mame/drivers/einstein.cpp
@@ -585,7 +585,7 @@ MACHINE_CONFIG_START(einstein_state::einstein)
/* this is actually clocked at the system clock 4 MHz, but this would be too fast for our
driver. So we update at 50Hz and hope this is good enough. */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", einstein_state, keyboard_timer_callback, attotime::from_hz(50))
+ TIMER(config, "keyboard").configure_periodic(FUNC(einstein_state::keyboard_timer_callback), attotime::from_hz(50));
z80pio_device& pio(Z80PIO(config, IC_I063, XTAL_X002 / 2));
pio.out_int_callback().set(FUNC(einstein_state::int_w<0>));
@@ -641,7 +641,7 @@ MACHINE_CONFIG_START(einstein_state::einstein)
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- MCFG_TIMER_DRIVER_ADD("strobe", einstein_state, strobe_callback)
+ TIMER(config, m_strobe_timer).configure_generic(FUNC(einstein_state::strobe_callback));
// uart
i8251_device &ic_i060(I8251(config, IC_I060, XTAL_X002 / 4));
diff --git a/src/mame/drivers/eolith16.cpp b/src/mame/drivers/eolith16.cpp
index d7b6bac7c49..6c125286c66 100644
--- a/src/mame/drivers/eolith16.cpp
+++ b/src/mame/drivers/eolith16.cpp
@@ -162,7 +162,7 @@ void eolith16_state::eolith16_palette(palette_device &palette) const
MACHINE_CONFIG_START(eolith16_state::eolith16)
MCFG_DEVICE_ADD("maincpu", E116T, XTAL(60'000'000)) /* no internal multiplier */
MCFG_DEVICE_PROGRAM_MAP(eolith16_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", eolith16_state, eolith_speedup, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(eolith16_state::eolith_speedup), "screen", 0, 1);
EEPROM_93C66_8BIT(config, "eeprom");
diff --git a/src/mame/drivers/espial.cpp b/src/mame/drivers/espial.cpp
index 47091a72620..ff4e9a4aa97 100644
--- a/src/mame/drivers/espial.cpp
+++ b/src/mame/drivers/espial.cpp
@@ -324,7 +324,7 @@ MACHINE_CONFIG_START(espial_state::espial)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 3072000) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(espial_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", espial_state, espial_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(espial_state::espial_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 3072000) /* 2 MHz?????? */
MCFG_DEVICE_PROGRAM_MAP(espial_sound_map)
diff --git a/src/mame/drivers/exedexes.cpp b/src/mame/drivers/exedexes.cpp
index d8214068174..9ec6ab53863 100644
--- a/src/mame/drivers/exedexes.cpp
+++ b/src/mame/drivers/exedexes.cpp
@@ -224,7 +224,7 @@ MACHINE_CONFIG_START(exedexes_state::exedexes)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */
MCFG_DEVICE_PROGRAM_MAP(exedexes_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", exedexes_state, exedexes_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(exedexes_state::exedexes_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 3000000) /* 3 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(sound_map)
diff --git a/src/mame/drivers/expro02.cpp b/src/mame/drivers/expro02.cpp
index 8e74739d4e0..cffdc9666ca 100644
--- a/src/mame/drivers/expro02.cpp
+++ b/src/mame/drivers/expro02.cpp
@@ -904,7 +904,7 @@ MACHINE_CONFIG_START(expro02_state::expro02)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
MCFG_DEVICE_PROGRAM_MAP(expro02_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", expro02_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(expro02_state::scanline), "screen", 0, 1);
/* CALC01 MCU @ 16Mhz (unknown type, simulated) */
diff --git a/src/mame/drivers/exterm.cpp b/src/mame/drivers/exterm.cpp
index 0ce68b6395a..125a2475e52 100644
--- a/src/mame/drivers/exterm.cpp
+++ b/src/mame/drivers/exterm.cpp
@@ -401,7 +401,7 @@ MACHINE_CONFIG_START(exterm_state::exterm)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TIMER_DRIVER_ADD(m_nmi_timer, exterm_state, master_sound_nmi_callback)
+ TIMER(config, m_nmi_timer).configure_generic(FUNC(exterm_state::master_sound_nmi_callback));
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/fc100.cpp b/src/mame/drivers/fc100.cpp
index 47e346a2b56..0eb4db312c1 100644
--- a/src/mame/drivers/fc100.cpp
+++ b/src/mame/drivers/fc100.cpp
@@ -554,9 +554,9 @@ MACHINE_CONFIG_START(fc100_state::fc100)
uart_clock.signal_handler().set(m_uart, FUNC(i8251_device::write_txc));
uart_clock.signal_handler().append(m_uart, FUNC(i8251_device::write_rxc));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_c", fc100_state, timer_c, attotime::from_hz(4800)) // cass write
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", fc100_state, timer_p, attotime::from_hz(40000)) // cass read
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_k", fc100_state, timer_k, attotime::from_hz(300)) // keyb scan
+ TIMER(config, "timer_c").configure_periodic(FUNC(fc100_state::timer_c), attotime::from_hz(4800)); // cass write
+ TIMER(config, "timer_p").configure_periodic(FUNC(fc100_state::timer_p), attotime::from_hz(40000)); // cass read
+ TIMER(config, "timer_k").configure_periodic(FUNC(fc100_state::timer_k), attotime::from_hz(300)); // keyb scan
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fc100_cart")
diff --git a/src/mame/drivers/feversoc.cpp b/src/mame/drivers/feversoc.cpp
index db22fe0ba17..4414495574b 100644
--- a/src/mame/drivers/feversoc.cpp
+++ b/src/mame/drivers/feversoc.cpp
@@ -316,7 +316,7 @@ MACHINE_CONFIG_START(feversoc_state::feversoc)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(60), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(60), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp
index 7b8046f62cc..10338d351b9 100644
--- a/src/mame/drivers/fidel68k.cpp
+++ b/src/mame/drivers/fidel68k.cpp
@@ -567,11 +567,12 @@ MACHINE_CONFIG_START(fidel68k_state::fex68k)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 12_MHz_XTAL) // HD68HC000P12
MCFG_DEVICE_PROGRAM_MAP(fex68k_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel68k_state, irq_on, attotime::from_hz(618)) // theoretical frequency from 556 timer (22nF, 91K + 20K POT @ 14.8K, 0.1K), measurement was 580Hz
- MCFG_TIMER_START_DELAY(attotime::from_hz(618) - attotime::from_nsec(1525)) // active for 1.525us
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel68k_state, irq_off, attotime::from_hz(618))
+ timer_device &irq_on(TIMER(config, "irq_on"));
+ irq_on.configure_periodic(FUNC(fidel68k_state::irq_on), attotime::from_hz(618)); // theoretical frequency from 556 timer (22nF, 91K + 20K POT @ 14.8K, 0.1K), measurement was 580Hz
+ irq_on.set_start_delay(attotime::from_hz(597) - attotime::from_nsec(1528)); // active for 1.525us
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel68k_state::irq_off), attotime::from_hz(618));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_ex_68k);
/* sound hardware */
@@ -603,11 +604,12 @@ MACHINE_CONFIG_START(fidel68k_state::fdes2265)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL) // MC68HC000P12F
MCFG_DEVICE_PROGRAM_MAP(fdes2265_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel68k_state, irq_on, attotime::from_hz(597)) // from 555 timer, measured
- MCFG_TIMER_START_DELAY(attotime::from_hz(597) - attotime::from_nsec(6000)) // active for 6us
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel68k_state, irq_off, attotime::from_hz(597))
+ timer_device &irq_on(TIMER(config, "irq_on"));
+ irq_on.configure_periodic(FUNC(fidel68k_state::irq_on), attotime::from_hz(597)); // from 555 timer, measured
+ irq_on.set_start_delay(attotime::from_hz(597) - attotime::from_nsec(6000)); // active for 6us
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel68k_state::irq_off), attotime::from_hz(597));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_desdis_68kr);
/* sound hardware */
@@ -632,13 +634,14 @@ MACHINE_CONFIG_START(fidel68k_state::eag_base)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(eag_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel68k_state, irq_on, attotime::from_hz(4.9152_MHz_XTAL/0x2000)) // 600Hz
- MCFG_TIMER_START_DELAY(attotime::from_hz(4.9152_MHz_XTAL/0x2000) - attotime::from_nsec(8250)) // active for 8.25us
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel68k_state, irq_off, attotime::from_hz(4.9152_MHz_XTAL/0x2000))
+ timer_device &irq_on(TIMER(config, "irq_on"));
+ irq_on.configure_periodic(FUNC(fidel68k_state::irq_on), attotime::from_hz(4.9152_MHz_XTAL/0x2000)); // 600Hz
+ irq_on.set_start_delay(attotime::from_hz(4.9152_MHz_XTAL/0x2000) - attotime::from_nsec(8250)); // active for 8.25us
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel68k_state::irq_off), attotime::from_hz(4.9152_MHz_XTAL/0x2000));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_eag_68k);
/* sound hardware */
diff --git a/src/mame/drivers/fidelmcs48.cpp b/src/mame/drivers/fidelmcs48.cpp
index 7b49319751a..9eea50369c8 100644
--- a/src/mame/drivers/fidelmcs48.cpp
+++ b/src/mame/drivers/fidelmcs48.cpp
@@ -160,7 +160,7 @@ MACHINE_CONFIG_START(fidelmcs48_state::sc6)
maincpu.t0_in_cb().set(FUNC(fidelmcs48_state::sc6_input6_r));
maincpu.t1_in_cb().set(FUNC(fidelmcs48_state::sc6_input7_r));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_sc6);
/* sound hardware */
diff --git a/src/mame/drivers/finalizr.cpp b/src/mame/drivers/finalizr.cpp
index e4a2e9b6fbb..2fe257eb580 100644
--- a/src/mame/drivers/finalizr.cpp
+++ b/src/mame/drivers/finalizr.cpp
@@ -267,7 +267,7 @@ MACHINE_CONFIG_START(finalizr_state::finalizr)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", KONAMI1, XTAL(18'432'000)/6) /* ??? */
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", finalizr_state, finalizr_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(finalizr_state::finalizr_scanline), "screen", 0, 1);
I8039(config, m_audiocpu, XTAL(18'432'000)/2); /* 9.216MHz clkin ?? */
m_audiocpu->set_addrmap(AS_PROGRAM, &finalizr_state::sound_map);
diff --git a/src/mame/drivers/firefox.cpp b/src/mame/drivers/firefox.cpp
index e660eea76cb..c93b3e18a6b 100644
--- a/src/mame/drivers/firefox.cpp
+++ b/src/mame/drivers/firefox.cpp
@@ -653,7 +653,7 @@ MACHINE_CONFIG_START(firefox_state::firefox)
MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_XTAL/8) // 68B09E
MCFG_DEVICE_PROGRAM_MAP(main_map)
/* interrupts count starting at end of VBLANK, which is 44, so add 44 */
- MCFG_TIMER_DRIVER_ADD_SCANLINE("32v", firefox_state, video_timer_callback, "screen", 96+44, 128)
+ TIMER(config, "32v").configure_scanline(FUNC(firefox_state::video_timer_callback), "screen", 96+44, 128);
MCFG_DEVICE_ADD("audiocpu", M6502, MASTER_XTAL/8)
MCFG_DEVICE_PROGRAM_MAP(audio_map)
diff --git a/src/mame/drivers/firetrk.cpp b/src/mame/drivers/firetrk.cpp
index 1c8fdba15b0..f5d6935ec57 100644
--- a/src/mame/drivers/firetrk.cpp
+++ b/src/mame/drivers/firetrk.cpp
@@ -859,7 +859,7 @@ MACHINE_CONFIG_START(firetrk_state::firetrk)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6800, MASTER_CLOCK/12) /* 750Khz during service mode */
MCFG_DEVICE_PROGRAM_MAP(firetrk_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", firetrk_state, firetrk_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(firetrk_state::firetrk_scanline), "screen", 0, 1);
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 5);
diff --git a/src/mame/drivers/fk1.cpp b/src/mame/drivers/fk1.cpp
index aa63afa7fac..c74e4e1edb8 100644
--- a/src/mame/drivers/fk1.cpp
+++ b/src/mame/drivers/fk1.cpp
@@ -466,8 +466,8 @@ MACHINE_CONFIG_START(fk1_state::fk1)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("80K"); // 64 + 16
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", fk1_state, keyboard_callback, attotime::from_hz(24000))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("vsync_timer", fk1_state, vsync_callback, attotime::from_hz(50))
+ TIMER(config, "keyboard_timer").configure_periodic(FUNC(fk1_state::keyboard_callback), attotime::from_hz(24000));
+ TIMER(config, "vsync_timer").configure_periodic(FUNC(fk1_state::vsync_callback), attotime::from_hz(50));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp
index cfa68976a50..8f97bc8c50f 100644
--- a/src/mame/drivers/fp1100.cpp
+++ b/src/mame/drivers/fp1100.cpp
@@ -684,7 +684,7 @@ MACHINE_CONFIG_START(fp1100_state::fp1100)
/* Cassette */
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_c", fp1100_state, timer_c, attotime::from_hz(4800)) // cass write
+ TIMER(config, "timer_c").configure_periodic(FUNC(fp1100_state::timer_c), attotime::from_hz(4800)); // cass write
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/fresh.cpp b/src/mame/drivers/fresh.cpp
index 7201533c326..9eaa98411e1 100644
--- a/src/mame/drivers/fresh.cpp
+++ b/src/mame/drivers/fresh.cpp
@@ -602,7 +602,7 @@ MACHINE_CONFIG_START(fresh_state::fresh)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 24000000/2 )
MCFG_DEVICE_PROGRAM_MAP(fresh_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", fresh_state, fake_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(fresh_state::fake_scanline), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/funtech.cpp b/src/mame/drivers/funtech.cpp
index 32e8d9949e7..01f1d63ba73 100644
--- a/src/mame/drivers/funtech.cpp
+++ b/src/mame/drivers/funtech.cpp
@@ -509,7 +509,7 @@ MACHINE_CONFIG_START(fun_tech_corp_state::funtech)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp
index 0c2c902a7c3..a53bf1b20b3 100644
--- a/src/mame/drivers/galaxian.cpp
+++ b/src/mame/drivers/galaxian.cpp
@@ -6099,13 +6099,14 @@ MACHINE_CONFIG_START(galaxian_state::konami_sound_2x_ay8910)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(galaxian_state::scramble_base)
+void galaxian_state::scramble_base(machine_config &config)
+{
konami_base(config);
konami_sound_2x_ay8910(config);
/* blinking frequency is determined by 555 counter with Ra=100k, Rb=10k, C=10uF */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("stars", galaxian_state, scramble_stars_blink_timer, PERIOD_OF_555_ASTABLE(100000, 10000, 0.00001))
-MACHINE_CONFIG_END
+ TIMER(config, "stars").configure_periodic(FUNC(galaxian_state::scramble_stars_blink_timer), PERIOD_OF_555_ASTABLE(100000, 10000, 0.00001));
+}
@@ -6271,11 +6272,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(galaxian_state::timefgtr_scanline)
}
}
-MACHINE_CONFIG_START(galaxian_state::timefgtr)
+void galaxian_state::timefgtr(machine_config &config)
+{
fantastc(config);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galaxian_state, timefgtr_scanline, "screen", 0, 1)
-MACHINE_CONFIG_END
+ TIMER(config, "scantimer").configure_scanline(FUNC(galaxian_state::timefgtr_scanline), "screen", 0, 1);
+}
MACHINE_CONFIG_START(galaxian_state::jumpbug)
@@ -6319,7 +6321,7 @@ MACHINE_CONFIG_START(galaxian_state::checkmaj)
MCFG_DEVICE_ADD("audiocpu", Z80, 1620000)
MCFG_DEVICE_PROGRAM_MAP(checkmaj_sound_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("irq0", galaxian_state, checkmaj_irq0_gen, "screen", 0, 8)
+ TIMER(config, "irq0").configure_scanline(FUNC(galaxian_state::checkmaj_irq0_gen), "screen", 0, 8);
GENERIC_LATCH_8(config, m_soundlatch);
diff --git a/src/mame/drivers/galaxold.cpp b/src/mame/drivers/galaxold.cpp
index d3ead10ae53..d078c26ee1f 100644
--- a/src/mame/drivers/galaxold.cpp
+++ b/src/mame/drivers/galaxold.cpp
@@ -2267,7 +2267,7 @@ MACHINE_CONFIG_START(galaxold_state::galaxold_base)
TTL7474(config, m_7474_9m_2, 0);
m_7474_9m_2->comp_output_cb().set(FUNC(galaxold_state::galaxold_7474_9m_2_q_callback));
- MCFG_TIMER_DRIVER_ADD("int_timer", galaxold_state, galaxold_interrupt_timer)
+ TIMER(config, "int_timer").configure_generic(FUNC(galaxold_state::galaxold_interrupt_timer));
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/galgames.cpp b/src/mame/drivers/galgames.cpp
index e3f3c81f960..6f0057c209f 100644
--- a/src/mame/drivers/galgames.cpp
+++ b/src/mame/drivers/galgames.cpp
@@ -984,7 +984,7 @@ int galgames_compute_addr(uint16_t reg_low, uint16_t reg_mid, uint16_t reg_high)
MACHINE_CONFIG_START(galgames_state::galgames_base)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(galgames_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galgames_state, scanline_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(galgames_state::scanline_interrupt), "screen", 0, 1);
WATCHDOG_TIMER(config, "watchdog");
MCFG_GALGAMES_SLOT_ADD("slot")
diff --git a/src/mame/drivers/galpani2.cpp b/src/mame/drivers/galpani2.cpp
index dde79ee7b85..327030760e5 100644
--- a/src/mame/drivers/galpani2.cpp
+++ b/src/mame/drivers/galpani2.cpp
@@ -627,12 +627,12 @@ MACHINE_CONFIG_START(galpani2_state::galpani2)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(27'000'000)/2) /* Confirmed on galpani2i PCB */
MCFG_DEVICE_PROGRAM_MAP(galpani2_mem1)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("m_scantimer", galpani2_state, galpani2_interrupt1, "screen", 0, 1)
+ TIMER(config, "m_scantimer").configure_scanline(FUNC(galpani2_state::galpani2_interrupt1), "screen", 0, 1);
//MCFG_QUANTUM_PERFECT_CPU("maincpu")
MCFG_DEVICE_ADD("sub", M68000, XTAL(27'000'000)/2) /* Confirmed on galpani2i PCB */
MCFG_DEVICE_PROGRAM_MAP(galpani2_mem2)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("s_scantimer", galpani2_state, galpani2_interrupt2, "screen", 0, 1)
+ TIMER(config, "s_scantimer").configure_scanline(FUNC(galpani2_state::galpani2_interrupt2), "screen", 0, 1);
EEPROM_93C46_16BIT(config, "eeprom");
diff --git a/src/mame/drivers/galpani3.cpp b/src/mame/drivers/galpani3.cpp
index 8e04a9e25f5..8e6f1a21a2d 100644
--- a/src/mame/drivers/galpani3.cpp
+++ b/src/mame/drivers/galpani3.cpp
@@ -453,7 +453,7 @@ void galpani3_state::galpani3_map(address_map &map)
MACHINE_CONFIG_START(galpani3_state::galpani3)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'636'363)/2) // Confirmed from PCB
MCFG_DEVICE_PROGRAM_MAP(galpani3_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galpani3_state, galpani3_vblank, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(galpani3_state::galpani3_vblank), "screen", 0, 1);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/galpanic.cpp b/src/mame/drivers/galpanic.cpp
index 382c04155dd..fed37f72c0e 100644
--- a/src/mame/drivers/galpanic.cpp
+++ b/src/mame/drivers/galpanic.cpp
@@ -237,7 +237,7 @@ MACHINE_CONFIG_START(galpanic_state::galpanic)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000)) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(galpanic_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galpanic_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(galpanic_state::scanline), "screen", 0, 1);
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/gberet.cpp b/src/mame/drivers/gberet.cpp
index 51f1e7048bb..cb73c2c16c7 100644
--- a/src/mame/drivers/gberet.cpp
+++ b/src/mame/drivers/gberet.cpp
@@ -413,7 +413,7 @@ MACHINE_CONFIG_START(gberet_state::gberet)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6) // X1S (generated by a custom IC)
MCFG_DEVICE_PROGRAM_MAP(gberet_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gberet_state, gberet_interrupt_tick, "screen", 0, 16)
+ TIMER(config, "scantimer").configure_scanline(FUNC(gberet_state::gberet_interrupt_tick), "screen", 0, 16);
WATCHDOG_TIMER(config, "watchdog");
MCFG_MACHINE_START_OVERRIDE(gberet_state,gberet)
diff --git a/src/mame/drivers/gcpinbal.cpp b/src/mame/drivers/gcpinbal.cpp
index 9b02f4a3d76..5d3b5821f3f 100644
--- a/src/mame/drivers/gcpinbal.cpp
+++ b/src/mame/drivers/gcpinbal.cpp
@@ -358,7 +358,7 @@ MACHINE_CONFIG_START(gcpinbal_state::gcpinbal)
MCFG_DEVICE_ADD("maincpu", M68000, 32_MHz_XTAL/2) /* 16 MHz */
MCFG_DEVICE_PROGRAM_MAP(gcpinbal_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gcpinbal_state, scanline_cb, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(gcpinbal_state::scanline_cb), "screen", 0, 1);
EEPROM_93C46_16BIT(config, "eeprom");
diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp
index 38935e17f2c..9f835ec7cc8 100644
--- a/src/mame/drivers/gei.cpp
+++ b/src/mame/drivers/gei.cpp
@@ -1006,7 +1006,7 @@ MACHINE_CONFIG_START(gei_state::getrivia)
m_ppi[1]->out_pb_callback().set(FUNC(gei_state::lamps_w));
m_ppi[1]->out_pc_callback().set(FUNC(gei_state::lamps2_w));
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_ticket, attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
@@ -1039,7 +1039,7 @@ MACHINE_CONFIG_START(gei_state::gselect)
/* basic machine hardware */
- MCFG_DEVICE_REMOVE("ticket")
+ config.device_remove("ticket");
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(gselect_map)
@@ -1055,7 +1055,7 @@ MACHINE_CONFIG_START(gei_state::jokpokera)
/* basic machine hardware */
- MCFG_DEVICE_REMOVE("ticket")
+ config.device_remove("ticket");
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(gselect_map)
diff --git a/src/mame/drivers/gimix.cpp b/src/mame/drivers/gimix.cpp
index ef390bc4d0e..9878d1905fc 100644
--- a/src/mame/drivers/gimix.cpp
+++ b/src/mame/drivers/gimix.cpp
@@ -563,7 +563,7 @@ MACHINE_CONFIG_START(gimix_state::gimix)
// uncomment this timer to use a hack that generates a regular IRQ, this will get OS-9 to boot
// for some unknown reason, OS-9 does not touch the 6840, and only clears/disables IRQs on the RTC
- //MCFG_TIMER_DRIVER_ADD_PERIODIC("test_timer",gimix_state,test_timer_w,attotime::from_msec(100))
+ //TIMER(config, "test_timer").configure_periodic(FUNC(gimix_state::test_timer_w), attotime::from_msec(100));
MACHINE_CONFIG_END
ROM_START( gimix )
diff --git a/src/mame/drivers/glasgow.cpp b/src/mame/drivers/glasgow.cpp
index b11fcb4368a..de24e2ddf58 100644
--- a/src/mame/drivers/glasgow.cpp
+++ b/src/mame/drivers/glasgow.cpp
@@ -325,7 +325,7 @@ MACHINE_CONFIG_START(glasgow_state::glasgow)
MCFG_DEVICE_ADD("beeper", BEEP, 44)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", glasgow_state, update_nmi, attotime::from_hz(50))
+ TIMER(config, "nmi_timer").configure_periodic(FUNC(glasgow_state::update_nmi), attotime::from_hz(50));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(amsterd_state::amsterd)
@@ -344,7 +344,7 @@ MACHINE_CONFIG_START(amsterd_state::dallas32)
MCFG_DEVICE_PROGRAM_MAP(dallas32_mem)
MCFG_DEVICE_REMOVE("nmi_timer")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", amsterd_state, update_nmi32, attotime::from_hz(50))
+ TIMER(config, "nmi_timer").configure_periodic(FUNC(amsterd_state::update_nmi32), attotime::from_hz(50));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp
index f1faf69ce68..be48644e9e9 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -9388,7 +9388,7 @@ MACHINE_CONFIG_START(unkch_state::unkch)
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
/* payout hardware */
- MCFG_TICKET_DISPENSER_ADD("tickets", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, m_ticket_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gp_2.cpp b/src/mame/drivers/gp_2.cpp
index 6056960d33a..394f44f5405 100644
--- a/src/mame/drivers/gp_2.cpp
+++ b/src/mame/drivers/gp_2.cpp
@@ -582,7 +582,8 @@ static const z80_daisy_config daisy_chain[] =
{ nullptr }
};
-MACHINE_CONFIG_START(gp_2_state::gp_2)
+void gp_2_state::gp_2(machine_config &config)
+{
/* basic machine hardware */
Z80(config, m_maincpu, 2457600);
m_maincpu->set_addrmap(AS_PROGRAM, &gp_2_state::gp_2_map);
@@ -605,8 +606,8 @@ MACHINE_CONFIG_START(gp_2_state::gp_2)
Z80CTC(config, m_ctc, 2457600);
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); // Todo: absence of ints will cause a watchdog reset
- MCFG_TIMER_DRIVER_ADD_PERIODIC("gp1", gp_2_state, zero_timer, attotime::from_hz(120)) // mains freq*2
-MACHINE_CONFIG_END
+ TIMER(config, "gp1").configure_periodic(FUNC(gp_2_state::zero_timer), attotime::from_hz(120)); // mains freq*2
+}
/*-------------------------------------------------------------------
/ Agents 777 (November 1984) - Model #770
diff --git a/src/mame/drivers/gundealr.cpp b/src/mame/drivers/gundealr.cpp
index e1feee5a3f4..d101d091b55 100644
--- a/src/mame/drivers/gundealr.cpp
+++ b/src/mame/drivers/gundealr.cpp
@@ -444,7 +444,7 @@ MACHINE_CONFIG_START(gundealr_state::gundealr)
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* 6 MHz verified for Yam! Yam!? */
MCFG_DEVICE_PROGRAM_MAP(gundealr_main_map)
MCFG_DEVICE_IO_MAP(main_portmap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gundealr_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(gundealr_state::scanline), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -534,7 +534,7 @@ MACHINE_CONFIG_START(gundealr_state::yamyam)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(yamyam_main_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mcusim", gundealr_state, yamyam_mcu_sim, attotime::from_hz(6000000/60)) /* 6mhz confirmed */
+ TIMER(config, "mcusim").configure_periodic(FUNC(gundealr_state::yamyam_mcu_sim), attotime::from_hz(6000000/60)); /* 6mhz confirmed */
MACHINE_CONFIG_END
MACHINE_CONFIG_START(gundealr_state::gundealrbl)
diff --git a/src/mame/drivers/gunpey.cpp b/src/mame/drivers/gunpey.cpp
index edeb8d227db..9872e569937 100644
--- a/src/mame/drivers/gunpey.cpp
+++ b/src/mame/drivers/gunpey.cpp
@@ -1223,7 +1223,7 @@ MACHINE_CONFIG_START(gunpey_state::gunpey)
MCFG_DEVICE_ADD("maincpu", V30, 57242400 / 4)
MCFG_DEVICE_PROGRAM_MAP(mem_map)
MCFG_DEVICE_IO_MAP(io_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gunpey_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(gunpey_state::scanline), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/halleys.cpp b/src/mame/drivers/halleys.cpp
index f000894af47..02b075c3687 100644
--- a/src/mame/drivers/halleys.cpp
+++ b/src/mame/drivers/halleys.cpp
@@ -1933,7 +1933,7 @@ void halleys_state::machine_reset()
MACHINE_CONFIG_START(halleys_state::halleys)
MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(19'968'000)/12) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(halleys_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", halleys_state, halleys_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(halleys_state::halleys_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(6'000'000)/2) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(sound_map)
@@ -1973,8 +1973,8 @@ MACHINE_CONFIG_START(halleys_state::benberob)
halleys(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_CLOCK(XTAL(19'968'000)/12) /* not verified but pcb identical to halley's comet */
- MCFG_TIMER_MODIFY("scantimer")
- MCFG_TIMER_DRIVER_CALLBACK(halleys_state, benberob_scanline)
+
+ subdevice<timer_device>("scantimer")->set_callback(FUNC(halleys_state::benberob_scanline));
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(halleys_state, screen_update_benberob)
diff --git a/src/mame/drivers/hankin.cpp b/src/mame/drivers/hankin.cpp
index 28746abb8cb..dc7d8294cc8 100644
--- a/src/mame/drivers/hankin.cpp
+++ b/src/mame/drivers/hankin.cpp
@@ -524,8 +524,8 @@ MACHINE_CONFIG_START(hankin_state::hankin)
m_ic2->irqa_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
m_ic2->irqb_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", hankin_state, timer_x, attotime::from_hz(120)) // mains freq*2
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_s", hankin_state, timer_s, attotime::from_hz(94000)) // 555 on sound board*2
+ TIMER(config, "timer_x").configure_periodic(FUNC(hankin_state::timer_x), attotime::from_hz(120)); // mains freq*2
+ TIMER(config, "timer_s").configure_periodic(FUNC(hankin_state::timer_s), attotime::from_hz(94000)); // 555 on sound board*2
MACHINE_CONFIG_END
/*--------------------------------
diff --git a/src/mame/drivers/hh_melps4.cpp b/src/mame/drivers/hh_melps4.cpp
index 6b9f0e4f129..6f6f49451ce 100644
--- a/src/mame/drivers/hh_melps4.cpp
+++ b/src/mame/drivers/hh_melps4.cpp
@@ -310,7 +310,7 @@ MACHINE_CONFIG_START(cfrogger_state::cfrogger)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_SIZE(500, 1080)
MCFG_SCREEN_VISIBLE_AREA(0, 500-1, 0, 1080-1)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_melps4_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_melps4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -426,7 +426,7 @@ MACHINE_CONFIG_START(gjungler_state::gjungler)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_SIZE(481, 1080)
MCFG_SCREEN_VISIBLE_AREA(0, 481-1, 0, 1080-1)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_melps4_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_melps4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/hideseek.cpp b/src/mame/drivers/hideseek.cpp
index 0f5280a1e14..fd85859aee7 100644
--- a/src/mame/drivers/hideseek.cpp
+++ b/src/mame/drivers/hideseek.cpp
@@ -108,7 +108,7 @@ MACHINE_CONFIG_START(hideseek_state::hideseek)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", SH2, 7372800 * 4 )
MCFG_DEVICE_PROGRAM_MAP(mem_map)
-// MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hideseek_state, hideseek_scanline, "screen", 0, 1)
+// TIMER(config, "scantimer").configure_scanline(FUNC(hideseek_state::hideseek_scanline), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/higemaru.cpp b/src/mame/drivers/higemaru.cpp
index 22d52ab9337..0465404898a 100644
--- a/src/mame/drivers/higemaru.cpp
+++ b/src/mame/drivers/higemaru.cpp
@@ -168,7 +168,7 @@ MACHINE_CONFIG_START(higemaru_state::higemaru)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* 3 MHz Sharp LH0080A Z80A-CPU-D */
MCFG_DEVICE_PROGRAM_MAP(higemaru_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", higemaru_state, higemaru_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(higemaru_state::higemaru_scanline), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/hp2640.cpp b/src/mame/drivers/hp2640.cpp
index adf45587cff..8f0059cdcc2 100644
--- a/src/mame/drivers/hp2640.cpp
+++ b/src/mame/drivers/hp2640.cpp
@@ -971,8 +971,8 @@ MACHINE_CONFIG_START(hp2645_state::hp2645)
MCFG_DEVICE_IO_MAP(cpu_io_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(hp2645_state , irq_callback)
- MCFG_TIMER_DRIVER_ADD("timer_10ms" , hp2645_state , timer_10ms_exp)
- MCFG_TIMER_DRIVER_ADD("timer_cursor_blink_inh" , hp2645_state , timer_cursor_blink_inh)
+ TIMER(config, m_timer_10ms).configure_generic(FUNC(hp2645_state::timer_10ms_exp));
+ TIMER(config, m_timer_cursor_blink_inh).configure_generic(FUNC(hp2645_state::timer_cursor_blink_inh));
MCFG_SCREEN_ADD_MONOCHROME("screen" , RASTER , rgb_t::white())
// Actual pixel clock is half this value: 21.06 MHz
@@ -982,7 +982,7 @@ MACHINE_CONFIG_START(hp2645_state::hp2645)
VIDEO_TOT_COLS * VIDEO_CHAR_WIDTH * 2 , 0 , VIDEO_VIS_COLS * VIDEO_CHAR_WIDTH * 2 ,
VIDEO_TOT_ROWS * VIDEO_CHAR_HEIGHT , 0 , VIDEO_VIS_ROWS * VIDEO_CHAR_HEIGHT)
MCFG_SCREEN_UPDATE_DRIVER(hp2645_state , screen_update)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp2645_state, scanline_timer, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(hp2645_state::scanline_timer), "screen", 0, 1);
PALETTE(config, m_palette, palette_device::MONOCHROME_HIGHLIGHT);
config.set_default_layout(layout_hp2640);
@@ -999,7 +999,7 @@ MACHINE_CONFIG_START(hp2645_state::hp2645)
// Beep
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, BEEP_FREQUENCY).add_route(ALL_OUTPUTS, "mono", 1.00);
- MCFG_TIMER_DRIVER_ADD("timer_beep" , hp2645_state , timer_beep_exp)
+ TIMER(config, m_timer_beep).configure_generic(FUNC(hp2645_state::timer_beep_exp));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp
index d50086577ea..fb40e91fe4e 100644
--- a/src/mame/drivers/hp64k.cpp
+++ b/src/mame/drivers/hp64k.cpp
@@ -1384,10 +1384,10 @@ MACHINE_CONFIG_START(hp64k_state::hp64k)
m_cpu->set_irq_acknowledge_callback(FUNC(hp64k_state::hp64k_irq_callback));
// Actual keyboard refresh rate should be between 1 and 2 kHz
- MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer", hp64k_state, hp64k_kb_scan, attotime::from_hz(100))
+ TIMER(config, "kb_timer").configure_periodic(FUNC(hp64k_state::hp64k_kb_scan), attotime::from_hz(100));
// Line sync timer. A line frequency of 50 Hz is assumed.
- MCFG_TIMER_DRIVER_ADD_PERIODIC("linesync_timer", hp64k_state, hp64k_line_sync, attotime::from_hz(50))
+ TIMER(config, "linesync_timer").configure_periodic(FUNC(hp64k_state::hp64k_line_sync), attotime::from_hz(50));
// Clock = 25 MHz / 9 * (112/114)
I8275(config, m_crtc, 2729045);
@@ -1433,7 +1433,7 @@ MACHINE_CONFIG_START(hp64k_state::hp64k)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 2500).add_route(ALL_OUTPUTS, "mono", 1.00);
- MCFG_TIMER_DRIVER_ADD("beep_timer", hp64k_state, hp64k_beeper_off);
+ TIMER(config, m_beep_timer).configure_generic(FUNC(hp64k_state::hp64k_beeper_off));
COM8116(config, m_baud_rate, 5.0688_MHz_XTAL);
m_baud_rate->fr_handler().set(FUNC(hp64k_state::hp64k_baud_clk_w));
diff --git a/src/mame/drivers/hp80.cpp b/src/mame/drivers/hp80.cpp
index 1c848d44f70..87a311a4b8c 100644
--- a/src/mame/drivers/hp80.cpp
+++ b/src/mame/drivers/hp80.cpp
@@ -1343,15 +1343,15 @@ MACHINE_CONFIG_START(hp85_state::hp85)
MCFG_SCREEN_UPDATE_DRIVER(hp85_state , screen_update)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hp85_state, vblank_w))
PALETTE(config, m_palette, palette_device::MONOCHROME);
- MCFG_TIMER_DRIVER_ADD("vm_timer", hp85_state, vm_timer)
+ TIMER(config, m_vm_timer).configure_generic(FUNC(hp85_state::vm_timer));
// No idea at all about the actual keyboard scan frequency
- MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer" , hp85_state , kb_scan , attotime::from_hz(100))
+ TIMER(config, "kb_timer").configure_periodic(FUNC(hp85_state::kb_scan), attotime::from_hz(100));
// Hw timers are updated at 1 kHz rate
- MCFG_TIMER_DRIVER_ADD_PERIODIC("hw_timer" , hp85_state , timer_update , attotime::from_hz(1000))
- MCFG_TIMER_DRIVER_ADD("clk_busy_timer", hp85_state, clk_busy_timer)
- MCFG_TIMER_DRIVER_ADD("prt_busy_timer", hp85_state, prt_busy_timer)
+ TIMER(config, "hw_timer").configure_periodic(FUNC(hp85_state::timer_update), attotime::from_hz(1000));
+ TIMER(config, m_clk_busy_timer).configure_generic(FUNC(hp85_state::clk_busy_timer));
+ TIMER(config, m_prt_busy_timer).configure_generic(FUNC(hp85_state::prt_busy_timer));
// Beeper
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp
index 283ff3e6c90..0bb56a8377f 100644
--- a/src/mame/drivers/hp9845.cpp
+++ b/src/mame/drivers/hp9845.cpp
@@ -3648,17 +3648,17 @@ MACHINE_CONFIG_START(hp9845_base_state::hp9845_base)
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_TIMER_DRIVER_ADD("gv_timer", hp9845_base_state, gv_timer)
+ TIMER(config, m_gv_timer).configure_generic(FUNC(hp9845_base_state::gv_timer));
// Actual keyboard refresh rate should be KEY_SCAN_OSCILLATOR / 128 (2560 Hz)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer" , hp9845_base_state , kb_scan , attotime::from_hz(100))
+ TIMER(config, "kb_timer").configure_periodic(FUNC(hp9845_base_state::kb_scan), attotime::from_hz(100));
// Beeper
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("beeper" , BEEP , KEY_SCAN_OSCILLATOR / 512)
MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 0.50)
- MCFG_TIMER_DRIVER_ADD("beep_timer" , hp9845_base_state , beeper_off);
+ TIMER(config, m_beep_timer).configure_generic(FUNC(hp9845_base_state::beeper_off));
// Tape drives
HP_TACO(config , m_t15 , 4000000);
@@ -3721,7 +3721,7 @@ MACHINE_CONFIG_START(hp9845b_state::hp9845b)
// These parameters are for alpha video
MCFG_SCREEN_RAW_PARAMS(VIDEO_PIXEL_CLOCK , VIDEO_HTOTAL , 0 , VIDEO_HBSTART , VIDEO_VTOTAL , 0 , VIDEO_ACTIVE_SCANLINES)
MCFG_PALETTE_ADD("palette", 4)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845b_state, scanline_timer, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(hp9845b_state::scanline_timer), "screen", 0, 1);
config.set_default_layout(layout_hp9845b);
@@ -3737,7 +3737,7 @@ MACHINE_CONFIG_START(hp9845c_state::hp9845c)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hp9845c_state, vblank_w))
MCFG_SCREEN_RAW_PARAMS(VIDEO_770_PIXEL_CLOCK , VIDEO_770_HTOTAL , VIDEO_770_HBEND , VIDEO_770_HBSTART , VIDEO_770_VTOTAL , VIDEO_770_VBEND , VIDEO_770_VBSTART)
MCFG_PALETTE_ADD("palette", 24)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845c_state, scanline_timer, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(hp9845c_state::scanline_timer), "screen", 0, 1);
MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom")
@@ -3752,7 +3752,7 @@ MACHINE_CONFIG_START(hp9845t_state::hp9845t)
MCFG_SCREEN_COLOR(rgb_t::green())
MCFG_SCREEN_RAW_PARAMS(VIDEO_780_PIXEL_CLOCK , VIDEO_780_HTOTAL , VIDEO_780_HBEND , VIDEO_780_HBSTART , VIDEO_780_VTOTAL , VIDEO_780_VBEND , VIDEO_780_VBSTART)
MCFG_PALETTE_ADD("palette", 5)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845t_state, scanline_timer, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(hp9845t_state::scanline_timer), "screen", 0, 1);
MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom")
diff --git a/src/mame/drivers/huebler.cpp b/src/mame/drivers/huebler.cpp
index ff273669060..00ed00369e6 100644
--- a/src/mame/drivers/huebler.cpp
+++ b/src/mame/drivers/huebler.cpp
@@ -318,7 +318,7 @@ MACHINE_CONFIG_START(amu880_state::amu880)
m_maincpu->set_addrmap(AS_IO, &amu880_state::amu880_io);
m_maincpu->set_daisy_config(amu880_daisy_chain);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", amu880_state, keyboard_tick, attotime::from_hz(1500))
+ TIMER(config, "keyboard").configure_periodic(FUNC(amu880_state::keyboard_tick), attotime::from_hz(1500));
/* video hardware */
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
@@ -348,7 +348,7 @@ MACHINE_CONFIG_START(amu880_state::amu880)
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", amu880_state, tape_tick, attotime::from_hz(44100))
+ TIMER(config, "tape").configure_periodic(FUNC(amu880_state::tape_tick), attotime::from_hz(44100));
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
diff --git a/src/mame/drivers/hvyunit.cpp b/src/mame/drivers/hvyunit.cpp
index 1f4b11a2dc7..24db9fdd943 100644
--- a/src/mame/drivers/hvyunit.cpp
+++ b/src/mame/drivers/hvyunit.cpp
@@ -623,7 +623,7 @@ MACHINE_CONFIG_START(hvyunit_state::hvyunit)
MCFG_DEVICE_ADD("master", Z80, XTAL(12'000'000)/2) /* 6MHz verified on PCB */
MCFG_DEVICE_PROGRAM_MAP(master_memory)
MCFG_DEVICE_IO_MAP(master_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hvyunit_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(hvyunit_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", Z80, XTAL(12'000'000)/2) /* 6MHz verified on PCB */
MCFG_DEVICE_PROGRAM_MAP(slave_memory)
diff --git a/src/mame/drivers/hyprduel.cpp b/src/mame/drivers/hyprduel.cpp
index c956983534a..982b72ab30e 100644
--- a/src/mame/drivers/hyprduel.cpp
+++ b/src/mame/drivers/hyprduel.cpp
@@ -452,7 +452,7 @@ MACHINE_CONFIG_START(hyprduel_state::hyprduel)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000,20000000/2) /* 10MHz */
MCFG_DEVICE_PROGRAM_MAP(hyprduel_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hyprduel_state, interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(hyprduel_state::interrupt), "screen", 0, 1);
MCFG_DEVICE_ADD("sub", M68000,20000000/2) /* 10MHz */
MCFG_DEVICE_PROGRAM_MAP(hyprduel_map2)
@@ -479,7 +479,7 @@ MACHINE_CONFIG_START(hyprduel_state::magerror)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000,20000000/2) /* 10MHz */
MCFG_DEVICE_PROGRAM_MAP(magerror_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hyprduel_state, interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(hyprduel_state::interrupt), "screen", 0, 1);
MCFG_DEVICE_ADD("sub", M68000,20000000/2) /* 10MHz */
MCFG_DEVICE_PROGRAM_MAP(magerror_map2)
diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp
index 94d3949100b..544af85706b 100644
--- a/src/mame/drivers/igs017.cpp
+++ b/src/mame/drivers/igs017.cpp
@@ -3520,7 +3520,7 @@ MACHINE_CONFIG_START(igs017_state::iqblocka)
MCFG_DEVICE_ADD("maincpu", Z180, XTAL(16'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(iqblocka_map)
MCFG_DEVICE_IO_MAP(iqblocka_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, iqblocka_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,iqblocka)
@@ -3618,7 +3618,7 @@ MACHINE_RESET_MEMBER(igs017_state,mgcs)
MACHINE_CONFIG_START(igs017_state::mgcs)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(mgcs)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3627,7 +3627,7 @@ MACHINE_CONFIG_START(igs017_state::mgcs)
ppi.in_pa_callback().set_ioport("COINS");
ppi.in_pb_callback().set(FUNC(igs017_state::mgcs_keys_r));
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
+ TICKET_DISPENSER(config, m_hopperdev, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW );
// video
MCFG_SCREEN_ADD("screen", RASTER)
@@ -3656,7 +3656,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(igs017_state::lhzb2)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(lhzb2)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3705,7 +3705,7 @@ MACHINE_RESET_MEMBER(igs017_state,lhzb2a)
MACHINE_CONFIG_START(igs017_state::lhzb2a)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000)/2)
MCFG_DEVICE_PROGRAM_MAP(lhzb2a)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,lhzb2a)
@@ -3750,7 +3750,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(igs017_state::slqz2)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(slqz2)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3793,7 +3793,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(igs017_state::sdmg2)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000)/2)
MCFG_DEVICE_PROGRAM_MAP(sdmg2)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3839,7 +3839,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::mgdh_interrupt)
MACHINE_CONFIG_START(igs017_state::mgdha)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(mgdha_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgdh_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgdh_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3874,7 +3874,7 @@ MACHINE_CONFIG_START(igs017_state::tjsb)
MCFG_DEVICE_ADD("maincpu", Z180, XTAL(16'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(tjsb_map)
MCFG_DEVICE_IO_MAP(tjsb_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, iqblocka_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,iqblocka)
@@ -3915,7 +3915,7 @@ MACHINE_CONFIG_START(igs017_state::spkrform)
MCFG_DEVICE_ADD("maincpu", Z180, XTAL(16'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(spkrform_map)
MCFG_DEVICE_IO_MAP(spkrform_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, iqblocka_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,iqblocka)
diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp
index 993dcd9c373..95e7766f590 100644
--- a/src/mame/drivers/igspoker.cpp
+++ b/src/mame/drivers/igspoker.cpp
@@ -1927,7 +1927,7 @@ MACHINE_CONFIG_START(igspoker_state::igspoker)
MCFG_DEVICE_ADD("maincpu",Z80, 3579545)
MCFG_DEVICE_PROGRAM_MAP(igspoker_prg_map)
MCFG_DEVICE_IO_MAP(igspoker_io_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igspoker_state, igs_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(igspoker_state::igs_interrupt), "screen", 0, 1);
i8255_device &ppi(I8255A(config, "ppi"));
ppi.out_pa_callback().set(FUNC(igspoker_state::igs_nmi_and_coins_w));
diff --git a/src/mame/drivers/ikki.cpp b/src/mame/drivers/ikki.cpp
index 8e160984c03..a4c00f29472 100644
--- a/src/mame/drivers/ikki.cpp
+++ b/src/mame/drivers/ikki.cpp
@@ -258,7 +258,7 @@ MACHINE_CONFIG_START(ikki_state::ikki)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,CPU_CLOCK/2) /* 4.000MHz */
MCFG_DEVICE_PROGRAM_MAP(ikki_cpu1)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ikki_state, ikki_irq, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(ikki_state::ikki_irq), "screen", 0, 1);
MCFG_DEVICE_ADD("sub", Z80,CPU_CLOCK/2) /* 4.000MHz */
MCFG_DEVICE_PROGRAM_MAP(ikki_cpu2)
diff --git a/src/mame/drivers/imolagp.cpp b/src/mame/drivers/imolagp.cpp
index 082886e45a5..99eb1230e90 100644
--- a/src/mame/drivers/imolagp.cpp
+++ b/src/mame/drivers/imolagp.cpp
@@ -518,7 +518,7 @@ MACHINE_CONFIG_START(imolagp_state::imolagp)
MCFG_DEVICE_ADD("maincpu", Z80, 3000000) // ? (assume slower than slave)
MCFG_DEVICE_PROGRAM_MAP(imolagp_master_map)
MCFG_DEVICE_IO_MAP(imolagp_master_io)
- MCFG_TIMER_DRIVER_ADD("pot", imolagp_state, imolagp_pot_callback) // maincpu nmi
+ TIMER(config, m_steer_pot_timer).configure_generic(FUNC(imolagp_state::imolagp_pot_callback)); // maincpu nmi
MCFG_DEVICE_ADD("slave", Z80, 4000000) // ?
MCFG_DEVICE_PROGRAM_MAP(imolagp_slave_map)
diff --git a/src/mame/drivers/iq151.cpp b/src/mame/drivers/iq151.cpp
index 7574b6fb4ec..63a076bcbe3 100644
--- a/src/mame/drivers/iq151.cpp
+++ b/src/mame/drivers/iq151.cpp
@@ -425,7 +425,7 @@ MACHINE_CONFIG_START(iq151_state::iq151)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
MCFG_CASSETTE_INTERFACE("iq151_cass")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", iq151_state, cassette_timer, attotime::from_hz(2000))
+ TIMER(config, "cassette_timer").configure_periodic(FUNC(iq151_state::cassette_timer), attotime::from_hz(2000));
/* cartridge */
MCFG_DEVICE_ADD("slot1", IQ151CART_SLOT, 0)
diff --git a/src/mame/drivers/iqblock.cpp b/src/mame/drivers/iqblock.cpp
index a8f5fa8192a..247aeb87183 100644
--- a/src/mame/drivers/iqblock.cpp
+++ b/src/mame/drivers/iqblock.cpp
@@ -346,7 +346,7 @@ MACHINE_CONFIG_START(iqblock_state::iqblock)
MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6 MHz */
MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_DEVICE_IO_MAP(main_portmap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", iqblock_state, irq, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(iqblock_state::irq), "screen", 0, 1);
i8255_device &ppi(I8255A(config, "ppi8255"));
ppi.in_pa_callback().set_ioport("P1");
diff --git a/src/mame/drivers/ironhors.cpp b/src/mame/drivers/ironhors.cpp
index 0c39d8a1c4d..8b9616d816e 100644
--- a/src/mame/drivers/ironhors.cpp
+++ b/src/mame/drivers/ironhors.cpp
@@ -383,7 +383,7 @@ MACHINE_CONFIG_START(ironhors_state::ironhors)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809E, 18432000/6) /* 3.072 MHz??? mod by Shingo Suzuki 1999/10/15 */
MCFG_DEVICE_PROGRAM_MAP(master_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ironhors_state, ironhors_scanline_tick, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(ironhors_state::ironhors_scanline_tick), "screen", 0, 1);
MCFG_DEVICE_ADD("soundcpu", Z80, 18432000/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(slave_map)
@@ -447,8 +447,7 @@ MACHINE_CONFIG_START(ironhors_state::farwest)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(farwest_master_map)
- MCFG_DEVICE_MODIFY("scantimer")
- MCFG_TIMER_DRIVER_CALLBACK(ironhors_state, farwest_scanline_tick)
+ subdevice<timer_device>("scantimer")->set_callback(FUNC(ironhors_state::farwest_scanline_tick));
MCFG_DEVICE_MODIFY("soundcpu")
MCFG_DEVICE_PROGRAM_MAP(farwest_slave_map)
diff --git a/src/mame/drivers/jalmah.cpp b/src/mame/drivers/jalmah.cpp
index 64d63283345..92a2b710603 100644
--- a/src/mame/drivers/jalmah.cpp
+++ b/src/mame/drivers/jalmah.cpp
@@ -1105,7 +1105,7 @@ MACHINE_CONFIG_START(jalmah_state::jalmah)
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x400);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mcusim", jalmah_state, mcu_sim, attotime::from_hz(10000))
+ TIMER(config, "mcusim").configure_periodic(FUNC(jalmah_state::mcu_sim), attotime::from_hz(10000));
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, 4000000, okim6295_device::PIN7_LOW)
diff --git a/src/mame/drivers/jchan.cpp b/src/mame/drivers/jchan.cpp
index 25d45bfa545..33e5cf4a321 100644
--- a/src/mame/drivers/jchan.cpp
+++ b/src/mame/drivers/jchan.cpp
@@ -607,7 +607,7 @@ MACHINE_CONFIG_START(jchan_state::jchan)
MCFG_DEVICE_ADD("maincpu", M68000, 16000000)
MCFG_DEVICE_PROGRAM_MAP(jchan_main)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", jchan_state, vblank, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(jchan_state::vblank), "screen", 0, 1);
MCFG_DEVICE_ADD("sub", M68000, 16000000)
MCFG_DEVICE_PROGRAM_MAP(jchan_sub)
diff --git a/src/mame/drivers/jclub2.cpp b/src/mame/drivers/jclub2.cpp
index 57dc4d26b5d..a511e6a6a7e 100644
--- a/src/mame/drivers/jclub2.cpp
+++ b/src/mame/drivers/jclub2.cpp
@@ -1134,7 +1134,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(common_state::scanline_irq)
MACHINE_CONFIG_START(jclub2o_state::jclub2o)
MCFG_DEVICE_ADD("maincpu", M68EC020, 12000000)
MCFG_DEVICE_PROGRAM_MAP(jclub2o_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", common_state, scanline_irq, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(common_state::scanline_irq), "screen", 0, 1);
MCFG_DEVICE_ADD("soundcpu",ST0016_CPU, 8000000)
MCFG_DEVICE_PROGRAM_MAP(st0016_mem)
@@ -1145,8 +1145,8 @@ MACHINE_CONFIG_START(jclub2o_state::jclub2o)
EEPROM_S29290_16BIT(config, "eeprom");
WATCHDOG_TIMER(config, "watchdog");
- MCFG_TICKET_DISPENSER_ADD("hopper1", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
- MCFG_TICKET_DISPENSER_ADD("hopper2", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_hopper1, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ TICKET_DISPENSER(config, m_hopper2, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1172,14 +1172,14 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(jclub2_state::jclub2)
MCFG_DEVICE_ADD("maincpu", M68EC020, 12000000)
MCFG_DEVICE_PROGRAM_MAP(jclub2_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", common_state, scanline_irq, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(common_state::scanline_irq), "screen", 0, 1);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_8BIT(config, "eeprom");
WATCHDOG_TIMER(config, "watchdog");
- MCFG_TICKET_DISPENSER_ADD("hopper1", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
- MCFG_TICKET_DISPENSER_ADD("hopper2", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_hopper1, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ TICKET_DISPENSER(config, m_hopper2, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1206,14 +1206,14 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(darkhors_state::darkhors)
MCFG_DEVICE_ADD("maincpu", M68EC020, 12000000) // 36MHz/3 ??
MCFG_DEVICE_PROGRAM_MAP(darkhors_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", common_state, scanline_irq, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(common_state::scanline_irq), "screen", 0, 1);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_8BIT(config, "eeprom");
WATCHDOG_TIMER(config, "watchdog");
- MCFG_TICKET_DISPENSER_ADD("hopper1", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
- MCFG_TICKET_DISPENSER_ADD("hopper2", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_hopper1, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ TICKET_DISPENSER(config, m_hopper2, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/jeutel.cpp b/src/mame/drivers/jeutel.cpp
index 175737bc586..3dff8566ab2 100644
--- a/src/mame/drivers/jeutel.cpp
+++ b/src/mame/drivers/jeutel.cpp
@@ -252,7 +252,7 @@ MACHINE_CONFIG_START(jeutel_state::jeutel)
//ppi2.in_pc_callback().set_ioport("EXTRA");
//ppi2.out_pc_callback().set(FUNC(jeutel_state::ppi2c_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", jeutel_state, timer_a, attotime::from_hz(120))
+ TIMER(config, "timer_a").configure_periodic(FUNC(jeutel_state::timer_a), attotime::from_hz(120));
MACHINE_CONFIG_END
/*--------------------------------
diff --git a/src/mame/drivers/jpmimpct.cpp b/src/mame/drivers/jpmimpct.cpp
index 1cc9c691cfd..84ba4e11d69 100644
--- a/src/mame/drivers/jpmimpct.cpp
+++ b/src/mame/drivers/jpmimpct.cpp
@@ -858,7 +858,7 @@ MACHINE_CONFIG_START(jpmimpct_state::jpmimpct)
MCFG_MACHINE_RESET_OVERRIDE(jpmimpct_state,jpmimpct)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TIMER_DRIVER_ADD("duart_1_timer", jpmimpct_state, duart_1_timer_event)
+ TIMER(config, m_duart_1_timer).configure_generic(FUNC(jpmimpct_state::duart_1_timer_event));
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(40000000/4, 156*4, 0, 100*4, 328, 0, 300)
@@ -1327,7 +1327,7 @@ MACHINE_CONFIG_START(jpmimpct_state::impctawp)
ppi.in_pc_callback().set(FUNC(jpmimpct_state::hopper_c_r));
ppi.out_pc_callback().set(FUNC(jpmimpct_state::display_c_w));
- MCFG_TIMER_DRIVER_ADD("duart_1_timer", jpmimpct_state, duart_1_timer_event)
+ TIMER(config, m_duart_1_timer).configure_generic(FUNC(jpmimpct_state::duart_1_timer_event));
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("upd",UPD7759)
diff --git a/src/mame/drivers/junior.cpp b/src/mame/drivers/junior.cpp
index 83072d16866..771bca1c347 100644
--- a/src/mame/drivers/junior.cpp
+++ b/src/mame/drivers/junior.cpp
@@ -243,7 +243,7 @@ MACHINE_CONFIG_START(junior_state::junior)
m_riot->irq_wr_callback().set_inputline(m_maincpu, M6502_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", junior_state, junior_update_leds, attotime::from_hz(50))
+ TIMER(config, "led_timer").configure_periodic(FUNC(junior_state::junior_update_leds), attotime::from_hz(50));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jupace.cpp b/src/mame/drivers/jupace.cpp
index 8b551db5d1f..12eadf3e305 100644
--- a/src/mame/drivers/jupace.cpp
+++ b/src/mame/drivers/jupace.cpp
@@ -767,8 +767,8 @@ MACHINE_CONFIG_START(ace_state::ace)
MCFG_SCREEN_RAW_PARAMS(XTAL(6'500'000), 416, 0, 336, 312, 0, 304)
MCFG_SCREEN_PALETTE("palette")
- MCFG_TIMER_DRIVER_ADD_SCANLINE("set_irq", ace_state, set_irq, SCREEN_TAG, 31*8, 264)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("clear_irq", ace_state, clear_irq, SCREEN_TAG, 32*8, 264)
+ TIMER(config, "set_irq").configure_scanline(FUNC(ace_state::set_irq), SCREEN_TAG, 31*8, 264);
+ TIMER(config, "clear_irq").configure_scanline(FUNC(ace_state::clear_irq), SCREEN_TAG, 32*8, 264);
PALETTE(config, "palette", palette_device::MONOCHROME);
diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp
index 9e166ea1560..48d46d876d9 100644
--- a/src/mame/drivers/kaneko16.cpp
+++ b/src/mame/drivers/kaneko16.cpp
@@ -1773,7 +1773,7 @@ MACHINE_CONFIG_START(kaneko16_berlwall_state::berlwall)
/* basic machine hardware */
M68000(config, m_maincpu, 12000000); /* MC68000P12 */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_berlwall_state::berlwall_map);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
WATCHDOG_TIMER(config, m_watchdog);
@@ -1835,7 +1835,7 @@ MACHINE_CONFIG_START(kaneko16_state::bakubrkr)
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(12'000'000)); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_state::bakubrkr_map);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(kaneko16_state,gtmr)
EEPROM_93C46_16BIT(config, m_eeprom);
@@ -1907,7 +1907,7 @@ MACHINE_CONFIG_START(kaneko16_state::blazeon)
/* basic machine hardware */
M68000(config, m_maincpu, 12000000); /* TMP68HC000-12 */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_state::blazeon_map);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
Z80(config, m_audiocpu, 4000000); /* D780C-2 (6 MHz) */
m_audiocpu->set_addrmap(AS_PROGRAM, &kaneko16_state::blazeon_soundmem);
@@ -1962,7 +1962,7 @@ MACHINE_CONFIG_START(kaneko16_state::wingforc)
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(16'000'000)); /* TMP68HC000N-16 */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_state::blazeon_map);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* D780C-2 (6 MHz) */
m_audiocpu->set_addrmap(AS_PROGRAM, &kaneko16_state::blazeon_soundmem);
@@ -2040,7 +2040,7 @@ MACHINE_CONFIG_START(kaneko16_gtmr_state::gtmr)
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(16'000'000)); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_gtmr_state::gtmr_map);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(kaneko16_gtmr_state,gtmr)
@@ -2148,7 +2148,7 @@ MACHINE_CONFIG_START(kaneko16_state::mgcrystl)
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(12'000'000)); /* verified on pcb, TMP68HC000N-12 @U31 and X2 is 12MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_state::mgcrystl_map);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(kaneko16_state,mgcrystl)
@@ -2266,7 +2266,7 @@ MACHINE_CONFIG_START(kaneko16_shogwarr_state::shogwarr)
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(12'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_shogwarr_state::shogwarr_map);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_shogwarr_state, shogwarr_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_shogwarr_state::shogwarr_interrupt), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(kaneko16_shogwarr_state,mgcrystl)
diff --git a/src/mame/drivers/kas89.cpp b/src/mame/drivers/kas89.cpp
index fffa09cd05e..557be24145f 100644
--- a/src/mame/drivers/kas89.cpp
+++ b/src/mame/drivers/kas89.cpp
@@ -773,12 +773,12 @@ MACHINE_CONFIG_START(kas89_state::kas89)
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* Confirmed */
MCFG_DEVICE_PROGRAM_MAP(kas89_map)
MCFG_DEVICE_IO_MAP(kas89_io)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("kas89_nmi", kas89_state, kas89_nmi_cb, attotime::from_hz(138))
+ TIMER(config, "kas89_nmi").configure_periodic(FUNC(kas89_state::kas89_nmi_cb), attotime::from_hz(138));
MCFG_DEVICE_ADD("audiocpu", Z80, MASTER_CLOCK/6) /* Confirmed */
MCFG_DEVICE_PROGRAM_MAP(audio_map)
MCFG_DEVICE_IO_MAP(audio_io)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("kas89_snmi", kas89_state, kas89_sound_nmi_cb, attotime::from_hz(138))
+ TIMER(config, "kas89_snmi").configure_periodic(FUNC(kas89_state::kas89_sound_nmi_cb), attotime::from_hz(138));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/kc.cpp b/src/mame/drivers/kc.cpp
index 7fbf8fed1ec..7456eacfe32 100644
--- a/src/mame/drivers/kc.cpp
+++ b/src/mame/drivers/kc.cpp
@@ -125,7 +125,7 @@ MACHINE_CONFIG_START(kc_state::kc85_3)
MCFG_SCREEN_RAW_PARAMS(XTAL(28'375'160)/2, 908, 0, 320, 312, 0, 256)
MCFG_SCREEN_UPDATE_DRIVER(kc_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kc_state, kc_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kc_state::kc_scanline), "screen", 0, 1);
PALETTE(config, "palette", FUNC(kc_state::kc85_palette), KC85_PALETTE_SIZE);
@@ -205,7 +205,7 @@ MACHINE_CONFIG_START(kc85_4_state::kc85_4)
MCFG_SCREEN_RAW_PARAMS(XTAL(28'375'160)/2, 908, 0, 320, 312, 0, 256)
MCFG_SCREEN_UPDATE_DRIVER(kc85_4_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kc85_4_state, kc_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kc85_4_state::kc_scanline), "screen", 0, 1);
PALETTE(config, "palette", FUNC(kc85_4_state::kc85_palette), KC85_PALETTE_SIZE);
diff --git a/src/mame/drivers/kdt6.cpp b/src/mame/drivers/kdt6.cpp
index 9ca94a8bb09..8b2591e040c 100644
--- a/src/mame/drivers/kdt6.cpp
+++ b/src/mame/drivers/kdt6.cpp
@@ -644,7 +644,7 @@ MACHINE_CONFIG_START(kdt6_state::psi98)
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.50);
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
- MCFG_TIMER_DRIVER_ADD("beep_timer", kdt6_state, beeper_off)
+ TIMER(config, m_beep_timer).configure_generic(FUNC(kdt6_state::beeper_off));
Z80DMA(config, m_dma, 16_MHz_XTAL / 4);
m_dma->out_busreq_callback().set(FUNC(kdt6_state::busreq_w));
diff --git a/src/mame/drivers/kim1.cpp b/src/mame/drivers/kim1.cpp
index b88b53d004e..28e65781edd 100644
--- a/src/mame/drivers/kim1.cpp
+++ b/src/mame/drivers/kim1.cpp
@@ -263,8 +263,8 @@ MACHINE_CONFIG_START(kim1_state::kim1)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
MCFG_CASSETTE_INTERFACE ("kim1_cass")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", kim1_state, kim1_update_leds, attotime::from_hz(60))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", kim1_state, kim1_cassette_input, attotime::from_hz(44100))
+ TIMER(config, "led_timer").configure_periodic(FUNC(kim1_state::kim1_update_leds), attotime::from_hz(60));
+ TIMER(config, "cassette_timer").configure_periodic(FUNC(kim1_state::kim1_cassette_input), attotime::from_hz(44100));
// software list
MCFG_SOFTWARE_LIST_ADD ("cass_list", "kim1_cass")
diff --git a/src/mame/drivers/koftball.cpp b/src/mame/drivers/koftball.cpp
index 05b82ee4fa7..929b392539e 100644
--- a/src/mame/drivers/koftball.cpp
+++ b/src/mame/drivers/koftball.cpp
@@ -241,7 +241,7 @@ GFXDECODE_END
MACHINE_CONFIG_START(koftball_state::koftball)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(21'477'272) / 2)
MCFG_DEVICE_PROGRAM_MAP(koftball_mem)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", koftball_state, bmc_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(koftball_state::bmc_interrupt), "screen", 0, 1);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/konmedal68k.cpp b/src/mame/drivers/konmedal68k.cpp
index 4bc346fc4c2..38286a57418 100644
--- a/src/mame/drivers/konmedal68k.cpp
+++ b/src/mame/drivers/konmedal68k.cpp
@@ -298,7 +298,7 @@ MACHINE_CONFIG_START(konmedal68k_state::kzaurus)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(33'868'800)/4 ) // 33.8688 MHz crystal verified on PCB
MCFG_DEVICE_PROGRAM_MAP(kzaurus_main)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", konmedal68k_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(konmedal68k_state::scanline), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/laserbas.cpp b/src/mame/drivers/laserbas.cpp
index 0df02156860..cb5cae08506 100644
--- a/src/mame/drivers/laserbas.cpp
+++ b/src/mame/drivers/laserbas.cpp
@@ -373,7 +373,7 @@ MACHINE_CONFIG_START(laserbas_state::laserbas)
MCFG_DEVICE_ADD("maincpu", Z80, CLOCK / 4)
MCFG_DEVICE_PROGRAM_MAP(laserbas_memory)
MCFG_DEVICE_IO_MAP(laserbas_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", laserbas_state, laserbas_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(laserbas_state::laserbas_scanline), "screen", 0, 1);
/* TODO: clocks aren't known */
pit8253_device &pit0(PIT8253(config, "pit0", 0));
diff --git a/src/mame/drivers/lastbank.cpp b/src/mame/drivers/lastbank.cpp
index 1942d977b20..77ade1e9f19 100644
--- a/src/mame/drivers/lastbank.cpp
+++ b/src/mame/drivers/lastbank.cpp
@@ -517,7 +517,7 @@ MACHINE_CONFIG_START(lastbank_state::lastbank)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80,MASTER_CLOCK/4) //!!! TC0091LVC !!!
MCFG_DEVICE_PROGRAM_MAP(lastbank_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lastbank_state, irq_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(lastbank_state::irq_scanline), "screen", 0, 1);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/lazercmd.cpp b/src/mame/drivers/lazercmd.cpp
index 376cc587bd0..24f56591a0c 100644
--- a/src/mame/drivers/lazercmd.cpp
+++ b/src/mame/drivers/lazercmd.cpp
@@ -636,7 +636,7 @@ MACHINE_CONFIG_START(lazercmd_state::lazercmd)
thus requiring an extra loading of approx 3-5 */
MCFG_DEVICE_PROGRAM_MAP(lazercmd_map)
MCFG_DEVICE_DATA_MAP(lazercmd_portmap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lazercmd_state, lazercmd_timer, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(lazercmd_state::lazercmd_timer), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -674,7 +674,7 @@ MACHINE_CONFIG_START(lazercmd_state::medlanes)
thus requiring an extra loading of approx 3-5 */
MCFG_DEVICE_PROGRAM_MAP(medlanes_map)
MCFG_DEVICE_DATA_MAP(lazercmd_portmap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lazercmd_state, lazercmd_timer, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(lazercmd_state::lazercmd_timer), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -708,7 +708,7 @@ MACHINE_CONFIG_START(lazercmd_state::bbonk)
thus requiring an extra loading of approx 3-5 */
MCFG_DEVICE_PROGRAM_MAP(bbonk_map)
MCFG_DEVICE_DATA_MAP(lazercmd_portmap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lazercmd_state, bbonk_timer, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(lazercmd_state::bbonk_timer), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/lethalj.cpp b/src/mame/drivers/lethalj.cpp
index d21465b8ddc..ea921617b48 100644
--- a/src/mame/drivers/lethalj.cpp
+++ b/src/mame/drivers/lethalj.cpp
@@ -641,7 +641,7 @@ MACHINE_CONFIG_START(lethalj_state::gameroom)
m_maincpu->set_pixels_per_clock(1);
m_maincpu->set_scanline_ind16_callback(FUNC(lethalj_state::scanline_update));
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_ticket, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/littlerb.cpp b/src/mame/drivers/littlerb.cpp
index 4573075593e..a2522b810e8 100644
--- a/src/mame/drivers/littlerb.cpp
+++ b/src/mame/drivers/littlerb.cpp
@@ -294,8 +294,8 @@ MACHINE_CONFIG_START(littlerb_state::littlerb)
INDER_VIDEO(config, m_indervid, 0); // XTAL(40'000'000)
// TODO: not accurate - driven by XTAL(6'000'000)?
- MCFG_TIMER_DRIVER_ADD_PERIODIC("step_timer", littlerb_state, littlerb_sound_step_cb, attotime::from_hz(7500/150))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("sound_timer", littlerb_state, littlerb_sound_cb, attotime::from_hz(7500))
+ TIMER(config, "step_timer").configure_periodic(FUNC(littlerb_state::littlerb_sound_step_cb), attotime::from_hz(7500/150));
+ TIMER(config, "sound_timer").configure_periodic(FUNC(littlerb_state::littlerb_sound_cb), attotime::from_hz(7500));
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
diff --git a/src/mame/drivers/ltd.cpp b/src/mame/drivers/ltd.cpp
index 7e7ef9404e9..91987649b08 100644
--- a/src/mame/drivers/ltd.cpp
+++ b/src/mame/drivers/ltd.cpp
@@ -536,7 +536,7 @@ MACHINE_CONFIG_START(ltd_state::ltd3)
/* Sound */
genpin_audio(config);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_r", ltd_state, timer_r, attotime::from_hz(500))
+ TIMER(config, "timer_r").configure_periodic(FUNC(ltd_state::timer_r), attotime::from_hz(500));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(ltd_state::ltd4)
diff --git a/src/mame/drivers/markham.cpp b/src/mame/drivers/markham.cpp
index 5d7039eceec..f9e1e002b16 100644
--- a/src/mame/drivers/markham.cpp
+++ b/src/mame/drivers/markham.cpp
@@ -582,7 +582,7 @@ MACHINE_CONFIG_START(markham_state::strnskil)
MCFG_DEVICE_REMOVE("maincpu")
MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK/2) /* 4.000MHz */
MCFG_DEVICE_PROGRAM_MAP(strnskil_master_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", markham_state, strnskil_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(markham_state::strnskil_scanline), "screen", 0, 1);
MCFG_DEVICE_REMOVE("subcpu")
MCFG_DEVICE_ADD("subcpu", Z80, CPU_CLOCK/2) /* 4.000MHz */
diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp
index 90905c42dfd..972831831ef 100644
--- a/src/mame/drivers/maygay1b.cpp
+++ b/src/mame/drivers/maygay1b.cpp
@@ -809,7 +809,7 @@ MACHINE_CONFIG_START(maygay1b_state::maygay_m1)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq?
+ TIMER(config, "nmitimer").configure_periodic(FUNC(maygay1b_state::maygay1b_nmitimer_callback), attotime::from_hz(75)); // freq?
i8279_device &kbdc(I8279(config, "i8279", M1_MASTER_CLOCK/4)); // unknown clock
kbdc.out_sl_callback().set(FUNC(maygay1b_state::scanlines_w)); // scan SL lines
diff --git a/src/mame/drivers/mc10.cpp b/src/mame/drivers/mc10.cpp
index d5bc972e713..a889e16281a 100644
--- a/src/mame/drivers/mc10.cpp
+++ b/src/mame/drivers/mc10.cpp
@@ -559,7 +559,7 @@ MACHINE_CONFIG_START(mc10_state::alice32)
EF9345(config, m_ef9345, 0);
m_ef9345->set_palette_tag("palette");
- MCFG_TIMER_DRIVER_ADD_SCANLINE("alice32_sl", mc10_state, alice32_scanline, "screen", 0, 10)
+ TIMER(config, "alice32_sl").configure_scanline(FUNC(mc10_state::alice32_scanline), "screen", 0, 10);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
diff --git a/src/mame/drivers/mc1000.cpp b/src/mame/drivers/mc1000.cpp
index 47af53b1a2b..adf287844a5 100644
--- a/src/mame/drivers/mc1000.cpp
+++ b/src/mame/drivers/mc1000.cpp
@@ -550,12 +550,14 @@ MACHINE_CONFIG_START(mc1000_state::mc1000)
MCFG_DEVICE_IO_MAP(mc1000_io)
/* timers */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ne555clear", mc1000_state, ne555_tick, attotime::from_hz(MC1000_NE555_FREQ))
- MCFG_TIMER_PARAM(CLEAR_LINE)
-
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ne555assert", mc1000_state, ne555_tick, attotime::from_hz(MC1000_NE555_FREQ))
- MCFG_TIMER_START_DELAY(attotime::from_hz(MC1000_NE555_FREQ * 100 / MC1000_NE555_DUTY_CYCLE))
- MCFG_TIMER_PARAM(ASSERT_LINE)
+ timer_device &ne555clear(TIMER(config, "ne555clear"));
+ ne555clear.configure_periodic(FUNC(mc1000_state::ne555_tick), attotime::from_hz(MC1000_NE555_FREQ));
+ ne555clear.config_param(CLEAR_LINE);
+
+ timer_device &ne555assert(TIMER(config, "ne555assert"));
+ ne555assert.configure_periodic(FUNC(mc1000_state::ne555_tick), attotime::from_hz(MC1000_NE555_FREQ));
+ ne555assert.set_start_delay(attotime::from_hz(MC1000_NE555_FREQ * 100 / MC1000_NE555_DUTY_CYCLE));
+ ne555assert.config_param(ASSERT_LINE);
/* video hardware */
SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER);
diff --git a/src/mame/drivers/mcr3.cpp b/src/mame/drivers/mcr3.cpp
index a40a55a245e..0822ae5f749 100644
--- a/src/mame/drivers/mcr3.cpp
+++ b/src/mame/drivers/mcr3.cpp
@@ -1085,7 +1085,7 @@ MACHINE_CONFIG_START(mcr3_state::mcrmono)
m_maincpu->set_addrmap(AS_IO, &mcr3_state::mcrmono_portmap);
m_maincpu->set_daisy_config(mcr_daisy_chain);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mcr3_state, mcr_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(mcr3_state::mcr_interrupt), "screen", 0, 1);
Z80CTC(config, m_ctc, MASTER_CLOCK/4 /* same as "maincpu" */);
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
diff --git a/src/mame/drivers/mcr68.cpp b/src/mame/drivers/mcr68.cpp
index 859c316cff7..867d4a21705 100644
--- a/src/mame/drivers/mcr68.cpp
+++ b/src/mame/drivers/mcr68.cpp
@@ -918,7 +918,7 @@ MACHINE_CONFIG_START(mcr68_state::mcr68)
MCFG_SCREEN_UPDATE_DRIVER(mcr68_state, screen_update_mcr68)
MCFG_SCREEN_PALETTE("palette")
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mcr68_state, scanline_cb, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(mcr68_state::scanline_cb), "screen", 0, 1);
GFXDECODE(config, m_gfxdecode, "palette", gfx_mcr68);
PALETTE(config, "palette").set_format(palette_device::xRBG_333, 64);
diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp
index a6460ad57af..5da1280767e 100644
--- a/src/mame/drivers/mediagx.cpp
+++ b/src/mame/drivers/mediagx.cpp
@@ -896,7 +896,7 @@ MACHINE_CONFIG_START(mediagx_state::mediagx)
ide_controller_32_device &ide(IDE_CONTROLLER_32(config, "ide").options(ata_devices, "hdd", nullptr, true));
ide.irq_handler().set(m_pic8259_2, FUNC(pic8259_device::ir6_w));
- MCFG_TIMER_DRIVER_ADD("sound_timer", mediagx_state, sound_timer_callback)
+ TIMER(config, "sound_timer").configure_generic(FUNC(mediagx_state::sound_timer_callback));
RAMDAC(config, m_ramdac, 0, m_palette);
m_ramdac->set_addrmap(0, &mediagx_state::ramdac_map);
diff --git a/src/mame/drivers/meijinsn.cpp b/src/mame/drivers/meijinsn.cpp
index 9cc06506945..fc911c71e69 100644
--- a/src/mame/drivers/meijinsn.cpp
+++ b/src/mame/drivers/meijinsn.cpp
@@ -362,7 +362,7 @@ MACHINE_CONFIG_START(meijinsn_state::meijinsn)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 9000000 )
MCFG_DEVICE_PROGRAM_MAP(meijinsn_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", meijinsn_state, meijinsn_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(meijinsn_state::meijinsn_interrupt), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 4000000)
MCFG_DEVICE_PROGRAM_MAP(meijinsn_sound_map)
diff --git a/src/mame/drivers/mekd2.cpp b/src/mame/drivers/mekd2.cpp
index 868a42de83e..c8434fcb899 100644
--- a/src/mame/drivers/mekd2.cpp
+++ b/src/mame/drivers/mekd2.cpp
@@ -411,8 +411,8 @@ MACHINE_CONFIG_START(mekd2_state::mekd2)
clock_device &acia_rx_clock(CLOCK(config, "acia_rx_clock", 300)); // toggled by cassette circuit
acia_rx_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_rxc));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mekd2_c", mekd2_state, mekd2_c, attotime::from_hz(4800))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mekd2_p", mekd2_state, mekd2_p, attotime::from_hz(40000))
+ TIMER(config, "mekd2_c").configure_periodic(FUNC(mekd2_state::mekd2_c), attotime::from_hz(4800));
+ TIMER(config, "mekd2_p").configure_periodic(FUNC(mekd2_state::mekd2_p), attotime::from_hz(40000));
MCFG_QUICKLOAD_ADD("quickload", mekd2_state, mekd2_quik, "d2", 1)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mephisto.cpp b/src/mame/drivers/mephisto.cpp
index 21191fce122..cb7b19f0f2b 100644
--- a/src/mame/drivers/mephisto.cpp
+++ b/src/mame/drivers/mephisto.cpp
@@ -319,7 +319,7 @@ MACHINE_CONFIG_START(mephisto_state::mephisto)
MCFG_DEVICE_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", mephisto_state, update_nmi, attotime::from_hz(600))
+ TIMER(config, "nmi_timer").configure_periodic(FUNC(mephisto_state::update_nmi), attotime::from_hz(600));
MEPHISTO_SENSORS_BOARD(config, "board", 0);
config.set_default_layout(layout_mephisto);
@@ -330,8 +330,8 @@ MACHINE_CONFIG_START(mephisto_state::rebel5)
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(rebel5_mem)
- MCFG_DEVICE_REMOVE("nmi_timer")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer_r5", mephisto_state, update_nmi_r5, attotime::from_hz(600))
+ config.device_remove("nmi_timer");
+ TIMER(config, "nmi_timer_r5").configure_periodic(FUNC(mephisto_state::update_nmi_r5), attotime::from_hz(600));
MACHINE_CONFIG_END
@@ -341,8 +341,8 @@ MACHINE_CONFIG_START(mephisto_state::mm2)
MCFG_DEVICE_PROGRAM_MAP(mm2_mem)
MCFG_MACHINE_START_OVERRIDE(mephisto_state, mm2 )
- MCFG_DEVICE_REMOVE("nmi_timer")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", mephisto_state, update_irq, attotime::from_hz(450))
+ config.device_remove("nmi_timer");
+ TIMER(config, "irq_timer").configure_periodic(FUNC(mephisto_state::update_irq), attotime::from_hz(450));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mephisto_state::mm4tk)
diff --git a/src/mame/drivers/mephisto_montec.cpp b/src/mame/drivers/mephisto_montec.cpp
index 20829ed2950..a23a3a492aa 100644
--- a/src/mame/drivers/mephisto_montec.cpp
+++ b/src/mame/drivers/mephisto_montec.cpp
@@ -500,7 +500,7 @@ MACHINE_CONFIG_START(mephisto_montec_state::mondial2)
MCFG_DEVICE_PROGRAM_MAP(mondial2_mem)
MCFG_DEVICE_PERIODIC_INT_DRIVER(mephisto_montec_state, nmi_line_pulse, XTAL(2'000'000) / (1 << 12))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("refresh_leds", mephisto_montec_state, refresh_leds, attotime::from_hz(10))
+ TIMER(config, "refresh_leds").configure_periodic(FUNC(mephisto_montec_state::refresh_leds), attotime::from_hz(10));
config.set_default_layout(layout_mephisto_mondial2);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/metlfrzr.cpp b/src/mame/drivers/metlfrzr.cpp
index 2cd3986f02f..c01abc0cfa0 100644
--- a/src/mame/drivers/metlfrzr.cpp
+++ b/src/mame/drivers/metlfrzr.cpp
@@ -372,7 +372,7 @@ MACHINE_CONFIG_START(metlfrzr_state::metlfrzr)
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(metlfrzr_map)
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", metlfrzr_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(metlfrzr_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("t5182", T5182, 0)
diff --git a/src/mame/drivers/meyc8088.cpp b/src/mame/drivers/meyc8088.cpp
index 11fe7a0df0f..30f907e5b72 100644
--- a/src/mame/drivers/meyc8088.cpp
+++ b/src/mame/drivers/meyc8088.cpp
@@ -386,7 +386,7 @@ MACHINE_CONFIG_START(meyc8088_state::meyc8088)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TIMER_DRIVER_ADD("heartbeat", meyc8088_state, heartbeat_callback)
+ TIMER(config, m_heartbeat).configure_generic(FUNC(meyc8088_state::heartbeat_callback));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/micropin.cpp b/src/mame/drivers/micropin.cpp
index c0c01f897e5..67286741bd5 100644
--- a/src/mame/drivers/micropin.cpp
+++ b/src/mame/drivers/micropin.cpp
@@ -332,7 +332,7 @@ MACHINE_CONFIG_START(micropin_state::micropin)
//m_pia51->ca2_handler().set(FUNC(micropin_state::p51ca2_w));
//m_pia51->cb2_handler().set(FUNC(micropin_state::p51cb2_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", micropin_state, timer_a, attotime::from_hz(100))
+ TIMER(config, "timer_a").configure_periodic(FUNC(micropin_state::timer_a), attotime::from_hz(100));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(micropin_state::pentacup2)
diff --git a/src/mame/drivers/midvunit.cpp b/src/mame/drivers/midvunit.cpp
index 43dc19af1cf..53e18a7f9d3 100644
--- a/src/mame/drivers/midvunit.cpp
+++ b/src/mame/drivers/midvunit.cpp
@@ -1063,8 +1063,8 @@ MACHINE_CONFIG_START(midvunit_state::midvcommon)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MCFG_TIMER_ADD_NONE("timer0")
- MCFG_TIMER_ADD_NONE("timer1")
+ TIMER(config, "timer0").configure_generic(timer_device::expired_delegate());
+ TIMER(config, "timer1").configure_generic(timer_device::expired_delegate());
WATCHDOG_TIMER(config, m_watchdog);
diff --git a/src/mame/drivers/mjsenpu.cpp b/src/mame/drivers/mjsenpu.cpp
index b79a85f8765..fae721c1710 100644
--- a/src/mame/drivers/mjsenpu.cpp
+++ b/src/mame/drivers/mjsenpu.cpp
@@ -474,7 +474,7 @@ MACHINE_CONFIG_START(mjsenpu_state::mjsenpu)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
// more likely coins out?
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(50), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/mk1.cpp b/src/mame/drivers/mk1.cpp
index d9f6bee12d2..556d55c5e59 100644
--- a/src/mame/drivers/mk1.cpp
+++ b/src/mame/drivers/mk1.cpp
@@ -198,7 +198,7 @@ MACHINE_CONFIG_START(mk1_state::mk1)
/* video hardware */
config.set_default_layout(layout_mk1);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", mk1_state, mk1_update_leds, attotime::from_hz(30))
+ TIMER(config, "led_timer").configure_periodic(FUNC(mk1_state::mk1_update_leds), attotime::from_hz(30));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mk2.cpp b/src/mame/drivers/mk2.cpp
index 98cf04d7481..1b961bd787f 100644
--- a/src/mame/drivers/mk2.cpp
+++ b/src/mame/drivers/mk2.cpp
@@ -220,7 +220,7 @@ MACHINE_CONFIG_START(mk2_state::mk2)
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", mk2_state, update_leds, attotime::from_hz(60))
+ TIMER(config, "led_timer").configure_periodic(FUNC(mk2_state::update_leds), attotime::from_hz(60));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/modena.cpp b/src/mame/drivers/modena.cpp
index fb72cbee78d..36154d8faed 100644
--- a/src/mame/drivers/modena.cpp
+++ b/src/mame/drivers/modena.cpp
@@ -141,9 +141,10 @@ void mephisto_modena_state::machine_reset()
MACHINE_CONFIG_START(mephisto_modena_state::modena)
MCFG_DEVICE_ADD("maincpu", M65C02, XTAL(4'194'304)) // W65C02SP
MCFG_DEVICE_PROGRAM_MAP(modena_mem)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_on", mephisto_modena_state, nmi_on, attotime::from_hz(XTAL(4'194'304) / (1 << 13)))
- MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL(4'194'304) / (1 << 13)) - attotime::from_usec(975)) // active for 975us
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_off", mephisto_modena_state, nmi_off, attotime::from_hz(XTAL(4'194'304) / (1 << 13)))
+ timer_device &nmi_on(TIMER(config, "nmi_on"));
+ nmi_on.configure_periodic(FUNC(mephisto_modena_state::nmi_on), attotime::from_hz(XTAL(4'194'304) / (1 << 13)));
+ nmi_on.set_start_delay(attotime::from_hz(XTAL(4'194'304) / (1 << 13)) - attotime::from_usec(975)); // active for 975us
+ TIMER(config, "nmi_off").configure_periodic(FUNC(mephisto_modena_state::nmi_off), attotime::from_hz(XTAL(4'194'304) / (1 << 13)));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/monzagp.cpp b/src/mame/drivers/monzagp.cpp
index 43c4d2dfea0..a62001a871b 100644
--- a/src/mame/drivers/monzagp.cpp
+++ b/src/mame/drivers/monzagp.cpp
@@ -504,7 +504,8 @@ static GFXDECODE_START( gfx_monzagp )
GFXDECODE_ENTRY( "gfx3", 0x0000, tile_layout, 0, 8 )
GFXDECODE_END
-MACHINE_CONFIG_START(monzagp_state::monzagp)
+void monzagp_state::monzagp(machine_config &config)
+{
I8035(config, m_maincpu, 12000000/4); /* 400KHz ??? - Main board Crystal is 12MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &monzagp_state::monzagp_map);
m_maincpu->set_addrmap(AS_IO, &monzagp_state::monzagp_io);
@@ -526,10 +527,10 @@ MACHINE_CONFIG_START(monzagp_state::monzagp)
PALETTE(config, m_palette, FUNC(monzagp_state::monzagp_palette), 0x200);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_monzagp);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("time_tick_timer", monzagp_state, time_tick_timer, attotime::from_hz(4))
+ TIMER(config, "time_tick_timer").configure_periodic(FUNC(monzagp_state::time_tick_timer), attotime::from_hz(4));
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
-MACHINE_CONFIG_END
+}
ROM_START( monzagp )
ROM_REGION( 0x1000, "maincpu", 0 )
diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp
index 6eb4640def3..b7de2be907e 100644
--- a/src/mame/drivers/mpf1.cpp
+++ b/src/mame/drivers/mpf1.cpp
@@ -387,7 +387,7 @@ MACHINE_CONFIG_START(mpf1_state::mpf1)
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("halt_timer", mpf1_state, check_halt_callback, attotime::from_hz(1))
+ TIMER(config, "halt_timer").configure_periodic(FUNC(mpf1_state::check_halt_callback), attotime::from_hz(1));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpf1_state::mpf1b)
@@ -424,7 +424,7 @@ MACHINE_CONFIG_START(mpf1_state::mpf1b)
MCFG_DEVICE_ADD(TMS5220_TAG, TMS5220, 680000L)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("halt_timer", mpf1_state, check_halt_callback, attotime::from_hz(1))
+ TIMER(config, "halt_timer").configure_periodic(FUNC(mpf1_state::check_halt_callback), attotime::from_hz(1));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpf1_state::mpf1p)
@@ -458,7 +458,7 @@ MACHINE_CONFIG_START(mpf1_state::mpf1p)
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("halt_timer", mpf1_state, check_halt_callback, attotime::from_hz(1))
+ TIMER(config, "halt_timer").configure_periodic(FUNC(mpf1_state::check_halt_callback), attotime::from_hz(1));
MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/mrflea.cpp b/src/mame/drivers/mrflea.cpp
index b7f5f795d2d..e14f2a15f37 100644
--- a/src/mame/drivers/mrflea.cpp
+++ b/src/mame/drivers/mrflea.cpp
@@ -266,7 +266,7 @@ MACHINE_CONFIG_START(mrflea_state::mrflea)
MCFG_DEVICE_ADD("subcpu", Z80, 6000000) // runs in IM 1, so doesn't use 8259 INTA
MCFG_DEVICE_PROGRAM_MAP(mrflea_slave_map)
MCFG_DEVICE_IO_MAP(mrflea_slave_io_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mrflea_state, mrflea_slave_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(mrflea_state::mrflea_slave_interrupt), "screen", 0, 1);
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
diff --git a/src/mame/drivers/ms32.cpp b/src/mame/drivers/ms32.cpp
index b25f282b41d..09d690b76b8 100644
--- a/src/mame/drivers/ms32.cpp
+++ b/src/mame/drivers/ms32.cpp
@@ -1707,7 +1707,7 @@ MACHINE_CONFIG_START(ms32_state::ms32)
MCFG_DEVICE_PROGRAM_MAP(ms32_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(ms32_state,irq_callback)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ms32_state, ms32_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(ms32_state::ms32_interrupt), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 8000000) // Z0840008PSC, Clock from notes
MCFG_DEVICE_PROGRAM_MAP(ms32_sound_map)
diff --git a/src/mame/drivers/mstation.cpp b/src/mame/drivers/mstation.cpp
index 767fcbcc163..19d20a75ea8 100644
--- a/src/mame/drivers/mstation.cpp
+++ b/src/mame/drivers/mstation.cpp
@@ -467,10 +467,10 @@ MACHINE_CONFIG_START(mstation_state::mstation)
SST_28SF040(config, "flash1");
// IRQ 4 is generated every second, used for auto power off
- MCFG_TIMER_DRIVER_ADD_PERIODIC("1hz_timer", mstation_state, mstation_1hz_timer, attotime::from_hz(1))
+ TIMER(config, "1hz_timer").configure_periodic(FUNC(mstation_state::mstation_1hz_timer), attotime::from_hz(1));
// IRQ 1 is used for scan the kb and for cursor blinking
- MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer", mstation_state, mstation_kb_timer, attotime::from_hz(50))
+ TIMER(config, "kb_timer").configure_periodic(FUNC(mstation_state::mstation_kb_timer), attotime::from_hz(50));
rp5c01_device &rtc(RP5C01(config, "rtc", XTAL(32'768)));
rtc.out_alarm_callback().set(FUNC(mstation_state::rtc_irq));
diff --git a/src/mame/drivers/mtx.cpp b/src/mame/drivers/mtx.cpp
index 72b4d4f84b9..ba38a8440e1 100644
--- a/src/mame/drivers/mtx.cpp
+++ b/src/mame/drivers/mtx.cpp
@@ -312,7 +312,7 @@ MACHINE_CONFIG_START(mtx_state::mtx512)
m_z80ctc->zc_callback<1>().set(FUNC(mtx_state::ctc_trg1_w));
m_z80ctc->zc_callback<2>().set(FUNC(mtx_state::ctc_trg2_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("z80ctc_timer", mtx_state, ctc_tick, attotime::from_hz(XTAL(4'000'000)/13))
+ TIMER(config, "z80ctc_timer").configure_periodic(FUNC(mtx_state::ctc_tick), attotime::from_hz(XTAL(4'000'000)/13));
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, mtx_state, write_centronics_busy))
@@ -327,7 +327,7 @@ MACHINE_CONFIG_START(mtx_state::mtx512)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
MCFG_CASSETTE_INTERFACE("mtx_cass")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", mtx_state, cassette_tick, attotime::from_hz(44100))
+ TIMER(config, "cassette_timer").configure_periodic(FUNC(mtx_state::cassette_tick), attotime::from_hz(44100));
/* internal ram */
RAM(config, m_ram).set_default_size("64K").set_extra_options("96K,128K,192K,320K,448K,512K");
diff --git a/src/mame/drivers/multfish.cpp b/src/mame/drivers/multfish.cpp
index b3365965d1e..12bcbdf881f 100644
--- a/src/mame/drivers/multfish.cpp
+++ b/src/mame/drivers/multfish.cpp
@@ -1050,8 +1050,8 @@ MACHINE_CONFIG_START(igrosoft_gamble_state::igrosoft_gamble)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", 6000000/4).add_route(ALL_OUTPUTS, "mono", 0.30);
- MCFG_DEVICE_ADD("m48t35", M48T35, 0)
- MCFG_HOPPER_ADD("hopper", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ M48T35(config, m_m48t35, 0);
+ HOPPER(config, m_hopper, attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(igrosoft_gamble_state::rollfr)
diff --git a/src/mame/drivers/multi8.cpp b/src/mame/drivers/multi8.cpp
index e205ed3e2ad..7fdfc39de01 100644
--- a/src/mame/drivers/multi8.cpp
+++ b/src/mame/drivers/multi8.cpp
@@ -592,7 +592,7 @@ MACHINE_CONFIG_START(multi8_state::multi8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
/* devices */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", multi8_state, keyboard_callback, attotime::from_hz(240/32))
+ TIMER(config, "keyboard_timer").configure_periodic(FUNC(multi8_state::keyboard_callback), attotime::from_hz(240/32));
H46505(config, m_crtc, XTAL(3'579'545)/2); /* unknown clock, hand tuned to get ~60 fps */
m_crtc->set_screen("screen");
diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp
index eae1abaf643..8feae0b24ac 100644
--- a/src/mame/drivers/mustache.cpp
+++ b/src/mame/drivers/mustache.cpp
@@ -185,7 +185,7 @@ MACHINE_CONFIG_START(mustache_state::mustache)
MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(memmap)
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mustache_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(mustache_state::scanline), "screen", 0, 1);
SEI80BU(config, "sei80bu", 0).set_device_rom_tag("maincpu");
diff --git a/src/mame/drivers/mycom.cpp b/src/mame/drivers/mycom.cpp
index e4a7e440c27..3ff21c80436 100644
--- a/src/mame/drivers/mycom.cpp
+++ b/src/mame/drivers/mycom.cpp
@@ -565,7 +565,7 @@ MACHINE_CONFIG_START(mycom_state::mycom)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", mycom_floppies, "525sd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", mycom_state, mycom_kbd, attotime::from_hz(20))
+ TIMER(config, "keyboard_timer").configure_periodic(FUNC(mycom_state::mycom_kbd), attotime::from_hz(20));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/mz700.cpp b/src/mame/drivers/mz700.cpp
index c7b8c520c32..e213d905d2f 100644
--- a/src/mame/drivers/mz700.cpp
+++ b/src/mame/drivers/mz700.cpp
@@ -397,8 +397,8 @@ MACHINE_CONFIG_START(mz_state::mz700)
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
/* ne556 timers */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("cursor", mz_state, ne556_cursor_callback, attotime::from_hz(1.5))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("other", mz_state, ne556_other_callback, attotime::from_hz(34.5))
+ TIMER(config, "cursor").configure_periodic(FUNC(mz_state::ne556_cursor_callback), attotime::from_hz(1.5));
+ TIMER(config, "other").configure_periodic(FUNC(mz_state::ne556_other_callback), attotime::from_hz(34.5));
/* devices */
PIT8253(config, m_pit, 0);
diff --git a/src/mame/drivers/mz80.cpp b/src/mame/drivers/mz80.cpp
index 78d00a062b7..ac4c703cbb2 100644
--- a/src/mame/drivers/mz80.cpp
+++ b/src/mame/drivers/mz80.cpp
@@ -317,7 +317,7 @@ MACHINE_CONFIG_START(mz80_state::mz80k)
m_pit->set_clk<2>(0);
m_pit->out_handler<2>().set(FUNC(mz80_state::pit_out2_changed));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("tempo", mz80_state, ne555_tempo_callback, attotime::from_hz(34))
+ TIMER(config, "tempo").configure_periodic(FUNC(mz80_state::ne555_tempo_callback), attotime::from_hz(34));
MCFG_CASSETTE_ADD( "cassette" )
MCFG_CASSETTE_FORMATS(mz700_cassette_formats)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
diff --git a/src/mame/drivers/nakajies.cpp b/src/mame/drivers/nakajies.cpp
index 3066db4fdeb..8a387980089 100644
--- a/src/mame/drivers/nakajies.cpp
+++ b/src/mame/drivers/nakajies.cpp
@@ -772,7 +772,7 @@ MACHINE_CONFIG_START(nakajies_state::nakajies210)
/* rtc */
RP5C01(config, "rtc", XTAL(32'768));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer", nakajies_state, kb_timer, attotime::from_hz(250))
+ TIMER(config, "kb_timer").configure_periodic(FUNC(nakajies_state::kb_timer), attotime::from_hz(250));
MACHINE_CONFIG_END
void nakajies_state::dator3k(machine_config &config)
diff --git a/src/mame/drivers/namcofl.cpp b/src/mame/drivers/namcofl.cpp
index 62e2f0b45fb..fce15000f5b 100644
--- a/src/mame/drivers/namcofl.cpp
+++ b/src/mame/drivers/namcofl.cpp
@@ -561,9 +561,9 @@ MACHINE_CONFIG_START(namcofl_state::namcofl)
MCFG_DEVICE_PROGRAM_MAP(namcoc75_am)
MCFG_DEVICE_IO_MAP(namcoc75_io)
/* TODO: irq generation for these */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq0", namcofl_state, mcu_irq0_cb, attotime::from_hz(60))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq2", namcofl_state, mcu_irq2_cb, attotime::from_hz(60))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_adc", namcofl_state, mcu_adc_cb, attotime::from_hz(60))
+ TIMER(config, "mcu_irq0").configure_periodic(FUNC(namcofl_state::mcu_irq0_cb), attotime::from_hz(60));
+ TIMER(config, "mcu_irq2").configure_periodic(FUNC(namcofl_state::mcu_irq2_cb), attotime::from_hz(60));
+ TIMER(config, "mcu_adc").configure_periodic(FUNC(namcofl_state::mcu_adc_cb), attotime::from_hz(60));
MCFG_MACHINE_START_OVERRIDE(namcofl_state,namcofl)
MCFG_MACHINE_RESET_OVERRIDE(namcofl_state,namcofl)
diff --git a/src/mame/drivers/namconb1.cpp b/src/mame/drivers/namconb1.cpp
index eacff54e35a..f27c7c9a35a 100644
--- a/src/mame/drivers/namconb1.cpp
+++ b/src/mame/drivers/namconb1.cpp
@@ -1046,12 +1046,12 @@ MACHINE_CONFIG_START(namconb1_state::namconb1)
EEPROM_2816(config, "eeprom");
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, scantimer, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namconb1_state::scantimer), "screen", 0, 1);
// has to be 60 hz or music will go crazy in nebulray, vshoot, gslugrs*
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq0", namconb1_state, mcu_irq0_cb, attotime::from_hz(60))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq2", namconb1_state, mcu_irq2_cb, attotime::from_hz(60))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_adc", namconb1_state, mcu_adc_cb, attotime::from_hz(60))
+ TIMER(config, "mcu_irq0").configure_periodic(FUNC(namconb1_state::mcu_irq0_cb), attotime::from_hz(60));
+ TIMER(config, "mcu_irq2").configure_periodic(FUNC(namconb1_state::mcu_irq2_cb), attotime::from_hz(60));
+ TIMER(config, "mcu_adc").configure_periodic(FUNC(namconb1_state::mcu_adc_cb), attotime::from_hz(60));
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MASTER_CLOCK/8, 384, 0, 288, 264, 0, 224);
diff --git a/src/mame/drivers/namcos2.cpp b/src/mame/drivers/namcos2.cpp
index 80279914f30..9770d2f804c 100644
--- a/src/mame/drivers/namcos2.cpp
+++ b/src/mame/drivers/namcos2.cpp
@@ -1780,7 +1780,7 @@ void namcos2_state::configure_c123tmap_standard(machine_config &config)
MACHINE_CONFIG_START(namcos2_state::base_noio)
MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(master_default_am)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(slave_default_am)
@@ -1869,7 +1869,7 @@ void namcos2_state::base3(machine_config &config)
MACHINE_CONFIG_START(namcos2_state::gollygho)
MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(master_default_am)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(slave_default_am)
@@ -1923,7 +1923,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::finallap_noio)
MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(master_finallap_am)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(slave_finallap_am)
@@ -1997,7 +1997,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::sgunner)
MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(master_sgunner_am)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(slave_sgunner_am)
@@ -2051,7 +2051,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::sgunner2)
MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(master_sgunner_am)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(slave_sgunner_am)
@@ -2105,7 +2105,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::suzuka8h)
MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(master_suzuka8h_am)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(slave_suzuka8h_am)
@@ -2180,7 +2180,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::metlhawk)
MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(master_metlhawk_am)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(slave_metlhawk_am)
diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp
index 656a683bc33..0594bea5f3b 100644
--- a/src/mame/drivers/namcos21.cpp
+++ b/src/mame/drivers/namcos21.cpp
@@ -861,7 +861,7 @@ void namcos21_state::configure_c148_standard(machine_config &config)
MACHINE_CONFIG_START(namcos21_state::winrun)
MCFG_DEVICE_ADD("maincpu", M68000,12288000) /* Master */
MCFG_DEVICE_PROGRAM_MAP(winrun_master_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos21_state, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos21_state::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000,12288000) /* Slave */
MCFG_DEVICE_PROGRAM_MAP(winrun_slave_map)
diff --git a/src/mame/drivers/namcos21_c67.cpp b/src/mame/drivers/namcos21_c67.cpp
index dc2c5a0adbb..da0b1f3de38 100644
--- a/src/mame/drivers/namcos21_c67.cpp
+++ b/src/mame/drivers/namcos21_c67.cpp
@@ -813,7 +813,7 @@ void namcos21_c67_state::configure_c148_standard(machine_config &config)
MACHINE_CONFIG_START(namcos21_c67_state::namcos21)
MCFG_DEVICE_ADD("maincpu", M68000,12288000) /* Master */
MCFG_DEVICE_PROGRAM_MAP(master_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos21_c67_state, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namcos21_c67_state::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000,12288000) /* Slave */
MCFG_DEVICE_PROGRAM_MAP(slave_map)
diff --git a/src/mame/drivers/namcos21_de.cpp b/src/mame/drivers/namcos21_de.cpp
index f06353186cd..be23f0fd203 100644
--- a/src/mame/drivers/namcos21_de.cpp
+++ b/src/mame/drivers/namcos21_de.cpp
@@ -186,7 +186,7 @@ GFXDECODE_END
MACHINE_CONFIG_START(namco_de_pcbstack_device::device_add_mconfig)
MCFG_DEVICE_ADD("maincpu", M68000,12288000) /* Master */
MCFG_DEVICE_PROGRAM_MAP(driveyes_master_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namco_de_pcbstack_device, screen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(namco_de_pcbstack_device::screen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000,12288000) /* Slave */
MCFG_DEVICE_PROGRAM_MAP(driveyes_slave_map)
diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp
index 9fdb6eeeed2..7b70bba6833 100644
--- a/src/mame/drivers/namcos22.cpp
+++ b/src/mame/drivers/namcos22.cpp
@@ -3894,7 +3894,7 @@ MACHINE_CONFIG_START(namcos22_state::namcos22)
master.xf_out_cb().set(FUNC(namcos22_state::dsp_xf_output_w));
master.dr_in_cb().set(FUNC(namcos22_state::master_serial_io_r));
master.set_vblank_int("screen", FUNC(namcos22_state::dsp_vblank_irq));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("dsp_serial", namcos22_state, dsp_serial_pulse, attotime::from_hz(SERIAL_IO_PERIOD))
+ TIMER(config, "dsp_serial").configure_periodic(FUNC(namcos22_state::dsp_serial_pulse), attotime::from_hz(SERIAL_IO_PERIOD));
tms32025_device& slave(TMS32025(config, m_slave, 40_MHz_XTAL));
slave.set_addrmap(AS_PROGRAM, &namcos22_state::slave_dsp_program);
@@ -3958,7 +3958,7 @@ MACHINE_CONFIG_START(namcos22_state::namcos22s)
MCFG_DEVICE_REPLACE("mcu", M37710S4, 49.152_MHz_XTAL/3)
MCFG_DEVICE_PROGRAM_MAP(mcu_program)
MCFG_DEVICE_IO_MAP(mcu_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("mcu_irq", namcos22_state, mcu_irq, "screen", 0, 240)
+ TIMER(config, "mcu_irq").configure_scanline(FUNC(namcos22_state::mcu_irq), "screen", 0, 240);
MCFG_QUANTUM_TIME(attotime::from_hz(9000)) // erratic inputs otherwise, probably mcu vs maincpu shareram
MCFG_DEVICE_REMOVE("iomcu")
@@ -3988,7 +3988,7 @@ MACHINE_CONFIG_START(namcos22_state::alpine)
MCFG_DEVICE_MODIFY("mcu")
MCFG_DEVICE_IO_MAP(alpine_io_map)
- MCFG_TIMER_DRIVER_ADD("motor_timer", namcos22_state, alpine_steplock_callback)
+ TIMER(config, m_motor_timer).configure_generic(FUNC(namcos22_state::alpine_steplock_callback));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos22_state::alpinesa)
@@ -4034,12 +4034,13 @@ MACHINE_CONFIG_START(namcos22_state::tokyowar)
MCFG_SOUND_ROUTE(3, "seat", 1.00)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(namcos22_state::propcycl)
+void namcos22_state::propcycl(machine_config &config)
+{
namcos22s(config);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("pc_p_upd", namcos22_state, propcycl_pedal_update, attotime::from_msec(20))
- MCFG_TIMER_DRIVER_ADD("pc_p_int", namcos22_state, propcycl_pedal_interrupt)
-MACHINE_CONFIG_END
+ TIMER(config, "pc_p_upd").configure_periodic(FUNC(namcos22_state::propcycl_pedal_update), attotime::from_msec(20));
+ TIMER(config, m_pc_pedal_interrupt).configure_generic(FUNC(namcos22_state::propcycl_pedal_interrupt));
+}
MACHINE_START_MEMBER(namcos22_state,adillor)
{
@@ -4052,7 +4053,7 @@ MACHINE_START_MEMBER(namcos22_state,adillor)
MACHINE_CONFIG_START(namcos22_state::adillor)
namcos22s(config);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ar_tb_upd", namcos22_state, adillor_trackball_update, attotime::from_msec(20))
+ TIMER(config, "ar_tb_upd").configure_periodic(FUNC(namcos22_state::adillor_trackball_update), attotime::from_msec(20));
MCFG_MACHINE_START_OVERRIDE(namcos22_state,adillor)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp
index a2198847cad..70e3f63bf9b 100644
--- a/src/mame/drivers/nanos.cpp
+++ b/src/mame/drivers/nanos.cpp
@@ -522,7 +522,7 @@ MACHINE_CONFIG_START(nanos_state::nanos)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", nanos_state, keyboard_callback, attotime::from_hz(24000))
+ TIMER(config, "keyboard_timer").configure_periodic(FUNC(nanos_state::keyboard_callback), attotime::from_hz(24000));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp
index 0bfa84aba27..79d3778c172 100644
--- a/src/mame/drivers/nc.cpp
+++ b/src/mame/drivers/nc.cpp
@@ -1419,7 +1419,7 @@ MACHINE_CONFIG_START(nc_state::nc_base)
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
/* dummy timer */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", nc_state, dummy_timer_callback, attotime::from_hz(50))
+ TIMER(config, "dummy_timer").configure_periodic(FUNC(nc_state::dummy_timer_callback), attotime::from_hz(50));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(nc100_state::nc100)
diff --git a/src/mame/drivers/nitedrvr.cpp b/src/mame/drivers/nitedrvr.cpp
index 9d8a10441bf..eae9445e74f 100644
--- a/src/mame/drivers/nitedrvr.cpp
+++ b/src/mame/drivers/nitedrvr.cpp
@@ -149,7 +149,7 @@ MACHINE_CONFIG_START(nitedrvr_state::nitedrvr)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 3);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("crash_timer", nitedrvr_state, nitedrvr_crash_toggle_callback, PERIOD_OF_555_ASTABLE(RES_K(180), 330, CAP_U(1)))
+ TIMER(config, "crash_timer").configure_periodic(FUNC(nitedrvr_state::nitedrvr_crash_toggle_callback), PERIOD_OF_555_ASTABLE(RES_K(180), 330, CAP_U(1)));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/novag6502.cpp b/src/mame/drivers/novag6502.cpp
index efcdc10cff5..5854ecede2d 100644
--- a/src/mame/drivers/novag6502.cpp
+++ b/src/mame/drivers/novag6502.cpp
@@ -880,7 +880,7 @@ MACHINE_CONFIG_START(novag6502_state::supercon)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novag6502_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(novag6502_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_novag_supercon);
/* sound hardware */
@@ -894,9 +894,10 @@ MACHINE_CONFIG_START(novag6502_state::cforte)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", R65C02, 10_MHz_XTAL/2)
MCFG_DEVICE_PROGRAM_MAP(cforte_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", novag6502_state, irq_on, attotime::from_hz(32.768_kHz_XTAL/128)) // 256Hz
- MCFG_TIMER_START_DELAY(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_usec(11)) // active for 11us
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", novag6502_state, irq_off, attotime::from_hz(32.768_kHz_XTAL/128))
+ timer_device &irq_on(TIMER(config, "irq_on"));
+ irq_on.configure_periodic(FUNC(novag6502_state::irq_on), attotime::from_hz(32.768_kHz_XTAL/128)); // 256Hz
+ irq_on.set_start_delay(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_usec(11)); // active for 11us
+ TIMER(config, "irq_off").configure_periodic(FUNC(novag6502_state::irq_off), attotime::from_hz(32.768_kHz_XTAL/128));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
@@ -904,7 +905,7 @@ MACHINE_CONFIG_START(novag6502_state::cforte)
HLCD0538(config, m_hlcd0538, 0);
m_hlcd0538->write_cols_callback().set(FUNC(novag6502_state::cforte_lcd_output_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novag6502_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(novag6502_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_novag_cforte);
/* sound hardware */
@@ -918,9 +919,10 @@ MACHINE_CONFIG_START(novag6502_state::sexpert)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M65C02, 10_MHz_XTAL/2) // or 12_MHz_XTAL/2
MCFG_DEVICE_PROGRAM_MAP(sexpert_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", novag6502_state, irq_on, attotime::from_hz(32.768_kHz_XTAL/128)) // 256Hz
- MCFG_TIMER_START_DELAY(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_nsec(21500)) // active for 21.5us
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", novag6502_state, irq_off, attotime::from_hz(32.768_kHz_XTAL/128))
+ timer_device &irq_on(TIMER(config, "irq_on"));
+ irq_on.configure_periodic(FUNC(novag6502_state::irq_on), attotime::from_hz(32.768_kHz_XTAL/128)); // 256Hz
+ irq_on.set_start_delay(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_nsec(21500)); // active for 21.5us
+ TIMER(config, "irq_off").configure_periodic(FUNC(novag6502_state::irq_off), attotime::from_hz(32.768_kHz_XTAL/128));
mos6551_device &acia(MOS6551(config, "acia", 0)); // R65C51P2 - RTS to CTS, DCD to GND
acia.set_xtal(1.8432_MHz_XTAL);
@@ -951,7 +953,7 @@ MACHINE_CONFIG_START(novag6502_state::sexpert)
m_lcd->set_lcd_size(2, 8);
m_lcd->set_pixel_update_cb(FUNC(novag6502_state::novag_lcd_pixel_update), this);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novag6502_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(novag6502_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_novag_sexpert);
/* sound hardware */
@@ -966,8 +968,7 @@ MACHINE_CONFIG_START(novag6502_state::sforte)
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(sforte_map)
- MCFG_TIMER_MODIFY("irq_on")
- MCFG_TIMER_START_DELAY(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_usec(11)) // active for ?us (assume same as cforte)
+ subdevice<timer_device>("irq_on")->set_start_delay(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_usec(11)); // active for ?us (assume same as cforte)
config.set_default_layout(layout_novag_sforte);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/novag68k.cpp b/src/mame/drivers/novag68k.cpp
index 5af1d566b54..8e93e285e13 100644
--- a/src/mame/drivers/novag68k.cpp
+++ b/src/mame/drivers/novag68k.cpp
@@ -240,9 +240,10 @@ MACHINE_CONFIG_START(novag68k_state::diablo68k)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(diablo68k_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", novag68k_state, irq_on, attotime::from_hz(32.768_kHz_XTAL/128)) // 256Hz
- MCFG_TIMER_START_DELAY(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_nsec(1100)) // active for 1.1us
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", novag68k_state, irq_off, attotime::from_hz(32.768_kHz_XTAL/128))
+ timer_device &irq_on(TIMER(config, "irq_on"));
+ irq_on.configure_periodic(FUNC(novag68k_state::irq_on), attotime::from_hz(32.768_kHz_XTAL/128)); // 256Hz
+ irq_on.set_start_delay(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_nsec(1100)); // active for 1.1us
+ TIMER(config, "irq_off").configure_periodic(FUNC(novag68k_state::irq_off), attotime::from_hz(32.768_kHz_XTAL/128));
mos6551_device &acia(MOS6551(config, "acia", 0));
acia.set_xtal(1.8432_MHz_XTAL);
@@ -263,7 +264,7 @@ MACHINE_CONFIG_START(novag68k_state::diablo68k)
m_lcd->set_lcd_size(2, 8);
m_lcd->set_pixel_update_cb(FUNC(novag68k_state::novag_lcd_pixel_update), this);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novag68k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(novag68k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_novag_diablo68k);
/* sound hardware */
diff --git a/src/mame/drivers/novagf8.cpp b/src/mame/drivers/novagf8.cpp
index 37f5553ec80..a355c4278e2 100644
--- a/src/mame/drivers/novagf8.cpp
+++ b/src/mame/drivers/novagf8.cpp
@@ -196,7 +196,7 @@ MACHINE_CONFIG_START(novagf8_state::delta1)
f3853_device &f3853(F3853(config, "f3853", 2000000));
f3853.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novagf8_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(novagf8_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_novag_delta1);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/novagmcs48.cpp b/src/mame/drivers/novagmcs48.cpp
index 6066c821f14..ffd5d81ec9e 100644
--- a/src/mame/drivers/novagmcs48.cpp
+++ b/src/mame/drivers/novagmcs48.cpp
@@ -155,7 +155,7 @@ MACHINE_CONFIG_START(novagmcs48_state::presto)
maincpu.p2_out_cb().set(FUNC(novagmcs48_state::presto_control_w));
maincpu.bus_out_cb().set(FUNC(novagmcs48_state::presto_mux_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novagmcs48_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(novagmcs48_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_novag_presto);
/* sound hardware */
diff --git a/src/mame/drivers/olibochu.cpp b/src/mame/drivers/olibochu.cpp
index c2e3866edd9..4f5b5d6db11 100644
--- a/src/mame/drivers/olibochu.cpp
+++ b/src/mame/drivers/olibochu.cpp
@@ -464,7 +464,7 @@ MACHINE_CONFIG_START(olibochu_state::olibochu)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz ?? */
MCFG_DEVICE_PROGRAM_MAP(olibochu_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", olibochu_state, olibochu_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(olibochu_state::olibochu_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* 4 MHz ?? */
MCFG_DEVICE_PROGRAM_MAP(olibochu_sound_map)
diff --git a/src/mame/drivers/orbit.cpp b/src/mame/drivers/orbit.cpp
index 41097621386..a5bf7ed7f05 100644
--- a/src/mame/drivers/orbit.cpp
+++ b/src/mame/drivers/orbit.cpp
@@ -272,7 +272,7 @@ MACHINE_CONFIG_START(orbit_state::orbit)
MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", orbit_state, interrupt)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("32v", orbit_state, nmi_32v, "screen", 0, 32)
+ TIMER(config, "32v").configure_scanline(FUNC(orbit_state::nmi_32v), "screen", 0, 32);
F9334(config, m_latch); // M6
/* BIT0 => UNUSED */
diff --git a/src/mame/drivers/panicr.cpp b/src/mame/drivers/panicr.cpp
index a4cef282692..b80c1171430 100644
--- a/src/mame/drivers/panicr.cpp
+++ b/src/mame/drivers/panicr.cpp
@@ -605,7 +605,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(panicr_state::scanline)
MACHINE_CONFIG_START(panicr_state::panicr)
MCFG_DEVICE_ADD("maincpu", V20,MASTER_CLOCK/2) /* Sony 8623h9 CXQ70116D-8 (V20 compatible) */
MCFG_DEVICE_PROGRAM_MAP(panicr_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", panicr_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(panicr_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("t5182", T5182, 0)
diff --git a/src/mame/drivers/pasogo.cpp b/src/mame/drivers/pasogo.cpp
index a5058fa31aa..c0ba16e4033 100644
--- a/src/mame/drivers/pasogo.cpp
+++ b/src/mame/drivers/pasogo.cpp
@@ -574,7 +574,7 @@ MACHINE_CONFIG_START(pasogo_state::pasogo)
MCFG_SOFTWARE_LIST_ADD("cart_list","pasogo")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("vg230_timer", pasogo_state, vg230_timer, attotime::from_hz(1))
+ TIMER(config, "vg230_timer").configure_periodic(FUNC(pasogo_state::vg230_timer), attotime::from_hz(1));
MACHINE_CONFIG_END
ROM_START( pasogo )
diff --git a/src/mame/drivers/patapata.cpp b/src/mame/drivers/patapata.cpp
index 21386d69fa7..09230083e13 100644
--- a/src/mame/drivers/patapata.cpp
+++ b/src/mame/drivers/patapata.cpp
@@ -290,7 +290,7 @@ MACHINE_CONFIG_START(patapata_state::patapata)
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL) // 16 MHz XTAL, 16 MHz CPU
MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", patapata_state, irq4_line_hold) // 1 + 4 valid? (4 main VBL)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", patapata_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(patapata_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, "palette", gfx_patapata)
diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp
index 7265582525e..fd8bd3e33ab 100644
--- a/src/mame/drivers/pc100.cpp
+++ b/src/mame/drivers/pc100.cpp
@@ -642,10 +642,10 @@ MACHINE_CONFIG_START(pc100_state::pc100)
m_maincpu->set_vblank_int("screen", FUNC(pc100_state::pc100_vblank_irq));
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("600hz", pc100_state, pc100_600hz_irq, attotime::from_hz(MASTER_CLOCK/600))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("100hz", pc100_state, pc100_100hz_irq, attotime::from_hz(MASTER_CLOCK/100))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("50hz", pc100_state, pc100_50hz_irq, attotime::from_hz(MASTER_CLOCK/50))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("10hz", pc100_state, pc100_10hz_irq, attotime::from_hz(MASTER_CLOCK/10))
+ TIMER(config, "600hz").configure_periodic(FUNC(pc100_state::pc100_600hz_irq), attotime::from_hz(MASTER_CLOCK/600));
+ TIMER(config, "100hz").configure_periodic(FUNC(pc100_state::pc100_100hz_irq), attotime::from_hz(MASTER_CLOCK/100));
+ TIMER(config, "50hz").configure_periodic(FUNC(pc100_state::pc100_50hz_irq), attotime::from_hz(MASTER_CLOCK/50));
+ TIMER(config, "10hz").configure_periodic(FUNC(pc100_state::pc100_10hz_irq), attotime::from_hz(MASTER_CLOCK/10));
i8255_device &ppi1(I8255(config, "ppi8255_1"));
ppi1.out_pa_callback().set(FUNC(pc100_state::rtc_porta_w));
diff --git a/src/mame/drivers/pc6001.cpp b/src/mame/drivers/pc6001.cpp
index 47d35daf5cf..343c78dd63a 100644
--- a/src/mame/drivers/pc6001.cpp
+++ b/src/mame/drivers/pc6001.cpp
@@ -1528,8 +1528,8 @@ MACHINE_CONFIG_START(pc6001_state::pc6001)
// WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* TODO: accurate timing on this */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", pc6001_state, keyboard_callback, attotime::from_hz(250))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", pc6001_state, cassette_callback, attotime::from_hz(1200/12))
+ TIMER(config, "keyboard_timer").configure_periodic(FUNC(pc6001_state::keyboard_callback), attotime::from_hz(250));
+ TIMER(config, "cassette_timer").configure_periodic(FUNC(pc6001_state::cassette_callback), attotime::from_hz(1200/12));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp
index aa97d5b96c9..860a4677947 100644
--- a/src/mame/drivers/pc8401a.cpp
+++ b/src/mame/drivers/pc8401a.cpp
@@ -577,7 +577,7 @@ MACHINE_CONFIG_START(pc8401a_state::pc8401a)
MCFG_DEVICE_IO_MAP(pc8401a_io)
/* fake keyboard */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", pc8401a_state, pc8401a_keyboard_tick, attotime::from_hz(64))
+ TIMER(config, "keyboard").configure_periodic(FUNC(pc8401a_state::pc8401a_keyboard_tick), attotime::from_hz(64));
/* devices */
UPD1990A(config, m_rtc);
@@ -617,7 +617,7 @@ MACHINE_CONFIG_START(pc8500_state::pc8500)
MCFG_DEVICE_IO_MAP(pc8500_io)
/* fake keyboard */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", pc8401a_state, pc8401a_keyboard_tick, attotime::from_hz(64))
+ TIMER(config, "keyboard").configure_periodic(FUNC(pc8401a_state::pc8401a_keyboard_tick), attotime::from_hz(64));
/* devices */
UPD1990A(config, m_rtc);
diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp
index 874ffa4b93d..c2b228dfc45 100644
--- a/src/mame/drivers/pc8801.cpp
+++ b/src/mame/drivers/pc8801.cpp
@@ -2417,7 +2417,7 @@ MACHINE_CONFIG_START(pc8801_state::pc8801)
MCFG_DEVICE_ADD("beeper", BEEP, 2400)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("rtc_timer", pc8801_state, pc8801_rtc_irq, attotime::from_hz(600))
+ TIMER(config, "rtc_timer").configure_periodic(FUNC(pc8801_state::pc8801_rtc_irq), attotime::from_hz(600));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pc8801_state::pc8801fh)
diff --git a/src/mame/drivers/pce220.cpp b/src/mame/drivers/pce220.cpp
index fbc1dee727b..7e4bba2462a 100644
--- a/src/mame/drivers/pce220.cpp
+++ b/src/mame/drivers/pce220.cpp
@@ -966,7 +966,7 @@ MACHINE_CONFIG_START(pce220_state::pce220)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("pce220_timer", pce220_state, pce220_timer_callback, attotime::from_msec(468))
+ TIMER(config, "pce220_timer").configure_periodic(FUNC(pce220_state::pce220_timer_callback), attotime::from_msec(468));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -998,7 +998,7 @@ MACHINE_CONFIG_START(pcg850v_state::pcg815)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("pce220_timer", pcg850v_state, pce220_timer_callback, attotime::from_msec(468))
+ TIMER(config, "pce220_timer").configure_periodic(FUNC(pcg850v_state::pce220_timer_callback), attotime::from_msec(468));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1030,7 +1030,7 @@ MACHINE_CONFIG_START(pcg850v_state::pcg850v)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("pce220_timer", pcg850v_state, pce220_timer_callback, attotime::from_msec(468))
+ TIMER(config, "pce220_timer").configure_periodic(FUNC(pcg850v_state::pce220_timer_callback), attotime::from_msec(468));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/pcw16.cpp b/src/mame/drivers/pcw16.cpp
index c527eb293d7..4be85dacdf2 100644
--- a/src/mame/drivers/pcw16.cpp
+++ b/src/mame/drivers/pcw16.cpp
@@ -1077,9 +1077,9 @@ MACHINE_CONFIG_START(pcw16_state::pcw16)
MCFG_AT_KEYB_ADD("at_keyboard", 3, WRITELINE(*this, pcw16_state, pcw16_keyboard_callback))
/* video ints */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("video_timer", pcw16_state, pcw16_timer_callback, attotime::from_usec(5830))
+ TIMER(config, "video_timer").configure_periodic(FUNC(pcw16_state::pcw16_timer_callback), attotime::from_usec(5830));
/* rtc timer */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("rtc_timer", pcw16_state, rtc_timer_callback, attotime::from_hz(256))
+ TIMER(config, "rtc_timer").configure_periodic(FUNC(pcw16_state::rtc_timer_callback), attotime::from_hz(256));
MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/pegasus.cpp b/src/mame/drivers/pegasus.cpp
index 74bce94db65..1ab5f7726a7 100644
--- a/src/mame/drivers/pegasus.cpp
+++ b/src/mame/drivers/pegasus.cpp
@@ -493,7 +493,7 @@ MACHINE_CONFIG_START(pegasus_state::pegasus)
MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000)) // actually a 6809C - 4MHZ clock coming in, 1MHZ internally
MCFG_DEVICE_PROGRAM_MAP(pegasus_mem)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("pegasus_firq", pegasus_state, pegasus_firq, attotime::from_hz(400))
+ TIMER(config, "pegasus_firq").configure_periodic(FUNC(pegasus_state::pegasus_firq), attotime::from_hz(400));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/photon2.cpp b/src/mame/drivers/photon2.cpp
index 2ca17daaecf..8ee9d4094ba 100644
--- a/src/mame/drivers/photon2.cpp
+++ b/src/mame/drivers/photon2.cpp
@@ -363,7 +363,7 @@ MACHINE_CONFIG_START(photon2_state::photon2)
MCFG_DEVICE_ADD("maincpu", Z80, 3500000) /* 3.5 MHz */
MCFG_DEVICE_PROGRAM_MAP(spectrum_mem)
MCFG_DEVICE_IO_MAP(spectrum_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", photon2_state, spec_interrupt_hack, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(photon2_state::spec_interrupt_hack), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/pingpong.cpp b/src/mame/drivers/pingpong.cpp
index 9f03d6454fb..dc96c3bb143 100644
--- a/src/mame/drivers/pingpong.cpp
+++ b/src/mame/drivers/pingpong.cpp
@@ -453,7 +453,7 @@ MACHINE_CONFIG_START(pingpong_state::pingpong)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80,18432000/6) /* 3.072 MHz (probably) */
MCFG_DEVICE_PROGRAM_MAP(pingpong_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", pingpong_state, pingpong_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(pingpong_state::pingpong_interrupt), "screen", 0, 1);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
@@ -480,8 +480,7 @@ MACHINE_CONFIG_START(pingpong_state::merlinmm)
pingpong(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(merlinmm_map)
- MCFG_TIMER_MODIFY("scantimer")
- MCFG_TIMER_DRIVER_CALLBACK(pingpong_state, merlinmm_interrupt)
+ subdevice<timer_device>("scantimer")->set_callback(FUNC(pingpong_state::merlinmm_interrupt));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/playmark.cpp b/src/mame/drivers/playmark.cpp
index 818ab320eff..fa581a0627b 100644
--- a/src/mame/drivers/playmark.cpp
+++ b/src/mame/drivers/playmark.cpp
@@ -1273,8 +1273,8 @@ MACHINE_CONFIG_START(playmark_state::hotmind)
MCFG_VIDEO_START_OVERRIDE(playmark_state,hotmind)
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
- MCFG_TICKET_DISPENSER_ADD("token", attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
+ TICKET_DISPENSER(config, m_ticket, attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ TICKET_DISPENSER(config, m_token, attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -1317,8 +1317,8 @@ MACHINE_CONFIG_START(playmark_state::luckboomh)
MCFG_VIDEO_START_OVERRIDE(playmark_state,luckboomh)
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
- MCFG_TICKET_DISPENSER_ADD("token", attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
+ TICKET_DISPENSER(config, m_ticket, attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ TICKET_DISPENSER(config, m_token, attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp
index 55c0a21f919..e561916fbec 100644
--- a/src/mame/drivers/pofo.cpp
+++ b/src/mame/drivers/pofo.cpp
@@ -1051,11 +1051,11 @@ MACHINE_CONFIG_START(portfolio_state::portfolio)
MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(INPUTLINE(M80C88A_TAG, INPUT_LINE_NMI))
MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(WRITELINE(*this, portfolio_state, wake_w))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("counter", portfolio_state, counter_tick, attotime::from_hz(XTAL(32'768)/16384))
- MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_TICK_TAG, portfolio_state, system_tick, attotime::from_hz(XTAL(32'768)/32768))
+ TIMER(config, "counter").configure_periodic(FUNC(portfolio_state::counter_tick), attotime::from_hz(XTAL(32'768)/16384));
+ TIMER(config, TIMER_TICK_TAG).configure_periodic(FUNC(portfolio_state::system_tick), attotime::from_hz(XTAL(32'768)/32768));
// fake keyboard
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", portfolio_state, keyboard_tick, attotime::from_usec(2500))
+ TIMER(config, "keyboard").configure_periodic(FUNC(portfolio_state::keyboard_tick), attotime::from_usec(2500));
// software list
MCFG_SOFTWARE_LIST_ADD("cart_list", "pofo")
diff --git a/src/mame/drivers/popobear.cpp b/src/mame/drivers/popobear.cpp
index a9f1823e99c..52f28ccca92 100644
--- a/src/mame/drivers/popobear.cpp
+++ b/src/mame/drivers/popobear.cpp
@@ -648,7 +648,7 @@ MACHINE_CONFIG_START(popobear_state::popobear)
// levels 2,3,5 look interesting
//MCFG_DEVICE_VBLANK_INT_DRIVER("screen", popobear_state, irq5_line_assert)
//MCFG_DEVICE_PERIODIC_INT_DRIVER(popobear_state, irq2_line_assert, 120)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", popobear_state, irq, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(popobear_state::irq), "screen", 0, 1);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/prestige.cpp b/src/mame/drivers/prestige.cpp
index fbc565d4fd6..ebea2c78cce 100644
--- a/src/mame/drivers/prestige.cpp
+++ b/src/mame/drivers/prestige.cpp
@@ -750,7 +750,7 @@ MACHINE_CONFIG_START(prestige_state::prestige_base)
MCFG_DEVICE_IO_MAP(prestige_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(prestige_state,prestige_int_ack)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", prestige_state, irq_timer, attotime::from_hz(200))
+ TIMER(config, "irq_timer").configure_periodic(FUNC(prestige_state::irq_timer), attotime::from_hz(200));
/* video hardware */
MCFG_SCREEN_ADD("screen", LCD)
diff --git a/src/mame/drivers/pro80.cpp b/src/mame/drivers/pro80.cpp
index 67643c7a06a..857593676d8 100644
--- a/src/mame/drivers/pro80.cpp
+++ b/src/mame/drivers/pro80.cpp
@@ -191,7 +191,7 @@ MACHINE_CONFIG_START(pro80_state::pro80)
/* Devices */
MCFG_CASSETTE_ADD( "cassette" )
Z80PIO(config, "pio", XTAL(4'000'000) / 2);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", pro80_state, timer_p, attotime::from_hz(40000)) // cass read
+ TIMER(config, "timer_p").configure_periodic(FUNC(pro80_state::timer_p), attotime::from_hz(40000)); // cass read
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/proteus3.cpp b/src/mame/drivers/proteus3.cpp
index f6d8a4bb0af..aac578e8a34 100644
--- a/src/mame/drivers/proteus3.cpp
+++ b/src/mame/drivers/proteus3.cpp
@@ -413,8 +413,8 @@ MACHINE_CONFIG_START(proteus3_state::proteus3)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
SPEAKER(config, "mono").front_center();
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_c", proteus3_state, timer_c, attotime::from_hz(4800))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", proteus3_state, timer_p, attotime::from_hz(40000))
+ TIMER(config, "timer_c").configure_periodic(FUNC(proteus3_state::timer_c), attotime::from_hz(4800));
+ TIMER(config, "timer_p").configure_periodic(FUNC(proteus3_state::timer_p), attotime::from_hz(40000));
// optional tty keyboard
ACIA6850(config, m_acia2, 0);
diff --git a/src/mame/drivers/psion.cpp b/src/mame/drivers/psion.cpp
index 09119c03684..84da42b4ae5 100644
--- a/src/mame/drivers/psion.cpp
+++ b/src/mame/drivers/psion.cpp
@@ -595,7 +595,7 @@ MACHINE_CONFIG_START(psion_state::psion_2lines)
NVRAM(config, "nvram1").set_custom_handler(FUNC(psion_state::nvram_init)); // sys_regs
NVRAM(config, "nvram2", nvram_device::DEFAULT_ALL_0); // RAM
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", psion_state, nmi_timer, attotime::from_seconds(1))
+ TIMER(config, "nmi_timer").configure_periodic(FUNC(psion_state::nmi_timer), attotime::from_seconds(1));
/* Datapack */
PSION_DATAPACK(config, m_pack1, 0);
@@ -622,8 +622,7 @@ MACHINE_CONFIG_START(psion1_state::psion1)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(psion1_mem)
- MCFG_DEVICE_MODIFY("nmi_timer")
- MCFG_TIMER_START_DELAY(attotime::from_seconds(1))
+ subdevice<timer_device>("nmi_timer")->set_start_delay(attotime::from_seconds(1));
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(6*16, 1*8)
diff --git a/src/mame/drivers/px4.cpp b/src/mame/drivers/px4.cpp
index e3df0086904..f5ff8450691 100644
--- a/src/mame/drivers/px4.cpp
+++ b/src/mame/drivers/px4.cpp
@@ -1507,8 +1507,8 @@ MACHINE_CONFIG_START(px4_state::px4)
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.0);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("one_sec", px4_state, upd7508_1sec_callback, attotime::from_seconds(1))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("frc", px4_state, frc_tick, attotime::from_hz(XTAL(7'372'800) / 2 / 6))
+ TIMER(config, "one_sec").configure_periodic(FUNC(px4_state::upd7508_1sec_callback), attotime::from_seconds(1));
+ TIMER(config, "frc").configure_periodic(FUNC(px4_state::frc_tick), attotime::from_hz(XTAL(7'372'800) / 2 / 6));
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
@@ -1525,7 +1525,7 @@ MACHINE_CONFIG_START(px4_state::px4)
MCFG_CASSETTE_ADD("extcas")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
- MCFG_TIMER_DRIVER_ADD("extcas_timer", px4_state, ext_cassette_read)
+ TIMER(config, m_ext_cas_timer).configure_generic(FUNC(px4_state::ext_cassette_read));
// sio port
MCFG_EPSON_SIO_ADD("sio", nullptr)
diff --git a/src/mame/drivers/rad_eu3a14.cpp b/src/mame/drivers/rad_eu3a14.cpp
index 25d0c4af2ae..8a2903f78fe 100644
--- a/src/mame/drivers/rad_eu3a14.cpp
+++ b/src/mame/drivers/rad_eu3a14.cpp
@@ -1291,7 +1291,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(radica_eu3a14_state::radica_eu3a14_adc)
radica_eu3a14(config);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", radica_eu3a14_state, scanline_cb, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(radica_eu3a14_state::scanline_cb), "screen", 0, 1);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp
index 440f474545b..3e7a65e0496 100644
--- a/src/mame/drivers/rainbow.cpp
+++ b/src/mame/drivers/rainbow.cpp
@@ -3335,7 +3335,7 @@ MACHINE_CONFIG_START(rainbow_state::rainbow)
prtbrg.set_stages(8);
prtbrg.count_out_cb().set(FUNC(rainbow_state::bitrate_counter_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("motor", rainbow_state, hd_motor_tick, attotime::from_hz(60))
+ TIMER(config, "motor").configure_periodic(FUNC(rainbow_state::hd_motor_tick), attotime::from_hz(60));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rbisland.cpp b/src/mame/drivers/rbisland.cpp
index 38a9e8f2cc8..fa77624b239 100644
--- a/src/mame/drivers/rbisland.cpp
+++ b/src/mame/drivers/rbisland.cpp
@@ -670,7 +670,7 @@ MACHINE_CONFIG_START(rbisland_state::rbisland)
m_cchip->in_ad_callback().set_ioport("80000D");
m_cchip->out_pb_callback().set(FUNC(rbisland_state::counters_w));
- MCFG_TIMER_DRIVER_ADD("cchip_irq_clear", rbisland_state, cchip_irq_clear_cb)
+ TIMER(config, m_cchip_irq_clear).configure_generic(FUNC(rbisland_state::cchip_irq_clear_cb));
MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
diff --git a/src/mame/drivers/rd110.cpp b/src/mame/drivers/rd110.cpp
index b31568faed3..a51994b7ef5 100644
--- a/src/mame/drivers/rd110.cpp
+++ b/src/mame/drivers/rd110.cpp
@@ -259,9 +259,9 @@ MACHINE_CONFIG_START(d110_state::d110)
MSM6222B_01(config, m_lcd, 0);
- MCFG_TIMER_DRIVER_ADD( m_midi_timer, d110_state, midi_timer_cb )
+ TIMER(config, m_midi_timer).configure_generic(FUNC(d110_state::midi_timer_cb));
- MCFG_TIMER_DRIVER_ADD_PERIODIC( "samples_timer", d110_state, samples_timer_cb, attotime::from_hz(32000*2) )
+ TIMER(config, "samples_timer").configure_periodic(FUNC(d110_state::samples_timer_cb), attotime::from_hz(32000*2) );
MACHINE_CONFIG_END
ROM_START( d110 )
diff --git a/src/mame/drivers/rex6000.cpp b/src/mame/drivers/rex6000.cpp
index 43c3a8b6209..5b4b64c9597 100644
--- a/src/mame/drivers/rex6000.cpp
+++ b/src/mame/drivers/rex6000.cpp
@@ -901,9 +901,9 @@ MACHINE_CONFIG_START(rex6000_state::rex6000)
MCFG_DEVICE_PROGRAM_MAP(rex6000_mem)
MCFG_DEVICE_IO_MAP(rex6000_io)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("sec_timer", rex6000_state, sec_timer, attotime::from_hz(1))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer1", rex6000_state, irq_timer1, attotime::from_hz(32))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer2", rex6000_state, irq_timer2, attotime::from_hz(4096))
+ TIMER(config, "sec_timer").configure_periodic(FUNC(rex6000_state::sec_timer), attotime::from_hz(1));
+ TIMER(config, "irq_timer1").configure_periodic(FUNC(rex6000_state::irq_timer1), attotime::from_hz(32));
+ TIMER(config, "irq_timer2").configure_periodic(FUNC(rex6000_state::irq_timer2), attotime::from_hz(4096));
/* video hardware */
MCFG_SCREEN_ADD("screen", LCD)
@@ -966,9 +966,9 @@ MACHINE_CONFIG_START(oz750_state::oz750)
MCFG_DEVICE_PROGRAM_MAP(rex6000_mem)
MCFG_DEVICE_IO_MAP(oz750_io)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("sec_timer", rex6000_state, sec_timer, attotime::from_hz(1))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer1", rex6000_state, irq_timer1, attotime::from_hz(64))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer2", rex6000_state, irq_timer2, attotime::from_hz(8192))
+ TIMER(config, "sec_timer").configure_periodic(FUNC(rex6000_state::sec_timer), attotime::from_hz(1));
+ TIMER(config, "irq_timer1").configure_periodic(FUNC(rex6000_state::irq_timer1), attotime::from_hz(64));
+ TIMER(config, "irq_timer2").configure_periodic(FUNC(rex6000_state::irq_timer2), attotime::from_hz(8192));
NS16550(config, m_uart, XTAL(9'830'400) / 4);
m_uart->out_tx_callback().set("serport", FUNC(rs232_port_device::write_txd));
diff --git a/src/mame/drivers/rmt32.cpp b/src/mame/drivers/rmt32.cpp
index c7ffd6c2224..f325012954e 100644
--- a/src/mame/drivers/rmt32.cpp
+++ b/src/mame/drivers/rmt32.cpp
@@ -370,9 +370,9 @@ MACHINE_CONFIG_START(mt32_state::mt32)
SED1200D0A(config, lcd, 0);
- MCFG_TIMER_DRIVER_ADD( "midi_timer", mt32_state, midi_timer_cb )
+ TIMER(config, midi_timer).configure_generic(FUNC(mt32_state::midi_timer_cb));
- MCFG_TIMER_DRIVER_ADD_PERIODIC( "samples_timer", mt32_state, samples_timer_cb, attotime::from_hz(32000*2) )
+ TIMER(config, "samples_timer").configure_periodic(FUNC(mt32_state::samples_timer_cb), attotime::from_hz(32000*2));
MACHINE_CONFIG_END
ROM_START( mt32 )
diff --git a/src/mame/drivers/rowamet.cpp b/src/mame/drivers/rowamet.cpp
index 19b6f39b9af..ffabaf12ac0 100644
--- a/src/mame/drivers/rowamet.cpp
+++ b/src/mame/drivers/rowamet.cpp
@@ -229,7 +229,7 @@ MACHINE_CONFIG_START(rowamet_state::rowamet)
MCFG_DEVICE_ADD("cpu2", Z80, 1888888)
MCFG_DEVICE_PROGRAM_MAP(rowamet_sub_map)
MCFG_DEVICE_IO_MAP(rowamet_sub_io)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", rowamet_state, timer_a, attotime::from_hz(200))
+ TIMER(config, "timer_a").configure_periodic(FUNC(rowamet_state::timer_a), attotime::from_hz(200));
/* Video */
config.set_default_layout(layout_rowamet);
diff --git a/src/mame/drivers/rulechan.cpp b/src/mame/drivers/rulechan.cpp
index c421cf10508..08b2ed382e6 100644
--- a/src/mame/drivers/rulechan.cpp
+++ b/src/mame/drivers/rulechan.cpp
@@ -727,8 +727,8 @@ INPUT_PORTS_END
* Machine Driver *
**************************************/
-MACHINE_CONFIG_START(rulechan_state::rulechan)
-
+void rulechan_state::rulechan(machine_config &config)
+{
/* basic machine hardware */
Z80(config, m_maincpu, CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &rulechan_state::main_map);
@@ -741,8 +741,8 @@ MACHINE_CONFIG_START(rulechan_state::rulechan)
/* eeprom */
EEPROM_93C46_8BIT(config, "eeprom");
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ball_speed", rulechan_state, ball_speed, attotime::from_hz(60))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("wheel_speed", rulechan_state, wheel_speed, attotime::from_hz(60))
+ TIMER(config, "ball_speed").configure_periodic(FUNC(rulechan_state::ball_speed), attotime::from_hz(60));
+ TIMER(config, "wheel_speed").configure_periodic(FUNC(rulechan_state::wheel_speed), attotime::from_hz(60));
/* video hardware */
v9938_device &v9938(V9938(config, "v9938", VID_CLOCK));
@@ -757,8 +757,7 @@ MACHINE_CONFIG_START(rulechan_state::rulechan)
ay_re900.port_a_read_callback().set(FUNC(rulechan_state::psg_portA_r));
ay_re900.port_b_read_callback().set(FUNC(rulechan_state::psg_portB_r));
ay_re900.add_route(ALL_OUTPUTS, "mono", 0.5);
-
-MACHINE_CONFIG_END
+}
/**************************************
diff --git a/src/mame/drivers/rzone.cpp b/src/mame/drivers/rzone.cpp
index 32142bbd63a..9af532c90b2 100644
--- a/src/mame/drivers/rzone.cpp
+++ b/src/mame/drivers/rzone.cpp
@@ -257,8 +257,8 @@ MACHINE_CONFIG_START(rzone_state::rzbatfor)
MCFG_SCREEN_SIZE(1368, 1080)
MCFG_SCREEN_VISIBLE_AREA(0, 1368-1, 0, 1080-1)
- MCFG_TIMER_DRIVER_ADD("led_off", rzone_state, led_off_callback)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, m_led_off).configure_generic(FUNC(rzone_state::led_off_callback));
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_rzone);
/* sound hardware */
@@ -283,8 +283,8 @@ MACHINE_CONFIG_START(rzone_state::rztoshden)
MCFG_SCREEN_SIZE(1392, 1080)
MCFG_SCREEN_VISIBLE_AREA(0, 1392-1, 0, 1080-1)
- MCFG_TIMER_DRIVER_ADD("led_off", rzone_state, led_off_callback)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, m_led_off).configure_generic(FUNC(rzone_state::led_off_callback));
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_rzone);
/* sound hardware */
@@ -309,8 +309,8 @@ MACHINE_CONFIG_START(rzone_state::rzindy500)
MCFG_SCREEN_SIZE(1425, 1080)
MCFG_SCREEN_VISIBLE_AREA(0, 1425-1, 0, 1080-1)
- MCFG_TIMER_DRIVER_ADD("led_off", rzone_state, led_off_callback)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, m_led_off).configure_generic(FUNC(rzone_state::led_off_callback));
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_rzone);
/* sound hardware */
diff --git a/src/mame/drivers/s3.cpp b/src/mame/drivers/s3.cpp
index 3c0b7261150..f3bf86966f1 100644
--- a/src/mame/drivers/s3.cpp
+++ b/src/mame/drivers/s3.cpp
@@ -440,7 +440,7 @@ MACHINE_CONFIG_START(s3_state::s3)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6800, 3580000)
MCFG_DEVICE_PROGRAM_MAP(s3_main_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s3_state, irq, attotime::from_hz(250))
+ TIMER(config, "irq").configure_periodic(FUNC(s3_state::irq), attotime::from_hz(250));
MCFG_MACHINE_RESET_OVERRIDE(s3_state, s3)
/* Video */
diff --git a/src/mame/drivers/s4.cpp b/src/mame/drivers/s4.cpp
index d20a91c419c..ba1f296c4c9 100644
--- a/src/mame/drivers/s4.cpp
+++ b/src/mame/drivers/s4.cpp
@@ -434,7 +434,7 @@ MACHINE_CONFIG_START(s4_state::s4)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6800, 3580000)
MCFG_DEVICE_PROGRAM_MAP(s4_main_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s4_state, irq, attotime::from_hz(250))
+ TIMER(config, "irq").configure_periodic(FUNC(s4_state::irq), attotime::from_hz(250));
MCFG_MACHINE_RESET_OVERRIDE(s4_state, s4)
/* Video */
diff --git a/src/mame/drivers/sbowling.cpp b/src/mame/drivers/sbowling.cpp
index cbdb28da395..8ae7deaa9b5 100644
--- a/src/mame/drivers/sbowling.cpp
+++ b/src/mame/drivers/sbowling.cpp
@@ -416,7 +416,7 @@ MACHINE_CONFIG_START(sbowling_state::sbowling)
MCFG_DEVICE_ADD("maincpu", I8080, XTAL(19'968'000)/10) /* ? */
MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_DEVICE_IO_MAP(port_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sbowling_state, interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(sbowling_state::interrupt), "screen", 0, 1);
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/scobra.cpp b/src/mame/drivers/scobra.cpp
index 3dc34b18c06..8ae0988fa1c 100644
--- a/src/mame/drivers/scobra.cpp
+++ b/src/mame/drivers/scobra.cpp
@@ -897,7 +897,7 @@ MACHINE_CONFIG_START(scobra_state::type1)
ttl7474_device &ttl7474_9m_2(TTL7474(config, "7474_9m_2", 0));
ttl7474_9m_2.comp_output_cb().set(FUNC(scobra_state::galaxold_7474_9m_2_q_callback));
- MCFG_TIMER_DRIVER_ADD("int_timer", scobra_state, galaxold_interrupt_timer)
+ TIMER(config, "int_timer").configure_generic(FUNC(scobra_state::galaxold_interrupt_timer));
WATCHDOG_TIMER(config, "watchdog");
@@ -1058,7 +1058,7 @@ MACHINE_CONFIG_START(scobra_state::hustler)
ttl7474_device &ttl7474_9m_2(TTL7474(config, "7474_9m_2", 0));
ttl7474_9m_2.comp_output_cb().set(FUNC(scobra_state::galaxold_7474_9m_2_q_callback));
- MCFG_TIMER_DRIVER_ADD("int_timer", scobra_state, galaxold_interrupt_timer)
+ TIMER(config, "int_timer").configure_generic(FUNC(scobra_state::galaxold_interrupt_timer));
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/scorpion.cpp b/src/mame/drivers/scorpion.cpp
index 4aab54a3b56..b8b054b01c8 100644
--- a/src/mame/drivers/scorpion.cpp
+++ b/src/mame/drivers/scorpion.cpp
@@ -309,7 +309,7 @@ MACHINE_CONFIG_START(scorpion_state::scorpion)
/* internal ram */
m_ram->set_default_size("256K");
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", scorpion_state, nmi_check_callback, attotime::from_hz(50))
+ TIMER(config, "nmi_timer").configure_periodic(FUNC(scorpion_state::nmi_check_callback), attotime::from_hz(50));
config.device_remove("exp");
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp
index de587f7de68..7ff3f630e95 100644
--- a/src/mame/drivers/scramble.cpp
+++ b/src/mame/drivers/scramble.cpp
@@ -1322,7 +1322,7 @@ MACHINE_CONFIG_START(scramble_state::scramble)
ttl7474_device &konami_7474(TTL7474(config, "konami_7474", 0));
konami_7474.comp_output_cb().set(FUNC(scramble_state::scramble_sh_7474_q_callback));
- MCFG_TIMER_DRIVER_ADD("int_timer", scramble_state, galaxold_interrupt_timer)
+ TIMER(config, "int_timer").configure_generic(FUNC(scramble_state::galaxold_interrupt_timer));
WATCHDOG_TIMER(config, "watchdog");
@@ -1578,7 +1578,7 @@ MACHINE_CONFIG_START(scramble_state::ad2083)
ttl7474_device &konami_7474(TTL7474(config, "konami_7474", 0));
konami_7474.comp_output_cb().set(FUNC(scramble_state::scramble_sh_7474_q_callback));
- MCFG_TIMER_DRIVER_ADD("int_timer", scramble_state, galaxold_interrupt_timer)
+ TIMER(config, "int_timer").configure_generic(FUNC(scramble_state::galaxold_interrupt_timer));
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/scregg.cpp b/src/mame/drivers/scregg.cpp
index b7a536a629e..2786d4e2d77 100644
--- a/src/mame/drivers/scregg.cpp
+++ b/src/mame/drivers/scregg.cpp
@@ -274,7 +274,7 @@ MACHINE_CONFIG_START(scregg_state::dommy)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6502, XTAL(12'000'000)/8)
MCFG_DEVICE_PROGRAM_MAP(dommy_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("irq", scregg_state, scregg_interrupt, "screen", 0, 8)
+ TIMER(config, "irq").configure_scanline(FUNC(scregg_state::scregg_interrupt), "screen", 0, 8);
MCFG_MACHINE_START_OVERRIDE(scregg_state,scregg)
MCFG_MACHINE_RESET_OVERRIDE(scregg_state,scregg)
@@ -302,7 +302,7 @@ MACHINE_CONFIG_START(scregg_state::scregg)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6502, XTAL(12'000'000)/8)
MCFG_DEVICE_PROGRAM_MAP(eggs_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("irq", scregg_state, scregg_interrupt, "screen", 0, 8)
+ TIMER(config, "irq").configure_scanline(FUNC(scregg_state::scregg_interrupt), "screen", 0, 8);
MCFG_MACHINE_START_OVERRIDE(scregg_state,scregg)
MCFG_MACHINE_RESET_OVERRIDE(scregg_state,scregg)
diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp
index f72664fd60d..b624190a8b8 100644
--- a/src/mame/drivers/seta2.cpp
+++ b/src/mame/drivers/seta2.cpp
@@ -2430,7 +2430,7 @@ MACHINE_CONFIG_START(seta2_state::reelquak)
m_tmp68301->out_parallel_callback().set(FUNC(seta2_state::reelquak_leds_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TICKET_DISPENSER_ADD("dispenser", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, m_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0x00, 0x140-1, 0x000, 0x0f0-1)
@@ -2479,7 +2479,7 @@ MACHINE_CONFIG_START(seta2_state::telpacfl)
EEPROM_93C46_16BIT(config, "eeprom"); // not hooked up, seems unused
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_HOPPER_ADD("dispenser", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ HOPPER(config, m_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
// video hardware
MCFG_SCREEN_MODIFY("screen")
@@ -2519,7 +2519,7 @@ MACHINE_CONFIG_START(funcube_state::funcube)
MCFG_DEVICE_ADD("maincpu", MCF5206E, XTAL(25'447'000))
MCFG_DEVICE_PROGRAM_MAP(funcube_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", funcube_state, funcube_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(funcube_state::funcube_interrupt), "screen", 0, 1);
MCFG_DEVICE_ADD("sub", H83007, FUNCUBE_SUB_CPU_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(funcube_sub_map)
diff --git a/src/mame/drivers/shadfrce.cpp b/src/mame/drivers/shadfrce.cpp
index 4cada653a05..3a9e4d4e407 100644
--- a/src/mame/drivers/shadfrce.cpp
+++ b/src/mame/drivers/shadfrce.cpp
@@ -539,7 +539,7 @@ MACHINE_CONFIG_START(shadfrce_state::shadfrce)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000) / 2) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(shadfrce_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", shadfrce_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(shadfrce_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(shadfrce_sound_map)
diff --git a/src/mame/drivers/shaolins.cpp b/src/mame/drivers/shaolins.cpp
index a5ef43474c1..28fd15264ca 100644
--- a/src/mame/drivers/shaolins.cpp
+++ b/src/mame/drivers/shaolins.cpp
@@ -198,7 +198,7 @@ MACHINE_CONFIG_START(shaolins_state::shaolins)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_CLOCK/12) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(shaolins_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", shaolins_state, interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(shaolins_state::interrupt), "screen", 0, 1);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
diff --git a/src/mame/drivers/sigmab98.cpp b/src/mame/drivers/sigmab98.cpp
index f752e4e9c1b..e93b056a7cb 100644
--- a/src/mame/drivers/sigmab98.cpp
+++ b/src/mame/drivers/sigmab98.cpp
@@ -2852,7 +2852,7 @@ MACHINE_CONFIG_START(sigmab98_state::sigmab98)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_16BIT(config, "eeprom");
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2928,7 +2928,7 @@ MACHINE_CONFIG_START(lufykzku_state::lufykzku)
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(20'000'000) / 2) // !! TAXAN KY-80, clock @X1? !!
MCFG_DEVICE_PROGRAM_MAP(lufykzku_mem_map)
MCFG_DEVICE_IO_MAP(lufykzku_io_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lufykzku_state, lufykzku_irq, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(lufykzku_state::lufykzku_irq), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(lufykzku_state, lufykzku)
@@ -2936,7 +2936,7 @@ MACHINE_CONFIG_START(lufykzku_state::lufykzku)
// No EEPROM
MCFG_DEVICE_ADD("watchdog_mb3773", MB3773, 0)
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
// 2 x 8-bit parallel/serial converters
TTL165(config, m_dsw_shifter[0]);
@@ -2998,14 +2998,14 @@ MACHINE_CONFIG_START(sigmab98_state::sammymdl)
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(20'000'000) / 2) // !! KL5C80A120FP @ 10MHz? (actually 4 times faster than Z80) !!
MCFG_DEVICE_PROGRAM_MAP( animalc_map )
MCFG_DEVICE_IO_MAP( animalc_io )
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sigmab98_state, sammymdl_irq, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(sigmab98_state::sammymdl_irq), "screen", 0, 1);
MCFG_MACHINE_RESET_OVERRIDE(sigmab98_state, sammymdl )
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // battery backed RAM
EEPROM_93C46_8BIT(config, "eeprom");
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
WATCHDOG_TIMER(config, "watchdog");
@@ -3047,9 +3047,9 @@ MACHINE_CONFIG_START(sigmab98_state::gocowboy)
MCFG_DEVICE_PROGRAM_MAP( gocowboy_map )
MCFG_DEVICE_IO_MAP( gocowboy_io )
- MCFG_DEVICE_REMOVE("hopper")
- MCFG_TICKET_DISPENSER_ADD("hopper_small", attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
- MCFG_TICKET_DISPENSER_ADD("hopper_large", attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
+ config.device_remove("hopper");
+ TICKET_DISPENSER(config, m_hopper_small, attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
+ TICKET_DISPENSER(config, m_hopper_large, attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
MACHINE_CONFIG_END
MACHINE_CONFIG_START(sigmab98_state::haekaka)
diff --git a/src/mame/drivers/simple_st0016.cpp b/src/mame/drivers/simple_st0016.cpp
index a9218cb746c..9f50f6ec473 100644
--- a/src/mame/drivers/simple_st0016.cpp
+++ b/src/mame/drivers/simple_st0016.cpp
@@ -472,7 +472,7 @@ MACHINE_CONFIG_START(st0016_state::st0016)
MCFG_DEVICE_ADD("maincpu",ST0016_CPU,8000000) /* 8 MHz ? */
MCFG_DEVICE_PROGRAM_MAP(st0016_mem)
MCFG_DEVICE_IO_MAP(st0016_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", st0016_state, st0016_int, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(st0016_state::st0016_int), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/skullxbo.cpp b/src/mame/drivers/skullxbo.cpp
index 9a7ffb11a17..ba3ac589ea2 100644
--- a/src/mame/drivers/skullxbo.cpp
+++ b/src/mame/drivers/skullxbo.cpp
@@ -232,7 +232,7 @@ MACHINE_CONFIG_START(skullxbo_state::skullxbo)
MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD("scan_timer", skullxbo_state, scanline_timer)
+ TIMER(config, m_scanline_timer).configure_generic(FUNC(skullxbo_state::scanline_timer));
EEPROM_2816(config, "eeprom").lock_after_write(true);
diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp
index 9da28fad07b..1cf7408a14d 100644
--- a/src/mame/drivers/skylncr.cpp
+++ b/src/mame/drivers/skylncr.cpp
@@ -1666,7 +1666,7 @@ MACHINE_CONFIG_START(skylncr_state::skylncr)
ppi1.in_pb_callback().set_ioport("IN3");
ppi1.in_pc_callback().set_ioport("IN4");
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/sliver.cpp b/src/mame/drivers/sliver.cpp
index 28621979a7c..377798306a6 100644
--- a/src/mame/drivers/sliver.cpp
+++ b/src/mame/drivers/sliver.cpp
@@ -520,7 +520,7 @@ MACHINE_CONFIG_START(sliver_state::sliver)
MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
MCFG_DEVICE_PROGRAM_MAP(sliver_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sliver_state, irq4_line_hold)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("obj_actel", sliver_state, obj_irq_cb, attotime::from_hz(60)) /* unknown clock, causes "obj actel ready error" without this */
+ TIMER(config, "obj_actel").configure_periodic(FUNC(sliver_state::obj_irq_cb), attotime::from_hz(60)); /* unknown clock, causes "obj actel ready error" without this */
// irq 2 valid but not used?
I8051(config, m_audiocpu, 8000000);
diff --git a/src/mame/drivers/smc777.cpp b/src/mame/drivers/smc777.cpp
index f1849557425..883bd9e5659 100644
--- a/src/mame/drivers/smc777.cpp
+++ b/src/mame/drivers/smc777.cpp
@@ -1067,7 +1067,7 @@ MACHINE_CONFIG_START(smc777_state::smc777)
BEEP(config, m_beeper, 300); // TODO: correct frequency
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.50);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", smc777_state, keyboard_callback, attotime::from_hz(240/32))
+ TIMER(config, "keyboard_timer").configure_periodic(FUNC(smc777_state::keyboard_callback), attotime::from_hz(240/32));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/snk6502.cpp b/src/mame/drivers/snk6502.cpp
index 0e6504de149..67fd625ff91 100644
--- a/src/mame/drivers/snk6502.cpp
+++ b/src/mame/drivers/snk6502.cpp
@@ -830,7 +830,7 @@ MACHINE_CONFIG_START(snk6502_state::sasuke)
crtc.set_show_border_area(false);
crtc.set_char_width(8);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("sasuke_timer", snk6502_state, sasuke_update_counter, attotime::from_hz(MASTER_CLOCK / 8))
+ TIMER(config, "sasuke_timer").configure_periodic(FUNC(snk6502_state::sasuke_update_counter), attotime::from_hz(MASTER_CLOCK / 8));
// sound hardware
MCFG_DEVICE_ADD("snk6502", SASUKE_SOUND, 0)
diff --git a/src/mame/drivers/spc1500.cpp b/src/mame/drivers/spc1500.cpp
index c7860f951c6..8cbed428c56 100644
--- a/src/mame/drivers/spc1500.cpp
+++ b/src/mame/drivers/spc1500.cpp
@@ -911,7 +911,7 @@ MACHINE_CONFIG_START(spc1500_state::spc1500)
m_pio->out_pb_callback().set(FUNC(spc1500_state::portb_w));
m_pio->out_pc_callback().set(FUNC(spc1500_state::portc_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("1hz", spc1500_state, timer, attotime::from_hz(1))
+ TIMER(config, "1hz").configure_periodic(FUNC(spc1500_state::timer), attotime::from_hz(1));
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/spirit76.cpp b/src/mame/drivers/spirit76.cpp
index 327a4eba9c5..5ef00d55cd1 100644
--- a/src/mame/drivers/spirit76.cpp
+++ b/src/mame/drivers/spirit76.cpp
@@ -125,7 +125,7 @@ MACHINE_CONFIG_START(spirit76_state::spirit76)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6800, 500000)
MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", spirit76_state, irq, attotime::from_hz(120))
+ TIMER(config, "irq").configure_periodic(FUNC(spirit76_state::irq), attotime::from_hz(120));
/* video hardware */
//MCFG_DEFAULT_LAYOUT()
diff --git a/src/mame/drivers/sprcros2.cpp b/src/mame/drivers/sprcros2.cpp
index 1f10dc36802..cca98c6b5c0 100644
--- a/src/mame/drivers/sprcros2.cpp
+++ b/src/mame/drivers/sprcros2.cpp
@@ -459,7 +459,7 @@ MACHINE_CONFIG_START(sprcros2_state::sprcros2)
MCFG_DEVICE_PROGRAM_MAP(master_map)
MCFG_DEVICE_IO_MAP(master_io)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sprcros2_state, master_vblank_irq)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sprcros2_state, master_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(sprcros2_state::master_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave_cpu",Z80,MAIN_CLOCK/4)
MCFG_DEVICE_PROGRAM_MAP(slave_map)
diff --git a/src/mame/drivers/sprint8.cpp b/src/mame/drivers/sprint8.cpp
index c952722d2e2..5408ab3526b 100644
--- a/src/mame/drivers/sprint8.cpp
+++ b/src/mame/drivers/sprint8.cpp
@@ -462,8 +462,7 @@ MACHINE_CONFIG_START(sprint8_state::sprint8)
MCFG_DEVICE_ADD("maincpu", M6800, 11055000 / 11) /* ? */
MCFG_DEVICE_PROGRAM_MAP(sprint8_map)
-
- MCFG_TIMER_DRIVER_ADD_PERIODIC("input_timer", sprint8_state, input_callback, attotime::from_hz(60))
+ TIMER(config, "input_timer").configure_periodic(FUNC(sprint8_state::input_callback), attotime::from_hz(60));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/spyhuntertec.cpp b/src/mame/drivers/spyhuntertec.cpp
index 5e554220c9c..029ae54f680 100644
--- a/src/mame/drivers/spyhuntertec.cpp
+++ b/src/mame/drivers/spyhuntertec.cpp
@@ -679,7 +679,7 @@ MACHINE_CONFIG_START(spyhuntertec_state::spyhuntertec)
MCFG_DEVICE_PROGRAM_MAP(spyhuntertec_map)
MCFG_DEVICE_IO_MAP(spyhuntertec_portmap)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", spyhuntertec_state, irq0_line_hold)
- MCFG_TIMER_DRIVER_ADD("analog_timer", spyhuntertec_state, analog_count_callback)
+ TIMER(config, m_analog_timer).configure_generic(FUNC(spyhuntertec_state::analog_count_callback));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/squale.cpp b/src/mame/drivers/squale.cpp
index ca6cfd65a0f..d85f993cee1 100644
--- a/src/mame/drivers/squale.cpp
+++ b/src/mame/drivers/squale.cpp
@@ -828,7 +828,7 @@ MACHINE_CONFIG_START(squale_state::squale)
m_ef9365->set_palette_tag("palette");
m_ef9365->set_nb_bitplanes(4);
m_ef9365->set_display_mode(ef9365_device::DISPLAY_MODE_256x256);
- MCFG_TIMER_DRIVER_ADD_SCANLINE("squale_sl", squale_state, squale_scanline, "screen", 0, 10)
+ TIMER(config, "squale_sl").configure_scanline(FUNC(squale_state::squale_scanline), "screen", 0, 10);
/* Floppy */
WD1770(config, m_fdc, 8_MHz_XTAL);
diff --git a/src/mame/drivers/srumbler.cpp b/src/mame/drivers/srumbler.cpp
index 1eb3d4490a0..dc2e2ac91b7 100644
--- a/src/mame/drivers/srumbler.cpp
+++ b/src/mame/drivers/srumbler.cpp
@@ -250,7 +250,7 @@ MACHINE_CONFIG_START(srumbler_state::srumbler)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809, 6000000) /* HD68B09P at 6 MHz (?) */
MCFG_DEVICE_PROGRAM_MAP(srumbler_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", srumbler_state, interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(srumbler_state::interrupt), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 3000000) /* 3 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(srumbler_sound_map)
diff --git a/src/mame/drivers/st_mp100.cpp b/src/mame/drivers/st_mp100.cpp
index 720ee21fece..15b68ba07ed 100644
--- a/src/mame/drivers/st_mp100.cpp
+++ b/src/mame/drivers/st_mp100.cpp
@@ -732,7 +732,7 @@ MACHINE_CONFIG_START(st_mp100_state::st_mp100)
m_pia_u10->cb2_handler().set(FUNC(st_mp100_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", st_mp100_state, timer_x, attotime::from_hz(120)) // mains freq*2
+ TIMER(config, "timer_x").configure_periodic(FUNC(st_mp100_state::timer_x), attotime::from_hz(120)); // mains freq*2
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(st_mp100_state::u11_a_r));
@@ -742,7 +742,7 @@ MACHINE_CONFIG_START(st_mp100_state::st_mp100)
m_pia_u11->cb2_handler().set(FUNC(st_mp100_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d", st_mp100_state, u11_timer, attotime::from_hz(634)) // 555 timer*2
+ TIMER(config, "timer_d").configure_periodic(FUNC(st_mp100_state::u11_timer), attotime::from_hz(634)); // 555 timer*2
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/st_mp200.cpp b/src/mame/drivers/st_mp200.cpp
index d26b452066d..9da481e4fcb 100644
--- a/src/mame/drivers/st_mp200.cpp
+++ b/src/mame/drivers/st_mp200.cpp
@@ -603,7 +603,7 @@ MACHINE_CONFIG_START(st_mp200_state::st_mp200)
m_pia_u10->cb2_handler().set(FUNC(st_mp200_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", st_mp200_state, timer_x, attotime::from_hz(120)) // mains freq*2
+ TIMER(config, "timer_x").configure_periodic(FUNC(st_mp200_state::timer_x), attotime::from_hz(120)); // mains freq*2
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(st_mp200_state::u11_a_r));
@@ -613,7 +613,7 @@ MACHINE_CONFIG_START(st_mp200_state::st_mp200)
m_pia_u11->cb2_handler().set(FUNC(st_mp200_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d", st_mp200_state, u11_timer, attotime::from_hz(634)) // 555 timer*2
+ TIMER(config, "timer_d").configure_periodic(FUNC(st_mp200_state::u11_timer), attotime::from_hz(634)); // 555 timer*2
MACHINE_CONFIG_END
MACHINE_CONFIG_START(st_mp200_state::st_mp201)
diff --git a/src/mame/drivers/stratos.cpp b/src/mame/drivers/stratos.cpp
index 1c4cb161ce3..14a2e243d1c 100644
--- a/src/mame/drivers/stratos.cpp
+++ b/src/mame/drivers/stratos.cpp
@@ -359,7 +359,7 @@ MACHINE_CONFIG_START(stratos_state::stratos)
MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 63)
MCFG_SCREEN_UPDATE_DRIVER(stratos_state, screen_update)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", stratos_state, irq_timer, attotime::from_hz(1000))
+ TIMER(config, "irq").configure_periodic(FUNC(stratos_state::irq_timer), attotime::from_hz(1000));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp
index 0a55731dfaa..185cee34300 100644
--- a/src/mame/drivers/subsino.cpp
+++ b/src/mame/drivers/subsino.cpp
@@ -2717,7 +2717,7 @@ MACHINE_CONFIG_START(subsino_state::victor21)
ppi.tri_pb_callback().set_constant(0);
ppi.in_pc_callback().set_ioport("INC");
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2760,7 +2760,7 @@ MACHINE_CONFIG_START(subsino_state::crsbingo)
MCFG_DEVICE_PROGRAM_MAP(crsbingo_map)
MCFG_DEVICE_IO_MAP(subsino_iomap)
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2801,7 +2801,7 @@ MACHINE_CONFIG_START(subsino_state::srider)
ppi2.in_pb_callback().set_ioport("INA");
ppi2.in_pc_callback().set_ioport("INB");
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2853,7 +2853,7 @@ MACHINE_CONFIG_START(subsino_state::tisub)
ppi2.in_pb_callback().set_ioport("INA");
ppi2.in_pc_callback().set_ioport("INB");
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2894,7 +2894,7 @@ MACHINE_CONFIG_START(subsino_state::stbsub)
ppi2.in_pc_callback().set_ioport("INA");
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp
index 13b9903abe6..caa1dc759b4 100644
--- a/src/mame/drivers/subsino2.cpp
+++ b/src/mame/drivers/subsino2.cpp
@@ -2390,7 +2390,7 @@ MACHINE_CONFIG_START(subsino2_state::bishjan)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", subsino2_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/sun3.cpp b/src/mame/drivers/sun3.cpp
index 68a5c9863f1..8d62c3439d8 100644
--- a/src/mame/drivers/sun3.cpp
+++ b/src/mame/drivers/sun3.cpp
@@ -1035,7 +1035,7 @@ MACHINE_CONFIG_START(sun3_state::sun3)
// MMU Type 3 device space
ADDRESS_MAP_BANK(config, "type3").set_map(&sun3_state::vmetype3space_map).set_options(ENDIANNESS_BIG, 32, 32, 0x80000000);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", sun3_state, sun3_timer, attotime::from_hz(100))
+ TIMER(config, "timer").configure_periodic(FUNC(sun3_state::sun3_timer), attotime::from_hz(100));
SCC8530N(config, m_scc1, 4.9152_MHz_XTAL);
m_scc1->out_txda_callback().set(KEYBOARD_TAG, FUNC(sun_keyboard_port_device::write_txd));
@@ -1124,7 +1124,7 @@ MACHINE_CONFIG_START(sun3_state::sun3_50)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", sun3_state, sun3_timer, attotime::from_hz(100))
+ TIMER(config, "timer").configure_periodic(FUNC(sun3_state::sun3_timer), attotime::from_hz(100));
RAM(config, m_ram).set_default_size("4M").set_default_value(0x00);
diff --git a/src/mame/drivers/sun3x.cpp b/src/mame/drivers/sun3x.cpp
index 6fb4a9d82a1..9942f46ce8c 100644
--- a/src/mame/drivers/sun3x.cpp
+++ b/src/mame/drivers/sun3x.cpp
@@ -630,7 +630,7 @@ MACHINE_CONFIG_START(sun3x_state::sun3_80)
MCFG_FLOPPY_DRIVE_ADD("fdc:0", sun_floppies, "35hd", sun3x_state::floppy_formats)
// the timekeeper has no interrupt output, so 3/80 includes a dedicated timer circuit
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", sun3x_state, sun380_timer, attotime::from_hz(100))
+ TIMER(config, "timer").configure_periodic(FUNC(sun3x_state::sun380_timer), attotime::from_hz(100));
MCFG_SCREEN_ADD("bwtwo", RASTER)
MCFG_SCREEN_UPDATE_DRIVER(sun3x_state, bw2_update)
diff --git a/src/mame/drivers/suprnova.cpp b/src/mame/drivers/suprnova.cpp
index acf1867aaa3..186b6141cc7 100644
--- a/src/mame/drivers/suprnova.cpp
+++ b/src/mame/drivers/suprnova.cpp
@@ -790,18 +790,21 @@ GFXDECODE_END
MACHINE_CONFIG_START(skns_state::skns)
MCFG_DEVICE_ADD("maincpu", SH2,28638000)
MCFG_DEVICE_PROGRAM_MAP(skns_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", skns_state, irq, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(skns_state::irq), "screen", 0, 1);
MSM6242(config, "rtc", XTAL(32'768));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("int15_timer", skns_state, interrupt_callback, attotime::from_msec(2))
- MCFG_TIMER_PARAM(15)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("int11_timer", skns_state, interrupt_callback, attotime::from_msec(8))
- MCFG_TIMER_PARAM(11)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("int9_timer", skns_state, interrupt_callback, attotime::from_hz(28638000/1824))
- MCFG_TIMER_PARAM(9)
+ timer_device &int15_timer(TIMER(config, "int15_timer"));
+ int15_timer.configure_periodic(FUNC(skns_state::interrupt_callback), attotime::from_msec(2));
+ int15_timer.config_param(15);
+ timer_device &int11_timer(TIMER(config, "int11_timer"));
+ int11_timer.configure_periodic(FUNC(skns_state::interrupt_callback), attotime::from_msec(8));
+ int11_timer.config_param(11);
+ timer_device &int9_timer(TIMER(config, "int9_timer"));
+ int9_timer.configure_periodic(FUNC(skns_state::interrupt_callback), attotime::from_hz(28638000/1824));
+ int9_timer.config_param(9);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
diff --git a/src/mame/drivers/svision.cpp b/src/mame/drivers/svision.cpp
index f58246bd9b0..52871446dcb 100644
--- a/src/mame/drivers/svision.cpp
+++ b/src/mame/drivers/svision.cpp
@@ -529,10 +529,11 @@ MACHINE_CONFIG_START(svision_state::svision)
PALETTE(config, m_palette, FUNC(svision_state::svision_palette), ARRAY_LENGTH(svision_pens));
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(svision_state::svisions)
+void svision_state::svisions(machine_config &config)
+{
svision(config);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("pet_timer", svision_state, svision_pet_timer_dev, attotime::from_seconds(8))
-MACHINE_CONFIG_END
+ TIMER(config, "pet_timer").configure_periodic(FUNC(svision_state::svision_pet_timer_dev), attotime::from_seconds(8));
+}
MACHINE_CONFIG_START(svision_state::svisionp)
svision(config);
diff --git a/src/mame/drivers/taito.cpp b/src/mame/drivers/taito.cpp
index 2a0c0e31438..451e141ca5b 100644
--- a/src/mame/drivers/taito.cpp
+++ b/src/mame/drivers/taito.cpp
@@ -379,7 +379,7 @@ MACHINE_CONFIG_START(taito_state::taito)
m_pia->irqa_handler().set_inputline(m_cpu2, INPUT_LINE_NMI);
m_pia->irqb_handler().set_inputline(m_cpu2, M6802_IRQ_LINE);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", taito_state, timer_a, attotime::from_hz(200))
+ TIMER(config, "timer_a").configure_periodic(FUNC(taito_state::timer_a), attotime::from_hz(200));
MACHINE_CONFIG_END
void taito_state::shock(machine_config &config)
diff --git a/src/mame/drivers/taito_o.cpp b/src/mame/drivers/taito_o.cpp
index 06f1a166ba3..637beb44e70 100644
--- a/src/mame/drivers/taito_o.cpp
+++ b/src/mame/drivers/taito_o.cpp
@@ -237,7 +237,7 @@ MACHINE_CONFIG_START(taitoo_state::parentj)
MCFG_DEVICE_ADD("maincpu", M68000,12000000 ) /*?? MHz */
MCFG_DEVICE_PROGRAM_MAP(parentj_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitoo_state, parentj_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(taitoo_state::parentj_interrupt), "screen", 0, 1);
WATCHDOG_TIMER(config, m_watchdog);
diff --git a/src/mame/drivers/tapatune.cpp b/src/mame/drivers/tapatune.cpp
index fdf098e40a9..9363ee91bd6 100644
--- a/src/mame/drivers/tapatune.cpp
+++ b/src/mame/drivers/tapatune.cpp
@@ -531,7 +531,7 @@ MACHINE_CONFIG_START(tapatune_state::tapatune_base)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW)
+ TICKET_DISPENSER(config, "ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
diff --git a/src/mame/drivers/tasman.cpp b/src/mame/drivers/tasman.cpp
index 9d43ffbc680..53a6beac5b6 100644
--- a/src/mame/drivers/tasman.cpp
+++ b/src/mame/drivers/tasman.cpp
@@ -648,7 +648,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(kongambl_state::kongambl_vblank)
MACHINE_CONFIG_START(kongambl_state::kongambl)
MCFG_DEVICE_ADD("maincpu", M68EC020, 25000000)
MCFG_DEVICE_PROGRAM_MAP(kongambl_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kongambl_state, kongambl_vblank, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(kongambl_state::kongambl_vblank), "screen", 0, 1);
MCFG_DEVICE_ADD("sndcpu", M68000, 16000000)
MCFG_DEVICE_PROGRAM_MAP(kongamaud_map)
diff --git a/src/mame/drivers/tb303.cpp b/src/mame/drivers/tb303.cpp
index 8fb797b5e9d..569a133ac2d 100644
--- a/src/mame/drivers/tb303.cpp
+++ b/src/mame/drivers/tb303.cpp
@@ -249,8 +249,8 @@ void tb303_state::machine_start()
save_item(NAME(m_ram_we));
}
-MACHINE_CONFIG_START(tb303_state::tb303)
-
+void tb303_state::tb303(machine_config &config)
+{
/* basic machine hardware */
NEC_D650(config, m_maincpu, TP2_HZ);
m_maincpu->read_a().set(FUNC(tb303_state::input_r));
@@ -264,16 +264,18 @@ MACHINE_CONFIG_START(tb303_state::tb303)
m_maincpu->write_h().set(FUNC(tb303_state::switch_w));
m_maincpu->write_i().set(FUNC(tb303_state::strobe_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clock", tb303_state, tp3_clock, TP3_PERIOD)
- MCFG_TIMER_START_DELAY(TP3_PERIOD - TP3_LOW)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clear", tb303_state, tp3_clear, TP3_PERIOD)
+ timer_device &tp3_clock(TIMER(config, "tp3_clock"));
+ tp3_clock.configure_periodic(FUNC(tb303_state::tp3_clock), TP3_PERIOD);
+ tp3_clock.set_start_delay(TP3_PERIOD - TP3_LOW);
+ TIMER(config, "tp3_clear").configure_periodic(FUNC(tb303_state::tp3_clear), TP3_PERIOD);
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_tb303);
/* sound hardware */
// discrete...
-MACHINE_CONFIG_END
+}
diff --git a/src/mame/drivers/tek405x.cpp b/src/mame/drivers/tek405x.cpp
index 89a2fb38c3f..0b882c75a77 100644
--- a/src/mame/drivers/tek405x.cpp
+++ b/src/mame/drivers/tek405x.cpp
@@ -1022,7 +1022,7 @@ MACHINE_CONFIG_START(tek4051_state::tek4051)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// devices
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", tek4051_state, keyboard_tick, attotime::from_hz(XTAL(12'500'000)/15/4))
+ TIMER(config, "keyboard").configure_periodic(FUNC(tek4051_state::keyboard_tick), attotime::from_hz(XTAL(12'500'000)/15/4));
pia6821_device &piax(PIA6821(config, MC6820_X_TAG, 0));
piax.readpa_handler().set(FUNC(tek4051_state::x_pia_pa_r));
diff --git a/src/mame/drivers/thedealr.cpp b/src/mame/drivers/thedealr.cpp
index 17c6c56ee5f..8b3c140d685 100644
--- a/src/mame/drivers/thedealr.cpp
+++ b/src/mame/drivers/thedealr.cpp
@@ -545,7 +545,7 @@ MACHINE_CONFIG_START(thedealr_state::thedealr)
// basic machine hardware
MCFG_DEVICE_ADD("maincpu", R65C02, XTAL(16'000'000)/8) // 2 MHz?
MCFG_DEVICE_PROGRAM_MAP(thedealr)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", thedealr_state, thedealr_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(thedealr_state::thedealr_interrupt), "screen", 0, 1);
MCFG_DEVICE_ADD("subcpu", R65C02, XTAL(16'000'000)/8) // 2 MHz?
MCFG_DEVICE_PROGRAM_MAP(thedealr_sub)
diff --git a/src/mame/drivers/ti89.cpp b/src/mame/drivers/ti89.cpp
index da531355256..43c6b444b5a 100644
--- a/src/mame/drivers/ti89.cpp
+++ b/src/mame/drivers/ti89.cpp
@@ -539,7 +539,7 @@ MACHINE_CONFIG_START(ti68k_state::ti89)
SHARP_UNK128MBIT(config, "flash"); //should be LH28F320 for ti89t and v200 and LH28F160S3T for other models
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ti68k_timer", ti68k_state, ti68k_timer_callback, attotime::from_hz(1<<14))
+ TIMER(config, "ti68k_timer").configure_periodic(FUNC(ti68k_state::ti68k_timer_callback), attotime::from_hz(1<<14));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ticalc1x.cpp b/src/mame/drivers/ticalc1x.cpp
index 11f782fcd89..bf3942b485d 100644
--- a/src/mame/drivers/ticalc1x.cpp
+++ b/src/mame/drivers/ticalc1x.cpp
@@ -195,7 +195,7 @@ MACHINE_CONFIG_START(cmulti8_state::cmulti8)
m_maincpu->o().set(FUNC(cmulti8_state::write_o));
m_maincpu->r().set(FUNC(cmulti8_state::write_r));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_cmulti8);
/* no sound! */
@@ -412,7 +412,7 @@ MACHINE_CONFIG_START(tisr16_state::tisr16)
m_maincpu->o().set(FUNC(tisr16_state::write_o));
m_maincpu->r().set(FUNC(tisr16_state::write_r));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_tisr16);
/* no sound! */
@@ -554,7 +554,7 @@ MACHINE_CONFIG_START(ti1250_state::ti1250)
m_maincpu->o().set(FUNC(ti1250_state::write_o));
m_maincpu->r().set(FUNC(ti1250_state::write_r));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_ti1250);
/* no sound! */
@@ -684,7 +684,7 @@ MACHINE_CONFIG_START(ti25503_state::ti25503)
m_maincpu->o().set(FUNC(ti25503_state::write_o));
m_maincpu->r().set(FUNC(ti25503_state::write_r));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_ti25503);
/* no sound! */
@@ -787,7 +787,7 @@ MACHINE_CONFIG_START(ti1000_state::ti1000)
m_maincpu->o().set(FUNC(ti1000_state::write_o));
m_maincpu->r().set(FUNC(ti1000_state::write_r));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_ti1270);
/* no sound! */
@@ -889,7 +889,7 @@ MACHINE_CONFIG_START(wizatron_state::wizatron)
m_maincpu->o().set(FUNC(wizatron_state::write_o));
m_maincpu->r().set(FUNC(wizatron_state::write_r));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_wizatron);
/* no sound! */
@@ -966,7 +966,7 @@ MACHINE_CONFIG_START(lilprof_state::lilprof)
m_maincpu->o().set(FUNC(lilprof_state::write_o));
m_maincpu->r().set(FUNC(wizatron_state::write_r));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_wizatron);
/* no sound! */
@@ -1079,7 +1079,7 @@ MACHINE_CONFIG_START(lilprof78_state::lilprof78)
m_maincpu->o().set(FUNC(lilprof78_state::write_o));
m_maincpu->r().set(FUNC(lilprof78_state::write_r));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_wizatron);
/* no sound! */
@@ -1194,7 +1194,7 @@ MACHINE_CONFIG_START(dataman_state::dataman)
m_maincpu->r().set(FUNC(dataman_state::write_r));
m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_dataman);
/* no sound! */
@@ -1264,7 +1264,7 @@ MACHINE_CONFIG_START(mathmarv_state::mathmarv)
m_maincpu->r().set(FUNC(mathmarv_state::write_r));
m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_mathmarv);
/* sound hardware */
@@ -1527,7 +1527,7 @@ MACHINE_CONFIG_START(ti30_state::ti30)
m_maincpu->r().set(FUNC(ti30_state::write_r));
m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_ti30);
/* no sound! */
diff --git a/src/mame/drivers/tickee.cpp b/src/mame/drivers/tickee.cpp
index 267bb2bad2c..433b3287496 100644
--- a/src/mame/drivers/tickee.cpp
+++ b/src/mame/drivers/tickee.cpp
@@ -771,8 +771,8 @@ MACHINE_CONFIG_START(tickee_state::tickee)
MCFG_MACHINE_RESET_OVERRIDE(tickee_state,tickee)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MCFG_TICKET_DISPENSER_ADD("ticket1", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
- MCFG_TICKET_DISPENSER_ADD("ticket2", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
+ TICKET_DISPENSER(config, m_ticket[1], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
/* video hardware */
TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
@@ -854,8 +854,8 @@ MACHINE_CONFIG_START(tickee_state::mouseatk)
MCFG_MACHINE_RESET_OVERRIDE(tickee_state,tickee)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MCFG_TICKET_DISPENSER_ADD("ticket1", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
- MCFG_TICKET_DISPENSER_ADD("ticket2", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
+ TICKET_DISPENSER(config, m_ticket[1], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
/* video hardware */
TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
diff --git a/src/mame/drivers/tiki100.cpp b/src/mame/drivers/tiki100.cpp
index ff6955d30b2..585a6c1c348 100644
--- a/src/mame/drivers/tiki100.cpp
+++ b/src/mame/drivers/tiki100.cpp
@@ -746,7 +746,7 @@ MACHINE_CONFIG_START(tiki100_state::tiki100)
m_ctc->zc_callback<1>().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
m_ctc->zc_callback<2>().set(FUNC(tiki100_state::bar2_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", tiki100_state, ctc_tick, attotime::from_hz(8_MHz_XTAL / 4))
+ TIMER(config, "ctc").configure_periodic(FUNC(tiki100_state::ctc_tick), attotime::from_hz(8_MHz_XTAL / 4));
FD1797(config, m_fdc, 8_MHz_XTAL / 8); // FD1767PL-02 or FD1797-PL
MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":0", tiki100_floppies, "525qd", tiki100_state::floppy_formats)
@@ -770,7 +770,7 @@ MACHINE_CONFIG_START(tiki100_state::tiki100)
MCFG_CASSETTE_ADD(CASSETTE_TAG)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", tiki100_state, tape_tick, attotime::from_hz(44100))
+ TIMER(config, "tape").configure_periodic(FUNC(tiki100_state::tape_tick), attotime::from_hz(44100));
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/tispellb.cpp b/src/mame/drivers/tispellb.cpp
index 837a253f775..b91cd58736b 100644
--- a/src/mame/drivers/tispellb.cpp
+++ b/src/mame/drivers/tispellb.cpp
@@ -362,7 +362,7 @@ MACHINE_CONFIG_START(tispellb_state::rev1)
MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_spellb);
/* no sound! */
@@ -382,7 +382,7 @@ MACHINE_CONFIG_START(tispellb_state::rev2)
TMS6100(config, m_tms6100, 350000);
m_tms6100->enable_4bit_mode(true);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_spellb);
/* sound hardware */
diff --git a/src/mame/drivers/tk2000.cpp b/src/mame/drivers/tk2000.cpp
index 19727c5a6d8..e254f09a54d 100644
--- a/src/mame/drivers/tk2000.cpp
+++ b/src/mame/drivers/tk2000.cpp
@@ -570,7 +570,7 @@ MACHINE_CONFIG_START(tk2000_state::tk2000)
/* basic machine hardware */
MCFG_DEVICE_ADD(A2_CPU_TAG, M6502, 1021800) /* close to actual CPU frequency of 1.020484 MHz */
MCFG_DEVICE_PROGRAM_MAP(apple2_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tk2000_state, apple2_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(tk2000_state::apple2_interrupt), "screen", 0, 1);
MCFG_QUANTUM_TIME(attotime::from_hz(60))
APPLE2_VIDEO(config, m_video, XTAL(14'318'181));
diff --git a/src/mame/drivers/tm990189.cpp b/src/mame/drivers/tm990189.cpp
index 9be9ae43432..30faffb571e 100644
--- a/src/mame/drivers/tm990189.cpp
+++ b/src/mame/drivers/tm990189.cpp
@@ -872,10 +872,11 @@ MACHINE_CONFIG_START(tm990189_state::tm990_189)
m_tms9902->xmit_cb().set(FUNC(tm990189_state::xmit_callback)); // called when a character is transmitted
TM990_189_RS232(config, "rs232", 0, m_tms9902);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_timer", tm990189_state, display_callback, attotime::from_hz(30))
+ timer_device &display_timer(TIMER(config, "display_timer"));
+ display_timer.configure_periodic(FUNC(tm990189_state::display_callback), attotime::from_hz(30));
// Need to delay the timer, or it will spoil the initial LOAD
// TODO: Fix this, probably inside CPU
- MCFG_TIMER_START_DELAY(attotime::from_msec(150))
+ display_timer.set_start_delay(attotime::from_msec(150));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(tm990189_state::tm990_189_v)
@@ -934,8 +935,9 @@ MACHINE_CONFIG_START(tm990189_state::tm990_189_v)
m_tms9902->xmit_cb().set(FUNC(tm990189_state::xmit_callback)); // called when a character is transmitted;
TM990_189_RS232(config, "rs232", 0, m_tms9902);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_timer", tm990189_state, display_callback, attotime::from_hz(30))
- MCFG_TIMER_START_DELAY(attotime::from_msec(150))
+ timer_device &display_timer(TIMER(config, "display_timer"));
+ display_timer.configure_periodic(FUNC(tm990189_state::display_callback), attotime::from_hz(30));
+ display_timer.set_start_delay(attotime::from_msec(150));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tmaster.cpp b/src/mame/drivers/tmaster.cpp
index 8f3d4e76e39..9a3038b569e 100644
--- a/src/mame/drivers/tmaster.cpp
+++ b/src/mame/drivers/tmaster.cpp
@@ -369,7 +369,7 @@ int tmaster_compute_addr(uint16_t reg_low, uint16_t reg_mid, uint16_t reg_high)
MACHINE_CONFIG_START(tmaster_state::tm)
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2) /* 12MHz */
MCFG_DEVICE_PROGRAM_MAP(tmaster_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmaster_state, scanline_interrupt, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(tmaster_state::scanline_interrupt), "screen", 0, 1);
MC68681(config, m_duart, XTAL(8'664'000) / 2 /*??*/);
m_duart->irq_cb().set(FUNC(tmaster_state::duart_irq_handler));
diff --git a/src/mame/drivers/tr606.cpp b/src/mame/drivers/tr606.cpp
index 6eeb292ea30..f31c9b701c3 100644
--- a/src/mame/drivers/tr606.cpp
+++ b/src/mame/drivers/tr606.cpp
@@ -80,21 +80,22 @@ void tr606_state::machine_start()
// register for savestates
}
-MACHINE_CONFIG_START(tr606_state::tr606)
-
+void tr606_state::tr606(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", NEC_D650, TP2_HZ)
+ NEC_D650(config, m_maincpu, TP2_HZ);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clock", tr606_state, tp3_clock, TP3_PERIOD)
- MCFG_TIMER_START_DELAY(TP3_PERIOD - TP3_LOW)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clear", tr606_state, tp3_clear, TP3_PERIOD)
+ timer_device &tp3_clock(TIMER(config, "tp3_clock"));
+ tp3_clock.configure_periodic(FUNC(tr606_state::tp3_clock), TP3_PERIOD);
+ tp3_clock.set_start_delay(TP3_PERIOD - TP3_LOW);
+ TIMER(config, "tp3_clear").configure_periodic(FUNC(tr606_state::tp3_clear), TP3_PERIOD);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_tr606);
/* sound hardware */
// discrete...
-MACHINE_CONFIG_END
+}
diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp
index f65f965be68..a4f4f9876a6 100644
--- a/src/mame/drivers/trs80m2.cpp
+++ b/src/mame/drivers/trs80m2.cpp
@@ -747,7 +747,7 @@ MACHINE_CONFIG_START(trs80m2_state::trs80m2)
m_ctc->zc_callback<1>().set(Z80SIO_TAG, FUNC(z80dart_device::txca_w));
m_ctc->zc_callback<2>().set(Z80SIO_TAG, FUNC(z80dart_device::rxtxcb_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(8_MHz_XTAL / 2 / 2))
+ TIMER(config, "ctc").configure_periodic(FUNC(trs80m2_state::ctc_tick), attotime::from_hz(8_MHz_XTAL / 2 / 2));
Z80DMA(config, m_dmac, 8_MHz_XTAL / 2);
m_dmac->out_busreq_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
@@ -836,7 +836,7 @@ MACHINE_CONFIG_START(trs80m16_state::trs80m16)
m_ctc->zc_callback<1>().set(Z80SIO_TAG, FUNC(z80dart_device::txca_w));
m_ctc->zc_callback<2>().set(Z80SIO_TAG, FUNC(z80dart_device::rxtxcb_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(8_MHz_XTAL / 2 / 2))
+ TIMER(config, "ctc").configure_periodic(FUNC(trs80m2_state::ctc_tick), attotime::from_hz(8_MHz_XTAL / 2 / 2));
Z80DMA(config, m_dmac, 8_MHz_XTAL / 2);
m_dmac->out_busreq_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
diff --git a/src/mame/drivers/v1050.cpp b/src/mame/drivers/v1050.cpp
index f68e6dad1cc..43423291fb2 100644
--- a/src/mame/drivers/v1050.cpp
+++ b/src/mame/drivers/v1050.cpp
@@ -1036,7 +1036,7 @@ MACHINE_CONFIG_START(v1050_state::v1050)
MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
// keyboard HACK
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", v1050_state, v1050_keyboard_tick, attotime::from_hz(60))
+ TIMER(config, "keyboard").configure_periodic(FUNC(v1050_state::v1050_keyboard_tick), attotime::from_hz(60));
// video hardware
v1050_video(config);
@@ -1120,8 +1120,8 @@ MACHINE_CONFIG_START(v1050_state::v1050)
MCFG_DEVICE_ADD("scsi_data_in", INPUT_BUFFER, 0)
MCFG_DEVICE_ADD("scsi_ctrl_in", INPUT_BUFFER, 0)
- MCFG_TIMER_DRIVER_ADD(TIMER_ACK_TAG, v1050_state, sasi_ack_tick)
- MCFG_TIMER_DRIVER_ADD(TIMER_RST_TAG, v1050_state, sasi_rst_tick)
+ TIMER(config, m_timer_ack).configure_generic(FUNC(v1050_state::sasi_ack_tick));
+ TIMER(config, m_timer_rst).configure_generic(FUNC(v1050_state::sasi_rst_tick));
// software lists
MCFG_SOFTWARE_LIST_ADD("flop_list", "v1050_flop")
diff --git a/src/mame/drivers/vball.cpp b/src/mame/drivers/vball.cpp
index 263e7f746a8..8ffcac894b1 100644
--- a/src/mame/drivers/vball.cpp
+++ b/src/mame/drivers/vball.cpp
@@ -401,7 +401,7 @@ MACHINE_CONFIG_START(vball_state::vball)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6502, CPU_CLOCK) /* 2 MHz - measured by guru but it makes the game far far too slow ?! */
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", vball_state, vball_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(vball_state::vball_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, 3579545) /* 3.579545 MHz */
MCFG_DEVICE_PROGRAM_MAP(sound_map)
diff --git a/src/mame/drivers/vboy.cpp b/src/mame/drivers/vboy.cpp
index 76d8d9df2b7..7028b7c30ab 100644
--- a/src/mame/drivers/vboy.cpp
+++ b/src/mame/drivers/vboy.cpp
@@ -1311,14 +1311,14 @@ MACHINE_CONFIG_START(vboy_state::vboy)
MCFG_DEVICE_ADD( "maincpu", V810, XTAL(20'000'000) )
MCFG_DEVICE_PROGRAM_MAP(vboy_mem)
MCFG_DEVICE_IO_MAP(vboy_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer_l", vboy_state, vboy_scanlineL, "3dleft", 0, 1)
- //MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer_r", vboy_state, vboy_scanlineR, "3dright", 0, 1)
+ TIMER(config, "scantimer_l").configure_scanline(FUNC(vboy_state::vboy_scanlineL), "3dleft", 0, 1);
+ //TIMER(config, "scantimer_r").configure_scanline(FUNC(vboy_state::vboy_scanlineR), "3dright", 0, 1);
// programmable timer
- MCFG_TIMER_DRIVER_ADD("timer_main", vboy_state, timer_main_tick)
+ TIMER(config, m_maintimer).configure_generic(FUNC(vboy_state::timer_main_tick));
// pad ready, which should be once per VBL
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_pad", vboy_state, timer_pad_tick, attotime::from_hz(50.038029f))
+ TIMER(config, "timer_pad").configure_periodic(FUNC(vboy_state::timer_pad_tick), attotime::from_hz(50.038029f));
/* video hardware */
config.set_default_layout(layout_vboy);
diff --git a/src/mame/drivers/vcs80.cpp b/src/mame/drivers/vcs80.cpp
index 638560b9d28..c1e7dc5d051 100644
--- a/src/mame/drivers/vcs80.cpp
+++ b/src/mame/drivers/vcs80.cpp
@@ -213,7 +213,8 @@ void vcs80_state::machine_start()
/* Machine Driver */
-MACHINE_CONFIG_START(vcs80_state::vcs80)
+void vcs80_state::vcs80(machine_config &config)
+{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(5'000'000)/2); /* U880D */
m_maincpu->set_addrmap(AS_PROGRAM, &vcs80_state::vcs80_mem);
@@ -221,7 +222,7 @@ MACHINE_CONFIG_START(vcs80_state::vcs80)
m_maincpu->set_daisy_config(vcs80_daisy_chain);
/* keyboard timer */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", vcs80_state, vcs80_keyboard_tick, attotime::from_hz(1000))
+ TIMER(config, "keyboard").configure_periodic(FUNC(vcs80_state::vcs80_keyboard_tick), attotime::from_hz(1000));
/* video hardware */
config.set_default_layout(layout_vcs80);
@@ -237,7 +238,7 @@ MACHINE_CONFIG_START(vcs80_state::vcs80)
/* bankdev */
ADDRESS_MAP_BANK(config, "bdmem").set_map(&vcs80_state::vcs80_bd_mem).set_options(ENDIANNESS_BIG, 8, 32, 0x10000);
-MACHINE_CONFIG_END
+}
/* ROMs */
diff --git a/src/mame/drivers/vd.cpp b/src/mame/drivers/vd.cpp
index 2d56a9afaa8..e06b9053ff7 100644
--- a/src/mame/drivers/vd.cpp
+++ b/src/mame/drivers/vd.cpp
@@ -186,12 +186,13 @@ void vd_state::machine_reset()
m_t_c = 0;
}
-MACHINE_CONFIG_START(vd_state::vd)
+void vd_state::vd(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, 4000000)
- MCFG_DEVICE_PROGRAM_MAP(vd_map)
- MCFG_DEVICE_IO_MAP(vd_io)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", vd_state, irq, attotime::from_hz(484))
+ Z80(config, m_maincpu, 4000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &vd_state::vd_map);
+ m_maincpu->set_addrmap(AS_IO, &vd_state::vd_io);
+ TIMER(config, "irq").configure_periodic(FUNC(vd_state::irq), attotime::from_hz(484));
/* Sound */
genpin_audio(config);
@@ -207,7 +208,7 @@ MACHINE_CONFIG_START(vd_state::vd)
/* Video */
config.set_default_layout(layout_vd);
-MACHINE_CONFIG_END
+}
/*-------------------------------------------------------------------
/ Break '86 (1986)
diff --git a/src/mame/drivers/vg5k.cpp b/src/mame/drivers/vg5k.cpp
index dcdf054f68a..c8932324251 100644
--- a/src/mame/drivers/vg5k.cpp
+++ b/src/mame/drivers/vg5k.cpp
@@ -373,9 +373,9 @@ MACHINE_CONFIG_START(vg5k_state::vg5k)
MCFG_DEVICE_PROGRAM_MAP(vg5k_mem)
MCFG_DEVICE_IO_MAP(vg5k_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("vg5k_scanline", vg5k_state, vg5k_scanline, "screen", 0, 10)
+ TIMER(config, "vg5k_scanline").configure_scanline(FUNC(vg5k_state::vg5k_scanline), "screen", 0, 10);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", vg5k_state, z80_irq, attotime::from_msec(20))
+ TIMER(config, "irq_timer").configure_periodic(FUNC(vg5k_state::z80_irq), attotime::from_msec(20));
EF9345(config, m_ef9345, 0);
m_ef9345->set_palette_tag("palette");
diff --git a/src/mame/drivers/vicdual.cpp b/src/mame/drivers/vicdual.cpp
index d639d393048..9e2fed23382 100644
--- a/src/mame/drivers/vicdual.cpp
+++ b/src/mame/drivers/vicdual.cpp
@@ -267,17 +267,17 @@ void vicdual_state::machine_start()
}
-MACHINE_CONFIG_START(vicdual_state::vicdual_root)
-
+void vicdual_state::vicdual_root(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, VICDUAL_MAIN_CPU_CLOCK)
+ Z80(config, m_maincpu, VICDUAL_MAIN_CPU_CLOCK);
- MCFG_TIMER_DRIVER_ADD("coinstate", vicdual_state, clear_coin_status)
+ TIMER(config, m_coinstate_timer).configure_generic(FUNC(vicdual_state::clear_coin_status));
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(VICDUAL_PIXEL_CLOCK, VICDUAL_HTOTAL, VICDUAL_HBEND, VICDUAL_HBSTART, VICDUAL_VTOTAL, VICDUAL_VBEND, VICDUAL_VBSTART)
-MACHINE_CONFIG_END
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(VICDUAL_PIXEL_CLOCK, VICDUAL_HTOTAL, VICDUAL_HBEND, VICDUAL_HBSTART, VICDUAL_VTOTAL, VICDUAL_VBEND, VICDUAL_VBSTART);
+}
@@ -2599,8 +2599,8 @@ MACHINE_CONFIG_START(nsub_state::nsub)
MCFG_DEVICE_PROGRAM_MAP(nsub_map)
MCFG_DEVICE_IO_MAP(nsub_io_map)
- MCFG_TIMER_DRIVER_ADD("coinstate", nsub_state, clear_coin_status)
- MCFG_TIMER_DRIVER_ADD("nsub_coin", nsub_state, nsub_coin_pulse)
+ TIMER(config, m_coinstate_timer).configure_generic(FUNC(nsub_state::clear_coin_status));
+ TIMER(config, m_nsub_coinage_timer).configure_generic(FUNC(nsub_state::nsub_coin_pulse));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp
index bcf005e0c81..16b8bcf1381 100644
--- a/src/mame/drivers/videopkr.cpp
+++ b/src/mame/drivers/videopkr.cpp
@@ -1243,7 +1243,7 @@ MACHINE_CONFIG_START(videopkr_state::videopkr)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("t1_timer", videopkr_state, sound_t1_callback, attotime::from_hz(50))
+ TIMER(config, "t1_timer").configure_periodic(FUNC(videopkr_state::sound_t1_callback), attotime::from_hz(50));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/viper.cpp b/src/mame/drivers/viper.cpp
index a7449ea872d..4b230f339d4 100644
--- a/src/mame/drivers/viper.cpp
+++ b/src/mame/drivers/viper.cpp
@@ -2425,7 +2425,7 @@ MACHINE_CONFIG_START(viper_state::viper)
PALETTE(config, "palette").set_entries(65536);
TIMER(config, "ds2430_timer2", 0);
- //MCFG_TIMER_ADD_NONE("ds2430_timer2")
+ //TIMER(config, "ds2430_timer2").configure_generic(timer_device::expired_delegate());
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp
index 91ac5b72c39..362f8911ab5 100644
--- a/src/mame/drivers/vixen.cpp
+++ b/src/mame/drivers/vixen.cpp
@@ -753,7 +753,7 @@ MACHINE_CONFIG_START(vixen_state::vixen)
MCFG_SCREEN_UPDATE_DRIVER(vixen_state, screen_update)
MCFG_SCREEN_RAW_PARAMS(23.9616_MHz_XTAL / 2, 96*8, 0*8, 81*8, 27*10, 0*10, 26*10)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("vsync", vixen_state, vsync_tick, SCREEN_TAG, 26*10, 27*10)
+ TIMER(config, "vsync").configure_scanline(FUNC(vixen_state::vsync_tick), SCREEN_TAG, 26*10, 27*10);
PALETTE(config, m_palette, palette_device::MONOCHROME);
diff --git a/src/mame/drivers/volfied.cpp b/src/mame/drivers/volfied.cpp
index 47b4f066e11..deaee227a64 100644
--- a/src/mame/drivers/volfied.cpp
+++ b/src/mame/drivers/volfied.cpp
@@ -258,7 +258,7 @@ MACHINE_CONFIG_START(volfied_state::volfied)
MCFG_QUANTUM_TIME(attotime::from_hz(1200))
- MCFG_TIMER_DRIVER_ADD("cchip_irq_clear", volfied_state, cchip_irq_clear_cb)
+ TIMER(config, m_cchip_irq_clear).configure_generic(FUNC(volfied_state::cchip_irq_clear_cb));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/votrpss.cpp b/src/mame/drivers/votrpss.cpp
index 756d567936b..7fe077f6043 100644
--- a/src/mame/drivers/votrpss.cpp
+++ b/src/mame/drivers/votrpss.cpp
@@ -291,7 +291,7 @@ MACHINE_CONFIG_START(votrpss_state::votrpss)
m_ppi->out_pb_callback().set(FUNC(votrpss_state::ppi_pb_w));
m_ppi->out_pc_callback().set(FUNC(votrpss_state::ppi_pc_w));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", votrpss_state, irq_timer, attotime::from_msec(10))
+ TIMER(config, "irq_timer").configure_periodic(FUNC(votrpss_state::irq_timer), attotime::from_msec(10));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/wheelfir.cpp b/src/mame/drivers/wheelfir.cpp
index f669e0027a9..3dbf27768b5 100644
--- a/src/mame/drivers/wheelfir.cpp
+++ b/src/mame/drivers/wheelfir.cpp
@@ -748,7 +748,7 @@ MACHINE_CONFIG_START(wheelfir_state::wheelfir)
adc.in_callback<1>().set_ioport("ACCELERATOR");
adc.in_callback<2>().set_ioport("BRAKE");
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_timer", wheelfir_state, scanline_timer_callback, "screen", 0, 1)
+ TIMER(config, "scan_timer").configure_scanline(FUNC(wheelfir_state::scanline_timer_callback), "screen", 0, 1);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/wico.cpp b/src/mame/drivers/wico.cpp
index 2e7e76b078e..a3db68312a7 100644
--- a/src/mame/drivers/wico.cpp
+++ b/src/mame/drivers/wico.cpp
@@ -446,8 +446,8 @@ MACHINE_CONFIG_START(wico_state::wico)
MCFG_DEVICE_PROGRAM_MAP(ccpu_map)
MCFG_DEVICE_ADD("hcpu", MC6809E, XTAL(10'000'000) / 8) // MC68A09EP @ U24
MCFG_DEVICE_PROGRAM_MAP(hcpu_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", wico_state, irq_housekeeping, attotime::from_hz(120)) // zero crossing
- MCFG_TIMER_DRIVER_ADD_PERIODIC("firq", wico_state, firq_housekeeping, attotime::from_hz(750)) // time generator
+ TIMER(config, "irq").configure_periodic(FUNC(wico_state::irq_housekeeping), attotime::from_hz(120)); // zero crossing
+ TIMER(config, "firq").configure_periodic(FUNC(wico_state::firq_housekeeping), attotime::from_hz(750)); // time generator
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Video */
diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp
index f8891d46ceb..73c659ed1f2 100644
--- a/src/mame/drivers/williams.cpp
+++ b/src/mame/drivers/williams.cpp
@@ -1495,10 +1495,10 @@ MACHINE_CONFIG_START(williams_state::williams)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5101 (Defender), 5114 or 6514 (later games) + battery
// set a timer to go off every 32 scanlines, to toggle the VA11 line and update the screen
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_timer", williams_state, williams_va11_callback, "screen", 0, 32)
+ TIMER(config, "scan_timer").configure_scanline(FUNC(williams_state::williams_va11_callback), "screen", 0, 32);
// also set a timer to go off on scanline 240
- MCFG_TIMER_DRIVER_ADD_SCANLINE("240_timer", williams_state, williams_count240_callback, "screen", 0, 240)
+ TIMER(config, "240_timer").configure_scanline(FUNC(williams_state::williams_count240_callback), "screen", 0, 240);
WATCHDOG_TIMER(config, m_watchdog);
@@ -1607,7 +1607,8 @@ MACHINE_CONFIG_START(spdball_state::spdball)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(williams_state::lottofun)
+void williams_state::lottofun(machine_config &config)
+{
williams(config);
/* basic machine hardware */
@@ -1616,8 +1617,8 @@ MACHINE_CONFIG_START(williams_state::lottofun)
m_pia[0]->writepa_handler().set("ticket", FUNC(ticket_dispenser_device::motor_w)).bit(7);
m_pia[0]->ca2_handler().set(FUNC(williams_state::lottofun_coin_lock_w));
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(70), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
-MACHINE_CONFIG_END
+ TICKET_DISPENSER(config, "ticket", attotime::from_msec(70), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
+}
MACHINE_CONFIG_START(williams_state::sinistar)
@@ -1749,10 +1750,10 @@ MACHINE_CONFIG_START(williams2_state::williams2)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5114 + battery
// set a timer to go off every 32 scanlines, to toggle the VA11 line and update the screen
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_timer", williams2_state, williams2_va11_callback, "screen", 0, 32)
+ TIMER(config, "scan_timer").configure_scanline(FUNC(williams2_state::williams2_va11_callback), "screen", 0, 32);
// also set a timer to go off on scanline 254
- MCFG_TIMER_DRIVER_ADD_SCANLINE("254_timer", williams2_state, williams2_endscreen_callback, "screen", 8, 246)
+ TIMER(config, "254_timer").configure_scanline(FUNC(williams2_state::williams2_endscreen_callback), "screen", 8, 246);
WATCHDOG_TIMER(config, m_watchdog);
diff --git a/src/mame/drivers/witch.cpp b/src/mame/drivers/witch.cpp
index 7cf072ecbf6..82bc8fc8c98 100644
--- a/src/mame/drivers/witch.cpp
+++ b/src/mame/drivers/witch.cpp
@@ -969,7 +969,7 @@ MACHINE_CONFIG_START(witch_state::witch)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_hopper, attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
// 82C255 (actual chip on PCB) is equivalent to two 8255s
I8255(config, m_ppi[0]);
diff --git a/src/mame/drivers/wmg.cpp b/src/mame/drivers/wmg.cpp
index afd1d7d8de3..e16fbcef082 100644
--- a/src/mame/drivers/wmg.cpp
+++ b/src/mame/drivers/wmg.cpp
@@ -529,10 +529,10 @@ MACHINE_CONFIG_START(wmg_state::wmg)
ADDRESS_MAP_BANK(config, "bankc000").set_map(&wmg_state::wmg_banked_map).set_options(ENDIANNESS_BIG, 8, 16, 0x1000);
// set a timer to go off every 32 scanlines, to toggle the VA11 line and update the screen
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_timer", williams_state, williams_va11_callback, "screen", 0, 32)
+ TIMER(config, "scan_timer").configure_scanline(FUNC(williams_state::williams_va11_callback), "screen", 0, 32);
// also set a timer to go off on scanline 240
- MCFG_TIMER_DRIVER_ADD_SCANLINE("240_timer", williams_state, williams_count240_callback, "screen", 0, 240)
+ TIMER(config, "240_timer").configure_scanline(FUNC(williams_state::williams_count240_callback), "screen", 0, 240);
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/wpc_95.cpp b/src/mame/drivers/wpc_95.cpp
index 42312011bc5..c02f0c51ffa 100644
--- a/src/mame/drivers/wpc_95.cpp
+++ b/src/mame/drivers/wpc_95.cpp
@@ -2254,7 +2254,7 @@ MACHINE_CONFIG_START(wpc_95_state::wpc_95)
MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(8'000'000)/4) // 68B09E
MCFG_DEVICE_PROGRAM_MAP(wpc_95_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(wpc_95_state, irq0_line_assert, XTAL(8'000'000)/8192.0)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("zero_crossing", wpc_95_state, zc_timer, attotime::from_hz(120)) // Mains power zero crossing
+ TIMER(config, "zero_crossing").configure_periodic(FUNC(wpc_95_state::zc_timer), attotime::from_hz(120)); // Mains power zero crossing
MCFG_DEVICE_ADD("pic", WPC_PIC, 0)
MCFG_DEVICE_ADD("lamp", WPC_LAMP, 0)
diff --git a/src/mame/drivers/wpc_dcs.cpp b/src/mame/drivers/wpc_dcs.cpp
index a1b988f0bba..30217fb9dc4 100644
--- a/src/mame/drivers/wpc_dcs.cpp
+++ b/src/mame/drivers/wpc_dcs.cpp
@@ -430,7 +430,7 @@ MACHINE_CONFIG_START(wpc_dcs_state::wpc_dcs)
MCFG_DEVICE_PROGRAM_MAP(wpc_dcs_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(wpc_dcs_state, irq0_line_assert, XTAL(8'000'000)/8192.0)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("zero_crossing", wpc_dcs_state, zc_timer, attotime::from_hz(120)) // Mains power zero crossing
+ TIMER(config, "zero_crossing").configure_periodic(FUNC(wpc_dcs_state::zc_timer), attotime::from_hz(120)); // Mains power zero crossing
MCFG_DEVICE_ADD("lamp", WPC_LAMP, 0)
MCFG_DEVICE_ADD("out", WPC_OUT, 0, 3)
diff --git a/src/mame/drivers/wpc_s.cpp b/src/mame/drivers/wpc_s.cpp
index be54001da58..e61fd98592e 100644
--- a/src/mame/drivers/wpc_s.cpp
+++ b/src/mame/drivers/wpc_s.cpp
@@ -1976,7 +1976,7 @@ MACHINE_CONFIG_START(wpc_s_state::wpc_s)
MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(8'000'000)/4)
MCFG_DEVICE_PROGRAM_MAP(wpc_s_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(wpc_s_state, irq0_line_assert, XTAL(8'000'000)/8192.0)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("zero_crossing", wpc_s_state, zc_timer, attotime::from_hz(120)) // Mains power zero crossing
+ TIMER(config, "zero_crossing").configure_periodic(FUNC(wpc_s_state::zc_timer), attotime::from_hz(120)); // Mains power zero crossing
MCFG_DEVICE_ADD("shift", WPC_SHIFT, 0)
MCFG_DEVICE_ADD("pic", WPC_PIC, 0)
diff --git a/src/mame/drivers/wwfsstar.cpp b/src/mame/drivers/wwfsstar.cpp
index 4402d630f96..d853f4a128f 100644
--- a/src/mame/drivers/wwfsstar.cpp
+++ b/src/mame/drivers/wwfsstar.cpp
@@ -418,7 +418,7 @@ MACHINE_CONFIG_START(wwfsstar_state::wwfsstar)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", wwfsstar_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(wwfsstar_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545))
MCFG_DEVICE_PROGRAM_MAP(sound_map)
diff --git a/src/mame/drivers/x07.cpp b/src/mame/drivers/x07.cpp
index cab05b9f357..62df0f9eeeb 100644
--- a/src/mame/drivers/x07.cpp
+++ b/src/mame/drivers/x07.cpp
@@ -1506,7 +1506,7 @@ MACHINE_CONFIG_START(x07_state::x07)
/* printer */
MCFG_DEVICE_ADD("printer", PRINTER, 0)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("blink_timer", x07_state, blink_timer, attotime::from_msec(300))
+ TIMER(config, "blink_timer").configure_periodic(FUNC(x07_state::blink_timer), attotime::from_msec(300));
NVRAM(config, "nvram1").set_custom_handler(FUNC(x07_state::nvram_init)); // t6834 RAM
NVRAM(config, "nvram2", nvram_device::DEFAULT_ALL_0); // RAM banks
diff --git a/src/mame/drivers/x1.cpp b/src/mame/drivers/x1.cpp
index 0a41b7f62e3..25d0fc89e49 100644
--- a/src/mame/drivers/x1.cpp
+++ b/src/mame/drivers/x1.cpp
@@ -2272,8 +2272,8 @@ MACHINE_CONFIG_START(x1_state::x1)
MCFG_SOFTWARE_LIST_ADD("cass_list","x1_cass")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", x1_state, x1_keyboard_callback, attotime::from_hz(250))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("cmt_wind_timer", x1_state, x1_cmt_wind_timer, attotime::from_hz(16))
+ TIMER(config, "keyboard_timer").configure_periodic(FUNC(x1_state::x1_keyboard_callback), attotime::from_hz(250));
+ TIMER(config, "cmt_wind_timer").configure_periodic(FUNC(x1_state::x1_cmt_wind_timer), attotime::from_hz(16));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(x1_state::x1turbo)
diff --git a/src/mame/drivers/x1twin.cpp b/src/mame/drivers/x1twin.cpp
index a12b96eb0a6..3676fd09c8e 100644
--- a/src/mame/drivers/x1twin.cpp
+++ b/src/mame/drivers/x1twin.cpp
@@ -515,8 +515,8 @@ MACHINE_CONFIG_START(x1twin_state::x1twin)
MCFG_SOFTWARE_LIST_ADD("cass_list","x1_cass")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", x1twin_state, x1_keyboard_callback, attotime::from_hz(250))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("cmt_wind_timer", x1twin_state, x1_cmt_wind_timer, attotime::from_hz(16))
+ TIMER(config, "keyboard_timer").configure_periodic(FUNC(x1twin_state::x1_keyboard_callback), attotime::from_hz(250));
+ TIMER(config, "cmt_wind_timer").configure_periodic(FUNC(x1twin_state::x1_cmt_wind_timer), attotime::from_hz(16));
MACHINE_CONFIG_END
ROM_START( x1twin )
diff --git a/src/mame/drivers/xain.cpp b/src/mame/drivers/xain.cpp
index 6d97b221b56..74eae071c24 100644
--- a/src/mame/drivers/xain.cpp
+++ b/src/mame/drivers/xain.cpp
@@ -476,7 +476,7 @@ MACHINE_CONFIG_START(xain_state::xsleena)
// basic machine hardware
MCFG_DEVICE_ADD(m_maincpu, MC6809E, CPU_CLOCK) // 68B09E
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", xain_state, scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(xain_state::scanline), "screen", 0, 1);
MCFG_DEVICE_ADD(m_subcpu, MC6809E, CPU_CLOCK) // 68B09E
MCFG_DEVICE_PROGRAM_MAP(cpu_map_B)
diff --git a/src/mame/drivers/xerox820.cpp b/src/mame/drivers/xerox820.cpp
index 5e8703bacf0..9d8af676c7a 100644
--- a/src/mame/drivers/xerox820.cpp
+++ b/src/mame/drivers/xerox820.cpp
@@ -630,7 +630,7 @@ MACHINE_CONFIG_START(xerox820_state::xerox820)
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_ctc->zc_callback<0>().set(m_ctc, FUNC(z80ctc_device::trg1));
m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3));
- //MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", xerox820_state, ctc_tick, attotime::from_hz(20_MHz_XTAL / 8))
+ //TIMER(config, "ctc").configure_periodic(FUNC(xerox820_state::ctc_tick), attotime::from_hz(20_MHz_XTAL / 8));
FD1771(config, m_fdc, 20_MHz_XTAL / 20);
m_fdc->intrq_wr_callback().set(FUNC(xerox820_state::fdc_intrq_w));
@@ -719,7 +719,7 @@ MACHINE_CONFIG_START(xerox820ii_state::xerox820ii)
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_ctc->zc_callback<0>().set(m_ctc, FUNC(z80ctc_device::trg1));
m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3));
- //MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", xerox820_state, ctc_tick, attotime::from_hz(16_MHz_XTAL / 4))
+ //TIMER(config, "ctc").configure_periodic(FUNC(xerox820_state::ctc_tick), attotime::from_hz(16_MHz_XTAL / 4));
FD1797(config, m_fdc, 16_MHz_XTAL / 8);
m_fdc->intrq_wr_callback().set(FUNC(xerox820_state::fdc_intrq_w));
diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp
index 53008a8cc55..c1f6e4ee3b7 100644
--- a/src/mame/drivers/xmen.cpp
+++ b/src/mame/drivers/xmen.cpp
@@ -303,7 +303,7 @@ MACHINE_CONFIG_START(xmen_state::xmen)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", xmen_state, xmen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(xmen_state::xmen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/2) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(sound_map)
@@ -352,7 +352,7 @@ MACHINE_CONFIG_START(xmen_state::xmen6p)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000))
MCFG_DEVICE_PROGRAM_MAP(_6p_main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", xmen_state, xmen_scanline, "screen", 0, 1)
+ TIMER(config, "scantimer").configure_scanline(FUNC(xmen_state::xmen_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/2)
MCFG_DEVICE_PROGRAM_MAP(sound_map)
diff --git a/src/mame/drivers/xtheball.cpp b/src/mame/drivers/xtheball.cpp
index 663a8395e38..f4b33174a6d 100644
--- a/src/mame/drivers/xtheball.cpp
+++ b/src/mame/drivers/xtheball.cpp
@@ -318,7 +318,7 @@ MACHINE_CONFIG_START(xtheball_state::xtheball)
latch3.q_out_cb<3>().set(FUNC(xtheball_state::foreground_mode_w));
// Q3 = video foreground control?
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, m_ticket, attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
WATCHDOG_TIMER(config, m_watchdog);
diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp
index e29df35bee0..7b4002efff6 100644
--- a/src/mame/drivers/z9001.cpp
+++ b/src/mame/drivers/z9001.cpp
@@ -233,7 +233,7 @@ MACHINE_CONFIG_START(z9001_state::z9001)
/* Devices */
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(z9001_state::kbd_put));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("z9001_timer", z9001_state, timer_callback, attotime::from_msec(10))
+ TIMER(config, "z9001_timer").configure_periodic(FUNC(z9001_state::timer_callback), attotime::from_msec(10));
z80pio_device& pio1(Z80PIO(config, "z80pio1", XTAL(9'830'400) / 4));
pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
diff --git a/src/mame/drivers/zaurus.cpp b/src/mame/drivers/zaurus.cpp
index 1479def5177..7be6ae5d832 100644
--- a/src/mame/drivers/zaurus.cpp
+++ b/src/mame/drivers/zaurus.cpp
@@ -1525,7 +1525,7 @@ MACHINE_CONFIG_START(zaurus_state::zaurus)
MCFG_DEVICE_ADD(m_maincpu,PXA255,MAIN_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(zaurus_map)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("rtc_timer", zaurus_state, rtc_irq_callback, attotime::from_hz(XTAL(32'768)))
+ TIMER(config, "rtc_timer").configure_periodic(FUNC(zaurus_state::rtc_irq_callback), attotime::from_hz(XTAL(32'768)));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/machine/megacd.cpp b/src/mame/machine/megacd.cpp
index 24aad56af20..b5f5a996e73 100644
--- a/src/mame/machine/megacd.cpp
+++ b/src/mame/machine/megacd.cpp
@@ -305,10 +305,10 @@ MACHINE_CONFIG_START(sega_segacd_device::device_add_mconfig)
m_lc89510_temp->set_cdc_do_dma_callback(FUNC(sega_segacd_device::SegaCD_CDC_Do_DMA), this); // hack
- MCFG_TIMER_ADD_NONE("sw_timer") //stopwatch timer
- MCFG_TIMER_DRIVER_ADD("stamp_timer", sega_segacd_device, stamp_timer_callback)
- MCFG_TIMER_DRIVER_ADD("irq3_timer", sega_segacd_device, irq3_timer_callback)
- MCFG_TIMER_DRIVER_ADD("dma_timer", sega_segacd_device, dma_timer_callback)
+ TIMER(config, m_stopwatch_timer).configure_generic(timer_device::expired_delegate()); //stopwatch timer
+ TIMER(config, m_stamp_timer).configure_generic(FUNC(sega_segacd_device::stamp_timer_callback));
+ TIMER(config, m_irq3_timer).configure_generic(FUNC(sega_segacd_device::irq3_timer_callback));
+ TIMER(config, m_dma_timer).configure_generic(FUNC(sega_segacd_device::dma_timer_callback));
config.set_default_layout(layout_megacd);
diff --git a/src/mame/machine/megacdcd.cpp b/src/mame/machine/megacdcd.cpp
index 5620ab2f25c..dd5739a809f 100644
--- a/src/mame/machine/megacdcd.cpp
+++ b/src/mame/machine/megacdcd.cpp
@@ -1154,13 +1154,14 @@ TIMER_DEVICE_CALLBACK_MEMBER( lc89510_temp_device::segacd_access_timer_callback
}
-MACHINE_CONFIG_START(lc89510_temp_device::device_add_mconfig)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("hock_timer", lc89510_temp_device, segacd_access_timer_callback, attotime::from_hz(75))
+void lc89510_temp_device::device_add_mconfig(machine_config &config)
+{
+ TIMER(config, "hock_timer").configure_periodic(FUNC(lc89510_temp_device::segacd_access_timer_callback), attotime::from_hz(75));
- MCFG_DEVICE_ADD( "cdda", CDDA )
- MCFG_SOUND_ROUTE( 0, ":lspeaker", 0.50 ) // TODO: accurate volume balance
- MCFG_SOUND_ROUTE( 1, ":rspeaker", 0.50 )
-MACHINE_CONFIG_END
+ cdda_device &cdda(CDDA(config, "cdda"));
+ cdda.add_route(0, ":lspeaker", 0.50); // TODO: accurate volume balance
+ cdda.add_route(1, ":rspeaker", 0.50);
+}
diff --git a/src/mame/machine/megadriv.cpp b/src/mame/machine/megadriv.cpp
index b913863b3e5..ea7984977a0 100644
--- a/src/mame/machine/megadriv.cpp
+++ b/src/mame/machine/megadriv.cpp
@@ -877,9 +877,10 @@ IRQ_CALLBACK_MEMBER(md_base_state::genesis_int_callback)
return (0x60+irqline*4)/4; // vector address
}
-MACHINE_CONFIG_START(md_base_state::megadriv_timers)
- MCFG_TIMER_DEVICE_ADD(m_scan_timer, "gen_vdp", sega315_5313_device, megadriv_scanline_timer_callback)
-MACHINE_CONFIG_END
+void md_base_state::megadriv_timers(machine_config &config)
+{
+ TIMER(config, m_scan_timer).configure_generic("gen_vdp", FUNC(sega315_5313_device::megadriv_scanline_timer_callback));
+}
MACHINE_CONFIG_START(md_base_state::md_ntsc)
diff --git a/src/mame/video/cgc7900.cpp b/src/mame/video/cgc7900.cpp
index 5668b63a75f..41e56d568ca 100644
--- a/src/mame/video/cgc7900.cpp
+++ b/src/mame/video/cgc7900.cpp
@@ -239,5 +239,5 @@ MACHINE_CONFIG_START(cgc7900_state::cgc7900_video)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_cgc7900)
PALETTE(config, m_palette, FUNC(cgc7900_state::cgc7900_palette), 8);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("blink", cgc7900_state, blink_tick, attotime::from_hz(XTAL(28'480'000)/7500000))
+ TIMER(config, "blink").configure_periodic(FUNC(cgc7900_state::blink_tick), attotime::from_hz(XTAL(28'480'000)/7500000));
MACHINE_CONFIG_END
diff --git a/src/mame/video/decodmd1.cpp b/src/mame/video/decodmd1.cpp
index 1553fcbb137..3467d4801da 100644
--- a/src/mame/video/decodmd1.cpp
+++ b/src/mame/video/decodmd1.cpp
@@ -203,7 +203,7 @@ MACHINE_CONFIG_START(decodmd_type1_device::device_add_mconfig)
MCFG_QUANTUM_TIME(attotime::from_hz(50))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", decodmd_type1_device, dmd_nmi, attotime::from_hz(2000)) // seems a lot
+ TIMER(config, "nmi_timer").configure_periodic(FUNC(decodmd_type1_device::dmd_nmi), attotime::from_hz(2000)); // seems a lot
MCFG_SCREEN_ADD("dmd", LCD)
MCFG_SCREEN_SIZE(128, 16)
diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp
index 2b3a4fe8604..722b60068a6 100644
--- a/src/mame/video/pcd.cpp
+++ b/src/mame/video/pcd.cpp
@@ -99,7 +99,8 @@ ioport_constructor pcd_video_device::device_input_ports() const
return INPUT_PORTS_NAME(pcd_mouse);
}
-MACHINE_CONFIG_START(pcd_video_device::device_add_mconfig)
+void pcd_video_device::device_add_mconfig(machine_config &config)
+{
i8741_device &mcu(I8741(config, "graphics", 16_MHz_XTAL / 2));
mcu.p1_in_cb().set(FUNC(pcd_video_device::p1_r));
mcu.p2_out_cb().set(FUNC(pcd_video_device::p2_w));
@@ -117,8 +118,8 @@ MACHINE_CONFIG_START(pcd_video_device::device_add_mconfig)
m_crtc->set_display_callback(FUNC(pcd_video_device::display_pixels));
m_crtc->set_screen("screen");
- MCFG_TIMER_DRIVER_ADD_PERIODIC("mouse_timer", pcd_video_device, mouse_timer, attotime::from_hz(15000)) // guess
-MACHINE_CONFIG_END
+ TIMER(config, "mouse_timer").configure_periodic(FUNC(pcd_video_device::mouse_timer), attotime::from_hz(15000)); // guess
+}
void pcx_video_device::pcx_vid_map(address_map &map)
{
diff --git a/src/mame/video/wpc_dmd.cpp b/src/mame/video/wpc_dmd.cpp
index 683ee65e407..8ab7b1c9d31 100644
--- a/src/mame/video/wpc_dmd.cpp
+++ b/src/mame/video/wpc_dmd.cpp
@@ -43,7 +43,7 @@ MACHINE_CONFIG_START(wpc_dmd_device::device_add_mconfig)
MCFG_SCREEN_SIZE(128*4, 32*4)
MCFG_SCREEN_VISIBLE_AREA(0, 128*4-1, 0, 32*4-1)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("scanline", wpc_dmd_device, scanline_timer, attotime::from_hz(60*4*32))
+ TIMER(config, "scanline").configure_periodic(FUNC(wpc_dmd_device::scanline_timer), attotime::from_hz(60*4*32));
MACHINE_CONFIG_END
void wpc_dmd_device::device_start()