From cf5a34ce49c521ea979bc63e31b19fca11fdcef1 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Wed, 19 Dec 2018 07:53:28 +0100 Subject: [PATCH] -sound/dave, digitalk, k051649, lc7535, n63701x, namco, nile, s14001a: Removed MCFG macros. [Ryan Holtz] -drivers/20pacgal, baraduke, deco32, fidel6502, fidelz80, galaga, gaplus, hcastle, hexion, jrpacman, konmedal, mappy, namcos86, pacland, pengo, polepos, quickpick5, rallyx, skykid, srmp6, tceptor, toypop: Removed MACHINE_CONFIG macros. [Ryan Holtz] --- src/devices/sound/dave.h | 31 --- src/devices/sound/digitalk.h | 11 - src/devices/sound/k051649.h | 11 - src/devices/sound/lc7535.h | 28 +-- src/devices/sound/n63701x.h | 10 - src/devices/sound/namco.cpp | 2 +- src/devices/sound/namco.h | 11 +- src/devices/sound/nile.h | 10 - src/devices/sound/s14001a.h | 7 - src/mame/drivers/20pacgal.cpp | 39 ++-- src/mame/drivers/baraduke.cpp | 47 ++-- src/mame/drivers/deco32.cpp | 278 +++++++++++------------ src/mame/drivers/fidel6502.cpp | 391 +++++++++++++++++--------------- src/mame/drivers/fidelz80.cpp | 155 +++++++------ src/mame/drivers/galaga.cpp | 223 +++++++++--------- src/mame/drivers/gaplus.cpp | 41 ++-- src/mame/drivers/hcastle.cpp | 62 +++-- src/mame/drivers/hexion.cpp | 56 ++--- src/mame/drivers/jrpacman.cpp | 43 ++-- src/mame/drivers/konmedal.cpp | 117 +++++----- src/mame/drivers/mappy.cpp | 155 ++++++------- src/mame/drivers/namcos86.cpp | 123 +++++----- src/mame/drivers/pacland.cpp | 36 +-- src/mame/drivers/pengo.cpp | 56 +++-- src/mame/drivers/polepos.cpp | 136 +++++------ src/mame/drivers/quickpick5.cpp | 43 ++-- src/mame/drivers/rallyx.cpp | 131 +++++------ src/mame/drivers/skykid.cpp | 42 ++-- src/mame/drivers/srmp6.cpp | 36 +-- src/mame/drivers/tceptor.cpp | 78 ++++--- src/mame/drivers/toypop.cpp | 55 +++-- src/mame/includes/baraduke.h | 3 +- src/mame/includes/deco32.h | 3 +- src/mame/includes/hexion.h | 5 +- src/mame/includes/namcos86.h | 5 +- src/mame/includes/rallyx.h | 5 +- src/mame/includes/tceptor.h | 3 + 37 files changed, 1202 insertions(+), 1286 deletions(-) diff --git a/src/devices/sound/dave.h b/src/devices/sound/dave.h index c18df5f4eca..f7bc83373b8 100644 --- a/src/devices/sound/dave.h +++ b/src/devices/sound/dave.h @@ -12,37 +12,6 @@ #pragma once -///************************************************************************* -// MACROS / CONSTANTS -///************************************************************************* - - - -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_DAVE_ADD(_tag, _clock, _program_map, _io_map) \ - SPEAKER(config, "lspeaker").front_left(); \ - SPEAKER(config, "rspeaker").front_right(); \ - MCFG_DEVICE_ADD(_tag, DAVE, _clock) \ - MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) \ - MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) \ - MCFG_DEVICE_ADDRESS_MAP(AS_PROGRAM, _program_map) \ - MCFG_DEVICE_ADDRESS_MAP(AS_IO, _io_map) - - -#define MCFG_DAVE_IRQ_CALLBACK(_write) \ - downcast(*device).set_irq_wr_callback(DEVCB_##_write); - -#define MCFG_DAVE_LH_CALLBACK(_write) \ - downcast(*device).set_lh_wr_callback(DEVCB_##_write); - -#define MCFG_DAVE_RH_CALLBACK(_write) \ - downcast(*device).set_rh_wr_callback(DEVCB_##_write); - - - ///************************************************************************* // TYPE DEFINITIONS ///************************************************************************* diff --git a/src/devices/sound/digitalk.h b/src/devices/sound/digitalk.h index b93ee4a42f3..b4e2cb5cb97 100644 --- a/src/devices/sound/digitalk.h +++ b/src/devices/sound/digitalk.h @@ -6,17 +6,6 @@ #pragma once -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_DIGITALKER_ADD(tag, clock) \ - MCFG_DEVICE_ADD((tag), DIGITALKER, (clock)) - -#define MCFG_DIGITALKER_REPLACE(tag, clock) \ - MCFG_DEVICE_REPLACE((tag), DIGITALKER, (clock)) - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** diff --git a/src/devices/sound/k051649.h b/src/devices/sound/k051649.h index 923cf7cd881..6ede7a295ee 100644 --- a/src/devices/sound/k051649.h +++ b/src/devices/sound/k051649.h @@ -6,21 +6,10 @@ #pragma once -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_K051649_ADD(_tag, _clock) \ - MCFG_DEVICE_ADD(_tag, K051649, _clock) -#define MCFG_K051649_REPLACE(_tag, _clock) \ - MCFG_DEVICE_REPLACE(_tag, K051649, _clock) - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** - // ======================> k051649_device class k051649_device : public device_t, diff --git a/src/devices/sound/lc7535.h b/src/devices/sound/lc7535.h index 7b58f48ba37..f2137fd82c7 100644 --- a/src/devices/sound/lc7535.h +++ b/src/devices/sound/lc7535.h @@ -27,23 +27,12 @@ #pragma once -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_LC7535_SELECT_CB(_read) \ - downcast(*device).set_select_callback(DEVCB_##_read); - -#define MCFG_LC7535_VOLUME_CB(_class, _method) \ - downcast(*device).set_volume_callback(lc7535_device::volume_delegate(&_class::_method, #_class "::" #_method, this)); - -#define LC7535_VOLUME_CHANGED(name) void name(int attenuation_right, int attenuation_left, bool loudness) - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** +#define LC7535_VOLUME_CHANGED(name) void name(int attenuation_right, int attenuation_left, bool loudness) + class lc7535_device : public device_t { public: @@ -52,9 +41,16 @@ public: typedef device_delegate volume_delegate; - template void set_volume_callback(Object &&cb) { m_volume_cb = std::forward(cb); } - - template devcb_base &set_select_callback(Object &&cb) { return m_select_cb.set_callback(std::forward(cb)); } + auto select() { return m_select_cb.bind(); } + void set_volume_callback(volume_delegate callback) { m_volume_cb = callback; } + template void set_volume_callback(const char *devname, void (FunctionClass::*callback)(int, int, bool), const char *name) + { + set_volume_callback(volume_delegate(callback, name, devname, static_cast(nullptr))); + } + template void set_volume_callback(void (FunctionClass::*callback)(int, int, bool), const char *name) + { + set_volume_callback(volume_delegate(callback, name, nullptr, static_cast(nullptr))); + } // serial interface DECLARE_WRITE_LINE_MEMBER( ce_w ); diff --git a/src/devices/sound/n63701x.h b/src/devices/sound/n63701x.h index 50046252a53..062a5047d4f 100644 --- a/src/devices/sound/n63701x.h +++ b/src/devices/sound/n63701x.h @@ -5,16 +5,6 @@ #pragma once -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_NAMCO_63701X_ADD(_tag, _clock) \ - MCFG_DEVICE_ADD(_tag, NAMCO_63701X, _clock) -#define MCFG_NAMCO_63701X_REPLACE(_tag, _clock) \ - MCFG_DEVICE_REPLACE(_tag, NAMCO_63701X, _clock) - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** diff --git a/src/devices/sound/namco.cpp b/src/devices/sound/namco.cpp index 99c016996ed..a8a0d3b9259 100644 --- a/src/devices/sound/namco.cpp +++ b/src/devices/sound/namco.cpp @@ -61,7 +61,7 @@ namco_audio_device::namco_audio_device(const machine_config &mconfig, device_typ , m_sample_rate(0) , m_f_fracbits(0) , m_voices(0) - , m_stereo(0) + , m_stereo(false) { } diff --git a/src/devices/sound/namco.h b/src/devices/sound/namco.h index 560090cb71d..730cd581e1d 100644 --- a/src/devices/sound/namco.h +++ b/src/devices/sound/namco.h @@ -6,20 +6,13 @@ #pragma once -#define MCFG_NAMCO_AUDIO_VOICES(_voices) \ - downcast(*device).set_voices(_voices); - -#define MCFG_NAMCO_AUDIO_STEREO(_stereo) \ - downcast(*device).set_stereo(_stereo); - - class namco_audio_device : public device_t, public device_sound_interface { public: // configuration void set_voices(int voices) { m_voices = voices; } - void set_stereo(int stereo) { m_stereo = stereo; } + void set_stereo(bool stereo) { m_stereo = stereo; } DECLARE_WRITE_LINE_MEMBER(sound_enable_w); @@ -71,7 +64,7 @@ protected: int m_f_fracbits; int m_voices; /* number of voices */ - int m_stereo; /* set to 1 to indicate stereo (e.g., System 1) */ + bool m_stereo; /* set to indicate stereo (e.g., System 1) */ /* decoded waveform table */ int16_t *m_waveform[MAX_VOLUME]; diff --git a/src/devices/sound/nile.h b/src/devices/sound/nile.h index fdfead14ead..20a7a0a0c99 100644 --- a/src/devices/sound/nile.h +++ b/src/devices/sound/nile.h @@ -6,16 +6,6 @@ #pragma once -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_NILE_ADD(_tag, _clock) \ - MCFG_DEVICE_ADD(_tag, NILE, _clock) -#define MCFG_NILE_REPLACE(_tag, _clock) \ - MCFG_DEVICE_REPLACE(_tag, NILE, _clock) - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** diff --git a/src/devices/sound/s14001a.h b/src/devices/sound/s14001a.h index 5c80f99be5d..692ae0866f7 100644 --- a/src/devices/sound/s14001a.h +++ b/src/devices/sound/s14001a.h @@ -8,13 +8,6 @@ #ifndef MAME_SOUND_S14001A_H #define MAME_SOUND_S14001A_H -#define MCFG_S14001A_BSY_HANDLER(_devcb) \ - downcast(*device).set_bsy_handler(DEVCB_##_devcb); - -#define MCFG_S14001A_EXT_READ_HANDLER(_devcb) \ - downcast(*device).set_ext_read_handler(DEVCB_##_devcb); - - class s14001a_device : public device_t, public device_sound_interface { public: diff --git a/src/mame/drivers/20pacgal.cpp b/src/mame/drivers/20pacgal.cpp index ef5f729c28c..77e1873ac23 100644 --- a/src/mame/drivers/20pacgal.cpp +++ b/src/mame/drivers/20pacgal.cpp @@ -397,14 +397,14 @@ WRITE_LINE_MEMBER(_20pacgal_state::vblank_irq) m_maincpu->set_input_line(0, HOLD_LINE); // TODO: assert breaks the inputs in 25pacman test mode } -MACHINE_CONFIG_START(_20pacgal_state::_20pacgal) - +void _20pacgal_state::_20pacgal(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z180, MAIN_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(_20pacgal_map) - MCFG_DEVICE_IO_MAP(_20pacgal_io_map) + Z180(config, m_maincpu, MAIN_CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &_20pacgal_state::_20pacgal_map); + m_maincpu->set_addrmap(AS_IO, &_20pacgal_state::_20pacgal_io_map); - EEPROM_93C46_8BIT(config, "eeprom"); + EEPROM_93C46_8BIT(config, m_eeprom); WATCHDOG_TIMER(config, "watchdog"); @@ -414,26 +414,27 @@ MACHINE_CONFIG_START(_20pacgal_state::_20pacgal) /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO_CUS30, NAMCO_AUDIO_CLOCK) - MCFG_NAMCO_AUDIO_VOICES(3) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + namco_cus30_device &namco(NAMCO_CUS30(config, "namco", NAMCO_AUDIO_CLOCK)); + namco.set_voices(3); + namco.add_route(ALL_OUTPUTS, "speaker", 1.0); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC - 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 + DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC + 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); +} - -MACHINE_CONFIG_START(_25pacman_state::_25pacman) +void _25pacman_state::_25pacman(machine_config &config) +{ _20pacgal(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(_25pacman_map) - MCFG_DEVICE_IO_MAP(_25pacman_io_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_25pacman_state::_25pacman_map); + m_maincpu->set_addrmap(AS_IO, &_25pacman_state::_25pacman_io_map); AMD_29LV200T(config, "flash"); -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/baraduke.cpp b/src/mame/drivers/baraduke.cpp index 71def525896..08f5262567d 100644 --- a/src/mame/drivers/baraduke.cpp +++ b/src/mame/drivers/baraduke.cpp @@ -111,7 +111,6 @@ DIP locations verified for: #include "includes/baraduke.h" #include "cpu/m6809/m6809.h" -#include "cpu/m6800/m6801.h" #include "machine/watchdog.h" #include "screen.h" #include "speaker.h" @@ -364,41 +363,41 @@ void baraduke_state::machine_start() } -MACHINE_CONFIG_START(baraduke_state::baraduke) - +void baraduke_state::baraduke(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(49'152'000)/32) // 68A09E - MCFG_DEVICE_PROGRAM_MAP(baraduke_map) + MC6809E(config, m_maincpu, XTAL(49'152'000)/32); // 68A09E + m_maincpu->set_addrmap(AS_PROGRAM, &baraduke_state::baraduke_map); - hd63701_cpu_device &mcu(HD63701(config, m_mcu, XTAL(49'152'000)/8)); - mcu.set_addrmap(AS_PROGRAM, &baraduke_state::mcu_map); - mcu.in_p1_cb().set(FUNC(baraduke_state::inputport_r)); /* input ports read */ - mcu.out_p1_cb().set(FUNC(baraduke_state::inputport_select_w)); /* input port select */ - mcu.in_p2_cb().set_constant(0xff); /* leds won't work otherwise */ - mcu.out_p2_cb().set(FUNC(baraduke_state::baraduke_lamps_w)); /* lamps */ + HD63701(config, m_mcu, XTAL(49'152'000)/8); + m_mcu->set_addrmap(AS_PROGRAM, &baraduke_state::mcu_map); + m_mcu->in_p1_cb().set(FUNC(baraduke_state::inputport_r)); /* input ports read */ + m_mcu->out_p1_cb().set(FUNC(baraduke_state::inputport_select_w)); /* input port select */ + m_mcu->in_p2_cb().set_constant(0xff); /* leds won't work otherwise */ + m_mcu->out_p2_cb().set(FUNC(baraduke_state::baraduke_lamps_w)); /* lamps */ - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */ + config.m_minimum_quantum = attotime::from_hz(6000); /* we need heavy synch */ WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(49'152'000)/8, 384, 0, 36*8, 264, 2*8, 30*8) - MCFG_SCREEN_UPDATE_DRIVER(baraduke_state, screen_update_baraduke) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, baraduke_state, screen_vblank_baraduke)) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(49'152'000)/8, 384, 0, 36*8, 264, 2*8, 30*8); + screen.set_screen_update(FUNC(baraduke_state::screen_update_baraduke)); + screen.screen_vblank().set(FUNC(baraduke_state::screen_vblank_baraduke)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_baraduke) - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_INIT_OWNER(baraduke_state, baraduke) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_baraduke); + PALETTE(config, m_palette, 2048); + m_palette->set_init(FUNC(baraduke_state::palette_init_baraduke)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2048) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + NAMCO_CUS30(config, m_cus30, XTAL(49'152'000)/2048); + m_cus30->set_voices(8); + m_cus30->add_route(ALL_OUTPUTS, "mono", 1.0); +} diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp index 75889944f04..ebe29ad6eb9 100644 --- a/src/mame/drivers/deco32.cpp +++ b/src/mame/drivers/deco32.cpp @@ -1854,33 +1854,32 @@ GFXDECODE_END // MACHINE DEFINITIONS //************************************************************************** -MACHINE_CONFIG_START(captaven_state::captaven) - +void captaven_state::captaven(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'000'000)/4) /* verified on pcb (Data East 101 custom)*/ - MCFG_DEVICE_PROGRAM_MAP(captaven_map) + ARM(config, m_maincpu, XTAL(28'000'000)/4); /* verified on pcb (Data East 101 custom)*/ + m_maincpu->set_addrmap(AS_PROGRAM, &captaven_state::captaven_map); h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000)/4/3)); /* pin 10 is 32mhz/4, pin 14 is High so internal divisor is 3 (verified on pcb) */ audiocpu.set_addrmap(AS_PROGRAM, &captaven_state::h6280_sound_map); audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0); - MCFG_INPUT_MERGER_ANY_HIGH("irq_merger") - MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE)) + INPUT_MERGER_ANY_HIGH(config, "irq_merger").output_handler().set_inputline("maincpu", ARM_IRQ_LINE); DECO_IRQ(config, m_deco_irq, 0); m_deco_irq->set_screen_tag(m_screen); m_deco_irq->raster2_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<0>)); m_deco_irq->vblank_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<1>)); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) - MCFG_SCREEN_UPDATE_DRIVER(captaven_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248); + m_screen->set_screen_update(FUNC(captaven_state::screen_update)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_captaven) - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(XBGR) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_captaven); + PALETTE(config, m_palette, 2048); + m_palette->set_format(PALETTE_FORMAT_XBGR); DECO16IC(config, m_deco_tilegen[0], 0); m_deco_tilegen[0]->set_split(0); @@ -1933,34 +1932,35 @@ MACHINE_CONFIG_START(captaven_state::captaven) m_ym2151->add_route(0, "lspeaker", 0.42); m_ym2151->add_route(1, "rspeaker", 0.42); - MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH) /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + OKIM6295(config, m_oki[0], XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH); /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */ + m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); - MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH) /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[1], XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */ + m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35); + m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35); +} // DE-0380-2 -MACHINE_CONFIG_START(fghthist_state::fghthist) - MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'000'000) / 4) - MCFG_DEVICE_PROGRAM_MAP(fghthist_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert) +void fghthist_state::fghthist(machine_config &config) +{ + ARM(config, m_maincpu, XTAL(28'000'000) / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &fghthist_state::fghthist_map); + m_maincpu->set_vblank_int("screen", FUNC(deco32_state::irq0_line_assert)); h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000) / 8)); audiocpu.set_addrmap(AS_PROGRAM, &fghthist_state::h6280_sound_custom_latch_map); audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0); - EEPROM_93C46_16BIT(config, "eeprom"); + EEPROM_93C46_16BIT(config, m_eeprom); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) - MCFG_SCREEN_UPDATE_DRIVER(fghthist_state, screen_update) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248); + m_screen->set_screen_update(FUNC(fghthist_state::screen_update)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fghthist) - MCFG_PALETTE_ADD("palette", 2048) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_fghthist); + PALETTE(config, m_palette, 2048); DECO16IC(config, m_deco_tilegen[0], 0); m_deco_tilegen[0]->set_split(0); @@ -2018,28 +2018,26 @@ MACHINE_CONFIG_START(fghthist_state::fghthist) m_ym2151->add_route(0, "lspeaker", 0.42); m_ym2151->add_route(1, "rspeaker", 0.42); - MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH); + m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); - MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH); + m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35); + m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35); +} // DE-0395-1 -MACHINE_CONFIG_START(fghthist_state::fghthsta) +void fghthist_state::fghthsta(machine_config &config) +{ fghthist(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(fghthsta_memmap) - - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(h6280_sound_map) + m_maincpu->set_addrmap(AS_PROGRAM, &fghthist_state::fghthsta_memmap); + m_audiocpu->set_addrmap(AS_PROGRAM, &fghthist_state::h6280_sound_map); config.device_remove("soundlatch"); m_ioprot->soundlatch_irq_cb().set_inputline(m_audiocpu, 0); -MACHINE_CONFIG_END +} // DE-0396-0 void fghthist_state::fghthistu(machine_config &config) @@ -2061,34 +2059,33 @@ void fghthist_state::fghthistu(machine_config &config) } // DE-0359-2 + Bottom board DE-0360-4 -MACHINE_CONFIG_START(dragngun_state::dragngun) - +void dragngun_state::dragngun(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'000'000) / 4) - MCFG_DEVICE_PROGRAM_MAP(dragngun_map) + ARM(config, m_maincpu, XTAL(28'000'000) / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &dragngun_state::dragngun_map); h6280_device &audiocpu(H6280(config, m_audiocpu, 32220000/8)); audiocpu.set_addrmap(AS_PROGRAM, &dragngun_state::h6280_sound_map); audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0); - MCFG_INPUT_MERGER_ANY_HIGH("irq_merger") - MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE)) + INPUT_MERGER_ANY_HIGH(config, "irq_merger").output_handler().set_inputline("maincpu", ARM_IRQ_LINE); DECO_IRQ(config, m_deco_irq, 0); m_deco_irq->set_screen_tag(m_screen); m_deco_irq->raster2_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<0>)); m_deco_irq->vblank_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<1>)); - EEPROM_93C46_16BIT(config, "eeprom"); + EEPROM_93C46_16BIT(config, m_eeprom); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) - MCFG_SCREEN_UPDATE_DRIVER(dragngun_state, screen_update) - //MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248); + m_screen->set_screen_update(FUNC(dragngun_state::screen_update)); + //m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM32) + BUFFERED_SPRITERAM32(config, m_spriteram); DECO16IC(config, m_deco_tilegen[0], 0); m_deco_tilegen[0]->set_split(0); @@ -2125,8 +2122,8 @@ MACHINE_CONFIG_START(dragngun_state::dragngun) DECO_ZOOMSPR(config, m_sprgenzoom, 0); m_sprgenzoom->set_gfxdecode(m_gfxdecode); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dragngun) - MCFG_PALETTE_ADD("palette", 2048) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_dragngun); + PALETTE(config, m_palette, 2048); DECO146PROT(config, m_ioprot, 0); m_ioprot->port_a_cb().set_ioport("INPUTS"); @@ -2145,35 +2142,33 @@ MACHINE_CONFIG_START(dragngun_state::dragngun) m_ym2151->add_route(0, "lspeaker", 0.42); m_ym2151->add_route(1, "rspeaker", 0.42); - MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH); + m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); - MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) + OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH); + m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35); + m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35); SPEAKER(config, "gun_speaker").front_center(); - MCFG_DEVICE_ADD("oki3", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "gun_speaker", 1.0) + OKIM6295(config, m_oki[2], 32220000/32, okim6295_device::PIN7_HIGH); + m_oki[2]->add_route(ALL_OUTPUTS, "gun_speaker", 1.0); - MCFG_DEVICE_ADD("vol_main", LC7535) - MCFG_LC7535_SELECT_CB(CONSTANT(1)) - MCFG_LC7535_VOLUME_CB(dragngun_state, volume_main_changed) + LC7535(config, m_vol_main); + m_vol_main->select().set_constant(1); + m_vol_main->set_volume_callback(FUNC(dragngun_state::volume_main_changed)); - MCFG_DEVICE_ADD("vol_gun", LC7535) - MCFG_LC7535_SELECT_CB(CONSTANT(0)) - MCFG_LC7535_VOLUME_CB(dragngun_state, volume_gun_changed) -MACHINE_CONFIG_END + LC7535(config, m_vol_gun); + m_vol_gun->select().set_constant(0); + m_vol_gun->set_volume_callback(FUNC(dragngun_state::volume_gun_changed)); +} -MACHINE_CONFIG_START(dragngun_state::lockloadu) +void dragngun_state::lockloadu(machine_config &config) +{ dragngun(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(lockloadu_map) - - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(lockloadu_sound_map) + m_maincpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockloadu_map); + m_audiocpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockloadu_sound_map); m_deco_irq->lightgun_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<2>)); @@ -2181,24 +2176,22 @@ MACHINE_CONFIG_START(dragngun_state::lockloadu) m_deco_tilegen[1]->set_pf2_size(DECO_32x32); // lockload definitely wants pf34 half width.. m_ym2151->port_write_handler().set(FUNC(dragngun_state::lockload_okibank_lo_w)); -MACHINE_CONFIG_END +} // DE-0420-1 + Bottom board DE-0421-0 -MACHINE_CONFIG_START(dragngun_state::lockload) - +void dragngun_state::lockload(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'000'000) / 4) - MCFG_DEVICE_PROGRAM_MAP(lockload_map) + ARM(config, m_maincpu, XTAL(28'000'000) / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockload_map); - MCFG_INPUT_MERGER_ANY_HIGH("irq_merger") - MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE)) + INPUT_MERGER_ANY_HIGH(config, "irq_merger").output_handler().set_inputline("maincpu", ARM_IRQ_LINE); - MCFG_DEVICE_ADD("audiocpu", Z80, 32220000/8) - MCFG_DEVICE_PROGRAM_MAP(lockload_sound_map) - MCFG_DEVICE_IO_MAP(z80_sound_io) + Z80(config, m_audiocpu, 32220000/8); + m_audiocpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockload_sound_map); + m_audiocpu->set_addrmap(AS_IO, &dragngun_state::z80_sound_io); - MCFG_INPUT_MERGER_ANY_HIGH("sound_irq_merger") - MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) + INPUT_MERGER_ANY_HIGH(config, "sound_irq_merger").output_handler().set_inputline("audiocpu", INPUT_LINE_IRQ0); DECO_IRQ(config, m_deco_irq, 0); m_deco_irq->set_screen_tag(m_screen); @@ -2208,19 +2201,19 @@ MACHINE_CONFIG_START(dragngun_state::lockload) m_deco_irq->vblank_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<1>)); m_deco_irq->lightgun_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<2>)); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* to improve main<->audio comms */ + config.m_minimum_quantum = attotime::from_hz(6000); /* to improve main<->audio comms */ - EEPROM_93C46_16BIT(config, "eeprom"); + EEPROM_93C46_16BIT(config, m_eeprom); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) - MCFG_SCREEN_UPDATE_DRIVER(dragngun_state, screen_update) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248); + m_screen->set_screen_update(FUNC(dragngun_state::screen_update)); - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM32) + BUFFERED_SPRITERAM32(config, m_spriteram); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dragngun) - MCFG_PALETTE_ADD("palette", 2048) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_dragngun); + PALETTE(config, m_palette, 2048); DECO16IC(config, m_deco_tilegen[0], 0); m_deco_tilegen[0]->set_split(0); @@ -2274,31 +2267,31 @@ MACHINE_CONFIG_START(dragngun_state::lockload) m_ym2151->add_route(0, "lspeaker", 0.42); m_ym2151->add_route(1, "rspeaker", 0.42); - MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH); + m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); - MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) + OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH); + m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35); + m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35); - MCFG_DEVICE_ADD("vol_main", LC7535) - MCFG_LC7535_SELECT_CB(CONSTANT(1)) - MCFG_LC7535_VOLUME_CB(dragngun_state, volume_main_changed) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nslasher_state::tattass) + LC7535(config, m_vol_main); + m_vol_main->select().set_constant(1); + m_vol_main->set_volume_callback(FUNC(dragngun_state::volume_main_changed)); +} +void nslasher_state::tattass(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", ARM, 28000000/4) // unconfirmed - MCFG_DEVICE_PROGRAM_MAP(tattass_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert) + ARM(config, m_maincpu, 28000000/4); // unconfirmed + m_maincpu->set_addrmap(AS_PROGRAM, &nslasher_state::tattass_map); + m_maincpu->set_vblank_int("screen", FUNC(deco32_state::irq0_line_assert)); - EEPROM_93C76_8BIT(config, "eeprom"); + EEPROM_93C76_8BIT(config, m_eeprom); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) - MCFG_SCREEN_UPDATE_DRIVER(nslasher_state, screen_update) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248); + m_screen->set_screen_update(FUNC(nslasher_state::screen_update)); DECO_ACE(config, m_deco_ace, 0); @@ -2342,7 +2335,7 @@ MACHINE_CONFIG_START(nslasher_state::tattass) m_sprgen[1]->set_gfx_region(4); m_sprgen[1]->set_gfxdecode_tag(m_gfxdecode); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_deco_ace, gfx_tattass) + GFXDECODE(config, m_gfxdecode, m_deco_ace, gfx_tattass); DECO104PROT(config, m_ioprot, 0); m_ioprot->port_a_cb().set_ioport("IN0"); @@ -2353,29 +2346,28 @@ MACHINE_CONFIG_START(nslasher_state::tattass) /* sound hardware */ DECOBSMT(config, m_decobsmt, 0); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nslasher_state::nslasher) +} +void nslasher_state::nslasher(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'322'000) / 4) - MCFG_DEVICE_PROGRAM_MAP(nslasher_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert) + ARM(config, m_maincpu, XTAL(28'322'000) / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &nslasher_state::nslasher_map); + m_maincpu->set_vblank_int("screen", FUNC(deco32_state::irq0_line_assert)); - MCFG_DEVICE_ADD("audiocpu", Z80, 32220000/9) - MCFG_DEVICE_PROGRAM_MAP(z80_sound_map) - MCFG_DEVICE_IO_MAP(z80_sound_io) + Z80(config, m_audiocpu, 32220000/9); + m_audiocpu->set_addrmap(AS_PROGRAM, &nslasher_state::z80_sound_map); + m_audiocpu->set_addrmap(AS_IO, &nslasher_state::z80_sound_io); - MCFG_INPUT_MERGER_ANY_HIGH("sound_irq_merger") - MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) + INPUT_MERGER_ANY_HIGH(config, "sound_irq_merger").output_handler().set_inputline("audiocpu", INPUT_LINE_IRQ0); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* to improve main<->audio comms */ + config.m_minimum_quantum = attotime::from_hz(6000); /* to improve main<->audio comms */ - EEPROM_93C46_16BIT(config, "eeprom"); + EEPROM_93C46_16BIT(config, m_eeprom); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(28'322'000) / 4, 442, 0, 320, 274, 8, 248) - MCFG_SCREEN_UPDATE_DRIVER(nslasher_state, screen_update) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(28'322'000) / 4, 442, 0, 320, 274, 8, 248); + m_screen->set_screen_update(FUNC(nslasher_state::screen_update)); DECO_ACE(config, m_deco_ace, 0); @@ -2419,7 +2411,7 @@ MACHINE_CONFIG_START(nslasher_state::nslasher) m_sprgen[1]->set_gfx_region(4); m_sprgen[1]->set_gfxdecode_tag(m_gfxdecode); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_deco_ace, gfx_nslasher) + GFXDECODE(config, m_gfxdecode, m_deco_ace, gfx_nslasher); DECO104PROT(config, m_ioprot, 0); m_ioprot->port_a_cb().set_ioport("IN0"); @@ -2438,14 +2430,14 @@ MACHINE_CONFIG_START(nslasher_state::nslasher) m_ym2151->add_route(0, "lspeaker", 0.40); m_ym2151->add_route(1, "rspeaker", 0.40); - MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) + OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH); + m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 0.80); + m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 0.80); - MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH); + m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.10); + m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.10); +} // the US release uses a H6280 instead of a Z80, much like Lock 'n' Loaded void nslasher_state::nslasheru(machine_config &config) diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp index 54c43da611b..6209284c169 100644 --- a/src/mame/drivers/fidel6502.cpp +++ b/src/mame/drivers/fidel6502.cpp @@ -474,7 +474,8 @@ public: m_ppi8255(*this, "ppi8255"), m_rombank(*this, "rombank"), m_mainmap(*this, "mainmap"), - m_div_config(*this, "div_config") + m_div_config(*this, "div_config"), + m_irq_on(*this, "irq_on") { } void csc(machine_config &config); @@ -528,6 +529,7 @@ private: optional_memory_bank m_rombank; optional_device m_mainmap; optional_ioport m_div_config; + optional_device m_irq_on; // common TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); } @@ -1831,16 +1833,16 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -MACHINE_CONFIG_START(fidel6502_state::rsc) - +void fidel6502_state::rsc(machine_config &config) +{ /* basic machine hardware */ M6502(config, m_maincpu, 1800000); // measured approx 1.81MHz m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::rsc_map); - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(546)) // from 555 timer, measured - MCFG_TIMER_START_DELAY(attotime::from_hz(546) - attotime::from_usec(38)) // active for 38us + TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(546)); // from 555 timer, measured + m_irq_on->set_start_delay(attotime::from_hz(546) - attotime::from_usec(38)); // active for 38us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(546)) + TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(546)); pia6821_device &pia(PIA6821(config, "pia", 0)); // MOS 6520 pia.readpa_handler().set(FUNC(fidel6502_state::csc_pia1_pa_r)); @@ -1851,26 +1853,26 @@ MACHINE_CONFIG_START(fidel6502_state::rsc) pia.ca2_handler().set(FUNC(fidel6502_state::csc_pia1_ca2_w)); pia.cb2_handler().set(FUNC(fidel6502_state::csc_pia1_cb2_w)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_rsc_v2); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidel6502_state::csc) +} +void fidel6502_state::csc(machine_config &config) +{ /* basic machine hardware */ M6502(config, m_maincpu, 3.9_MHz_XTAL/2); // from 3.9MHz resonator m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::csc_map); - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(38.4_kHz_XTAL/64)) // through 4060 IC, 600Hz - MCFG_TIMER_START_DELAY(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)) // edge! - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(38.4_kHz_XTAL/64)) + TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(38.4_kHz_XTAL/64)); // through 4060 IC, 600Hz + m_irq_on->set_start_delay(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)); // edge! + TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(38.4_kHz_XTAL/64)); pia6821_device &pia0(PIA6821(config, "pia0", 0)); pia0.readpb_handler().set(FUNC(fidel6502_state::csc_pia0_pb_r)); @@ -1887,7 +1889,7 @@ MACHINE_CONFIG_START(fidel6502_state::csc) pia1.ca2_handler().set(FUNC(fidel6502_state::csc_pia1_ca2_w)); pia1.cb2_handler().set(FUNC(fidel6502_state::csc_pia1_cb2_w)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_csc); /* sound hardware */ @@ -1896,11 +1898,11 @@ MACHINE_CONFIG_START(fidel6502_state::csc) speech.ext_read().set(FUNC(fidel6502_state::csc_speech_r)); speech.add_route(ALL_OUTPUTS, "speaker", 0.75); - DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); -MACHINE_CONFIG_END +} void fidel6502_state::su9(machine_config &config) { @@ -1913,20 +1915,21 @@ void fidel6502_state::su9(machine_config &config) config.set_default_layout(layout_fidel_su9); } -MACHINE_CONFIG_START(fidel6502_state::eas_base) +void fidel6502_state::eas_base(machine_config &config) +{ /* basic machine hardware */ R65C02(config, m_maincpu, 3_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::div_trampoline); - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(38.4_kHz_XTAL/64)) // through 4060 IC, 600Hz - MCFG_TIMER_START_DELAY(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)) // edge! + TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(38.4_kHz_XTAL/64)); // through 4060 IC, 600Hz + m_irq_on->set_start_delay(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)); // edge! - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(38.4_kHz_XTAL/64)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(3_MHz_XTAL)) + TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(38.4_kHz_XTAL/64)); + TIMER(config, "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(3_MHz_XTAL)); ADDRESS_MAP_BANK(config, m_mainmap).set_map(&fidel6502_state::eas_map).set_options(ENDIANNESS_LITTLE, 8, 16); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_eas); /* sound hardware */ @@ -1935,7 +1938,7 @@ MACHINE_CONFIG_START(fidel6502_state::eas_base) speech.ext_read().set(FUNC(fidel6502_state::csc_speech_r)); speech.add_route(ALL_OUTPUTS, "speaker", 0.75); - DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); @@ -1945,7 +1948,7 @@ MACHINE_CONFIG_START(fidel6502_state::eas_base) cartslot.set_device_load(device_image_load_delegate(&fidelbase_state::device_image_load_scc_cartridge, this)); SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); -MACHINE_CONFIG_END +} void fidel6502_state::eas(machine_config &config) { @@ -1960,314 +1963,324 @@ void fidel6502_state::eas(machine_config &config) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); } -MACHINE_CONFIG_START(fidel6502_state::pc) +void fidel6502_state::pc(machine_config &config) +{ eas_base(config); /* basic machine hardware */ m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4 - MCFG_DEVICE_REMOVE("dummy_timer") - MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(4_MHz_XTAL)) + TIMER(config.replace(), "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(4_MHz_XTAL)); m_mainmap->set_addrmap(AS_PROGRAM, &fidel6502_state::pc_map); config.set_default_layout(layout_fidel_pc); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(fidel6502_state::eag) +void fidel6502_state::eag(machine_config &config) +{ eas(config); /* basic machine hardware */ m_maincpu->set_clock(5_MHz_XTAL); // R65C02P4 - MCFG_DEVICE_REMOVE("dummy_timer") - MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(5_MHz_XTAL)) + TIMER(config.replace(), "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(5_MHz_XTAL)); m_mainmap->set_addrmap(AS_PROGRAM, &fidel6502_state::eag_map); config.set_default_layout(layout_fidel_eag); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidel6502_state::sc9d) +} +void fidel6502_state::sc9d(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502, 3.9_MHz_XTAL/2) // R6502AP, 3.9MHz resonator - MCFG_DEVICE_PROGRAM_MAP(sc9d_map) - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(610)) // from 555 timer (22nF, 102K, 2.7K) - MCFG_TIMER_START_DELAY(attotime::from_hz(610) - attotime::from_usec(41)) // active for 41us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(610)) + M6502(config, m_maincpu, 3.9_MHz_XTAL/2); // R6502AP, 3.9MHz resonator + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::sc9d_map); + TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(610)); // from 555 timer (22nF, 102K, 2.7K) + m_irq_on->set_start_delay(attotime::from_hz(610) - attotime::from_usec(41)); // active for 41us + TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(610)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_sc9); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) + + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); /* cartridge */ - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc") - MCFG_GENERIC_EXTENSIONS("bin,dat") - MCFG_GENERIC_LOAD(fidelbase_state, scc_cartridge) - MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc") -MACHINE_CONFIG_END + generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc", "bin,dat")); + cartslot.set_device_load(device_image_load_delegate(&fidelbase_state::device_image_load_scc_cartridge, this)); -MACHINE_CONFIG_START(fidel6502_state::sc9b) + SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); +} + +void fidel6502_state::sc9b(machine_config &config) +{ sc9d(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu", M6502, 1500000) // from ceramic resonator "681 JSA", measured - MCFG_DEVICE_PROGRAM_MAP(sc9_map) -MACHINE_CONFIG_END + M6502(config.replace(), m_maincpu, 1500000); // from ceramic resonator "681 JSA", measured + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::sc9_map); +} -MACHINE_CONFIG_START(fidel6502_state::sc9c) +void fidel6502_state::sc9c(machine_config &config) +{ sc9b(config); /* basic machine hardware */ MCFG_MACHINE_RESET_OVERRIDE(fidel6502_state, sc9c) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(fidel6502_state::playmatic) +void fidel6502_state::playmatic(machine_config &config) +{ sc9b(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(3100000) // approximation + m_maincpu->set_clock(3100000); // approximation config.set_default_layout(layout_fidel_playmatic); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidel6502_state::sc12) +} +void fidel6502_state::sc12(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", R65C02, 3_MHz_XTAL) // R65C02P3 - MCFG_DEVICE_PROGRAM_MAP(div_trampoline) - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(630)) // from 556 timer (22nF, 102K, 1K) - MCFG_TIMER_START_DELAY(attotime::from_hz(630) - attotime::from_nsec(15250)) // active for 15.25us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(630)) + R65C02(config, m_maincpu, 3_MHz_XTAL); // R65C02P3 + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::div_trampoline); + TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(630)); // from 556 timer (22nF, 102K, 1K) + m_irq_on->set_start_delay(attotime::from_hz(630) - attotime::from_nsec(15250)); // active for 15.25us + TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(630)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(3_MHz_XTAL)) + TIMER(config, "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(3_MHz_XTAL)); - ADDRESS_MAP_BANK(config, "mainmap").set_map(&fidel6502_state::sc12_map).set_options(ENDIANNESS_LITTLE, 8, 16); + ADDRESS_MAP_BANK(config, m_mainmap).set_map(&fidel6502_state::sc12_map).set_options(ENDIANNESS_LITTLE, 8, 16); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_sc12); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) + + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); /* cartridge */ - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc") - MCFG_GENERIC_EXTENSIONS("bin,dat") - MCFG_GENERIC_LOAD(fidelbase_state, scc_cartridge) - MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc") -MACHINE_CONFIG_END + generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc", "bin,dat")); + cartslot.set_device_load(device_image_load_delegate(&fidelbase_state::device_image_load_scc_cartridge, this)); -MACHINE_CONFIG_START(fidel6502_state::sc12b) + SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); +} + +void fidel6502_state::sc12b(machine_config &config) +{ sc12(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(4_MHz_XTAL) // R65C02P4 + m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4 // change irq timer frequency - MCFG_DEVICE_REMOVE("irq_on") - MCFG_DEVICE_REMOVE("irq_off") - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(596)) // from 556 timer (22nF, 82K+26K, 1K) - MCFG_TIMER_START_DELAY(attotime::from_hz(596) - attotime::from_nsec(15250)) // active for 15.25us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(596)) + TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(596)); // from 556 timer (22nF, 82K+26K, 1K) + m_irq_on->set_start_delay(attotime::from_hz(596) - attotime::from_nsec(15250)); // active for 15.25us + TIMER(config.replace(), "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(596)); - MCFG_DEVICE_REMOVE("dummy_timer") - MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(4_MHz_XTAL)) -MACHINE_CONFIG_END + TIMER(config.replace(), "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(4_MHz_XTAL)); +} -MACHINE_CONFIG_START(fidel6502_state::as12) +void fidel6502_state::as12(machine_config &config) +{ sc12b(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("mainmap") - MCFG_DEVICE_PROGRAM_MAP(as12_map) + m_mainmap->set_addrmap(AS_PROGRAM, &fidel6502_state::as12_map); // change irq timer frequency - MCFG_DEVICE_REMOVE("irq_on") - MCFG_DEVICE_REMOVE("irq_off") - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(585)) // from 556 timer (22nF, 110K, 1K) - MCFG_TIMER_START_DELAY(attotime::from_hz(585) - attotime::from_nsec(15250)) // active for 15.25us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(585)) + TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(585)); // from 556 timer (22nF, 110K, 1K) + m_irq_on->set_start_delay(attotime::from_hz(585) - attotime::from_nsec(15250)); // active for 15.25us + TIMER(config.replace(), "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(585)); config.set_default_layout(layout_fidel_as12); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidel6502_state::fexcel) +} +void fidel6502_state::fexcel(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M65SC02, 12_MHz_XTAL/4) // G65SC102P-3, 12.0M ceramic resonator - MCFG_DEVICE_PROGRAM_MAP(fexcel_map) - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(630)) // from 556 timer (22nF, 102K, 1K) - MCFG_TIMER_START_DELAY(attotime::from_hz(630) - attotime::from_nsec(15250)) // active for 15.25us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(630)) + M65SC02(config, m_maincpu, 12_MHz_XTAL/4); // G65SC102P-3, 12.0M ceramic resonator + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcel_map); + TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(630)); // from 556 timer (22nF, 102K, 1K) + m_irq_on->set_start_delay(attotime::from_hz(630) - attotime::from_nsec(15250)); // active for 15.25us + TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(630)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_ex); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); +} -MACHINE_CONFIG_START(fidel6502_state::fexcel4) +void fidel6502_state::fexcel4(machine_config &config) +{ fexcel(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu", R65C02, 4_MHz_XTAL) // R65C02P4 - MCFG_DEVICE_PROGRAM_MAP(fexcel_map) -MACHINE_CONFIG_END + R65C02(config.replace(), m_maincpu, 4_MHz_XTAL); // R65C02P4 + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcel_map); +} -MACHINE_CONFIG_START(fidel6502_state::fexcelb) +void fidel6502_state::fexcelb(machine_config &config) +{ fexcel(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(fexcelb_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelb_map); +} -MACHINE_CONFIG_START(fidel6502_state::fexcelp) +void fidel6502_state::fexcelp(machine_config &config) +{ fexcel(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu", R65C02, 5_MHz_XTAL) // R65C02P4 - MCFG_DEVICE_PROGRAM_MAP(fexcelp_map) -MACHINE_CONFIG_END + R65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // R65C02P4 + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelp_map); +} -MACHINE_CONFIG_START(fidel6502_state::granits) +void fidel6502_state::granits(machine_config &config) +{ fexcelp(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(8_MHz_XTAL) // overclocked -MACHINE_CONFIG_END + m_maincpu->set_clock(8_MHz_XTAL); // overclocked +} -MACHINE_CONFIG_START(fidel6502_state::fdes2100) +void fidel6502_state::fdes2100(machine_config &config) +{ fexcel(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu", M65C02, 5_MHz_XTAL) // WDC 65C02 - MCFG_DEVICE_PROGRAM_MAP(fexcelp_map) + M65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // WDC 65C02 + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelp_map); // change irq timer frequency - MCFG_DEVICE_REMOVE("irq_on") - MCFG_DEVICE_REMOVE("irq_off") - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(585)) // from 556 timer (22nF, 110K, 1K) - MCFG_TIMER_START_DELAY(attotime::from_hz(585) - attotime::from_nsec(15250)) // active for 15.25us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(585)) + TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(585)); // from 556 timer (22nF, 110K, 1K) + m_irq_on->set_start_delay(attotime::from_hz(585) - attotime::from_nsec(15250)); // active for 15.25us + TIMER(config.replace(), "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(585)); config.set_default_layout(layout_fidel_des); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(fidel6502_state::fdes2000) +void fidel6502_state::fdes2000(machine_config &config) +{ fdes2100(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu", R65C02, 3_MHz_XTAL) // RP65C02G - MCFG_DEVICE_PROGRAM_MAP(fexcelp_map) -MACHINE_CONFIG_END + R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // RP65C02G + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelp_map); +} -MACHINE_CONFIG_START(fidel6502_state::fexcelv) +void fidel6502_state::fexcelv(machine_config &config) +{ fexcelb(config); /* sound hardware */ - MCFG_DEVICE_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz - MCFG_S14001A_EXT_READ_HANDLER(READ8(*this, fidel6502_state, fexcelv_speech_r)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) -MACHINE_CONFIG_END + S14001A(config, m_speech, 25000); // R/C circuit, around 25khz + m_speech->ext_read().set(FUNC(fidel6502_state::fexcelv_speech_r)); + m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75); +} -MACHINE_CONFIG_START(fidel6502_state::fexceld) +void fidel6502_state::fexceld(machine_config &config) +{ fexcelb(config); /* basic machine hardware */ config.set_default_layout(layout_fidel_exd); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidel6502_state::fdes2100d) +} +void fidel6502_state::fdes2100d(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M65C02, 6_MHz_XTAL) // W65C02P-6 - MCFG_DEVICE_PROGRAM_MAP(fdesdis_map) - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(630)) // from 556 timer (22nF, 102K, 1K) - MCFG_TIMER_START_DELAY(attotime::from_hz(630) - attotime::from_nsec(15250)) // active for 15.25us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(630)) + M65C02(config, m_maincpu, 6_MHz_XTAL); // W65C02P-6 + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fdesdis_map); + TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(630)); // from 556 timer (22nF, 102K, 1K) + m_irq_on->set_start_delay(attotime::from_hz(630) - attotime::from_nsec(15250)); // active for 15.25us + TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(630)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_desdis); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); +} -MACHINE_CONFIG_START(fidel6502_state::fdes2000d) +void fidel6502_state::fdes2000d(machine_config &config) +{ fdes2100d(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu", R65C02, 3_MHz_XTAL) // R65C02P3 - MCFG_DEVICE_PROGRAM_MAP(fdesdis_map) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidel6502_state::fphantom) + R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // R65C02P3 + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fdesdis_map); +} +void fidel6502_state::fphantom(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", R65C02, 4.9152_MHz_XTAL) // R65C02P4 - MCFG_DEVICE_PERIODIC_INT_DRIVER(fidel6502_state, irq0_line_hold, 600) // guessed - MCFG_DEVICE_PROGRAM_MAP(fphantom_map) + R65C02(config, m_maincpu, 4.9152_MHz_XTAL); // R65C02P4 + m_maincpu->set_periodic_int(FUNC(fidel6502_state::irq0_line_hold), attotime::from_hz(600)); // guessed + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fphantom_map); MCFG_MACHINE_RESET_OVERRIDE(fidel6502_state, fphantom) - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); //config.set_default_layout(layout_fidel_phantom); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidel6502_state::chesster) + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); +} +void fidel6502_state::chesster(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", R65C02, 5_MHz_XTAL) // RP65C02G - MCFG_DEVICE_PROGRAM_MAP(chesster_map) - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(9615)) // R/C circuit, measured - MCFG_TIMER_START_DELAY(attotime::from_hz(9615) - attotime::from_nsec(2600)) // active for 2.6us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(9615)) + R65C02(config, m_maincpu, 5_MHz_XTAL); // RP65C02G + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::chesster_map); + TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(9615)); // R/C circuit, measured + m_irq_on->set_start_delay(attotime::from_hz(9615) - attotime::from_nsec(2600)); // active for 2.6us + TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(9615)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_chesster); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac8", DAC_8BIT_R2R, 0) // m74hc374b1.ic1 + 8l513_02.z2 - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac8", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac8", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END + DAC_8BIT_R2R(config, "dac8", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // m74hc374b1.ic1 + 8l513_02.z2 + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); + vref.set_output(5.0); + vref.add_route(0, "dac8", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac8", -1.0, DAC_VREF_NEG_INPUT); +} -MACHINE_CONFIG_START(fidel6502_state::kishon) +void fidel6502_state::kishon(machine_config &config) +{ chesster(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(3.579545_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(kishon_map) -MACHINE_CONFIG_END + m_maincpu->set_clock(3.579545_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::kishon_map); +} diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp index 2fe3a55b9b7..f5038d8b269 100644 --- a/src/mame/drivers/fidelz80.cpp +++ b/src/mame/drivers/fidelz80.cpp @@ -520,7 +520,8 @@ public: m_ppi8255(*this, "ppi8255"), m_i8243(*this, "i8243"), m_beeper_off(*this, "beeper_off"), - m_beeper(*this, "beeper") + m_beeper(*this, "beeper"), + m_irq_on(*this, "irq_on") { } void cc10(machine_config &config); @@ -546,6 +547,7 @@ private: optional_device m_i8243; optional_device m_beeper_off; optional_device m_beeper; + optional_device m_irq_on; TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); } TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); } @@ -1660,46 +1662,48 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -MACHINE_CONFIG_START(fidelz80_state::bcc) - +void fidelz80_state::bcc(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 3.579545_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(bcc_map) - MCFG_DEVICE_IO_MAP(bcc_io) + Z80(config, m_maincpu, 3.579545_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::bcc_map); + m_maincpu->set_addrmap(AS_IO, &fidelz80_state::bcc_io); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_bcc); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidelz80_state::scc) + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + 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); +} +void fidelz80_state::scc(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 3.9_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(scc_map) - MCFG_DEVICE_IO_MAP(scc_io) + Z80(config, m_maincpu, 3.9_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::scc_map); + m_maincpu->set_addrmap(AS_IO, &fidelz80_state::scc_io); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_sc8); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidelz80_state::cc10) + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + 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); +} +void fidelz80_state::cc10(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 4_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(cc10_map) - MCFG_DEVICE_IO_MAP(vcc_io) + Z80(config, m_maincpu, 4_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::cc10_map); + m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vcc_io); I8255(config, m_ppi8255); m_ppi8255->out_pa_callback().set(FUNC(fidelz80_state::cc10_ppi_porta_w)); @@ -1710,22 +1714,22 @@ MACHINE_CONFIG_START(fidelz80_state::cc10) m_ppi8255->tri_pb_callback().set_constant(0); m_ppi8255->out_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_w)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_cc); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("beeper", BEEP, 1360) // approximation, from 556 timer ic - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_TIMER_DRIVER_ADD("beeper_off", fidelz80_state, beeper_off_callback) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidelz80_state::vcc) + BEEP(config, m_beeper, 1360); // approximation, from 556 timer ic + m_beeper->add_route(ALL_OUTPUTS, "speaker", 0.25); + TIMER(config, "beeper_off").configure_generic(FUNC(fidelz80_state::beeper_off_callback)); +} +void fidelz80_state::vcc(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 4_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(vcc_map) - MCFG_DEVICE_IO_MAP(vcc_io) + Z80(config, m_maincpu, 4_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::vcc_map); + m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vcc_io); I8255(config, m_ppi8255); m_ppi8255->out_pa_callback().set(FUNC(fidelz80_state::vcc_ppi_porta_w)); @@ -1736,25 +1740,25 @@ MACHINE_CONFIG_START(fidelz80_state::vcc) m_ppi8255->in_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_r)); m_ppi8255->out_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_w)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_vcc); MCFG_MACHINE_START_OVERRIDE(fidelz80_state,vcc) /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz - MCFG_S14001A_EXT_READ_HANDLER(READ8(*this, fidelz80_state, vcc_speech_r)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidelz80_state::vsc) + S14001A(config, m_speech, 25000); // R/C circuit, around 25khz + m_speech->ext_read().set(FUNC(fidelz80_state::vcc_speech_r)); + m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75); +} +void fidelz80_state::vsc(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 3.9_MHz_XTAL) // 3.9MHz resonator - MCFG_DEVICE_PROGRAM_MAP(vsc_map) - MCFG_DEVICE_IO_MAP(vsc_io) - MCFG_DEVICE_PERIODIC_INT_DRIVER(fidelz80_state, nmi_line_pulse, 587) // 555 timer, measured + Z80(config, m_maincpu, 3.9_MHz_XTAL); // 3.9MHz resonator + m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::vsc_map); + m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vsc_io); + m_maincpu->set_periodic_int(FUNC(fidelz80_state::nmi_line_pulse), attotime::from_hz(587)); // 555 timer, measured I8255(config, m_ppi8255); m_ppi8255->out_pa_callback().set(FUNC(fidelz80_state::vsc_ppi_porta_w)); @@ -1766,23 +1770,23 @@ MACHINE_CONFIG_START(fidelz80_state::vsc) m_z80pio->in_pb_callback().set(FUNC(fidelz80_state::vsc_pio_portb_r)); m_z80pio->out_pb_callback().set(FUNC(fidelz80_state::vsc_pio_portb_w)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_vsc); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz - MCFG_S14001A_EXT_READ_HANDLER(READ8(*this, fidelz80_state, vcc_speech_r)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidelz80_state::vbrc) + S14001A(config, m_speech, 25000); // R/C circuit, around 25khz + m_speech->ext_read().set(FUNC(fidelz80_state::vcc_speech_r)); + m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75); +} +void fidelz80_state::vbrc(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 5_MHz_XTAL/2) - MCFG_DEVICE_PROGRAM_MAP(vbrc_main_map) - MCFG_DEVICE_IO_MAP(vbrc_main_io) - MCFG_QUANTUM_PERFECT_CPU("maincpu") + Z80(config, m_maincpu, 5_MHz_XTAL/2); + m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::vbrc_main_map); + m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vbrc_main_io); + config.m_perfect_cpu_quantum = subtag("maincpu"); I8041(config, m_mcu, 5_MHz_XTAL); m_mcu->p1_out_cb().set(FUNC(fidelz80_state::vbrc_mcu_p1_w)); @@ -1798,34 +1802,35 @@ MACHINE_CONFIG_START(fidelz80_state::vbrc) m_i8243->p6_out_cb().set(FUNC(fidelz80_state::vbrc_ioexp_port_w<2>)); m_i8243->p7_out_cb().set(FUNC(fidelz80_state::vbrc_ioexp_port_w<3>)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_vbrc); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz - MCFG_S14001A_BSY_HANDLER(INPUTLINE("maincpu", Z80_INPUT_LINE_WAIT)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(fidelz80_state::dsc) + S14001A(config, m_speech, 25000); // R/C circuit, around 25khz + m_speech->bsy().set_inputline("maincpu", Z80_INPUT_LINE_WAIT); + m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75); +} +void fidelz80_state::dsc(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 3.9_MHz_XTAL) // 3.9MHz resonator - MCFG_DEVICE_PROGRAM_MAP(dsc_map) - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidelz80_state, irq_on, attotime::from_hz(523)) // from 555 timer (22nF, 120K, 2.7K) - MCFG_TIMER_START_DELAY(attotime::from_hz(523) - attotime::from_usec(41)) // active for 41us - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidelz80_state, irq_off, attotime::from_hz(523)) + Z80(config, m_maincpu, 3.9_MHz_XTAL); // 3.9MHz resonator + m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::dsc_map); + TIMER(config, m_irq_on).configure_periodic(FUNC(fidelz80_state::irq_on), attotime::from_hz(523)); // from 555 timer (22nF, 120K, 2.7K) + m_irq_on->set_start_delay(attotime::from_hz(523) - attotime::from_usec(41)); // active for 41us + TIMER(config, "irq_off").configure_periodic(FUNC(fidelz80_state::irq_off), attotime::from_hz(523)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_fidel_dsc); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + 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); +} diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp index 22ca1a5cb55..5461f784450 100644 --- a/src/mame/drivers/galaga.cpp +++ b/src/mame/drivers/galaga.cpp @@ -1585,17 +1585,17 @@ WRITE_LINE_MEMBER(galaga_state::vblank_irq) m_subcpu->set_input_line(0, ASSERT_LINE); } -MACHINE_CONFIG_START(bosco_state::bosco) - +void bosco_state::bosco(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(bosco_map) + Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &bosco_state::bosco_map); - MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(bosco_map) + Z80(config, m_subcpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &bosco_state::bosco_map); - MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(bosco_map) + Z80(config, m_subcpu2, MASTER_CLOCK/6); /* 3.072 MHz */ + m_subcpu2->set_addrmap(AS_PROGRAM, &bosco_state::bosco_map); ls259_device &misclatch(LS259(config, "misclatch")); // 3C on CPU board misclatch.q_out_cb<0>().set(FUNC(galaga_state::irq1_clear_w)); @@ -1650,8 +1650,8 @@ MACHINE_CONFIG_START(bosco_state::bosco) //m_videolatch->q_out_cb<7>().append("52xx", FUNC(namco_52xx_device, reset_w)); WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */ - /* synchronization of the CPUs */ + + config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */ /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); @@ -1661,35 +1661,35 @@ MACHINE_CONFIG_START(bosco_state::bosco) m_screen->screen_vblank().append(FUNC(galaga_state::vblank_irq)); m_screen->set_palette("palette"); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bosco) - MCFG_PALETTE_ADD("palette", 64*4+64*4+4+64) - MCFG_PALETTE_INDIRECT_ENTRIES(32+64) - MCFG_PALETTE_INIT_OWNER(bosco_state,bosco) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_bosco); + PALETTE(config, m_palette, 64*4+64*4+4+64); + m_palette->set_indirect_entries(32+64); + m_palette->set_init(FUNC(bosco_state::palette_init_bosco)); + MCFG_VIDEO_START_OVERRIDE(bosco_state,bosco) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32) - MCFG_NAMCO_AUDIO_VOICES(3) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0) + NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32); + m_namco_sound->set_voices(3); + m_namco_sound->add_route(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0); /* discrete circuit on the 54XX outputs */ - MCFG_DEVICE_ADD("discrete", DISCRETE, bosco_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(galaga_state::galaga) + DISCRETE(config, "discrete", bosco_discrete).add_route(ALL_OUTPUTS, "mono", 0.90); +} +void galaga_state::galaga(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(galaga_map) + Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &galaga_state::galaga_map); - MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(galaga_map) + Z80(config, m_subcpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &galaga_state::galaga_map); - MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(galaga_map) + Z80(config, m_subcpu2, MASTER_CLOCK/6); /* 3.072 MHz */ + m_subcpu2->set_addrmap(AS_PROGRAM, &galaga_state::galaga_map); ls259_device &misclatch(LS259(config, "misclatch")); // 3C on CPU board misclatch.q_out_cb<0>().set(FUNC(galaga_state::irq1_clear_w)); @@ -1722,8 +1722,8 @@ MACHINE_CONFIG_START(galaga_state::galaga) m_videolatch->q_out_cb<7>().set(FUNC(galaga_state::flip_screen_w)); WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */ - /* synchronization of the CPUs */ + + config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */ /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); @@ -1733,25 +1733,26 @@ MACHINE_CONFIG_START(galaga_state::galaga) m_screen->screen_vblank().append(FUNC(galaga_state::vblank_irq)); m_screen->set_palette("palette"); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_galaga) - MCFG_PALETTE_ADD("palette", 64*4+64*4+64) - MCFG_PALETTE_INDIRECT_ENTRIES(32+64) - MCFG_PALETTE_INIT_OWNER(galaga_state,galaga) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaga); + PALETTE(config, m_palette, 64*4+64*4+64); + m_palette->set_indirect_entries(32+64); + m_palette->set_init(FUNC(galaga_state::palette_init_galaga)); + MCFG_VIDEO_START_OVERRIDE(galaga_state,galaga) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32) - MCFG_NAMCO_AUDIO_VOICES(3) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0) + NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32); + m_namco_sound->set_voices(3); + m_namco_sound->add_route(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0); /* discrete circuit on the 54XX outputs */ - MCFG_DEVICE_ADD("discrete", DISCRETE, galaga_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) -MACHINE_CONFIG_END + DISCRETE(config, "discrete", galaga_discrete).add_route(ALL_OUTPUTS, "mono", 0.90); +} -MACHINE_CONFIG_START(galaga_state::galagab) +void galaga_state::galagab(machine_config &config) +{ galaga(config); /* basic machine hardware */ @@ -1765,33 +1766,33 @@ MACHINE_CONFIG_START(galaga_state::galagab) n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read)); n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write)); - MCFG_DEVICE_ADD("sub3", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(galaga_mem4) + z80_device &sub3(Z80(config, "sub3", MASTER_CLOCK/6)); /* 3.072 MHz */ + sub3.set_addrmap(AS_PROGRAM, &galaga_state::galaga_mem4); /* sound hardware */ config.device_remove("discrete"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(galaga_state::gatsbee) +void galaga_state::gatsbee(machine_config &config) +{ galaga(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(gatsbee_main_map) + m_maincpu->set_addrmap(AS_PROGRAM, &galaga_state::gatsbee_main_map); ls259_device &extralatch(LS259(config, "extralatch")); extralatch.q_out_cb<0>().set(FUNC(galaga_state::gatsbee_bank_w)); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(xevious_state::xevious) +} +void xevious_state::xevious(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(xevious_map) + Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &xevious_state::xevious_map); - MCFG_DEVICE_ADD("sub", Z80,MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(xevious_map) + Z80(config, m_subcpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &xevious_state::xevious_map); - MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(xevious_map) + Z80(config, m_subcpu2, MASTER_CLOCK/6); /* 3.072 MHz */ + m_subcpu2->set_addrmap(AS_PROGRAM, &xevious_state::xevious_map); ls259_device &misclatch(LS259(config, "misclatch")); // 5K misclatch.q_out_cb<0>().set(FUNC(galaga_state::irq1_clear_w)); @@ -1825,35 +1826,36 @@ MACHINE_CONFIG_START(xevious_state::xevious) n06xx.write_callback<3>().set("54xx", FUNC(namco_54xx_device::write)); WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8); - MCFG_QUANTUM_TIME(attotime::from_hz(60000)) /* 1000 CPU slices per frame - an high value to ensure proper */ - /* synchronization of the CPUs */ + + config.m_minimum_quantum = attotime::from_hz(60000); /* 1000 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */ /* video hardware */ - MCFG_SCREEN_ADD(m_screen, RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224) - MCFG_SCREEN_UPDATE_DRIVER(xevious_state, screen_update_xevious) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaga_state, vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224); + m_screen->set_screen_update(FUNC(xevious_state::screen_update_xevious)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(galaga_state::vblank_irq)); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_xevious); + PALETTE(config, m_palette, 128*4+64*8+64*2); + m_palette->set_indirect_entries(128+1); + m_palette->set_init(FUNC(xevious_state::palette_init_xevious)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_xevious) - MCFG_PALETTE_ADD("palette", 128*4+64*8+64*2) - MCFG_PALETTE_INDIRECT_ENTRIES(128+1) - MCFG_PALETTE_INIT_OWNER(xevious_state,xevious) MCFG_VIDEO_START_OVERRIDE(xevious_state,xevious) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32) - MCFG_NAMCO_AUDIO_VOICES(3) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0) + NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32); + m_namco_sound->set_voices(3); + m_namco_sound->add_route(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0); /* discrete circuit on the 54XX outputs */ - MCFG_DEVICE_ADD("discrete", DISCRETE, galaga_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) -MACHINE_CONFIG_END + DISCRETE(config, "discrete", galaga_discrete).add_route(ALL_OUTPUTS, "mono", 0.90); +} -MACHINE_CONFIG_START(battles_state::battles) +void battles_state::battles(machine_config &config) +{ xevious(config); /* basic machine hardware */ @@ -1867,33 +1869,33 @@ MACHINE_CONFIG_START(battles_state::battles) n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read)); n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write)); - MCFG_DEVICE_ADD("sub3", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(battles_mem4) + Z80(config, m_subcpu3, MASTER_CLOCK/6); /* 3.072 MHz */ + m_subcpu3->set_addrmap(AS_PROGRAM, &battles_state::battles_mem4); m_screen->screen_vblank().append(FUNC(battles_state::interrupt_4)); - MCFG_TIMER_DRIVER_ADD("nmi", battles_state, nmi_generate) + TIMER(config, "nmi").configure_generic(FUNC(battles_state::nmi_generate)); /* sound hardware */ config.device_remove("discrete"); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(battles_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(digdug_state::digdug) + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(battles_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.80); +} +void digdug_state::digdug(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(digdug_map) + Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &digdug_state::digdug_map); - MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(digdug_map) + Z80(config, m_subcpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &digdug_state::digdug_map); - MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(digdug_map) + Z80(config, m_subcpu2, MASTER_CLOCK/6); /* 3.072 MHz */ + m_subcpu2->set_addrmap(AS_PROGRAM, &digdug_state::digdug_map); ls259_device &misclatch(LS259(config, "misclatch")); // 8R misclatch.q_out_cb<0>().set(FUNC(galaga_state::irq1_clear_w)); @@ -1935,42 +1937,43 @@ MACHINE_CONFIG_START(digdug_state::digdug) m_videolatch->q_out_cb<3>().set(FUNC(digdug_state::bg_disable_w)); m_videolatch->q_out_cb<7>().set(FUNC(digdug_state::flip_screen_w)); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */ - /* synchronization of the CPUs */ + config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */ - MCFG_DEVICE_ADD("earom", ER2055) + ER2055(config, m_earom); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD(m_screen, RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224) - MCFG_SCREEN_UPDATE_DRIVER(digdug_state, screen_update_digdug) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaga_state, vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224); + m_screen->set_screen_update(FUNC(digdug_state::screen_update_digdug)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(galaga_state::vblank_irq)); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_digdug); + PALETTE(config, m_palette, 16*2+64*4+64*4); + m_palette->set_indirect_entries(32); + m_palette->set_init(FUNC(digdug_state::palette_init_digdug)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_digdug) - MCFG_PALETTE_ADD("palette", 16*2+64*4+64*4) - MCFG_PALETTE_INDIRECT_ENTRIES(32) - MCFG_PALETTE_INIT_OWNER(digdug_state,digdug) MCFG_VIDEO_START_OVERRIDE(digdug_state,digdug) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32) - MCFG_NAMCO_AUDIO_VOICES(3) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0) -MACHINE_CONFIG_END + NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32); + m_namco_sound->set_voices(3); + m_namco_sound->add_route(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0); +} -MACHINE_CONFIG_START(digdug_state::dzigzag) +void digdug_state::dzigzag(machine_config &config) +{ digdug(config); /* basic machine hardware */ - MCFG_DEVICE_ADD("sub3", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(dzigzag_mem4) -MACHINE_CONFIG_END + z80_device &sub3(Z80(config, "sub3", MASTER_CLOCK/6)); /* 3.072 MHz */ + sub3.set_addrmap(AS_PROGRAM, &digdug_state::dzigzag_mem4); +} diff --git a/src/mame/drivers/gaplus.cpp b/src/mame/drivers/gaplus.cpp index 1d16b83d33e..041f76c3f2d 100644 --- a/src/mame/drivers/gaplus.cpp +++ b/src/mame/drivers/gaplus.cpp @@ -514,18 +514,19 @@ void gaplus_state::machine_start() m_lamps.resolve(); } -MACHINE_CONFIG_START(gaplus_base_state::gaplus_base) +void gaplus_base_state::gaplus_base(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_maincpu, MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */ - MCFG_DEVICE_PROGRAM_MAP(cpu1_map) + MC6809E(config, m_maincpu, XTAL(24'576'000) / 16); /* 1.536 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &gaplus_base_state::cpu1_map); - MCFG_DEVICE_ADD("sub", MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */ - MCFG_DEVICE_PROGRAM_MAP(cpu2_map) + MC6809E(config, m_subcpu, XTAL(24'576'000) / 16); /* 1.536 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &gaplus_base_state::cpu2_map); - MCFG_DEVICE_ADD("sub2", MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */ - MCFG_DEVICE_PROGRAM_MAP(cpu3_map) + MC6809E(config, m_subcpu2, XTAL(24'576'000) / 16); /* 1.536 MHz */ + m_subcpu2->set_addrmap(AS_PROGRAM, &gaplus_base_state::cpu3_map); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* a high value to ensure proper synchronization of the CPUs */ + config.m_minimum_quantum = attotime::from_hz(6000); /* a high value to ensure proper synchronization of the CPUs */ WATCHDOG_TIMER(config, "watchdog"); @@ -548,23 +549,23 @@ MACHINE_CONFIG_START(gaplus_base_state::gaplus_base) m_screen->screen_vblank().append(FUNC(gaplus_base_state::vblank_irq)); m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gaplus) - MCFG_PALETTE_ADD("palette", 64 * 4 + 64 * 8) - MCFG_PALETTE_INDIRECT_ENTRIES(256) - MCFG_PALETTE_INIT_OWNER(gaplus_base_state, gaplus) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_gaplus); + PALETTE(config, m_palette, 64 * 4 + 64 * 8); + m_palette->set_indirect_entries(256); + m_palette->set_init(FUNC(gaplus_base_state::palette_init_gaplus)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO_15XX, XTAL(24'576'000) / 1024) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + NAMCO_15XX(config, m_namco_15xx, XTAL(24'576'000) / 1024); + m_namco_15xx->set_voices(8); + m_namco_15xx->add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(gaplus_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(gaplus_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.80); +} void gaplus_state::gaplus(machine_config &config) { diff --git a/src/mame/drivers/hcastle.cpp b/src/mame/drivers/hcastle.cpp index 5f540098fb0..7598f7753a1 100644 --- a/src/mame/drivers/hcastle.cpp +++ b/src/mame/drivers/hcastle.cpp @@ -186,36 +186,35 @@ void hcastle_state::machine_reset() m_old_pf2 = -1; } -MACHINE_CONFIG_START(hcastle_state::hcastle) - +void hcastle_state::hcastle(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", KONAMI, 3000000) /* Derived from 24 MHz clock */ - MCFG_DEVICE_PROGRAM_MAP(hcastle_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", hcastle_state, irq0_line_hold) + KONAMI(config, m_maincpu, 3000000); /* Derived from 24 MHz clock */ + m_maincpu->set_addrmap(AS_PROGRAM, &hcastle_state::hcastle_map); + m_maincpu->set_vblank_int("screen", FUNC(hcastle_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, 3579545) - MCFG_DEVICE_PROGRAM_MAP(sound_map) + Z80(config, m_audiocpu, 3579545); + m_audiocpu->set_addrmap(AS_PROGRAM, &hcastle_state::sound_map); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8) - MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM8) + BUFFERED_SPRITERAM8(config, m_spriteram); + BUFFERED_SPRITERAM8(config, m_spriteram2); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second verified by comparison with real board */) - 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(hcastle_state, screen_update_hcastle) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hcastle) - MCFG_PALETTE_ADD("palette", 2*8*16*16) - MCFG_PALETTE_INDIRECT_ENTRIES(128) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_INIT_OWNER(hcastle_state, hcastle) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(59); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); /* frames per second verified by comparison with real board */ + 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(hcastle_state::screen_update_hcastle)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_hcastle); + PALETTE(config, m_palette, 2*8*16*16); + m_palette->set_indirect_entries(128); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->set_init(FUNC(hcastle_state::palette_init_hcastle)); K007121(config, m_k007121_1, 0); m_k007121_1->set_palette_tag(m_palette); @@ -227,18 +226,17 @@ MACHINE_CONFIG_START(hcastle_state::hcastle) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("k007232", K007232, 3579545) - MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, hcastle_state, volume_callback)) - MCFG_SOUND_ROUTE(0, "mono", 0.44) - MCFG_SOUND_ROUTE(1, "mono", 0.50) + K007232(config, m_k007232, 3579545); + m_k007232->port_write().set(FUNC(hcastle_state::volume_callback)); + m_k007232->add_route(0, "mono", 0.44); + m_k007232->add_route(1, "mono", 0.50); - MCFG_DEVICE_ADD("ymsnd", YM3812, 3579545) - MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) /* from schematic; NMI handler is just a retn */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) + ym3812_device &ymsnd(YM3812(config, "ymsnd", 3579545)); + ymsnd.irq_handler().set_inputline("audiocpu", INPUT_LINE_NMI); /* from schematic; NMI handler is just a retn */ + ymsnd.add_route(ALL_OUTPUTS, "mono", 0.70); - MCFG_K051649_ADD("k051649", 3579545/2) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) -MACHINE_CONFIG_END + K051649(config, "k051649", 3579545/2).add_route(ALL_OUTPUTS, "mono", 0.45); +} /***************************************************************************/ diff --git a/src/mame/drivers/hexion.cpp b/src/mame/drivers/hexion.cpp index 872262039bf..41fac719417 100644 --- a/src/mame/drivers/hexion.cpp +++ b/src/mame/drivers/hexion.cpp @@ -87,7 +87,6 @@ Notes: #include "sound/okim6295.h" #include "sound/k051649.h" -#include "emupal.h" #include "speaker.h" @@ -252,13 +251,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(hexion_state::scanline) } } - -MACHINE_CONFIG_START(hexion_state::hexion) - +void hexion_state::hexion(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000)/4) /* Z80B 6 MHz @ 17F, xtal verified, divider not verified */ - MCFG_DEVICE_PROGRAM_MAP(hexion_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hexion_state, scanline, "screen", 0, 1) + Z80(config, m_maincpu, XTAL(24'000'000)/4); /* Z80B 6 MHz @ 17F, xtal verified, divider not verified */ + m_maincpu->set_addrmap(AS_PROGRAM, &hexion_state::hexion_map); + TIMER(config, "scantimer").configure_scanline(FUNC(hexion_state::scanline), "screen", 0, 1); WATCHDOG_TIMER(config, "watchdog"); K053252(config, m_k053252, XTAL(24'000'000)/2); /* K053252, X0-010(?) @8D, xtal verified, divider not verified */ @@ -267,37 +265,39 @@ MACHINE_CONFIG_START(hexion_state::hexion) m_k053252->int_time().set(FUNC(hexion_state::ccu_int_time_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, 36*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(hexion_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(0)); + screen.set_size(64*8, 36*8); + screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1); + screen.set_screen_update(FUNC(hexion_state::screen_update)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hexion) - MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 256) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_hexion); + PALETTE(config, m_palette, 256); + m_palette->set_prom_region("proms"); + m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) /* MSM6295GS @ 5E, clock frequency & pin 7 not verified */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) + /* MSM6295GS @ 5E, clock frequency & pin 7 not verified */ + OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5); - MCFG_K051649_ADD("k051649", XTAL(24'000'000)/16) /* KONAMI 051649 // 2212P003 // JAPAN 8910EAJ @ 1D, xtal verified, divider not verified */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + /* KONAMI 051649 // 2212P003 // JAPAN 8910EAJ @ 1D, xtal verified, divider not verified */ + K051649(config, "k051649", XTAL(24'000'000)/16).add_route(ALL_OUTPUTS, "mono", 0.5); +} -MACHINE_CONFIG_START(hexion_state::hexionb) +void hexion_state::hexionb(machine_config &config) +{ hexion(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(hexionb_map) + m_maincpu->set_addrmap(AS_PROGRAM, &hexion_state::hexionb_map); - MCFG_DEVICE_REMOVE("k051649") + config.device_remove("k051649"); - MCFG_DEVICE_ADD("oki2", OKIM6295, 1056000, okim6295_device::PIN7_LOW) // clock frequency & pin 7 not verified; this clock and pin 7 being low makes the pitch match the non-bootleg version, so is probably correct - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + // clock frequency & pin 7 not verified; this clock and pin 7 being low makes the pitch match the non-bootleg version, so is probably correct + OKIM6295(config, "oki2", 1056000, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.5); +} /*************************************************************************** diff --git a/src/mame/drivers/jrpacman.cpp b/src/mame/drivers/jrpacman.cpp index fcd54cef2ef..edda1c297a9 100644 --- a/src/mame/drivers/jrpacman.cpp +++ b/src/mame/drivers/jrpacman.cpp @@ -279,12 +279,12 @@ WRITE_LINE_MEMBER(jrpacman_state::vblank_irq) m_maincpu->set_input_line(0, HOLD_LINE); } -MACHINE_CONFIG_START(jrpacman_state::jrpacman) - +void jrpacman_state::jrpacman(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_DEVICE_IO_MAP(port_map) + Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &jrpacman_state::main_map); + m_maincpu->set_addrmap(AS_IO, &jrpacman_state::port_map); ls259_device &latch1(LS259(config, "latch1")); // 5P latch1.q_out_cb<0>().set(FUNC(jrpacman_state::irq_mask_w)); @@ -302,28 +302,29 @@ MACHINE_CONFIG_START(jrpacman_state::jrpacman) WATCHDOG_TIMER(config, m_watchdog); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60.606060) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(36*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(jrpacman_state, screen_update_pacman) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, jrpacman_state, vblank_irq)) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60.606060); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(36*8, 28*8); + screen.set_visarea(0*8, 36*8-1, 0*8, 28*8-1); + screen.set_screen_update(FUNC(jrpacman_state::screen_update_pacman)); + screen.set_palette(m_palette); + screen.screen_vblank().set(FUNC(jrpacman_state::vblank_irq)); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_jrpacman); + PALETTE(config, m_palette, 128*4); + m_palette->set_indirect_entries(32); + m_palette->set_init(FUNC(jrpacman_state::palette_init_pacman)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jrpacman) - MCFG_PALETTE_ADD("palette", 128*4) - MCFG_PALETTE_INDIRECT_ENTRIES(32) - MCFG_PALETTE_INIT_OWNER(jrpacman_state,pacman) MCFG_VIDEO_START_OVERRIDE(jrpacman_state,jrpacman) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO, 3072000/32) - MCFG_NAMCO_AUDIO_VOICES(3) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + NAMCO(config, m_namco_sound, 3072000/32); + m_namco_sound->set_voices(3); + m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0); +} diff --git a/src/mame/drivers/konmedal.cpp b/src/mame/drivers/konmedal.cpp index 937116dc82f..0fa5969f100 100644 --- a/src/mame/drivers/konmedal.cpp +++ b/src/mame/drivers/konmedal.cpp @@ -381,25 +381,26 @@ void konmedal_state::machine_reset() m_control = m_control2 = m_shuri_irq = 0; } -MACHINE_CONFIG_START(konmedal_state::tsukande) +void konmedal_state::tsukande(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(14'318'181)/2) // z84c0008pec 8mhz part, 14.31818Mhz xtal verified on PCB, divisor unknown - MCFG_DEVICE_PROGRAM_MAP(medal_main) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", konmedal_state, konmedal_interrupt) + Z80(config, m_maincpu, XTAL(14'318'181)/2); // z84c0008pec 8mhz part, 14.31818Mhz xtal verified on PCB, divisor unknown + m_maincpu->set_addrmap(AS_PROGRAM, &konmedal_state::medal_main); + m_maincpu->set_vblank_int("screen", FUNC(konmedal_state::konmedal_interrupt)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.62) /* verified on pcb */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(80, 400-1, 16, 240-1) - MCFG_SCREEN_UPDATE_DRIVER(konmedal_state, screen_update_konmedal) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(59.62); /* verified on pcb */ + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(64*8, 32*8); + screen.set_visarea(80, 400-1, 16, 240-1); + screen.set_screen_update(FUNC(konmedal_state::screen_update_konmedal)); + screen.set_palette(m_palette); - MCFG_PALETTE_ADD("palette", 8192) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_INIT_OWNER(konmedal_state, konmedal) + PALETTE(config, m_palette, 8192); + m_palette->enable_shadows(); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->set_init(FUNC(konmedal_state::palette_init_konmedal)); K056832(config, m_k056832, 0); m_k056832->set_tile_callback(FUNC(konmedal_state::tile_callback), this); @@ -410,30 +411,31 @@ MACHINE_CONFIG_START(konmedal_state::tsukande) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(16'934'400)) // 16.9344MHz xtal verified on PCB - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END + YMZ280B(config, m_ymz, XTAL(16'934'400)); // 16.9344MHz xtal verified on PCB + m_ymz->add_route(0, "lspeaker", 1.0); + m_ymz->add_route(1, "rspeaker", 1.0); +} -MACHINE_CONFIG_START(konmedal_state::ddboy) +void konmedal_state::ddboy(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(14'318'181)/2) // z84c0008pec 8mhz part, 14.31818Mhz xtal verified on PCB, divisor unknown - MCFG_DEVICE_PROGRAM_MAP(ddboy_main) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", konmedal_state, konmedal_interrupt) + Z80(config, m_maincpu, XTAL(14'318'181)/2); // z84c0008pec 8mhz part, 14.31818Mhz xtal verified on PCB, divisor unknown + m_maincpu->set_addrmap(AS_PROGRAM, &konmedal_state::ddboy_main); + m_maincpu->set_vblank_int("screen", FUNC(konmedal_state::konmedal_interrupt)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.62) /* verified on pcb */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(80, 400-1, 16, 240-1) - MCFG_SCREEN_UPDATE_DRIVER(konmedal_state, screen_update_konmedal) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(59.62); /* verified on pcb */ + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(64*8, 32*8); + screen.set_visarea(80, 400-1, 16, 240-1); + screen.set_screen_update(FUNC(konmedal_state::screen_update_konmedal)); + screen.set_palette(m_palette); - MCFG_PALETTE_ADD("palette", 8192) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_INIT_OWNER(konmedal_state, konmedal) + PALETTE(config, m_palette, 8192); + m_palette->enable_shadows(); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->set_init(FUNC(konmedal_state::palette_init_konmedal)); K056832(config, m_k056832, 0); m_k056832->set_tile_callback(FUNC(konmedal_state::tile_callback), this); @@ -442,13 +444,12 @@ MACHINE_CONFIG_START(konmedal_state::ddboy) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(14'318'181)/14, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(0, "mono", 1.0) - MCFG_SOUND_ROUTE(1, "mono", 1.0) + OKIM6295(config, m_oki, XTAL(14'318'181)/14, okim6295_device::PIN7_HIGH); + m_oki->add_route(0, "mono", 1.0); + m_oki->add_route(1, "mono", 1.0); - MCFG_K051649_ADD("k051649", XTAL(14'318'181)/8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) -MACHINE_CONFIG_END + K051649(config, "k051649", XTAL(14'318'181)/8).add_route(ALL_OUTPUTS, "mono", 0.45); +} /* Shuriken Boy @@ -542,25 +543,26 @@ WRITE8_MEMBER(konmedal_state::shuri_vrom_bank_w) m_vrom_base |= (data << 10); } -MACHINE_CONFIG_START(konmedal_state::shuriboy) +void konmedal_state::shuriboy(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000) / 3) // divisor unknown - MCFG_DEVICE_PROGRAM_MAP(shuriboy_main) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", konmedal_state, scanline, "screen", 0, 1) + Z80(config, m_maincpu, XTAL(24'000'000) / 3); // divisor unknown + m_maincpu->set_addrmap(AS_PROGRAM, &konmedal_state::shuriboy_main); + TIMER(config, "scantimer").configure_scanline(FUNC(konmedal_state::scanline), "screen", 0, 1); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) // everything not verified, just a placeholder - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(30)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(80, 400-1, 16, 240-1) - MCFG_SCREEN_UPDATE_DRIVER(konmedal_state, screen_update_shuriboy) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // everything not verified, just a placeholder + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(30)); + screen.set_size(64*8, 32*8); + screen.set_visarea(80, 400-1, 16, 240-1); + screen.set_screen_update(FUNC(konmedal_state::screen_update_shuriboy)); + screen.set_palette(m_palette); - MCFG_PALETTE_ADD("palette", 8192) // not verified - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + PALETTE(config, m_palette, 8192); // not verified + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->enable_shadows(); + m_palette->enable_hilights(); K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); @@ -571,11 +573,10 @@ MACHINE_CONFIG_START(konmedal_state::shuriboy) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_K051649_ADD("k051649", XTAL(24'000'000) / 12) // divisor unknown - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) + K051649(config, "k051649", XTAL(24'000'000) / 12).add_route(ALL_OUTPUTS, "mono", 0.45); // divisor unknown // upd7759c -MACHINE_CONFIG_END +} ROM_START( tsukande ) ROM_REGION( 0x20000, "maincpu", 0 ) /* main program */ diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp index 0c08524c23e..59fdc9b1d2b 100644 --- a/src/mame/drivers/mappy.cpp +++ b/src/mame/drivers/mappy.cpp @@ -1315,14 +1315,14 @@ void mappy_state::machine_start() } -MACHINE_CONFIG_START(mappy_state::superpac_common) - +void mappy_state::superpac_common(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */ - MCFG_DEVICE_PROGRAM_MAP(superpac_cpu1_map) + MC6809E(config, m_maincpu, PIXEL_CLOCK/4); /* 1.536 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu1_map); - MCFG_DEVICE_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */ - MCFG_DEVICE_PROGRAM_MAP(superpac_cpu2_map) + MC6809E(config, m_subcpu, PIXEL_CLOCK/4); /* 1.536 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu2_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w)); @@ -1333,34 +1333,34 @@ MACHINE_CONFIG_START(mappy_state::superpac_common) mainlatch.q_out_cb<5>().set_inputline(m_subcpu, INPUT_LINE_RESET).invert(); WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs + + config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs ls157_device &dipmux(LS157(config, "dipmux")); dipmux.a_in_callback().set_ioport("DSW2"); dipmux.b_in_callback().set_ioport("DSW2").rshift(4); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_superpac) - MCFG_PALETTE_ADD("palette", 64*4+64*4) - MCFG_PALETTE_INDIRECT_ENTRIES(32) - MCFG_PALETTE_INIT_OWNER(mappy_state,superpac) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_superpac); + PALETTE(config, m_palette, 64*4+64*4); + m_palette->set_indirect_entries(32); + m_palette->set_init(FUNC(mappy_state::palette_init_superpac)); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_superpac) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mappy_state, vblank_irq)) // cause IRQs on both CPUs; also update the custom I/O chips + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); + m_screen->set_screen_update(FUNC(mappy_state::screen_update_superpac)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on both CPUs; also update the custom I/O chips MCFG_VIDEO_START_OVERRIDE(mappy_state,superpac) /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO_15XX, 18432000/768) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END - + NAMCO_15XX(config, m_namco_15xx, 18432000/768); + m_namco_15xx->set_voices(8); + m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0); +} void mappy_state::superpac(machine_config &config) { @@ -1399,9 +1399,8 @@ void mappy_state::pacnpal(machine_config &config) m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0); } - -MACHINE_CONFIG_START(mappy_state::grobda) - +void mappy_state::grobda(machine_config &config) +{ superpac_common(config); NAMCO_58XX(config, m_namcoio[0], 0); @@ -1418,23 +1417,24 @@ MACHINE_CONFIG_START(mappy_state::grobda) m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0); /* sound hardware */ - MCFG_DEVICE_ADD("dac", DAC_4BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.275) // alternate route to 15XX-related DAC? - 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 - - -MACHINE_CONFIG_START(mappy_state::phozon) + DAC_4BIT_BINARY_WEIGHTED(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.275); // alternate route to 15XX-related DAC? + 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); +} +void mappy_state::phozon(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* MAIN CPU */ - MCFG_DEVICE_PROGRAM_MAP(phozon_cpu1_map) + MC6809E(config, m_maincpu, PIXEL_CLOCK/4); /* MAIN CPU */ + m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu1_map); - MCFG_DEVICE_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* SOUND CPU */ - MCFG_DEVICE_PROGRAM_MAP(phozon_cpu2_map) + MC6809E(config, m_subcpu, PIXEL_CLOCK/4); /* SOUND CPU */ + m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu2_map); - MCFG_DEVICE_ADD("sub2", MC6809E, PIXEL_CLOCK/4) /* SUB CPU */ - MCFG_DEVICE_PROGRAM_MAP(phozon_cpu3_map) + MC6809E(config, m_subcpu2, PIXEL_CLOCK/4); /* SUB CPU */ + m_subcpu2->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu3_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 5C mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w)); @@ -1447,7 +1447,8 @@ MACHINE_CONFIG_START(mappy_state::phozon) mainlatch.q_out_cb<6>().set_inputline(m_subcpu2, INPUT_LINE_RESET).invert(); WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs + + config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs NAMCO_58XX(config, m_namcoio[0], 0); m_namcoio[0]->in_callback<0>().set_ioport("COINS"); @@ -1467,36 +1468,35 @@ MACHINE_CONFIG_START(mappy_state::phozon) dipmux.b_in_callback().set_ioport("DSW2").rshift(4); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_phozon) - MCFG_PALETTE_ADD("palette", 64*4+64*4) - MCFG_PALETTE_INDIRECT_ENTRIES(32) - MCFG_PALETTE_INIT_OWNER(mappy_state,phozon) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_phozon); + PALETTE(config, m_palette, 64*4+64*4); + m_palette->set_indirect_entries(32); + m_palette->set_init(FUNC(mappy_state::palette_init_phozon)); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_phozon) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mappy_state, vblank_irq)) // cause IRQs on all three CPUs; also update the custom I/O chips + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); + m_screen->set_screen_update(FUNC(mappy_state::screen_update_phozon)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on all three CPUs; also update the custom I/O chips MCFG_VIDEO_START_OVERRIDE(mappy_state,phozon) /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO_15XX, 18432000/768) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(mappy_state::mappy_common) + NAMCO_15XX(config, m_namco_15xx, 18432000/768); + m_namco_15xx->set_voices(8); + m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0); +} +void mappy_state::mappy_common(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */ - MCFG_DEVICE_PROGRAM_MAP(mappy_cpu1_map) + MC6809E(config, m_maincpu, PIXEL_CLOCK/4); /* 1.536 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu1_map); - MCFG_DEVICE_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */ - MCFG_DEVICE_PROGRAM_MAP(mappy_cpu2_map) + MC6809E(config, m_subcpu, PIXEL_CLOCK/4); /* 1.536 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu2_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w)); @@ -1508,33 +1508,34 @@ MACHINE_CONFIG_START(mappy_state::mappy_common) mainlatch.q_out_cb<5>().set_inputline(m_subcpu, INPUT_LINE_RESET).invert(); WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs + + config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs ls157_device &dipmux(LS157(config, "dipmux")); dipmux.a_in_callback().set_ioport("DSW2"); dipmux.b_in_callback().set_ioport("DSW2").rshift(4); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mappy) - MCFG_PALETTE_ADD("palette", 64*4+16*16) - MCFG_PALETTE_INDIRECT_ENTRIES(32) - MCFG_PALETTE_INIT_OWNER(mappy_state,mappy) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_mappy); + PALETTE(config, m_palette, 64*4+16*16); + m_palette->set_indirect_entries(32); + m_palette->set_init(FUNC(mappy_state::palette_init_mappy)); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_mappy) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mappy_state, vblank_irq)) // cause IRQs on both CPUs; also update the custom I/O chips + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); + m_screen->set_screen_update(FUNC(mappy_state::screen_update_mappy)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on both CPUs; also update the custom I/O chips MCFG_VIDEO_START_OVERRIDE(mappy_state,mappy) /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO_15XX, 18432000/768) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END + NAMCO_15XX(config, m_namco_15xx, 18432000/768); + m_namco_15xx->set_voices(8); + m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0); +} void mappy_state::mappy(machine_config &config) { @@ -1574,14 +1575,14 @@ void mappy_state::digdug2(machine_config &config) m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0); } -MACHINE_CONFIG_START(mappy_state::todruaga) +void mappy_state::todruaga(machine_config &config) +{ digdug2(config); /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_todruaga) - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(64*4+64*16) -MACHINE_CONFIG_END + m_gfxdecode->set_info(gfx_todruaga); + m_palette->set_entries(64*4+64*16); +} void mappy_state::motos(machine_config &config) { diff --git a/src/mame/drivers/namcos86.cpp b/src/mame/drivers/namcos86.cpp index 07866feec04..5f2d4c155c4 100644 --- a/src/mame/drivers/namcos86.cpp +++ b/src/mame/drivers/namcos86.cpp @@ -178,7 +178,6 @@ TODO: #include "includes/namcos86.h" #include "cpu/m6809/m6809.h" -#include "cpu/m6800/m6801.h" #include "sound/ym2151.h" #include "screen.h" #include "speaker.h" @@ -1047,111 +1046,97 @@ GFXDECODE_END /*******************************************************************/ -MACHINE_CONFIG_START(namcos86_state::hopmappy) - +void namcos86_state::hopmappy(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("cpu1", MC6809E, XTAL(49'152'000)/32) - MCFG_DEVICE_PROGRAM_MAP(cpu1_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos86_state, irq0_line_assert) + MC6809E(config, m_cpu1, XTAL(49'152'000)/32); + m_cpu1->set_addrmap(AS_PROGRAM, &namcos86_state::cpu1_map); + m_cpu1->set_vblank_int("screen", FUNC(namcos86_state::irq0_line_assert)); - MCFG_DEVICE_ADD("cpu2", MC6809E, XTAL(49'152'000)/32) - MCFG_DEVICE_PROGRAM_MAP(hopmappy_cpu2_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos86_state, irq0_line_assert) + MC6809E(config, m_cpu2, XTAL(49'152'000)/32); + m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::hopmappy_cpu2_map); + m_cpu2->set_vblank_int("screen", FUNC(namcos86_state::irq0_line_assert)); - hd63701_cpu_device &mcu(HD63701(config, "mcu", XTAL(49'152'000)/8)); /* or compatible 6808 with extra instructions */ - mcu.set_addrmap(AS_PROGRAM, &namcos86_state::hopmappy_mcu_map); - mcu.in_p1_cb().set_ioport("IN2"); - mcu.in_p2_cb().set_constant(0xff); /* leds won't work otherwise */ - mcu.out_p1_cb().set(FUNC(namcos86_state::coin_w)); - mcu.out_p2_cb().set(FUNC(namcos86_state::led_w)); - mcu.set_vblank_int("screen", FUNC(namcos86_state::irq0_line_hold)); /* ??? */ + HD63701(config, m_mcu, XTAL(49'152'000)/8); /* or compatible 6808 with extra instructions */ + m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::hopmappy_mcu_map); + m_mcu->in_p1_cb().set_ioport("IN2"); + m_mcu->in_p2_cb().set_constant(0xff); /* leds won't work otherwise */ + m_mcu->out_p1_cb().set(FUNC(namcos86_state::coin_w)); + m_mcu->out_p2_cb().set(FUNC(namcos86_state::led_w)); + m_mcu->set_vblank_int("screen", FUNC(namcos86_state::irq0_line_hold)); /* ??? */ - MCFG_QUANTUM_TIME(attotime::from_hz(48000)) /* heavy interleaving needed to avoid hangs in rthunder */ + config.m_minimum_quantum = attotime::from_hz(48000); /* heavy interleaving needed to avoid hangs in rthunder */ WATCHDOG_TIMER(config, m_watchdog); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(49'152'000)/8, 384, 3+8*8, 3+44*8, 264, 2*8, 30*8) - MCFG_SCREEN_UPDATE_DRIVER(namcos86_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, namcos86_state, screen_vblank)) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(49'152'000)/8, 384, 3+8*8, 3+44*8, 264, 2*8, 30*8); + screen.set_screen_update(FUNC(namcos86_state::screen_update)); + screen.screen_vblank().set(FUNC(namcos86_state::screen_vblank)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcos86) - MCFG_PALETTE_ADD("palette", 4096) - MCFG_PALETTE_INIT_OWNER(namcos86_state, namcos86) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_namcos86); + PALETTE(config, m_palette, 4096); + m_palette->set_init(FUNC(namcos86_state::palette_init_namcos86)); /* sound hardware */ SPEAKER(config, "mono").front_center(); YM2151(config, "ymsnd", 3579580).add_route(0, "mono", 0.0).add_route(1, "mono", 0.60); /* only right channel is connected */ - MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2048) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + NAMCO_CUS30(config, m_cus30, XTAL(49'152'000)/2048); + m_cus30->set_voices(8); + m_cus30->add_route(ALL_OUTPUTS, "mono", 0.50); +} - -MACHINE_CONFIG_START(namcos86_state::roishtar) +void namcos86_state::roishtar(machine_config &config) +{ hopmappy(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("cpu2") - MCFG_DEVICE_PROGRAM_MAP(roishtar_cpu2_map) + m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::roishtar_cpu2_map); + m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::roishtar_mcu_map); +} - MCFG_DEVICE_MODIFY("mcu") - MCFG_DEVICE_PROGRAM_MAP(roishtar_mcu_map) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(namcos86_state::genpeitd) +void namcos86_state::genpeitd(machine_config &config) +{ hopmappy(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("cpu2") - MCFG_DEVICE_PROGRAM_MAP(genpeitd_cpu2_map) - - MCFG_DEVICE_MODIFY("mcu") - MCFG_DEVICE_PROGRAM_MAP(genpeitd_mcu_map) + m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::genpeitd_cpu2_map); + m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::genpeitd_mcu_map); /* sound hardware */ - MCFG_NAMCO_63701X_ADD("namco2", 6000000) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + NAMCO_63701X(config, m_63701x, 6000000); + m_63701x->add_route(ALL_OUTPUTS, "mono", 1.0); +} - -MACHINE_CONFIG_START(namcos86_state::rthunder) +void namcos86_state::rthunder(machine_config &config) +{ hopmappy(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("cpu2") - MCFG_DEVICE_PROGRAM_MAP(rthunder_cpu2_map) - - MCFG_DEVICE_MODIFY("mcu") - MCFG_DEVICE_PROGRAM_MAP(rthunder_mcu_map) + m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::rthunder_cpu2_map); + m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::rthunder_mcu_map); /* sound hardware */ - MCFG_NAMCO_63701X_ADD("namco2", 6000000) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + NAMCO_63701X(config, m_63701x, 6000000); + m_63701x->add_route(ALL_OUTPUTS, "mono", 1.0); +} - -MACHINE_CONFIG_START(namcos86_state::wndrmomo) +void namcos86_state::wndrmomo(machine_config &config) +{ hopmappy(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("cpu2") - MCFG_DEVICE_PROGRAM_MAP(wndrmomo_cpu2_map) - - MCFG_DEVICE_MODIFY("mcu") - MCFG_DEVICE_PROGRAM_MAP(wndrmomo_mcu_map) + m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::wndrmomo_cpu2_map); + m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::wndrmomo_mcu_map); /* sound hardware */ - MCFG_NAMCO_63701X_ADD("namco2", 6000000) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END - - + NAMCO_63701X(config, m_63701x, 6000000); + m_63701x->add_route(ALL_OUTPUTS, "mono", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/pacland.cpp b/src/mame/drivers/pacland.cpp index ecdef9f0652..c0291f71d81 100644 --- a/src/mame/drivers/pacland.cpp +++ b/src/mame/drivers/pacland.cpp @@ -413,11 +413,11 @@ WRITE_LINE_MEMBER(pacland_state::vblank_irq) m_mcu->set_input_line(0, ASSERT_LINE); } -MACHINE_CONFIG_START(pacland_state::pacland) - +void pacland_state::pacland(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(49'152'000)/32) /* 1.536 MHz */ - MCFG_DEVICE_PROGRAM_MAP(main_map) + MC6809E(config, m_maincpu, XTAL(49'152'000)/32); /* 1.536 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &pacland_state::main_map); HD63701(config, m_mcu, XTAL(49'152'000)/8); /* 6.144 MHz? */ m_mcu->set_addrmap(AS_PROGRAM, &pacland_state::mcu_map); @@ -426,29 +426,29 @@ MACHINE_CONFIG_START(pacland_state::pacland) m_mcu->in_p2_cb().set_constant(0xff); /* leds won't work otherwise */ m_mcu->out_p2_cb().set(FUNC(pacland_state::led_w)); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synching between the MCU and the CPU */ + config.m_minimum_quantum = attotime::from_hz(6000); /* we need heavy synching between the MCU and the CPU */ WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(49'152'000)/8, 384, 3*8, 39*8, 264, 2*8, 30*8) - MCFG_SCREEN_UPDATE_DRIVER(pacland_state, screen_update) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacland_state, vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(49'152'000)/8, 384, 3*8, 39*8, 264, 2*8, 30*8); + m_screen->set_screen_update(FUNC(pacland_state::screen_update)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(pacland_state::vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pacland) - MCFG_PALETTE_ADD("palette", 256*4+256*4+64*16) - MCFG_PALETTE_INDIRECT_ENTRIES(256) - MCFG_PALETTE_INIT_OWNER(pacland_state, pacland) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_pacland); + PALETTE(config, m_palette, 256*4+256*4+64*16); + m_palette->set_indirect_entries(256); + m_palette->set_init(FUNC(pacland_state::palette_init_pacland)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2/1024) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + NAMCO_CUS30(config, m_cus30, XTAL(49'152'000)/2/1024); + m_cus30->set_voices(8); + m_cus30->add_route(ALL_OUTPUTS, "mono", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/pengo.cpp b/src/mame/drivers/pengo.cpp index cac15403ed8..160511dcae4 100644 --- a/src/mame/drivers/pengo.cpp +++ b/src/mame/drivers/pengo.cpp @@ -383,13 +383,12 @@ WRITE_LINE_MEMBER(pengo_state::vblank_irq) m_maincpu->set_input_line(0, HOLD_LINE); } - -MACHINE_CONFIG_START(pengo_state::pengo) - +void pengo_state::pengo(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) - MCFG_DEVICE_PROGRAM_MAP(pengo_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) + Z80(config, m_maincpu, MASTER_CLOCK/6); + m_maincpu->set_addrmap(AS_PROGRAM, &pengo_state::pengo_map); + m_maincpu->set_addrmap(AS_OPCODES, &pengo_state::decrypted_opcodes_map); LS259(config, m_latch); // U27 m_latch->q_out_cb<0>().set(FUNC(pengo_state::irq_mask_w)); @@ -404,33 +403,32 @@ MACHINE_CONFIG_START(pengo_state::pengo) WATCHDOG_TIMER(config, m_watchdog); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pengo) - MCFG_PALETTE_ADD("palette", 128*4) - MCFG_PALETTE_INDIRECT_ENTRIES(32) - MCFG_PALETTE_INIT_OWNER(pengo_state,pacman) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_pengo); + PALETTE(config, m_palette, 128*4); + m_palette->set_indirect_entries(32); + m_palette->set_init(FUNC(pengo_state::palette_init_pacman)); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(pengo_state, screen_update_pacman) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pengo_state, vblank_irq)) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); + screen.set_screen_update(FUNC(pengo_state::screen_update_pacman)); + screen.set_palette(m_palette); + screen.screen_vblank().set(FUNC(pengo_state::vblank_irq)); MCFG_VIDEO_START_OVERRIDE(pengo_state,pengo) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32) - MCFG_NAMCO_AUDIO_VOICES(3) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32); + m_namco_sound->set_voices(3); + m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(pengo_state::pengou) +void pengo_state::pengou(machine_config &config) +{ pengo(config); - - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor()); +} void pengo_state::pengoe(machine_config &config) { @@ -441,20 +439,20 @@ void pengo_state::pengoe(machine_config &config) maincpu.set_decrypted_tag(":decrypted_opcodes"); } -MACHINE_CONFIG_START(pengo_state::jrpacmbl) +void pengo_state::jrpacmbl(machine_config &config) +{ pengo(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(jrpacmbl_map) - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) + m_maincpu->set_addrmap(AS_PROGRAM, &pengo_state::jrpacmbl_map); + m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor()); m_latch->q_out_cb<4>().set(FUNC(pengo_state::jrpacman_bgpriority_w)); m_latch->q_out_cb<5>().set(FUNC(pengo_state::jrpacman_spritebank_w)); m_latch->q_out_cb<7>().set(FUNC(pengo_state::jrpacman_charbank_w)); MCFG_VIDEO_START_OVERRIDE(pengo_state,jrpacman) -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/polepos.cpp b/src/mame/drivers/polepos.cpp index c966a3479d3..5aff7acec08 100644 --- a/src/mame/drivers/polepos.cpp +++ b/src/mame/drivers/polepos.cpp @@ -849,18 +849,18 @@ GFXDECODE_END * Machine driver *********************************************************************/ -MACHINE_CONFIG_START(polepos_state::polepos) - +void polepos_state::polepos(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_maincpu, Z80, MASTER_CLOCK/8) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(z80_map) - MCFG_DEVICE_IO_MAP(z80_io) + Z80(config, m_maincpu, MASTER_CLOCK/8); /* 3.072 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &polepos_state::z80_map); + m_maincpu->set_addrmap(AS_IO, &polepos_state::z80_io); - MCFG_DEVICE_ADD(m_subcpu, Z8002, MASTER_CLOCK/8) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(z8002_map_1) + Z8002(config, m_subcpu, MASTER_CLOCK/8); /* 3.072 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &polepos_state::z8002_map_1); - MCFG_DEVICE_ADD(m_subcpu2, Z8002, MASTER_CLOCK/8) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(z8002_map_2) + Z8002(config, m_subcpu2, MASTER_CLOCK/8); /* 3.072 MHz */ + m_subcpu2->set_addrmap(AS_PROGRAM, &polepos_state::z8002_map_2); namco_51xx_device &n51xx(NAMCO_51XX(config, "51xx", MASTER_CLOCK/8/2)); /* 1.536 MHz */ n51xx.set_screen_tag(m_screen); @@ -899,11 +899,11 @@ MACHINE_CONFIG_START(polepos_state::polepos) WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */ + config.m_minimum_quantum = attotime::from_hz(6000); /* some interleaving */ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", polepos_state, scanline, "screen", 0, 1) + TIMER(config, "scantimer").configure_scanline(FUNC(polepos_state::scanline), "screen", 0, 1); LS259(config, m_latch); // at 8E on polepos m_latch->q_out_cb<0>().set_inputline(m_maincpu, 0, CLEAR_LINE).invert(); @@ -917,39 +917,38 @@ MACHINE_CONFIG_START(polepos_state::polepos) m_latch->q_out_cb<7>().set(FUNC(polepos_state::chacl_w)); /* video hardware */ - MCFG_SCREEN_ADD(m_screen, RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16) - MCFG_SCREEN_UPDATE_DRIVER(polepos_state, screen_update) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16); + m_screen->set_screen_update(FUNC(polepos_state::screen_update)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_polepos); + PALETTE(config, m_palette, 0x0f00); + m_palette->set_indirect_entries(128); + m_palette->set_init(FUNC(polepos_state::palette_init_polepos)); - MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_polepos) - MCFG_PALETTE_ADD(m_palette, 0x0f00) - MCFG_PALETTE_INDIRECT_ENTRIES(128) config.set_default_layout(layout_polepos); - MCFG_PALETTE_INIT_OWNER(polepos_state,polepos) - /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD(m_namco_sound, NAMCO, MASTER_CLOCK/512) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_NAMCO_AUDIO_STEREO(1) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) + NAMCO(config, m_namco_sound, MASTER_CLOCK/512); + m_namco_sound->set_voices(8); + m_namco_sound->set_stereo(true); + m_namco_sound->add_route(0, "lspeaker", 0.80); + m_namco_sound->add_route(1, "rspeaker", 0.80); /* discrete circuit on the 54XX outputs */ - MCFG_DEVICE_ADD("discrete", DISCRETE, polepos_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) + discrete_sound_device &discrete(DISCRETE(config, "discrete", polepos_discrete)); + discrete.add_route(ALL_OUTPUTS, "lspeaker", 0.90); + discrete.add_route(ALL_OUTPUTS, "rspeaker", 0.90); /* engine sound */ - MCFG_DEVICE_ADD("polepos", POLEPOS_SOUND, MASTER_CLOCK/8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90 * 0.77) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77) -MACHINE_CONFIG_END - + polepos_sound_device &polepos(POLEPOS_SOUND(config, "polepos", MASTER_CLOCK/8)); + polepos.add_route(ALL_OUTPUTS, "lspeaker", 0.90 * 0.77); + polepos.add_route(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77); +} WRITE8_MEMBER(polepos_state::bootleg_soundlatch_w) { @@ -982,18 +981,18 @@ void polepos_state::sound_z80_bootleg_iomap(address_map &map) map(0x00, 0x00).rw("tms", FUNC(tms5220_device::status_r), FUNC(tms5220_device::data_w)); } -MACHINE_CONFIG_START(polepos_state::topracern) - +void polepos_state::topracern(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_maincpu, Z80, MASTER_CLOCK/8) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(z80_map) - MCFG_DEVICE_IO_MAP(topracern_io) + Z80(config, m_maincpu, MASTER_CLOCK/8); /* 3.072 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &polepos_state::z80_map); + m_maincpu->set_addrmap(AS_IO, &polepos_state::topracern_io); - MCFG_DEVICE_ADD(m_subcpu, Z8002, MASTER_CLOCK/8) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(z8002_map_1) + Z8002(config, m_subcpu, MASTER_CLOCK/8); /* 3.072 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &polepos_state::z8002_map_1); - MCFG_DEVICE_ADD(m_subcpu2, Z8002, MASTER_CLOCK/8) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(z8002_map_2) + Z8002(config, m_subcpu2, MASTER_CLOCK/8); /* 3.072 MHz */ + m_subcpu2->set_addrmap(AS_PROGRAM, &polepos_state::z8002_map_2); // TODO, remove these devices too, this bootleg doesn't have them, but the emulation doesn't boot without them. // doesn't exist on the bootleg, but required for now or the game only boots in test mode! they probably simulate some of the logic @@ -1008,11 +1007,11 @@ MACHINE_CONFIG_START(polepos_state::topracern) WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */ + config.m_minimum_quantum = attotime::from_hz(6000); /* some interleaving */ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", polepos_state, scanline, "screen", 0, 1) + TIMER(config, "scantimer").configure_scanline(FUNC(polepos_state::scanline), "screen", 0, 1); LS259(config, m_latch); m_latch->q_out_cb<0>().set_inputline(m_maincpu, 0, CLEAR_LINE).invert(); @@ -1026,39 +1025,42 @@ MACHINE_CONFIG_START(polepos_state::topracern) m_latch->q_out_cb<7>().set(FUNC(polepos_state::chacl_w)); /* video hardware */ - MCFG_SCREEN_ADD(m_screen, RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16) - MCFG_SCREEN_UPDATE_DRIVER(polepos_state, screen_update) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16); + m_screen->set_screen_update(FUNC(polepos_state::screen_update)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_polepos); + PALETTE(config, m_palette, 0x0f00); + m_palette->set_indirect_entries(128); + m_palette->set_init(FUNC(polepos_state::palette_init_polepos)); - MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_polepos) - MCFG_PALETTE_ADD(m_palette, 0x0f00) - MCFG_PALETTE_INDIRECT_ENTRIES(128) config.set_default_layout(layout_topracer); - MCFG_PALETTE_INIT_OWNER(polepos_state,polepos) - /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD(m_namco_sound, NAMCO, MASTER_CLOCK/512) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_NAMCO_AUDIO_STEREO(1) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) + NAMCO(config, m_namco_sound, MASTER_CLOCK/512); + m_namco_sound->set_voices(8); + m_namco_sound->set_stereo(true); + m_namco_sound->add_route(0, "lspeaker", 0.80); + m_namco_sound->add_route(1, "rspeaker", 0.80); /* engine sound */ - MCFG_DEVICE_ADD("polepos", POLEPOS_SOUND, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90 * 0.77) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77) + polepos_sound_device &polepos(POLEPOS_SOUND(config, "polepos", 0)); + polepos.add_route(ALL_OUTPUTS, "lspeaker", 0.90 * 0.77); + polepos.add_route(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77); - MCFG_DEVICE_ADD("dac", DAC_4BIT_R2R, 0) // unknown resistor configuration - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.12) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.12) - 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 + dac_4bit_r2r_device &dac(DAC_4BIT_R2R(config, "dac", 0)); // unknown resistor configuration + dac.add_route(ALL_OUTPUTS, "lspeaker", 0.12); + dac.add_route(ALL_OUTPUTS, "rspeaker", 0.12); + + 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); +} void polepos_state::polepos2bi(machine_config &config) { diff --git a/src/mame/drivers/quickpick5.cpp b/src/mame/drivers/quickpick5.cpp index 10eda7e033a..83b84b9126a 100644 --- a/src/mame/drivers/quickpick5.cpp +++ b/src/mame/drivers/quickpick5.cpp @@ -400,11 +400,12 @@ void quickpick5_state::machine_reset() { } -MACHINE_CONFIG_START(quickpick5_state::quickpick5) +void quickpick5_state::quickpick5(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(32'000'000)/4) // z84c0008pec 8mhz part, 32Mhz xtal verified on PCB, divisor unknown - MCFG_DEVICE_PROGRAM_MAP(quickpick5_main) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", quickpick5_state, scanline, "screen", 0, 1) + Z80(config, m_maincpu, XTAL(32'000'000)/4); // z84c0008pec 8mhz part, 32Mhz xtal verified on PCB, divisor unknown + m_maincpu->set_addrmap(AS_PROGRAM, &quickpick5_state::quickpick5_main); + TIMER(config, "scantimer").configure_scanline(FUNC(quickpick5_state::scanline), "screen", 0, 1); K053252(config, m_k053252, XTAL(32'000'000)/4); /* K053252, xtal verified, divider not verified */ m_k053252->int1_ack().set(FUNC(quickpick5_state::vbl_ack_w)); @@ -412,36 +413,36 @@ MACHINE_CONFIG_START(quickpick5_state::quickpick5) m_k053252->int_time().set(FUNC(quickpick5_state::ccu_int_time_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.62) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(20)) - MCFG_SCREEN_SIZE(64*8, 33*8) - MCFG_SCREEN_VISIBLE_AREA(88, 456-1, 28, 256-1) - MCFG_SCREEN_UPDATE_DRIVER(quickpick5_state, screen_update_quickpick5) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(59.62); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(20)); + screen.set_size(64*8, 33*8); + screen.set_visarea(88, 456-1, 28, 256-1); + screen.set_screen_update(FUNC(quickpick5_state::screen_update_quickpick5)); + screen.set_palette(m_palette); - MCFG_PALETTE_ADD("palette", 1024) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) + PALETTE(config, m_palette, 1024); + m_palette->enable_shadows(); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); K053245(config, m_k053245, 0); m_k053245->set_palette(m_palette); m_k053245->set_offsets(-(44+80), 20); m_k053245->set_sprite_callback(FUNC(quickpick5_state::sprite_callback), this); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty) + GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_K051649_ADD("k051649", XTAL(32'000'000)/18) // xtal is verified, divider is not - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) + K051649(config, m_k051649, XTAL(32'000'000)/18); // xtal is verified, divider is not + m_k051649->add_route(ALL_OUTPUTS, "mono", 0.45); - MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(32'000'000)/18, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(0, "mono", 1.0) - MCFG_SOUND_ROUTE(1, "mono", 1.0) -MACHINE_CONFIG_END + OKIM6295(config, m_oki, XTAL(32'000'000)/18, okim6295_device::PIN7_HIGH); + m_oki->add_route(0, "mono", 1.0); + m_oki->add_route(1, "mono", 1.0); +} ROM_START( quickp5 ) ROM_REGION( 0x10000, "maincpu", 0 ) /* main program */ diff --git a/src/mame/drivers/rallyx.cpp b/src/mame/drivers/rallyx.cpp index 69bf07efec6..1c643373c40 100644 --- a/src/mame/drivers/rallyx.cpp +++ b/src/mame/drivers/rallyx.cpp @@ -198,7 +198,6 @@ TODO: #include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/samples.h" -#include "screen.h" #include "speaker.h" #define MASTER_CLOCK XTAL(18'432'000) @@ -814,12 +813,12 @@ WRITE_LINE_MEMBER(rallyx_state::jungler_vblank_irq) m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } -MACHINE_CONFIG_START(rallyx_state::rallyx) - +void rallyx_state::rallyx(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(rallyx_map) - MCFG_DEVICE_IO_MAP(io_map) + Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &rallyx_state::rallyx_map); + m_maincpu->set_addrmap(AS_IO, &rallyx_state::io_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 259 at 12M or 4099 at 11M on Logic Board I mainlatch.q_out_cb<0>().set(FUNC(rallyx_state::bang_w)); // BANG @@ -836,42 +835,42 @@ MACHINE_CONFIG_START(rallyx_state::rallyx) MCFG_MACHINE_START_OVERRIDE(rallyx_state,rallyx) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60.606060) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(36*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_rallyx) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, rallyx_state, rallyx_vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60.606060); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(36*8, 32*8); + m_screen->set_visarea(0*8, 36*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(rallyx_state::screen_update_rallyx)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(rallyx_state::rallyx_vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rallyx) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_rallyx); + + PALETTE(config, m_palette, 64*4+4); + m_palette->set_indirect_entries(32); + m_palette->enable_shadows(); + m_palette->set_init(FUNC(rallyx_state::palette_init_rallyx)); - MCFG_PALETTE_ADD("palette", 64*4+4) - MCFG_PALETTE_INDIRECT_ENTRIES(32) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_INIT_OWNER(rallyx_state,rallyx) MCFG_VIDEO_START_OVERRIDE(rallyx_state,rallyx) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32) /* 96 KHz */ - MCFG_NAMCO_AUDIO_VOICES(3) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32); /* 96 KHz */ + m_namco_sound->set_voices(3); + m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(rallyx_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(rallyx_state::jungler) + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(rallyx_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.80); +} +void rallyx_state::jungler(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ - MCFG_DEVICE_PROGRAM_MAP(jungler_map) + Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &rallyx_state::jungler_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 1C on Loco-Motion mainlatch.q_out_cb<0>().set("timeplt_audio", FUNC(timeplt_audio_device::sh_irqtrigger_w)); // SOUNDON @@ -888,64 +887,56 @@ MACHINE_CONFIG_START(rallyx_state::jungler) MCFG_MACHINE_START_OVERRIDE(rallyx_state,rallyx) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */) - MCFG_SCREEN_SIZE(36*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_jungler) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, rallyx_state, jungler_vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); /* frames per second, vblank duration */ + m_screen->set_size(36*8, 32*8); + m_screen->set_visarea(0*8, 36*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(rallyx_state::screen_update_jungler)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(rallyx_state::jungler_vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jungler) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_jungler); + + PALETTE(config, m_palette, 64*4+4+64); + m_palette->set_indirect_entries(32+64); + m_palette->enable_shadows(); + m_palette->set_init(FUNC(rallyx_state::palette_init_jungler)); - MCFG_PALETTE_ADD("palette", 64*4+4+64) - MCFG_PALETTE_INDIRECT_ENTRIES(32+64) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_INIT_OWNER(rallyx_state,jungler) MCFG_VIDEO_START_OVERRIDE(rallyx_state,jungler) /* sound hardware */ - MCFG_DEVICE_ADD("timeplt_audio", LOCOMOTN_AUDIO) -MACHINE_CONFIG_END + LOCOMOTN_AUDIO(config, "timeplt_audio"); +} - -MACHINE_CONFIG_START(rallyx_state::tactcian) +void rallyx_state::tactcian(machine_config &config) +{ jungler(config); - /* basic machine hardware */ + m_screen->set_screen_update(FUNC(rallyx_state::screen_update_locomotn)); - /* video hardware */ MCFG_VIDEO_START_OVERRIDE(rallyx_state,locomotn) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_locomotn) -MACHINE_CONFIG_END +} - -MACHINE_CONFIG_START(rallyx_state::locomotn) +void rallyx_state::locomotn(machine_config &config) +{ jungler(config); - /* basic machine hardware */ + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(rallyx_state::screen_update_locomotn)); - /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_locomotn) MCFG_VIDEO_START_OVERRIDE(rallyx_state,locomotn) -MACHINE_CONFIG_END +} - -MACHINE_CONFIG_START(rallyx_state::commsega) +void rallyx_state::commsega(machine_config &config) +{ jungler(config); - /* basic machine hardware */ + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(rallyx_state::screen_update_locomotn)); - /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_locomotn) MCFG_VIDEO_START_OVERRIDE(rallyx_state,commsega) -MACHINE_CONFIG_END +} /************************************* diff --git a/src/mame/drivers/skykid.cpp b/src/mame/drivers/skykid.cpp index 5062527fd67..8bac913537d 100644 --- a/src/mame/drivers/skykid.cpp +++ b/src/mame/drivers/skykid.cpp @@ -421,11 +421,11 @@ WRITE_LINE_MEMBER(skykid_state::vblank_irq) } -MACHINE_CONFIG_START(skykid_state::skykid) - +void skykid_state::skykid(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(49'152'000)/32) - MCFG_DEVICE_PROGRAM_MAP(skykid_map) + MC6809E(config, m_maincpu, XTAL(49'152'000)/32); + m_maincpu->set_addrmap(AS_PROGRAM, &skykid_state::skykid_map); HD63701(config, m_mcu, XTAL(49'152'000)/8); /* or compatible 6808 with extra instructions */ m_mcu->set_addrmap(AS_PROGRAM, &skykid_state::mcu_map); @@ -434,32 +434,32 @@ MACHINE_CONFIG_START(skykid_state::skykid) m_mcu->in_p2_cb().set_constant(0xff); /* leds won't work otherwise */ m_mcu->out_p2_cb().set(FUNC(skykid_state::skykid_led_w)); /* lamps */ - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */ + config.m_minimum_quantum = attotime::from_hz(6000); /* we need heavy synch */ WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60.606060) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(36*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(skykid_state, screen_update_skykid) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, skykid_state, vblank_irq)) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60.606060); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(36*8, 28*8); + screen.set_visarea(0*8, 36*8-1, 0*8, 28*8-1); + screen.set_screen_update(FUNC(skykid_state::screen_update_skykid)); + screen.set_palette(m_palette); + screen.screen_vblank().set(FUNC(skykid_state::vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_skykid) - MCFG_PALETTE_ADD("palette", 64*4+128*4+64*8) - MCFG_PALETTE_INDIRECT_ENTRIES(256) - MCFG_PALETTE_INIT_OWNER(skykid_state, skykid) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_skykid); + PALETTE(config, m_palette, 64*4+128*4+64*8); + m_palette->set_indirect_entries(256); + m_palette->set_init(FUNC(skykid_state::palette_init_skykid)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO_CUS30, 49152000/2048) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + NAMCO_CUS30(config, m_cus30, 49152000/2048); + m_cus30->set_voices(8); + m_cus30->add_route(ALL_OUTPUTS, "mono", 1.0); +} ROM_START( skykid ) // a PCB was found with ROM 4 and 6 labeled sk1, but hashes match the sk2 listed here and in other sets, while they differ from the sk1 ROMs in set skykidd? diff --git a/src/mame/drivers/srmp6.cpp b/src/mame/drivers/srmp6.cpp index 5136b178bb4..55dc0da0fdb 100644 --- a/src/mame/drivers/srmp6.cpp +++ b/src/mame/drivers/srmp6.cpp @@ -683,32 +683,32 @@ INPUT_PORTS_END Machine driver ***************************************************************************/ -MACHINE_CONFIG_START(srmp6_state::srmp6) +void srmp6_state::srmp6(machine_config &config) +{ + M68000(config, m_maincpu, 16000000); + m_maincpu->set_addrmap(AS_PROGRAM, &srmp6_state::srmp6_map); + m_maincpu->set_vblank_int("screen", FUNC(srmp6_state::irq4_line_assert)); // irq3 is a timer irq, but it's never enabled - MCFG_DEVICE_ADD("maincpu", M68000, 16000000) - MCFG_DEVICE_PROGRAM_MAP(srmp6_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp6_state, irq4_line_assert) // irq3 is a timer irq, but it's never enabled + 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, 64*8); + screen.set_visarea(0*8, 42*8-1, 0*8, 30*8-1); + screen.set_screen_update(FUNC(srmp6_state::screen_update_srmp6)); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 64*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(srmp6_state, screen_update_srmp6) + PALETTE(config, m_palette, 0x800); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); - MCFG_PALETTE_ADD("palette", 0x800) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty) + GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_NILE_ADD("nile", 0) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END + nile_device &nile(NILE(config, "nile", 0)); + nile.add_route(0, "lspeaker", 1.0); + nile.add_route(1, "rspeaker", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/tceptor.cpp b/src/mame/drivers/tceptor.cpp index 6eec072bf91..f43e5ae4d42 100644 --- a/src/mame/drivers/tceptor.cpp +++ b/src/mame/drivers/tceptor.cpp @@ -11,7 +11,6 @@ #include "emu.h" #include "includes/tceptor.h" -#include "cpu/m6502/m65c02.h" #include "cpu/m6809/m6809.h" #include "cpu/m6800/m6801.h" #include "cpu/m68000/m68000.h" @@ -314,25 +313,25 @@ void tceptor_state::machine_reset() /*******************************************************************/ -MACHINE_CONFIG_START(tceptor_state::tceptor) - +void tceptor_state::tceptor(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6809, XTAL(49'152'000)/32) - MCFG_DEVICE_PROGRAM_MAP(m6809_map) + M6809(config, m_maincpu, XTAL(49'152'000)/32); + m_maincpu->set_addrmap(AS_PROGRAM, &tceptor_state::m6809_map); - MCFG_DEVICE_ADD("audiocpu", M65C02, XTAL(49'152'000)/24) - MCFG_DEVICE_PROGRAM_MAP(m6502_a_map) + M65C02(config, m_audiocpu[0], XTAL(49'152'000)/24); + m_audiocpu[0]->set_addrmap(AS_PROGRAM, &tceptor_state::m6502_a_map); - MCFG_DEVICE_ADD("audio2", M65C02, XTAL(49'152'000)/24) - MCFG_DEVICE_PROGRAM_MAP(m6502_b_map) + M65C02(config, m_audiocpu[1], XTAL(49'152'000)/24); + m_audiocpu[1]->set_addrmap(AS_PROGRAM, &tceptor_state::m6502_b_map); - MCFG_DEVICE_ADD("sub", M68000, XTAL(49'152'000)/4) - MCFG_DEVICE_PROGRAM_MAP(m68k_map) + M68000(config, m_subcpu, XTAL(49'152'000)/4); + m_subcpu->set_addrmap(AS_PROGRAM, &tceptor_state::m68k_map); HD63701(config, m_mcu, XTAL(49'152'000)/8); // or compatible 6808 with extra instructions m_mcu->set_addrmap(AS_PROGRAM, &tceptor_state::mcu_map); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + config.m_minimum_quantum = attotime::from_hz(6000); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); @@ -343,22 +342,22 @@ MACHINE_CONFIG_START(tceptor_state::tceptor) adc.in_callback<3>().set_ioport("STICKY"); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tceptor) - MCFG_PALETTE_ADD("palette", 4096) - MCFG_PALETTE_INDIRECT_ENTRIES(1024) - MCFG_PALETTE_INIT_OWNER(tceptor_state, tceptor) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_tceptor); + PALETTE(config, m_palette, 4096); + m_palette->set_indirect_entries(1024); + m_palette->set_init(FUNC(tceptor_state::palette_init_tceptor)); NAMCO_C45_ROAD(config, m_c45_road, 0); m_c45_road->set_palette(m_palette); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60.606060) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(38*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0) - MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tceptor_state, screen_vblank_tceptor)) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60.606060); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(38*8, 32*8); + m_screen->set_visarea(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0); + m_screen->set_screen_update(FUNC(tceptor_state::screen_update_tceptor)); + m_screen->screen_vblank().set(FUNC(tceptor_state::screen_vblank_tceptor)); + m_screen->set_palette(m_palette); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); @@ -366,16 +365,21 @@ MACHINE_CONFIG_START(tceptor_state::tceptor) YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); - MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2048) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_NAMCO_AUDIO_STEREO(1) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.40) + NAMCO_CUS30(config, m_cus30, XTAL(49'152'000)/2048); + m_cus30->set_voices(8); + m_cus30->set_stereo(true); + m_cus30->add_route(0, "lspeaker", 0.40); + m_cus30->add_route(1, "rspeaker", 0.40); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.4) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.4) // unknown DAC - 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 + dac_8bit_r2r_device &dac(DAC_8BIT_R2R(config, "dac", 0)); // unknown DAC + dac.add_route(ALL_OUTPUTS, "lspeaker", 0.4); + dac.add_route(ALL_OUTPUTS, "rspeaker", 0.4); + + 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); +} /*************************************************************************** @@ -388,10 +392,10 @@ ROM_START( tceptor ) ROM_REGION( 0x10000, "maincpu", 0 ) // 68A09EP ROM_LOAD( "tc1-1.10f", 0x08000, 0x08000, CRC(4c6b063e) SHA1(d9701657186f8051391084f51a720037f9f418b1) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // RC65C02 + ROM_REGION( 0x10000, "audiocpu1", 0 ) // RC65C02 ROM_LOAD( "tc1-21.1m", 0x08000, 0x08000, CRC(2d0b2fa8) SHA1(16ecd70954e52a8661642b15a5cf1db51783e444) ) - ROM_REGION( 0x10000, "audio2", 0 ) // RC65C02 + ROM_REGION( 0x10000, "audiocpu2", 0 ) // RC65C02 ROM_LOAD( "tc1-22.3m", 0x08000, 0x08000, CRC(9f5a3e98) SHA1(2b2ffe39fe647a3039b92721817bddc9e9a92d82) ) ROM_REGION( 0x110000, "sub", 0 ) // MC68000-12 @@ -444,10 +448,10 @@ ROM_START( tceptor2 ) ROM_REGION( 0x10000, "maincpu", 0 ) // 68A09EP ROM_LOAD( "tc2-1.10f", 0x08000, 0x08000, CRC(f953f153) SHA1(f4cd0a133d23b4bf3c24c70c28c4ecf8ad4daf6f) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // RC65C02 + ROM_REGION( 0x10000, "audiocpu1", 0 ) // RC65C02 ROM_LOAD( "tc1-21.1m", 0x08000, 0x08000, CRC(2d0b2fa8) SHA1(16ecd70954e52a8661642b15a5cf1db51783e444) ) - ROM_REGION( 0x10000, "audio2", 0 ) // RC65C02 + ROM_REGION( 0x10000, "audiocpu2", 0 ) // RC65C02 ROM_LOAD( "tc1-22.3m", 0x08000, 0x08000, CRC(9f5a3e98) SHA1(2b2ffe39fe647a3039b92721817bddc9e9a92d82) ) ROM_REGION( 0x110000, "sub", 0 ) // MC68000-12 diff --git a/src/mame/drivers/toypop.cpp b/src/mame/drivers/toypop.cpp index 7a59813ea1b..53e3ae99c73 100644 --- a/src/mame/drivers/toypop.cpp +++ b/src/mame/drivers/toypop.cpp @@ -691,26 +691,25 @@ WRITE_LINE_MEMBER(namcos16_state::slave_vblank_irq) m_slave_cpu->set_input_line(6, HOLD_LINE); } -MACHINE_CONFIG_START(namcos16_state::liblrabl) - MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_CLOCK/4) - MCFG_DEVICE_PROGRAM_MAP(master_liblrabl_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos16_state, master_scanline, "screen", 0, 1) +void namcos16_state::liblrabl(machine_config &config) +{ + MC6809E(config, m_master_cpu, MASTER_CLOCK/4); + m_master_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::master_liblrabl_map); + TIMER(config, "scantimer").configure_scanline(FUNC(namcos16_state::master_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("slave", M68000, MASTER_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(slave_map) + M68000(config, m_slave_cpu, MASTER_CLOCK); + m_slave_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::slave_map); - MCFG_DEVICE_ADD("audiocpu", MC6809E, MASTER_CLOCK/4) - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos16_state, irq0_line_hold, 60) + MC6809E(config, m_sound_cpu, MASTER_CLOCK/4); + m_sound_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::sound_map); + m_sound_cpu->set_periodic_int(FUNC(namcos16_state::irq0_line_hold), attotime::from_hz(60)); - NAMCO_58XX(config, m_namco58xx, 0); m_namco58xx->in_callback<0>().set_ioport("COINS"); m_namco58xx->in_callback<1>().set_ioport("P1_RIGHT"); m_namco58xx->in_callback<2>().set_ioport("P2_RIGHT"); m_namco58xx->in_callback<3>().set_ioport("BUTTONS"); - NAMCO_56XX(config, m_namco56xx_1, 0); m_namco56xx_1->in_callback<0>().set(FUNC(namcos16_state::dipA_h)); m_namco56xx_1->in_callback<1>().set(FUNC(namcos16_state::dipB_l)); @@ -723,29 +722,29 @@ MACHINE_CONFIG_START(namcos16_state::liblrabl) m_namco56xx_2->in_callback<2>().set_ioport("P2_LEFT"); m_namco56xx_2->in_callback<3>().set_ioport("SERVICE"); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK,384,0,288,264,0,224) // derived from Galaxian HW, 60.606060 - MCFG_SCREEN_UPDATE_DRIVER(namcos16_state, screen_update) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, namcos16_state, slave_vblank_irq)) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(MASTER_CLOCK,384,0,288,264,0,224); // derived from Galaxian HW, 60.606060 + screen.set_screen_update(FUNC(namcos16_state::screen_update)); + screen.set_palette(m_palette); + screen.screen_vblank().set(FUNC(namcos16_state::slave_vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_toypop) - MCFG_PALETTE_ADD("palette", 128*4+64*4+16*2) - MCFG_PALETTE_INDIRECT_ENTRIES(256) - MCFG_PALETTE_INIT_OWNER(namcos16_state, toypop) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_toypop); + PALETTE(config, m_palette, 128*4+64*4+16*2); + m_palette->set_indirect_entries(256); + m_palette->set_init(FUNC(namcos16_state::palette_init_toypop)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("namco", NAMCO_15XX, 24000) - MCFG_NAMCO_AUDIO_VOICES(8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + NAMCO_15XX(config, m_namco15xx, 24000); + m_namco15xx->set_voices(8); + m_namco15xx->add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(namcos16_state::toypop) +void namcos16_state::toypop(machine_config &config) +{ liblrabl(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(master_toypop_map) -MACHINE_CONFIG_END + m_master_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::master_toypop_map); +} ROM_START( liblrabl ) diff --git a/src/mame/includes/baraduke.h b/src/mame/includes/baraduke.h index 80cc9f4205e..1e7625e0c48 100644 --- a/src/mame/includes/baraduke.h +++ b/src/mame/includes/baraduke.h @@ -5,6 +5,7 @@ #pragma once +#include "cpu/m6800/m6801.h" #include "sound/namco.h" #include "emupal.h" @@ -62,7 +63,7 @@ protected: required_shared_ptr m_videoram; required_shared_ptr m_textram; required_device m_maincpu; - required_device m_mcu; + required_device m_mcu; required_device m_cus30; required_device m_gfxdecode; required_device m_palette; diff --git a/src/mame/includes/deco32.h b/src/mame/includes/deco32.h index 3b6578a3c99..d30a915821b 100644 --- a/src/mame/includes/deco32.h +++ b/src/mame/includes/deco32.h @@ -82,6 +82,7 @@ protected: optional_device m_ym2151; optional_device_array m_oki; optional_device m_soundlatch; + required_device m_maincpu; void allocate_spriteram(int chip); void allocate_buffered_palette(); @@ -96,8 +97,6 @@ protected: std::unique_ptr m_pf_rowscroll[4]; // common private: - required_device m_maincpu; - // we use the pointers below to store a 32-bit copy.. required_shared_ptr_array m_pf_rowscroll32; optional_shared_ptr m_paletteram; diff --git a/src/mame/includes/hexion.h b/src/mame/includes/hexion.h index 9fa80410301..a7b53615181 100644 --- a/src/mame/includes/hexion.h +++ b/src/mame/includes/hexion.h @@ -7,6 +7,7 @@ #include "machine/k053252.h" #include "machine/timer.h" +#include "emupal.h" class hexion_state : public driver_device { @@ -15,7 +16,8 @@ public: driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_k053252(*this, "k053252"), - m_gfxdecode(*this, "gfxdecode") + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette") { } void hexion(machine_config &config); @@ -25,6 +27,7 @@ private: required_device m_maincpu; required_device m_k053252; required_device m_gfxdecode; + required_device m_palette; uint8_t *m_vram[2]; uint8_t *m_unkram; diff --git a/src/mame/includes/namcos86.h b/src/mame/includes/namcos86.h index 73a07091b59..05822f3b638 100644 --- a/src/mame/includes/namcos86.h +++ b/src/mame/includes/namcos86.h @@ -5,9 +5,10 @@ #pragma once +#include "cpu/m6800/m6801.h" #include "machine/watchdog.h" -#include "sound/namco.h" #include "sound/n63701x.h" +#include "sound/namco.h" #include "emupal.h" class namcos86_state : public driver_device @@ -17,6 +18,7 @@ public: : driver_device(mconfig, type, tag) , m_cpu1(*this, "cpu1") , m_cpu2(*this, "cpu2") + , m_mcu(*this, "mcu") , m_watchdog(*this, "watchdog") , m_cus30(*this, "namco") , m_gfxdecode(*this, "gfxdecode") @@ -90,6 +92,7 @@ private: required_device m_cpu1; required_device m_cpu2; + required_device m_mcu; required_device m_watchdog; required_device m_cus30; required_device m_gfxdecode; diff --git a/src/mame/includes/rallyx.h b/src/mame/includes/rallyx.h index 6e2fdd0d64f..69d09eab6ac 100644 --- a/src/mame/includes/rallyx.h +++ b/src/mame/includes/rallyx.h @@ -9,6 +9,7 @@ #include "sound/namco.h" #include "sound/samples.h" #include "emupal.h" +#include "screen.h" class rallyx_state : public driver_device { @@ -29,7 +30,8 @@ public: m_samples(*this, "samples"), m_timeplt_audio(*this, "timeplt_audio"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_screen(*this, "screen") { } /* memory pointers */ @@ -59,6 +61,7 @@ public: optional_device m_timeplt_audio; required_device m_gfxdecode; required_device m_palette; + required_device m_screen; bool m_main_irq_mask; DECLARE_WRITE8_MEMBER(rallyx_interrupt_vector_w); diff --git a/src/mame/includes/tceptor.h b/src/mame/includes/tceptor.h index 0ede885a277..48d9da69a5f 100644 --- a/src/mame/includes/tceptor.h +++ b/src/mame/includes/tceptor.h @@ -5,6 +5,7 @@ #pragma once +#include "cpu/m6502/m65c02.h" #include "sound/namco.h" #include "video/c45.h" #include "emupal.h" @@ -16,6 +17,7 @@ public: tceptor_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_audiocpu(*this, "audiocpu%u", 1U), m_subcpu(*this, "sub"), m_mcu(*this, "mcu"), m_cus30(*this, "namco"), @@ -38,6 +40,7 @@ private: uint8_t m_m68k_irq_enable; uint8_t m_mcu_irq_enable; required_device m_maincpu; + required_device_array m_audiocpu; required_device m_subcpu; required_device m_mcu; required_device m_cus30;