From 76effa7a281ade788a8ba0ed858035062d08801a Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Fri, 4 Jan 2019 04:42:47 +0100 Subject: [PATCH] -sound/msm5205: Removed MCFG macros, nw -drivers/jantotsu, joctronic, jp, kchamp, klax, kungfur, kurukuru, lucky74, lwings, mermaid, mgavegas, mitchell, mjkjidai, ojankohs, opwolf, pachifev, pcktgal, rastan, rmhaihai, sf, sothello, srmp2, suprgolf, system16, taito_log, tehkanwc, topspeed, trackfld, tubep, wacky_gator, wc90b, yunsung8: Removed MACHINE_CONFIG macros, nw -machine/pce_cd: Removed MACHINE_CONFIG macro, nw --- src/devices/sound/msm5205.h | 10 - src/mame/drivers/jantotsu.cpp | 41 ++- src/mame/drivers/joctronic.cpp | 57 ++-- src/mame/drivers/jp.cpp | 31 +- src/mame/drivers/kchamp.cpp | 101 +++---- src/mame/drivers/klax.cpp | 55 ++-- src/mame/drivers/kungfur.cpp | 28 +- src/mame/drivers/kurukuru.cpp | 46 ++- src/mame/drivers/lucky74.cpp | 48 ++- src/mame/drivers/lwings.cpp | 160 +++++----- src/mame/drivers/mermaid.cpp | 41 ++- src/mame/drivers/mgavegas.cpp | 30 +- src/mame/drivers/mitchell.cpp | 257 ++++++++-------- src/mame/drivers/mjkjidai.cpp | 45 ++- src/mame/drivers/ojankohs.cpp | 148 +++++----- src/mame/drivers/opwolf.cpp | 124 ++++---- src/mame/drivers/pachifev.cpp | 20 +- src/mame/drivers/pcktgal.cpp | 68 ++--- src/mame/drivers/rastan.cpp | 42 +-- src/mame/drivers/rmhaihai.cpp | 78 +++-- src/mame/drivers/sf.cpp | 90 +++--- src/mame/drivers/sothello.cpp | 32 +- src/mame/drivers/srmp2.cpp | 121 ++++---- src/mame/drivers/suprgolf.cpp | 40 +-- src/mame/drivers/system16.cpp | 482 +++++++++++++++---------------- src/mame/drivers/taito_l.cpp | 118 ++++---- src/mame/drivers/tehkanwc.cpp | 51 ++-- src/mame/drivers/topspeed.cpp | 52 ++-- src/mame/drivers/trackfld.cpp | 167 ++++++----- src/mame/drivers/tubep.cpp | 106 ++++--- src/mame/drivers/wacky_gator.cpp | 24 +- src/mame/drivers/wc90b.cpp | 51 ++-- src/mame/drivers/yunsung8.cpp | 47 ++- src/mame/includes/lwings.h | 4 +- src/mame/machine/pce_cd.cpp | 27 +- 35 files changed, 1377 insertions(+), 1465 deletions(-) diff --git a/src/devices/sound/msm5205.h b/src/devices/sound/msm5205.h index 7bdb0544af1..2f36d0347e9 100644 --- a/src/devices/sound/msm5205.h +++ b/src/devices/sound/msm5205.h @@ -7,16 +7,6 @@ /* an interface for the MSM5205 and similar chips */ -#define MCFG_MSM5205_PRESCALER_SELECTOR(select) \ - downcast(*device).set_prescaler_selector((msm5205_device::select)); - -#define MCFG_MSM5205_VCK_CALLBACK(cb) \ - downcast(*device).set_vck_callback((DEVCB_##cb)); - -#define MCFG_MSM5205_VCLK_CB(cb) \ - downcast(*device).set_vck_legacy_callback((DEVCB_##cb)); - - class msm5205_device : public device_t, public device_sound_interface { public: diff --git a/src/mame/drivers/jantotsu.cpp b/src/mame/drivers/jantotsu.cpp index 95ab9ddb4f9..2e67390fb58 100644 --- a/src/mame/drivers/jantotsu.cpp +++ b/src/mame/drivers/jantotsu.cpp @@ -503,38 +503,35 @@ void jantotsu_state::machine_reset() m_adpcm_trigger = 0; } -MACHINE_CONFIG_START(jantotsu_state::jantotsu) - +void jantotsu_state::jantotsu(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,MAIN_CLOCK/4) - MCFG_DEVICE_PROGRAM_MAP(jantotsu_map) - MCFG_DEVICE_IO_MAP(jantotsu_io) + Z80(config, m_maincpu, MAIN_CLOCK/4); + m_maincpu->set_addrmap(AS_PROGRAM, &jantotsu_state::jantotsu_map); + m_maincpu->set_addrmap(AS_IO, &jantotsu_state::jantotsu_io); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1) - MCFG_SCREEN_UPDATE_DRIVER(jantotsu_state, screen_update_jantotsu) - MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); //not accurate + screen.set_size(256, 256); + screen.set_visarea(0, 256-1, 16, 240-1); + screen.set_screen_update(FUNC(jantotsu_state::screen_update_jantotsu)); + screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI); PALETTE(config, m_palette, FUNC(jantotsu_state::jantotsu_palette), 0x20); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("sn1", SN76489A, MAIN_CLOCK/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + SN76489A(config, "sn1", MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.50); + SN76489A(config, "sn2", MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.50); - MCFG_DEVICE_ADD("sn2", SN76489A, MAIN_CLOCK/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - - MCFG_DEVICE_ADD("adpcm", MSM5205, XTAL(384'000)) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, jantotsu_state, jan_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6 KHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) -MACHINE_CONFIG_END + MSM5205(config, m_adpcm, XTAL(384'000)); + m_adpcm->vck_legacy_callback().set(FUNC(jantotsu_state::jan_adpcm_int)); /* interrupt function */ + m_adpcm->set_prescaler_selector(msm5205_device::S64_4B); /* 6 KHz */ + m_adpcm->add_route(ALL_OUTPUTS, "mono", 1.00); +} /************************************* diff --git a/src/mame/drivers/joctronic.cpp b/src/mame/drivers/joctronic.cpp index 5e681b158bd..47fd7bf429c 100644 --- a/src/mame/drivers/joctronic.cpp +++ b/src/mame/drivers/joctronic.cpp @@ -342,9 +342,9 @@ MACHINE_CONFIG_START(joctronic_state::joctronic) m_maincpu->set_addrmap(AS_IO, &joctronic_state::maincpu_io_map); m_maincpu->set_daisy_config(daisy_chain); - MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/2) // 6 MHz - uses WAIT - MCFG_DEVICE_PROGRAM_MAP(joctronic_sound_map) - MCFG_DEVICE_IO_MAP(joctronic_sound_io_map) + Z80(config, m_soundcpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT + m_soundcpu->set_addrmap(AS_PROGRAM, &joctronic_state::joctronic_sound_map); + m_soundcpu->set_addrmap(AS_IO, &joctronic_state::joctronic_sound_io_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5516 @@ -357,10 +357,10 @@ MACHINE_CONFIG_START(joctronic_state::joctronic) ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); ctc.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT - MCFG_DEVICE_ADD("drivers1", LS259, 0) // IC4 - MCFG_DEVICE_ADD("drivers2", LS259, 0) // IC3 - MCFG_DEVICE_ADD("drivers3", LS259, 0) // IC2 - MCFG_DEVICE_ADD("drivers4", LS259, 0) // IC1 + LS259(config, "drivers1", 0); // IC4 + LS259(config, "drivers2", 0); // IC3 + LS259(config, "drivers3", 0); // IC2 + LS259(config, "drivers4", 0); // IC1 /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -373,23 +373,21 @@ MACHINE_CONFIG_START(joctronic_state::joctronic) AY8910(config, "aysnd2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.40); // 1.5 MHz - MCFG_DEVICE_ADD("r2r1", DAC_8BIT_R2R, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) + DAC_8BIT_R2R(config, "r2r1", 0).add_route(ALL_OUTPUTS, "mono", 0.30); + DAC_8BIT_R2R(config, "r2r2", 0).add_route(ALL_OUTPUTS, "mono", 0.30); +} - MCFG_DEVICE_ADD("r2r2", DAC_8BIT_R2R, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(joctronic_state::slalom03) +void joctronic_state::slalom03(machine_config &config) +{ /* basic machine hardware */ Z80(config, m_maincpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT m_maincpu->set_addrmap(AS_PROGRAM, &joctronic_state::slalom03_maincpu_map); // 138, 368, 32 m_maincpu->set_addrmap(AS_IO, &joctronic_state::maincpu_io_map); m_maincpu->set_daisy_config(daisy_chain); - MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/2) // 6 MHz - uses WAIT - MCFG_DEVICE_PROGRAM_MAP(slalom03_sound_map) - MCFG_DEVICE_IO_MAP(slalom03_sound_io_map) + Z80(config, m_soundcpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT + m_soundcpu->set_addrmap(AS_PROGRAM, &joctronic_state::slalom03_sound_map); + m_soundcpu->set_addrmap(AS_IO, &joctronic_state::slalom03_sound_io_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5516 @@ -402,12 +400,12 @@ MACHINE_CONFIG_START(joctronic_state::slalom03) ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); //ctc.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT - MCFG_DEVICE_ADD("drivers1", HC259, 0) // IC1 - MCFG_DEVICE_ADD("drivers2", HC259, 0) // IC2 - MCFG_DEVICE_ADD("drivers3", HC259, 0) // IC3 - MCFG_DEVICE_ADD("drivers4", HC259, 0) // IC4 - MCFG_DEVICE_ADD("drivers5", HC259, 0) // IC5 - MCFG_DEVICE_ADD("drivers6", HC259, 0) // IC6 + HC259(config, "drivers1", 0); // IC1 + HC259(config, "drivers2", 0); // IC2 + HC259(config, "drivers3", 0); // IC3 + HC259(config, "drivers4", 0); // IC4 + HC259(config, "drivers5", 0); // IC5 + HC259(config, "drivers6", 0); // IC6 /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -421,17 +419,16 @@ MACHINE_CONFIG_START(joctronic_state::slalom03) aysnd2.port_a_write_callback().set("r2r", FUNC(dac_8bit_r2r_device::data_w)); aysnd2.add_route(ALL_OUTPUTS, "mono", 0.40); - MCFG_DEVICE_ADD("r2r", DAC_8BIT_R2R, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) + DAC_8BIT_R2R(config, "r2r", 0).add_route(ALL_OUTPUTS, "mono", 0.30); LS157(config, m_adpcm_select, 0); m_adpcm_select->out_callback().set("oki", FUNC(msm5205_device::data_w)); - MCFG_DEVICE_ADD("oki", MSM5205, XTAL(12'000'000)/2/16) // 375 kHz - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) // frequency modifiable during operation - MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, joctronic_state, vck_w)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) -MACHINE_CONFIG_END + MSM5205(config, m_oki, XTAL(12'000'000)/2/16); // 375 kHz + m_oki->vck_callback().set(FUNC(joctronic_state::vck_w)); + m_oki->set_prescaler_selector(msm5205_device::S96_4B); // frequency modifiable during operation + m_oki->add_route(ALL_OUTPUTS, "mono", 0.30); +} void joctronic_state::bldyrolr(machine_config & config) { diff --git a/src/mame/drivers/jp.cpp b/src/mame/drivers/jp.cpp index 249c23bc588..9a2b4d8ce82 100644 --- a/src/mame/drivers/jp.cpp +++ b/src/mame/drivers/jp.cpp @@ -332,11 +332,13 @@ void jp_state::machine_reset() m_digits[99] = 0x3f; } -MACHINE_CONFIG_START(jp_state::jp) +void jp_state::jp(machine_config &config) + +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL / 2) - MCFG_DEVICE_PROGRAM_MAP(jp_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(jp_state, irq0_line_hold, 8_MHz_XTAL / 8192) // 4020 divider + Z80(config, m_maincpu, 8_MHz_XTAL / 2); + m_maincpu->set_addrmap(AS_PROGRAM, &jp_state::jp_map); + m_maincpu->set_periodic_int(FUNC(jp_state::irq0_line_hold), attotime::from_hz(8_MHz_XTAL / 8192)); // 4020 divider NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -378,7 +380,7 @@ MACHINE_CONFIG_START(jp_state::jp) ay.port_a_read_callback().set(FUNC(jp_state::porta_r)); ay.port_b_read_callback().set(FUNC(jp_state::portb_r)); ay.add_route(ALL_OUTPUTS, "ayvol", 0.9); -MACHINE_CONFIG_END +} WRITE8_MEMBER(jp_state::sample_bank_w) { @@ -407,23 +409,24 @@ IRQ_CALLBACK_MEMBER(jp_state::sound_int_cb) return 0xff; } -MACHINE_CONFIG_START(jp_state::jps) +void jp_state::jps(machine_config &config) +{ jp(config); - MCFG_DEVICE_ADD("soundcpu", Z80, 8_MHz_XTAL / 2) - MCFG_DEVICE_PROGRAM_MAP(jp_sound_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(jp_state, sound_int_cb) + Z80(config, m_soundcpu, 8_MHz_XTAL / 2); + m_soundcpu->set_addrmap(AS_PROGRAM, &jp_state::jp_sound_map); + m_soundcpu->set_irq_acknowledge_callback(FUNC(jp_state::sound_int_cb)); LS157(config, m_adpcm_select, 0); // not labeled in manual; might even be a CD4019 m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); SPEAKER(config, "msmvol").front_center(); - MCFG_DEVICE_ADD("msm", MSM5205, 384'000) // not labeled in manual; clock unknown - MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, jp_state, vck_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // unknown - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmvol", 1.0) + MSM5205(config, m_msm, 384'000); // not labeled in manual; clock unknown + m_msm->vck_callback().set(FUNC(jp_state::vck_w)); + m_msm->set_prescaler_selector(msm5205_device::S48_4B); // unknown + m_msm->add_route(ALL_OUTPUTS, "msmvol", 1.0); m_latch[9]->q_out_cb<5>().set_inputline("soundcpu", INPUT_LINE_NMI); // only external input for sound board -MACHINE_CONFIG_END +} /*------------------------------------------------------------------- / America 1492 #1107 diff --git a/src/mame/drivers/kchamp.cpp b/src/mame/drivers/kchamp.cpp index b60421bca77..0c77e7368f4 100644 --- a/src/mame/drivers/kchamp.cpp +++ b/src/mame/drivers/kchamp.cpp @@ -404,18 +404,19 @@ void kchamp_state::machine_reset() m_sound_nmi_enable = 0; } -MACHINE_CONFIG_START(kchamp_state::kchampvs) - +void kchamp_state::kchampvs(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(kchampvs_map) - MCFG_DEVICE_IO_MAP(kchampvs_io_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) + Z80(config, m_maincpu, XTAL(12'000'000)/4); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchampvs_map); + m_maincpu->set_addrmap(AS_IO, &kchamp_state::kchampvs_io_map); + m_maincpu->set_addrmap(AS_OPCODES, &kchamp_state::decrypted_opcodes_map); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(kchampvs_sound_map) - MCFG_DEVICE_IO_MAP(kchampvs_sound_io_map) /* irq's triggered from main cpu */ - /* nmi's from msm5205 */ + Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchampvs_sound_map); + m_audiocpu->set_addrmap(AS_IO, &kchamp_state::kchampvs_sound_io_map); + /* IRQs triggered from main CPU */ + /* NMIs from MSM5205 */ ls259_device &mainlatch(LS259(config, "mainlatch")); // 8C mainlatch.q_out_cb<0>().set(FUNC(kchamp_state::flipscreen_w)); @@ -425,16 +426,16 @@ MACHINE_CONFIG_START(kchamp_state::kchampvs) MCFG_MACHINE_START_OVERRIDE(kchamp_state,kchampvs) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.10) /* verified on pcb */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchampvs) - MCFG_SCREEN_PALETTE(m_palette) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, kchamp_state, vblank_irq)) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(59.10); /* verified on pcb */ + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(kchamp_state::screen_update_kchampvs)); + screen.set_palette(m_palette); + screen.screen_vblank().set(FUNC(kchamp_state::vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_kchamp) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_kchamp); PALETTE(config, m_palette, FUNC(kchamp_state::kchamp_palette), 256); /* sound hardware */ @@ -444,35 +445,34 @@ MACHINE_CONFIG_START(kchamp_state::kchampvs) m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); AY8910(config, m_ay[0], XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.3); /* verified on pcb */ - AY8910(config, m_ay[1], XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.3); /* verified on pcb */ LS157(config, m_adpcm_select, 0); // at 4C m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); - MCFG_DEVICE_ADD("msm", MSM5205, 375000) /* verified on pcb, discrete circuit clock */ - MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, kchamp_state, msmint)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 1 / 96 = 3906.25Hz playback */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 375000); /* verified on pcb, discrete circuit clock */ + m_msm->vck_callback().set(FUNC(kchamp_state::msmint)); /* interrupt function */ + m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 1 / 96 = 3906.25Hz playback */ + m_msm->add_route(ALL_OUTPUTS, "speaker", 1.0); +} /******************** * 1 Player Version * ********************/ -MACHINE_CONFIG_START(kchamp_state::kchamp) - +void kchamp_state::kchamp(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* 12MHz / 4 = 3.0 MHz */ - MCFG_DEVICE_PROGRAM_MAP(kchamp_map) - MCFG_DEVICE_IO_MAP(kchamp_io_map) + Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchamp_map); + m_maincpu->set_addrmap(AS_IO, &kchamp_state::kchamp_io_map); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* 12MHz / 4 = 3.0 MHz */ - MCFG_DEVICE_PROGRAM_MAP(kchamp_sound_map) - MCFG_DEVICE_IO_MAP(kchamp_sound_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(kchamp_state, sound_int, 125) /* Hz */ - /* irq's triggered from main cpu */ - /* nmi's from 125 Hz clock */ + Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchamp_sound_map); + m_audiocpu->set_addrmap(AS_IO, &kchamp_state::kchamp_sound_io_map); + m_audiocpu->set_periodic_int(FUNC(kchamp_state::sound_int), attotime::from_hz(125)); /* Hz */ + /* IRQs triggered from main CPU */ + /* NMIs from 125Hz clock */ ls259_device &mainlatch(LS259(config, "mainlatch")); // IC71 mainlatch.q_out_cb<0>().set(FUNC(kchamp_state::flipscreen_w)); @@ -481,16 +481,16 @@ MACHINE_CONFIG_START(kchamp_state::kchamp) MCFG_MACHINE_START_OVERRIDE(kchamp_state,kchamp) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchamp) - MCFG_SCREEN_PALETTE(m_palette) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, kchamp_state, vblank_irq)) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(kchamp_state::screen_update_kchamp)); + screen.set_palette(m_palette); + screen.screen_vblank().set(FUNC(kchamp_state::vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_kchamp) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_kchamp); PALETTE(config, m_palette, FUNC(kchamp_state::kchamp_palette), 256); /* sound hardware */ @@ -500,13 +500,14 @@ MACHINE_CONFIG_START(kchamp_state::kchamp) m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); AY8910(config, m_ay[0], XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3); /* Guess based on actual pcb recordings of karatedo */ - AY8910(config, m_ay[1], XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3); /* Guess based on actual pcb recordings of karatedo */ - MCFG_DEVICE_ADD("dac", DAC08, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) // IC11 - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END + DAC08(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // IC11 + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); +} /*************************************************************************** diff --git a/src/mame/drivers/klax.cpp b/src/mame/drivers/klax.cpp index fe67297a324..f561406483f 100644 --- a/src/mame/drivers/klax.cpp +++ b/src/mame/drivers/klax.cpp @@ -194,67 +194,66 @@ GFXDECODE_END * *************************************/ -MACHINE_CONFIG_START(klax_state::klax) - +void klax_state::klax(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) - MCFG_DEVICE_PROGRAM_MAP(klax_map) + M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2); + m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax_map); EEPROM_2816(config, "eeprom").lock_after_write(true); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_klax) + GFXDECODE(config, m_gfxdecode, "palette", gfx_klax); PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 512).set_membits(8); - MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, klax_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,32) + TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8, 8, TILEMAP_SCAN_COLS, 64, 32); + m_playfield_tilemap->set_info_callback(FUNC(klax_state::get_playfield_tile_info)); ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, klax_state::s_mob_config); m_mob->set_gfxdecode(m_gfxdecode); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); /* note: these parameters are from published specs, not derived */ /* the board uses an SOS-2 chip to generate video signals */ - MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240) - MCFG_SCREEN_UPDATE_DRIVER(klax_state, screen_update_klax) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, klax_state, video_int_write_line)) + m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240); + m_screen->set_screen_update(FUNC(klax_state::screen_update_klax)); + m_screen->set_palette("palette"); + m_screen->screen_vblank().set(FUNC(klax_state::video_int_write_line)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, ATARI_CLOCK_14MHz/4/4, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + OKIM6295(config, "oki", ATARI_CLOCK_14MHz/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); +} void klax_state::bootleg_sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); } -MACHINE_CONFIG_START(klax_state::klax2bl) +void klax_state::klax2bl(machine_config &config) +{ klax(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(klax2bl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax2bl_map); - MCFG_DEVICE_REMOVE("oki") // no 6295 here + config.device_remove("oki"); // no 6295 here - MCFG_DEVICE_ADD("audiocpu", Z80, 6000000) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(bootleg_sound_map) + z80_device &audiocpu(Z80(config, "audiocpu", 6000000)); /* ? */ + audiocpu.set_addrmap(AS_PROGRAM, &klax_state::bootleg_sound_map); - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_klax2bl) + m_gfxdecode->set_info(gfx_klax2bl); // guess, probably something like this // 2 x msm at least on bootleg set 2 (ic18 and ic19) - MCFG_DEVICE_ADD("msm", MSM5205, 375000) /* ? */ -// MCFG_MSM5205_VCLK_CB(WRITELINE(*this, klax_state, m5205_int1)) /* interrupt function */ -// MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ -// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - -MACHINE_CONFIG_END + MSM5205(config, "msm", 375000); /* ? */ +// msm.vck_legacy_callback().set(FUNC(klax_state::m5205_int1)); /* interrupt function */ +// msm.set_prescaler_selector(msm5205_device::MSM5205_S96_4B); /* 4KHz 4-bit */ +// msm.add_route(ALL_OUTPUTS, "mono", 0.25); +} /************************************* * diff --git a/src/mame/drivers/kungfur.cpp b/src/mame/drivers/kungfur.cpp index e7cd67bbb86..d9522e30966 100644 --- a/src/mame/drivers/kungfur.cpp +++ b/src/mame/drivers/kungfur.cpp @@ -296,12 +296,12 @@ void kungfur_state::machine_reset() m_control = 0; } -MACHINE_CONFIG_START(kungfur_state::kungfur) - +void kungfur_state::kungfur(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6809, 8000000/2) // 4MHz? - MCFG_DEVICE_PROGRAM_MAP(kungfur_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(kungfur_state, kungfur_irq, 975) // close approximation + M6809(config, m_maincpu, 8000000/2); // 4MHz? + m_maincpu->set_addrmap(AS_PROGRAM, &kungfur_state::kungfur_map); + m_maincpu->set_periodic_int(FUNC(kungfur_state::kungfur_irq), attotime::from_hz(975)); // close approximation i8255_device &ppi0(I8255A(config, "ppi8255_0")); // $4008 - always $83 (PPI mode 0, ports B & lower C as input) @@ -321,16 +321,16 @@ MACHINE_CONFIG_START(kungfur_state::kungfur) /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("adpcm1", MSM5205, XTAL(384'000)) // clock verified with recording - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kungfur_state, kfr_adpcm1_int)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) + MSM5205(config, m_adpcm1, XTAL(384'000)); // clock verified with recording + m_adpcm1->vck_legacy_callback().set(FUNC(kungfur_state::kfr_adpcm1_int)); + m_adpcm1->set_prescaler_selector(msm5205_device::S48_4B); + m_adpcm1->add_route(ALL_OUTPUTS, "lspeaker", 1.0); - MCFG_DEVICE_ADD("adpcm2", MSM5205, XTAL(384'000)) // " - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kungfur_state, kfr_adpcm2_int)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) -MACHINE_CONFIG_END + MSM5205(config, m_adpcm2, XTAL(384'000)); // clock verified with recording + m_adpcm2->vck_legacy_callback().set(FUNC(kungfur_state::kfr_adpcm2_int)); + m_adpcm2->set_prescaler_selector(msm5205_device::S48_4B); + m_adpcm2->add_route(ALL_OUTPUTS, "rspeaker", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp index 47157c2ff0b..a8e79993b55 100644 --- a/src/mame/drivers/kurukuru.cpp +++ b/src/mame/drivers/kurukuru.cpp @@ -840,17 +840,17 @@ void kurukuru_state::machine_reset() * Machine Driver * *************************************************/ -MACHINE_CONFIG_START(kurukuru_state::kurukuru) - +void kurukuru_state::kurukuru(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",Z80, CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(kurukuru_map) - MCFG_DEVICE_IO_MAP(kurukuru_io) + Z80(config, m_maincpu, CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &kurukuru_state::kurukuru_map); + m_maincpu->set_addrmap(AS_IO, &kurukuru_state::kurukuru_io); - MCFG_DEVICE_ADD("audiocpu", Z80, CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(kurukuru_audio_map) - MCFG_DEVICE_IO_MAP(kurukuru_audio_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb) + Z80(config, m_audiocpu, CPU_CLOCK); + m_audiocpu->set_addrmap(AS_PROGRAM, &kurukuru_state::kurukuru_audio_map); + m_audiocpu->set_addrmap(AS_IO, &kurukuru_state::kurukuru_audio_io); + m_audiocpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -861,7 +861,7 @@ MACHINE_CONFIG_START(kurukuru_state::kurukuru) v9938.int_cb().set_inputline("maincpu", 0); SCREEN(config, "screen", SCREEN_TYPE_RASTER); - MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH ) + TICKET_DISPENSER(config, "hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -879,25 +879,23 @@ MACHINE_CONFIG_START(kurukuru_state::kurukuru) ym2149.port_b_write_callback().set(FUNC(kurukuru_state::ym2149_bout_w)); ym2149.add_route(ALL_OUTPUTS, "mono", 0.80); - MCFG_DEVICE_ADD("adpcm", MSM5205, M5205_CLOCK) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kurukuru_state, kurukuru_msm5205_vck)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* changed on the fly */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END + MSM5205(config, m_adpcm, M5205_CLOCK); + m_adpcm->vck_legacy_callback().set(FUNC(kurukuru_state::kurukuru_msm5205_vck)); + m_adpcm->set_prescaler_selector(msm5205_device::S48_4B); /* changed on the fly */ + m_adpcm->add_route(ALL_OUTPUTS, "mono", 0.80); +} - -MACHINE_CONFIG_START(kurukuru_state::ppj) +void kurukuru_state::ppj(machine_config &config) +{ kurukuru(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(ppj_map) - MCFG_DEVICE_IO_MAP(ppj_io) + m_maincpu->set_addrmap(AS_PROGRAM, &kurukuru_state::ppj_map); + m_maincpu->set_addrmap(AS_IO, &kurukuru_state::ppj_io); - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(ppj_audio_map) - MCFG_DEVICE_IO_MAP(ppj_audio_io) -MACHINE_CONFIG_END + m_audiocpu->set_addrmap(AS_PROGRAM, &kurukuru_state::ppj_audio_map); + m_audiocpu->set_addrmap(AS_IO, &kurukuru_state::ppj_audio_io); +} /************************************************* diff --git a/src/mame/drivers/lucky74.cpp b/src/mame/drivers/lucky74.cpp index cc000621cf2..eb6cf033ab2 100644 --- a/src/mame/drivers/lucky74.cpp +++ b/src/mame/drivers/lucky74.cpp @@ -1463,13 +1463,13 @@ WRITE_LINE_MEMBER(lucky74_state::lucky74_adpcm_int) * Machine Drivers * *************************/ -MACHINE_CONFIG_START(lucky74_state::lucky74) - +void lucky74_state::lucky74(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, C_06B49P_CLKOUT_03) /* 3 MHz. */ - MCFG_DEVICE_PROGRAM_MAP(lucky74_map) - MCFG_DEVICE_IO_MAP(lucky74_portmap) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lucky74_state, nmi_interrupt) /* 60 Hz. measured */ + Z80(config, m_maincpu, C_06B49P_CLKOUT_03); /* 3 MHz. */ + m_maincpu->set_addrmap(AS_PROGRAM, &lucky74_state::lucky74_map); + m_maincpu->set_addrmap(AS_IO, &lucky74_state::lucky74_portmap); + m_maincpu->set_vblank_int("screen", FUNC(lucky74_state::nmi_interrupt)); /* 60 Hz. measured */ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -1495,13 +1495,13 @@ MACHINE_CONFIG_START(lucky74_state::lucky74) ppi3.out_pc_callback().set(FUNC(lucky74_state::lamps_b_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(lucky74_state, screen_update_lucky74) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(64*8, 32*8); + screen.set_visarea(0*8, 64*8-1, 1*8, 30*8-1); + screen.set_screen_update(FUNC(lucky74_state::screen_update_lucky74)); + screen.set_palette("palette"); GFXDECODE(config, m_gfxdecode, "palette", gfx_lucky74); PALETTE(config, "palette", FUNC(lucky74_state::lucky74_palette), 512); @@ -1509,14 +1509,9 @@ MACHINE_CONFIG_START(lucky74_state::lucky74) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("sn1", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - - MCFG_DEVICE_ADD("sn2", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - - MCFG_DEVICE_ADD("sn3", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) + SN76489(config, "sn1", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */ + SN76489(config, "sn2", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */ + SN76489(config, "sn3", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */ ay8910_device &aysnd(AY8910(config, "aysnd", C_06B49P_CLKOUT_04)); /* 1.5 MHz. */ aysnd.port_a_read_callback().set_ioport("IN3"); @@ -1524,12 +1519,11 @@ MACHINE_CONFIG_START(lucky74_state::lucky74) aysnd.port_b_write_callback().set(FUNC(lucky74_state::ym2149_portb_w)); aysnd.add_route(ALL_OUTPUTS, "mono", 0.00); /* not routed to audio hardware */ - MCFG_DEVICE_ADD("msm", MSM5205, C_06B49P_CLKOUT_06) /* 375 kHz. */ - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, lucky74_state, lucky74_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) - -MACHINE_CONFIG_END + MSM5205(config, m_msm, C_06B49P_CLKOUT_06); /* 375 kHz. */ + m_msm->vck_legacy_callback().set(FUNC(lucky74_state::lucky74_adpcm_int)); /* interrupt function */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.70); +} /************************* diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp index 251394647bb..06272cced6c 100644 --- a/src/mame/drivers/lwings.cpp +++ b/src/mame/drivers/lwings.cpp @@ -931,33 +931,33 @@ void lwings_state::machine_reset() m_adpcm = 0; } -MACHINE_CONFIG_START(lwings_state::lwings) - +void lwings_state::lwings(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* verified on PCB */ - MCFG_DEVICE_PROGRAM_MAP(lwings_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, lwings_interrupt) + Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on PCB */ + m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_map); + m_maincpu->set_vblank_int("screen", FUNC(lwings_state::lwings_interrupt)); - MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) /* verified on PCB */ - MCFG_DEVICE_PROGRAM_MAP(lwings_sound_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 222) // approximation from pcb music recording - where is the frequency actually derived from?? + Z80(config, m_soundcpu, XTAL(12'000'000)/4); /* verified on PCB */ + m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_sound_map); + m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222)); + // above frequency is an approximation from PCB music recording - where is the frequency actually derived from? WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8) + BUFFERED_SPRITERAM8(config, m_spriteram); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(lwings_state::screen_update_lwings)); + screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); /* sound hardware */ @@ -965,48 +965,45 @@ MACHINE_CONFIG_START(lwings_state::lwings) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("2203a", YM2203, XTAL(12'000'000)/8) /* verified on PCB */ - MCFG_SOUND_ROUTE(0, "mono", 0.20) - MCFG_SOUND_ROUTE(1, "mono", 0.20) - MCFG_SOUND_ROUTE(2, "mono", 0.20) - MCFG_SOUND_ROUTE(3, "mono", 0.10) + ym2203_device &ym2203a(YM2203(config, "2203a", XTAL(12'000'000)/8)); /* verified on PCB */ + ym2203a.add_route(0, "mono", 0.20); + ym2203a.add_route(1, "mono", 0.20); + ym2203a.add_route(2, "mono", 0.20); + ym2203a.add_route(3, "mono", 0.10); - MCFG_DEVICE_ADD("2203b", YM2203, XTAL(12'000'000)/8) /* verified on PCB */ - MCFG_SOUND_ROUTE(0, "mono", 0.20) - MCFG_SOUND_ROUTE(1, "mono", 0.20) - MCFG_SOUND_ROUTE(2, "mono", 0.20) - MCFG_SOUND_ROUTE(3, "mono", 0.10) -MACHINE_CONFIG_END - - - -MACHINE_CONFIG_START(lwings_state::fball) + ym2203_device &ym2203b(YM2203(config, "2203b", XTAL(12'000'000)/8)); /* verified on PCB */ + ym2203b.add_route(0, "mono", 0.20); + ym2203b.add_route(1, "mono", 0.20); + ym2203b.add_route(2, "mono", 0.20); + ym2203b.add_route(3, "mono", 0.10); +} +void lwings_state::fball(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(fball_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt) + Z80(config, m_maincpu, XTAL(12'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_map); + m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt)); - MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) // ? - MCFG_DEVICE_PROGRAM_MAP(fball_sound_map) -// MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 222) + Z80(config, m_soundcpu, XTAL(12'000'000)/4); // ? + m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_sound_map); +// m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222)); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8) + BUFFERED_SPRITERAM8(config, m_spriteram); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) // the 16-pixel black border on left edge is correct, test mode actually uses that area - MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // the 16-pixel black border on left edge is correct, test mode actually uses that area + screen.set_screen_update(FUNC(lwings_state::screen_update_lwings)); + screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); /* sound hardware */ @@ -1014,65 +1011,60 @@ MACHINE_CONFIG_START(lwings_state::fball) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(0, fball_oki_map) + okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified + oki.add_route(ALL_OUTPUTS, "mono", 1.0); + oki.set_addrmap(0, &lwings_state::fball_oki_map); +} -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(lwings_state::trojan) +void lwings_state::trojan(machine_config &config) +{ lwings(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */ - MCFG_DEVICE_PROGRAM_MAP(trojan_map) + m_maincpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */ + m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::trojan_map); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */ + m_soundcpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */ - MCFG_DEVICE_ADD("adpcm", Z80, XTAL(12'000'000)/4) /* verified on PCB */ - MCFG_DEVICE_PROGRAM_MAP(trojan_adpcm_map) - MCFG_DEVICE_IO_MAP(trojan_adpcm_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 4000) + z80_device &adpcm(Z80(config, "adpcm", XTAL(12'000'000)/4)); /* verified on PCB */ + adpcm.set_addrmap(AS_PROGRAM, &lwings_state::trojan_adpcm_map); + adpcm.set_addrmap(AS_IO, &lwings_state::trojan_adpcm_io_map); + adpcm.set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(4000)); /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_trojan) + m_gfxdecode->set_info(gfx_trojan); MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_trojan) + subdevice("screen")->set_screen_update(FUNC(lwings_state::screen_update_trojan)); /* sound hardware */ - GENERIC_LATCH_8(config, "soundlatch2"); - MCFG_DEVICE_ADD("5205", MSM5205, XTAL(384'000)) /* verified on PCB */ - MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* slave mode */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + MSM5205(config, m_msm, XTAL(384'000)); /* verified on PCB */ + m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* slave mode */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); +} -MACHINE_CONFIG_START(lwings_state::avengers) +void lwings_state::avengers(machine_config &config) +{ trojan(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(avengers_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt) // RST 38h triggered by software + m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::avengers_map); + m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software - MCFG_DEVICE_MODIFY("adpcm") - MCFG_DEVICE_IO_MAP(avengers_adpcm_io_map) + subdevice("adpcm")->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map); /* video hardware */ MCFG_VIDEO_START_OVERRIDE(lwings_state,avengers) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(lwings_state::avengersb) +void lwings_state::avengersb(machine_config &config) +{ avengers(config); /* video hardware */ MCFG_VIDEO_START_OVERRIDE(lwings_state,avengersb) -MACHINE_CONFIG_END +} /************************************* diff --git a/src/mame/drivers/mermaid.cpp b/src/mame/drivers/mermaid.cpp index 3119a60617b..3d0bb77386b 100644 --- a/src/mame/drivers/mermaid.cpp +++ b/src/mame/drivers/mermaid.cpp @@ -419,11 +419,11 @@ WRITE_LINE_MEMBER(mermaid_state::rougien_adpcm_int) } } -MACHINE_CONFIG_START(mermaid_state::mermaid) - +void mermaid_state::mermaid(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 4000000) // ??? - MCFG_DEVICE_PROGRAM_MAP(mermaid_map) + Z80(config, m_maincpu, 4000000); // ??? + m_maincpu->set_addrmap(AS_PROGRAM, &mermaid_state::mermaid_map); LS259(config, m_latch[0]); m_latch[0]->q_out_cb<0>().set(FUNC(mermaid_state::ay1_enable_w)); @@ -440,14 +440,14 @@ MACHINE_CONFIG_START(mermaid_state::mermaid) m_latch[1]->q_out_cb<7>().set_nop(); // very frequent /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(mermaid_state, screen_update_mermaid) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mermaid_state, screen_vblank_mermaid)) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(mermaid_state::screen_update_mermaid)); + m_screen->screen_vblank().set(FUNC(mermaid_state::screen_vblank_mermaid)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mermaid); PALETTE(config, m_palette, FUNC(mermaid_state::mermaid_palette), 4*16+2*2, 64+1); @@ -456,12 +456,11 @@ MACHINE_CONFIG_START(mermaid_state::mermaid) SPEAKER(config, "mono").front_center(); AY8910(config, m_ay8910[0], 1500000).add_route(ALL_OUTPUTS, "mono", 0.25); - AY8910(config, m_ay8910[1], 1500000).add_route(ALL_OUTPUTS, "mono", 0.25); +} -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(mermaid_state::rougien) +void mermaid_state::rougien(machine_config &config) +{ mermaid(config); m_latch[0]->q_out_cb<2>().set(FUNC(mermaid_state::rougien_sample_playback_w)); @@ -471,16 +470,16 @@ MACHINE_CONFIG_START(mermaid_state::rougien) m_palette->set_init(FUNC(mermaid_state::rougien_palette)); - MCFG_DEVICE_ADD("adpcm", MSM5205, 384000) - MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, mermaid_state, rougien_adpcm_int)) - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) + MSM5205(config, m_adpcm, 384000); + m_adpcm->vck_callback().set(FUNC(mermaid_state::rougien_adpcm_int)); + m_adpcm->set_prescaler_selector(msm5205_device::S96_4B); + m_adpcm->add_route(ALL_OUTPUTS, "mono", 1.00); RIPPLE_COUNTER(config, m_adpcm_counter); m_adpcm_counter->set_device_rom_tag("adpcm"); m_adpcm_counter->set_stages(12); m_adpcm_counter->rom_out_cb().set(FUNC(mermaid_state::adpcm_data_w)); -MACHINE_CONFIG_END +} /* ROMs */ diff --git a/src/mame/drivers/mgavegas.cpp b/src/mame/drivers/mgavegas.cpp index 2b0fe10a3b8..ae1bb2cb3c0 100644 --- a/src/mame/drivers/mgavegas.cpp +++ b/src/mame/drivers/mgavegas.cpp @@ -584,41 +584,35 @@ void mgavegas_state::init_mgavegas133() * Machine Drivers * *************************/ - -MACHINE_CONFIG_START(mgavegas_state::mgavegas) +void mgavegas_state::mgavegas(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLK) - MCFG_DEVICE_PROGRAM_MAP(mgavegas_map) + Z80(config, m_maincpu, CPU_CLK); + m_maincpu->set_addrmap(AS_PROGRAM, &mgavegas_state::mgavegas_map); - MCFG_TIMER_DRIVER_ADD_PERIODIC("int_0", mgavegas_state, int_0, attotime::from_hz(6000)) //6KHz from MSM5205 /VCK + TIMER(config, "int_0").configure_periodic(FUNC(mgavegas_state::int_0), attotime::from_hz(6000)); //6KHz from MSM5205 /VCK NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); - MCFG_TICKET_DISPENSER_ADD("hopper",attotime::from_msec(200),TICKET_MOTOR_ACTIVE_HIGH,TICKET_STATUS_ACTIVE_LOW); + TICKET_DISPENSER(config, "hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW); /* sound hardware */ - SPEAKER(config, "mono").front_center(); AY8910(config, m_ay, AY_CLK); m_ay->add_route(ALL_OUTPUTS, "mono", 0.3); m_ay->port_a_read_callback().set(FUNC(mgavegas_state::ay8910_a_r)); m_ay->port_b_read_callback().set(FUNC(mgavegas_state::ay8910_b_r)); - MCFG_DEVICE_ADD("5205", MSM5205, MSM_CLK) - MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter1", 2.0) - - - MCFG_DEVICE_ADD("filter1", FILTER_RC) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter2",2.0) - MCFG_DEVICE_ADD("filter2", FILTER_RC) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) + MSM5205(config, m_msm, MSM_CLK); + m_msm->set_prescaler_selector(msm5205_device::S64_4B); + m_msm->add_route(ALL_OUTPUTS, "filter1", 2.0); + FILTER_RC(config, "filter1").add_route(ALL_OUTPUTS, "filter2", 2.0); + FILTER_RC(config, "filter2").add_route(ALL_OUTPUTS, "mono", 2.0); /* Video */ config.set_default_layout(layout_mgavegas); - -MACHINE_CONFIG_END +} /************************* diff --git a/src/mame/drivers/mitchell.cpp b/src/mame/drivers/mitchell.cpp index 044ebd58744..d278049d5aa 100644 --- a/src/mame/drivers/mitchell.cpp +++ b/src/mame/drivers/mitchell.cpp @@ -1161,30 +1161,29 @@ TIMER_DEVICE_CALLBACK_MEMBER(mitchell_state::mitchell_irq) } } -MACHINE_CONFIG_START(mitchell_state::mgakuen) - +void mitchell_state::mgakuen(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* probably same clock as the other mitchell hardware games */ - MCFG_DEVICE_PROGRAM_MAP(mgakuen_map) - MCFG_DEVICE_IO_MAP(mitchell_io_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) + Z80(config, m_maincpu, XTAL(16'000'000)/2); /* probably same clock as the other mitchell hardware games */ + m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mgakuen_map); + m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map); + TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1); MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) - EEPROM_93C46_16BIT(config, "eeprom"); + EEPROM_93C46_16BIT(config, m_eeprom); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mgakuen) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_mgakuen); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024); // less colors than the others MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) @@ -1192,39 +1191,37 @@ MACHINE_CONFIG_START(mitchell_state::mgakuen) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* probably same clock as the other mitchell hardware games */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* probably same clock as the other mitchell hardware games */ + m_oki->add_route(ALL_OUTPUTS, "mono", 0.50); - MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(16'000'000)/4) /* probably same clock as the other mitchell hardware games */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(mitchell_state::pang) + ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* probably same clock as the other mitchell hardware games */ + ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); +} +void mitchell_state::pang(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",Z80, XTAL(16'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(mitchell_map) - MCFG_DEVICE_IO_MAP(mitchell_io_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) + Z80(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map); + m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map); + m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); + TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1); MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) - EEPROM_93C46_16BIT(config, "eeprom"); + EEPROM_93C46_16BIT(config, m_eeprom); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(57.42) /* verified on pcb */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mitchell) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(57.42); /* verified on pcb */ + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_mitchell); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) @@ -1232,12 +1229,12 @@ MACHINE_CONFIG_START(mitchell_state::pang) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* verified on pcb */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) + OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb */ + m_oki->add_route(ALL_OUTPUTS, "mono", 0.30); - MCFG_DEVICE_ADD("ymsnd",YM2413, XTAL(16'000'000)/4) /* verified on pcb */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */ + ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); +} void mitchell_state::pangnv(machine_config &config) { @@ -1275,74 +1272,71 @@ WRITE_LINE_MEMBER(mitchell_state::spangbl_adpcm_int) m_audiocpu->set_input_line(INPUT_LINE_NMI, m_sample_select); } - -MACHINE_CONFIG_START(mitchell_state::spangbl) +void mitchell_state::spangbl(machine_config &config) +{ pangnv(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(spangbl_map) - MCFG_DEVICE_IO_MAP(spangbl_io_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mitchell_state, irq0_line_hold) + m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::spangbl_map); + m_maincpu->set_addrmap(AS_IO, &mitchell_state::spangbl_io_map); + m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); + m_maincpu->set_vblank_int("screen", FUNC(mitchell_state::irq0_line_hold)); - MCFG_DEVICE_REMOVE("scantimer") + config.device_remove("scantimer"); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) // Z80A CPU; clock unknown - MCFG_DEVICE_PROGRAM_MAP(spangbl_sound_map) + Z80(config, m_audiocpu, 4000000); // Z80A CPU; clock unknown + m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::spangbl_sound_map); - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_spangbl) + m_gfxdecode->set_info(gfx_spangbl); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); - MCFG_DEVICE_REMOVE("oki") - MCFG_DEVICE_ADD("msm", MSM5205, 400000) // clock and prescaler unknown - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, mitchell_state, spangbl_adpcm_int)) // controls music as well as ADCPM rate - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + config.device_remove("oki"); + MSM5205(config, m_msm, 400000); // clock and prescaler unknown + m_msm->vck_legacy_callback().set(FUNC(mitchell_state::spangbl_adpcm_int)); // controls music as well as ADCPM rate + m_msm->set_prescaler_selector(msm5205_device::S96_4B); + m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); LS157(config, m_adpcm_select, 0); m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(mitchell_state::pangba) +void mitchell_state::pangba(machine_config &config) +{ spangbl(config); - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(pangba_sound_map) + m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::pangba_sound_map); - MCFG_DEVICE_REPLACE("ymsnd", YM3812, 4000000) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(mitchell_state::mstworld) + YM3812(config.replace(), "ymsnd", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0); +} +void mitchell_state::mstworld(machine_config &config) +{ /* basic machine hardware */ /* it doesn't glitch with the clock speed set to 4x normal, however this is incorrect.. the interrupt handling (and probably various irq flags / vbl flags handling etc.) is more likely wrong.. the game appears to run too fast anyway .. */ - MCFG_DEVICE_ADD("maincpu", Z80, 6000000*4) - MCFG_DEVICE_PROGRAM_MAP(mitchell_map) - MCFG_DEVICE_IO_MAP(mstworld_io_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mitchell_state, irq0_line_hold) + Z80(config, m_maincpu, 6000000*4); + m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map); + m_maincpu->set_addrmap(AS_IO, &mitchell_state::mstworld_io_map); + m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); + m_maincpu->set_vblank_int("screen", FUNC(mitchell_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80,6000000) /* 6 MHz? */ - MCFG_DEVICE_PROGRAM_MAP(mstworld_sound_map) + Z80(config, m_audiocpu, 6000000); /* 6 MHz? */ + m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::mstworld_sound_map); MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mstworld) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_mstworld); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) @@ -1352,33 +1346,31 @@ MACHINE_CONFIG_START(mitchell_state::mstworld) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("oki", OKIM6295, 990000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(mitchell_state::marukin) + OKIM6295(config, m_oki, 990000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified + m_oki->add_route(ALL_OUTPUTS, "mono", 0.50); +} +void mitchell_state::marukin(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(mitchell_map) - MCFG_DEVICE_IO_MAP(mitchell_io_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) + Z80(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map); + m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map); + m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); + TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1); - EEPROM_93C46_16BIT(config, "eeprom"); + EEPROM_93C46_16BIT(config, m_eeprom); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_marukin) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_marukin); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) @@ -1386,12 +1378,12 @@ MACHINE_CONFIG_START(mitchell_state::marukin) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* verified on pcb */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) + OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb */ + m_oki->add_route(ALL_OUTPUTS, "mono", 0.30); - MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(16'000'000)/4) /* verified on pcb */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */ + ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); +} /* @@ -1411,28 +1403,27 @@ Vsync is 59.09hz */ -MACHINE_CONFIG_START(mitchell_state::pkladiesbl) - +void mitchell_state::pkladiesbl(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(mitchell_map) - MCFG_DEVICE_IO_MAP(mitchell_io_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) + Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map); + m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map); + m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); + TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1); - EEPROM_93C46_16BIT(config, "eeprom"); + EEPROM_93C46_16BIT(config, m_eeprom); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.09) /* verified on pcb */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pkladiesbl) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(59.09); /* verified on pcb */ + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_pkladiesbl); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) @@ -1440,12 +1431,12 @@ MACHINE_CONFIG_START(mitchell_state::pkladiesbl) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* It should be a OKIM5205 with a 384khz resonator */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* It should be a OKIM5205 with a 384khz resonator */ + m_oki->add_route(ALL_OUTPUTS, "mono", 0.50); - MCFG_DEVICE_ADD("ymsnd", YM2413, 3750000) /* verified on pcb, read the comments */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + ym2413_device &ymsnd(YM2413(config, "ymsnd", 3750000)); /* verified on pcb, read the comments */ + ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); +} /************************************* * diff --git a/src/mame/drivers/mjkjidai.cpp b/src/mame/drivers/mjkjidai.cpp index 8470d46d095..9fc201925d7 100644 --- a/src/mame/drivers/mjkjidai.cpp +++ b/src/mame/drivers/mjkjidai.cpp @@ -299,11 +299,11 @@ void mjkjidai_state::machine_reset() MACHINE_CONFIG_START(mjkjidai_state::mjkjidai) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,10000000/2) /* 5 MHz ??? */ - MCFG_DEVICE_PROGRAM_MAP(mjkjidai_map) - MCFG_DEVICE_IO_MAP(mjkjidai_io_map) + Z80(config, m_maincpu, 10000000/2); /* 5 MHz ??? */ + m_maincpu->set_addrmap(AS_PROGRAM, &mjkjidai_state::mjkjidai_map); + m_maincpu->set_addrmap(AS_IO, &mjkjidai_state::mjkjidai_io_map); - NVRAM(config, "nvram", nvram_device::DEFAULT_NONE); + NVRAM(config, m_nvram, nvram_device::DEFAULT_NONE); i8255_device &ppi1(I8255A(config, "ppi1")); ppi1.in_pa_callback().set_ioport("KEYBOARD"); @@ -317,34 +317,29 @@ MACHINE_CONFIG_START(mjkjidai_state::mjkjidai) ppi2.in_pc_callback().set_ioport("DSW2"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(3*8, 61*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(mjkjidai_state, screen_update_mjkjidai) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mjkjidai_state, vblank_irq)) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(64*8, 32*8); + screen.set_visarea(3*8, 61*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(mjkjidai_state::screen_update_mjkjidai)); + screen.set_palette(m_palette); + screen.screen_vblank().set(FUNC(mjkjidai_state::vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mjkjidai) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_mjkjidai); PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 0x100); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("sn1", SN76489, 10000000/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - - MCFG_DEVICE_ADD("sn2", SN76489, 10000000/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, mjkjidai_state, adpcm_int)) - MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END - + SN76489(config, "sn1", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50); + SN76489(config, "sn2", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50); + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(mjkjidai_state::adpcm_int)); + m_msm->set_prescaler_selector(msm5205_device::S64_4B); /* 6kHz */ + m_msm->add_route(ALL_OUTPUTS, "mono", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/ojankohs.cpp b/src/mame/drivers/ojankohs.cpp index 07afdc92e42..4b7dcf5c11f 100644 --- a/src/mame/drivers/ojankohs.cpp +++ b/src/mame/drivers/ojankohs.cpp @@ -712,25 +712,26 @@ void ojankohs_state::machine_reset() m_screen_refresh = 0; } -MACHINE_CONFIG_START(ojankohs_state::ojankohs) - +void ojankohs_state::ojankohs(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(ojankohs_map) - MCFG_DEVICE_IO_MAP(ojankohs_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold) + Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankohs_map); + m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankohs_io_map); + m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold)); MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs) + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(512, 512) - MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1) - MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(512, 512); + m_screen->set_visarea(0, 288-1, 0, 224-1); + m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs); PALETTE(config, m_palette).set_entries(1024); @@ -747,31 +748,32 @@ MACHINE_CONFIG_START(ojankohs_state::ojankohs) aysnd.port_b_read_callback().set(FUNC(ojankohs_state::ojankohs_dipsw2_r)); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(ojankohs_state::ojankoy) + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); +} +void ojankohs_state::ojankoy(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(ojankoy_map) - MCFG_DEVICE_IO_MAP(ojankoy_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold) + Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoy_map); + m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankoy_io_map); + m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold)); MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoy) + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(512, 512) - MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1) - MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(512, 512); + m_screen->set_visarea(0, 288-1, 0, 224-1); + m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs); PALETTE(config, m_palette, FUNC(ojankohs_state::ojankoy_palette), 1024); @@ -786,31 +788,32 @@ MACHINE_CONFIG_START(ojankohs_state::ojankoy) aysnd.port_b_read_callback().set_ioport("dsw2"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(ojankohs_state::ccasino) + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); +} +void ojankohs_state::ccasino(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(ojankoy_map) - MCFG_DEVICE_IO_MAP(ccasino_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold) + Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoy_map); + m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ccasino_io_map); + m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold)); MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs) + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(512, 512) - MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1) - MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(512, 512); + m_screen->set_visarea(0, 288-1, 0, 224-1); + m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs); PALETTE(config, m_palette).set_entries(1024); @@ -827,31 +830,32 @@ MACHINE_CONFIG_START(ojankohs_state::ccasino) aysnd.port_b_read_callback().set_ioport("dsw2"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(ojankohs_state::ojankoc) + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); +} +void ojankohs_state::ojankoc(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,8000000/2) /* 4.00 MHz */ - MCFG_DEVICE_PROGRAM_MAP(ojankoc_map) - MCFG_DEVICE_IO_MAP(ojankoc_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold) + Z80(config, m_maincpu, 8000000/2); /* 4.00 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoc_map); + m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankoc_io_map); + m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold)); MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoc) + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 248-1) - MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankoc) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0, 256-1, 8, 248-1); + m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankoc)); + m_screen->set_palette(m_palette); PALETTE(config, m_palette).set_entries(16); @@ -865,11 +869,11 @@ MACHINE_CONFIG_START(ojankohs_state::ojankoc) aysnd.port_b_read_callback().set_ioport("dsw2"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); - MCFG_DEVICE_ADD("msm", MSM5205, 8000000/22) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 8000000/22); + m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); +} ROM_START( ojankohs ) diff --git a/src/mame/drivers/opwolf.cpp b/src/mame/drivers/opwolf.cpp index 71f6202ef6c..4a07fb1a2fb 100644 --- a/src/mame/drivers/opwolf.cpp +++ b/src/mame/drivers/opwolf.cpp @@ -933,35 +933,35 @@ TIMER_DEVICE_CALLBACK_MEMBER(opwolf_state::cchip_irq_clear_cb) // MACHINE DEFINTIONS //************************************************************************** -MACHINE_CONFIG_START(opwolf_state::opwolf) - +void opwolf_state::opwolf(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz */ - MCFG_DEVICE_PROGRAM_MAP(opwolf_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, interrupt) + M68000(config, m_maincpu, CPU_CLOCK); /* 8 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_map); + m_maincpu->set_vblank_int("screen", FUNC(opwolf_state::interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK ) /* 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP(opwolf_sound_z80_map) + Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 4 MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_sound_z80_map); TAITO_CCHIP(config, m_cchip, 12_MHz_XTAL); /* 12MHz measured on pin 20 */ m_cchip->in_pb_callback().set_ioport("IN0"); m_cchip->in_pc_callback().set_ioport("IN1"); m_cchip->out_pb_callback().set(FUNC(opwolf_state::counters_w)); - MCFG_TIMER_DRIVER_ADD("cchip_irq_clear", opwolf_state, cchip_irq_clear_cb) + TIMER(config, "cchip_irq_clear").configure_generic(FUNC(opwolf_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 */ + config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ MCFG_MACHINE_RESET_OVERRIDE(opwolf_state,opwolf) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(40*8, 32*8); + screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf)); + screen.set_palette("palette"); GFXDECODE(config, "gfxdecode", "palette", gfx_opwolf); PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048); @@ -984,58 +984,58 @@ MACHINE_CONFIG_START(opwolf_state::opwolf) ymsnd.add_route(0, "lspeaker", 1.0); ymsnd.add_route(1, "rspeaker", 1.0); - MCFG_DEVICE_ADD("msm0", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + MSM5205(config, m_msm[0], 384000); + m_msm[0]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<0>)); + m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */ + m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); - MCFG_DEVICE_ADD("msm1", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<1>)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + MSM5205(config, m_msm[1], 384000); + m_msm[1]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<1>)); + m_msm[1]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */ + m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); pc060ha_device &ciu(PC060HA(config, "ciu", 0)); ciu.set_master_tag(m_maincpu); ciu.set_slave_tag(m_audiocpu); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(opwolf_state::opwolfp) +void opwolf_state::opwolfp(machine_config &config) +{ opwolf(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") /* 8 MHz */ - MCFG_DEVICE_PROGRAM_MAP(opwolfp_map) + m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolfp_map); - MCFG_DEVICE_REMOVE("cchip") - MCFG_DEVICE_REMOVE("cchip_irq_clear") -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(opwolf_state::opwolfb) /* OSC clocks unknown for the bootleg, but changed to match original sets */ + config.device_remove("cchip"); + config.device_remove("cchip_irq_clear"); +} +void opwolf_state::opwolfb(machine_config &config) /* OSC clocks unknown for the bootleg, but changed to match original sets */ +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz ??? */ - MCFG_DEVICE_PROGRAM_MAP(opwolfb_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, irq5_line_hold) + M68000(config, m_maincpu, CPU_CLOCK); /* 8 MHz ??? */ + m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolfb_map); + m_maincpu->set_vblank_int("screen", FUNC(opwolf_state::irq5_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK ) /* 4 MHz ??? */ - MCFG_DEVICE_PROGRAM_MAP(opwolf_sound_z80_map) + Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 4 MHz ??? */ + m_audiocpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_sound_z80_map); - MCFG_DEVICE_ADD("sub", Z80, SOUND_CPU_CLOCK ) /* 4 MHz ??? */ - MCFG_DEVICE_PROGRAM_MAP(opwolfb_sub_z80_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, irq0_line_hold) + z80_device &sub(Z80(config, "sub", SOUND_CPU_CLOCK)); /* 4 MHz ??? */ + sub.set_addrmap(AS_PROGRAM, &opwolf_state::opwolfb_sub_z80_map); + sub.set_vblank_int("screen", FUNC(opwolf_state::irq0_line_hold)); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ + config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(40*8, 32*8); + screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf)); + screen.set_palette("palette"); GFXDECODE(config, "gfxdecode", "palette", gfx_opwolfb); PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048); @@ -1058,22 +1058,22 @@ MACHINE_CONFIG_START(opwolf_state::opwolfb) /* OSC clocks unknown for the bootle ymsnd.add_route(0, "lspeaker", 1.0); ymsnd.add_route(1, "rspeaker", 1.0); - MCFG_DEVICE_ADD("msm0", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + MSM5205(config, m_msm[0], 384000); + m_msm[0]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<0>)); + m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */ + m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); - MCFG_DEVICE_ADD("msm1", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<1>)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + MSM5205(config, m_msm[1], 384000); + m_msm[1]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<1>)); + m_msm[1]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */ + m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); pc060ha_device &ciu(PC060HA(config, "ciu", 0)); ciu.set_master_tag(m_maincpu); ciu.set_slave_tag(m_audiocpu); -MACHINE_CONFIG_END +} //************************************************************************** diff --git a/src/mame/drivers/pachifev.cpp b/src/mame/drivers/pachifev.cpp index dda8e0b9c67..5296a109a4e 100644 --- a/src/mame/drivers/pachifev.cpp +++ b/src/mame/drivers/pachifev.cpp @@ -350,8 +350,8 @@ void pachifev_state::machine_start() save_item(NAME(m_cnt)); } -MACHINE_CONFIG_START(pachifev_state::pachifev) - +void pachifev_state::pachifev(machine_config &config) +{ // CPU TMS9995, standard variant; no line connections TMS9995(config, m_maincpu, XTAL(12'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &pachifev_state::pachifev_map); @@ -368,16 +368,14 @@ MACHINE_CONFIG_START(pachifev_state::pachifev) /* sound hardware */ SPEAKER(config, "mono").front_center(); #if USE_MSM - MCFG_DEVICE_ADD("adpcm", MSM5205, XTAL(384'000)) /* guess */ - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pachifev_state,pf_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) + msm5205_device &adpcm(MSM5205(config, "adpcm", XTAL(384'000))); /* guess */ + adpcm.vck_legacy_callback().set(FUNC(pachifev_state::pf_adpcm_int)); /* interrupt function */ + adpcm.set_prescaler_selector(msm5205_device::S48_4B); /* 8kHz */ + adpcm.add_route(ALL_OUTPUTS, "mono", 1.00); #endif - MCFG_DEVICE_ADD("y2404_1", Y2404, XTAL(10'738'635)/3) /* guess */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_DEVICE_ADD("y2404_2", Y2404, XTAL(10'738'635)/3) /* guess */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) -MACHINE_CONFIG_END + Y2404(config, "y2404_1", XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 0.30); /* guess */ + Y2404(config, "y2404_2", XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 0.30); /* guess */ +} ROM_START( pachifev ) ROM_REGION( 0x10000, "maincpu", 0 ) diff --git a/src/mame/drivers/pcktgal.cpp b/src/mame/drivers/pcktgal.cpp index 405055488ab..d91971d8781 100644 --- a/src/mame/drivers/pcktgal.cpp +++ b/src/mame/drivers/pcktgal.cpp @@ -223,26 +223,26 @@ void pcktgal_state::machine_start() save_item(NAME(m_toggle)); } -MACHINE_CONFIG_START(pcktgal_state::pcktgal) - +void pcktgal_state::pcktgal(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502, 2000000) - MCFG_DEVICE_PROGRAM_MAP(pcktgal_map) + M6502(config, m_maincpu, 2000000); + m_maincpu->set_addrmap(AS_PROGRAM, &pcktgal_state::pcktgal_map); - MCFG_DEVICE_ADD("audiocpu", DECO_222, 1500000) - MCFG_DEVICE_PROGRAM_MAP(pcktgal_sound_map) - /* IRQs are caused by the ADPCM chip */ - /* NMIs are caused by the main CPU */ + DECO_222(config, m_audiocpu, 1500000); + m_audiocpu->set_addrmap(AS_PROGRAM, &pcktgal_state::pcktgal_sound_map); + /* IRQs are caused by the ADPCM chip */ + /* NMIs are caused by the main CPU */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgal) - MCFG_SCREEN_PALETTE(m_palette) - MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(pcktgal_state::screen_update_pcktgal)); + screen.set_palette(m_palette); + screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI); GFXDECODE(config, m_gfxdecode, "palette", gfx_pcktgal); PALETTE(config, m_palette, FUNC(pcktgal_state::pcktgal_palette), 512); @@ -256,32 +256,28 @@ MACHINE_CONFIG_START(pcktgal_state::pcktgal) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ym1", YM2203, 1500000) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) + YM2203(config, "ym1", 1500000).add_route(ALL_OUTPUTS, "mono", 0.60); + YM3812(config, "ym2", 3000000).add_route(ALL_OUTPUTS, "mono", 1.00); - MCFG_DEVICE_ADD("ym2", YM3812, 3000000) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(pcktgal_state::adpcm_int)); + m_msm->set_prescaler_selector(msm5205_device::S48_4B); // 8kHz + m_msm->add_route(ALL_OUTPUTS, "mono", 0.70); +} - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pcktgal_state, adpcm_int)) // interrupt function - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8kHz - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(pcktgal_state::bootleg) +void pcktgal_state::bootleg(machine_config &config) +{ pcktgal(config); - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_bootleg) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgalb) + m_gfxdecode->set_info(gfx_bootleg); + subdevice("screen")->set_screen_update(FUNC(pcktgal_state::screen_update_pcktgalb)); MACHINE_CONFIG_END -MACHINE_CONFIG_START(pcktgal_state::pcktgal2) +void pcktgal_state::pcktgal2(machine_config &config) +{ pcktgal(config); - MCFG_DEVICE_REMOVE("audiocpu") - MCFG_DEVICE_ADD("audiocpu", M6502, 1500000) /* doesn't use the encrypted 222 */ - MCFG_DEVICE_PROGRAM_MAP(pcktgal_sound_map) -MACHINE_CONFIG_END + M6502(config.replace(), m_audiocpu, 1500000); /* doesn't use the encrypted 222 */ + m_audiocpu->set_addrmap(AS_PROGRAM, &pcktgal_state::pcktgal_sound_map); +} /***************************************************************************/ diff --git a/src/mame/drivers/rastan.cpp b/src/mame/drivers/rastan.cpp index 55e0f454b82..5e9836a71cf 100644 --- a/src/mame/drivers/rastan.cpp +++ b/src/mame/drivers/rastan.cpp @@ -365,28 +365,28 @@ void rastan_state::machine_reset() } -MACHINE_CONFIG_START(rastan_state::rastan) - +void rastan_state::rastan(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(rastan_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rastan_state, irq5_line_hold) + M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &rastan_state::rastan_map); + m_maincpu->set_vblank_int("screen", FUNC(rastan_state::irq5_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(rastan_s_map) + Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &rastan_state::rastan_s_map); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ + config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_DRIVER(rastan_state, screen_update_rastan) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(40*8, 32*8); + screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(rastan_state::screen_update_rastan)); + screen.set_palette("palette"); GFXDECODE(config, "gfxdecode", "palette", gfx_rastan); PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048); @@ -408,18 +408,18 @@ MACHINE_CONFIG_START(rastan_state::rastan) ymsnd.add_route(0, "mono", 0.50); ymsnd.add_route(1, "mono", 0.50); - MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) /* verified on pcb */ - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, rastan_state, rastan_msm5205_vck)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) + MSM5205(config, m_msm, XTAL(384'000)); /* verified on pcb */ + m_msm->vck_legacy_callback().set(FUNC(rastan_state::rastan_msm5205_vck)); /* VCK function */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.60); LS157(config, m_adpcm_sel, 0); - m_adpcm_sel->out_callback().set("msm", FUNC(msm5205_device::data_w)); + m_adpcm_sel->out_callback().set(m_msm, FUNC(msm5205_device::data_w)); pc060ha_device &ciu(PC060HA(config, "ciu", 0)); ciu.set_master_tag(m_maincpu); ciu.set_slave_tag(m_audiocpu); -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/rmhaihai.cpp b/src/mame/drivers/rmhaihai.cpp index be4b0356e2b..7b4fd645550 100644 --- a/src/mame/drivers/rmhaihai.cpp +++ b/src/mame/drivers/rmhaihai.cpp @@ -71,7 +71,6 @@ protected: void rmhaihai_io_map(address_map &map); void rmhaihai_map(address_map &map); -private: required_device m_maincpu; required_device m_msm; required_device m_gfxdecode; @@ -504,27 +503,26 @@ static GFXDECODE_START( gfx_themj ) GFXDECODE_END -MACHINE_CONFIG_START(rmhaihai_state::rmhaihai) - +void rmhaihai_state::rmhaihai(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",Z80,20000000/4) /* 5 MHz ??? */ - MCFG_DEVICE_PROGRAM_MAP(rmhaihai_map) - MCFG_DEVICE_IO_MAP(rmhaihai_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rmhaihai_state, irq0_line_hold) + Z80(config, m_maincpu, 20000000/4); /* 5 MHz ??? */ + m_maincpu->set_addrmap(AS_PROGRAM, &rmhaihai_state::rmhaihai_map); + m_maincpu->set_addrmap(AS_IO, &rmhaihai_state::rmhaihai_io_map); + m_maincpu->set_vblank_int("screen", FUNC(rmhaihai_state::irq0_line_hold)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(4*8, 60*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(rmhaihai_state, screen_update) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rmhaihai) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(64*8, 32*8); + screen.set_visarea(4*8, 60*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(rmhaihai_state::screen_update)); + screen.set_palette("palette"); + GFXDECODE(config, m_gfxdecode, "palette", gfx_rmhaihai); PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 0x100); /* sound hardware */ @@ -535,38 +533,34 @@ MACHINE_CONFIG_START(rmhaihai_state::rmhaihai) aysnd.port_b_read_callback().set_ioport("DSW1"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.30); - MCFG_DEVICE_ADD("msm", MSM5205, 500000) - MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 500000); + m_msm->set_prescaler_selector(msm5205_device::SEX_4B); + m_msm->add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(rmhaisei_state::rmhaisei) +void rmhaisei_state::rmhaisei(machine_config &config) +{ + rmhaihai(config); + + /* video hardware */ + m_gfxdecode->set_info(gfx_themj); + subdevice("palette")->set_entries(0x200); +} + +void themj_state::themj(machine_config &config) +{ rmhaihai(config); /* basic machine hardware */ + m_maincpu->set_addrmap(AS_PROGRAM, &themj_state::themj_map); + m_maincpu->set_addrmap(AS_IO, &themj_state::themj_io_map); + + config.device_remove("nvram"); /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_themj) - MCFG_DEVICE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(0x200) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(themj_state::themj) - rmhaihai(config); - - /* basic machine hardware */ - - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(themj_map) - MCFG_DEVICE_IO_MAP(themj_io_map) - - MCFG_DEVICE_REMOVE("nvram") - - /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_themj) - MCFG_DEVICE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(0x200) -MACHINE_CONFIG_END + m_gfxdecode->set_info(gfx_themj); + subdevice("palette")->set_entries(0x200); +} diff --git a/src/mame/drivers/sf.cpp b/src/mame/drivers/sf.cpp index bd8e1ffd660..b70929c4f17 100644 --- a/src/mame/drivers/sf.cpp +++ b/src/mame/drivers/sf.cpp @@ -530,32 +530,31 @@ void sf_state::machine_reset() m_fgscroll = 0; } -MACHINE_CONFIG_START(sf_state::sfan) - +void sf_state::sfan(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000)) - MCFG_DEVICE_PROGRAM_MAP(sfan_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sf_state, irq1_line_hold) + M68000(config, m_maincpu, XTAL(8'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &sf_state::sfan_map); + m_maincpu->set_vblank_int("screen", FUNC(sf_state::irq1_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) /* ? xtal is 3.579545MHz */ - MCFG_DEVICE_PROGRAM_MAP(sound_map) + Z80(config, m_audiocpu, XTAL(3'579'545)); /* ? xtal is 3.579545MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &sf_state::sound_map); - MCFG_DEVICE_ADD("audio2", Z80, XTAL(3'579'545)) /* ? xtal is 3.579545MHz */ - MCFG_DEVICE_PROGRAM_MAP(sound2_map) - MCFG_DEVICE_IO_MAP(sound2_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(sf_state, irq0_line_hold, 8000) // ? + z80_device &audio2(Z80(config, "audio2", XTAL(3'579'545))); /* ? xtal is 3.579545MHz */ + audio2.set_addrmap(AS_PROGRAM, &sf_state::sound2_map); + audio2.set_addrmap(AS_IO, &sf_state::sound2_io_map); + audio2.set_periodic_int(FUNC(sf_state::irq0_line_hold), attotime::from_hz(8000)); // ? /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(sf_state, screen_update) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sf) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(64*8, 32*8); + screen.set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(sf_state::screen_update)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_sf); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024); /* sound hardware */ @@ -569,43 +568,34 @@ MACHINE_CONFIG_START(sf_state::sfan) ymsnd.add_route(0, "lspeaker", 0.60); ymsnd.add_route(1, "rspeaker", 0.60); - MCFG_DEVICE_ADD("msm1", MSM5205, 384000) - MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + MSM5205(config, m_msm[0], 384000); + m_msm[0]->set_prescaler_selector(msm5205_device::SEX_4B); /* 8KHz playback ? */ + m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); - MCFG_DEVICE_ADD("msm2", MSM5205, 384000) - MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) -MACHINE_CONFIG_END + MSM5205(config, m_msm[1], 384000); + m_msm[1]->set_prescaler_selector(msm5205_device::SEX_4B); /* 8KHz playback ? */ + m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); +} - -MACHINE_CONFIG_START(sf_state::sfus) +void sf_state::sfus(machine_config &config) +{ sfan(config); + m_maincpu->set_addrmap(AS_PROGRAM, &sf_state::sfus_map); +} - /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(sfus_map) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(sf_state::sfjp) +void sf_state::sfjp(machine_config &config) +{ sfan(config); + m_maincpu->set_addrmap(AS_PROGRAM, &sf_state::sfjp_map); +} - /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(sfjp_map) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(sf_state::sfp) +void sf_state::sfp(machine_config &config) +{ sfan(config); - - /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sf_state, irq6_line_hold) -MACHINE_CONFIG_END + m_maincpu->set_vblank_int("screen", FUNC(sf_state::irq6_line_hold)); +} diff --git a/src/mame/drivers/sothello.cpp b/src/mame/drivers/sothello.cpp index 30956b73eb0..f7734227481 100644 --- a/src/mame/drivers/sothello.cpp +++ b/src/mame/drivers/sothello.cpp @@ -354,21 +354,21 @@ void sothello_state::machine_reset() m_msm_data = 0; } -MACHINE_CONFIG_START(sothello_state::sothello) - +void sothello_state::sothello(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(21'477'272) / 6) - MCFG_DEVICE_PROGRAM_MAP(maincpu_mem_map) - MCFG_DEVICE_IO_MAP(maincpu_io_map) + Z80(config, m_maincpu, XTAL(21'477'272) / 6); + m_maincpu->set_addrmap(AS_PROGRAM, &sothello_state::maincpu_mem_map); + m_maincpu->set_addrmap(AS_IO, &sothello_state::maincpu_io_map); - MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(21'477'272) / 6) - MCFG_DEVICE_PROGRAM_MAP(soundcpu_mem_map) - MCFG_DEVICE_IO_MAP(soundcpu_io_map) + Z80(config, m_soundcpu, XTAL(21'477'272) / 6); + m_soundcpu->set_addrmap(AS_PROGRAM, &sothello_state::soundcpu_mem_map); + m_soundcpu->set_addrmap(AS_IO, &sothello_state::soundcpu_io_map); - MCFG_DEVICE_ADD("subcpu", MC6809, XTAL(8'000'000)) // divided by 4 internally - MCFG_DEVICE_PROGRAM_MAP(subcpu_mem_map) + MC6809(config, m_subcpu, XTAL(8'000'000)); // divided by 4 internally + m_subcpu->set_addrmap(AS_PROGRAM, &sothello_state::subcpu_mem_map); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) + config.m_minimum_quantum = attotime::from_hz(600); /* video hardware */ v9938_device &v9938(V9938(config, "v9938", XTAL(21'477'272))); @@ -391,11 +391,11 @@ MACHINE_CONFIG_START(sothello_state::sothello) ymsnd.add_route(2, "mono", 0.25); ymsnd.add_route(3, "mono", 0.50); - MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, sothello_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* changed on the fly */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + MSM5205(config, m_msm, XTAL(384'000)); + m_msm->vck_legacy_callback().set(FUNC(sothello_state::adpcm_int)); /* interrupt function */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* changed on the fly */ + m_msm->add_route(ALL_OUTPUTS, "mono", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/srmp2.cpp b/src/mame/drivers/srmp2.cpp index d68744cda27..6af7a1446ce 100644 --- a/src/mame/drivers/srmp2.cpp +++ b/src/mame/drivers/srmp2.cpp @@ -1135,13 +1135,13 @@ static GFXDECODE_START( gfx_srmp3 ) GFXDECODE_END -MACHINE_CONFIG_START(srmp2_state::srmp2) - +void srmp2_state::srmp2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ - MCFG_DEVICE_PROGRAM_MAP(srmp2_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp2_state, irq4_line_assert) - MCFG_DEVICE_PERIODIC_INT_DRIVER(srmp2_state, irq2_line_assert, 15*60) /* Interrupt times is not understood */ + M68000(config, m_maincpu, 16000000/2); /* 8.00 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::srmp2_map); + m_maincpu->set_vblank_int("screen", FUNC(srmp2_state::irq4_line_assert)); + m_maincpu->set_periodic_int(FUNC(srmp2_state::irq2_line_assert), attotime::from_hz(15*60)); /* Interrupt times is not understood */ MCFG_MACHINE_START_OVERRIDE(srmp2_state,srmp2) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -1150,13 +1150,13 @@ MACHINE_CONFIG_START(srmp2_state::srmp2) m_seta001->set_gfxdecode_tag("gfxdecode"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(464, 256-16) - MCFG_SCREEN_VISIBLE_AREA(16, 464-1, 8, 256-1-24) - MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp2) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(464, 256-16); + screen.set_visarea(16, 464-1, 8, 256-1-24); + screen.set_screen_update(FUNC(srmp2_state::screen_update_srmp2)); + screen.set_palette("palette"); GFXDECODE(config, "gfxdecode", "palette", gfx_srmp2); PALETTE(config, "palette", FUNC(srmp2_state::srmp2_palette)).set_format(palette_device::xRGB_555, 1024); // sprites only @@ -1169,22 +1169,19 @@ MACHINE_CONFIG_START(srmp2_state::srmp2) aysnd.port_b_read_callback().set_ioport("DSW1"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.40); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, srmp2_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(srmp2_state::srmp3) + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(srmp2_state::adpcm_int)); /* IRQ handler */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.45); +} +void srmp2_state::srmp3(machine_config &config) +{ /* basic machine hardware */ - - MCFG_DEVICE_ADD("maincpu", Z80, 3500000) /* 3.50 MHz ? */ - // 4000000, /* 4.00 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(srmp3_map) - MCFG_DEVICE_IO_MAP(srmp3_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp2_state, irq0_line_assert) + Z80(config, m_maincpu, 3500000); /* 3.50 MHz? or 4.00 MHz? */ + m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::srmp3_map); + m_maincpu->set_addrmap(AS_IO, &srmp2_state::srmp3_io_map); + m_maincpu->set_vblank_int("screen", FUNC(srmp2_state::irq0_line_assert)); MCFG_MACHINE_START_OVERRIDE(srmp2_state,srmp3) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -1194,13 +1191,13 @@ MACHINE_CONFIG_START(srmp2_state::srmp3) m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(400, 256-16) - MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 8, 256-1-24) - MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp3) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(400, 256-16); + screen.set_visarea(16, 400-1, 8, 256-1-24); + screen.set_screen_update(FUNC(srmp2_state::screen_update_srmp3)); + screen.set_palette("palette"); GFXDECODE(config, "gfxdecode", "palette", gfx_srmp3); PALETTE(config, "palette", FUNC(srmp2_state::srmp3_palette)).set_format(palette_device::xRGB_555, 512); // sprites only @@ -1213,29 +1210,29 @@ MACHINE_CONFIG_START(srmp2_state::srmp3) aysnd.port_b_read_callback().set_ioport("DSW1"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.20); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, srmp2_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(srmp2_state::adpcm_int)); /* IRQ handler */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.45); +} -MACHINE_CONFIG_START(srmp2_state::rmgoldyh) +void srmp2_state::rmgoldyh(machine_config &config) +{ srmp3(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(rmgoldyh_map) - MCFG_DEVICE_IO_MAP(rmgoldyh_io_map) + m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::rmgoldyh_map); + m_maincpu->set_addrmap(AS_IO, &srmp2_state::rmgoldyh_io_map); MCFG_MACHINE_START_OVERRIDE(srmp2_state,rmgoldyh) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(srmp2_state::mjyuugi) +} +void srmp2_state::mjyuugi(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ - MCFG_DEVICE_PROGRAM_MAP(mjyuugi_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp2_state, irq4_line_assert) - MCFG_DEVICE_PERIODIC_INT_DRIVER(srmp2_state, irq2_line_assert, 15*60) /* Interrupt times is not understood */ + M68000(config, m_maincpu, 16000000/2); /* 8.00 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::mjyuugi_map); + m_maincpu->set_vblank_int("screen", FUNC(srmp2_state::irq4_line_assert)); + m_maincpu->set_periodic_int(FUNC(srmp2_state::irq2_line_assert), attotime::from_hz(15*60)); /* Interrupt times is not understood */ MCFG_MACHINE_START_OVERRIDE(srmp2_state,mjyuugi) @@ -1246,13 +1243,13 @@ MACHINE_CONFIG_START(srmp2_state::mjyuugi) m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(400, 256-16) - MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 0, 256-1-16) - MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_mjyuugi) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(400, 256-16); + screen.set_visarea(16, 400-1, 0, 256-1-16); + screen.set_screen_update(FUNC(srmp2_state::screen_update_mjyuugi)); + screen.set_palette("palette"); GFXDECODE(config, "gfxdecode", "palette", gfx_srmp3); PALETTE(config, "palette").set_format(palette_device::xRGB_555, 512); // sprites only @@ -1265,11 +1262,11 @@ MACHINE_CONFIG_START(srmp2_state::mjyuugi) aysnd.port_b_read_callback().set_ioport("DSW1"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.20); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, srmp2_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(srmp2_state::adpcm_int)); /* IRQ handler */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.45); +} diff --git a/src/mame/drivers/suprgolf.cpp b/src/mame/drivers/suprgolf.cpp index 8c179c2d359..4a9e0b7ed45 100644 --- a/src/mame/drivers/suprgolf.cpp +++ b/src/mame/drivers/suprgolf.cpp @@ -496,13 +496,13 @@ void suprgolf_state::machine_reset() #define MASTER_CLOCK XTAL(12'000'000) -MACHINE_CONFIG_START(suprgolf_state::suprgolf) - +void suprgolf_state::suprgolf(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,MASTER_CLOCK/2) /* guess */ - MCFG_DEVICE_PROGRAM_MAP(suprgolf_map) - MCFG_DEVICE_IO_MAP(io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", suprgolf_state, irq0_line_hold) + Z80(config, m_maincpu, MASTER_CLOCK/2); /* guess */ + m_maincpu->set_addrmap(AS_PROGRAM, &suprgolf_state::suprgolf_map); + m_maincpu->set_addrmap(AS_IO, &suprgolf_state::io_map); + m_maincpu->set_vblank_int("screen", FUNC(suprgolf_state::irq0_line_hold)); i8255_device &ppi0(I8255A(config, "ppi8255_0")); ppi0.in_pa_callback().set(FUNC(suprgolf_state::p1_r)); @@ -517,16 +517,16 @@ MACHINE_CONFIG_START(suprgolf_state::suprgolf) ppi1.out_pc_callback().set(FUNC(suprgolf_state::vregs_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191) - MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(256, 256); + screen.set_visarea(0, 255, 0, 191); + screen.set_screen_update(FUNC(suprgolf_state::screen_update)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_suprgolf) - MCFG_PALETTE_ADD("palette", 0x800) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_suprgolf); + PALETTE(config, m_palette).set_entries(0x800); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -539,11 +539,11 @@ MACHINE_CONFIG_START(suprgolf_state::suprgolf) ymsnd.port_b_write_callback().set(FUNC(suprgolf_state::writeB)); ymsnd.add_route(ALL_OUTPUTS, "mono", 0.5); - MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) /* guess */ - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, suprgolf_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + MSM5205(config, m_msm, XTAL(384'000)); /* guess */ + m_msm->vck_legacy_callback().set(FUNC(suprgolf_state::adpcm_int)); /* interrupt function */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 4KHz 4-bit */ + m_msm->add_route(ALL_OUTPUTS, "mono", 1.0); +} ROM_START( suprgolf ) ROM_REGION( 0x10000, "maincpu", 0 ) // on the YUVO-702A main board diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp index 06609402562..ce527228ade 100644 --- a/src/mame/drivers/system16.cpp +++ b/src/mame/drivers/system16.cpp @@ -2060,18 +2060,18 @@ GFXDECODE_END * *************************************/ -MACHINE_CONFIG_START(segas1x_bootleg_state::z80_ym2151) - - MCFG_DEVICE_ADD("soundcpu", Z80, 4000000) - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_IO_MAP(sound_io_map) +void segas1x_bootleg_state::z80_ym2151(machine_config &config) +{ + Z80(config, m_soundcpu, 4000000); + m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sound_map); + m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::sound_io_map); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32); -MACHINE_CONFIG_END +} WRITE_LINE_MEMBER(segas1x_bootleg_state::sound_cause_nmi) { @@ -2098,56 +2098,58 @@ void segas1x_bootleg_state::z80_ym2151_upd7759(machine_config &config) m_upd7759->add_route(ALL_OUTPUTS, "rspeaker", 0.48); } -MACHINE_CONFIG_START(segas1x_bootleg_state::datsu_ym2151_msm5205) +void segas1x_bootleg_state::datsu_ym2151_msm5205(machine_config &config) +{ /* TODO: - other games might use this sound configuration - speaker is likely to be mono for the bootlegs, not stereo. - check msm5205 frequency. */ - MCFG_DEVICE_ADD("soundcpu",Z80, 4000000) - MCFG_DEVICE_PROGRAM_MAP(tturfbl_sound_map) - MCFG_DEVICE_IO_MAP(tturfbl_sound_io_map) + Z80(config, m_soundcpu, 4000000); + m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tturfbl_sound_map); + m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::tturfbl_sound_io_map); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32); - MCFG_DEVICE_ADD("5205", MSM5205, 220000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, tturfbl_msm5205_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 220000); + m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::tturfbl_msm5205_callback)); + m_msm->set_prescaler_selector(msm5205_device::S48_4B); + m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80); + m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80); +} -MACHINE_CONFIG_START(segas1x_bootleg_state::datsu_2x_ym2203_msm5205) - MCFG_DEVICE_ADD("soundcpu", Z80, 4000000) - MCFG_DEVICE_PROGRAM_MAP(shinobi_datsu_sound_map) +void segas1x_bootleg_state::datsu_2x_ym2203_msm5205(machine_config &config) +{ + Z80(config, m_soundcpu, 4000000); + m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shinobi_datsu_sound_map); /* sound hardware */ SPEAKER(config, "mono").front_center(); // 2x YM2203C, one at U57, one at U56 - MCFG_DEVICE_ADD("ym1", YM2203, 4000000) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 0.80) + ym2203_device &ym1(YM2203(config, "ym1", 4000000)); + ym1.add_route(0, "mono", 0.50); + ym1.add_route(1, "mono", 0.50); + ym1.add_route(2, "mono", 0.50); + ym1.add_route(3, "mono", 0.80); - MCFG_DEVICE_ADD("ym2", YM2203, 4000000) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 0.80) + ym2203_device &ym2(YM2203(config, "ym2", 4000000)); + ym2.add_route(0, "mono", 0.50); + ym2.add_route(1, "mono", 0.50); + ym2.add_route(2, "mono", 0.50); + ym2.add_route(3, "mono", 0.80); LS157(config, m_adpcm_select, 0); m_adpcm_select->out_callback().set("5205", FUNC(msm5205_device::data_w)); - MCFG_DEVICE_ADD("5205", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, datsu_msm5205_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::datsu_msm5205_callback)); + m_msm->set_prescaler_selector(msm5205_device::S48_4B); + m_msm->add_route(ALL_OUTPUTS, "mono", 0.80); +} /************************************* @@ -2157,120 +2159,111 @@ MACHINE_CONFIG_END *************************************/ /* System 16A/B Bootlegs */ -MACHINE_CONFIG_START(segas1x_bootleg_state::system16_base) - +void segas1x_bootleg_state::system16_base(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) + M68000(config, m_maincpu, 10000000); + m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 36*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(40*8, 36*8); + m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1); + m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system16)); + m_screen->set_palette(m_palette); - GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); - PALETTE(config, "palette").set_entries(2048*SHADOW_COLORS_MULTIPLIER); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16); + PALETTE(config, m_palette).set_entries(2048*SHADOW_COLORS_MULTIPLIER); MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16) GENERIC_LATCH_8(config, m_soundlatch); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::shinobi_datsu) +void segas1x_bootleg_state::shinobi_datsu(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(shinobib_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shinobib_map); BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 0, 1, 2, 3, 4, 5, 6, 7); MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_shinobi ) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg) + m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg)); datsu_2x_ym2203_msm5205(config); -MACHINE_CONFIG_END +} - -MACHINE_CONFIG_START(segas1x_bootleg_state::passshtb) +void segas1x_bootleg_state::passshtb(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(passshtb_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::passshtb_map); BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 1, 0, 3, 2, 5, 4, 7, 6); MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht ) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg) + m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg)); z80_ym2151_upd7759(config); -MACHINE_CONFIG_END +} - -MACHINE_CONFIG_START(segas1x_bootleg_state::passsht4b) +void segas1x_bootleg_state::passsht4b(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(passht4b_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::passht4b_map); // wrong BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 1, 0, 3, 2, 5, 4, 7, 6); - MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht ) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg_passht4b) + MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht) + m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg_passht4b)); datsu_2x_ym2203_msm5205(config); - MCFG_DEVICE_MODIFY("5205") - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) -MACHINE_CONFIG_END + m_msm->set_prescaler_selector(msm5205_device::S96_4B); +} -MACHINE_CONFIG_START(segas1x_bootleg_state::wb3bb) +void segas1x_bootleg_state::wb3bb(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(wb3bbl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::wb3bbl_map); BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 4, 0, 5, 1, 6, 2, 7, 3); m_sprites->set_local_originy(0); - MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl ) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg) + MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl) + m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg)); z80_ym2151(config); -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb_base) +} +void segas1x_bootleg_state::goldnaxeb_base(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) - MCFG_DEVICE_PROGRAM_MAP(goldnaxeb1_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) - + M68000(config, m_maincpu, 10000000); + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::goldnaxeb1_map); + m_maincpu->set_addrmap(AS_OPCODES, &segas1x_bootleg_state::decrypted_opcodes_map); + m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(40*8, 28*8); + m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1); + m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system16)); + m_screen->set_palette(m_palette); - GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); - PALETTE(config, "palette", palette_device::BLACK, 2048*SHADOW_COLORS_MULTIPLIER); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16); + PALETTE(config, m_palette, palette_device::BLACK, 2048*SHADOW_COLORS_MULTIPLIER); SEGA_SYS16B_SPRITES(config, m_sprites, 0); m_sprites->set_local_originx(189-121); @@ -2278,166 +2271,165 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb_base) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16) GENERIC_LATCH_8(config, m_soundlatch); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb1) +void segas1x_bootleg_state::goldnaxeb1(machine_config &config) +{ goldnaxeb_base(config); - subdevice("palette")->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER); + m_palette->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER); z80_ym2151_upd7759(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb2) +void segas1x_bootleg_state::goldnaxeb2(machine_config &config) +{ goldnaxeb_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(goldnaxeb2_map) - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::goldnaxeb2_map); + m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor()); - subdevice("palette")->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER); + m_palette->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER); datsu_2x_ym2203_msm5205(config); -MACHINE_CONFIG_END +} - -MACHINE_CONFIG_START(segas1x_bootleg_state::bayrouteb1) +void segas1x_bootleg_state::bayrouteb1(machine_config &config) +{ goldnaxeb_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(bayrouteb1_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::bayrouteb1_map); z80_ym2151_upd7759(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::bayrouteb2) +void segas1x_bootleg_state::bayrouteb2(machine_config &config) +{ goldnaxeb_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(bayrouteb2_map) - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::bayrouteb2_map); + m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor()); datsu_ym2151_msm5205(config); m_sprites->set_local_originx(189-107); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::tturfbl) +void segas1x_bootleg_state::tturfbl(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(tturfbl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tturfbl_map); datsu_ym2151_msm5205(config); SEGA_SYS16B_SPRITES(config, m_sprites, 0); m_sprites->set_local_originx(189-107); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::dduxbl) +void segas1x_bootleg_state::dduxbl(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(dduxbl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::dduxbl_map); SEGA_SYS16B_SPRITES(config, m_sprites, 0); m_sprites->set_local_originx(189-112); z80_ym2151(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::eswatbl) +void segas1x_bootleg_state::eswatbl(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(eswatbl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::eswatbl_map); SEGA_SYS16B_SPRITES(config, m_sprites, 0); m_sprites->set_local_originx(189-124); z80_ym2151_upd7759(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::eswatbl2) +void segas1x_bootleg_state::eswatbl2(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(eswatbl2_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::eswatbl2_map); SEGA_SYS16B_SPRITES(config, m_sprites, 0); m_sprites->set_local_originx(189-121); datsu_2x_ym2203_msm5205(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::tetrisbl) +void segas1x_bootleg_state::tetrisbl(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(tetrisbl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tetrisbl_map); SEGA_SYS16B_SPRITES(config, m_sprites, 0); m_sprites->set_local_originx(189-112); z80_ym2151(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(segas1x_bootleg_state::altbeastbl) +void segas1x_bootleg_state::altbeastbl(machine_config &config) +{ system16_base(config); + /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(tetrisbl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tetrisbl_map); SEGA_SYS16B_SPRITES(config, m_sprites, 0); m_sprites->set_local_originx(189-112); datsu_2x_ym2203_msm5205(config); - MCFG_DEVICE_MODIFY("5205") - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) -MACHINE_CONFIG_END + m_msm->set_prescaler_selector(msm5205_device::S96_4B); +} -MACHINE_CONFIG_START(segas1x_bootleg_state::beautyb) +void segas1x_bootleg_state::beautyb(machine_config &config) +{ system16_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(beautyb_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::beautyb_map); // no sprites z80_ym2151(config); -MACHINE_CONFIG_END - +} /* System 18 Bootlegs */ -MACHINE_CONFIG_START(segas1x_bootleg_state::system18) - +void segas1x_bootleg_state::system18(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) + M68000(config, m_maincpu, 10000000); + m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold)); - MCFG_DEVICE_ADD("soundcpu", Z80, 8000000) - MCFG_DEVICE_PROGRAM_MAP(sound_18_map) - MCFG_DEVICE_IO_MAP(sound_18_io_map) + Z80(config, m_soundcpu, 8000000); + m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sound_18_map); + m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::sound_18_io_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(40*8, 28*8); + m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1); + m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old)); + m_screen->set_palette(m_palette); - GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); - PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16); + PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old) @@ -2450,50 +2442,49 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::system18) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("3438.0", YM3438, 8000000) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.40) + ym3438_device &ym3438_0(YM3438(config, "3438.0", 8000000)); + ym3438_0.add_route(0, "lspeaker", 0.40); + ym3438_0.add_route(1, "rspeaker", 0.40); - MCFG_DEVICE_ADD("3438.1", YM3438, 8000000) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.40) + ym3438_device &ym3438_1(YM3438(config, "3438.1", 8000000)); + ym3438_1.add_route(0, "lspeaker", 0.40); + ym3438_1.add_route(1, "rspeaker", 0.40); - MCFG_DEVICE_ADD("5c68", RF5C68, 8000000) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_DEVICE_ADDRESS_MAP(0, pcm_map) -MACHINE_CONFIG_END + rf5c68_device &rf5c68(RF5C68(config, "5c68", 8000000)); + rf5c68.add_route(ALL_OUTPUTS, "lspeaker", 1.0); + rf5c68.add_route(ALL_OUTPUTS, "rspeaker", 1.0); + rf5c68.set_addrmap(0, &segas1x_bootleg_state::pcm_map); +} - -MACHINE_CONFIG_START(segas1x_bootleg_state::astormbl) +void segas1x_bootleg_state::astormbl(machine_config &config) +{ system18(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(astormbl_map) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(segas1x_bootleg_state::astormb2) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::astormbl_map); +} +void segas1x_bootleg_state::astormb2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12MHz */ - MCFG_DEVICE_PROGRAM_MAP(astormbl_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) + M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::astormbl_map); + m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold)); - MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(8'000'000)/2) /* 4MHz */ - MCFG_DEVICE_PROGRAM_MAP(sys18bl_sound_map) + Z80(config, m_soundcpu, XTAL(8'000'000)/2); /* 4MHz */ + m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sys18bl_sound_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(58.271) /* V-Sync is 58.271Hz & H-Sync is ~ 14.48KHz measured */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(58.271); /* V-Sync is 58.271Hz & H-Sync is ~ 14.48KHz measured */ + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(40*8, 28*8); + m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1); + m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old)); + m_screen->set_palette(m_palette); - GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); - PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16); + PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old) @@ -2506,57 +2497,56 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::astormb2) // 1 OKI M6295 instead of original sound hardware SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH) // 1MHz clock and pin verified - MCFG_DEVICE_ADDRESS_MAP(0, sys18bl_oki_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + okim6295_device &oki(OKIM6295(config, "oki", XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH)); // 1MHz clock and pin verified + oki.set_addrmap(0, &segas1x_bootleg_state::sys18bl_oki_map); + oki.add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(segas1x_bootleg_state::mwalkbl) +void segas1x_bootleg_state::mwalkbl(machine_config &config) +{ astormb2(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(mwalkbl_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::mwalkbl_map); +} - -MACHINE_CONFIG_START(segas1x_bootleg_state::shdancbl) +void segas1x_bootleg_state::shdancbl(machine_config &config) +{ system18(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(shdancbl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbl_map); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PROGRAM_MAP(shdancbl_sound_map) - MCFG_DEVICE_IO_MAP(shdancbl_sound_io_map) - MCFG_DEVICE_REMOVE("5c68") + m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbl_sound_map); + m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::shdancbl_sound_io_map); - MCFG_DEVICE_ADD("5205", MSM5205, 200000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, shdancbl_msm5205_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) -MACHINE_CONFIG_END + config.device_remove("5c68"); -MACHINE_CONFIG_START(segas1x_bootleg_state::shdancbla) + MSM5205(config, m_msm, 200000); + m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::shdancbl_msm5205_callback)); + m_msm->set_prescaler_selector(msm5205_device::S48_4B); + m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80); + m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80); +} + +void segas1x_bootleg_state::shdancbla(machine_config &config) +{ system18(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(shdancbla_map) + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbla_map); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PROGRAM_MAP(shdancbla_sound_map) - MCFG_DEVICE_IO_MAP(shdancbl_sound_io_map) - MCFG_DEVICE_REMOVE("5c68") + m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbla_sound_map); + m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::shdancbl_sound_io_map); - MCFG_DEVICE_ADD("5205", MSM5205, 200000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, shdancbl_msm5205_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) -MACHINE_CONFIG_END + config.device_remove("5c68"); + + MSM5205(config, m_msm, 200000); + m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::shdancbl_msm5205_callback)); + m_msm->set_prescaler_selector(msm5205_device::S48_4B); + m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80); + m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80); +} MACHINE_RESET_MEMBER(segas1x_bootleg_state,ddcrewbl) @@ -2571,24 +2561,24 @@ MACHINE_RESET_MEMBER(segas1x_bootleg_state,ddcrewbl) } -MACHINE_CONFIG_START(segas1x_bootleg_state::ddcrewbl) - +void segas1x_bootleg_state::ddcrewbl(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) - MCFG_DEVICE_PROGRAM_MAP(ddcrewbl_map) + M68000(config, m_maincpu, 10000000); + m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::ddcrewbl_map); + m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(40*8, 28*8); + m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1); + m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old)); + m_screen->set_palette(m_palette); - GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); - PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16); + PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old) @@ -2599,9 +2589,9 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::ddcrewbl) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, 10000000/10, okim6295_device::PIN7_HIGH) // clock and pin not verified - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + okim6295_device &oki(OKIM6295(config, "oki", 10000000/10, okim6295_device::PIN7_HIGH)); // clock and pin not verified + oki.add_route(ALL_OUTPUTS, "mono", 1.0); +} /************************************* diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp index f2cce198f88..755c7459030 100644 --- a/src/mame/drivers/taito_l.cpp +++ b/src/mame/drivers/taito_l.cpp @@ -1452,43 +1452,43 @@ WRITE8_MEMBER(fhawk_state::portA_w) //logerror ("YM2203 bank change val=%02x %s\n", data & 0x03, machine().describe_context() ); } -MACHINE_CONFIG_START(taitol_state::l_system_video) +void taitol_state::l_system_video(machine_config &config) +{ for (int bank = 0; bank < 4; bank++) { ADDRESS_MAP_BANK(config, m_ram_bnks[bank]).set_map(&taitol_state::tc0090lvc_map).set_options(ENDIANNESS_LITTLE, 8, 20, 0x1000); } - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, taitol_state, screen_vblank_taitol)) - MCFG_SCREEN_PALETTE(m_palette) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(40*8, 32*8); + screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(taitol_state::screen_update_taitol)); + screen.screen_vblank().set(FUNC(taitol_state::screen_vblank_taitol)); + screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, taito_l); PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::xBGR_444, 256); - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(fhawk_state::fhawk) + TIMER(config, "scantimer").configure_scanline(FUNC(taitol_state::vbl_interrupt), "screen", 0, 1); +} +void fhawk_state::fhawk(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'330'560)/2) /* verified freq on pin122 of TC0090LVC cpu */ - MCFG_DEVICE_PROGRAM_MAP(fhawk_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback) + Z80(config, m_main_cpu, XTAL(13'330'560)/2); /* verified freq on pin122 of TC0090LVC cpu */ + m_main_cpu->set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_map); + m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback)); - MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL/3) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(fhawk_3_map) + Z80(config, m_audio_cpu, 12_MHz_XTAL/3); /* verified on pcb */ + m_audio_cpu->set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_3_map); - MCFG_DEVICE_ADD("slave", Z80, 12_MHz_XTAL/3) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(fhawk_2_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold) + z80_device &slave(Z80(config, "slave", 12_MHz_XTAL/3)); /* verified on pcb */ + slave.set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_2_map); + slave.set_vblank_int("screen", FUNC(taitol_state::irq0_line_hold)); - MCFG_QUANTUM_PERFECT_CPU("maincpu") + config.m_perfect_cpu_quantum = subtag("maincpu"); tc0220ioc_device &tc0220ioc(TC0220IOC(config, "tc0220ioc", 0)); tc0220ioc.read_0_callback().set_ioport("DSWA"); @@ -1518,47 +1518,42 @@ MACHINE_CONFIG_START(fhawk_state::fhawk) pc060ha_device &ciu(PC060HA(config, "ciu", 0)); ciu.set_master_tag("slave"); ciu.set_slave_tag(m_audio_cpu); -MACHINE_CONFIG_END +} - -MACHINE_CONFIG_START(champwr_state::champwr) +void champwr_state::champwr(machine_config &config) +{ fhawk(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(champwr_map) + m_main_cpu->set_addrmap(AS_PROGRAM, &champwr_state::champwr_map); - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(champwr_3_map) + m_audio_cpu->set_addrmap(AS_PROGRAM, &champwr_state::champwr_3_map); - MCFG_DEVICE_MODIFY("slave") - MCFG_DEVICE_PROGRAM_MAP(champwr_2_map) + subdevice("slave")->set_addrmap(AS_PROGRAM, &champwr_state::champwr_2_map); /* sound hardware */ subdevice("ymsnd")->port_b_write_callback().set(FUNC(champwr_state::msm5205_volume_w)); - MCFG_DEVICE_ADD("msm", MSM5205, 384_kHz_XTAL) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, champwr_state, msm5205_vck)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 384_kHz_XTAL); + m_msm->vck_legacy_callback().set(FUNC(champwr_state::msm5205_vck)); /* VCK function */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.80); +} +void taitol_2cpu_state::raimais(machine_config &config) +{ + Z80(config, m_main_cpu, 13330560/2); // needs verification from pin122 of TC0090LVC + m_main_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::raimais_map); + m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback)); + Z80(config, m_audio_cpu, 12000000/3); // not verified + m_audio_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::raimais_3_map); -MACHINE_CONFIG_START(taitol_2cpu_state::raimais) + z80_device &slave(Z80(config, "slave", 12000000/3)); // not verified + slave.set_addrmap(AS_PROGRAM, &taitol_2cpu_state::raimais_2_map); + slave.set_vblank_int("screen", FUNC(taitol_state::irq0_line_hold)); - MCFG_DEVICE_ADD("maincpu", Z80, 13330560/2) // needs verification from pin122 of TC0090LVC - MCFG_DEVICE_PROGRAM_MAP(raimais_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback) - - MCFG_DEVICE_ADD("audiocpu", Z80, 12000000/3) // not verified - MCFG_DEVICE_PROGRAM_MAP(raimais_3_map) - - MCFG_DEVICE_ADD("slave", Z80, 12000000/3) // not verified - MCFG_DEVICE_PROGRAM_MAP(raimais_2_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold) - - MCFG_QUANTUM_PERFECT_CPU("maincpu") + config.m_perfect_cpu_quantum = subtag("maincpu"); tc0040ioc_device &tc0040ioc(TC0040IOC(config, "tc0040ioc", 0)); tc0040ioc.read_0_callback().set_ioport("DSWA"); @@ -1588,8 +1583,7 @@ MACHINE_CONFIG_START(taitol_2cpu_state::raimais) tc0140syt_device &tc0140syt(TC0140SYT(config, "tc0140syt", 0)); tc0140syt.set_master_tag("slave"); tc0140syt.set_slave_tag(m_audio_cpu); -MACHINE_CONFIG_END - +} void taitol_2cpu_state::kurikint(machine_config &config) { @@ -1734,18 +1728,18 @@ void taitol_1cpu_state::cachat(machine_config &config) m_ymsnd->port_b_read_callback().set_ioport("DSWB"); } -MACHINE_CONFIG_START(taitol_2cpu_state::evilston) - +void taitol_2cpu_state::evilston(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'330'560)/2) /* not verified */ - MCFG_DEVICE_PROGRAM_MAP(evilston_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback) + Z80(config, m_main_cpu, XTAL(13'330'560)/2); /* not verified */ + m_main_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::evilston_map); + m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback)); - MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL/3) /* not verified */ - MCFG_DEVICE_PROGRAM_MAP(evilston_2_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold) + Z80(config, m_audio_cpu, 12_MHz_XTAL/3); /* not verified */ + m_audio_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::evilston_2_map); + m_audio_cpu->set_vblank_int("screen", FUNC(taitol_state::irq0_line_hold)); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + config.m_minimum_quantum = attotime::from_hz(6000); tc0510nio_device &tc0510nio(TC0510NIO(config, "tc0510nio", 0)); tc0510nio.read_0_callback().set_ioport("DSWA"); @@ -1772,7 +1766,7 @@ MACHINE_CONFIG_START(taitol_2cpu_state::evilston) ymsnd.add_route(1, "mono", 0.25); ymsnd.add_route(2, "mono", 0.25); ymsnd.add_route(3, "mono", 0.80); -MACHINE_CONFIG_END +} ROM_START( raimais ) diff --git a/src/mame/drivers/tehkanwc.cpp b/src/mame/drivers/tehkanwc.cpp index b6ef48f5862..3a16baf494d 100644 --- a/src/mame/drivers/tehkanwc.cpp +++ b/src/mame/drivers/tehkanwc.cpp @@ -665,34 +665,34 @@ static GFXDECODE_START( gfx_tehkanwc ) GFXDECODE_END -MACHINE_CONFIG_START(tehkanwc_state::tehkanwc) - +void tehkanwc_state::tehkanwc(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 18432000/4) /* 18.432000 / 4 */ - MCFG_DEVICE_PROGRAM_MAP(main_mem) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold) + Z80(config, m_maincpu, 18432000/4); /* 18.432000 / 4 */ + m_maincpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::main_mem); + m_maincpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80, 18432000/4) - MCFG_DEVICE_PROGRAM_MAP(sub_mem) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold) + Z80(config, m_subcpu, 18432000/4); + m_subcpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::sub_mem); + m_subcpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, 18432000/4) - MCFG_DEVICE_PROGRAM_MAP(sound_mem) - MCFG_DEVICE_IO_MAP(sound_port) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold) + Z80(config, m_audiocpu, 18432000/4); + m_audiocpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::sound_mem); + m_audiocpu->set_addrmap(AS_IO, &tehkanwc_state::sound_port); + m_audiocpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold)); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - seems enough to keep the CPUs in sync */ + config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - seems enough to keep the CPUs in sync */ WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(tehkanwc_state, screen_update) - MCFG_SCREEN_PALETTE(m_palette) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tehkanwc_state::screen_update)); + screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_tehkanwc); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 768).set_endianness(ENDIANNESS_BIG); @@ -713,11 +713,11 @@ MACHINE_CONFIG_START(tehkanwc_state::tehkanwc) ay2.port_b_read_callback().set(FUNC(tehkanwc_state::portB_r)); ay2.add_route(ALL_OUTPUTS, "mono", 0.25); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, tehkanwc_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(tehkanwc_state::adpcm_int)); /* interrupt function */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.45); +} void tehkanwc_state::tehkanwcb(machine_config &config) { @@ -733,7 +733,6 @@ void tehkanwc_state::tehkanwcb(machine_config &config) ay2.add_route(ALL_OUTPUTS, "mono", 0.25); } - void tehkanwc_state::init_teedoff() { /* Patch to avoid the game jumping in shared memory */ diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp index 4644da6a6ca..1df70fc4993 100644 --- a/src/mame/drivers/topspeed.cpp +++ b/src/mame/drivers/topspeed.cpp @@ -567,20 +567,20 @@ void topspeed_state::machine_reset() } -MACHINE_CONFIG_START(topspeed_state::topspeed) - +void topspeed_state::topspeed(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000) / 2) - MCFG_DEVICE_PROGRAM_MAP(cpua_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", topspeed_state, irq6_line_hold) + M68000(config, m_maincpu, XTAL(16'000'000) / 2); + m_maincpu->set_addrmap(AS_PROGRAM, &topspeed_state::cpua_map); + m_maincpu->set_vblank_int("screen", FUNC(topspeed_state::irq6_line_hold)); - MCFG_DEVICE_ADD("subcpu", M68000, XTAL(16'000'000) / 2) - MCFG_DEVICE_PROGRAM_MAP(cpub_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", topspeed_state, irq5_line_hold) + M68000(config, m_subcpu, XTAL(16'000'000) / 2); + m_subcpu->set_addrmap(AS_PROGRAM, &topspeed_state::cpub_map); + m_subcpu->set_vblank_int("screen", FUNC(topspeed_state::irq5_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000) / 4) - MCFG_DEVICE_PROGRAM_MAP(z80_prg) - MCFG_DEVICE_IO_MAP(z80_io) + Z80(config, m_audiocpu, XTAL(16'000'000) / 4); + m_audiocpu->set_addrmap(AS_PROGRAM, &topspeed_state::z80_prg); + m_audiocpu->set_addrmap(AS_IO, &topspeed_state::z80_io); z80ctc_device& ctc(Z80CTC(config, "ctc", XTAL(16'000'000) / 4)); ctc.intr_callback().set(FUNC(topspeed_state::z80ctc_to0)); @@ -608,13 +608,13 @@ MACHINE_CONFIG_START(topspeed_state::topspeed) m_tc0040ioc->read_7_callback().set_ioport("IN2"); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60.0532) // Measured on real hardware - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(topspeed_state, screen_update_topspeed) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60.0532); // Measured on real hardware + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(40*8, 32*8); + screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); + screen.set_screen_update(FUNC(topspeed_state::screen_update_topspeed)); + screen.set_palette("palette"); GFXDECODE(config, m_gfxdecode, "palette", gfx_topspeed); PALETTE(config, "palette").set_format(palette_device::xBGR_555, 8192); @@ -629,14 +629,14 @@ MACHINE_CONFIG_START(topspeed_state::topspeed) ymsnd.add_route(0, "filter1l", 1.0); ymsnd.add_route(1, "filter1r", 1.0); - MCFG_DEVICE_ADD("msm1", MSM5205, XTAL(384'000)) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, topspeed_state, msm5205_1_vck)) // VCK function - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8 kHz, 4-bit - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter2", 1.0) + MSM5205(config, m_msm[0], XTAL(384'000)); + m_msm[0]->vck_legacy_callback().set(FUNC(topspeed_state::msm5205_1_vck)); + m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); // 8 kHz, 4-bit + m_msm[0]->add_route(ALL_OUTPUTS, "filter2", 1.0); - MCFG_DEVICE_ADD("msm2", MSM5205, XTAL(384'000)) - MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) // Slave mode, 4-bit - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter3", 1.0) + MSM5205(config, m_msm[1], XTAL(384'000)); + m_msm[1]->set_prescaler_selector(msm5205_device::SEX_4B); // Slave mode, 4-bit + m_msm[1]->add_route(ALL_OUTPUTS, "filter3", 1.0); FILTER_VOLUME(config, "filter1l").add_route(ALL_OUTPUTS, "lspeaker", 1.0); FILTER_VOLUME(config, "filter1r").add_route(ALL_OUTPUTS, "rspeaker", 1.0); @@ -644,7 +644,7 @@ MACHINE_CONFIG_START(topspeed_state::topspeed) FILTER_VOLUME(config, "filter2").add_route(ALL_OUTPUTS, "lspeaker", 1.0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); FILTER_VOLUME(config, "filter3").add_route(ALL_OUTPUTS, "lspeaker", 1.0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index ca74ca65707..87a1345c9fd 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -895,14 +895,14 @@ WRITE_LINE_MEMBER(trackfld_state::vblank_nmi) m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } -MACHINE_CONFIG_START(trackfld_state::trackfld) - +void trackfld_state::trackfld(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_maincpu, KONAMI1, MASTER_CLOCK/6/2) /* a guess for now */ - MCFG_DEVICE_PROGRAM_MAP(main_map) + KONAMI1(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map); - MCFG_DEVICE_ADD(m_audiocpu, Z80, SOUND_CLOCK/4) - MCFG_DEVICE_PROGRAM_MAP(sound_map) + Z80(config, m_audiocpu, SOUND_CLOCK/4); + m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map); MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld) MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld) @@ -922,14 +922,14 @@ MACHINE_CONFIG_START(trackfld_state::trackfld) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD(m_screen, RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld) - MCFG_SCREEN_PALETTE(m_palette) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld); PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32); @@ -940,26 +940,28 @@ MACHINE_CONFIG_START(trackfld_state::trackfld) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, m_audiocpu, m_vlm) + TRACKFLD_AUDIO(config, m_soundbrd, 0, m_audiocpu, m_vlm); - MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) + DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); - MCFG_DEVICE_ADD(m_sn, SN76496, SOUND_CLOCK/8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + SN76496(config, m_sn, SOUND_CLOCK/8); + m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0); - MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK) - MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END + VLM5030(config, m_vlm, VLM_CLOCK); + m_vlm->set_addrmap(0, &trackfld_state::vlm_map); + m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0); +} -MACHINE_CONFIG_START(trackfld_state::trackfldu) +void trackfld_state::trackfldu(machine_config &config) +{ trackfld(config); - MCFG_DEVICE_REPLACE("maincpu", MC6809E, MASTER_CLOCK/6/2) /* exact M6809 model unknown */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - -MACHINE_CONFIG_END + MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* exact M6809 model unknown */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map); +} INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq) { @@ -967,16 +969,16 @@ INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq) device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } -MACHINE_CONFIG_START(trackfld_state::yieartf) - +void trackfld_state::yieartf(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */ - MCFG_DEVICE_PROGRAM_MAP(yieartf_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(trackfld_state, yieartf_timer_irq, 480) + MC6809E(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::yieartf_map); + m_maincpu->set_periodic_int(FUNC(trackfld_state::yieartf_timer_irq), attotime::from_hz(480)); // z80 isn't used -// MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK/4) -// MCFG_DEVICE_PROGRAM_MAP(sound_map) +// Z80(config, m_audiocpu, SOUND_CLOCK/4); +// m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map); MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld) MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld) @@ -996,14 +998,14 @@ MACHINE_CONFIG_START(trackfld_state::yieartf) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD(m_screen, RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld) - MCFG_SCREEN_PALETTE(m_palette) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld); PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32); @@ -1014,19 +1016,21 @@ MACHINE_CONFIG_START(trackfld_state::yieartf) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, finder_base::DUMMY_TAG, m_vlm) + TRACKFLD_AUDIO(config, m_soundbrd, 0, finder_base::DUMMY_TAG, m_vlm); - MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) + DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); - MCFG_DEVICE_ADD(m_sn, SN76496, MASTER_CLOCK/6/2) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + SN76496(config, m_sn, MASTER_CLOCK/6/2); + m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0); - MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK) - MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END + VLM5030(config, m_vlm, VLM_CLOCK); + m_vlm->set_addrmap(0, &trackfld_state::vlm_map); + m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0); +} void trackfld_state::hyprolyb_adpcm_map(address_map &map) { @@ -1053,7 +1057,8 @@ void trackfld_state::hyprolyb_adpcm_map(address_map &map) /* same as the original, but uses ADPCM instead of VLM5030 */ /* also different memory handlers do handle that */ -MACHINE_CONFIG_START(trackfld_state::hyprolyb) +void trackfld_state::hyprolyb(machine_config &config) +{ trackfld(config); m_audiocpu->set_addrmap(AS_PROGRAM, address_map_constructor(&std::remove_pointer_t::hyprolyb_sound_map, tag(), this)); @@ -1062,59 +1067,61 @@ MACHINE_CONFIG_START(trackfld_state::hyprolyb) MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld) /* sound hardware */ - MCFG_DEVICE_REMOVE("vlm") - MCFG_DEVICE_ADD("adpcm", M6802, XTAL(14'318'181)/8) /* unknown clock */ - MCFG_DEVICE_PROGRAM_MAP(hyprolyb_adpcm_map) + config.device_remove("vlm"); + M6802(config, "adpcm", XTAL(14'318'181)/8).set_addrmap(AS_PROGRAM, &trackfld_state::hyprolyb_adpcm_map); /* unknown clock */ GENERIC_LATCH_8(config, "soundlatch2"); - MCFG_DEVICE_ADD("hyprolyb_adpcm", HYPROLYB_ADPCM, 0) + HYPROLYB_ADPCM(config, "hyprolyb_adpcm", 0); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE("hyprolyb_adpcm", hyprolyb_adpcm_device, vck_callback)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4 kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) -MACHINE_CONFIG_END + msm5205_device &msm(MSM5205(config, "msm", 384000)); + msm.vck_legacy_callback().set("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::vck_callback)); + msm.set_prescaler_selector(msm5205_device::S96_4B); /* 4 kHz */ + msm.add_route(ALL_OUTPUTS, "speaker", 0.5); +} -MACHINE_CONFIG_START(trackfld_state::atlantol) +void trackfld_state::atlantol(machine_config &config) +{ hyprolyb(config); MCFG_VIDEO_START_OVERRIDE(trackfld_state,atlantol) -MACHINE_CONFIG_END +} - -MACHINE_CONFIG_START(trackfld_state::mastkin) +void trackfld_state::mastkin(machine_config &config) +{ trackfld(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */ - MCFG_DEVICE_PROGRAM_MAP(mastkin_map) + MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::mastkin_map); m_mainlatch->q_out_cb<3>().set_nop(); // actually not used m_mainlatch->q_out_cb<4>().set_nop(); // actually not used -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(trackfld_state::wizzquiz) +void trackfld_state::wizzquiz(machine_config &config) +{ trackfld(config); /* basic machine hardware */ // right cpu? - MCFG_DEVICE_REPLACE(m_maincpu, M6800, 2048000) /* 1.400 MHz ??? */ - MCFG_DEVICE_PROGRAM_MAP(wizzquiz_map) + M6800(config.replace(), m_maincpu, 2048000); /* 1.400 MHz ??? */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::wizzquiz_map); m_screen->set_screen_vblank(DEVCB_WRITELINE(*this, trackfld_state, vblank_nmi)); m_mainlatch->q_out_cb<7>().set(FUNC(trackfld_state::nmi_mask_w)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(trackfld_state::reaktor) +void trackfld_state::reaktor(machine_config &config) +{ trackfld(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE(m_maincpu, Z80, MASTER_CLOCK/6) - MCFG_DEVICE_PROGRAM_MAP(reaktor_map) - MCFG_DEVICE_IO_MAP(reaktor_io_map) -MACHINE_CONFIG_END + Z80(config.replace(), m_maincpu, MASTER_CLOCK/6); + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::reaktor_map); + m_maincpu->set_addrmap(AS_IO, &trackfld_state::reaktor_io_map); +} /*************************************************************************** diff --git a/src/mame/drivers/tubep.cpp b/src/mame/drivers/tubep.cpp index c2ace202c4a..1ea896bdf36 100644 --- a/src/mame/drivers/tubep.cpp +++ b/src/mame/drivers/tubep.cpp @@ -820,25 +820,25 @@ INPUT_PORTS_END * *************************************/ -MACHINE_CONFIG_START(tubep_state::tubep) - +void tubep_state::tubep(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP(tubep_main_map) - MCFG_DEVICE_IO_MAP(tubep_main_portmap) + Z80(config, m_maincpu, 16000000 / 4); /* 4 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &tubep_state::tubep_main_map); + m_maincpu->set_addrmap(AS_IO, &tubep_state::tubep_main_portmap); - MCFG_DEVICE_ADD("slave",Z80,16000000 / 4) /* 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP(tubep_second_map) - MCFG_DEVICE_IO_MAP(tubep_second_portmap) + Z80(config, m_slave, 16000000 / 4); /* 4 MHz */ + m_slave->set_addrmap(AS_PROGRAM, &tubep_state::tubep_second_map); + m_slave->set_addrmap(AS_IO, &tubep_state::tubep_second_portmap); - MCFG_DEVICE_ADD("soundcpu",Z80,19968000 / 8) /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */ - MCFG_DEVICE_PROGRAM_MAP(tubep_sound_map) - MCFG_DEVICE_IO_MAP(tubep_sound_portmap) + Z80(config, m_soundcpu, 19968000 / 8); /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */ + m_soundcpu->set_addrmap(AS_PROGRAM, &tubep_state::tubep_sound_map); + m_soundcpu->set_addrmap(AS_IO, &tubep_state::tubep_sound_portmap); - MCFG_DEVICE_ADD("mcu",NSC8105,6000000) /* 6 MHz Xtal - divided internally ??? */ - MCFG_DEVICE_PROGRAM_MAP(nsc_map) + NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */ + m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + config.m_minimum_quantum = attotime::from_hz(6000); ls259_device &mainlatch(LS259(config, "mainlatch")); mainlatch.q_out_cb<0>().set(FUNC(tubep_state::coin1_counter_w)); @@ -852,12 +852,12 @@ MACHINE_CONFIG_START(tubep_state::tubep) MCFG_MACHINE_RESET_OVERRIDE(tubep_state,tubep) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(256, 264) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_tubep) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(256, 264); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(tubep_state::screen_update_tubep)); + m_screen->set_palette("palette"); PALETTE(config, "palette", FUNC(tubep_state::tubep_palette), 32 + 256*64); @@ -878,39 +878,37 @@ MACHINE_CONFIG_START(tubep_state::tubep) ay3.port_a_write_callback().set(FUNC(tubep_state::ay8910_portA_2_w)); ay3.port_b_write_callback().set(FUNC(tubep_state::ay8910_portB_2_w)); ay3.add_route(ALL_OUTPUTS, "mono", 0.10); -MACHINE_CONFIG_END +} - -MACHINE_CONFIG_START(tubep_state::tubepb) +void tubep_state::tubepb(machine_config &config) +{ tubep(config); - MCFG_DEVICE_REPLACE("mcu", M6802,6000000) /* ? MHz Xtal */ - MCFG_DEVICE_PROGRAM_MAP(nsc_map) + M6802(config.replace(), m_mcu, 6000000); /* ? MHz Xtal */ + m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map); - //MCFG_SCREEN_MODIFY("screen") - //MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("mcu", INPUT_LINE_NMI)) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(tubep_state::rjammer) + //m_screen->screen_vblank().set_inputline(m_mcu, INPUT_LINE_NMI); +} +void tubep_state::rjammer(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP(rjammer_main_map) - MCFG_DEVICE_IO_MAP(rjammer_main_portmap) + Z80(config, m_maincpu, 16000000 / 4); /* 4 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_main_map); + m_maincpu->set_addrmap(AS_IO, &tubep_state::rjammer_main_portmap); - MCFG_DEVICE_ADD("slave",Z80,16000000 / 4) /* 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP(rjammer_second_map) - MCFG_DEVICE_IO_MAP(rjammer_second_portmap) + Z80(config, m_slave, 16000000 / 4); /* 4 MHz */ + m_slave->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_second_map); + m_slave->set_addrmap(AS_IO, &tubep_state::rjammer_second_portmap); - MCFG_DEVICE_ADD("soundcpu",Z80,19968000 / 8) /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */ - MCFG_DEVICE_PROGRAM_MAP(rjammer_sound_map) - MCFG_DEVICE_IO_MAP(rjammer_sound_portmap) + Z80(config, m_soundcpu, 19968000 / 8); /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */ + m_soundcpu->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_sound_map); + m_soundcpu->set_addrmap(AS_IO, &tubep_state::rjammer_sound_portmap); GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("mcu",NSC8105,6000000) /* 6 MHz Xtal - divided internally ??? */ - MCFG_DEVICE_PROGRAM_MAP(nsc_map) + NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */ + m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 3A mainlatch.q_out_cb<0>().set(FUNC(tubep_state::coin1_counter_w)); @@ -920,14 +918,13 @@ MACHINE_CONFIG_START(tubep_state::rjammer) MCFG_MACHINE_START_OVERRIDE(tubep_state,rjammer) MCFG_MACHINE_RESET_OVERRIDE(tubep_state,rjammer) - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(256, 264) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_rjammer) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(256, 264); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(tubep_state::screen_update_rjammer)); + m_screen->set_palette("palette"); PALETTE(config, "palette", FUNC(tubep_state::rjammer_palette), 64); @@ -949,12 +946,11 @@ MACHINE_CONFIG_START(tubep_state::rjammer) ay3.port_b_write_callback().set(FUNC(tubep_state::ay8910_portB_2_w)); ay3.add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, tubep_state, rjammer_adpcm_vck)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz (changes at run time) */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - -MACHINE_CONFIG_END + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(tubep_state::rjammer_adpcm_vck)); /* VCK function */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz (changes at run time) */ + m_msm->add_route(ALL_OUTPUTS, "mono", 1.0); +} diff --git a/src/mame/drivers/wacky_gator.cpp b/src/mame/drivers/wacky_gator.cpp index 9b5939616f9..63b1c6ae05b 100644 --- a/src/mame/drivers/wacky_gator.cpp +++ b/src/mame/drivers/wacky_gator.cpp @@ -283,24 +283,24 @@ void wackygtr_state::program_map(address_map &map) MACHINE_CONFIG_START(wackygtr_state::wackygtr) - MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(3'579'545)) // HD68B09P - MCFG_DEVICE_PROGRAM_MAP(program_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(wackygtr_state, irq0_line_assert, 50) // FIXME + MC6809(config, m_maincpu, XTAL(3'579'545)); // HD68B09P + m_maincpu->set_addrmap(AS_PROGRAM, &wackygtr_state::program_map); + m_maincpu->set_periodic_int(FUNC(wackygtr_state::irq0_line_assert), attotime::from_hz(50)); // FIXME - MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", wackygtr_state, nmi_timer, attotime::from_hz(100)) // FIXME + TIMER(config, "nmi_timer").configure_periodic(FUNC(wackygtr_state::nmi_timer), attotime::from_hz(100)); // FIXME /* Video */ config.set_default_layout(layout_wackygtr); /* Sound */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000) ) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, wackygtr_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + MSM5205(config, m_msm, XTAL(384'000)); + m_msm->vck_legacy_callback().set(FUNC(wackygtr_state::adpcm_int)); /* IRQ handler */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */ + m_msm->add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545) ) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(3'579'545))); + ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); i8255_device &ppi0(I8255(config, "i8255_0")); ppi0.out_pa_callback().set(FUNC(wackygtr_state::status_lamps_w)); @@ -333,8 +333,8 @@ MACHINE_CONFIG_START(wackygtr_state::wackygtr) m_pit8253[1]->set_clk<2>(XTAL(3'579'545)/16); // this is a guess m_pit8253[1]->out_handler<2>().set(FUNC(wackygtr_state::alligator_ck<4>)); - MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) -MACHINE_CONFIG_END + TICKET_DISPENSER(config, "ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH); +} ROM_START( wackygtr ) diff --git a/src/mame/drivers/wc90b.cpp b/src/mame/drivers/wc90b.cpp index 13fefc3fd6e..d5df19311f7 100644 --- a/src/mame/drivers/wc90b.cpp +++ b/src/mame/drivers/wc90b.cpp @@ -353,29 +353,29 @@ void wc90b_state::machine_start() } -MACHINE_CONFIG_START(wc90b_state::wc90b) - +void wc90b_state::wc90b(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(wc90b_map1) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wc90b_state, irq0_line_assert) + Z80(config, m_maincpu, MASTER_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &wc90b_state::wc90b_map1); + m_maincpu->set_vblank_int("screen", FUNC(wc90b_state::irq0_line_assert)); - MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(wc90b_map2) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wc90b_state, irq0_line_assert) + Z80(config, m_subcpu, MASTER_CLOCK); + m_subcpu->set_addrmap(AS_PROGRAM, &wc90b_state::wc90b_map2); + m_subcpu->set_vblank_int("screen", FUNC(wc90b_state::irq0_line_assert)); - MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(sound_cpu) + Z80(config, m_audiocpu, SOUND_CLOCK); + m_audiocpu->set_addrmap(AS_PROGRAM, &wc90b_state::sound_cpu); /* IRQs are triggered by the main CPU */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(wc90b_state, screen_update) - MCFG_SCREEN_PALETTE(m_palette) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(wc90b_state::screen_update)); + screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_wc90b); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024).set_endianness(ENDIANNESS_BIG); @@ -385,17 +385,14 @@ MACHINE_CONFIG_START(wc90b_state::wc90b) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ymsnd1", YM2203, YM2203_CLOCK) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + YM2203(config, "ymsnd1", YM2203_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.40); + YM2203(config, "ymsnd2", YM2203_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.40); - MCFG_DEVICE_ADD("ymsnd2", YM2203, YM2203_CLOCK) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) - - MCFG_DEVICE_ADD("msm", MSM5205, MSM5205_CLOCK) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, wc90b_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) -MACHINE_CONFIG_END + MSM5205(config, m_msm, MSM5205_CLOCK); + m_msm->vck_legacy_callback().set(FUNC(wc90b_state::adpcm_int)); /* interrupt function */ + m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.20); +} ROM_START( twcup90b1 ) ROM_REGION( 0x20000, "maincpu", 0 ) diff --git a/src/mame/drivers/yunsung8.cpp b/src/mame/drivers/yunsung8.cpp index a3f5b764f5c..351158525c8 100644 --- a/src/mame/drivers/yunsung8.cpp +++ b/src/mame/drivers/yunsung8.cpp @@ -341,26 +341,25 @@ void yunsung8_state::machine_reset() } -MACHINE_CONFIG_START(yunsung8_state::yunsung8) - +void yunsung8_state::yunsung8(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* Z80B @ 8MHz? */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_DEVICE_IO_MAP(port_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", yunsung8_state, irq0_line_assert) /* No nmi routine */ + Z80(config, m_maincpu, XTAL(16'000'000)/2); /* Z80B @ 8MHz? */ + m_maincpu->set_addrmap(AS_PROGRAM, &yunsung8_state::main_map); + m_maincpu->set_addrmap(AS_IO, &yunsung8_state::port_map); + m_maincpu->set_vblank_int("screen", FUNC(yunsung8_state::irq0_line_assert)); /* No nmi routine */ - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(sound_map) + Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* ? */ + m_audiocpu->set_addrmap(AS_PROGRAM, &yunsung8_state::sound_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(16'000'000)/2, 512, 64, 512-64, 262, 8, 256-8) /* TODO: completely inaccurate */ - MCFG_SCREEN_UPDATE_DRIVER(yunsung8_state, screen_update) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_yunsung8) - MCFG_PALETTE_ADD("palette", 2048) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(16'000'000)/2, 512, 64, 512-64, 262, 8, 256-8); /* TODO: completely inaccurate */ + screen.set_screen_update(FUNC(yunsung8_state::screen_update)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_yunsung8); + PALETTE(config, m_palette).set_entries(2048); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); @@ -368,19 +367,19 @@ MACHINE_CONFIG_START(yunsung8_state::yunsung8) GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0); - MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(16'000'000)/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(16'000'000)/4)); + ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 1.0); + ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 1.0); LS157(config, m_adpcm_select, 0); m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); - MCFG_DEVICE_ADD("msm", MSM5205, XTAL(400'000)) /* verified on pcb */ - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, yunsung8_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz, 4 Bits */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) -MACHINE_CONFIG_END + MSM5205(config, m_msm, XTAL(400'000)); /* verified on pcb */ + m_msm->vck_legacy_callback().set(FUNC(yunsung8_state::adpcm_int)); /* interrupt function */ + m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz, 4 Bits */ + m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80); + m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80); +} /*************************************************************************** diff --git a/src/mame/includes/lwings.h b/src/mame/includes/lwings.h index aad34ed2d31..192ff10f07d 100644 --- a/src/mame/includes/lwings.h +++ b/src/mame/includes/lwings.h @@ -11,12 +11,13 @@ class lwings_state : public driver_device public: lwings_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_spriteram(*this, "spriteram") , + m_spriteram(*this, "spriteram"), m_fgvideoram(*this, "fgvideoram"), m_bg1videoram(*this, "bg1videoram"), m_soundlatch2(*this, "soundlatch_2"), m_nmi_mask(0), m_maincpu(*this, "maincpu"), + m_soundcpu(*this, "soundcpu"), m_msm(*this, "5205"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), @@ -91,6 +92,7 @@ private: void trojan_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); int avengers_fetch_paldata( ); required_device m_maincpu; + required_device m_soundcpu; optional_device m_msm; required_device m_gfxdecode; required_device m_palette; diff --git a/src/mame/machine/pce_cd.cpp b/src/mame/machine/pce_cd.cpp index 94986e2a424..24d2bed88ee 100644 --- a/src/mame/machine/pce_cd.cpp +++ b/src/mame/machine/pce_cd.cpp @@ -241,23 +241,22 @@ void pce_cd_device::nvram_init(nvram_device &nvram, void *data, size_t size) } // TODO: left and right speaker tags should be passed from the parent config, instead of using the hard-coded ones below!?! - MACHINE_CONFIG_START(pce_cd_device::device_add_mconfig) - NVRAM(config, "bram").set_custom_handler(FUNC(pce_cd_device::nvram_init)); +void pce_cd_device::device_add_mconfig(machine_config &config) +{ + NVRAM(config, m_nvram).set_custom_handler(FUNC(pce_cd_device::nvram_init)); - MCFG_CDROM_ADD("cdrom") - MCFG_CDROM_INTERFACE("pce_cdrom") + CDROM(config, m_cdrom).set_interface("pce_cdrom"); - MCFG_DEVICE_ADD( "msm5205", MSM5205, PCE_CD_CLOCK / 6 ) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pce_cd_device, msm5205_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 1/48 prescaler, 4bit data */ - MCFG_SOUND_ROUTE( ALL_OUTPUTS, "^lspeaker", 0.50 ) - MCFG_SOUND_ROUTE( ALL_OUTPUTS, "^rspeaker", 0.50 ) - - MCFG_DEVICE_ADD( "cdda", CDDA ) - MCFG_SOUND_ROUTE( 0, "^lspeaker", 1.00 ) - MCFG_SOUND_ROUTE( 1, "^rspeaker", 1.00 ) -MACHINE_CONFIG_END + MSM5205(config, m_msm, PCE_CD_CLOCK / 6); + m_msm->vck_legacy_callback().set(FUNC(pce_cd_device::msm5205_int)); /* interrupt function */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 1/48 prescaler, 4bit data */ + m_msm->add_route(ALL_OUTPUTS, "^lspeaker", 0.50); + m_msm->add_route(ALL_OUTPUTS, "^rspeaker", 0.50); + CDDA(config, m_cdda); + m_cdda->add_route(0, "^lspeaker", 1.00); + m_cdda->add_route(1, "^rspeaker", 1.00); +} void pce_cd_device::adpcm_stop(uint8_t irq_flag) {