From 32650ee591aad59123d549770ee38b2f627b6236 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Thu, 20 Dec 2018 05:36:31 +0100 Subject: -bus/nes/jaleco, pt554, bus/nes_ctrl/ctrl, hori, joypad: Removed MCFG and MACHINE_CONFIG macros. [Ryan Holtz] -sound/asc, lmc1992, nes_apu, samples, video/ppu2c0x, ppu2c0x_vt: Removed MCFG macros. [Ryan Holtz] -audio/astrof, carnival, cclimber, cinemat, depthch, invinco, pulsar, spacefb, targ, tranqgun, turbo, vicdual vicdual-97271p, zaxxon: Removed MACHINE_CONFIG macros. [Ryan Holtz] -drivers/8080bw, astinvad, atarist, blockade, cham24, circus, cosmic, equites, famibox, gottlieb, gotya, gridlee, homerun, m10, m14, m63, mcr, meadows, mmagic, multigam, mw8080bw, nes, nes_vt, ninjakd2, playch10, safarir, segag80v, starcrus, starfire, suna8, super80, tankbatt, tattack, thief, tmnt, tnzs, triplhnt, vsnes: Removed MACHINE_CONFIG macros. [Ryan Holtz] -machine/genpin, mm1kb: Removed MACHINE_CONFIG macros. [Ryan Holtz] --- src/devices/bus/nes/jaleco.cpp | 98 +++--- src/devices/bus/nes/pt554.cpp | 14 +- src/devices/bus/nes_ctrl/ctrl.h | 43 +-- src/devices/bus/nes_ctrl/hori.cpp | 24 +- src/devices/bus/nes_ctrl/joypad.cpp | 7 +- src/devices/machine/timer.h | 5 + src/devices/sound/asc.h | 27 -- src/devices/sound/lmc1992.h | 12 +- src/devices/sound/msm5232.h | 1 + src/devices/sound/nes_apu.h | 6 - src/devices/sound/samples.h | 18 +- src/devices/video/ppu2c0x.h | 62 +--- src/devices/video/ppu2c0x_vt.h | 24 +- src/mame/audio/astrof.cpp | 13 +- src/mame/audio/carnival.cpp | 14 +- src/mame/audio/cclimber.cpp | 13 +- src/mame/audio/cinemat.cpp | 169 +++++----- src/mame/audio/depthch.cpp | 14 +- src/mame/audio/invinco.cpp | 14 +- src/mame/audio/pulsar.cpp | 14 +- src/mame/audio/spacefb.cpp | 23 +- src/mame/audio/targ.cpp | 47 +-- src/mame/audio/tranqgun.cpp | 14 +- src/mame/audio/turbo.cpp | 98 +++--- src/mame/audio/vicdual-97271p.cpp | 13 +- src/mame/audio/vicdual.cpp | 40 +-- src/mame/audio/zaxxon.cpp | 26 +- src/mame/drivers/8080bw.cpp | 554 ++++++++++++++++---------------- src/mame/drivers/astinvad.cpp | 76 ++--- src/mame/drivers/atarist.cpp | 380 ++++++++-------------- src/mame/drivers/blockade.cpp | 37 +-- src/mame/drivers/cham24.cpp | 25 +- src/mame/drivers/circus.cpp | 171 +++++----- src/mame/drivers/cosmic.cpp | 185 ++++++----- src/mame/drivers/equites.cpp | 155 ++++----- src/mame/drivers/famibox.cpp | 25 +- src/mame/drivers/gottlieb.cpp | 115 +++---- src/mame/drivers/gotya.cpp | 44 +-- src/mame/drivers/gridlee.cpp | 33 +- src/mame/drivers/homerun.cpp | 58 ++-- src/mame/drivers/m10.cpp | 93 +++--- src/mame/drivers/m14.cpp | 46 ++- src/mame/drivers/m63.cpp | 92 +++--- src/mame/drivers/mcr.cpp | 125 ++++---- src/mame/drivers/meadows.cpp | 152 ++++----- src/mame/drivers/mmagic.cpp | 28 +- src/mame/drivers/multigam.cpp | 49 +-- src/mame/drivers/mw8080bw.cpp | 275 ++++++++-------- src/mame/drivers/nes.cpp | 194 ++++++----- src/mame/drivers/nes_vt.cpp | 182 +++++------ src/mame/drivers/ninjakd2.cpp | 158 +++++---- src/mame/drivers/playch10.cpp | 37 +-- src/mame/drivers/safarir.cpp | 40 +-- src/mame/drivers/segag80v.cpp | 72 ++--- src/mame/drivers/starcrus.cpp | 40 +-- src/mame/drivers/starfire.cpp | 35 +- src/mame/drivers/suna8.cpp | 350 ++++++++++---------- src/mame/drivers/super80.cpp | 166 +++++----- src/mame/drivers/tankbatt.cpp | 44 +-- src/mame/drivers/tattack.cpp | 41 ++- src/mame/drivers/thief.cpp | 53 ++- src/mame/drivers/tmnt.cpp | 622 ++++++++++++++++++------------------ src/mame/drivers/tnzs.cpp | 173 +++++----- src/mame/drivers/triplhnt.cpp | 43 ++- src/mame/drivers/vsnes.cpp | 197 ++++++------ src/mame/includes/atarist.h | 3 + src/mame/includes/circus.h | 2 +- src/mame/includes/gridlee.h | 4 +- src/mame/includes/nes.h | 5 +- src/mame/includes/ninjakd2.h | 6 +- src/mame/includes/segag80v.h | 3 +- src/mame/includes/super80.h | 8 +- src/mame/includes/thief.h | 3 + src/mame/includes/tnzs.h | 12 +- src/mame/includes/triplhnt.h | 2 +- src/mame/includes/vicdual.h | 2 +- src/mame/machine/genpin.cpp | 14 +- src/mame/machine/mm1kb.cpp | 13 +- 78 files changed, 2926 insertions(+), 3169 deletions(-) diff --git a/src/devices/bus/nes/jaleco.cpp b/src/devices/bus/nes/jaleco.cpp index 2b837bf0658..907580d6a1e 100644 --- a/src/devices/bus/nes/jaleco.cpp +++ b/src/devices/bus/nes/jaleco.cpp @@ -771,79 +771,79 @@ static const char *const jf33_sample_names[] = // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(nes_jf13_device::device_add_mconfig) - +void nes_jf13_device::device_add_mconfig(machine_config &config) +{ // additional sound hardware SPEAKER(config, "addon").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(16) - MCFG_SAMPLES_NAMES(jf13_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "addon", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_jf17_adpcm_device::device_add_mconfig) + SAMPLES(config, m_samples); + m_samples->set_channels(16); + m_samples->set_samples_names(jf13_sample_names); + m_samples->add_route(ALL_OUTPUTS, "addon", 0.50); +} +void nes_jf17_adpcm_device::device_add_mconfig(machine_config &config) +{ // additional sound hardware SPEAKER(config, "addon").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(20) - MCFG_SAMPLES_NAMES(jf17_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "addon", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_jf19_adpcm_device::device_add_mconfig) + SAMPLES(config, m_samples); + m_samples->set_channels(20); + m_samples->set_samples_names(jf17_sample_names); + m_samples->add_route(ALL_OUTPUTS, "addon", 0.50); +} +void nes_jf19_adpcm_device::device_add_mconfig(machine_config &config) +{ // additional sound hardware SPEAKER(config, "addon").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(20) - MCFG_SAMPLES_NAMES(jf19_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "addon", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_jf23_device::device_add_mconfig) + SAMPLES(config, m_samples); + m_samples->set_channels(20); + m_samples->set_samples_names(jf19_sample_names); + m_samples->add_route(ALL_OUTPUTS, "addon", 0.50); +} +void nes_jf23_device::device_add_mconfig(machine_config &config) +{ // additional sound hardware SPEAKER(config, "addon").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(20) - MCFG_SAMPLES_NAMES(jf23_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "addon", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_jf24_device::device_add_mconfig) + SAMPLES(config, m_samples); + m_samples->set_channels(20); + m_samples->set_samples_names(jf23_sample_names); + m_samples->add_route(ALL_OUTPUTS, "addon", 0.50); +} +void nes_jf24_device::device_add_mconfig(machine_config &config) +{ // additional sound hardware SPEAKER(config, "addon").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(jf24_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "addon", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_jf29_device::device_add_mconfig) + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(jf24_sample_names); + m_samples->add_route(ALL_OUTPUTS, "addon", 0.50); +} +void nes_jf29_device::device_add_mconfig(machine_config &config) +{ // additional sound hardware SPEAKER(config, "addon").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(20) - MCFG_SAMPLES_NAMES(jf29_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "addon", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_jf33_device::device_add_mconfig) + SAMPLES(config, m_samples); + m_samples->set_channels(20); + m_samples->set_samples_names(jf29_sample_names); + m_samples->add_route(ALL_OUTPUTS, "addon", 0.50); +} +void nes_jf33_device::device_add_mconfig(machine_config &config) +{ // additional sound hardware SPEAKER(config, "addon").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(20) - MCFG_SAMPLES_NAMES(jf33_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "addon", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(20); + m_samples->set_samples_names(jf33_sample_names); + m_samples->add_route(ALL_OUTPUTS, "addon", 0.50); +} diff --git a/src/devices/bus/nes/pt554.cpp b/src/devices/bus/nes/pt554.cpp index 6a1b8ac4325..98524a04bc7 100644 --- a/src/devices/bus/nes/pt554.cpp +++ b/src/devices/bus/nes/pt554.cpp @@ -88,13 +88,13 @@ static const char *const pt554_sample_names[] = // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(nes_bandai_pt554_device::device_add_mconfig) - +void nes_bandai_pt554_device::device_add_mconfig(machine_config &config) +{ // additional sound hardware SPEAKER(config, "addon").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(pt554_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "addon", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(pt554_sample_names); + m_samples->add_route(ALL_OUTPUTS, "addon", 0.50); +} diff --git a/src/devices/bus/nes_ctrl/ctrl.h b/src/devices/bus/nes_ctrl/ctrl.h index 44b029a0042..aed994bb93f 100644 --- a/src/devices/bus/nes_ctrl/ctrl.h +++ b/src/devices/bus/nes_ctrl/ctrl.h @@ -7,6 +7,8 @@ ********************************************************************** + Known Issues: + - Currently the FC expansion port is emulated as a control port **********************************************************************/ @@ -41,8 +43,6 @@ protected: nes_control_port_device *m_port; }; - -typedef device_delegate nesctrl_brightpixel_delegate; #define NESCTRL_BRIGHTPIXEL_CB(name) bool name(int x, int y) @@ -53,10 +53,29 @@ class nes_control_port_device : public device_t, { public: // construction/destruction + template + nes_control_port_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) + : nes_control_port_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } nes_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~nes_control_port_device(); - template void set_brightpixel_callback(Object &&cb) { m_brightpixel_cb = std::forward(cb); } + typedef device_delegate nesctrl_brightpixel_delegate; + + void set_brightpixel_callback(nesctrl_brightpixel_delegate callback) { m_brightpixel_cb = callback; } + template void set_brightpixel_callback(const char *devname, bool (FunctionClass::*callback)(int, int), const char *name) + { + set_brightpixel_callback(nesctrl_brightpixel_delegate(callback, name, devname, static_cast(nullptr))); + } + template void set_brightpixel_callback(bool (FunctionClass::*callback)(int, int), const char *name) + { + set_brightpixel_callback(nesctrl_brightpixel_delegate(callback, name, nullptr, static_cast(nullptr))); + } uint8_t read_bit0(); uint8_t read_bit34(); @@ -75,24 +94,6 @@ protected: // device type definition DECLARE_DEVICE_TYPE(NES_CONTROL_PORT, nes_control_port_device) - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_NES_CONTROL_PORT_ADD(_tag, _slot_intf, _def_slot) \ - MCFG_DEVICE_ADD(_tag, NES_CONTROL_PORT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) - -// currently this is emulated as a control port... -#define MCFG_FC_EXPANSION_PORT_ADD(_tag, _slot_intf, _def_slot) \ - MCFG_DEVICE_ADD(_tag, NES_CONTROL_PORT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) - -#define MCFG_NESCTRL_BRIGHTPIXEL_CB(_class, _method) \ - downcast(*device).set_brightpixel_callback(nesctrl_brightpixel_delegate(&_class::_method, #_class "::" #_method, this)); - - void nes_control_port1_devices(device_slot_interface &device); void nes_control_port2_devices(device_slot_interface &device); void fc_control_port1_devices(device_slot_interface &device); diff --git a/src/devices/bus/nes_ctrl/hori.cpp b/src/devices/bus/nes_ctrl/hori.cpp index 80e7dd835aa..1515277abb6 100644 --- a/src/devices/bus/nes_ctrl/hori.cpp +++ b/src/devices/bus/nes_ctrl/hori.cpp @@ -59,17 +59,19 @@ static void hori_adapter(device_slot_interface &device) // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(nes_horitwin_device::device_add_mconfig) - MCFG_FC_EXPANSION_PORT_ADD("port1", hori_adapter, "joypad") - MCFG_FC_EXPANSION_PORT_ADD("port2", hori_adapter, "joypad") -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_hori4p_device::device_add_mconfig) - MCFG_FC_EXPANSION_PORT_ADD("port1", hori_adapter, "joypad") - MCFG_FC_EXPANSION_PORT_ADD("port2", hori_adapter, "joypad") - MCFG_FC_EXPANSION_PORT_ADD("port3", hori_adapter, "joypad") - MCFG_FC_EXPANSION_PORT_ADD("port4", hori_adapter, "joypad") -MACHINE_CONFIG_END +void nes_horitwin_device::device_add_mconfig(machine_config &config) +{ + NES_CONTROL_PORT(config, "port1", hori_adapter, "joypad"); + NES_CONTROL_PORT(config, "port2", hori_adapter, "joypad"); +} + +void nes_hori4p_device::device_add_mconfig(machine_config &config) +{ + NES_CONTROL_PORT(config, "port1", hori_adapter, "joypad"); + NES_CONTROL_PORT(config, "port2", hori_adapter, "joypad"); + NES_CONTROL_PORT(config, "port3", hori_adapter, "joypad"); + NES_CONTROL_PORT(config, "port4", hori_adapter, "joypad"); +} //************************************************************************** diff --git a/src/devices/bus/nes_ctrl/joypad.cpp b/src/devices/bus/nes_ctrl/joypad.cpp index dd1f2272e97..08849bb0af5 100644 --- a/src/devices/bus/nes_ctrl/joypad.cpp +++ b/src/devices/bus/nes_ctrl/joypad.cpp @@ -154,10 +154,11 @@ static void arcstick_daisy(device_slot_interface &device) // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(nes_arcstick_device::device_add_mconfig) +void nes_arcstick_device::device_add_mconfig(machine_config &config) +{ // expansion port to allow daisy chaining - MCFG_FC_EXPANSION_PORT_ADD("subexp", arcstick_daisy, nullptr) -MACHINE_CONFIG_END + NES_CONTROL_PORT(config, "subexp", arcstick_daisy, nullptr); +} //************************************************************************** diff --git a/src/devices/machine/timer.h b/src/devices/machine/timer.h index 8fc08cf2972..022647061ca 100644 --- a/src/devices/machine/timer.h +++ b/src/devices/machine/timer.h @@ -113,6 +113,11 @@ public: } template void set_callback(Object &&cb) { m_callback = std::forward(cb); } + template void set_callback(void (FunctionClass::*callback)(timer_device &, void *, s32), const char *name) + { + set_callback(expired_delegate(callback, name, nullptr, static_cast(nullptr))); + } + void set_start_delay(const attotime &delay) { m_start_delay = delay; } void config_param(int param) { m_param = param; } diff --git a/src/devices/sound/asc.h b/src/devices/sound/asc.h index 582f7ce5e93..436b319beac 100644 --- a/src/devices/sound/asc.h +++ b/src/devices/sound/asc.h @@ -14,29 +14,6 @@ #pragma once - - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_ASC_ADD(_tag, _clock, _type, _irqf) \ - MCFG_DEVICE_ADD(_tag, ASC, _clock) \ - MCFG_ASC_TYPE(_type) \ - MCFG_IRQ_FUNC(_irqf) - -#define MCFG_ASC_REPLACE(_tag, _clock, _type, _irqf) \ - MCFG_DEVICE_REPLACE(_tag, ASC, _clock) \ - MCFG_ASC_TYPE(_type) \ - MCFG_IRQ_FUNC(_irqf) - -#define MCFG_ASC_TYPE(_type) \ - downcast(*device).set_type(asc_device::asc_type::_type); - -#define MCFG_IRQ_FUNC(_irqf) \ - downcast(device)->set_irqf(DEVCB_##_irqf); - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -68,10 +45,6 @@ public: asc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); void set_type(asc_type type) { m_chip_type = type; } - template devcb_base &set_irqf(Write &&wr) - { - return write_irq.set_callback(std::forward(wr)); - } auto irqf_callback() { return write_irq.bind(); } DECLARE_READ8_MEMBER(read); diff --git a/src/devices/sound/lmc1992.h b/src/devices/sound/lmc1992.h index 42473eaf7fd..88763628999 100644 --- a/src/devices/sound/lmc1992.h +++ b/src/devices/sound/lmc1992.h @@ -49,16 +49,6 @@ enum }; - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_LMC1992_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, LMC1992, 0) - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -70,7 +60,7 @@ class lmc1992_device : public device_t, { public: // construction/destruction - lmc1992_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + lmc1992_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); DECLARE_WRITE_LINE_MEMBER( clock_w ); DECLARE_WRITE_LINE_MEMBER( data_w ); diff --git a/src/devices/sound/msm5232.h b/src/devices/sound/msm5232.h index 7afc5131f0d..bd4d16fedce 100644 --- a/src/devices/sound/msm5232.h +++ b/src/devices/sound/msm5232.h @@ -21,6 +21,7 @@ public: void set_capacitors(double cap1, double cap2, double cap3, double cap4, double cap5, double cap6, double cap7, double cap8); template devcb_base &set_gate_handler_callback(Object &&cb) { return m_gate_handler_cb.set_callback(std::forward(cb)); } + auto gate() { return m_gate_handler_cb.bind(); } DECLARE_WRITE8_MEMBER( write ); void set_clock(int clock); diff --git a/src/devices/sound/nes_apu.h b/src/devices/sound/nes_apu.h index 1a20e354331..90a48d50b0e 100644 --- a/src/devices/sound/nes_apu.h +++ b/src/devices/sound/nes_apu.h @@ -39,12 +39,6 @@ * processor, as each is shared. */ -#define MCFG_NES_APU_IRQ_HANDLER(_devcb) \ - downcast(*device).set_irq_handler(DEVCB_##_devcb); - -#define MCFG_NES_APU_MEM_READ_CALLBACK(_devcb) \ - downcast(*device).set_mem_read_callback(DEVCB_##_devcb); - class nesapu_device : public device_t, public device_sound_interface { diff --git a/src/devices/sound/samples.h b/src/devices/sound/samples.h index f3b6033021f..f5f1ca088f0 100644 --- a/src/devices/sound/samples.h +++ b/src/devices/sound/samples.h @@ -21,27 +21,12 @@ // device type definition DECLARE_DEVICE_TYPE(SAMPLES, samples_device) - - //************************************************************************** -// INTERFACE CONFIGURATION MACROS +// TYPE DEFINITIONS //************************************************************************** -#define MCFG_SAMPLES_CHANNELS(_channels) \ - downcast(*device).set_channels(_channels); - -#define MCFG_SAMPLES_NAMES(_names) \ - downcast(*device).set_samples_names(_names); - #define SAMPLES_START_CB_MEMBER(_name) void _name() -#define MCFG_SAMPLES_START_CB(_class, _method) \ - downcast(*device).set_samples_start_callback(samples_device::start_cb_delegate(&_class::_method, #_class "::" #_method, this)); - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - // ======================> samples_device class samples_device : public device_t, @@ -58,7 +43,6 @@ public: void set_samples_names(const char *const *names) { m_names = names; } // start callback helpers - template void set_samples_start_callback(Object &&cb) { m_samples_start_cb = std::forward(cb); } void set_samples_start_callback(start_cb_delegate callback) { m_samples_start_cb = callback; } template void set_samples_start_callback(const char *devname, void (FunctionClass::*callback)(), const char *name) { diff --git a/src/devices/video/ppu2c0x.h b/src/devices/video/ppu2c0x.h index 2d12e243db6..0dbb2dc690c 100644 --- a/src/devices/video/ppu2c0x.h +++ b/src/devices/video/ppu2c0x.h @@ -30,43 +30,6 @@ #define PPU_DRAW_OAM 1 -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_PPU2C0X_ADD(_tag, _type) \ - MCFG_DEVICE_ADD(_tag, _type, 0) - -#define MCFG_PPU2C02_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_2C02) -#define MCFG_PPU2C03B_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_2C03B) -#define MCFG_PPU2C04_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_2C04) -#define MCFG_PPU2C07_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_2C07) -#define MCFG_PPUPALC_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_PALC) -#define MCFG_PPU2C05_01_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_2C05_01) -#define MCFG_PPU2C05_02_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_2C05_02) -#define MCFG_PPU2C05_03_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_2C05_03) -#define MCFG_PPU2C05_04_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_2C05_04) - -#define MCFG_PPU2C0X_SET_SCREEN MCFG_VIDEO_SET_SCREEN - -#define MCFG_PPU2C0X_CPU(_tag) \ - downcast(*device).set_cpu_tag(_tag); - -#define MCFG_PPU2C0X_INT_CALLBACK(_devcb) \ - downcast(*device).set_int_callback(DEVCB_##_devcb); - -#define MCFG_PPU2C0X_IGNORE_SPRITE_WRITE_LIMIT \ - downcast(*device).use_sprite_write_limitation_disable(); - ///************************************************************************* // TYPE DEFINITIONS ///************************************************************************* @@ -105,8 +68,7 @@ public: virtual DECLARE_READ8_MEMBER( palette_read ); virtual DECLARE_WRITE8_MEMBER( palette_write ); - void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); } - template devcb_base &set_int_callback(Object &&cb) { return m_int_callback.set_callback(std::forward(cb)); } + template void set_cpu_tag(T &&tag) { m_cpu.set_tag(std::forward(tag)); } auto int_callback() { return m_int_callback.bind(); } /* routines */ @@ -193,7 +155,7 @@ protected: }; // construction/destruction - ppu2c0x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + ppu2c0x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock = 0); virtual void device_start() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; @@ -262,7 +224,7 @@ private: class ppu2c0x_rgb_device : public ppu2c0x_device { protected: - ppu2c0x_rgb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + ppu2c0x_rgb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock = 0); virtual void init_palette() override; @@ -272,47 +234,47 @@ private: class ppu2c02_device : public ppu2c0x_device { public: - ppu2c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppu2c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; class ppu2c03b_device : public ppu2c0x_rgb_device { public: - ppu2c03b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppu2c03b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; class ppu2c04_device : public ppu2c0x_rgb_device { public: - ppu2c04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppu2c04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; class ppu2c07_device : public ppu2c0x_device { public: - ppu2c07_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppu2c07_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; class ppupalc_device : public ppu2c0x_device { public: - ppupalc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppupalc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; class ppu2c05_01_device : public ppu2c0x_rgb_device { public: - ppu2c05_01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppu2c05_01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; class ppu2c05_02_device : public ppu2c0x_rgb_device { public: - ppu2c05_02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppu2c05_02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; class ppu2c05_03_device : public ppu2c0x_rgb_device { public: - ppu2c05_03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppu2c05_03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; class ppu2c05_04_device : public ppu2c0x_rgb_device { public: - ppu2c05_04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppu2c05_04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; diff --git a/src/devices/video/ppu2c0x_vt.h b/src/devices/video/ppu2c0x_vt.h index 840b3b3449a..cfc2cacc525 100644 --- a/src/devices/video/ppu2c0x_vt.h +++ b/src/devices/video/ppu2c0x_vt.h @@ -16,24 +16,6 @@ #include "video/ppu2c0x.h" -#define MCFG_PPU_VT03_ADD(_tag) \ - MCFG_PPU2C0X_ADD(_tag, PPU_VT03) - -#define MCFG_PPU_VT03_READ_BG_CB(_devcb) \ - downcast(*device).set_read_bg_callback(DEVCB_##_devcb); - -#define MCFG_PPU_VT03_READ_SP_CB(_devcb) \ - downcast(*device).set_read_sp_callback(DEVCB_##_devcb); - -#define MCFG_PPU_VT03_MODIFY MCFG_DEVICE_MODIFY - -#define MCFG_PPU_VT03_SET_PAL_MODE(pmode) \ - downcast(*device).set_palette_mode(pmode); - -#define MCFG_PPU_VT03_SET_DESCRAMBLE(dsc) \ - downcast(*device).set_201x_descramble(dsc); - - enum vtxx_pal_mode { PAL_MODE_VT0x, PAL_MODE_NEW_RGB, @@ -43,10 +25,10 @@ enum vtxx_pal_mode { class ppu_vt03_device : public ppu2c0x_device { public: - ppu_vt03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ppu_vt03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); - template devcb_base &set_read_bg_callback(Object &&cb) { return m_read_bg.set_callback(std::forward(cb)); } - template devcb_base &set_read_sp_callback(Object &&cb) { return m_read_sp.set_callback(std::forward(cb)); } + auto read_bg() { return m_read_bg.bind(); } + auto read_sp() { return m_read_sp.bind(); } void set_palette_mode(vtxx_pal_mode pmode) { m_pal_mode = pmode; } void set_201x_descramble(const uint8_t descramble[6]) { for (int i = 0; i < 6; i++) m_2012_2017_descramble[i] = descramble[i]; } diff --git a/src/mame/audio/astrof.cpp b/src/mame/audio/astrof.cpp index 3969227b5d3..89e334a6672 100644 --- a/src/mame/audio/astrof.cpp +++ b/src/mame/audio/astrof.cpp @@ -139,13 +139,14 @@ static const char *const astrof_sample_names[] = nullptr }; -MACHINE_CONFIG_START(astrof_state::astrof_audio) +void astrof_state::astrof_audio(machine_config &config) +{ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(astrof_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(astrof_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} diff --git a/src/mame/audio/carnival.cpp b/src/mame/audio/carnival.cpp index c19f4d5a942..d3bc5db7cc7 100644 --- a/src/mame/audio/carnival.cpp +++ b/src/mame/audio/carnival.cpp @@ -197,8 +197,8 @@ void vicdual_state::mboard_map(address_map &map) } -MACHINE_CONFIG_START(vicdual_state::carnival_audio) - +void vicdual_state::carnival_audio(machine_config &config) +{ /* music board */ I8039(config, m_audiocpu, XTAL(3'579'545)); m_audiocpu->set_addrmap(AS_PROGRAM, &vicdual_state::mboard_map); @@ -209,8 +209,8 @@ MACHINE_CONFIG_START(vicdual_state::carnival_audio) AY8912(config, m_psg, XTAL(3'579'545)/3).add_route(ALL_OUTPUTS, "mono", 0.25); /* samples */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(10) - MCFG_SAMPLES_NAMES(carnival_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(10); + m_samples->set_samples_names(carnival_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.5); +} diff --git a/src/mame/audio/cclimber.cpp b/src/mame/audio/cclimber.cpp index 1288bdae653..e09c01bd642 100644 --- a/src/mame/audio/cclimber.cpp +++ b/src/mame/audio/cclimber.cpp @@ -57,16 +57,17 @@ void cclimber_audio_device::device_start() // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(cclimber_audio_device::device_add_mconfig) +void cclimber_audio_device::device_add_mconfig(machine_config &config) +{ ay8910_device &aysnd(AY8910(config, "aysnd", SND_CLOCK/2)); aysnd.port_a_write_callback().set(FUNC(cclimber_audio_device::sample_select_w)); aysnd.add_route(ALL_OUTPUTS, ":speaker", 0.5); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_START_CB(cclimber_audio_device, sh_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, ":speaker", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_start_callback(FUNC(cclimber_audio_device::sh_start)); + m_samples->add_route(ALL_OUTPUTS, ":speaker", 0.5); +} WRITE8_MEMBER(cclimber_audio_device::sample_select_w) diff --git a/src/mame/audio/cinemat.cpp b/src/mame/audio/cinemat.cpp index 5646df01736..e624ab6e8d5 100644 --- a/src/mame/audio/cinemat.cpp +++ b/src/mame/audio/cinemat.cpp @@ -147,7 +147,8 @@ WRITE_LINE_MEMBER(cinemat_state::spacewar_sound4_w) } } -MACHINE_CONFIG_START(cinemat_state::spacewar_sound) +void cinemat_state::spacewar_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_state::spacewar_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_state::spacewar_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_state::spacewar_sound2_w)); @@ -156,11 +157,11 @@ MACHINE_CONFIG_START(cinemat_state::spacewar_sound) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(spacewar_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(spacewar_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -200,18 +201,19 @@ WRITE_LINE_MEMBER(cinemat_state::barrier_sound2_w) m_samples->start(2, 2); } -MACHINE_CONFIG_START(cinemat_state::barrier_sound) +void cinemat_state::barrier_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_state::barrier_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_state::barrier_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_state::barrier_sound2_w)); SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(3) - MCFG_SAMPLES_NAMES(barrier_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(3); + m_samples->set_samples_names(barrier_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -256,18 +258,19 @@ WRITE_LINE_MEMBER(cinemat_state::speedfrk_start_led_w) m_led = !state; } -MACHINE_CONFIG_START(cinemat_state::speedfrk_sound) +void cinemat_state::speedfrk_sound(machine_config &config) +{ m_outlatch->q_out_cb<1>().set(FUNC(cinemat_state::speedfrk_start_led_w)); m_outlatch->q_out_cb<3>().set(FUNC(cinemat_state::speedfrk_sound3_w)); m_outlatch->q_out_cb<4>().set(FUNC(cinemat_state::speedfrk_sound4_w)); SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(speedfrk_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(speedfrk_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -337,7 +340,8 @@ WRITE_LINE_MEMBER(cinemat_state::starhawk_sound7_w) m_samples->stop(3); } -MACHINE_CONFIG_START(cinemat_state::starhawk_sound) +void cinemat_state::starhawk_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_state::starhawk_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_state::starhawk_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_state::starhawk_sound2_w)); @@ -347,11 +351,11 @@ MACHINE_CONFIG_START(cinemat_state::starhawk_sound) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(5) - MCFG_SAMPLES_NAMES(starhawk_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(5); + m_samples->set_samples_names(starhawk_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -415,7 +419,8 @@ WRITE_LINE_MEMBER(cinemat_16level_state::sundance_sound7_w) m_samples->start(5, 5); } -MACHINE_CONFIG_START(cinemat_16level_state::sundance_sound) +void cinemat_16level_state::sundance_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_16level_state::sundance_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_16level_state::sundance_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_16level_state::sundance_sound2_w)); @@ -425,11 +430,11 @@ MACHINE_CONFIG_START(cinemat_16level_state::sundance_sound) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(sundance_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(sundance_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -497,16 +502,17 @@ WRITE_LINE_MEMBER(cinemat_state::tailg_sound_w) } } -MACHINE_CONFIG_START(cinemat_state::tailg_sound) +void cinemat_state::tailg_sound(machine_config &config) +{ m_outlatch->q_out_cb<4>().set(FUNC(cinemat_state::tailg_sound_w)); SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(tailg_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(tailg_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -566,7 +572,8 @@ WRITE_LINE_MEMBER(cinemat_state::warrior_sound4_w) m_samples->start(4, 4); } -MACHINE_CONFIG_START(cinemat_state::warrior_sound) +void cinemat_state::warrior_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_state::warrior_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_state::warrior_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_state::warrior_sound2_w)); @@ -575,11 +582,11 @@ MACHINE_CONFIG_START(cinemat_state::warrior_sound) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(5) - MCFG_SAMPLES_NAMES(warrior_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(5); + m_samples->set_samples_names(warrior_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -665,7 +672,8 @@ WRITE_LINE_MEMBER(cinemat_state::armora_sound3_w) m_samples->stop(6); } -MACHINE_CONFIG_START(cinemat_state::armora_sound) +void cinemat_state::armora_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_state::armora_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_state::armora_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_state::armora_sound2_w)); @@ -674,11 +682,11 @@ MACHINE_CONFIG_START(cinemat_state::armora_sound) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(7) - MCFG_SAMPLES_NAMES(armora_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(7); + m_samples->set_samples_names(armora_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -761,7 +769,8 @@ WRITE_LINE_MEMBER(cinemat_state::ripoff_sound7_w) m_samples->start(4, 4); } -MACHINE_CONFIG_START(cinemat_state::ripoff_sound) +void cinemat_state::ripoff_sound(machine_config &config) +{ m_outlatch->q_out_cb<1>().set(FUNC(cinemat_state::ripoff_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_state::ripoff_sound2_w)); m_outlatch->q_out_cb<3>().set(FUNC(cinemat_state::ripoff_sound3_w)); @@ -770,11 +779,11 @@ MACHINE_CONFIG_START(cinemat_state::ripoff_sound) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(ripoff_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(ripoff_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -877,7 +886,8 @@ WRITE_LINE_MEMBER(cinemat_state::starcas_sound3_w) m_samples->start(7, 7); } -MACHINE_CONFIG_START(cinemat_state::starcas_sound) +void cinemat_state::starcas_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_state::starcas_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_state::starcas_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_state::starcas_sound2_w)); @@ -886,11 +896,11 @@ MACHINE_CONFIG_START(cinemat_state::starcas_sound) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(starcas_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(starcas_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.5); +} @@ -1010,18 +1020,19 @@ WRITE_LINE_MEMBER(cinemat_64level_state::solarq_sound0_w) } } -MACHINE_CONFIG_START(cinemat_64level_state::solarq_sound) +void cinemat_64level_state::solarq_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_64level_state::solarq_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_64level_state::solarq_sound1_w)); m_outlatch->q_out_cb<4>().set(FUNC(cinemat_64level_state::solarq_sound4_w)); SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(solarq_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(solarq_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.5); +} @@ -1147,7 +1158,8 @@ WRITE_LINE_MEMBER(cinemat_color_state::boxingb_sound3_w) m_samples->start(11, 11); } -MACHINE_CONFIG_START(cinemat_color_state::boxingb_sound) +void cinemat_color_state::boxingb_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_color_state::boxingb_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_color_state::boxingb_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_color_state::boxingb_sound2_w)); @@ -1156,11 +1168,11 @@ MACHINE_CONFIG_START(cinemat_color_state::boxingb_sound) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(12) - MCFG_SAMPLES_NAMES(boxingb_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(12); + m_samples->set_samples_names(boxingb_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -1263,7 +1275,8 @@ WRITE_LINE_MEMBER(cinemat_state::wotw_sound3_w) m_samples->start(7, 7); } -MACHINE_CONFIG_START(cinemat_state::wotw_sound) +void cinemat_state::wotw_sound(machine_config &config) +{ m_outlatch->q_out_cb<0>().set(FUNC(cinemat_state::wotw_sound0_w)); m_outlatch->q_out_cb<1>().set(FUNC(cinemat_state::wotw_sound1_w)); m_outlatch->q_out_cb<2>().set(FUNC(cinemat_state::wotw_sound2_w)); @@ -1272,11 +1285,11 @@ MACHINE_CONFIG_START(cinemat_state::wotw_sound) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(wotw_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(wotw_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} diff --git a/src/mame/audio/depthch.cpp b/src/mame/audio/depthch.cpp index 15f92dfc617..fa91754e077 100644 --- a/src/mame/audio/depthch.cpp +++ b/src/mame/audio/depthch.cpp @@ -83,11 +83,11 @@ WRITE8_MEMBER( vicdual_state::depthch_audio_w ) } -MACHINE_CONFIG_START(vicdual_state::depthch_audio) - +void vicdual_state::depthch_audio(machine_config &config) +{ /* samples */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(5) - MCFG_SAMPLES_NAMES(depthch_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(5); + m_samples->set_samples_names(depthch_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.5); +} diff --git a/src/mame/audio/invinco.cpp b/src/mame/audio/invinco.cpp index 22a51709079..bf0811b2209 100644 --- a/src/mame/audio/invinco.cpp +++ b/src/mame/audio/invinco.cpp @@ -94,11 +94,11 @@ WRITE8_MEMBER( vicdual_state::invinco_audio_w ) } -MACHINE_CONFIG_START(vicdual_state::invinco_audio) - +void vicdual_state::invinco_audio(machine_config &config) +{ /* samples */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(invinco_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(invinco_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.5); +} diff --git a/src/mame/audio/pulsar.cpp b/src/mame/audio/pulsar.cpp index 1aae442a9ae..63daee06b11 100644 --- a/src/mame/audio/pulsar.cpp +++ b/src/mame/audio/pulsar.cpp @@ -171,11 +171,11 @@ WRITE8_MEMBER( vicdual_state::pulsar_audio_2_w ) } -MACHINE_CONFIG_START(vicdual_state::pulsar_audio) - +void vicdual_state::pulsar_audio(machine_config &config) +{ /* samples */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(12) - MCFG_SAMPLES_NAMES(pulsar_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(12); + m_samples->set_samples_names(pulsar_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.5); +} diff --git a/src/mame/audio/spacefb.cpp b/src/mame/audio/spacefb.cpp index 3128fd58a13..a6e3055d130 100644 --- a/src/mame/audio/spacefb.cpp +++ b/src/mame/audio/spacefb.cpp @@ -77,14 +77,17 @@ static const char *const spacefb_sample_names[] = }; -MACHINE_CONFIG_START(spacefb_state::spacefb_audio) +void spacefb_state::spacefb_audio(machine_config &config) +{ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) - - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(3) - MCFG_SAMPLES_NAMES(spacefb_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END + DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // 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); + + SAMPLES(config, m_samples); + m_samples->set_channels(3); + m_samples->set_samples_names(spacefb_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 1.0); +} diff --git a/src/mame/audio/targ.cpp b/src/mame/audio/targ.cpp index 11320a14ba9..77d2c1fb150 100644 --- a/src/mame/audio/targ.cpp +++ b/src/mame/audio/targ.cpp @@ -176,33 +176,34 @@ SAMPLES_START_CB_MEMBER(exidy_state::targ_audio_start) } -MACHINE_CONFIG_START(exidy_state::spectar_audio) - +void exidy_state::spectar_audio(machine_config &config) +{ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(sample_names) - MCFG_SAMPLES_START_CB(exidy_state, spectar_audio_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99) - 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 - + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(sample_names); + m_samples->set_samples_start_callback(FUNC(exidy_state::spectar_audio_start)); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.25); -MACHINE_CONFIG_START(exidy_state::targ_audio) + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.99); + 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 exidy_state::targ_audio(machine_config &config) +{ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(sample_names) - MCFG_SAMPLES_START_CB(exidy_state, targ_audio_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(sample_names); + m_samples->set_samples_start_callback(FUNC(exidy_state::targ_audio_start)); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.25); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99) - 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.99); + 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/audio/tranqgun.cpp b/src/mame/audio/tranqgun.cpp index 40c320ca967..c63845f5097 100644 --- a/src/mame/audio/tranqgun.cpp +++ b/src/mame/audio/tranqgun.cpp @@ -140,11 +140,11 @@ WRITE8_MEMBER( vicdual_state::tranqgun_audio_w ) } -MACHINE_CONFIG_START(vicdual_state::tranqgun_audio) - +void vicdual_state::tranqgun_audio(machine_config &config) +{ /* samples */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(tranqgun_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(tranqgun_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.5); +} diff --git a/src/mame/audio/turbo.cpp b/src/mame/audio/turbo.cpp index 08fd950006d..642e924a4c6 100644 --- a/src/mame/audio/turbo.cpp +++ b/src/mame/audio/turbo.cpp @@ -183,53 +183,53 @@ static const char *const turbo_sample_names[] = }; -MACHINE_CONFIG_START(turbo_state::turbo_samples) - +void turbo_state::turbo_samples(machine_config &config) +{ /* this is the cockpit speaker configuration */ SPEAKER(config, "fspeaker", 0.0, 0.0, 1.0); // front SPEAKER(config, "bspeaker", 0.0, 0.0, -0.5); // back SPEAKER(config, "lspeaker", -0.2, 0.0, 1.0); // left SPEAKER(config, "rspeaker", 0.2, 0.0, 1.0); // right - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(10) - MCFG_SAMPLES_NAMES(turbo_sample_names) + SAMPLES(config, m_samples); + m_samples->set_channels(10); + m_samples->set_samples_names(turbo_sample_names); /* channel 0 = CRASH.S -> CRASH.S/SM */ - MCFG_SOUND_ROUTE(0, "fspeaker", 0.25) + m_samples->add_route(0, "fspeaker", 0.25); /* channel 1 = TRIG1-4 -> ALARM.M/F/R/L */ - MCFG_SOUND_ROUTE(1, "fspeaker", 0.25) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) - MCFG_SOUND_ROUTE(1, "lspeaker", 0.25) + m_samples->add_route(1, "fspeaker", 0.25); + m_samples->add_route(1, "rspeaker", 0.25); + m_samples->add_route(1, "lspeaker", 0.25); /* channel 2 = SLIP/SPIN -> SKID.F/R/L/M */ - MCFG_SOUND_ROUTE(2, "fspeaker", 0.25) - MCFG_SOUND_ROUTE(2, "rspeaker", 0.25) - MCFG_SOUND_ROUTE(2, "lspeaker", 0.25) + m_samples->add_route(2, "fspeaker", 0.25); + m_samples->add_route(2, "rspeaker", 0.25); + m_samples->add_route(2, "lspeaker", 0.25); /* channel 3 = CRASH.L -> CRASH.L/LM */ - MCFG_SOUND_ROUTE(3, "bspeaker", 0.25) + m_samples->add_route(3, "bspeaker", 0.25); /* channel 4 = AMBU -> AMBULANCE/AMBULANCE.M */ - MCFG_SOUND_ROUTE(4, "fspeaker", 0.25) + m_samples->add_route(4, "fspeaker", 0.25); /* channel 5 = ACCEL+BSEL -> MYCAR.F/W/M + MYCAR0.F/M + MYCAR1.F/M */ - MCFG_SOUND_ROUTE(5, "fspeaker", 0.25) - MCFG_SOUND_ROUTE(5, "bspeaker", 0.25) + m_samples->add_route(5, "fspeaker", 0.25); + m_samples->add_route(5, "bspeaker", 0.25); /* channel 6 = OSEL -> OCAR.F/FM */ - MCFG_SOUND_ROUTE(6, "fspeaker", 0.25) + m_samples->add_route(6, "fspeaker", 0.25); /* channel 7 = OSEL -> OCAR.L/LM */ - MCFG_SOUND_ROUTE(7, "lspeaker", 0.25) + m_samples->add_route(7, "lspeaker", 0.25); /* channel 8 = OSEL -> OCAR.R/RM */ - MCFG_SOUND_ROUTE(8, "rspeaker", 0.25) + m_samples->add_route(8, "rspeaker", 0.25); /* channel 9 = OSEL -> OCAR.W/WM */ - MCFG_SOUND_ROUTE(9, "bspeaker", 0.25) -MACHINE_CONFIG_END + m_samples->add_route(9, "bspeaker", 0.25); +} /* Cockpit: CN2 1+2 -> FRONT @@ -429,46 +429,47 @@ static const char *const subroc3d_sample_names[] = nullptr }; -MACHINE_CONFIG_START(turbo_state::subroc3d_samples) +void turbo_state::subroc3d_samples(machine_config &config) +{ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(12) - MCFG_SAMPLES_NAMES(subroc3d_sample_names) + SAMPLES(config, m_samples); + m_samples->set_channels(12); + m_samples->set_samples_names(subroc3d_sample_names); /* MISSILE in channels 0 and 1 */ - MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) + m_samples->add_route(0, "lspeaker", 0.25); + m_samples->add_route(1, "rspeaker", 0.25); /* TORPEDO in channels 2 and 3 */ - MCFG_SOUND_ROUTE(2, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(3, "rspeaker", 0.25) + m_samples->add_route(2, "lspeaker", 0.25); + m_samples->add_route(3, "rspeaker", 0.25); /* FIGHTER in channels 4 and 5 */ - MCFG_SOUND_ROUTE(4, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(5, "rspeaker", 0.25) + m_samples->add_route(4, "lspeaker", 0.25); + m_samples->add_route(5, "rspeaker", 0.25); /* HIT in channels 6 and 7 */ - MCFG_SOUND_ROUTE(6, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(7, "rspeaker", 0.25) + m_samples->add_route(6, "lspeaker", 0.25); + m_samples->add_route(7, "rspeaker", 0.25); /* FIRE sound in channel 8 */ - MCFG_SOUND_ROUTE(8, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(8, "rspeaker", 0.25) + m_samples->add_route(8, "lspeaker", 0.25); + m_samples->add_route(8, "rspeaker", 0.25); /* SHIP EXP sound in channel 9 */ - MCFG_SOUND_ROUTE(9, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(9, "rspeaker", 0.25) + m_samples->add_route(9, "lspeaker", 0.25); + m_samples->add_route(9, "rspeaker", 0.25); /* ALARM TRIG sound in channel 10 */ - MCFG_SOUND_ROUTE(10, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(10, "rspeaker", 0.25) + m_samples->add_route(10, "lspeaker", 0.25); + m_samples->add_route(10, "rspeaker", 0.25); /* PROLOGUE sound in channel 11 */ - MCFG_SOUND_ROUTE(11, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(11, "rspeaker", 0.25) -MACHINE_CONFIG_END + m_samples->add_route(11, "lspeaker", 0.25); + m_samples->add_route(11, "rspeaker", 0.25); +} @@ -575,13 +576,14 @@ static const char *const buckrog_sample_names[]= }; -MACHINE_CONFIG_START(turbo_state::buckrog_samples) +void turbo_state::buckrog_samples(machine_config &config) +{ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(buckrog_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(buckrog_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.25); +} diff --git a/src/mame/audio/vicdual-97271p.cpp b/src/mame/audio/vicdual-97271p.cpp index 6daeb676d89..6d202e73a15 100644 --- a/src/mame/audio/vicdual-97271p.cpp +++ b/src/mame/audio/vicdual-97271p.cpp @@ -86,15 +86,16 @@ s97271p_device::s97271p_device(const machine_config &mconfig, const char *tag, d // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(s97271p_device::device_add_mconfig) +void s97271p_device::device_add_mconfig(machine_config &config) +{ SPEAKER(config, "mono").front_center(); /* samples */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(13) - MCFG_SAMPLES_NAMES(nsub_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(13); + m_samples->set_samples_names(nsub_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.5); +} //------------------------------------------------- // device_start - device-specific startup diff --git a/src/mame/audio/vicdual.cpp b/src/mame/audio/vicdual.cpp index e0ab608bd7b..8a21e9fd788 100644 --- a/src/mame/audio/vicdual.cpp +++ b/src/mame/audio/vicdual.cpp @@ -111,15 +111,16 @@ static const char *const frogs_sample_names[] = }; -MACHINE_CONFIG_START(vicdual_state::frogs_audio) - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(5) - MCFG_SAMPLES_NAMES(frogs_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) +void vicdual_state::frogs_audio(machine_config &config) +{ + SAMPLES(config, m_samples); + m_samples->set_channels(5); + m_samples->set_samples_names(frogs_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.35); - MCFG_DEVICE_ADD("discrete", DISCRETE, frogs_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, frogs_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0); +} TIMER_CALLBACK_MEMBER( vicdual_state::frogs_croak_callback ) @@ -444,11 +445,11 @@ static DISCRETE_SOUND_START(headon_discrete) DISCRETE_SOUND_END -MACHINE_CONFIG_START(vicdual_state::headon_audio) - - MCFG_DEVICE_ADD("discrete", DISCRETE, headon_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END +void vicdual_state::headon_audio(machine_config &config) +{ + DISCRETE(config, m_discrete, headon_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0); +} WRITE8_MEMBER( vicdual_state::headon_audio_w ) { @@ -590,12 +591,13 @@ static const char *const brdrline_sample_names[] = }; -MACHINE_CONFIG_START(vicdual_state::brdrline_audio) - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(7) - MCFG_SAMPLES_NAMES(brdrline_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) -MACHINE_CONFIG_END +void vicdual_state::brdrline_audio(machine_config &config) +{ + SAMPLES(config, m_samples); + m_samples->set_channels(7); + m_samples->set_samples_names(brdrline_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.35); +} WRITE8_MEMBER( vicdual_state::brdrline_audio_w ) { diff --git a/src/mame/audio/zaxxon.cpp b/src/mame/audio/zaxxon.cpp index 8220bf1885f..cada06e9bc0 100644 --- a/src/mame/audio/zaxxon.cpp +++ b/src/mame/audio/zaxxon.cpp @@ -92,12 +92,13 @@ static const char *const zaxxon_sample_names[] = }; -MACHINE_CONFIG_START(zaxxon_state::zaxxon_samples) - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(12) - MCFG_SAMPLES_NAMES(zaxxon_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) -MACHINE_CONFIG_END +void zaxxon_state::zaxxon_samples(machine_config &config) +{ + SAMPLES(config, m_samples); + m_samples->set_channels(12); + m_samples->set_samples_names(zaxxon_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.25); +} @@ -192,12 +193,13 @@ static const char *const congo_sample_names[] = }; -MACHINE_CONFIG_START(zaxxon_state::congo_samples) - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(5) - MCFG_SAMPLES_NAMES(congo_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) -MACHINE_CONFIG_END +void zaxxon_state::congo_samples(machine_config &config) +{ + SAMPLES(config, m_samples); + m_samples->set_channels(5); + m_samples->set_samples_names(congo_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.25); +} diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp index 1cde5338f2f..5cb882ade9a 100644 --- a/src/mame/drivers/8080bw.cpp +++ b/src/mame/drivers/8080bw.cpp @@ -407,12 +407,12 @@ INPUT_PORTS_END /* same as regular invaders, but with a color board added */ -MACHINE_CONFIG_START(_8080bw_state::invadpt2) +void _8080bw_state::invadpt2(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(invadpt2_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::invadpt2_io_map); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* 60 Hz signal clocks two LS161. Ripple carry will */ @@ -420,17 +420,17 @@ MACHINE_CONFIG_START(_8080bw_state::invadpt2) WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ invaders_samples_audio(config); -MACHINE_CONFIG_END +} @@ -451,13 +451,13 @@ void _8080bw_state::spacerng_io_map(address_map &map) map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); } -MACHINE_CONFIG_START(_8080bw_state::spacerng) +void _8080bw_state::spacerng(machine_config &config) +{ invadpt2(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(spacerng_io_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::spacerng_io_map); +} @@ -494,28 +494,27 @@ static INPUT_PORTS_START( spcewars ) PORT_DIPSETTING( 0x08, "2000" ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::spcewars) +void _8080bw_state::spcewars(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(spcewars_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::spcewars_io_map); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* sound hardware */ invaders_samples_audio(config); /* extra audio channel */ - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invaders) -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders)); +} /*******************************************************/ @@ -538,17 +537,18 @@ void _8080bw_state::spcewarla_io_map(address_map &map) map(0x0c, 0x0c).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); } -MACHINE_CONFIG_START(_8080bw_state::spcewarla) +void _8080bw_state::spcewarla(machine_config &config) +{ spcewars(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(spcewarla_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::spcewarla_io_map); WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255); - MCFG_PALETTE_ADD_3BIT_RBG("palette") - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2) -MACHINE_CONFIG_END + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); + + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2)); +} /*******************************************************/ @@ -605,14 +605,13 @@ static INPUT_PORTS_START( astropal ) PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::astropal) +void _8080bw_state::astropal(machine_config &config) +{ invaders(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(astropal_io_map) - -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::astropal_io_map); +} @@ -659,25 +658,26 @@ static INPUT_PORTS_START( cosmo ) PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW1:8" ) /* must be HIGH normally or the joystick won't work */ INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::cosmo) +void _8080bw_state::cosmo(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(cosmo_map) - MCFG_DEVICE_IO_MAP(cosmo_io_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::cosmo_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::cosmo_io_map); + WATCHDOG_TIMER(config, m_watchdog); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_cosmo) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_cosmo)); - MCFG_PALETTE_ADD_3BIT_RGB("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rgb)); /* sound hardware */ invaders_samples_audio(config); -MACHINE_CONFIG_END +} @@ -819,30 +819,30 @@ void _8080bw_state::spacecom_io_map(address_map &map) map(0x44, 0x44).portr("IN2").w(FUNC(_8080bw_state::invaders_audio_2_w)); } -MACHINE_CONFIG_START(_8080bw_state::spacecom) - +void _8080bw_state::spacecom(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(18'000'000) / 10) // divider guessed + I8080A(config, m_maincpu, XTAL(18'000'000) / 10); // divider guessed // TODO: move irq handling away from mw8080.c, this game runs on custom hardware - MCFG_DEVICE_PROGRAM_MAP(spacecom_map) - MCFG_DEVICE_IO_MAP(spacecom_io_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::spacecom_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::spacecom_io_map); MCFG_MACHINE_START_OVERRIDE(mw8080bw_state, mw8080bw) MCFG_MACHINE_RESET_OVERRIDE(mw8080bw_state, mw8080bw) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_spacecom) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 0*8, 28*8-1); + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_spacecom)); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* sound hardware */ invaders_audio(config); -MACHINE_CONFIG_END +} void _8080bw_state::init_spacecom() { @@ -933,34 +933,33 @@ static INPUT_PORTS_START( invrvnge ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::invrvnge) +void _8080bw_state::invrvnge(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(invrvnge_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::invrvnge_io_map); WATCHDOG_TIMER(config, m_watchdog); - MCFG_DEVICE_ADD("audiocpu", M6808, XTAL(4'000'000)/2) // MC6808P - MCFG_DEVICE_PROGRAM_MAP(invrvnge_sound_map) + M6808(config, "audiocpu", XTAL(4'000'000)/2).set_addrmap(AS_PROGRAM, &_8080bw_state::invrvnge_sound_map); // MC6808P /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ SPEAKER(config, "mono").front_center(); AY8910(config, "ay1", XTAL(4'000'000)/2).add_route(ALL_OUTPUTS, "mono", 0.5); -MACHINE_CONFIG_END +} @@ -1072,11 +1071,11 @@ void _8080bw_state::starw1_io_map(address_map &map) map(0x07, 0x07).nopw(); /* writes 89 at boot */ } -MACHINE_CONFIG_START(_8080bw_state::starw1) +void _8080bw_state::starw1(machine_config &config) +{ invadpt2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(starw1_io_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::starw1_io_map); +} /*******************************************************/ /* */ @@ -1114,68 +1113,68 @@ static INPUT_PORTS_START( lrescue ) PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW1:8" ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::lrescue) +void _8080bw_state::lrescue(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(lrescue_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::lrescue_io_map); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(lrescue_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(lrescue_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.75); /* extra audio channel */ - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(_8080bw_state::escmars) + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} +void _8080bw_state::escmars(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8080, XTAL(18'000'000) / 10) // divider guessed - MCFG_DEVICE_PROGRAM_MAP(escmars_map) - MCFG_DEVICE_IO_MAP(lrescue_io_map) + I8080(config, m_maincpu, XTAL(18'000'000) / 10); // divider guessed + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::escmars_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::lrescue_io_map); MCFG_MACHINE_START_OVERRIDE(_8080bw_state, extra_8080bw) MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_mw8080bw) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART); + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_mw8080bw)); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(lrescue_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(lrescue_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.75); /* extra audio channel */ - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) -MACHINE_CONFIG_END + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} @@ -1243,28 +1242,27 @@ void _8080bw_state::cosmicmo_io_map(address_map &map) map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); } -MACHINE_CONFIG_START(_8080bw_state::cosmicmo) +void _8080bw_state::cosmicmo(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(cosmicmo_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", _8080bw_state, irq0_line_hold) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::cosmicmo_io_map); + m_maincpu->set_vblank_int("screen", FUNC(_8080bw_state::irq0_line_hold)); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* sound hardware */ invaders_audio(config); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invaders) -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders)); +} /*******************************************************/ @@ -1395,29 +1393,28 @@ MACHINE_START_MEMBER(_8080bw_state,rollingc) MACHINE_START_CALL_MEMBER(mw8080bw); } -MACHINE_CONFIG_START(_8080bw_state::rollingc) +void _8080bw_state::rollingc(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(rollingc_map) - MCFG_DEVICE_IO_MAP(rollingc_io_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::rollingc_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::rollingc_io_map); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_rollingc) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_rollingc)); - MCFG_PALETTE_ADD("palette", 16) - MCFG_PALETTE_INIT_OWNER(_8080bw_state, rollingc) + PALETTE(config, m_palette, 16); + m_palette->set_init(FUNC(_8080bw_state::palette_init_rollingc)); /* sound hardware */ invaders_samples_audio(config); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,rollingc) -MACHINE_CONFIG_END +} @@ -1538,28 +1535,29 @@ MACHINE_RESET_MEMBER(_8080bw_state,schaser) MACHINE_RESET_CALL_MEMBER(mw8080bw); } -MACHINE_CONFIG_START(_8080bw_state::schaser) +void _8080bw_state::schaser(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu",I8080,1996800) /* 19.968MHz / 10 */ - MCFG_DEVICE_PROGRAM_MAP(schaser_map) - MCFG_DEVICE_IO_MAP(schaser_io_map) + I8080(config.replace(), m_maincpu, 1996800); /* 19.968MHz / 10 */ + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::schaser_io_map); WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,schaser) MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state,schaser) - MCFG_TIMER_DRIVER_ADD("schaser_sh_555", _8080bw_state, schaser_effect_555_cb) + TIMER(config, "schaser_sh_555").configure_generic(FUNC(_8080bw_state::schaser_effect_555_cb)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_schaser) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_schaser)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1580,9 +1578,9 @@ MACHINE_CONFIG_START(_8080bw_state::schaser) snsnd.set_enable(1); snsnd.add_route(0, "discrete", 1.0, 0); - MCFG_DEVICE_ADD("discrete", DISCRETE, schaser_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, schaser_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0); +} @@ -1673,36 +1671,36 @@ MACHINE_START_MEMBER(_8080bw_state,schasercv) MACHINE_START_CALL_MEMBER(mw8080bw); } -MACHINE_CONFIG_START(_8080bw_state::schasercv) +void _8080bw_state::schasercv(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(schaser_map) - MCFG_DEVICE_IO_MAP(schasercv_io_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::schasercv_io_map); MCFG_MACHINE_START_OVERRIDE(_8080bw_state, schasercv) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_schasercv) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_schasercv)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ invaders_samples_audio(config); - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) -MACHINE_CONFIG_END + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} -MACHINE_CONFIG_START(_8080bw_state::crashrd) +void _8080bw_state::crashrd(machine_config &config) +{ schaser(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(crashrd_io_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::crashrd_io_map); +} @@ -1772,25 +1770,26 @@ MACHINE_START_MEMBER(_8080bw_state,sflush) MACHINE_START_CALL_MEMBER(mw8080bw); } -MACHINE_CONFIG_START(_8080bw_state::sflush) +void _8080bw_state::sflush(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu",M6800,1500000) // ? - MCFG_DEVICE_PROGRAM_MAP(sflush_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", _8080bw_state, irq0_line_hold) + M6800(config.replace(), m_maincpu, 1500000); // ? + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::sflush_map); + m_maincpu->set_vblank_int("screen", FUNC(_8080bw_state::irq0_line_hold)); + MCFG_MACHINE_START_OVERRIDE(_8080bw_state,sflush) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_sflush) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_sflush)); - MCFG_PALETTE_ADD("palette", 8) - MCFG_PALETTE_INIT_OWNER(_8080bw_state, sflush) -MACHINE_CONFIG_END + PALETTE(config, m_palette, 8); + m_palette->set_init(FUNC(_8080bw_state::palette_init_sflush)); +} @@ -1877,23 +1876,24 @@ static INPUT_PORTS_START( lupin3a ) PORT_DIPSETTING( 0x10, DEF_STR( Japanese ) ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::lupin3) +void _8080bw_state::lupin3(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(lupin3_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::lupin3_io_map); + WATCHDOG_TIMER(config, m_watchdog); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_indianbt) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_indianbt)); - MCFG_PALETTE_ADD_3BIT_RGB("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rgb)); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1914,26 +1914,28 @@ MACHINE_CONFIG_START(_8080bw_state::lupin3) snsnd.set_enable(1); snsnd.add_route(ALL_OUTPUTS, "mono", 0.5); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(lupin3_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(lupin3_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_ADD("discrete", DISCRETE, indianbt_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, indianbt_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(_8080bw_state::lupin3a) +void _8080bw_state::lupin3a(machine_config &config) +{ lupin3(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(schaser_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map); + MCFG_MACHINE_START_OVERRIDE(_8080bw_state,sflush) + /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_lupin3) - MCFG_DEVICE_REMOVE("palette") - MCFG_PALETTE_ADD_3BIT_RBG("palette") -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_lupin3)); + + PALETTE(config.replace(), m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); +} @@ -2043,34 +2045,35 @@ static INPUT_PORTS_START( polaris ) PORT_ADJUSTER( 90, "Sub Volume VR3" ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::polaris) +void _8080bw_state::polaris(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu",I8080,1996800) /* 19.968MHz / 10 */ - MCFG_DEVICE_PROGRAM_MAP(schaser_map) - MCFG_DEVICE_IO_MAP(polaris_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", _8080bw_state, polaris_interrupt) + I8080(config.replace(), m_maincpu, 1996800); /* 19.968MHz / 10 */ + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::polaris_io_map); + m_maincpu->set_vblank_int("screen", FUNC(_8080bw_state::polaris_interrupt)); WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,polaris) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_polaris) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_polaris)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("discrete", DISCRETE, polaris_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, polaris_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0); +} @@ -2175,29 +2178,29 @@ static INPUT_PORTS_START( ballbomb ) PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x00, "SW1:8" ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::ballbomb) +void _8080bw_state::ballbomb(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(ballbomb_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::ballbomb_io_map); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_ballbomb) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_ballbomb)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ invaders_samples_audio(config); - MCFG_DEVICE_ADD("discrete", DISCRETE, ballbomb_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, ballbomb_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0); +} @@ -2257,22 +2260,21 @@ static INPUT_PORTS_START( yosakdon ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::yosakdon) +void _8080bw_state::yosakdon(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(yosakdon_map) - MCFG_DEVICE_IO_MAP(yosakdon_io_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::yosakdon_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::yosakdon_io_map); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* sound hardware */ invaders_samples_audio(config); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invaders) -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders)); +} @@ -2423,53 +2425,55 @@ void _8080bw_state::indianbtbr_io_map(address_map &map) } -MACHINE_CONFIG_START(_8080bw_state::indianbt) +void _8080bw_state::indianbt(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(indianbt_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::indianbt_io_map); + WATCHDOG_TIMER(config, m_watchdog); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_indianbt) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_indianbt)); - MCFG_PALETTE_ADD_3BIT_RGB("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rgb)); /* sound hardware */ invaders_samples_audio(config); - MCFG_DEVICE_ADD("discrete", DISCRETE, indianbt_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, indianbt_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 0.25); +} -MACHINE_CONFIG_START(_8080bw_state::indianbtbr) +void _8080bw_state::indianbtbr(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(schaser_map) - MCFG_DEVICE_IO_MAP(indianbtbr_io_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::indianbtbr_io_map); + WATCHDOG_TIMER(config, m_watchdog); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_indianbt) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_indianbt)); - MCFG_PALETTE_ADD_3BIT_RGB("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rgb)); /* sound hardware */ invaders_samples_audio(config); -MACHINE_CONFIG_END +} @@ -2525,26 +2529,27 @@ static INPUT_PORTS_START( steelwkr ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::steelwkr) +void _8080bw_state::steelwkr(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(steelwkr_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::steelwkr_io_map); + MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ invaders_samples_audio(config); -MACHINE_CONFIG_END +} @@ -2745,30 +2750,30 @@ void _8080bw_state::shuttlei_io_map(address_map &map) } -MACHINE_CONFIG_START(_8080bw_state::shuttlei) - +void _8080bw_state::shuttlei(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8080, XTAL(18'000'000) / 9) + I8080(config, m_maincpu, XTAL(18'000'000) / 9); // TODO: move irq handling away from mw8080.cpp, this game runs on custom hardware - MCFG_DEVICE_PROGRAM_MAP(shuttlei_map) - MCFG_DEVICE_IO_MAP(shuttlei_io_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::shuttlei_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::shuttlei_io_map); MCFG_MACHINE_START_OVERRIDE(_8080bw_state, extra_8080bw) MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1) - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_shuttlei) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 0*8, 24*8-1); + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_shuttlei)); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* sound hardware */ invaders_samples_audio(config); -MACHINE_CONFIG_END +} @@ -2871,14 +2876,14 @@ static INPUT_PORTS_START( darthvdr ) INVADERS_CAB_TYPE_PORT INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::darthvdr) +void _8080bw_state::darthvdr(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(darthvdr_map) - MCFG_DEVICE_IO_MAP(darthvdr_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", _8080bw_state, irq0_line_hold) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::darthvdr_map); + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::darthvdr_io_map); + m_maincpu->set_vblank_int("screen", FUNC(_8080bw_state::irq0_line_hold)); MCFG_MACHINE_START_OVERRIDE(_8080bw_state,darthvdr) MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state,darthvdr) @@ -2887,9 +2892,8 @@ MACHINE_CONFIG_START(_8080bw_state::darthvdr) invaders_samples_audio(config); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invaders) -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders)); +} @@ -2946,27 +2950,27 @@ static INPUT_PORTS_START( vortex ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::vortex) +void _8080bw_state::vortex(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(vortex_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::vortex_io_map); + MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_usec(255000000 / (MW8080BW_PIXEL_CLOCK / MW8080BW_HTOTAL / MW8080BW_VTOTAL))); /* video hardware */ // TODO: replace with modified invaders color renderer code allowing midscanline color writes - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invaders) + m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ invaders_audio(config); -MACHINE_CONFIG_END +} /* decrypt function for vortex */ void _8080bw_state::init_vortex() @@ -3254,20 +3258,20 @@ MACHINE_START_MEMBER(_8080bw_state, claybust) MACHINE_START_CALL_MEMBER(mw8080bw); } -MACHINE_CONFIG_START(_8080bw_state::claybust) +void _8080bw_state::claybust(machine_config &config) +{ invaders(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(claybust_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::claybust_io_map); - MCFG_TIMER_DRIVER_ADD("claybust_gun", _8080bw_state, claybust_gun_callback) + TIMER(config, "claybust_gun").configure_generic(FUNC(_8080bw_state::claybust_gun_callback)); MCFG_MACHINE_START_OVERRIDE(_8080bw_state, claybust) /* sound hardware */ // TODO: discrete sound -MACHINE_CONFIG_END +} @@ -3371,19 +3375,19 @@ static INPUT_PORTS_START( attackfc ) INPUT_PORTS_END -MACHINE_CONFIG_START(_8080bw_state::attackfc) +void _8080bw_state::attackfc(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(attackfc_io_map) + m_maincpu->set_addrmap(AS_IO, &_8080bw_state::attackfc_io_map); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* sound hardware */ // TODO: custom discrete -MACHINE_CONFIG_END +} void _8080bw_state::init_attackfc() @@ -3511,17 +3515,17 @@ WRITE8_MEMBER(_8080bw_state::invmulti_bank_w) membank("bank2")->set_entry(bank); } -MACHINE_CONFIG_START(_8080bw_state::invmulti) +void _8080bw_state::invmulti(machine_config &config) +{ invaders(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(invmulti_map) + m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::invmulti_map); - EEPROM_93C46_8BIT(config, "eeprom"); + EEPROM_93C46_8BIT(config, m_eeprom); MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw) -MACHINE_CONFIG_END +} void _8080bw_state::init_invmulti() { diff --git a/src/mame/drivers/astinvad.cpp b/src/mame/drivers/astinvad.cpp index b0f0efb45e7..5ef752ce9b8 100644 --- a/src/mame/drivers/astinvad.cpp +++ b/src/mame/drivers/astinvad.cpp @@ -668,12 +668,12 @@ static const char *const astinvad_sample_names[] = * *************************************/ -MACHINE_CONFIG_START(astinvad_state::kamikaze) - +void astinvad_state::kamikaze(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(kamikaze_map) - MCFG_DEVICE_IO_MAP(kamikaze_portmap) + Z80(config, m_maincpu, MASTER_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &astinvad_state::kamikaze_map); + m_maincpu->set_addrmap(AS_IO, &astinvad_state::kamikaze_portmap); MCFG_MACHINE_START_OVERRIDE(astinvad_state, kamikaze) MCFG_MACHINE_RESET_OVERRIDE(astinvad_state, kamikaze) @@ -688,23 +688,24 @@ MACHINE_CONFIG_START(astinvad_state::kamikaze) m_ppi8255_1->out_pb_callback().set(FUNC(astinvad_state::kamikaze_sound2_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 320, 0, 256, 256, 32, 256) - MCFG_SCREEN_UPDATE_DRIVER(astinvad_state, screen_update_astinvad) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(VIDEO_CLOCK, 320, 0, 256, 256, 32, 256); + m_screen->set_screen_update(FUNC(astinvad_state::screen_update_astinvad)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(astinvad_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END - + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(astinvad_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} -MACHINE_CONFIG_START(astinvad_state::spcking2) +void astinvad_state::spcking2(machine_config &config) +{ kamikaze(config); /* basic machine hardware */ @@ -713,19 +714,17 @@ MACHINE_CONFIG_START(astinvad_state::spcking2) m_ppi8255_1->out_pc_callback().set(FUNC(astinvad_state::spcking2_sound3_w)); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 320, 0, 256, 256, 16, 240) - MCFG_SCREEN_UPDATE_DRIVER(astinvad_state, screen_update_spcking2) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(astinvad_state::spaceint) + m_screen->set_raw(VIDEO_CLOCK, 320, 0, 256, 256, 16, 240); + m_screen->set_screen_update(FUNC(astinvad_state::screen_update_spcking2)); +} +void astinvad_state::spaceint(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK) /* a guess */ - MCFG_DEVICE_PROGRAM_MAP(spaceint_map) - MCFG_DEVICE_IO_MAP(spaceint_portmap) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", astinvad_state, irq0_line_hold) + Z80(config, m_maincpu, MASTER_CLOCK); /* a guess */ + m_maincpu->set_addrmap(AS_PROGRAM, &astinvad_state::spaceint_map); + m_maincpu->set_addrmap(AS_IO, &astinvad_state::spaceint_portmap); + m_maincpu->set_vblank_int("screen", FUNC(astinvad_state::irq0_line_hold)); MCFG_MACHINE_START_OVERRIDE(astinvad_state, spaceint) MCFG_MACHINE_RESET_OVERRIDE(astinvad_state, spaceint) @@ -733,22 +732,23 @@ MACHINE_CONFIG_START(astinvad_state::spaceint) /* video hardware */ MCFG_VIDEO_START_OVERRIDE(astinvad_state, spaceint) - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_UPDATE_DRIVER(astinvad_state, screen_update_spaceint) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1); + m_screen->set_refresh_hz(60); + m_screen->set_screen_update(FUNC(astinvad_state::screen_update_spaceint)); - MCFG_PALETTE_ADD_3BIT_RBG("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rbg)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(astinvad_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(astinvad_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp index 36a57fda4ca..4b86c5348d4 100644 --- a/src/mame/drivers/atarist.cpp +++ b/src/mame/drivers/atarist.cpp @@ -1994,72 +1994,47 @@ static void atari_floppies(device_slot_interface &device) // MACHINE CONFIGURATION //************************************************************************** -void st_state::keyboard(machine_config &config) +void st_state::common(machine_config &config) { - hd6301_cpu_device &ikbd(HD6301(config, HD6301V1_TAG, Y2/8)); - ikbd.set_addrmap(AS_PROGRAM, &st_state::ikbd_map); - ikbd.in_p1_cb().set(FUNC(st_state::ikbd_port1_r)); - ikbd.in_p2_cb().set(FUNC(st_state::ikbd_port2_r)); - ikbd.out_p2_cb().set(FUNC(st_state::ikbd_port2_w)); - ikbd.out_p3_cb().set(FUNC(st_state::ikbd_port3_w)); - ikbd.in_p4_cb().set(FUNC(st_state::ikbd_port4_r)); - ikbd.out_p4_cb().set(FUNC(st_state::ikbd_port4_w)); -} - -//------------------------------------------------- -// MACHINE_CONFIG( st ) -//------------------------------------------------- - -MACHINE_CONFIG_START(st_state::st) // basic machine hardware - MCFG_DEVICE_ADD(M68000_TAG, M68000, Y2/4) - MCFG_DEVICE_PROGRAM_MAP(st_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack) + M68000(config, m_maincpu, Y2/4); + m_maincpu->set_irq_acknowledge_callback(FUNC(st_state::atarist_int_ack)); keyboard(config); - // video hardware - MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) - MCFG_SCREEN_UPDATE_DRIVER(st_state, screen_update) - MCFG_SCREEN_RAW_PARAMS(Y2/2, ATARIST_HTOT_PAL*2, ATARIST_HBEND_PAL*2, ATARIST_HBSTART_PAL*2, ATARIST_VTOT_PAL, ATARIST_VBEND_PAL, ATARIST_VBSTART_PAL) - - MCFG_PALETTE_ADD("palette", 16) - - // sound hardware - SPEAKER(config, "mono").front_center(); - ym2149_device &ym2149(YM2149(config, YM2149_TAG, Y2/16)); - ym2149.set_flags(AY8910_SINGLE_OUTPUT); - ym2149.set_resistors_load(RES_K(1), 0, 0); - ym2149.port_a_write_callback().set(FUNC(st_state::psg_pa_w)); - ym2149.port_b_write_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); - ym2149.add_route(ALL_OUTPUTS, "mono", 1.00); + // sound + YM2149(config, m_ymsnd, Y2/16); + m_ymsnd->set_flags(AY8910_SINGLE_OUTPUT); + m_ymsnd->set_resistors_load(RES_K(1), 0, 0); + m_ymsnd->port_a_write_callback().set(FUNC(st_state::psg_pa_w)); + m_ymsnd->port_b_write_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); // devices - WD1772(config, m_fdc, Y2/4); m_fdc->intrq_wr_callback().set(m_mfp, FUNC(mc68901_device::i5_w)).invert(); m_fdc->drq_wr_callback().set(FUNC(st_state::fdc_drq_w)); - MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, nullptr, st_state::floppy_formats) + FLOPPY_CONNECTOR(config, WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats); + FLOPPY_CONNECTOR(config, WD1772_TAG ":1", atari_floppies, nullptr, st_state::floppy_formats); - MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m_mfp, mc68901_device, i0_w)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set(m_mfp, FUNC(mc68901_device::i0_w)); - MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") + output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out")); + m_centronics->set_output_latch(cent_data_out); MC68901(config, m_mfp, Y2/8); m_mfp->set_timer_clock(Y1); m_mfp->set_rx_clock(0); m_mfp->set_tx_clock(0); - m_mfp->out_irq_cb().set_inputline(M68000_TAG, M68K_IRQ_6); + m_mfp->out_irq_cb().set_inputline(m_maincpu, M68K_IRQ_6); m_mfp->out_tdo_cb().set(FUNC(st_state::mfp_tdo_w)); - m_mfp->out_so_cb().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + m_mfp->out_so_cb().set(m_rs232, FUNC(rs232_port_device::write_txd)); - rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); - rs232.rxd_handler().set(m_mfp, FUNC(mc68901_device::write_rx)); - rs232.dcd_handler().set(m_mfp, FUNC(mc68901_device::i1_w)); - rs232.cts_handler().set(m_mfp, FUNC(mc68901_device::i2_w)); - rs232.ri_handler().set(m_mfp, FUNC(mc68901_device::i6_w)); + RS232_PORT(config, m_rs232, default_rs232_devices, nullptr); + m_rs232->rxd_handler().set(m_mfp, FUNC(mc68901_device::write_rx)); + m_rs232->dcd_handler().set(m_mfp, FUNC(mc68901_device::i1_w)); + m_rs232->cts_handler().set(m_mfp, FUNC(mc68901_device::i2_w)); + m_rs232->ri_handler().set(m_mfp, FUNC(mc68901_device::i6_w)); ACIA6850(config, m_acia0, 0); m_acia0->txd_handler().set(FUNC(st_state::ikbd_tx_w)); @@ -2072,260 +2047,177 @@ MACHINE_CONFIG_START(st_state::st) input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq")); aciairq.output_handler().set(m_mfp, FUNC(mc68901_device::i4_w)).invert(); - MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin") - MCFG_MIDI_RX_HANDLER(WRITELINE(MC6850_1_TAG, acia6850_device, write_rxd)) - - MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout") + MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd)); + MIDI_PORT(config, "mdout", midiout_slot, "midiout"); - MCFG_DEVICE_ADD("acia_clock", CLOCK, Y2/64) // 500kHz - MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, st_state, write_acia_clock)) + CLOCK(config, "acia_clock", Y2/64).signal_handler().set(FUNC(st_state::write_acia_clock)); // 500kHz // cartridge - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "st_cart") - MCFG_GENERIC_EXTENSIONS("bin,rom") - MCFG_GENERIC_WIDTH(GENERIC_ROM16_WIDTH) - MCFG_GENERIC_ENDIAN(ENDIANNESS_BIG) - MCFG_SOFTWARE_LIST_ADD("cart_list", "st_cart") - - // internal ram - RAM(config, m_ram) - .set_default_size("1M") // 1040ST - .set_extra_options("512K,256K"); // 520ST, 260ST + GENERIC_CARTSLOT(config, m_cart, generic_linear_slot, "st_cart", "bin,rom"); + m_cart->set_width(GENERIC_ROM16_WIDTH); + m_cart->set_endian(ENDIANNESS_BIG); // software lists - MCFG_SOFTWARE_LIST_ADD("flop_list", "st_flop") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "flop_list").set_original("st_flop"); +} +void st_state::keyboard(machine_config &config) +{ + hd6301_cpu_device &ikbd(HD6301(config, HD6301V1_TAG, Y2/8)); + ikbd.set_addrmap(AS_PROGRAM, &st_state::ikbd_map); + ikbd.in_p1_cb().set(FUNC(st_state::ikbd_port1_r)); + ikbd.in_p2_cb().set(FUNC(st_state::ikbd_port2_r)); + ikbd.out_p2_cb().set(FUNC(st_state::ikbd_port2_w)); + ikbd.out_p3_cb().set(FUNC(st_state::ikbd_port3_w)); + ikbd.in_p4_cb().set(FUNC(st_state::ikbd_port4_r)); + ikbd.out_p4_cb().set(FUNC(st_state::ikbd_port4_w)); +} //------------------------------------------------- -// MACHINE_CONFIG( megast ) +// MACHINE_CONFIG( st ) //------------------------------------------------- -MACHINE_CONFIG_START(megast_state::megast) - // basic machine hardware - MCFG_DEVICE_ADD(M68000_TAG, M68000, Y2/4) - MCFG_DEVICE_PROGRAM_MAP(megast_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack) +void st_state::st(machine_config &config) +{ + common(config); - keyboard(config); + // basic machine hardware + m_maincpu->set_addrmap(AS_PROGRAM, &st_state::st_map); // video hardware - MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) - MCFG_SCREEN_UPDATE_DRIVER(megast_state, screen_update) - MCFG_SCREEN_RAW_PARAMS(Y2/4, ATARIST_HTOT_PAL, ATARIST_HBEND_PAL, ATARIST_HBSTART_PAL, ATARIST_VTOT_PAL, ATARIST_VBEND_PAL, ATARIST_VBSTART_PAL) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_screen_update(FUNC(st_state::screen_update)); + m_screen->set_raw(Y2/2, ATARIST_HTOT_PAL*2, ATARIST_HBEND_PAL*2, ATARIST_HBSTART_PAL*2, ATARIST_VTOT_PAL, ATARIST_VBEND_PAL, ATARIST_VBSTART_PAL); - MCFG_PALETTE_ADD("palette", 16) + PALETTE(config, m_palette, 16); // sound hardware SPEAKER(config, "mono").front_center(); - ym2149_device &ym2149(YM2149(config, YM2149_TAG, Y2/16)); - ym2149.set_flags(AY8910_SINGLE_OUTPUT); - ym2149.set_resistors_load(RES_K(1), 0, 0); - ym2149.port_a_write_callback().set(FUNC(st_state::psg_pa_w)); - ym2149.port_b_write_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); - ym2149.add_route(ALL_OUTPUTS, "mono", 1.00); + m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.00); - // devices - RP5C15(config, RP5C15_TAG, XTAL(32'768)); - - WD1772(config, m_fdc, Y2/4); - m_fdc->intrq_wr_callback().set(m_mfp, FUNC(mc68901_device::i5_w)).invert(); - m_fdc->drq_wr_callback().set(FUNC(st_state::fdc_drq_w)); - MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, nullptr, st_state::floppy_formats) + // cartridge + SOFTWARE_LIST(config, "cart_list").set_original("st_cart"); - MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m_mfp, mc68901_device, i0_w)) + // internal ram + RAM(config, m_ram); + m_ram->set_default_size("1M"); // 1040ST + m_ram->set_extra_options("512K,256K"); // 520ST, 260ST +} - MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - MC68901(config, m_mfp, Y2/8); - m_mfp->set_timer_clock(Y1); - m_mfp->set_rx_clock(0); - m_mfp->set_tx_clock(0); - m_mfp->out_irq_cb().set_inputline(M68000_TAG, M68K_IRQ_6); - m_mfp->out_tdo_cb().set(FUNC(st_state::mfp_tdo_w)); - m_mfp->out_so_cb().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); - - rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); - rs232.rxd_handler().set(m_mfp, FUNC(mc68901_device::write_rx)); - rs232.dcd_handler().set(m_mfp, FUNC(mc68901_device::i1_w)); - rs232.cts_handler().set(m_mfp, FUNC(mc68901_device::i2_w)); - rs232.ri_handler().set(m_mfp, FUNC(mc68901_device::i6_w)); +//------------------------------------------------- +// MACHINE_CONFIG( megast ) +//------------------------------------------------- - ACIA6850(config, m_acia0, 0); - m_acia0->txd_handler().set(FUNC(st_state::ikbd_tx_w)); - m_acia0->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<0>)); +void megast_state::megast(machine_config &config) +{ + common(config); - ACIA6850(config, m_acia1, 0); - m_acia1->txd_handler().set("mdout", FUNC(midi_port_device::write_txd)); - m_acia1->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<1>)); + // basic machine hardware + m_maincpu->set_addrmap(AS_PROGRAM, &megast_state::megast_map); - input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq")); - aciairq.output_handler().set(m_mfp, FUNC(mc68901_device::i4_w)).invert(); + // video hardware + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_screen_update(FUNC(megast_state::screen_update)); + m_screen->set_raw(Y2/4, ATARIST_HTOT_PAL, ATARIST_HBEND_PAL, ATARIST_HBSTART_PAL, ATARIST_VTOT_PAL, ATARIST_VBEND_PAL, ATARIST_VBSTART_PAL); - MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin") - MCFG_MIDI_RX_HANDLER(WRITELINE(MC6850_1_TAG, acia6850_device, write_rxd)) + PALETTE(config, m_palette, 16); - MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout") + // sound hardware + SPEAKER(config, "mono").front_center(); + m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.00); - MCFG_DEVICE_ADD("acia_clock", CLOCK, Y2/64) // 500kHz - MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, st_state, write_acia_clock)) + // devices + RP5C15(config, RP5C15_TAG, XTAL(32'768)); // cartridge - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "st_cart") - MCFG_GENERIC_EXTENSIONS("bin,rom") - MCFG_GENERIC_WIDTH(GENERIC_ROM16_WIDTH) - MCFG_GENERIC_ENDIAN(ENDIANNESS_BIG) - MCFG_SOFTWARE_LIST_ADD("cart_list", "st_cart") + SOFTWARE_LIST(config, "cart_list").set_original("st_cart"); // internal ram - RAM(config, m_ram) - .set_default_size("4M") // Mega ST 4 - .set_extra_options("2M,1M"); // Mega ST 2, Mega ST 1 - - // software lists - MCFG_SOFTWARE_LIST_ADD("flop_list", "st_flop") -MACHINE_CONFIG_END + RAM(config, m_ram); + m_ram->set_default_size("4M"); // Mega ST 4 + m_ram->set_extra_options("2M,1M"); // Mega ST 2, Mega ST 1 +} //------------------------------------------------- // MACHINE_CONFIG( ste ) //------------------------------------------------- -MACHINE_CONFIG_START(ste_state::ste) - // basic machine hardware - MCFG_DEVICE_ADD(M68000_TAG, M68000, Y2/4) - MCFG_DEVICE_PROGRAM_MAP(ste_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack) +void ste_state::ste(machine_config &config) +{ + common(config); - keyboard(config); + // basic machine hardware + m_maincpu->set_addrmap(AS_PROGRAM, &ste_state::ste_map); // video hardware - MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) - MCFG_SCREEN_UPDATE_DRIVER(ste_state, screen_update) - MCFG_SCREEN_RAW_PARAMS(Y2/4, ATARIST_HTOT_PAL, ATARIST_HBEND_PAL, ATARIST_HBSTART_PAL, ATARIST_VTOT_PAL, ATARIST_VBEND_PAL, ATARIST_VBSTART_PAL) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_screen_update(FUNC(ste_state::screen_update)); + m_screen->set_raw(Y2/4, ATARIST_HTOT_PAL, ATARIST_HBEND_PAL, ATARIST_HBSTART_PAL, ATARIST_VTOT_PAL, ATARIST_VBEND_PAL, ATARIST_VBSTART_PAL); - MCFG_PALETTE_ADD("palette", 512) + PALETTE(config, m_palette, 512); // sound hardware SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - - ym2149_device &ym2149(YM2149(config, YM2149_TAG, Y2/16)); - ym2149.set_flags(AY8910_SINGLE_OUTPUT); - ym2149.set_resistors_load(RES_K(1), 0, 0); - ym2149.port_a_write_callback().set(FUNC(st_state::psg_pa_w)); - ym2149.port_b_write_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); - ym2149.add_route(0, "lspeaker", 0.50); - ym2149.add_route(0, "rspeaker", 0.50); + m_ymsnd->add_route(0, "lspeaker", 0.50); + m_ymsnd->add_route(0, "rspeaker", 0.50); /* MCFG_DEVICE_ADD("custom", CUSTOM, 0) // DAC MCFG_SOUND_ROUTE(0, "rspeaker", 0.50) MCFG_SOUND_ROUTE(1, "lspeaker", 0.50) */ - MCFG_LMC1992_ADD(LMC1992_TAG /* ,atariste_lmc1992_intf */) - - // devices - - WD1772(config, m_fdc, Y2/4); - m_fdc->intrq_wr_callback().set(m_mfp, FUNC(mc68901_device::i5_w)).invert(); - m_fdc->drq_wr_callback().set(FUNC(st_state::fdc_drq_w)); - MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, nullptr, st_state::floppy_formats) - - MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m_mfp, mc68901_device, i0_w)) - - MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - - MC68901(config, m_mfp, Y2/8); - m_mfp->set_timer_clock(Y1); - m_mfp->set_rx_clock(0); - m_mfp->set_tx_clock(0); - m_mfp->out_irq_cb().set_inputline(M68000_TAG, M68K_IRQ_6); - m_mfp->out_tdo_cb().set(FUNC(st_state::mfp_tdo_w)); - m_mfp->out_so_cb().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); - - rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); - rs232.rxd_handler().set(m_mfp, FUNC(mc68901_device::write_rx)); - rs232.dcd_handler().set(m_mfp, FUNC(mc68901_device::i1_w)); - rs232.cts_handler().set(m_mfp, FUNC(mc68901_device::i2_w)); - rs232.ri_handler().set(m_mfp, FUNC(mc68901_device::i6_w)); - - ACIA6850(config, m_acia0, 0); - m_acia0->txd_handler().set(FUNC(st_state::ikbd_tx_w)); - m_acia0->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<0>)); - - ACIA6850(config, m_acia1, 0); - m_acia1->txd_handler().set("mdout", FUNC(midi_port_device::write_txd)); - m_acia1->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<1>)); - - input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq")); - aciairq.output_handler().set(m_mfp, FUNC(mc68901_device::i4_w)).invert(); - - MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin") - MCFG_MIDI_RX_HANDLER(WRITELINE(MC6850_1_TAG, acia6850_device, write_rxd)) - - MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout") - - MCFG_DEVICE_ADD("acia_clock", CLOCK, Y2/64) // 500kHz - MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, st_state, write_acia_clock)) + LMC1992(config, LMC1992_TAG); // cartridge - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "st_cart") - MCFG_GENERIC_EXTENSIONS("bin,rom") - MCFG_GENERIC_WIDTH(GENERIC_ROM16_WIDTH) - MCFG_GENERIC_ENDIAN(ENDIANNESS_BIG) // MCFG_SOFTWARE_LIST_ADD("cart_list", "ste_cart") // internal ram - RAM(config, m_ram) - .set_default_size("1M") // 1040STe - .set_extra_options("512K"); // 520STe - - // software lists - MCFG_SOFTWARE_LIST_ADD("flop_list", "st_flop") -MACHINE_CONFIG_END + RAM(config, m_ram); + m_ram->set_default_size("1M"); // 1040STe + m_ram->set_extra_options("512K"); // 520STe +} //------------------------------------------------- // MACHINE_CONFIG( megaste ) //------------------------------------------------- -MACHINE_CONFIG_START(megaste_state::megaste) +void megaste_state::megaste(machine_config &config) +{ ste(config); - MCFG_DEVICE_MODIFY(M68000_TAG) - MCFG_DEVICE_PROGRAM_MAP(megaste_map) + m_maincpu->set_addrmap(AS_PROGRAM, &megaste_state::megaste_map); RP5C15(config, RP5C15_TAG, XTAL(32'768)); SCC8530(config, Z8530_TAG, Y2/4); /* internal ram */ - m_ram->set_default_size("4M") // Mega STe 4 - .set_extra_options("2M,1M"); // Mega STe 2, Mega STe 1 -MACHINE_CONFIG_END + m_ram->set_default_size("4M"); // Mega STe 4 + m_ram->set_extra_options("2M,1M"); // Mega STe 2, Mega STe 1 +} //------------------------------------------------- // MACHINE_CONFIG( stbook ) //------------------------------------------------- #if 0 -static MACHINE_CONFIG_START(stbook_state::stbook) +void stbook_state::stbook(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD(M68000_TAG, M68000, U517/2) - MCFG_DEVICE_PROGRAM_MAP(stbook_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack) + M68000(config, m_maincpu, U517/2); + m_maincpu->set_addrmap(AS_PROGRAM, &stbook_state::stbook_map); + m_maincpu->set_irq_acknowledge_callback(FUNC(st_state::atarist_int_ack)); //MCFG_DEVICE_ADD(COP888_TAG, COP888, Y700) // video hardware - MCFG_SCREEN_ADD(SCREEN_TAG, LCD) - MCFG_SCREEN_UPDATE_DRIVER(stbook_state, screen_update) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(640, 400) - MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399) + SCREEN(config, m_screen, SCREEN_TYPE_LCD); + m_screen->set_screen_update(FUNC(stbook_state::screen_update)); + m_screen->set_refresh_hz(60); + m_screen->set_size(640, 400); + m_screen->set_visarea(0, 639, 0, 399); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, "palette", 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); // sound hardware SPEAKER(config, "mono").front_center(); @@ -2347,21 +2239,21 @@ static MACHINE_CONFIG_START(stbook_state::stbook) WD1772(config, m_fdc, U517/2); m_fdc->intrq_wr_callback().set(m_mfp, FUNC(mc68901_device::i5_w)).invert(); m_fdc->drq_wr_callback().set(FUNC(st_state::fdc_drq_w)); - MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", 0, st_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, 0, st_state::floppy_formats) + FLOPPY_CONNECTOR(config, WD1772_TAG ":0", atari_floppies, "35dd", 0, st_state::floppy_formats); + FLOPPY_CONNECTOR(config, WD1772_TAG ":1", atari_floppies, 0, 0, st_state::floppy_formats); - MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m_mfp, mc68901_device, i0_w)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set(m_mfp, FUNC(mc68901_device::i0_w)); - MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") + output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out"); + m_centronics->set_output_latch(cent_data_out); - rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); - rs232.rxd_handler().set(m_mfp, FUNC(mc68901_device::write_rx)); - rs232.dcd_handler().set(m_mfp, FUNC(mc68901_device::i1_w)); - rs232.cts_handler().set(m_mfp, FUNC(mc68901_device::i2_w)); - rs232.ri_handler().set(m_mfp, FUNC(mc68901_device::i6_w)); + RS232_PORT(config, m_rs232, default_rs232_devices, nullptr); + m_rs232->rxd_handler().set(m_mfp, FUNC(mc68901_device::write_rx)); + m_rs232->dcd_handler().set(m_mfp, FUNC(mc68901_device::i1_w)); + m_rs232->cts_handler().set(m_mfp, FUNC(mc68901_device::i2_w)); + m_rs232->ri_handler().set(m_mfp, FUNC(mc68901_device::i6_w)); - // device hardware ACIA6850(config, m_acia0, 0); m_acia0->txd_handler().set(FUNC(st_state::ikbd_tx_w)); m_acia0->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<0>)); @@ -2373,24 +2265,20 @@ static MACHINE_CONFIG_START(stbook_state::stbook) input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq")); aciairq.output_handler().set(m_mfp, FUNC(mc68901_device::i4_w)).invert(); - MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") - MCFG_MIDI_RX_HANDLER(WRITELINE(MC6850_1_TAG, acia6850_device, write_rxd)) - - MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") + MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd)); + MIDI_PORT(config, "mdout", midiout_slot, "midiout"); - MCFG_DEVICE_ADD("acia_clock", CLOCK, U517/2/16) // 500kHz - MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, st_state, write_acia_clock)) + CLOCK(config, "acia_clock", Y2/64).signal_handler().set(FUNC(st_state::write_acia_clock)); // 500kHz // cartridge - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "st_cart") - MCFG_GENERIC_EXTENSIONS("bin,rom") - MCFG_GENERIC_WIDTH(GENERIC_ROM16_WIDTH) - MCFG_GENERIC_ENDIAN(ENDIANNESS_BIG) - MCFG_SOFTWARE_LIST_ADD("cart_list", "st_cart") + GENERIC_CARTSLOT(config, m_cart, generic_linear_slot, "st_cart", "bin,rom"); + m_cart->set_width(GENERIC_ROM16_WIDTH); + m_cart->set_endian(ENDIANNESS_BIG); + SOFTWARE_LIST(config, "cart_list").set_original("st_cart"); /* internal ram */ RAM(config, m_ram).set_default_size("4M").set_extra_options("1M"); -MACHINE_CONFIG_END +} #endif //------------------------------------------------- diff --git a/src/mame/drivers/blockade.cpp b/src/mame/drivers/blockade.cpp index 596dd8e974f..9b5ee5d52a7 100644 --- a/src/mame/drivers/blockade.cpp +++ b/src/mame/drivers/blockade.cpp @@ -68,7 +68,7 @@ private: required_shared_ptr m_videoram; required_device m_gfxdecode; required_device m_screen; - required_device m_discrete; + required_device m_discrete; required_device m_samples; emu_timer *m_vblank_timer; @@ -468,32 +468,33 @@ void blockade_state::device_timer(emu_timer &timer, device_timer_id id, int para // MACHINE DEFINTIONS //************************************************************************** -MACHINE_CONFIG_START(blockade_state::blockade) - MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(20'790'000) / 10) - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_DEVICE_IO_MAP(main_io_map) +void blockade_state::blockade(machine_config &config) +{ + I8080A(config, m_maincpu, XTAL(20'790'000) / 10); + m_maincpu->set_addrmap(AS_PROGRAM, &blockade_state::main_map); + m_maincpu->set_addrmap(AS_IO, &blockade_state::main_io_map); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(20'790'000) / 4, 330, 0, 256, 262, 0, 224) - MCFG_SCREEN_UPDATE_DRIVER(blockade_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(20'790'000) / 4, 330, 0, 256, 262, 0, 224); + m_screen->set_screen_update(FUNC(blockade_state::screen_update)); + m_screen->set_palette("palette"); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_blockade) + GFXDECODE(config, m_gfxdecode, "palette", gfx_blockade); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, "palette", 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); // sound hardware SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(blockade_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(blockade_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.25); - MCFG_DEVICE_ADD("discrete", DISCRETE, blockade_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, blockade_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0); +} //************************************************************************** diff --git a/src/mame/drivers/cham24.cpp b/src/mame/drivers/cham24.cpp index 1d109114f3c..d1722d7b7ab 100644 --- a/src/mame/drivers/cham24.cpp +++ b/src/mame/drivers/cham24.cpp @@ -288,25 +288,26 @@ void cham24_state::init_cham24() { } -MACHINE_CONFIG_START(cham24_state::cham24) +void cham24_state::cham24(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", N2A03, NTSC_APU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(cham24_map) + N2A03(config, m_maincpu, NTSC_APU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &cham24_state::cham24_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DEVICE("ppu", ppu2c0x_device, screen_update) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_size(32*8, 262); + screen.set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + screen.set_screen_update("ppu", FUNC(ppu2c0x_device::screen_update)); - MCFG_PPU2C02_ADD("ppu") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + PPU_2C02(config, m_ppu); + m_ppu->set_cpu_tag(m_maincpu); + m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); -MACHINE_CONFIG_END +} ROM_START( cham24 ) ROM_REGION(0x10000, "maincpu", ROMREGION_ERASE00) diff --git a/src/mame/drivers/circus.cpp b/src/mame/drivers/circus.cpp index 12f013fe63f..4c7cd546801 100644 --- a/src/mame/drivers/circus.cpp +++ b/src/mame/drivers/circus.cpp @@ -283,72 +283,69 @@ void circus_state::machine_reset() } -MACHINE_CONFIG_START(circus_state::circus) - +void circus_state::circus(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502, XTAL(11'289'000) / 16) /* 705.562kHz */ - MCFG_DEVICE_PROGRAM_MAP(circus_map) - + M6502(config, m_maincpu, XTAL(11'289'000) / 16); /* 705.562kHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &circus_state::circus_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) /* needed for proper hardware collisions */ - MCFG_SCREEN_REFRESH_RATE(57) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_circus) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_ALWAYS_UPDATE); /* needed for proper hardware collisions */ + screen.set_refresh_hz(57); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(3500)); /* (complete guess) */ + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 31*8-1, 0*8, 32*8-1); + screen.set_screen_update(FUNC(circus_state::screen_update_circus)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_circus) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_circus); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(3) - MCFG_SAMPLES_NAMES(circus_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - - MCFG_DEVICE_ADD("discrete", DISCRETE, circus_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END - + SAMPLES(config, m_samples); + m_samples->set_channels(3); + m_samples->set_samples_names(circus_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.80); -MACHINE_CONFIG_START(circus_state::robotbwl) + DISCRETE(config, m_discrete, circus_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 0.50); +} +void circus_state::robotbwl(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502, XTAL(11'289'000) / 16) /* 705.562kHz */ - MCFG_DEVICE_PROGRAM_MAP(circus_map) + M6502(config, m_maincpu, XTAL(11'289'000) / 16); /* 705.562kHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &circus_state::circus_map); // does not generate irq! - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(57) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_robotbwl) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(57); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(3500)); /* (complete guess) */ + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 31*8-1, 0*8, 32*8-1); + screen.set_screen_update(FUNC(circus_state::screen_update_robotbwl)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_robotbwl) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_robotbwl); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(5) - MCFG_SAMPLES_NAMES(robotbwl_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) + SAMPLES(config, m_samples); + m_samples->set_channels(5); + m_samples->set_samples_names(robotbwl_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.80); - MCFG_DEVICE_ADD("discrete", DISCRETE, robotbwl_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, robotbwl_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0); +} TIMER_DEVICE_CALLBACK_MEMBER(circus_state::crash_scanline) { @@ -358,71 +355,69 @@ TIMER_DEVICE_CALLBACK_MEMBER(circus_state::crash_scanline) m_maincpu->set_input_line(0, ASSERT_LINE); } -MACHINE_CONFIG_START(circus_state::crash) - +void circus_state::crash(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502, XTAL(11'289'000) / 16) /* 705.562kHz */ - MCFG_DEVICE_PROGRAM_MAP(circus_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", circus_state, crash_scanline, "screen", 0, 1) - + M6502(config, m_maincpu, XTAL(11'289'000) / 16); /* 705.562kHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &circus_state::circus_map); + TIMER(config, "scantimer").configure_scanline(FUNC(circus_state::crash_scanline), "screen", 0, 1); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(57) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */) - MCFG_SCREEN_SIZE(40*8, 40*8) //TODO - MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_crash) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(57); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(3500)); /* (complete guess) */ + screen.set_size(40*8, 40*8); // TODO // to do what? + screen.set_visarea(0*8, 31*8-1, 0*8, 32*8-1); + screen.set_screen_update(FUNC(circus_state::screen_update_crash)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_circus) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_circus); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(crash_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - - MCFG_DEVICE_ADD("discrete", DISCRETE, crash_discrete) - 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(crash_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.80); -MACHINE_CONFIG_START(circus_state::ripcord) + DISCRETE(config, m_discrete, crash_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 0.80); +} +void circus_state::ripcord(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502, XTAL(11'289'000) / 16) /* 705.562kHz */ - MCFG_DEVICE_PROGRAM_MAP(circus_map) - + M6502(config, m_maincpu, XTAL(11'289'000) / 16); /* 705.562kHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &circus_state::circus_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) /* needed for proper hardware collisions */ - MCFG_SCREEN_REFRESH_RATE(57) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_ripcord) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_ALWAYS_UPDATE); /* needed for proper hardware collisions */ + screen.set_refresh_hz(57); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(3500)); /* (complete guess) */ + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 31*8-1, 0*8, 32*8-1); + screen.set_screen_update(FUNC(circus_state::screen_update_ripcord)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_circus) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_circus); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(ripcord_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(ripcord_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.80); - MCFG_DEVICE_ADD("discrete", DISCRETE, circus_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, circus_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 0.50); +} diff --git a/src/mame/drivers/cosmic.cpp b/src/mame/drivers/cosmic.cpp index f9bce981824..46f7906e704 100644 --- a/src/mame/drivers/cosmic.cpp +++ b/src/mame/drivers/cosmic.cpp @@ -1005,21 +1005,21 @@ MACHINE_RESET_MEMBER(cosmic_state,cosmicg) m_maincpu->set_input_line(INT_9980A_RESET, CLEAR_LINE); } -MACHINE_CONFIG_START(cosmic_state::cosmic) - +void cosmic_state::cosmic(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,Z80_MASTER_CLOCK/6) /* 1.8026 MHz */ + Z80(config, m_maincpu, Z80_MASTER_CLOCK/6); /* 1.8026 MHz */ MCFG_MACHINE_START_OVERRIDE(cosmic_state,cosmic) MCFG_MACHINE_RESET_OVERRIDE(cosmic_state,cosmic) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1) - MCFG_SCREEN_PALETTE("palette") -MACHINE_CONFIG_END + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 4*8, 28*8-1); + m_screen->set_palette(m_palette); +} TIMER_DEVICE_CALLBACK_MEMBER(cosmic_state::panic_scanline) { @@ -1033,64 +1033,62 @@ TIMER_DEVICE_CALLBACK_MEMBER(cosmic_state::panic_scanline) } -MACHINE_CONFIG_START(cosmic_state::panic) +void cosmic_state::panic(machine_config &config) +{ cosmic(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(panic_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cosmic_state, panic_scanline, "screen", 0, 1) + m_maincpu->set_addrmap(AS_PROGRAM, &cosmic_state::panic_map); + TIMER(config, "scantimer").configure_scanline(FUNC(cosmic_state::panic_scanline), "screen", 0, 1); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_panic) - MCFG_PALETTE_ADD("palette", 16+8*4) - MCFG_PALETTE_INDIRECT_ENTRIES(16) - MCFG_PALETTE_INIT_OWNER(cosmic_state,panic) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_panic); + PALETTE(config, m_palette, 16+8*4); + m_palette->set_indirect_entries(16); + m_palette->set_init(FUNC(cosmic_state::palette_init_panic)); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_panic) + m_screen->set_screen_update(FUNC(cosmic_state::screen_update_panic)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(9) - MCFG_SAMPLES_NAMES(panic_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) 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, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(9); + m_samples->set_samples_names(panic_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.25); + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); + 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); +} -MACHINE_CONFIG_START(cosmic_state::cosmica) +void cosmic_state::cosmica(machine_config &config) +{ cosmic(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(cosmica_map) + m_maincpu->set_addrmap(AS_PROGRAM, &cosmic_state::cosmica_map); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cosmica) - MCFG_PALETTE_ADD("palette", 8+16*4) - MCFG_PALETTE_INDIRECT_ENTRIES(8) - MCFG_PALETTE_INIT_OWNER(cosmic_state,cosmica) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_cosmica); + PALETTE(config, m_palette, 8+16*4); + m_palette->set_indirect_entries(8); + m_palette->set_init(FUNC(cosmic_state::palette_init_cosmica)); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_cosmica) + m_screen->set_screen_update(FUNC(cosmic_state::screen_update_cosmica)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(13) - MCFG_SAMPLES_NAMES(cosmica_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(cosmic_state::cosmicg) + SAMPLES(config, m_samples); + m_samples->set_channels(13); + m_samples->set_samples_names(cosmica_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.25); +} +void cosmic_state::cosmicg(machine_config &config) +{ /* basic machine hardware */ TMS9980A(config, m_maincpu, COSMICG_MASTER_CLOCK); // 9.828 MHz Crystal m_maincpu->set_addrmap(AS_PROGRAM, &cosmic_state::cosmicg_map); @@ -1100,90 +1098,87 @@ MACHINE_CONFIG_START(cosmic_state::cosmicg) MCFG_MACHINE_RESET_OVERRIDE(cosmic_state,cosmicg) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_cosmicg) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 4*8, 28*8-1); + m_screen->set_screen_update(FUNC(cosmic_state::screen_update_cosmicg)); + m_screen->set_palette(m_palette); - MCFG_PALETTE_ADD("palette", 16) - MCFG_PALETTE_INIT_OWNER(cosmic_state,cosmicg) + PALETTE(config, m_palette, 16); + m_palette->set_init(FUNC(cosmic_state::palette_init_cosmicg)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(9) - MCFG_SAMPLES_NAMES(cosmicg_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) + SAMPLES(config, m_samples); + m_samples->set_channels(9); + m_samples->set_samples_names(cosmicg_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.25); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // NE556 - 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.5); // NE556 + 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); // Other DACs include 3-bit binary-weighted (100K/50K/25K) DAC combined with another NE556 for attack march -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(cosmic_state::magspot) +void cosmic_state::magspot(machine_config &config) +{ cosmic(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu", Z80, Z80_MASTER_CLOCK/4) /* 2.704 MHz, verified via schematics */ - MCFG_DEVICE_PROGRAM_MAP(magspot_map) + Z80(config.replace(), m_maincpu, Z80_MASTER_CLOCK/4); /* 2.704 MHz, verified via schematics */ + m_maincpu->set_addrmap(AS_PROGRAM, &cosmic_state::magspot_map); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_panic) - MCFG_PALETTE_ADD("palette", 16+8*4) - MCFG_PALETTE_INDIRECT_ENTRIES(16) - MCFG_PALETTE_INIT_OWNER(cosmic_state,magspot) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_panic); + PALETTE(config, m_palette, 16+8*4); + m_palette->set_indirect_entries(16); + m_palette->set_init(FUNC(cosmic_state::palette_init_magspot)); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_magspot) + m_screen->set_screen_update(FUNC(cosmic_state::screen_update_magspot)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) 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, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END - + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); + 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); +} -MACHINE_CONFIG_START(cosmic_state::devzone) +void cosmic_state::devzone(machine_config &config) +{ magspot(config); - /* basic machine hardware */ - /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_devzone) -MACHINE_CONFIG_END - + m_screen->set_screen_update(FUNC(cosmic_state::screen_update_devzone)); +} -MACHINE_CONFIG_START(cosmic_state::nomnlnd) +void cosmic_state::nomnlnd(machine_config &config) +{ cosmic(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(magspot_map) + m_maincpu->set_addrmap(AS_PROGRAM, &cosmic_state::magspot_map); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_panic) - MCFG_PALETTE_ADD("palette", 16+8*4) - MCFG_PALETTE_INDIRECT_ENTRIES(16) - MCFG_PALETTE_INIT_OWNER(cosmic_state,nomnlnd) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_panic); + PALETTE(config, m_palette, 16+8*4); + m_palette->set_indirect_entries(16); + m_palette->set_init(FUNC(cosmic_state::palette_init_nomnlnd)); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_nomnlnd) + m_screen->set_screen_update(FUNC(cosmic_state::screen_update_nomnlnd)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) 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, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); + 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); +} ROM_START( panic ) diff --git a/src/mame/drivers/equites.cpp b/src/mame/drivers/equites.cpp index 58db8700c7f..ac783bbb00b 100644 --- a/src/mame/drivers/equites.cpp +++ b/src/mame/drivers/equites.cpp @@ -1038,8 +1038,8 @@ static const char *const alphamc07_sample_names[] = #define MSM5232_BASE_VOLUME 1.0 // the sound board is the same in all games -MACHINE_CONFIG_START(equites_state::common_sound) - +void equites_state::common_sound(machine_config &config) +{ I8085A(config, m_audiocpu, 6.144_MHz_XTAL); /* verified on pcb */ m_audiocpu->set_addrmap(AS_PROGRAM, &equites_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &equites_state::sound_portmap); @@ -1056,37 +1056,40 @@ MACHINE_CONFIG_START(equites_state::common_sound) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("msm", MSM5232, MSM5232_MAX_CLOCK) // will be adjusted at runtime through PORT_ADJUSTER - MCFG_MSM5232_SET_CAPACITORS(0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6) // verified - MCFG_MSM5232_GATE_HANDLER_CB(WRITELINE(*this, equites_state, equites_msm5232_gate)) - MCFG_SOUND_ROUTE(0, "speaker", MSM5232_BASE_VOLUME/2.2) // pin 28 2'-1 : 22k resistor - MCFG_SOUND_ROUTE(1, "speaker", MSM5232_BASE_VOLUME/1.5) // pin 29 4'-1 : 15k resistor - MCFG_SOUND_ROUTE(2, "speaker", MSM5232_BASE_VOLUME) // pin 30 8'-1 : 10k resistor - MCFG_SOUND_ROUTE(3, "speaker", MSM5232_BASE_VOLUME) // pin 31 16'-1 : 10k resistor - MCFG_SOUND_ROUTE(4, "speaker", MSM5232_BASE_VOLUME/2.2) // pin 36 2'-2 : 22k resistor - MCFG_SOUND_ROUTE(5, "speaker", MSM5232_BASE_VOLUME/1.5) // pin 35 4'-2 : 15k resistor - MCFG_SOUND_ROUTE(6, "speaker", MSM5232_BASE_VOLUME) // pin 34 8'-2 : 10k resistor - MCFG_SOUND_ROUTE(7, "speaker", MSM5232_BASE_VOLUME) // pin 33 16'-2 : 10k resistor - MCFG_SOUND_ROUTE(8, "speaker", 1.0) // pin 1 SOLO 8' (this actually feeds an analog section) - MCFG_SOUND_ROUTE(9, "speaker", 1.0) // pin 2 SOLO 16' (this actually feeds an analog section) - MCFG_SOUND_ROUTE(10,"speaker", 0.12) // pin 22 Noise Output (this actually feeds an analog section) + MSM5232(config, m_msm, MSM5232_MAX_CLOCK); // will be adjusted at runtime through PORT_ADJUSTER + m_msm->set_capacitors(0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6); // verified + m_msm->gate().set(FUNC(equites_state::equites_msm5232_gate)); + m_msm->add_route(0, "speaker", MSM5232_BASE_VOLUME/2.2); // pin 28 2'-1 : 22k resistor + m_msm->add_route(1, "speaker", MSM5232_BASE_VOLUME/1.5); // pin 29 4'-1 : 15k resistor + m_msm->add_route(2, "speaker", MSM5232_BASE_VOLUME); // pin 30 8'-1 : 10k resistor + m_msm->add_route(3, "speaker", MSM5232_BASE_VOLUME); // pin 31 16'-1 : 10k resistor + m_msm->add_route(4, "speaker", MSM5232_BASE_VOLUME/2.2); // pin 36 2'-2 : 22k resistor + m_msm->add_route(5, "speaker", MSM5232_BASE_VOLUME/1.5); // pin 35 4'-2 : 15k resistor + m_msm->add_route(6, "speaker", MSM5232_BASE_VOLUME); // pin 34 8'-2 : 10k resistor + m_msm->add_route(7, "speaker", MSM5232_BASE_VOLUME); // pin 33 16'-2 : 10k resistor + m_msm->add_route(8, "speaker", 1.0); // pin 1 SOLO 8' (this actually feeds an analog section) + m_msm->add_route(9, "speaker", 1.0); // pin 2 SOLO 16' (this actually feeds an analog section) + m_msm->add_route(10,"speaker", 0.12); // pin 22 Noise Output (this actually feeds an analog section) ay8910_device &aysnd(AY8910(config, "aysnd", 6.144_MHz_XTAL/4)); /* verified on pcb */ aysnd.port_a_write_callback().set(FUNC(equites_state::equites_8910porta_w)); aysnd.port_b_write_callback().set(FUNC(equites_state::equites_8910portb_w)); aysnd.add_route(ALL_OUTPUTS, "speaker", 0.15); - MCFG_DEVICE_ADD("dac1", DAC_6BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC - MCFG_DEVICE_ADD("dac2", DAC_6BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) - - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(3) - MCFG_SAMPLES_NAMES(alphamc07_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) -MACHINE_CONFIG_END + DAC_6BIT_R2R(config, m_dac_1, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC + DAC_6BIT_R2R(config, m_dac_2, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT); + vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT); + + SAMPLES(config, m_samples); + m_samples->set_channels(3); + m_samples->set_samples_names(alphamc07_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.3); +} /******************************************************************************/ @@ -1152,13 +1155,12 @@ void equites_state::machine_reset() m_audiocpu->set_input_line(I8085_TRAP_LINE, CLEAR_LINE); } - -MACHINE_CONFIG_START(equites_state::equites) - +void equites_state::equites(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 12_MHz_XTAL/4) /* 68000P8 running at 3mhz! verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(equites_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", equites_state, equites_scanline, "screen", 0, 1) + M68000(config, m_maincpu, 12_MHz_XTAL/4); /* 68000P8 running at 3mhz! verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &equites_state::equites_map); + TIMER(config, "scantimer").configure_scanline(FUNC(equites_state::equites_scanline), "screen", 0, 1); LS259(config, m_mainlatch); m_mainlatch->q_out_cb<1>().set(FUNC(equites_state::flip_screen_w)); @@ -1167,49 +1169,48 @@ MACHINE_CONFIG_START(equites_state::equites) common_sound(config); - MCFG_DEVICE_ADD("alpha_8201", ALPHA_8201, 4000000/8) // 8303 or 8304 (same device!) - MCFG_QUANTUM_PERFECT_CPU("alpha_8201:mcu") + ALPHA_8201(config, m_alpha_8201, 4000000/8); // 8303 or 8304 (same device!) + + config.m_perfect_cpu_quantum = subtag("alpha_8201:mcu"); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 3*8, 29*8-1) - MCFG_SCREEN_UPDATE_DRIVER(equites_state, screen_update_equites) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_equites) - MCFG_PALETTE_ADD("palette", 0x180) - MCFG_PALETTE_INDIRECT_ENTRIES(0x100) - MCFG_PALETTE_INIT_OWNER(equites_state,equites) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 3*8, 29*8-1); + m_screen->set_screen_update(FUNC(equites_state::screen_update_equites)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_equites); + PALETTE(config, m_palette, 0x180); + m_palette->set_indirect_entries(0x100); + m_palette->set_init(FUNC(equites_state::palette_init_equites)); MCFG_VIDEO_START_OVERRIDE(equites_state,equites) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(gekisou_state::gekisou) +void gekisou_state::gekisou(machine_config &config) +{ equites(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(gekisou_map) + m_maincpu->set_addrmap(AS_PROGRAM, &gekisou_state::gekisou_map); // mcu not dumped, so add simulated mcu - MCFG_DEVICE_ADD("mcu", ALPHA8301L, 4000000/8) - MCFG_DEVICE_PROGRAM_MAP(mcu_map) + ALPHA8301L(config, "mcu", 4000000/8).set_addrmap(AS_PROGRAM, &gekisou_state::mcu_map); // gekisou has battery-backed RAM to store settings NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(splndrbt_state::splndrbt) +} +void splndrbt_state::splndrbt(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 24_MHz_XTAL/4) /* 68000P8 running at 6mhz, verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(splndrbt_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", splndrbt_state, splndrbt_scanline, "screen", 0, 1) + M68000(config, m_maincpu, 24_MHz_XTAL/4); /* 68000P8 running at 6mhz, verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &splndrbt_state::splndrbt_map); + TIMER(config, "scantimer").configure_scanline(FUNC(splndrbt_state::splndrbt_scanline), "screen", 0, 1); LS259(config, m_mainlatch); m_mainlatch->q_out_cb<0>().set(FUNC(equites_state::flip_screen_w)); @@ -1219,32 +1220,32 @@ MACHINE_CONFIG_START(splndrbt_state::splndrbt) common_sound(config); - MCFG_DEVICE_ADD("alpha_8201", ALPHA_8201, 4000000/8) // 8303 or 8304 (same device!) - MCFG_QUANTUM_PERFECT_CPU("alpha_8201:mcu") + ALPHA_8201(config, m_alpha_8201, 4000000/8); // 8303 or 8304 (same device!) + config.m_perfect_cpu_quantum = subtag("alpha_8201:mcu"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(splndrbt_state, screen_update_splndrbt) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_splndrbt) - MCFG_PALETTE_ADD("palette", 0x280) - MCFG_PALETTE_INDIRECT_ENTRIES(0x100) - MCFG_PALETTE_INIT_OWNER(splndrbt_state,splndrbt) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 4*8, 28*8-1); + m_screen->set_screen_update(FUNC(splndrbt_state::screen_update_splndrbt)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_splndrbt); + PALETTE(config, m_palette, 0x280); + m_palette->set_indirect_entries(0x100); + m_palette->set_init(FUNC(splndrbt_state::palette_init_splndrbt)); MCFG_VIDEO_START_OVERRIDE(splndrbt_state,splndrbt) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(splndrbt_state::hvoltage) +void splndrbt_state::hvoltage(machine_config &config) +{ splndrbt(config); // mcu not dumped, so add simulated mcu - MCFG_DEVICE_ADD("mcu", ALPHA8301L, 4000000/8) - MCFG_DEVICE_PROGRAM_MAP(mcu_map) -MACHINE_CONFIG_END + ALPHA8301L(config, "mcu", 4000000/8).set_addrmap(AS_PROGRAM, &splndrbt_state::mcu_map); +} diff --git a/src/mame/drivers/famibox.cpp b/src/mame/drivers/famibox.cpp index 21eab88fc63..8a7141d4581 100644 --- a/src/mame/drivers/famibox.cpp +++ b/src/mame/drivers/famibox.cpp @@ -525,25 +525,26 @@ void famibox_state::machine_start() m_coins = 0; } -MACHINE_CONFIG_START(famibox_state::famibox) +void famibox_state::famibox(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", N2A03, NTSC_APU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(famibox_map) + N2A03(config, m_maincpu, NTSC_APU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &famibox_state::famibox_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DEVICE("ppu", ppu2c0x_device, screen_update) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_size(32*8, 262); + screen.set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + screen.set_screen_update("ppu", FUNC(ppu2c0x_device::screen_update)); - MCFG_PPU2C02_ADD("ppu") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + PPU_2C02(config, m_ppu); + m_ppu->set_cpu_tag(m_maincpu); + m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); -MACHINE_CONFIG_END +} ROM_START(famibox) diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp index c669a50d62c..3add7405656 100644 --- a/src/mame/drivers/gottlieb.cpp +++ b/src/mame/drivers/gottlieb.cpp @@ -201,6 +201,7 @@ VBlank duration: 1/VSYNC * (16/256) = 1017.6 us #include "machine/nvram.h" #include "machine/watchdog.h" +#include "sound/dac.h" #include "speaker.h" @@ -673,14 +674,15 @@ static const char *const qbert_knocker_names[] = nullptr /* end of array */ }; -MACHINE_CONFIG_START(gottlieb_state::qbert_knocker) +void gottlieb_state::qbert_knocker(machine_config &config) +{ SPEAKER(config, "knocker", 0.0, 0.0, 1.0); - MCFG_DEVICE_ADD("knocker_sam", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(qbert_knocker_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "knocker", 1.0) -MACHINE_CONFIG_END + SAMPLES(config, m_knocker_sample); + m_knocker_sample->set_channels(1); + m_knocker_sample->set_samples_names(qbert_knocker_names); + m_knocker_sample->add_route(ALL_OUTPUTS, "knocker", 1.0); +} @@ -1756,29 +1758,28 @@ GFXDECODE_END * *************************************/ -MACHINE_CONFIG_START(gottlieb_state::gottlieb_core) - +void gottlieb_state::gottlieb_core(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8088, CPU_CLOCK/3) - MCFG_DEVICE_PROGRAM_MAP(gottlieb_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gottlieb_state, interrupt) + I8088(config, m_maincpu, CPU_CLOCK/3); + m_maincpu->set_addrmap(AS_PROGRAM, &gottlieb_state::gottlieb_map); + m_maincpu->set_vblank_int("screen", FUNC(gottlieb_state::interrupt)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); /* video hardware */ - MCFG_SCREEN_ADD(m_screen, RASTER) - MCFG_SCREEN_RAW_PARAMS(SYSTEM_CLOCK/4, GOTTLIEB_VIDEO_HCOUNT, 0, GOTTLIEB_VIDEO_HBLANK, GOTTLIEB_VIDEO_VCOUNT, 0, GOTTLIEB_VIDEO_VBLANK) - MCFG_SCREEN_UPDATE_DRIVER(gottlieb_state, screen_update) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(SYSTEM_CLOCK/4, GOTTLIEB_VIDEO_HCOUNT, 0, GOTTLIEB_VIDEO_HBLANK, GOTTLIEB_VIDEO_VCOUNT, 0, GOTTLIEB_VIDEO_VBLANK); + m_screen->set_screen_update(FUNC(gottlieb_state::screen_update)); GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode); PALETTE(config, m_palette, 16); // basic speaker configuration SPEAKER(config, "speaker").front_center(); -MACHINE_CONFIG_END - +} void gottlieb_state::gottlieb1(machine_config &config) { @@ -1792,21 +1793,25 @@ void gottlieb_state::gottlieb2(machine_config &config) GOTTLIEB_SOUND_REV2(config, m_r2_sound, 0).add_route(ALL_OUTPUTS, "speaker", 1.0); } -MACHINE_CONFIG_START(gottlieb_state::g2laser) +void gottlieb_state::g2laser(machine_config &config) +{ gottlieb_core(config); GOTTLIEB_SOUND_REV2(config, m_r2_sound, 0).add_route(ALL_OUTPUTS, "speaker", 1.0); - MCFG_LASERDISC_PR8210_ADD("laserdisc") - MCFG_LASERDISC_AUDIO(laserdisc_device::audio_delegate(&gottlieb_state::laserdisc_audio_process, this)) - MCFG_LASERDISC_OVERLAY_DRIVER(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb_state, screen_update) - MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8) - MCFG_LASERDISC_OVERLAY_PALETTE("palette") - MCFG_SOUND_ROUTE(0, "speaker", 1.0) + PIONEER_PR8210(config, m_laserdisc, 0); + m_laserdisc->set_audio(laserdisc_device::audio_delegate(&gottlieb_state::laserdisc_audio_process, this)); + m_laserdisc->set_overlay(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, FUNC(gottlieb_state::screen_update)); + m_laserdisc->set_overlay_clip(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8); + m_laserdisc->set_overlay_palette("palette"); + m_laserdisc->add_route(0, "speaker", 1.0); + m_laserdisc->set_screen(m_screen); /* right channel is processed as data */ - MCFG_DEVICE_REMOVE("screen") - MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc") -MACHINE_CONFIG_END + SCREEN(config.replace(), m_screen, SCREEN_TYPE_RASTER); + m_screen->set_video_attributes(VIDEO_SELF_RENDER); + m_screen->set_raw(XTAL(14'318'181)*2, 910, 0, 704, 525, 44, 524); + m_screen->set_screen_update("laserdisc", FUNC(laserdisc_device::screen_update)); +} @@ -1823,58 +1828,60 @@ void gottlieb_state::gottlieb1_votrax(machine_config &config) GOTTLIEB_SOUND_REV1_VOTRAX(config, m_r1_sound, 0).add_route(ALL_OUTPUTS, "speaker", 1.0); } - -MACHINE_CONFIG_START(gottlieb_state::reactor) +void gottlieb_state::reactor(machine_config &config) +{ gottlieb1_votrax(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(reactor_map) - - MCFG_DEVICE_REMOVE("nvram") -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &gottlieb_state::reactor_map); + config.device_remove("nvram"); +} -MACHINE_CONFIG_START(gottlieb_state::qbert) +void gottlieb_state::qbert(machine_config &config) +{ gottlieb1_votrax(config); /* sound hardware */ qbert_knocker(config); -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(gottlieb_state::tylz) +void gottlieb_state::tylz(machine_config &config) +{ gottlieb1_votrax(config); -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(gottlieb_state::screwloo) +void gottlieb_state::screwloo(machine_config &config) +{ gottlieb2(config); MCFG_VIDEO_START_OVERRIDE(gottlieb_state,screwloo) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(gottlieb_state::cobram3) +void gottlieb_state::cobram3(machine_config &config) +{ gottlieb_core(config); GOTTLIEB_SOUND_REV2(config, m_r2_sound, 0).add_route(ALL_OUTPUTS, "speaker", 1.0); m_r2_sound->enable_cobram3_mods(); - MCFG_LASERDISC_PR8210_ADD("laserdisc") - MCFG_LASERDISC_AUDIO(laserdisc_device::audio_delegate(&gottlieb_state::laserdisc_audio_process, this)) - MCFG_LASERDISC_OVERLAY_DRIVER(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb_state, screen_update) - MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8) - MCFG_LASERDISC_OVERLAY_PALETTE("palette") - MCFG_SOUND_ROUTE(0, "speaker", 1.0) + PIONEER_PR8210(config, m_laserdisc, 0); + m_laserdisc->set_audio(laserdisc_device::audio_delegate(&gottlieb_state::laserdisc_audio_process, this)); + m_laserdisc->set_overlay(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, FUNC(gottlieb_state::screen_update)); + m_laserdisc->set_overlay_clip(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8); + m_laserdisc->set_overlay_palette("palette"); + m_laserdisc->add_route(0, "speaker", 1.0); + m_laserdisc->set_screen(m_screen); /* right channel is processed as data */ - MCFG_DEVICE_REMOVE("screen") - MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc") + SCREEN(config.replace(), m_screen, SCREEN_TYPE_RASTER); + m_screen->set_video_attributes(VIDEO_SELF_RENDER); + m_screen->set_raw(XTAL(14'318'181)*2, 910, 0, 704, 525, 44, 524); + m_screen->set_screen_update("laserdisc", FUNC(laserdisc_device::screen_update)); /* sound hardware */ - MCFG_DEVICE_MODIFY("r2sound:dac") - MCFG_SOUND_ROUTES_RESET() - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "r2sound", 1.00) -MACHINE_CONFIG_END + subdevice("r2sound:dac")->reset_routes(); + subdevice("r2sound:dac")->add_route(ALL_OUTPUTS, "r2sound", 1.00); +} /************************************* diff --git a/src/mame/drivers/gotya.cpp b/src/mame/drivers/gotya.cpp index 63e3c256c8a..c1106e010a0 100644 --- a/src/mame/drivers/gotya.cpp +++ b/src/mame/drivers/gotya.cpp @@ -209,37 +209,37 @@ void gotya_state::machine_reset() m_theme_playing = 0; } -MACHINE_CONFIG_START(gotya_state::gotya) - +void gotya_state::gotya(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,18432000/6) /* 3.072 MHz ??? */ - MCFG_DEVICE_PROGRAM_MAP(gotya_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gotya_state, irq0_line_hold) + Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz ??? */ + m_maincpu->set_addrmap(AS_PROGRAM, &gotya_state::gotya_map); + m_maincpu->set_vblank_int("screen", FUNC(gotya_state::irq0_line_hold)); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(36*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0, 36*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(gotya_state, screen_update_gotya) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gotya) - MCFG_PALETTE_ADD("palette", 16*4) - MCFG_PALETTE_INDIRECT_ENTRIES(32) - MCFG_PALETTE_INIT_OWNER(gotya_state, gotya) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(36*8, 32*8); + screen.set_visarea(0, 36*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(gotya_state::screen_update_gotya)); + screen.set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_gotya); + PALETTE(config, m_palette, 16*4); + m_palette->set_indirect_entries(32); + m_palette->set_init(FUNC(gotya_state::palette_init_gotya)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/gridlee.cpp b/src/mame/drivers/gridlee.cpp index a796146039f..4bd8b56548e 100644 --- a/src/mame/drivers/gridlee.cpp +++ b/src/mame/drivers/gridlee.cpp @@ -396,11 +396,11 @@ static const char *const sample_names[] = * *************************************/ -MACHINE_CONFIG_START(gridlee_state::gridlee) - +void gridlee_state::gridlee(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6809, GRIDLEE_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(cpu1_map) + M6809(config, m_maincpu, GRIDLEE_CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &gridlee_state::cpu1_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -414,25 +414,24 @@ MACHINE_CONFIG_START(gridlee_state::gridlee) m_latch->q_out_cb<7>().set(FUNC(gridlee_state::cocktail_flip_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(GRIDLEE_PIXEL_CLOCK, GRIDLEE_HTOTAL, GRIDLEE_HBEND, GRIDLEE_HBSTART, GRIDLEE_VTOTAL, GRIDLEE_VBEND, GRIDLEE_VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(gridlee_state, screen_update_gridlee) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(GRIDLEE_PIXEL_CLOCK, GRIDLEE_HTOTAL, GRIDLEE_HBEND, GRIDLEE_HBSTART, GRIDLEE_VTOTAL, GRIDLEE_VBEND, GRIDLEE_VBSTART); + m_screen->set_screen_update(FUNC(gridlee_state::screen_update_gridlee)); + m_screen->set_palette(m_palette); - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_INIT_OWNER(gridlee_state,gridlee) + PALETTE(config, m_palette, 2048); + m_palette->set_init(FUNC(gridlee_state::palette_init_gridlee)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("gridlee", GRIDLEE, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + GRIDLEE(config, "gridlee", 0).add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.40); +} diff --git a/src/mame/drivers/homerun.cpp b/src/mame/drivers/homerun.cpp index 6f8ffa8303a..3dc40648493 100644 --- a/src/mame/drivers/homerun.cpp +++ b/src/mame/drivers/homerun.cpp @@ -350,13 +350,13 @@ void homerun_state::machine_reset() /**************************************************************************/ -MACHINE_CONFIG_START(homerun_state::dynashot) - +void homerun_state::dynashot(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(20'000'000)/4) - MCFG_DEVICE_PROGRAM_MAP(homerun_memmap) - MCFG_DEVICE_IO_MAP(homerun_iomap) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", homerun_state, irq0_line_hold) + Z80(config, m_maincpu, XTAL(20'000'000)/4); + m_maincpu->set_addrmap(AS_PROGRAM, &homerun_state::homerun_memmap); + m_maincpu->set_addrmap(AS_IO, &homerun_state::homerun_iomap); + m_maincpu->set_vblank_int("screen", FUNC(homerun_state::irq0_line_hold)); i8255_device &ppi(I8255A(config, "ppi8255")); ppi.out_pa_callback().set(FUNC(homerun_state::homerun_scrollhi_w)); @@ -364,16 +364,13 @@ MACHINE_CONFIG_START(homerun_state::dynashot) ppi.out_pc_callback().set(FUNC(homerun_state::homerun_scrollx_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) -// MCFG_SCREEN_REFRESH_RATE(60) -// MCFG_SCREEN_SIZE(256, 256) -// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_RAW_PARAMS(XTAL(20'000'000)/4,328,0,256,253,0,240) - MCFG_SCREEN_UPDATE_DRIVER(homerun_state, screen_update_homerun) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(20'000'000)/4,328,0,256,253,0,240); + m_screen->set_screen_update(FUNC(homerun_state::screen_update_homerun)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_homerun) - MCFG_PALETTE_ADD("palette", 16*4) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_homerun); + PALETTE(config, m_palette, 16*4); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -382,32 +379,33 @@ MACHINE_CONFIG_START(homerun_state::dynashot) ymsnd.port_a_read_callback().set_ioport("DSW"); ymsnd.port_b_write_callback().set(FUNC(homerun_state::homerun_banking_w)); ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(homerun_state::homerun) +void homerun_state::homerun(machine_config &config) +{ dynashot(config); /* sound hardware */ - MCFG_DEVICE_ADD("d7756", UPD7756) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) + UPD7756(config, m_d7756); + m_d7756->add_route(ALL_OUTPUTS, "mono", 0.75); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(homerun_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(homerun_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} -MACHINE_CONFIG_START(homerun_state::ganjaja) +void homerun_state::ganjaja(machine_config &config) +{ dynashot(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PERIODIC_INT_DRIVER(homerun_state, irq0_line_hold, 4*60) // ? + m_maincpu->set_periodic_int(FUNC(homerun_state::irq0_line_hold), attotime::from_hz(4*60)); // ? /* sound hardware */ - MCFG_DEVICE_ADD("d7756", UPD7756) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) -MACHINE_CONFIG_END + UPD7756(config, m_d7756); + m_d7756->add_route(ALL_OUTPUTS, "mono", 0.75); +} diff --git a/src/mame/drivers/m10.cpp b/src/mame/drivers/m10.cpp index c10c017db51..6d12beace7c 100644 --- a/src/mame/drivers/m10.cpp +++ b/src/mame/drivers/m10.cpp @@ -812,27 +812,26 @@ static const char *const m10_sample_names[] = * *************************************/ -MACHINE_CONFIG_START(m10_state::m10) - +void m10_state::m10(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502,IREMM10_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(m10_main) + M6502(config, m_maincpu, IREMM10_CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &m10_state::m10_main); MCFG_MACHINE_START_OVERRIDE(m10_state,m10) MCFG_MACHINE_RESET_OVERRIDE(m10_state,m10) - //MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m10_state, m10_interrupt) - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(IREMM10_PIXEL_CLOCK, IREMM10_HTOTAL, IREMM10_HBEND, IREMM10_HBSTART, IREMM10_VTOTAL, IREMM10_VBEND, IREMM10_VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(m10_state, screen_update_m10) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(IREMM10_PIXEL_CLOCK, IREMM10_HTOTAL, IREMM10_HBEND, IREMM10_HBSTART, IREMM10_VTOTAL, IREMM10_VBEND, IREMM10_VBSTART); + m_screen->set_screen_update(FUNC(m10_state::screen_update_m10)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_m10) - MCFG_PALETTE_ADD("palette", 2*8) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_m10); + + PALETTE(config, m_palette, 2*8); + m_palette->set_init(FUNC(m10_state::palette_init_m10)); - MCFG_PALETTE_INIT_OWNER(m10_state,m10) MCFG_VIDEO_START_OVERRIDE(m10_state,m10) /* 74LS123 */ @@ -859,63 +858,57 @@ MACHINE_CONFIG_START(m10_state::m10) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(m10_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(m10_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(m10_state::m11) +void m10_state::m11(machine_config &config) +{ m10(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(m11_main) - //MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m10_state, m11_interrupt) - - /* sound hardware */ -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(m10_state::m15) + m_maincpu->set_addrmap(AS_PROGRAM, &m10_state::m11_main); +} +void m10_state::m15(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502,IREMM15_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(m15_main) + M6502(config, m_maincpu, IREMM15_CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &m10_state::m15_main); + m_maincpu->set_vblank_int("screen", FUNC(m10_state::m15_interrupt)); MCFG_MACHINE_START_OVERRIDE(m10_state,m10) MCFG_MACHINE_RESET_OVERRIDE(m10_state,m10) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m10_state, m15_interrupt) - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(IREMM15_PIXEL_CLOCK, IREMM15_HTOTAL, IREMM15_HBEND, IREMM15_HBSTART, IREMM15_VTOTAL, IREMM15_VBEND, IREMM15_VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(m10_state, screen_update_m15) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(IREMM15_PIXEL_CLOCK, IREMM15_HTOTAL, IREMM15_HBEND, IREMM15_HBSTART, IREMM15_VTOTAL, IREMM15_VBEND, IREMM15_VBSTART); + m_screen->set_screen_update(FUNC(m10_state::screen_update_m15)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty) - MCFG_PALETTE_ADD("palette", 2*8) + GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty); + + PALETTE(config, m_palette, 2*8); + m_palette->set_init(FUNC(m10_state::palette_init_m10)); - MCFG_PALETTE_INIT_OWNER(m10_state,m10) MCFG_VIDEO_START_OVERRIDE(m10_state, m15 ) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(m10_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - -MACHINE_CONFIG_END - + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(m10_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(m10_state::headoni) +void m10_state::headoni(machine_config &config) +{ m15(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(11730000/16) -MACHINE_CONFIG_END + m_maincpu->set_clock(11730000/16); +} /************************************* * diff --git a/src/mame/drivers/m14.cpp b/src/mame/drivers/m14.cpp index dbd075795b7..4bd7334a609 100644 --- a/src/mame/drivers/m14.cpp +++ b/src/mame/drivers/m14.cpp @@ -432,40 +432,38 @@ void m14_state::machine_reset() } -MACHINE_CONFIG_START(m14_state::m14) - +void m14_state::m14(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",I8085A,6000000) //guess: 6 Mhz internally divided by 2 - MCFG_DEVICE_PROGRAM_MAP(m14_map) - MCFG_DEVICE_IO_MAP(m14_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m14_state, m14_irq) + I8085A(config, m_maincpu, 6000000); //guess: 6 Mhz internally divided by 2 + m_maincpu->set_addrmap(AS_PROGRAM, &m14_state::m14_map); + m_maincpu->set_addrmap(AS_IO, &m14_state::m14_io_map); + m_maincpu->set_vblank_int("screen", FUNC(m14_state::m14_irq)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(m14_state, screen_update_m14) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_m14) - MCFG_PALETTE_ADD("palette", 0x20) - MCFG_PALETTE_INIT_OWNER(m14_state, m14) - + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); //not accurate + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 0*8, 28*8-1); + m_screen->set_screen_update(FUNC(m14_state::screen_update_m14)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_m14); + PALETTE(config, m_palette, 0x20); + m_palette->set_init(FUNC(m14_state::palette_init_m14)); /* sound hardware */ - SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(5) - MCFG_SAMPLES_NAMES(m14_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6) + SAMPLES(config, m_samples); + m_samples->set_channels(5); + m_samples->set_samples_names(m14_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.6); // MCFG_DEVICE_ADD("discrete", DISCRETE) // MCFG_DISCRETE_INTF(m14) // MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END +} /*************************************************************************** diff --git a/src/mame/drivers/m63.cpp b/src/mame/drivers/m63.cpp index 117f237230b..6da1e777bd0 100644 --- a/src/mame/drivers/m63.cpp +++ b/src/mame/drivers/m63.cpp @@ -759,9 +759,9 @@ INTERRUPT_GEN_MEMBER(m63_state::vblank_irq) MACHINE_CONFIG_START(m63_state::m63) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",Z80,XTAL(12'000'000)/4) /* 3 MHz */ - MCFG_DEVICE_PROGRAM_MAP(m63_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m63_state, vblank_irq) + Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 3 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &m63_state::m63_map); + m_maincpu->set_vblank_int("screen", FUNC(m63_state::vblank_irq)); ls259_device &outlatch(LS259(config, "outlatch")); // probably chip at E7 obscured by pulldown resistor outlatch.q_out_cb<0>().set(FUNC(m63_state::nmi_mask_w)); @@ -782,18 +782,18 @@ MACHINE_CONFIG_START(m63_state::m63) MCFG_MACHINE_RESET_OVERRIDE(m63_state,m63) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(m63_state, screen_update_m63) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_m63) - MCFG_PALETTE_ADD("palette", 256+4) - - MCFG_PALETTE_INIT_OWNER(m63_state,m63) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(m63_state::screen_update_m63)); + screen.set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_m63); + PALETTE(config, m_palette, 256+4); + m_palette->set_init(FUNC(m63_state::palette_init_m63)); + MCFG_VIDEO_START_OVERRIDE(m63_state,m63) /* sound hardware */ @@ -802,47 +802,49 @@ MACHINE_CONFIG_START(m63_state::m63) GENERIC_LATCH_8(config, m_soundlatch); AY8910(config, m_ay1, XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); - AY8910(config, m_ay2, XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 1.00); /* ????? */ -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(m63_state::atomboy) +void m63_state::atomboy(machine_config &config) +{ m63(config); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PERIODIC_INT_DRIVER(m63_state, snd_irq, 60/2) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(m63_state::fghtbskt) + m_soundcpu->set_periodic_int(FUNC(m63_state::snd_irq), attotime::from_hz(60/2)); +} +void m63_state::fghtbskt(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* 3 MHz */ - MCFG_DEVICE_PROGRAM_MAP(fghtbskt_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m63_state, vblank_irq) + Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 3 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &m63_state::fghtbskt_map); + m_maincpu->set_vblank_int("screen", FUNC(m63_state::vblank_irq)); ls259_device &outlatch(LS259(config, "outlatch")); outlatch.q_out_cb<1>().set(FUNC(m63_state::nmi_mask_w)); outlatch.q_out_cb<2>().set(FUNC(m63_state::fghtbskt_flipscreen_w)); //outlatch.q_out_cb<7>().set(FUNC(m63_state::fghtbskt_samples_w)); - MCFG_DEVICE_ADD("soundcpu", I8039,XTAL(12'000'000)/4) /* ????? */ - MCFG_DEVICE_PROGRAM_MAP(i8039_map) - MCFG_DEVICE_IO_MAP(i8039_port_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(m63_state, snd_irq, 60/2) + I8039(config, m_soundcpu, XTAL(12'000'000)/4); /* ????? */ + m_soundcpu->set_addrmap(AS_PROGRAM, &m63_state::i8039_map); + m_soundcpu->set_addrmap(AS_IO, &m63_state::i8039_port_map); + m_soundcpu->set_periodic_int(FUNC(m63_state::snd_irq), attotime::from_hz(60/2)); MCFG_MACHINE_START_OVERRIDE(m63_state,m63) MCFG_MACHINE_RESET_OVERRIDE(m63_state,m63) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(m63_state, screen_update_m63) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fghtbskt) - MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 256) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(m63_state::screen_update_m63)); + screen.set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_fghtbskt); + PALETTE(config, m_palette, 256); + m_palette->set_prom_region("proms"); + m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms)); + MCFG_VIDEO_START_OVERRIDE(m63_state,m63) /* sound hardware */ @@ -852,11 +854,11 @@ MACHINE_CONFIG_START(m63_state::fghtbskt) AY8910(config, m_ay1, XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_START_CB(m63_state, fghtbskt_sh_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_start_callback(FUNC(m63_state::fghtbskt_sh_start)); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} /*************************************************************************** diff --git a/src/mame/drivers/mcr.cpp b/src/mame/drivers/mcr.cpp index d2631c3c10f..d3a74881da2 100644 --- a/src/mame/drivers/mcr.cpp +++ b/src/mame/drivers/mcr.cpp @@ -1749,15 +1749,15 @@ static const char *const twotiger_sample_names[] = *************************************/ /* 90009 CPU board plus 90908/90913/91483 sound board */ -MACHINE_CONFIG_START(mcr_state::mcr_90009) - +void mcr_state::mcr_90009(machine_config &config) +{ /* basic machine hardware */ Z80(config, m_maincpu, MAIN_OSC_MCR_I/8); m_maincpu->set_daisy_config(mcr_daisy_chain); m_maincpu->set_addrmap(AS_PROGRAM, &mcr_state::cpu_90009_map); m_maincpu->set_addrmap(AS_IO, &mcr_state::cpu_90009_portmap); - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mcr_state, mcr_interrupt, "screen", 0, 1) + TIMER(config, "scantimer").configure_scanline(FUNC(mcr_state::mcr_interrupt), "screen", 0, 1); Z80CTC(config, m_ctc, MAIN_OSC_MCR_I/8 /* same as "maincpu" */); m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); @@ -1768,40 +1768,39 @@ MACHINE_CONFIG_START(mcr_state::mcr_90009) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) - MCFG_SCREEN_REFRESH_RATE(30) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(32*16, 30*16) - MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 0*16, 30*16-1) - MCFG_SCREEN_UPDATE_DRIVER(mcr_state, screen_update_mcr) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mcr) - MCFG_PALETTE_ADD("palette", 32) - MCFG_PALETTE_FORMAT(xxxxRRRRBBBBGGGG) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); + screen.set_refresh_hz(30); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(32*16, 30*16); + screen.set_visarea(0*16, 32*16-1, 0*16, 30*16-1); + screen.set_screen_update(FUNC(mcr_state::screen_update_mcr)); + screen.set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_mcr); + PALETTE(config, m_palette, 32).set_format(PALETTE_FORMAT_xxxxRRRRBBBBGGGG); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("ssio", MIDWAY_SSIO) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END - + MIDWAY_SSIO(config, m_ssio); + m_ssio->add_route(0, "lspeaker", 1.0); + m_ssio->add_route(1, "rspeaker", 1.0); +} /* as above, but in a casino cabinet */ -MACHINE_CONFIG_START(mcr_dpoker_state::mcr_90009_dp) +void mcr_dpoker_state::mcr_90009_dp(machine_config &config) +{ mcr_90009(config); /* basic machine hardware */ - MCFG_TIMER_DRIVER_ADD("coinin", mcr_dpoker_state, coin_in_callback) - MCFG_TIMER_DRIVER_ADD("hopper", mcr_dpoker_state, hopper_callback) -MACHINE_CONFIG_END - + TIMER(config, "coinin").configure_generic(FUNC(mcr_dpoker_state::coin_in_callback)); + TIMER(config, "hopper").configure_generic(FUNC(mcr_dpoker_state::hopper_callback)); +} /* 90010 CPU board plus 90908/90913/91483 sound board */ -MACHINE_CONFIG_START(mcr_state::mcr_90010) +void mcr_state::mcr_90010(machine_config &config) +{ mcr_90009(config); /* basic machine hardware */ @@ -1809,41 +1808,39 @@ MACHINE_CONFIG_START(mcr_state::mcr_90010) m_maincpu->set_addrmap(AS_IO, &mcr_state::cpu_90010_portmap); /* video hardware */ - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(64) - MCFG_PALETTE_FORMAT(xxxxRRRRBBBBGGGG) -MACHINE_CONFIG_END - + m_palette->set_entries(64); + m_palette->set_format(PALETTE_FORMAT_xxxxRRRRBBBBGGGG); +} /* as above, plus 8-track tape */ -MACHINE_CONFIG_START(mcr_state::mcr_90010_tt) +void mcr_state::mcr_90010_tt(machine_config &config) +{ mcr_90010(config); /* sound hardware */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(2) - MCFG_SAMPLES_NAMES(twotiger_sample_names) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) -MACHINE_CONFIG_END - + SAMPLES(config, m_samples); + m_samples->set_channels(2); + m_samples->set_samples_names(twotiger_sample_names); + m_samples->add_route(0, "lspeaker", 0.25); + m_samples->add_route(1, "rspeaker", 0.25); +} /* 91475 CPU board plus 90908/90913/91483 sound board plus cassette interface */ -MACHINE_CONFIG_START(mcr_state::mcr_91475) +void mcr_state::mcr_91475(machine_config &config) +{ mcr_90010(config); /* video hardware */ - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(128) - MCFG_PALETTE_FORMAT(xxxxRRRRBBBBGGGG) + m_palette->set_entries(128); + m_palette->set_format(PALETTE_FORMAT_xxxxRRRRBBBBGGGG); /* sound hardware */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(journey_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(journey_sample_names); + m_samples->add_route(ALL_OUTPUTS, "lspeaker", 0.25); + m_samples->add_route(ALL_OUTPUTS, "rspeaker", 0.25); +} /* 91490 CPU board plus 90908/90913/91483 sound board */ @@ -1861,18 +1858,20 @@ void mcr_state::mcr_91490(machine_config & config) /* 91490 CPU board plus 90908/90913/91483 sound board plus Squawk n' Talk sound board */ -MACHINE_CONFIG_START(mcr_state::mcr_91490_snt) +void mcr_state::mcr_91490_snt(machine_config &config) +{ mcr_91490(config); /* basic machine hardware */ - MCFG_DEVICE_ADD("snt", MIDWAY_SQUAWK_N_TALK) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) -MACHINE_CONFIG_END + MIDWAY_SQUAWK_N_TALK(config, m_squawk_n_talk); + m_squawk_n_talk->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_squawk_n_talk->add_route(ALL_OUTPUTS, "rspeaker", 1.0); +} /* 91490 CPU board plus 90908/90913/91483 sound board plus Squawk n' Talk sound board plus IPU */ -MACHINE_CONFIG_START(mcr_nflfoot_state::mcr_91490_ipu) +void mcr_nflfoot_state::mcr_91490_ipu(machine_config &config) +{ mcr_91490_snt(config); /* basic machine hardware */ @@ -1881,8 +1880,7 @@ MACHINE_CONFIG_START(mcr_nflfoot_state::mcr_91490_ipu) m_ipu->set_addrmap(AS_PROGRAM, &mcr_nflfoot_state::ipu_91695_map); m_ipu->set_addrmap(AS_IO, &mcr_nflfoot_state::ipu_91695_portmap); - MCFG_TIMER_MODIFY("scantimer") - MCFG_TIMER_DRIVER_CALLBACK(mcr_nflfoot_state, ipu_interrupt) + subdevice("scantimer")->set_callback(FUNC(mcr_nflfoot_state::ipu_interrupt)); Z80CTC(config, m_ipu_ctc, 7372800/2 /* same as "ipu" */); m_ipu_ctc->intr_callback().set_inputline(m_ipu, INPUT_LINE_IRQ0); @@ -1897,18 +1895,19 @@ MACHINE_CONFIG_START(mcr_nflfoot_state::mcr_91490_ipu) m_ipu_sio->out_int_callback().set_inputline(m_ipu, INPUT_LINE_IRQ0); m_ipu_sio->out_txda_callback().set(FUNC(mcr_nflfoot_state::sio_txda_w)); m_ipu_sio->out_txdb_callback().set(FUNC(mcr_nflfoot_state::sio_txdb_w)); -MACHINE_CONFIG_END +} /* 91490 CPU board plus 90908/90913/91483 sound board plus Turbo Cheap Squeak sound board */ -MACHINE_CONFIG_START(mcr_state::mcr_91490_tcs) +void mcr_state::mcr_91490_tcs(machine_config &config) +{ mcr_91490(config); /* basic machine hardware */ - MCFG_DEVICE_ADD("tcs", MIDWAY_TURBO_CHEAP_SQUEAK) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) -MACHINE_CONFIG_END + MIDWAY_TURBO_CHEAP_SQUEAK(config, m_turbo_cheap_squeak); + m_turbo_cheap_squeak->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_turbo_cheap_squeak->add_route(ALL_OUTPUTS, "rspeaker", 1.0); +} diff --git a/src/mame/drivers/meadows.cpp b/src/mame/drivers/meadows.cpp index ca3c9ef57de..bf92c2823fe 100644 --- a/src/mame/drivers/meadows.cpp +++ b/src/mame/drivers/meadows.cpp @@ -621,109 +621,109 @@ static const char *const bowl3d_sample_names[] = * *************************************/ -MACHINE_CONFIG_START(meadows_state::meadows) - +void meadows_state::meadows(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ - MCFG_DEVICE_PROGRAM_MAP(meadows_main_map) + S2650(config, m_maincpu, MASTER_CLOCK/8); /* 5MHz / 8 = 625 kHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &meadows_state::meadows_main_map); - MCFG_DEVICE_ADD("audiocpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ - MCFG_DEVICE_PROGRAM_MAP(audio_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(meadows_state, audio_interrupt, (double)5000000/131072) + S2650(config, m_audiocpu, MASTER_CLOCK/8); /* 5MHz / 8 = 625 kHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &meadows_state::audio_map); + m_audiocpu->set_periodic_int(FUNC(meadows_state::audio_interrupt), attotime::from_hz((double)5000000/131072)); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) + config.m_minimum_quantum = attotime::from_hz(600); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 30*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, meadows_state, meadows_vblank_irq)) // one interrupt per frame!? + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(32*8, 30*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(meadows_state::screen_update_meadows)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(meadows_state::meadows_vblank_irq)); // one interrupt per frame!? - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_meadows) - MCFG_PALETTE_ADD_MONOCHROME("palette") + GFXDECODE(config, m_gfxdecode, m_palette, gfx_meadows); + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* audio hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // 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) - - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(2) - MCFG_SAMPLES_START_CB(meadows_state, meadows_sh_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(meadows_state::minferno) + DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // 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); + + SAMPLES(config, m_samples); + m_samples->set_channels(2); + m_samples->set_samples_start_callback(FUNC(meadows_state::meadows_sh_start)); + m_samples->add_route(ALL_OUTPUTS, "speaker", 1.0); +} +void meadows_state::minferno(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, MASTER_CLOCK/24) /* 5MHz / 8 / 3 = 208.33 kHz */ - MCFG_DEVICE_PROGRAM_MAP(minferno_main_map) - MCFG_DEVICE_DATA_MAP(minferno_data_map) + S2650(config, m_maincpu, MASTER_CLOCK/24); /* 5MHz / 8 / 3 = 208.33 kHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &meadows_state::minferno_main_map); + m_maincpu->set_addrmap(AS_DATA, &meadows_state::minferno_data_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 24*8-1) - MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, meadows_state, minferno_vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 1*8, 24*8-1); + m_screen->set_screen_update(FUNC(meadows_state::screen_update_meadows)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(meadows_state::minferno_vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_minferno) - MCFG_PALETTE_ADD_MONOCHROME("palette") + GFXDECODE(config, m_gfxdecode, m_palette, gfx_minferno); + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* audio hardware */ // TODO -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(meadows_state::bowl3d) +} +void meadows_state::bowl3d(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ - MCFG_DEVICE_PROGRAM_MAP(bowl3d_main_map) + S2650(config, m_maincpu, MASTER_CLOCK/8); /* 5MHz / 8 = 625 kHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &meadows_state::bowl3d_main_map); - MCFG_DEVICE_ADD("audiocpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ - MCFG_DEVICE_PROGRAM_MAP(audio_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(meadows_state, audio_interrupt, (double)5000000/131072) + S2650(config, m_audiocpu, MASTER_CLOCK/8); /* 5MHz / 8 = 625 kHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &meadows_state::audio_map); + m_audiocpu->set_periodic_int(FUNC(meadows_state::audio_interrupt), attotime::from_hz((double)5000000/131072)); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) + config.m_minimum_quantum = attotime::from_hz(600); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 30*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, meadows_state, meadows_vblank_irq)) // one interrupt per frame!? + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(32*8, 30*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(meadows_state::screen_update_meadows)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(meadows_state::meadows_vblank_irq)); // one interrupt per frame!? - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_meadows) - MCFG_PALETTE_ADD_MONOCHROME("palette") + GFXDECODE(config, m_gfxdecode, m_palette, gfx_meadows); + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* audio hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // 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) - - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(2) - MCFG_SAMPLES_START_CB(meadows_state, meadows_sh_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) - - MCFG_DEVICE_ADD("samples2", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(bowl3d_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END - - + DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // 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); + + SAMPLES(config, m_samples); + m_samples->set_channels(2); + m_samples->set_samples_start_callback(FUNC(meadows_state::meadows_sh_start)); + m_samples->add_route(ALL_OUTPUTS, "speaker", 1.0); + + samples_device &samples2(SAMPLES(config, "samples2")); + samples2.set_channels(1); + samples2.set_samples_names(bowl3d_sample_names); + samples2.add_route(ALL_OUTPUTS, "speaker", 1.0); +} /************************************* * diff --git a/src/mame/drivers/mmagic.cpp b/src/mame/drivers/mmagic.cpp index 088ae0252c6..d5dd9491fd5 100644 --- a/src/mame/drivers/mmagic.cpp +++ b/src/mame/drivers/mmagic.cpp @@ -306,27 +306,29 @@ void mmagic_state::machine_start() // MACHINE DEFINTIONS //************************************************************************** -MACHINE_CONFIG_START(mmagic_state::mmagic) +void mmagic_state::mmagic(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD("maincpu", I8085A, 6.144_MHz_XTAL) // NEC D8085A - MCFG_DEVICE_PROGRAM_MAP(mmagic_mem) - MCFG_DEVICE_IO_MAP(mmagic_io) + I8085A(config, m_maincpu, 6.144_MHz_XTAL); // NEC D8085A + m_maincpu->set_addrmap(AS_PROGRAM, &mmagic_state::mmagic_mem); + m_maincpu->set_addrmap(AS_IO, &mmagic_state::mmagic_io); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(6.144_MHz_XTAL, 384, 0, 256, 264, 0, 192) - MCFG_SCREEN_UPDATE_DRIVER(mmagic_state, screen_update) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(6.144_MHz_XTAL, 384, 0, 256, 264, 0, 192); + m_screen->set_screen_update(FUNC(mmagic_state::screen_update)); - MCFG_PALETTE_ADD_3BIT_RGB("palette") + PALETTE(config, m_palette, 8); + m_palette->set_init("palette", FUNC(palette_device::palette_init_3bit_rgb)); // sound hardware SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(mmagic_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(mmagic_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.5); // TODO: replace samples with SN76477 + discrete sound -MACHINE_CONFIG_END +} //************************************************************************** diff --git a/src/mame/drivers/multigam.cpp b/src/mame/drivers/multigam.cpp index cf6dced861b..cd4b919dbca 100644 --- a/src/mame/drivers/multigam.cpp +++ b/src/mame/drivers/multigam.cpp @@ -1206,48 +1206,49 @@ MACHINE_START_MEMBER(multigam_state,supergm3) m_multigmc_mmc3_6000_ram = std::make_unique(0x2000); } -MACHINE_CONFIG_START(multigam_state::multigam) +void multigam_state::multigam(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", N2A03, NTSC_APU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(multigam_map) + N2A03(config, m_maincpu, NTSC_APU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &multigam_state::multigam_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DEVICE("ppu", ppu2c0x_device, screen_update) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_size(32*8, 262); + screen.set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + screen.set_screen_update("ppu", FUNC(ppu2c0x_device::screen_update)); - MCFG_PPU2C02_ADD("ppu") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + PPU_2C02(config, m_ppu); + m_ppu->set_cpu_tag("maincpu"); + m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(multigam_state::multigm3) +void multigam_state::multigm3(machine_config &config) +{ multigam(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(multigm3_map) + m_maincpu->set_addrmap(AS_PROGRAM, &multigam_state::multigm3_map); MCFG_MACHINE_START_OVERRIDE(multigam_state, multigm3 ) MCFG_MACHINE_RESET_OVERRIDE(multigam_state, multigm3 ) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(multigam_state::multigmt) +void multigam_state::multigmt(machine_config &config) +{ multigam(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(multigmt_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &multigam_state::multigmt_map); +} -MACHINE_CONFIG_START(multigam_state::supergm3) +void multigam_state::supergm3(machine_config &config) +{ multigam(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(supergm3_map) + m_maincpu->set_addrmap(AS_PROGRAM, &multigam_state::supergm3_map); MCFG_MACHINE_START_OVERRIDE(multigam_state,supergm3) -MACHINE_CONFIG_END +} ROM_START( multigam ) ROM_REGION( 0x10000, "maincpu", 0 ) diff --git a/src/mame/drivers/mw8080bw.cpp b/src/mame/drivers/mw8080bw.cpp index 972dedb478e..86827f050ab 100644 --- a/src/mame/drivers/mw8080bw.cpp +++ b/src/mame/drivers/mw8080bw.cpp @@ -230,19 +230,20 @@ void mw8080bw_state::main_map(address_map &map) * *************************************/ -MACHINE_CONFIG_START(mw8080bw_state::mw8080bw_root) - +void mw8080bw_state::mw8080bw_root(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",I8080,MW8080BW_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(main_map) + I8080(config, m_maincpu, MW8080BW_CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &mw8080bw_state::main_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,mw8080bw) MCFG_MACHINE_RESET_OVERRIDE(mw8080bw_state,mw8080bw) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(mw8080bw_state, screen_update_mw8080bw) -MACHINE_CONFIG_END + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART); + m_screen->set_screen_update(FUNC(mw8080bw_state::screen_update_mw8080bw)); +} @@ -407,21 +408,20 @@ static INPUT_PORTS_START( seawolf ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::seawolf) +void mw8080bw_state::seawolf(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(seawolf_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::seawolf_io_map); /* there is no watchdog */ /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ seawolf_audio(config); - -MACHINE_CONFIG_END +} @@ -509,21 +509,20 @@ static INPUT_PORTS_START( gunfight ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::gunfight) +void mw8080bw_state::gunfight(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(gunfight_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::gunfight_io_map); /* there is no watchdog */ /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ gunfight_audio(config); - -MACHINE_CONFIG_END +} @@ -739,21 +738,20 @@ static INPUT_PORTS_START( tornbase ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::tornbase) +void mw8080bw_state::tornbase(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(tornbase_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::tornbase_io_map); /* there is no watchdog */ /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ tornbase_audio(config); - -MACHINE_CONFIG_END +} @@ -848,22 +846,21 @@ static INPUT_PORTS_START( lagunar ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::zzzap) +void mw8080bw_state::zzzap(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(zzzap_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::zzzap_io_map); WATCHDOG_TIMER(config, m_watchdog).set_time(PERIOD_OF_555_MONOSTABLE(RES_M(1), CAP_U(1))); /* 1.1s */ /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ /* zzzap_audio(config); */ - -MACHINE_CONFIG_END +} @@ -961,20 +958,20 @@ static INPUT_PORTS_START( maze ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::maze) +void mw8080bw_state::maze(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(maze_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::maze_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,maze) WATCHDOG_TIMER(config, m_watchdog).set_time(PERIOD_OF_555_MONOSTABLE(RES_K(270), CAP_U(10))); /* 2.97s */ /* audio hardware */ maze_audio(config); - -MACHINE_CONFIG_END +} @@ -1054,23 +1051,23 @@ static INPUT_PORTS_START( boothill ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::boothill) +void mw8080bw_state::boothill(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(boothill_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::boothill_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,boothill) WATCHDOG_TIMER(config, m_watchdog).set_time(PERIOD_OF_555_MONOSTABLE(RES_K(270), CAP_U(10))); /* 2.97s */ /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ boothill_audio(config); - -MACHINE_CONFIG_END +} @@ -1162,19 +1159,18 @@ static INPUT_PORTS_START( checkmat ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::checkmat) +void mw8080bw_state::checkmat(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(checkmat_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::checkmat_io_map); WATCHDOG_TIMER(config, m_watchdog).set_time(PERIOD_OF_555_MONOSTABLE(RES_K(270), CAP_U(10))); /* 2.97s */ /* audio hardware */ checkmat_audio(config); - -MACHINE_CONFIG_END +} @@ -1290,23 +1286,23 @@ static INPUT_PORTS_START( desertgu ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::desertgu) +void mw8080bw_state::desertgu(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(desertgu_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::desertgu_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,desertgu) WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ desertgu_audio(config); - -MACHINE_CONFIG_END +} @@ -1493,22 +1489,21 @@ static INPUT_PORTS_START( einning ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::dplay) +void mw8080bw_state::dplay(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(dplay_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::dplay_io_map); WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ dplay_audio(config); - -MACHINE_CONFIG_END +} @@ -1589,23 +1584,23 @@ static INPUT_PORTS_START( gmissile ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::gmissile) +void mw8080bw_state::gmissile(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(gmissile_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::gmissile_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,gmissile) WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ gmissile_audio(config); - -MACHINE_CONFIG_END +} @@ -1684,23 +1679,23 @@ static INPUT_PORTS_START( m4 ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::m4) +void mw8080bw_state::m4(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(m4_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::m4_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,m4) WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ m4_audio(config); - -MACHINE_CONFIG_END +} @@ -1854,23 +1849,23 @@ static INPUT_PORTS_START( clowns1 ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::clowns) +void mw8080bw_state::clowns(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(clowns_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::clowns_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,clowns) WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ clowns_audio(config); - -MACHINE_CONFIG_END +} @@ -1951,23 +1946,23 @@ static INPUT_PORTS_START( spacwalk ) PORT_ADJUSTER( 40, "R507 - Music Volume" ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::spacwalk) +void mw8080bw_state::spacwalk(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(spacwalk_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::spacwalk_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,clowns) WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ spacwalk_audio(config); - -MACHINE_CONFIG_END +} @@ -2035,22 +2030,21 @@ static INPUT_PORTS_START( shuffle ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::shuffle) +void mw8080bw_state::shuffle(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(shuffle_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::shuffle_io_map); WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ shuffle_audio(config); - -MACHINE_CONFIG_END +} @@ -2123,22 +2117,21 @@ static INPUT_PORTS_START( dogpatch ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::dogpatch) +void mw8080bw_state::dogpatch(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(dogpatch_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::dogpatch_io_map); WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ dogpatch_audio(config); - -MACHINE_CONFIG_END +} @@ -2274,32 +2267,33 @@ static INPUT_PORTS_START( spcenctr ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::spcenctr) +void mw8080bw_state::spcenctr(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(spcenctr_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::spcenctr_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,spcenctr) WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* timers */ - MCFG_TIMER_DRIVER_ADD_PERIODIC("strobeon", mw8080bw_state, spcenctr_strobe_timer_callback, attotime::from_hz(SPCENCTR_STROBE_FREQ)) - MCFG_TIMER_PARAM(true) /* indicates strobe ON */ + timer_device &strobeon(TIMER(config, "strobeon")); + strobeon.configure_periodic(FUNC(mw8080bw_state::spcenctr_strobe_timer_callback), attotime::from_hz(SPCENCTR_STROBE_FREQ)); + strobeon.config_param(true); /* indicates strobe ON */ - MCFG_TIMER_DRIVER_ADD_PERIODIC("strobeoff", mw8080bw_state, spcenctr_strobe_timer_callback, attotime::from_hz(SPCENCTR_STROBE_FREQ)) - MCFG_TIMER_START_DELAY(attotime::from_hz(SPCENCTR_STROBE_FREQ) * (100 - SPCENCTR_STROBE_DUTY_CYCLE) / 100) - MCFG_TIMER_PARAM(false) /* indicates strobe OFF */ + timer_device &strobeoff(TIMER(config, "strobeoff")); + strobeoff.configure_periodic(FUNC(mw8080bw_state::spcenctr_strobe_timer_callback), attotime::from_hz(SPCENCTR_STROBE_FREQ)); + strobeoff.set_start_delay(attotime::from_hz(SPCENCTR_STROBE_FREQ) * (100 - SPCENCTR_STROBE_DUTY_CYCLE) / 100); + strobeoff.config_param(false); /* indicates strobe OFF */ /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(mw8080bw_state, screen_update_spcenctr) + m_screen->set_screen_update(FUNC(mw8080bw_state::screen_update_spcenctr)); /* audio hardware */ spcenctr_audio(config); - -MACHINE_CONFIG_END +} @@ -2371,28 +2365,27 @@ static INPUT_PORTS_START( phantom2 ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::phantom2) +void mw8080bw_state::phantom2(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(phantom2_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::phantom2_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,phantom2) WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(mw8080bw_state, screen_update_phantom2) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mw8080bw_state, screen_vblank_phantom2)) + m_screen->set_screen_update(FUNC(mw8080bw_state::screen_update_phantom2)); + m_screen->screen_vblank().set(FUNC(mw8080bw_state::screen_vblank_phantom2)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ phantom2_audio(config); - -MACHINE_CONFIG_END +} @@ -2513,22 +2506,21 @@ static INPUT_PORTS_START( bowler ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::bowler) +void mw8080bw_state::bowler(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(bowler_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::bowler_io_map); WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ bowler_audio(config); - -MACHINE_CONFIG_END +} @@ -2725,27 +2717,26 @@ static INPUT_PORTS_START( invaders ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::invaders) +void mw8080bw_state::invaders(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(invaders_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::invaders_io_map); + MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,invaders) WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(mw8080bw_state, screen_update_invaders) + m_screen->set_screen_update(FUNC(mw8080bw_state::screen_update_invaders)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ invaders_audio(config); - -MACHINE_CONFIG_END +} @@ -2811,22 +2802,21 @@ static INPUT_PORTS_START( blueshrk ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::blueshrk) +void mw8080bw_state::blueshrk(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(blueshrk_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::blueshrk_io_map); WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ blueshrk_audio(config); - -MACHINE_CONFIG_END +} @@ -2914,22 +2904,21 @@ static INPUT_PORTS_START( invad2ct ) INPUT_PORTS_END -MACHINE_CONFIG_START(mw8080bw_state::invad2ct) +void mw8080bw_state::invad2ct(machine_config &config) +{ mw8080bw_root(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(invad2ct_io_map) + m_maincpu->set_addrmap(AS_IO, &mw8080bw_state::invad2ct_io_map); WATCHDOG_TIMER(config, m_watchdog).set_time(255 * attotime::from_hz(MW8080BW_60HZ)); /* add shifter */ - MB14241(config, "mb14241"); + MB14241(config, m_mb14241); /* audio hardware */ invad2ct_audio(config); - -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/nes.cpp b/src/mame/drivers/nes.cpp index d7f787efb32..e7113c8cd1b 100644 --- a/src/mame/drivers/nes.cpp +++ b/src/mame/drivers/nes.cpp @@ -16,7 +16,6 @@ #include "includes/nes.h" #include "cpu/m6502/n2a03.h" -#include "screen.h" #include "softlist.h" #include "speaker.h" @@ -49,120 +48,115 @@ static INPUT_PORTS_START( famicom ) INPUT_PORTS_END -MACHINE_CONFIG_START(nes_state::nes) +void nes_state::nes(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", N2A03, NTSC_APU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(nes_map) + N2A03(config, m_maincpu, NTSC_APU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &nes_state::nes_map); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60.0988) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60.0988); // This isn't used so much to calulate the vblank duration (the PPU code tracks that manually) but to determine // the number of cycles in each scanline for the PPU scanline timer. Since the PPU has 20 vblank scanlines + 2 // non-rendering scanlines, we compensate. This ends up being 2500 cycles for the non-rendering portion, 2273 // cycles for the actual vblank period. - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((113.66/(NTSC_APU_CLOCK.dvalue()/1000000)) * (ppu2c0x_device::VBLANK_LAST_SCANLINE_NTSC-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(nes_state, screen_update_nes) + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC((113.66/(NTSC_APU_CLOCK.dvalue()/1000000)) * + (ppu2c0x_device::VBLANK_LAST_SCANLINE_NTSC-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))); + m_screen->set_size(32*8, 262); + m_screen->set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + m_screen->set_screen_update(FUNC(nes_state::screen_update_nes)); - MCFG_PPU2C02_ADD("ppu") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + PPU_2C02(config, m_ppu); + m_ppu->set_cpu_tag(m_maincpu); + m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); // note APU sound level here was specified as 0.90, not 0.50 like the others // not sure how to adjust it when it's inside the CPU? - MCFG_NES_CONTROL_PORT_ADD("ctrl1", nes_control_port1_devices, "joypad") - MCFG_NESCTRL_BRIGHTPIXEL_CB(nes_state, bright_pixel) - MCFG_NES_CONTROL_PORT_ADD("ctrl2", nes_control_port2_devices, "joypad") - MCFG_NESCTRL_BRIGHTPIXEL_CB(nes_state, bright_pixel) - - MCFG_DEVICE_ADD("nes_slot", NES_CART_SLOT, NTSC_APU_CLOCK, nes_cart, nullptr) - MCFG_SOFTWARE_LIST_ADD("cart_list", "nes") - MCFG_SOFTWARE_LIST_ADD("ade_list", "nes_ade") // Camerica/Codemasters Aladdin Deck Enhancer mini-carts - MCFG_SOFTWARE_LIST_ADD("ntb_list", "nes_ntbrom") // Sunsoft Nantettate! Baseball mini-carts - MCFG_SOFTWARE_LIST_ADD("kstudio_list", "nes_kstudio") // Bandai Karaoke Studio expansion carts - MCFG_SOFTWARE_LIST_ADD("datach_list", "nes_datach") // Bandai Datach Joint ROM System mini-carts -MACHINE_CONFIG_END + NES_CONTROL_PORT(config, m_ctrl1, nes_control_port1_devices, "joypad"); + m_ctrl1->set_brightpixel_callback(FUNC(nes_state::bright_pixel)); + NES_CONTROL_PORT(config, m_ctrl2, nes_control_port2_devices, "joypad"); + m_ctrl2->set_brightpixel_callback(FUNC(nes_state::bright_pixel)); + + NES_CART_SLOT(config, m_cartslot, NTSC_APU_CLOCK, nes_cart, nullptr); + SOFTWARE_LIST(config, "cart_list").set_original("nes"); + SOFTWARE_LIST(config, "ade_list").set_original("nes_ade"); // Camerica/Codemasters Aladdin Deck Enhancer mini-carts + SOFTWARE_LIST(config, "ntb_list").set_original("nes_ntbrom"); // Sunsoft Nantettate! Baseball mini-carts + SOFTWARE_LIST(config, "kstudio_list").set_original("nes_kstudio"); // Bandai Karaoke Studio expansion carts + SOFTWARE_LIST(config, "datach_list").set_original("nes_datach"); // Bandai Datach Joint ROM System mini-carts +} -MACHINE_CONFIG_START(nes_state::nespal) +void nes_state::nespal(machine_config &config) +{ nes(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(PAL_APU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(nes_map) + m_maincpu->set_clock(PAL_APU_CLOCK); - MCFG_DEVICE_REMOVE("ppu") - MCFG_PPU2C07_ADD("ppu") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + PPU_2C07(config.replace(), m_ppu); + m_ppu->set_cpu_tag(m_maincpu); + m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); - MCFG_DEVICE_MODIFY("nes_slot") - MCFG_DEVICE_CLOCK(PAL_APU_CLOCK) + m_cartslot->set_clock(PAL_APU_CLOCK); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(50.0070) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((106.53/(PAL_APU_CLOCK.dvalue()/1000000)) * (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))) - MCFG_SCREEN_SIZE(32*8, 312) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_state::famicom) + m_screen->set_refresh_hz(50.0070); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC((106.53/(PAL_APU_CLOCK.dvalue()/1000000)) * + (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))); + m_screen->set_size(32*8, 312); + m_screen->set_visarea(0*8, 32*8-1, 0*8, 30*8-1); +} + +void nes_state::famicom(machine_config &config) +{ nes(config); - MCFG_DEVICE_REMOVE("ctrl1") - MCFG_DEVICE_REMOVE("ctrl2") - MCFG_NES_CONTROL_PORT_ADD("ctrl1", fc_control_port1_devices, "joypad") - MCFG_NES_CONTROL_PORT_ADD("ctrl2", fc_control_port2_devices, "joypad") - MCFG_FC_EXPANSION_PORT_ADD("exp", fc_expansion_devices, nullptr) - MCFG_NESCTRL_BRIGHTPIXEL_CB(nes_state, bright_pixel) - - MCFG_SOFTWARE_LIST_ADD("flop_list", "famicom_flop") - MCFG_SOFTWARE_LIST_ADD("cass_list", "famicom_cass") -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_state::nespalc) + NES_CONTROL_PORT(config.replace(), m_ctrl1, fc_control_port1_devices, "joypad"); + NES_CONTROL_PORT(config.replace(), m_ctrl2, fc_control_port2_devices, "joypad"); + NES_CONTROL_PORT(config, m_exp, fc_expansion_devices, nullptr); + m_exp->set_brightpixel_callback(FUNC(nes_state::bright_pixel)); + + SOFTWARE_LIST(config, "flop_list").set_original("famicom_flop"); + SOFTWARE_LIST(config, "cass_list").set_original("famicom_cass"); +} + +void nes_state::nespalc(machine_config &config) +{ nespal(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_CLOCK(PALC_APU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(nes_map) + m_maincpu->set_clock(PALC_APU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &nes_state::nes_map); /* UMC 6538 and friends -- extends time for rendering dummy scanlines */ - MCFG_DEVICE_REMOVE("ppu") - MCFG_PPUPALC_ADD("ppu") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + PPU_PALC(config.replace(), m_ppu); + m_ppu->set_cpu_tag(m_maincpu); + m_ppu->int_callback().set_inputline("maincpu", INPUT_LINE_NMI); - MCFG_DEVICE_MODIFY("nes_slot") - MCFG_DEVICE_CLOCK(PALC_APU_CLOCK) + m_cartslot->set_clock(PALC_APU_CLOCK); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(50.0070) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((113.66/(PALC_APU_CLOCK.dvalue()/1000000)) * (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE_PALC+1+2))) -MACHINE_CONFIG_END + m_screen->set_refresh_hz(50.0070); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC((113.66/(PALC_APU_CLOCK.dvalue()/1000000)) * + (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE_PALC+1+2))); +} -MACHINE_CONFIG_START(nes_state::famipalc) +void nes_state::famipalc(machine_config &config) +{ nespalc(config); - MCFG_DEVICE_REMOVE("ctrl1") - MCFG_DEVICE_REMOVE("ctrl2") - MCFG_NES_CONTROL_PORT_ADD("ctrl1", fc_control_port1_devices, "joypad") - MCFG_NES_CONTROL_PORT_ADD("ctrl2", fc_control_port2_devices, "joypad") - MCFG_FC_EXPANSION_PORT_ADD("exp", fc_expansion_devices, nullptr) - MCFG_NESCTRL_BRIGHTPIXEL_CB(nes_state, bright_pixel) + NES_CONTROL_PORT(config.replace(), m_ctrl1, fc_control_port1_devices, "joypad"); + NES_CONTROL_PORT(config.replace(), m_ctrl2, fc_control_port2_devices, "joypad"); + NES_CONTROL_PORT(config, m_exp, fc_expansion_devices, nullptr); + m_exp->set_brightpixel_callback(FUNC(nes_state::bright_pixel)); - MCFG_SOFTWARE_LIST_ADD("cass_list", "famicom_cass") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "cass_list").set_original("famicom_cass"); +} -MACHINE_CONFIG_START(nes_state::suborkbd) +void nes_state::suborkbd(machine_config &config) +{ famipalc(config); /* TODO: emulate the parallel port bus! */ - MCFG_DEVICE_MODIFY("exp") - MCFG_SLOT_DEFAULT_OPTION("subor_keyboard") - MCFG_SLOT_FIXED(true) -MACHINE_CONFIG_END + m_exp->set_default_option("subor_keyboard"); + m_exp->set_fixed(true); +} void nes_state::setup_disk(nes_disksys_device *slot) { @@ -192,7 +186,6 @@ void nes_state::setup_disk(nes_disksys_device *slot) } } - MACHINE_START_MEMBER( nes_state, fds ) { m_ciram = std::make_unique(0x800); @@ -213,22 +206,23 @@ MACHINE_RESET_MEMBER( nes_state, fds ) m_maincpu->reset(); } -MACHINE_CONFIG_START(nes_state::fds) +void nes_state::fds(machine_config &config) +{ famicom(config); - MCFG_MACHINE_START_OVERRIDE( nes_state, fds ) - MCFG_MACHINE_RESET_OVERRIDE( nes_state, fds ) - MCFG_DEVICE_REMOVE("nes_slot") - MCFG_DEVICE_ADD("disk", NES_DISKSYS, 0) + MCFG_MACHINE_START_OVERRIDE(nes_state, fds) + MCFG_MACHINE_RESET_OVERRIDE(nes_state, fds) - MCFG_DEVICE_REMOVE("cart_list") - MCFG_DEVICE_REMOVE("cass_list") - MCFG_DEVICE_REMOVE("ade_list") - MCFG_DEVICE_REMOVE("ntb_list") - MCFG_DEVICE_REMOVE("kstudio_list") - MCFG_DEVICE_REMOVE("datach_list") -MACHINE_CONFIG_END + config.device_remove("nes_slot"); + NES_DISKSYS(config, "disk", 0); + config.device_remove("cart_list"); + config.device_remove("cass_list"); + config.device_remove("ade_list"); + config.device_remove("ntb_list"); + config.device_remove("kstudio_list"); + config.device_remove("datach_list"); +} MACHINE_START_MEMBER( nes_state, famitwin ) { @@ -258,17 +252,17 @@ MACHINE_RESET_MEMBER( nes_state, famitwin ) m_maincpu->reset(); } -MACHINE_CONFIG_START(nes_state::famitwin) +void nes_state::famitwin(machine_config &config) +{ famicom(config); MCFG_MACHINE_START_OVERRIDE( nes_state, famitwin ) MCFG_MACHINE_RESET_OVERRIDE( nes_state, famitwin ) - MCFG_DEVICE_MODIFY("nes_slot") - MCFG_NES_CARTRIDGE_NOT_MANDATORY + m_cartslot->set_must_be_loaded(false); - MCFG_DEVICE_ADD("disk", NES_DISKSYS, 0) -MACHINE_CONFIG_END + NES_DISKSYS(config, "disk", 0); +} diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp index 179bb1d3b00..aa6d19a83cf 100644 --- a/src/mame/drivers/nes_vt.cpp +++ b/src/mame/drivers/nes_vt.cpp @@ -92,6 +92,7 @@ public: : nes_base_state(mconfig, type, tag) , m_ntram(nullptr) , m_chrram(nullptr) + , m_screen(*this, "screen") , m_ppu(*this, "ppu") , m_apu(*this, "apu") , m_prg(*this, "prg") @@ -227,6 +228,7 @@ private: virtual void machine_start() override; virtual void machine_reset() override; + required_device m_screen; required_device m_ppu; required_device m_apu; required_device m_prg; @@ -1347,32 +1349,32 @@ static const uint8_t descram_ppu_2012_2017[5][6] = { {0x4, 0x7, 0x2, 0x6, 0x5, 0x3}, }; -MACHINE_CONFIG_START(nes_vt_state::nes_vt) +void nes_vt_state::nes_vt(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502_VTSCR, NTSC_APU_CLOCK) // selectable speed? - MCFG_DEVICE_PROGRAM_MAP(nes_vt_map) + M6502_VTSCR(config, m_maincpu, NTSC_APU_CLOCK); // selectable speed? + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_map); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60.0988) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((113.66/(NTSC_APU_CLOCK.dvalue()/1000000)) * (ppu2c0x_device::VBLANK_LAST_SCANLINE_NTSC-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DEVICE("ppu", ppu2c0x_device, screen_update) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60.0988); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC((113.66/(NTSC_APU_CLOCK.dvalue()/1000000)) * + (ppu2c0x_device::VBLANK_LAST_SCANLINE_NTSC-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))); + m_screen->set_size(32*8, 262); + m_screen->set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + m_screen->set_screen_update("ppu", FUNC(ppu2c0x_device::screen_update)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "ppu", vt03_gfx_helper) + GFXDECODE(config, "gfxdecode", "ppu", vt03_gfx_helper); - MCFG_PPU_VT03_ADD("ppu") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) - MCFG_PPU_VT03_READ_BG_CB(READ8(*this, nes_vt_state,chr_r)) - MCFG_PPU_VT03_READ_SP_CB(READ8(*this, nes_vt_state,spr_r)) + PPU_VT03(config, m_ppu); + m_ppu->set_cpu_tag(m_maincpu); + m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); + m_ppu->read_bg().set(FUNC(nes_vt_state::chr_r)); + m_ppu->read_sp().set(FUNC(nes_vt_state::spr_r)); ADDRESS_MAP_BANK(config, "prg").set_map(&nes_vt_state::prg_map).set_options(ENDIANNESS_LITTLE, 8, 15, 0x8000); - MCFG_NES_CONTROL_PORT_ADD("ctrl1", nes_control_port1_devices, "joypad") - //MCFG_NESCTRL_BRIGHTPIXEL_CB(nes_state, bright_pixel) - MCFG_NES_CONTROL_PORT_ADD("ctrl2", nes_control_port2_devices, "joypad") - //MCFG_NESCTRL_BRIGHTPIXEL_CB(nes_state, bright_pixel) + NES_CONTROL_PORT(config, m_ctrl1, nes_control_port1_devices, "joypad"); + NES_CONTROL_PORT(config, m_ctrl2, nes_control_port2_devices, "joypad"); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1381,116 +1383,106 @@ MACHINE_CONFIG_START(nes_vt_state::nes_vt) than just using 2 APUs as registers in the 2nd one affect the PCM channel mode but the DMA control still comes from the 1st, but in the new mode, sound always outputs via the 2nd. Probably need to split the APU into interface and sound gen logic. */ - MCFG_DEVICE_ADD("apu", NES_APU, NTSC_APU_CLOCK) - MCFG_NES_APU_IRQ_HANDLER(WRITELINE(*this, nes_vt_state, apu_irq)) - MCFG_NES_APU_MEM_READ_CALLBACK(READ8(*this, nes_vt_state, apu_read_mem)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + NES_APU(config, m_apu, NTSC_APU_CLOCK); + m_apu->irq().set(FUNC(nes_vt_state::apu_irq)); + m_apu->mem_read().set(FUNC(nes_vt_state::apu_read_mem)); + m_apu->add_route(ALL_OUTPUTS, "mono", 0.50); +} -MACHINE_CONFIG_START(nes_vt_state::nes_vt_hum) +void nes_vt_state::nes_vt_hum(machine_config &config) +{ nes_vt(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_hum_map) + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_hum_map); - MCFG_PPU_VT03_MODIFY("ppu") - MCFG_PPU_VT03_SET_DESCRAMBLE(descram_ppu_2012_2017[3]); -MACHINE_CONFIG_END + m_ppu->set_201x_descramble(descram_ppu_2012_2017[3]); +} -MACHINE_CONFIG_START(nes_vt_state::nes_vt_pjoy) +void nes_vt_state::nes_vt_pjoy(machine_config &config) +{ nes_vt(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_pjoy_map) - - MCFG_PPU_VT03_MODIFY("ppu") - MCFG_PPU_VT03_SET_DESCRAMBLE(descram_ppu_2012_2017[2]); -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_pjoy_map); + m_ppu->set_201x_descramble(descram_ppu_2012_2017[2]); +} -MACHINE_CONFIG_START(nes_vt_state::nes_vt_sp69) +void nes_vt_state::nes_vt_sp69(machine_config &config) +{ nes_vt(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_sp69_map) - - MCFG_PPU_VT03_MODIFY("ppu") - MCFG_PPU_VT03_SET_DESCRAMBLE(descram_ppu_2012_2017[4]); -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_sp69_map); + m_ppu->set_201x_descramble(descram_ppu_2012_2017[4]); +} -MACHINE_CONFIG_START(nes_vt_state::nes_vt_xx) +void nes_vt_state::nes_vt_xx(machine_config &config) +{ nes_vt(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_xx_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_xx_map); +} -MACHINE_CONFIG_START(nes_vt_state::nes_vt_cy) +void nes_vt_state::nes_vt_cy(machine_config &config) +{ nes_vt_xx(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_cy_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_cy_map); +} -MACHINE_CONFIG_START(nes_vt_state::nes_vt_bt) +void nes_vt_state::nes_vt_bt(machine_config &config) +{ nes_vt_xx(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_bt_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_bt_map); +} -MACHINE_CONFIG_START(nes_vt_state::nes_vt_dg) +void nes_vt_state::nes_vt_dg(machine_config &config) +{ nes_vt_xx(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_dg_map) - - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(50.0070) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((106.53/(PAL_APU_CLOCK.dvalue()/1000000)) * (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))) - MCFG_SCREEN_SIZE(32*8, 312) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nes_vt_state::nes_vt_vg ) - nes_vt_dg(config); + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_dg_map); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_hh_map) + m_screen->set_refresh_hz(50.0070); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC((106.53/(PAL_APU_CLOCK.dvalue()/1000000)) * + (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))); + m_screen->set_size(32*8, 312); + m_screen->set_visarea(0*8, 32*8-1, 0*8, 30*8-1); +} - MCFG_PPU_VT03_MODIFY("ppu") - MCFG_PPU_VT03_SET_PAL_MODE(PAL_MODE_NEW_VG); +void nes_vt_state::nes_vt_vg(machine_config &config) +{ + nes_vt_dg(config); + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_hh_map); -MACHINE_CONFIG_END + m_ppu->set_palette_mode(PAL_MODE_NEW_VG);; +} // New mystery handheld architecture, VTxx derived -MACHINE_CONFIG_START(nes_vt_state::nes_vt_hh) +void nes_vt_state::nes_vt_hh(machine_config &config) +{ nes_vt_xx(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_hh_map) - MCFG_PPU_VT03_MODIFY("ppu") - MCFG_PPU_VT03_SET_PAL_MODE(PAL_MODE_NEW_RGB); + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_hh_map); + m_ppu->set_palette_mode(PAL_MODE_NEW_RGB); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(50.0070) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((106.53/(PAL_APU_CLOCK.dvalue()/1000000)) * (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))) - MCFG_SCREEN_SIZE(32*8, 312) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) -MACHINE_CONFIG_END + m_screen->set_refresh_hz(50.0070); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC((106.53/(PAL_APU_CLOCK.dvalue()/1000000)) * + (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))); + m_screen->set_size(32*8, 312); + m_screen->set_visarea(0*8, 32*8-1, 0*8, 30*8-1); +} static INPUT_PORTS_START( nes_vt ) PORT_START("CARTSEL") INPUT_PORTS_END -MACHINE_CONFIG_START(nes_vt_state::nes_vt_fp) +void nes_vt_state::nes_vt_fp(machine_config &config) +{ nes_vt_xx(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_fp_map) + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_fp_map); - MCFG_PPU_VT03_MODIFY("ppu") - MCFG_PPU_VT03_SET_PAL_MODE(PAL_MODE_NEW_RGB12); -MACHINE_CONFIG_END + m_ppu->set_palette_mode(PAL_MODE_NEW_RGB12); +} -MACHINE_CONFIG_START(nes_vt_state::nes_vt_fa) +void nes_vt_state::nes_vt_fa(machine_config &config) +{ nes_vt_xx(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(nes_vt_fa_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_fa_map); +} static INPUT_PORTS_START( nes_vt_fp ) diff --git a/src/mame/drivers/ninjakd2.cpp b/src/mame/drivers/ninjakd2.cpp index fae4c66587a..67528ba4bf9 100644 --- a/src/mame/drivers/ninjakd2.cpp +++ b/src/mame/drivers/ninjakd2.cpp @@ -966,133 +966,129 @@ void omegaf_state::machine_reset() /*****************************************************************************/ -MACHINE_CONFIG_START(ninjakd2_state::ninjakd2_core) - +void ninjakd2_state::ninjakd2_core(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK_12/2) /* verified */ - MCFG_DEVICE_PROGRAM_MAP(ninjakd2_main_cpu) + Z80(config, m_maincpu, MAIN_CLOCK_12/2); /* verified */ + m_maincpu->set_addrmap(AS_PROGRAM, &ninjakd2_state::ninjakd2_main_cpu); - MCFG_DEVICE_ADD("soundcpu", Z80, MAIN_CLOCK_5) /* verified */ - MCFG_DEVICE_PROGRAM_MAP(ninjakd2_sound_cpu) - MCFG_DEVICE_IO_MAP(ninjakd2_sound_io) + Z80(config, m_soundcpu, MAIN_CLOCK_5); /* verified */ + m_soundcpu->set_addrmap(AS_PROGRAM, &ninjakd2_state::ninjakd2_sound_cpu); + m_soundcpu->set_addrmap(AS_IO, &ninjakd2_state::ninjakd2_sound_io); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.61) /* verified on pcb */ - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(ninjakd2_state, screen_update_ninjakd2) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ninjakd2_state, screen_vblank_ninjakd2)) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ninjakd2) - MCFG_PALETTE_ADD("palette", 0x300) - MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(59.61); /* verified on pcb */ + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 4*8, 28*8-1); + m_screen->set_screen_update(FUNC(ninjakd2_state::screen_update_ninjakd2)); + m_screen->screen_vblank().set(FUNC(ninjakd2_state::screen_vblank_ninjakd2)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_ninjakd2); + PALETTE(config, m_palette, 0x300); + m_palette->set_format(PALETTE_FORMAT_RRRRGGGGBBBBxxxx); + m_palette->set_endianness(ENDIANNESS_BIG); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("2203.1", YM2203, MAIN_CLOCK_12/8) /* verified */ - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.10) - MCFG_SOUND_ROUTE(1, "mono", 0.10) - MCFG_SOUND_ROUTE(2, "mono", 0.10) - MCFG_SOUND_ROUTE(3, "mono", 0.50) - - MCFG_DEVICE_ADD("2203.2", YM2203, MAIN_CLOCK_12/8) /* verified */ - MCFG_SOUND_ROUTE(0, "mono", 0.10) - MCFG_SOUND_ROUTE(1, "mono", 0.10) - MCFG_SOUND_ROUTE(2, "mono", 0.10) - MCFG_SOUND_ROUTE(3, "mono", 0.50) - - MCFG_DEVICE_ADD("pcm", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_START_CB(ninjakd2_state, ninjakd2_init_samples) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(ninjakd2_state::ninjakd2) + ym2203_device &ym2203_1(YM2203(config, "2203.1", MAIN_CLOCK_12/8)); /* verified */ + ym2203_1.irq_handler().set_inputline("soundcpu", 0); + ym2203_1.add_route(0, "mono", 0.10); + ym2203_1.add_route(1, "mono", 0.10); + ym2203_1.add_route(2, "mono", 0.10); + ym2203_1.add_route(3, "mono", 0.50); + + ym2203_device &ym2203_2(YM2203(config, "2203.2", MAIN_CLOCK_12/8)); /* verified */ + ym2203_2.add_route(0, "mono", 0.10); + ym2203_2.add_route(1, "mono", 0.10); + ym2203_2.add_route(2, "mono", 0.10); + ym2203_2.add_route(3, "mono", 0.50); + + SAMPLES(config, m_pcm); + m_pcm->set_channels(1); + m_pcm->set_samples_start_callback(FUNC(ninjakd2_state::ninjakd2_init_samples)); + m_pcm->add_route(ALL_OUTPUTS, "mono", 0.80); +} + +void ninjakd2_state::ninjakd2(machine_config &config) +{ ninjakd2_core(config); - MCFG_DEVICE_REPLACE("soundcpu", MC8123, MAIN_CLOCK_5) /* verified */ - MCFG_DEVICE_PROGRAM_MAP(ninjakd2_sound_cpu) - MCFG_DEVICE_IO_MAP(ninjakd2_sound_io) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) -MACHINE_CONFIG_END + MC8123(config.replace(), m_soundcpu, MAIN_CLOCK_5); /* verified */ + m_soundcpu->set_addrmap(AS_PROGRAM, &ninjakd2_state::ninjakd2_sound_cpu); + m_soundcpu->set_addrmap(AS_IO, &ninjakd2_state::ninjakd2_sound_io); + m_soundcpu->set_addrmap(AS_OPCODES, &ninjakd2_state::decrypted_opcodes_map); +} -MACHINE_CONFIG_START(ninjakd2_state::ninjakd2b) +void ninjakd2_state::ninjakd2b(machine_config &config) +{ ninjakd2_core(config); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PROGRAM_MAP(ninjakd2_sound_cpu) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) -MACHINE_CONFIG_END + m_soundcpu->set_addrmap(AS_PROGRAM, &ninjakd2_state::ninjakd2_sound_cpu); + m_soundcpu->set_addrmap(AS_OPCODES, &ninjakd2_state::decrypted_opcodes_map); +} -MACHINE_CONFIG_START(mnight_state::mnight) +void mnight_state::mnight(machine_config &config) +{ ninjakd2_core(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(mnight_main_cpu) - - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PROGRAM_MAP(ninjakid_nopcm_sound_cpu) + m_maincpu->set_addrmap(AS_PROGRAM, &mnight_state::mnight_main_cpu); + m_soundcpu->set_addrmap(AS_PROGRAM, &mnight_state::ninjakid_nopcm_sound_cpu); /* video hardware */ MCFG_VIDEO_START_OVERRIDE(mnight_state,mnight) /* sound hardware */ - MCFG_DEVICE_REMOVE("pcm") -MACHINE_CONFIG_END + config.device_remove("pcm"); +} -MACHINE_CONFIG_START(mnight_state::arkarea) +void mnight_state::arkarea(machine_config &config) +{ mnight(config); /* video hardware */ MCFG_VIDEO_START_OVERRIDE(mnight_state,arkarea) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(robokid_state::robokid) +void robokid_state::robokid(machine_config &config) +{ mnight(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(robokid_main_cpu) - - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PROGRAM_MAP(ninjakid_nopcm_sound_cpu) + m_maincpu->set_addrmap(AS_PROGRAM, &robokid_state::robokid_main_cpu); + m_soundcpu->set_addrmap(AS_PROGRAM, &robokid_state::ninjakid_nopcm_sound_cpu); /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_robokid) - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(0x400) // RAM is this large, but still only 0x300 colors used - MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) + m_gfxdecode->set_info(gfx_robokid); + m_palette->set_entries(0x400); // RAM is this large, but still only 0x300 colors used + m_palette->set_format(PALETTE_FORMAT_RRRRGGGGBBBBxxxx); + m_palette->set_endianness(ENDIANNESS_BIG); MCFG_VIDEO_START_OVERRIDE(robokid_state,robokid) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(robokid_state,screen_update_robokid) -MACHINE_CONFIG_END -MACHINE_CONFIG_START(omegaf_state::omegaf) + m_screen->set_screen_update(FUNC(robokid_state::screen_update_robokid)); +} + +void omegaf_state::omegaf(machine_config &config) +{ robokid(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(omegaf_main_cpu) + m_maincpu->set_addrmap(AS_PROGRAM, &omegaf_state::omegaf_main_cpu); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PROGRAM_MAP(ninjakid_nopcm_sound_cpu) + m_soundcpu->set_addrmap(AS_PROGRAM, &omegaf_state::ninjakid_nopcm_sound_cpu); // MCFG_MACHINE_START_OVERRIDE(ninjakd2_state,omegaf) // MCFG_MACHINE_RESET_OVERRIDE(ninjakd2_state,omegaf) /* video hardware */ MCFG_VIDEO_START_OVERRIDE(omegaf_state,omegaf) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(omegaf_state,screen_update_omegaf) -MACHINE_CONFIG_END + + m_screen->set_screen_update(FUNC(omegaf_state::screen_update_omegaf)); +} diff --git a/src/mame/drivers/playch10.cpp b/src/mame/drivers/playch10.cpp index d32393c6e0c..3380cc639d4 100644 --- a/src/mame/drivers/playch10.cpp +++ b/src/mame/drivers/playch10.cpp @@ -644,7 +644,8 @@ WRITE_LINE_MEMBER(playch10_state::vblank_irq) } } -MACHINE_CONFIG_START(playch10_state::playch10) +void playch10_state::playch10(machine_config &config) +{ // basic machine hardware Z80(config, m_maincpu, 8000000/2); // 4 MHz m_maincpu->set_addrmap(AS_PROGRAM, &playch10_state::bios_map); @@ -669,23 +670,22 @@ MACHINE_CONFIG_START(playch10_state::playch10) outlatch2.parallel_out_cb().set(FUNC(playch10_state::cart_sel_w)).rshift(3).mask(0x0f); // video hardware - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_playch10) - MCFG_PALETTE_ADD("palette", 256) - MCFG_PALETTE_INIT_OWNER(playch10_state, playch10) + GFXDECODE(config, m_gfxdecode, "palette", gfx_playch10); + PALETTE(config, "palette", 256).set_init(FUNC(playch10_state::palette_init_playch10)); config.set_default_layout(layout_playch10); - MCFG_SCREEN_ADD("top", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(playch10_state, screen_update_playch10_top) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, playch10_state, vblank_irq)) + screen_device &top(SCREEN(config, "top", SCREEN_TYPE_RASTER)); + top.set_refresh_hz(60); + top.set_size(32*8, 262); + top.set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + top.set_screen_update(FUNC(playch10_state::screen_update_playch10_top)); + top.screen_vblank().set(FUNC(playch10_state::vblank_irq)); - MCFG_SCREEN_ADD("bottom", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(playch10_state, screen_update_playch10_bottom) + screen_device &bottom(SCREEN(config, "bottom", SCREEN_TYPE_RASTER)); + bottom.set_refresh_hz(60); + bottom.set_size(32*8, 262); + bottom.set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + bottom.set_screen_update(FUNC(playch10_state::screen_update_playch10_bottom)); PPU_2C03B(config, m_ppu, 0); m_ppu->set_screen("bottom"); @@ -696,7 +696,7 @@ MACHINE_CONFIG_START(playch10_state::playch10) SPEAKER(config, "mono").front_center(); RP5H01(config, m_rp5h01, 0); -MACHINE_CONFIG_END +} void playch10_state::playchnv(machine_config &config) { @@ -704,11 +704,12 @@ void playch10_state::playchnv(machine_config &config) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); } -MACHINE_CONFIG_START(playch10_state::playch10_hboard) +void playch10_state::playch10_hboard(machine_config &config) +{ playch10(config); MCFG_VIDEO_START_OVERRIDE(playch10_state,playch10_hboard) MCFG_MACHINE_START_OVERRIDE(playch10_state,playch10_hboard) -MACHINE_CONFIG_END +} /*************************************************************************** diff --git a/src/mame/drivers/safarir.cpp b/src/mame/drivers/safarir.cpp index 16f03d73f77..f8b8a58498b 100644 --- a/src/mame/drivers/safarir.cpp +++ b/src/mame/drivers/safarir.cpp @@ -306,13 +306,14 @@ static const char *const safarir_sample_names[] = }; -MACHINE_CONFIG_START(safarir_state::safarir_audio) +void safarir_state::safarir_audio(machine_config &config) +{ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(safarir_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(safarir_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} @@ -406,28 +407,27 @@ INPUT_PORTS_END * *************************************/ -MACHINE_CONFIG_START(safarir_state::safarir) - +void safarir_state::safarir(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(18'000'000)/12) /* 1.5 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(main_map) + I8080A(config, m_maincpu, XTAL(18'000'000)/12); /* 1.5 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &safarir_state::main_map); /* video hardware */ - MCFG_PALETTE_ADD("palette", 2*8) - MCFG_PALETTE_INIT_OWNER(safarir_state, safarir) + PALETTE(config, "palette", 2*8).set_init(FUNC(safarir_state::palette_init_safarir)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_safarir) + GFXDECODE(config, m_gfxdecode, "palette", gfx_safarir); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 26*8-1) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_UPDATE_DRIVER(safarir_state, screen_update_safarir) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 0*8, 26*8-1); + screen.set_refresh_hz(60); + screen.set_screen_update(FUNC(safarir_state::screen_update_safarir)); + screen.set_palette("palette"); /* audio hardware */ safarir_audio(config); -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/segag80v.cpp b/src/mame/drivers/segag80v.cpp index 9e085848812..9fc7e572b84 100644 --- a/src/mame/drivers/segag80v.cpp +++ b/src/mame/drivers/segag80v.cpp @@ -892,70 +892,68 @@ static const char *const zektor_sample_names[] = * *************************************/ -MACHINE_CONFIG_START(segag80v_state::g80v_base) - +void segag80v_state::g80v_base(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, VIDEO_CLOCK/4) - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_DEVICE_OPCODES_MAP(opcodes_map) - MCFG_DEVICE_IO_MAP(main_portmap) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segag80v_state, irq0_line_hold) - + Z80(config, m_maincpu, VIDEO_CLOCK/4); + m_maincpu->set_addrmap(AS_PROGRAM, &segag80v_state::main_map); + m_maincpu->set_addrmap(AS_OPCODES, &segag80v_state::opcodes_map); + m_maincpu->set_addrmap(AS_IO, &segag80v_state::main_portmap); + m_maincpu->set_vblank_int("screen", FUNC(segag80v_state::irq0_line_hold)); /* video hardware */ + SCREEN(config, m_screen, SCREEN_TYPE_VECTOR); + m_screen->set_refresh_hz(40); + m_screen->set_size(400, 300); + m_screen->set_visarea(512, 1536, 640-32, 1408+32); + m_screen->set_screen_update(FUNC(segag80v_state::screen_update_segag80v)); - MCFG_SCREEN_ADD("screen", VECTOR) - MCFG_SCREEN_REFRESH_RATE(40) - MCFG_SCREEN_SIZE(400, 300) - MCFG_SCREEN_VISIBLE_AREA(512, 1536, 640-32, 1408+32) - MCFG_SCREEN_UPDATE_DRIVER(segag80v_state, screen_update_segag80v) - - MCFG_VECTOR_ADD("vector") + VECTOR(config, m_vector); /* sound hardware */ SPEAKER(config, "speaker").front_center(); -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(segag80v_state::elim2) +void segag80v_state::elim2(machine_config &config) +{ g80v_base(config); /* custom sound board */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(elim_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END - + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(elim_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 1.0); +} -MACHINE_CONFIG_START(segag80v_state::spacfury) +void segag80v_state::spacfury(machine_config &config) +{ g80v_base(config); /* custom sound board */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(spacfury_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(spacfury_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.1); /* speech board */ sega_speech_board(config); -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(segag80v_state::zektor) +void segag80v_state::zektor(machine_config &config) +{ g80v_base(config); /* custom sound board */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(8) - MCFG_SAMPLES_NAMES(zektor_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) + SAMPLES(config, m_samples); + m_samples->set_channels(8); + m_samples->set_samples_names(zektor_sample_names); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.1); AY8912(config, m_aysnd, VIDEO_CLOCK/4/2).add_route(ALL_OUTPUTS, "speaker", 0.33); /* speech board */ sega_speech_board(config); -MACHINE_CONFIG_END +} void segag80v_state::tacscan(machine_config &config) diff --git a/src/mame/drivers/starcrus.cpp b/src/mame/drivers/starcrus.cpp index a9783f9369a..92fbcc08d20 100644 --- a/src/mame/drivers/starcrus.cpp +++ b/src/mame/drivers/starcrus.cpp @@ -140,35 +140,35 @@ static const char *const starcrus_sample_names[] = }; -MACHINE_CONFIG_START(starcrus_state::starcrus) - +void starcrus_state::starcrus(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8080,9750000/9) /* 8224 chip is a divide by 9 */ - MCFG_DEVICE_PROGRAM_MAP(starcrus_map) - MCFG_DEVICE_IO_MAP(starcrus_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", starcrus_state, irq0_line_hold) + I8080(config, m_maincpu, 9750000/9); /* 8224 chip is a divide by 9 */ + m_maincpu->set_addrmap(AS_PROGRAM, &starcrus_state::starcrus_map); + m_maincpu->set_addrmap(AS_IO, &starcrus_state::starcrus_io_map); + m_maincpu->set_vblank_int("screen", FUNC(starcrus_state::irq0_line_hold)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(57) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(starcrus_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(57); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1); + screen.set_screen_update(FUNC(starcrus_state::screen_update)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_starcrus) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_starcrus); - MCFG_PALETTE_ADD_MONOCHROME("palette") + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(starcrus_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(starcrus_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/starfire.cpp b/src/mame/drivers/starfire.cpp index 45c08749097..18175becd56 100644 --- a/src/mame/drivers/starfire.cpp +++ b/src/mame/drivers/starfire.cpp @@ -327,34 +327,31 @@ INTERRUPT_GEN_MEMBER(starfire_state::vblank_int) device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero); } - -MACHINE_CONFIG_START(starfire_state::fireone) - +void starfire_state::fireone(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, STARFIRE_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", starfire_state, vblank_int) + Z80(config, m_maincpu, STARFIRE_CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &starfire_state::main_map); + m_maincpu->set_vblank_int("screen", FUNC(starfire_state::vblank_int)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(STARFIRE_PIXEL_CLOCK, STARFIRE_HTOTAL, STARFIRE_HBEND, STARFIRE_HBSTART, STARFIRE_VTOTAL, STARFIRE_VBEND, STARFIRE_VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(starfire_state, screen_update_starfire) - - /* sound hardware */ -MACHINE_CONFIG_END - + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(STARFIRE_PIXEL_CLOCK, STARFIRE_HTOTAL, STARFIRE_HBEND, STARFIRE_HBSTART, STARFIRE_VTOTAL, STARFIRE_VBEND, STARFIRE_VBSTART); + m_screen->set_screen_update(FUNC(starfire_state::screen_update_starfire)); +} -MACHINE_CONFIG_START(starfire_state::starfire) +void starfire_state::starfire(machine_config &config) +{ fireone(config); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(5) - MCFG_SAMPLES_NAMES(starfire_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(5); + m_samples->set_samples_names(starfire_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); +} diff --git a/src/mame/drivers/suna8.cpp b/src/mame/drivers/suna8.cpp index 094efe0296b..cee556043a0 100644 --- a/src/mame/drivers/suna8.cpp +++ b/src/mame/drivers/suna8.cpp @@ -1876,33 +1876,33 @@ GFXDECODE_END /* 1 x 24 MHz crystal */ -MACHINE_CONFIG_START(suna8_state::hardhead) - +void suna8_state::hardhead(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(hardhead_map) - MCFG_DEVICE_IO_MAP(hardhead_io_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", suna8_state, irq0_line_hold) /* No NMI */ + Z80(config, m_maincpu, SUNA8_MASTER_CLOCK / 4); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &suna8_state::hardhead_map); + m_maincpu->set_addrmap(AS_IO, &suna8_state::hardhead_io_map); + m_maincpu->set_addrmap(AS_OPCODES, &suna8_state::decrypted_opcodes_map); + m_maincpu->set_vblank_int("screen", FUNC(suna8_state::irq0_line_hold)); /* No NMI */ - MCFG_DEVICE_ADD("audiocpu", Z80, SUNA8_MASTER_CLOCK / 8) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(hardhead_sound_map) - MCFG_DEVICE_IO_MAP(hardhead_sound_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(suna8_state, irq0_line_hold, 4*60) /* No NMI */ + Z80(config, m_audiocpu, SUNA8_MASTER_CLOCK / 8); /* verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &suna8_state::hardhead_sound_map); + m_audiocpu->set_addrmap(AS_IO, &suna8_state::hardhead_sound_io_map); + m_audiocpu->set_periodic_int(FUNC(suna8_state::irq0_line_hold), attotime::from_hz(4*60)); /* No NMI */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.10) /* verified on pcb */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1) - MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_suna8) - MCFG_PALETTE_ADD("palette", 256) - MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(59.10); /* verified on pcb */ + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(256, 256); + m_screen->set_visarea(0, 256-1, 0+16, 256-16-1); + m_screen->set_screen_update(FUNC(suna8_state::screen_update_suna8)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_suna8); + PALETTE(config, m_palette, 256); + m_palette->set_format(PALETTE_FORMAT_RRRRGGGGBBBBxxxx); + m_palette->set_endianness(ENDIANNESS_BIG); MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_text) @@ -1912,19 +1912,18 @@ MACHINE_CONFIG_START(suna8_state::hardhead) GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch2); - MCFG_DEVICE_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8) /* verified on pcb */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + YM3812(config, "ymsnd", SUNA8_MASTER_CLOCK / 8).add_route(ALL_OUTPUTS, "speaker", 1.0); /* clock verified on pcb */ - ay8910_device &aysnd(AY8910(config, "aysnd", SUNA8_MASTER_CLOCK / 16)); /* verified on pcb */ + ay8910_device &aysnd(AY8910(config, "aysnd", SUNA8_MASTER_CLOCK / 16)); /* clock verified on pcb */ aysnd.port_a_write_callback().set(FUNC(suna8_state::suna8_play_samples_w)); aysnd.port_b_write_callback().set(FUNC(suna8_state::suna8_samples_number_w)); aysnd.add_route(ALL_OUTPUTS, "speaker", 0.3); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_START_CB(suna8_state, sh_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_start_callback(FUNC(suna8_state::sh_start)); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.5); +} /*************************************************************************** @@ -1934,34 +1933,33 @@ MACHINE_CONFIG_END /* 1 x 24 MHz crystal */ /* 2203 + 8910 */ -MACHINE_CONFIG_START(suna8_state::rranger) - +void suna8_state::rranger(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(rranger_map) - MCFG_DEVICE_IO_MAP(rranger_io_map) -// MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", suna8_state, irq0_line_hold) /* IRQ & NMI ! */ + Z80(config, m_maincpu, SUNA8_MASTER_CLOCK / 4); /* ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &suna8_state::rranger_map); + m_maincpu->set_addrmap(AS_IO, &suna8_state::rranger_io_map); + m_maincpu->set_vblank_int("screen", FUNC(suna8_state::irq0_line_hold)); /* IRQ & NMI ! */ - MCFG_DEVICE_ADD("audiocpu", Z80, SUNA8_MASTER_CLOCK / 8) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(rranger_sound_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(suna8_state, irq0_line_hold, 4*60) /* NMI = retn */ + Z80(config, m_audiocpu, SUNA8_MASTER_CLOCK / 8); /* clock verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &suna8_state::rranger_sound_map); + m_audiocpu->set_periodic_int(FUNC(suna8_state::irq0_line_hold), attotime::from_hz(4*60)); /* NMI = retn */ WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.1) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1) - MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_suna8) - MCFG_PALETTE_ADD("palette", 256) - MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(59.1); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(256, 256); + m_screen->set_visarea(0, 256-1, 0+16, 256-16-1); + m_screen->set_screen_update(FUNC(suna8_state::screen_update_suna8)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_suna8); + PALETTE(config, m_palette, 256); + m_palette->set_format(PALETTE_FORMAT_RRRRGGGGBBBBxxxx); + m_palette->set_endianness(ENDIANNESS_BIG); MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_text) @@ -1978,11 +1976,11 @@ MACHINE_CONFIG_START(suna8_state::rranger) YM2203(config, "ym2", SUNA8_MASTER_CLOCK / 16).add_route(ALL_OUTPUTS, "speaker", 0.9); /* verified on pcb */ - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_START_CB(suna8_state, sh_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_start_callback(FUNC(suna8_state::sh_start)); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.5); +} /*************************************************************************** @@ -2001,35 +1999,35 @@ MACHINE_RESET_MEMBER(suna8_state,brickzn) m_bank1d->set_entry(0); } -MACHINE_CONFIG_START(suna8_state::brickzn11) - +void suna8_state::brickzn11(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* SUNA PROTECTION BLOCK */ - MCFG_DEVICE_PROGRAM_MAP(brickzn11_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", suna8_state, irq0_line_hold) // nmi breaks ramtest but is needed! + Z80(config, m_maincpu, SUNA8_MASTER_CLOCK / 4); /* SUNA PROTECTION BLOCK */ + m_maincpu->set_addrmap(AS_PROGRAM, &suna8_state::brickzn11_map); + m_maincpu->set_vblank_int("screen", FUNC(suna8_state::irq0_line_hold)); // nmi breaks ramtest but is needed! - MCFG_DEVICE_ADD("audiocpu", Z80, SUNA8_MASTER_CLOCK / 4) /* Z0840006PSC - 6MHz (measured) */ - MCFG_DEVICE_PROGRAM_MAP(brickzn_sound_map) + Z80(config, m_audiocpu, SUNA8_MASTER_CLOCK / 4); /* Z0840006PSC - 6MHz (measured) */ + m_audiocpu->set_addrmap(AS_PROGRAM, &suna8_state::brickzn_sound_map); - MCFG_DEVICE_ADD("pcm", Z80, SUNA8_MASTER_CLOCK / 4) /* Z0840006PSC - 6MHz (measured) */ - MCFG_DEVICE_PROGRAM_MAP(brickzn_pcm_map) - MCFG_DEVICE_IO_MAP(brickzn_pcm_io_map) + z80_device &pcm(Z80(config, "pcm", SUNA8_MASTER_CLOCK / 4)); /* Z0840006PSC - 6MHz (measured) */ + pcm.set_addrmap(AS_PROGRAM, &suna8_state::brickzn_pcm_map); + pcm.set_addrmap(AS_IO, &suna8_state::brickzn_pcm_io_map); MCFG_MACHINE_RESET_OVERRIDE(suna8_state, brickzn ) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using PORT_VBLANK - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1) - MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_suna8) - MCFG_PALETTE_ADD("palette", 256 * 2) // 2 x Palette RAM - MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK + m_screen->set_size(256, 256); + m_screen->set_visarea(0, 256-1, 0+16, 256-16-1); + m_screen->set_screen_update(FUNC(suna8_state::screen_update_suna8)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_suna8); + PALETTE(config, m_palette, 256 * 2); // 2 x Palette RAM + m_palette->set_format(PALETTE_FORMAT_RRRRGGGGBBBBxxxx); + m_palette->set_endianness(ENDIANNESS_BIG); MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_brickzn) @@ -2039,30 +2037,35 @@ MACHINE_CONFIG_START(suna8_state::brickzn11) GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch2); - MCFG_DEVICE_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8) // 3MHz (measured) - MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + ym3812_device &ymsnd(YM3812(config, "ymsnd", SUNA8_MASTER_CLOCK / 8)); // 3MHz (measured) + ymsnd.irq_handler().set_inputline("audiocpu", 0); + ymsnd.add_route(ALL_OUTPUTS, "speaker", 1.0); AY8910(config, "aysnd", SUNA8_MASTER_CLOCK / 16).add_route(ALL_OUTPUTS, "speaker", 0.33); // 1.5MHz (measured) - MCFG_DEVICE_ADD("ldac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.17) // unknown DAC - MCFG_DEVICE_ADD("rdac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.17) // unknown DAC - MCFG_DEVICE_ADD("ldac2", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.17) // unknown DAC - MCFG_DEVICE_ADD("rdac2", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.17) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE(0, "ldac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac2", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE(0, "rdac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac2", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(suna8_state::brickzn) + DAC_4BIT_R2R(config, "ldac", 0).add_route(ALL_OUTPUTS, "speaker", 0.17); // unknown DAC + DAC_4BIT_R2R(config, "rdac", 0).add_route(ALL_OUTPUTS, "speaker", 0.17); // unknown DAC + DAC_4BIT_R2R(config, "ldac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.17); // unknown DAC + DAC_4BIT_R2R(config, "rdac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.17); // unknown DAC + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT); + vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT); + vref.add_route(0, "ldac2", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "ldac2", -1.0, DAC_VREF_NEG_INPUT); + vref.add_route(0, "rdac2", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "rdac2", -1.0, DAC_VREF_NEG_INPUT); +} + +void suna8_state::brickzn(machine_config &config) +{ brickzn11(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(brickzn_map) - MCFG_DEVICE_IO_MAP(brickzn_io_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &suna8_state::brickzn_map); + m_maincpu->set_addrmap(AS_IO, &suna8_state::brickzn_io_map); + m_maincpu->set_addrmap(AS_OPCODES, &suna8_state::decrypted_opcodes_map); +} /*************************************************************************** @@ -2087,62 +2090,59 @@ MACHINE_RESET_MEMBER(suna8_state,hardhea2) hardhea2_rambank_0_w(space,0,0); } -MACHINE_CONFIG_START(suna8_state::hardhea2) +void suna8_state::hardhea2(machine_config &config) +{ brickzn(config); - MCFG_DEVICE_REMOVE("maincpu") - - MCFG_DEVICE_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* SUNA T568009 */ - MCFG_DEVICE_PROGRAM_MAP(hardhea2_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", suna8_state, hardhea2_interrupt, "screen", 0, 1) + Z80(config.replace(), m_maincpu, SUNA8_MASTER_CLOCK / 4); /* SUNA T568009 */ + m_maincpu->set_addrmap(AS_PROGRAM, &suna8_state::hardhea2_map); + m_maincpu->set_addrmap(AS_OPCODES, &suna8_state::decrypted_opcodes_map); + TIMER(config, "scantimer").configure_scanline(FUNC(suna8_state::hardhea2_interrupt), "screen", 0, 1); MCFG_MACHINE_RESET_OVERRIDE(suna8_state,hardhea2) - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(256) - MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) -MACHINE_CONFIG_END + m_palette->set_entries(256); + m_palette->set_format(PALETTE_FORMAT_RRRRGGGGBBBBxxxx); + m_palette->set_endianness(ENDIANNESS_BIG); +} -MACHINE_CONFIG_START(suna8_state::hardhea2b) +void suna8_state::hardhea2b(machine_config &config) +{ hardhea2(config); - MCFG_DEVICE_REMOVE("maincpu") - - MCFG_DEVICE_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) //bootleg clock not verified (?) - MCFG_DEVICE_PROGRAM_MAP(hardhea2_map) -MACHINE_CONFIG_END + Z80(config.replace(), m_maincpu, SUNA8_MASTER_CLOCK / 4); //bootleg clock not verified (?) + m_maincpu->set_addrmap(AS_PROGRAM, &suna8_state::hardhea2_map); +} /*************************************************************************** Star Fighter ***************************************************************************/ -MACHINE_CONFIG_START(suna8_state::starfigh) - +void suna8_state::starfigh(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(starfigh_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", suna8_state, hardhea2_interrupt, "screen", 0, 1) + Z80(config, m_maincpu, SUNA8_MASTER_CLOCK / 4); /* ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &suna8_state::starfigh_map); + m_maincpu->set_addrmap(AS_OPCODES, &suna8_state::decrypted_opcodes_map); + TIMER(config, "scantimer").configure_scanline(FUNC(suna8_state::hardhea2_interrupt), "screen", 0, 1); /* The sound section is identical to that of hardhead */ - MCFG_DEVICE_ADD("audiocpu", Z80, SUNA8_MASTER_CLOCK / 4) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(hardhead_sound_map) - MCFG_DEVICE_IO_MAP(hardhead_sound_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(suna8_state, irq0_line_hold, 4*60) /* No NMI */ + Z80(config, m_audiocpu, SUNA8_MASTER_CLOCK / 4); /* ? */ + m_audiocpu->set_addrmap(AS_PROGRAM, &suna8_state::hardhead_sound_map); + m_audiocpu->set_addrmap(AS_IO, &suna8_state::hardhead_sound_io_map); + m_audiocpu->set_periodic_int(FUNC(suna8_state::irq0_line_hold), attotime::from_hz(4*60)); /* No NMI */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1) - MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_suna8) - MCFG_PALETTE_ADD("palette", 256) - MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + m_screen->set_size(256, 256); + m_screen->set_visarea(0, 256-1, 0+16, 256-16-1); + m_screen->set_screen_update(FUNC(suna8_state::screen_update_suna8)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_suna8); + PALETTE(config, m_palette, 256); + m_palette->set_format(PALETTE_FORMAT_RRRRGGGGBBBBxxxx); + m_palette->set_endianness(ENDIANNESS_BIG); MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_starfigh) @@ -2152,51 +2152,50 @@ MACHINE_CONFIG_START(suna8_state::starfigh) GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch2); - MCFG_DEVICE_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + YM3812(config, "ymsnd", SUNA8_MASTER_CLOCK / 8).add_route(ALL_OUTPUTS, "speaker", 1.0); ay8910_device &aysnd(AY8910(config, "aysnd", SUNA8_MASTER_CLOCK / 16)); aysnd.port_a_write_callback().set(FUNC(suna8_state::suna8_play_samples_w)); aysnd.port_b_write_callback().set(FUNC(suna8_state::suna8_samples_number_w)); aysnd.add_route(ALL_OUTPUTS, "speaker", 0.5); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_START_CB(suna8_state, sh_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_start_callback(FUNC(suna8_state::sh_start)); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.5); +} /*************************************************************************** Spark Man ***************************************************************************/ -MACHINE_CONFIG_START(suna8_state::sparkman) - +void suna8_state::sparkman(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(sparkman_map) - MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", suna8_state, hardhea2_interrupt, "screen", 0, 1) + Z80(config, m_maincpu, SUNA8_MASTER_CLOCK / 4); /* ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &suna8_state::sparkman_map); + m_maincpu->set_addrmap(AS_OPCODES, &suna8_state::decrypted_opcodes_map); + TIMER(config, "scantimer").configure_scanline(FUNC(suna8_state::hardhea2_interrupt), "screen", 0, 1); - MCFG_DEVICE_ADD("audiocpu", Z80, SUNA8_MASTER_CLOCK / 4) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(hardhead_sound_map) - MCFG_DEVICE_IO_MAP(hardhead_sound_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(suna8_state, irq0_line_hold, 4*60) /* No NMI */ + Z80(config, m_audiocpu, SUNA8_MASTER_CLOCK / 4); /* ? */ + m_audiocpu->set_addrmap(AS_PROGRAM, &suna8_state::hardhead_sound_map); + m_audiocpu->set_addrmap(AS_IO, &suna8_state::hardhead_sound_io_map); + m_audiocpu->set_periodic_int(FUNC(suna8_state::irq0_line_hold), attotime::from_hz(4*60)); /* No NMI */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1) - MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_suna8_x2) // 2 sprite "chips" - MCFG_PALETTE_ADD("palette", 512) - MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(256, 256); + m_screen->set_visarea(0, 256-1, 0+16, 256-16-1); + m_screen->set_screen_update(FUNC(suna8_state::screen_update_suna8)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_suna8_x2); // 2 sprite "chips" + PALETTE(config, m_palette, 512); + m_palette->set_format(PALETTE_FORMAT_RRRRGGGGBBBBxxxx); + m_palette->set_endianness(ENDIANNESS_BIG); MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_sparkman) @@ -2206,19 +2205,18 @@ MACHINE_CONFIG_START(suna8_state::sparkman) GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch2); - MCFG_DEVICE_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + YM3812(config, "ymsnd", SUNA8_MASTER_CLOCK / 8).add_route(ALL_OUTPUTS, "speaker", 1.0); ay8910_device &aysnd(AY8910(config, "aysnd", SUNA8_MASTER_CLOCK / 16)); aysnd.port_a_write_callback().set(FUNC(suna8_state::suna8_play_samples_w)); // two sample roms aysnd.port_b_write_callback().set(FUNC(suna8_state::suna8_samples_number_w)); aysnd.add_route(ALL_OUTPUTS, "speaker", 0.3); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_START_CB(suna8_state, sh_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_start_callback(FUNC(suna8_state::sh_start)); + m_samples->add_route(ALL_OUTPUTS, "speaker", 0.5); +} /*************************************************************************** diff --git a/src/mame/drivers/super80.cpp b/src/mame/drivers/super80.cpp index 53436a64941..3ea65b8d3f4 100644 --- a/src/mame/drivers/super80.cpp +++ b/src/mame/drivers/super80.cpp @@ -705,7 +705,8 @@ static const char *const relay_sample_names[] = }; -MACHINE_CONFIG_START(super80_state::super80) +void super80_state::super80(machine_config &config) +{ /* basic machine hardware */ Z80(config, m_maincpu, MASTER_CLOCK/6); /* 2 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &super80_state::super80_map); @@ -719,81 +720,81 @@ MACHINE_CONFIG_START(super80_state::super80) m_pio->out_pa_callback().set(FUNC(super80_state::pio_port_a_w)); m_pio->in_pb_callback().set(FUNC(super80_state::pio_port_b_r)); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(48.8) - MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) - MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(48.8); + m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); + m_screen->set_screen_update(FUNC(super80_state::screen_update_super80)); + m_screen->set_palette(m_palette); - MCFG_PALETTE_ADD("palette", 32) - MCFG_PALETTE_INIT_OWNER(super80_state,super80m) + PALETTE(config, m_palette, 32).set_init(FUNC(super80_state::palette_init_super80m)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_super80) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_super80); config.set_default_layout(layout_super80); MCFG_VIDEO_START_OVERRIDE(super80_state,super80) /* sound hardware */ SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05); - SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(relay_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.05); + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(relay_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); /* printer */ - MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit7)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit7)); - MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") + output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out")); + m_centronics->set_output_latch(cent_data_out); - MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0) + INPUT_BUFFER(config, "cent_status_in", 0); /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", super80_state, super80, "bin", 3) + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(super80_state, super80), this), "bin", 3); /* cassette */ - MCFG_CASSETTE_ADD( "cassette" ) - MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) - MCFG_CASSETTE_INTERFACE("super80_cass") + CASSETTE(config, m_cassette); + m_cassette->set_default_state((cassette_state)(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)); + m_cassette->set_interface("super80_cass"); - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", super80_state, timer_p, attotime::from_hz(40000)) // cass read - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_k", super80_state, timer_k, attotime::from_hz(300)) // keyb scan - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_h", super80_state, timer_h, attotime::from_hz(100)) // half-speed + TIMER(config, "timer_p").configure_periodic(FUNC(super80_state::timer_p), attotime::from_hz(40000)); // cass read + TIMER(config, "timer_k").configure_periodic(FUNC(super80_state::timer_k), attotime::from_hz(300)); // keyb scan + TIMER(config, "timer_h").configure_periodic(FUNC(super80_state::timer_h), attotime::from_hz(100)); // half-speed // software list SOFTWARE_LIST(config, "cass_list").set_original("super80_cass").set_filter("DEF"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(super80_state::super80d) +void super80_state::super80d(machine_config &config) +{ super80(config); - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_super80d) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80d) -MACHINE_CONFIG_END + m_gfxdecode->set_info(gfx_super80d); + m_screen->set_screen_update(FUNC(super80_state::screen_update_super80d)); +} -MACHINE_CONFIG_START(super80_state::super80e) +void super80_state::super80e(machine_config &config) +{ super80(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(super80e_io) - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_super80e) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80e) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(super80_state::super80m) + m_maincpu->set_addrmap(AS_IO, &super80_state::super80e_io); + m_gfxdecode->set_info(gfx_super80e); + m_screen->set_screen_update(FUNC(super80_state::screen_update_super80e)); +} + +void super80_state::super80m(machine_config &config) +{ super80(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(super80m_map) + m_maincpu->set_addrmap(AS_PROGRAM, &super80_state::super80m_map); - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_super80m) + m_gfxdecode->set_info(gfx_super80m); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80m) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, super80_state, screen_vblank_super80m)) -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(super80_state::screen_update_super80m)); + m_screen->screen_vblank().set(FUNC(super80_state::screen_vblank_super80m)); +} -MACHINE_CONFIG_START(super80_state::super80v) +void super80_state::super80v(machine_config &config) +{ /* basic machine hardware */ Z80(config, m_maincpu, MASTER_CLOCK/6); /* 2 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &super80_state::super80v_map); @@ -807,15 +808,14 @@ MACHINE_CONFIG_START(super80_state::super80v) m_pio->out_pa_callback().set(FUNC(super80_state::pio_port_a_w)); m_pio->in_pb_callback().set(FUNC(super80_state::pio_port_b_r)); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_SIZE(SUPER80V_SCREEN_WIDTH, SUPER80V_SCREEN_HEIGHT) - MCFG_SCREEN_VISIBLE_AREA(0, SUPER80V_SCREEN_WIDTH-1, 0, SUPER80V_SCREEN_HEIGHT-1) - MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80v) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, super80_state, screen_vblank_super80m)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(50); + m_screen->set_size(SUPER80V_SCREEN_WIDTH, SUPER80V_SCREEN_HEIGHT); + m_screen->set_visarea(0, SUPER80V_SCREEN_WIDTH-1, 0, SUPER80V_SCREEN_HEIGHT-1); + m_screen->set_screen_update(FUNC(super80_state::screen_update_super80v)); + m_screen->screen_vblank().set(FUNC(super80_state::screen_vblank_super80m)); - MCFG_PALETTE_ADD("palette", 32) - MCFG_PALETTE_INIT_OWNER(super80_state,super80m) + PALETTE(config, m_palette, 32).set_init(FUNC(super80_state::palette_init_super80m)); MC6845(config, m_crtc, MASTER_CLOCK / SUPER80V_DOTS); m_crtc->set_screen("screen"); @@ -823,45 +823,47 @@ MACHINE_CONFIG_START(super80_state::super80v) m_crtc->set_char_width(SUPER80V_DOTS); m_crtc->set_update_row_callback(FUNC(super80_state::crtc_update_row), this); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_super80v) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_super80v); config.set_default_layout(layout_super80); /* sound hardware */ SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05); - SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_NAMES(relay_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.05); + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_names(relay_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); /* printer */ - MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit7)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit7)); - MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") + output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out")); + m_centronics->set_output_latch(cent_data_out); - MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0) + INPUT_BUFFER(config, "cent_status_in", 0); /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", super80_state, super80, "bin", 3) + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(super80_state, super80), this), "bin", 3); /* cassette */ - MCFG_CASSETTE_ADD( "cassette" ) - MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) - MCFG_CASSETTE_INTERFACE("super80_cass") + CASSETTE(config, m_cassette); + m_cassette->set_default_state((cassette_state)(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)); + m_cassette->set_interface("super80_cass"); - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", super80_state, timer_p, attotime::from_hz(40000)) // cass read - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_k", super80_state, timer_k, attotime::from_hz(300)) // keyb scan + TIMER(config, "timer_p").configure_periodic(FUNC(super80_state::timer_p), attotime::from_hz(40000)); // cass read + TIMER(config, "timer_k").configure_periodic(FUNC(super80_state::timer_k), attotime::from_hz(300)); // keyb scan // software list SOFTWARE_LIST(config, "cass_list").set_original("super80_cass").set_filter("V"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(super80_state::super80r) +void super80_state::super80r(machine_config &config) +{ super80v(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(super80r_io) + m_maincpu->set_addrmap(AS_IO, &super80_state::super80r_io); Z80DMA(config, m_dma, MASTER_CLOCK/6); m_dma->out_busreq_callback().set(FUNC(super80_state::busreq_w)); @@ -874,11 +876,9 @@ MACHINE_CONFIG_START(super80_state::super80r) WD2793(config, m_fdc, 2_MHz_XTAL); m_fdc->drq_wr_callback().set(m_dma, FUNC(z80dma_device::rdy_w)); - MCFG_FLOPPY_DRIVE_ADD("fdc:0", super80_floppies, "525dd", floppy_image_device::default_floppy_formats) - MCFG_FLOPPY_DRIVE_SOUND(true) - MCFG_FLOPPY_DRIVE_ADD("fdc:1", super80_floppies, "525dd", floppy_image_device::default_floppy_formats) - MCFG_FLOPPY_DRIVE_SOUND(true) -MACHINE_CONFIG_END + FLOPPY_CONNECTOR(config, "fdc:0", super80_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, "fdc:1", super80_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true); +} /**************************** ROMS *****************************************************************/ diff --git a/src/mame/drivers/tankbatt.cpp b/src/mame/drivers/tankbatt.cpp index eeb4e9d83c1..868efbe000e 100644 --- a/src/mame/drivers/tankbatt.cpp +++ b/src/mame/drivers/tankbatt.cpp @@ -269,12 +269,12 @@ static const char *const tankbatt_sample_names[] = }; -MACHINE_CONFIG_START(tankbatt_state::tankbatt) - +void tankbatt_state::tankbatt(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502, 1000000) /* 1 MHz ???? */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tankbatt_state, interrupt) + M6502(config, m_maincpu, 1000000); /* 1 MHz ???? */ + m_maincpu->set_addrmap(AS_PROGRAM, &tankbatt_state::main_map); + m_maincpu->set_vblank_int("screen", FUNC(tankbatt_state::interrupt)); cd4099_device &mainlatch(CD4099(config, "mainlatch")); // latches at 4H and 5H (are the empty 4J and 5J locations for LS259 substitution?) mainlatch.q_out_cb<0>().set_nop(); //coin counter mirror? @@ -292,27 +292,27 @@ MACHINE_CONFIG_START(tankbatt_state::tankbatt) outlatch.q_out_cb<3>().set(FUNC(tankbatt_state::coinlockout_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(tankbatt_state, screen_update) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tankbatt) - MCFG_PALETTE_ADD("palette", 256*2) - MCFG_PALETTE_INDIRECT_ENTRIES(256) - MCFG_PALETTE_INIT_OWNER(tankbatt_state, tankbatt) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tankbatt_state::screen_update)); + screen.set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_tankbatt); + PALETTE(config, m_palette, 256*2); + m_palette->set_indirect_entries(256); + m_palette->set_init(FUNC(tankbatt_state::palette_init_tankbatt)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(3) - MCFG_SAMPLES_NAMES(tankbatt_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(3); + m_samples->set_samples_names(tankbatt_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.25); +} diff --git a/src/mame/drivers/tattack.cpp b/src/mame/drivers/tattack.cpp index 90d922a2561..30cccbb4b30 100644 --- a/src/mame/drivers/tattack.cpp +++ b/src/mame/drivers/tattack.cpp @@ -405,38 +405,37 @@ static const char *const tattack_sample_names[] = nullptr }; -MACHINE_CONFIG_START(tattack_state::tattack) - +void tattack_state::tattack(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 8000000 / 2) /* 4 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(tattack_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tattack_state, irq0_line_hold) + Z80(config, m_maincpu, 8000000 / 2); /* 4 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &tattack_state::tattack_map); + m_maincpu->set_vblank_int("screen", FUNC(tattack_state::irq0_line_hold)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(24, 256-32-1, 13, 256-11-1) - MCFG_SCREEN_UPDATE_DRIVER(tattack_state, screen_update_tattack) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tattack) - MCFG_PALETTE_ADD("palette", 16) - MCFG_PALETTE_INIT_OWNER(tattack_state, tattack) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(32*8, 32*8); + screen.set_visarea(24, 256-32-1, 13, 256-11-1); + screen.set_screen_update(FUNC(tattack_state::screen_update_tattack)); + screen.set_palette("palette"); + + GFXDECODE(config, m_gfxdecode, "palette", gfx_tattack); + PALETTE(config, "palette", 16).set_init(FUNC(tattack_state::palette_init_tattack)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(4) - MCFG_SAMPLES_NAMES(tattack_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6) + SAMPLES(config, m_samples); + m_samples->set_channels(4); + m_samples->set_samples_names(tattack_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.6); /* Discrete ???? */ // MCFG_DEVICE_ADD("discrete", DISCRETE) // MCFG_DISCRETE_INTF(tattack) // MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END +} /*************************************************************************** diff --git a/src/mame/drivers/thief.cpp b/src/mame/drivers/thief.cpp index b1551c30e56..0353bbf278b 100644 --- a/src/mame/drivers/thief.cpp +++ b/src/mame/drivers/thief.cpp @@ -393,11 +393,12 @@ static const char *const natodef_sample_names[] = }; -MACHINE_CONFIG_START(thief_state::thief) - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(thief_main_map) - MCFG_DEVICE_IO_MAP(io_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(thief_state, iack) +void thief_state::thief(machine_config &config) +{ + Z80(config, m_maincpu, XTAL(8'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &thief_state::thief_main_map); + m_maincpu->set_addrmap(AS_IO, &thief_state::io_map); + m_maincpu->set_irq_acknowledge_callback(FUNC(thief_state::iack)); i8255_device &ppi(I8255A(config, "ppi")); ppi.out_pa_callback().set(FUNC(thief_state::thief_input_select_w)); @@ -405,16 +406,16 @@ MACHINE_CONFIG_START(thief_state::thief) ppi.out_pc_callback().set(FUNC(thief_state::tape_control_w)); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(20'000'000)/4, 320, 0, 256, 272, 0, 256) - MCFG_SCREEN_UPDATE_DRIVER(thief_state, screen_update_thief) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(20'000'000)/4, 320, 0, 256, 272, 0, 256); + m_screen->set_screen_update(FUNC(thief_state::screen_update_thief)); + m_screen->set_palette(m_palette); TMS9927(config, m_tms, XTAL(20'000'000)/4/8); m_tms->set_char_width(8); m_tms->vsyn_callback().set_inputline("maincpu", 0, ASSERT_LINE); - MCFG_PALETTE_ADD("palette", 16) + PALETTE(config, m_palette, 16); // sound hardware SPEAKER(config, "mono").front_center(); @@ -423,29 +424,27 @@ MACHINE_CONFIG_START(thief_state::thief) AY8910(config, "ay2", XTAL(8'000'000)/2/4).add_route(ALL_OUTPUTS, "mono", 0.50); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(2) - MCFG_SAMPLES_NAMES(thief_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(2); + m_samples->set_samples_names(thief_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); +} -MACHINE_CONFIG_START(thief_state::sharkatt) +void thief_state::sharkatt(machine_config &config) +{ thief(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(sharkatt_main_map) + m_maincpu->set_addrmap(AS_PROGRAM, &thief_state::sharkatt_main_map); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1) + m_screen->set_visarea(0*8, 32*8-1, 0*8, 24*8-1); - MCFG_DEVICE_MODIFY("samples") - MCFG_SAMPLES_NAMES(sharkatt_sample_names) -MACHINE_CONFIG_END + m_samples->set_samples_names(sharkatt_sample_names); +} -MACHINE_CONFIG_START(thief_state::natodef) +void thief_state::natodef(machine_config &config) +{ thief(config); - MCFG_DEVICE_MODIFY("samples") - MCFG_SAMPLES_NAMES(natodef_sample_names) -MACHINE_CONFIG_END + m_samples->set_samples_names(natodef_sample_names); +} /**********************************************************/ diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp index 00b69ab716b..4b2ed379859 100644 --- a/src/mame/drivers/tmnt.cpp +++ b/src/mame/drivers/tmnt.cpp @@ -1914,13 +1914,12 @@ MACHINE_RESET_MEMBER(tmnt_state,common) m_irq5_mask = 0; } - -MACHINE_CONFIG_START(tmnt_state::cuebrick) - +void tmnt_state::cuebrick(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 8000000) /* 8 MHz */ - MCFG_DEVICE_PROGRAM_MAP(cuebrick_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, tmnt_interrupt) + M68000(config, m_maincpu, 8000000); /* 8 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::cuebrick_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::tmnt_interrupt)); MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -1928,20 +1927,20 @@ MACHINE_CONFIG_START(tmnt_state::cuebrick) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_mia) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 1024) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_MEMBITS(8) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(13*8, (64-13)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_mia)); + screen.set_palette(m_palette); + + PALETTE(config, m_palette, 1024); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->set_membits(8); + m_palette->enable_shadows(); + m_palette->enable_hilights(); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -1964,18 +1963,17 @@ MACHINE_CONFIG_START(tmnt_state::cuebrick) ymsnd.irq_handler().set_inputline(m_maincpu, M68K_IRQ_6); ymsnd.add_route(0, "mono", 1.0); ymsnd.add_route(1, "mono", 1.0); -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(tmnt_state::mia) +} +void tmnt_state::mia(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/3) - MCFG_DEVICE_PROGRAM_MAP(mia_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, tmnt_interrupt) + M68000(config, m_maincpu, XTAL(24'000'000)/3); + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::mia_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::tmnt_interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) - MCFG_DEVICE_PROGRAM_MAP(mia_audio_map) + Z80(config, m_audiocpu, XTAL(3'579'545)); + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::mia_audio_map); MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -1983,19 +1981,19 @@ MACHINE_CONFIG_START(tmnt_state::mia) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_mia) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 1024) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_MEMBITS(8) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(13*8, (64-13)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_mia)); + screen.set_palette(m_palette); + + PALETTE(config, m_palette, 1024); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->set_membits(8); + m_palette->enable_shadows(); + m_palette->enable_hilights(); MCFG_VIDEO_START_OVERRIDE(tmnt_state,mia) @@ -2016,12 +2014,11 @@ MACHINE_CONFIG_START(tmnt_state::mia) YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "mono", 1.0).add_route(1, "mono", 1.0); - MCFG_DEVICE_ADD("k007232", K007232, XTAL(3'579'545)) - MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, tmnt_state, volume_callback)) - MCFG_SOUND_ROUTE(0, "mono", 0.20) - MCFG_SOUND_ROUTE(1, "mono", 0.20) -MACHINE_CONFIG_END - + K007232(config, m_k007232, XTAL(3'579'545)); + m_k007232->port_write().set(FUNC(tmnt_state::volume_callback)); + m_k007232->add_route(0, "mono", 0.20); + m_k007232->add_route(1, "mono", 0.20); +} MACHINE_RESET_MEMBER(tmnt_state,tmnt) { @@ -2030,15 +2027,15 @@ MACHINE_RESET_MEMBER(tmnt_state,tmnt) m_upd7759->reset_w(1); } -MACHINE_CONFIG_START(tmnt_state::tmnt) - +void tmnt_state::tmnt(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/3) - MCFG_DEVICE_PROGRAM_MAP(tmnt_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, tmnt_interrupt) + M68000(config, m_maincpu, XTAL(24'000'000)/3); + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::tmnt_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::tmnt_interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) - MCFG_DEVICE_PROGRAM_MAP(tmnt_audio_map) + Z80(config, m_audiocpu, XTAL(3'579'545)); + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::tmnt_audio_map); MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,tmnt) @@ -2046,20 +2043,20 @@ MACHINE_CONFIG_START(tmnt_state::tmnt) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 2*8, 30*8-1 ) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(12*8, (64-12)*8-1, 2*8, 30*8-1 ); // verified against real hardware - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt) - MCFG_SCREEN_PALETTE("palette") + screen.set_screen_update(FUNC(tmnt_state::screen_update_tmnt)); + screen.set_palette(m_palette); - MCFG_PALETTE_ADD("palette", 1024) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_MEMBITS(8) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + PALETTE(config, m_palette, 1024); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->set_membits(8); + m_palette->enable_shadows(); + m_palette->enable_hilights(); MCFG_VIDEO_START_OVERRIDE(tmnt_state,tmnt) @@ -2080,31 +2077,29 @@ MACHINE_CONFIG_START(tmnt_state::tmnt) YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "mono", 1.0).add_route(1, "mono", 1.0); - MCFG_DEVICE_ADD("k007232", K007232, XTAL(3'579'545)) - MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, tmnt_state, volume_callback)) - MCFG_SOUND_ROUTE(0, "mono", 0.33) - MCFG_SOUND_ROUTE(1, "mono", 0.33) - - MCFG_DEVICE_ADD("upd", UPD7759, XTAL(640'000)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) + K007232(config, m_k007232, XTAL(3'579'545)); + m_k007232->port_write().set(FUNC(tmnt_state::volume_callback)); + m_k007232->add_route(0, "mono", 0.33); + m_k007232->add_route(1, "mono", 0.33); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) /* 1 channel for the title music */ - MCFG_SAMPLES_START_CB(tmnt_state, tmnt_decode_sample) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + UPD7759(config, "upd", XTAL(640'000)).add_route(ALL_OUTPUTS, "mono", 0.60); + SAMPLES(config, m_samples); + m_samples->set_channels(1); /* 1 channel for the title music */ + m_samples->set_samples_start_callback(FUNC(tmnt_state::tmnt_decode_sample)); + m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(tmnt_state::punkshot) - +void tmnt_state::punkshot(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(punkshot_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, punkshot_interrupt) + M68000(config, m_maincpu, XTAL(24'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::punkshot_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::punkshot_interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) - MCFG_DEVICE_PROGRAM_MAP(punkshot_audio_map) - /* NMIs are generated by the 053260 */ + Z80(config, m_audiocpu, XTAL(3'579'545)); + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::punkshot_audio_map); + /* NMIs are generated by the 053260 */ MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -2112,19 +2107,19 @@ MACHINE_CONFIG_START(tmnt_state::punkshot) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_punkshot) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_punkshot)); + screen.set_palette(m_palette); + + PALETTE(config, m_palette, 2048); + 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); @@ -2142,20 +2137,19 @@ MACHINE_CONFIG_START(tmnt_state::punkshot) YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "mono", 1.0).add_route(1, "mono", 1.0); - MCFG_K053260_ADD("k053260", XTAL(3'579'545)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(tmnt_state::lgtnfght) + K053260(config, m_k053260, XTAL(3'579'545)); + m_k053260->add_route(ALL_OUTPUTS, "mono", 0.70); +} +void tmnt_state::lgtnfght(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(lgtnfght_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, lgtnfght_interrupt) + M68000(config, m_maincpu, XTAL(24'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::lgtnfght_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::lgtnfght_interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) - MCFG_DEVICE_PROGRAM_MAP(lgtnfght_audio_map) + Z80(config, m_audiocpu, XTAL(3'579'545)); + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::lgtnfght_audio_map); MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -2163,19 +2157,19 @@ MACHINE_CONFIG_START(tmnt_state::lgtnfght) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_lgtnfght) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(12*8, (64-12)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_lgtnfght)); + screen.set_palette(m_palette); + + PALETTE(config, m_palette, 2048); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->enable_shadows(); + m_palette->enable_hilights(); MCFG_VIDEO_START_OVERRIDE(tmnt_state,lgtnfght) @@ -2195,22 +2189,21 @@ MACHINE_CONFIG_START(tmnt_state::lgtnfght) YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); - MCFG_K053260_ADD("k053260", XTAL(3'579'545)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.70) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.70) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(tmnt_state::blswhstl) + K053260(config, m_k053260, XTAL(3'579'545)); + m_k053260->add_route(0, "lspeaker", 0.70); + m_k053260->add_route(1, "rspeaker", 0.70); +} +void tmnt_state::blswhstl(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) /* Confirmed */ - MCFG_DEVICE_PROGRAM_MAP(blswhstl_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, punkshot_interrupt) + M68000(config, m_maincpu, XTAL(32'000'000)/2); /* Confirmed */ + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::blswhstl_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::punkshot_interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) - MCFG_DEVICE_PROGRAM_MAP(ssriders_audio_map) - /* NMIs are generated by the 053260 */ + Z80(config, m_audiocpu, XTAL(3'579'545)); + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::ssriders_audio_map); + /* NMIs are generated by the 053260 */ MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -2220,22 +2213,22 @@ MACHINE_CONFIG_START(tmnt_state::blswhstl) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_lgtnfght) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tmnt_state, screen_vblank_blswhstl)) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() - - MCFG_VIDEO_START_OVERRIDE(tmnt_state, blswhstl ) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(12*8, (64-12)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_lgtnfght)); + screen.screen_vblank().set(FUNC(tmnt_state::screen_vblank_blswhstl)); + screen.set_palette(m_palette); + + PALETTE(config, m_palette, 2048); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->enable_shadows(); + m_palette->enable_hilights(); + + MCFG_VIDEO_START_OVERRIDE(tmnt_state, blswhstl) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); @@ -2255,10 +2248,10 @@ MACHINE_CONFIG_START(tmnt_state::blswhstl) YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 0.70).add_route(1, "rspeaker", 0.70); - MCFG_K053260_ADD("k053260", XTAL(3'579'545)) - MCFG_SOUND_ROUTE(0, "rspeaker", 0.50) /* fixed inverted stereo channels */ - MCFG_SOUND_ROUTE(1, "lspeaker", 0.50) -MACHINE_CONFIG_END + K053260(config, m_k053260, XTAL(3'579'545)); + m_k053260->add_route(0, "rspeaker", 0.50); /* fixed inverted stereo channels */ + m_k053260->add_route(1, "lspeaker", 0.50); +} @@ -2278,16 +2271,16 @@ static GFXDECODE_START( gfx_glfgreat ) GFXDECODE_ENTRY( "zoom", 0, zoomlayout, 0x400, 16 ) GFXDECODE_END -MACHINE_CONFIG_START(tmnt_state::glfgreat) - +void tmnt_state::glfgreat(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) /* Confirmed */ - MCFG_DEVICE_PROGRAM_MAP(glfgreat_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, lgtnfght_interrupt) + M68000(config, m_maincpu, XTAL(32'000'000)/2); /* Confirmed */ + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::glfgreat_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::lgtnfght_interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) - MCFG_DEVICE_PROGRAM_MAP(glfgreat_audio_map) - /* NMIs are generated by the 053260 */ + Z80(config, m_audiocpu, XTAL(3'579'545)); + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::glfgreat_audio_map); + /* NMIs are generated by the 053260 */ MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -2295,21 +2288,21 @@ MACHINE_CONFIG_START(tmnt_state::glfgreat) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_glfgreat) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_glfgreat) - - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_glfgreat)); + screen.set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_glfgreat); + + PALETTE(config, m_palette, 2048); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->enable_shadows(); + m_palette->enable_hilights(); MCFG_VIDEO_START_OVERRIDE(tmnt_state,glfgreat) @@ -2331,11 +2324,10 @@ MACHINE_CONFIG_START(tmnt_state::glfgreat) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_K053260_ADD("k053260", XTAL(3'579'545)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END - + K053260(config, m_k053260, XTAL(3'579'545)); + m_k053260->add_route(0, "lspeaker", 1.0); + m_k053260->add_route(1, "rspeaker", 1.0); +} MACHINE_START_MEMBER(tmnt_state,prmrsocr) { @@ -2344,16 +2336,16 @@ MACHINE_START_MEMBER(tmnt_state,prmrsocr) membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x4000); } -MACHINE_CONFIG_START(tmnt_state::prmrsocr) - +void tmnt_state::prmrsocr(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) /* Confirmed */ - MCFG_DEVICE_PROGRAM_MAP(prmrsocr_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, lgtnfght_interrupt) + M68000(config, m_maincpu, XTAL(32'000'000)/2); /* Confirmed */ + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::prmrsocr_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::lgtnfght_interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, 8000000) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(prmrsocr_audio_map) - /* NMIs are generated by the 054539 */ + Z80(config, m_audiocpu, 8000000); /* ? */ + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::prmrsocr_audio_map); + /* NMIs are generated by the 054539 */ MCFG_MACHINE_START_OVERRIDE(tmnt_state,prmrsocr) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -2363,21 +2355,21 @@ MACHINE_CONFIG_START(tmnt_state::prmrsocr) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_glfgreat) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_glfgreat) - - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_glfgreat)); + screen.set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_glfgreat); + + PALETTE(config, m_palette, 2048); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->enable_shadows(); + m_palette->enable_hilights(); MCFG_VIDEO_START_OVERRIDE(tmnt_state,prmrsocr) @@ -2402,27 +2394,25 @@ MACHINE_CONFIG_START(tmnt_state::prmrsocr) GENERIC_LATCH_8(config, "soundlatch2"); GENERIC_LATCH_8(config, "soundlatch3"); - MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000)) - MCFG_K054539_TIMER_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(tmnt_state::tmnt2) + K054539(config, m_k054539, XTAL(18'432'000)); + m_k054539->timer_handler().set_inputline("audiocpu", INPUT_LINE_NMI); + m_k054539->add_route(0, "lspeaker", 1.0); + m_k054539->add_route(1, "rspeaker", 1.0); +} +void tmnt_state::tmnt2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(tmnt2_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, punkshot_interrupt) - - MCFG_DEVICE_ADD("audiocpu", Z80, 8000000) /* 8 MHz; clock is correct, but there's 1 cycle wait for ROM/RAM */ - /* access. Access speed of ROM/RAM used on the machine is 150ns, */ - /* without the wait, they cannot run on 8MHz. */ - /* We are not emulating the wait state, so the ROM test ends at */ - /* 02 instead of 00. */ - MCFG_DEVICE_PROGRAM_MAP(ssriders_audio_map) - /* NMIs are generated by the 053260 */ + M68000(config, m_maincpu, XTAL(32'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::tmnt2_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::punkshot_interrupt)); + + Z80(config, m_audiocpu, 8000000); + /* 8 MHz; clock is correct, but there's 1 cycle wait for ROM/RAM access. */ + /* Access speed of ROM/RAM used on the machine is 150ns, without the wait, they cannot run on 8MHz. */ + /* We are not emulating the wait state, so the ROM test ends at 02 instead of 00. */ + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::ssriders_audio_map); + /* NMIs are generated by the 053260 */ MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -2432,19 +2422,19 @@ MACHINE_CONFIG_START(tmnt_state::tmnt2) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt2) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(13*8, (64-13)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_tmnt2)); + screen.set_palette(m_palette); + + PALETTE(config, m_palette, 2048); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->enable_shadows(); + m_palette->enable_hilights(); MCFG_VIDEO_START_OVERRIDE(tmnt_state,lgtnfght) @@ -2464,22 +2454,21 @@ MACHINE_CONFIG_START(tmnt_state::tmnt2) YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); - MCFG_K053260_ADD("k053260", XTAL(3'579'545)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(tmnt_state::ssriders) + K053260(config, m_k053260, XTAL(3'579'545)); + m_k053260->add_route(0, "lspeaker", 0.75); + m_k053260->add_route(1, "rspeaker", 0.75); +} +void tmnt_state::ssriders(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(ssriders_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, punkshot_interrupt) + M68000(config, m_maincpu, XTAL(32'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::ssriders_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::punkshot_interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, 8000000) - MCFG_DEVICE_PROGRAM_MAP(ssriders_audio_map) - /* NMIs are generated by the 053260 */ + Z80(config, m_audiocpu, 8000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::ssriders_audio_map); + /* NMIs are generated by the 053260 */ MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -2489,19 +2478,19 @@ MACHINE_CONFIG_START(tmnt_state::ssriders) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt2) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_tmnt2)); + screen.set_palette(m_palette); + + PALETTE(config, m_palette, 2048); + m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); + m_palette->enable_shadows(); + m_palette->enable_hilights(); MCFG_VIDEO_START_OVERRIDE(tmnt_state,lgtnfght) @@ -2521,18 +2510,17 @@ MACHINE_CONFIG_START(tmnt_state::ssriders) YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); - MCFG_K053260_ADD("k053260", XTAL(3'579'545)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.70) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.70) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(tmnt_state::sunsetbl) + K053260(config, m_k053260, XTAL(3'579'545)); + m_k053260->add_route(0, "lspeaker", 0.70); + m_k053260->add_route(1, "rspeaker", 0.70); +} +void tmnt_state::sunsetbl(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 16000000) /* 16 MHz */ - MCFG_DEVICE_PROGRAM_MAP(sunsetbl_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, irq4_line_hold) + M68000(config, m_maincpu, 16000000); + m_maincpu->set_addrmap(AS_PROGRAM, tmnt_state::sunsetbl_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::irq4_line_hold)); MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -2540,19 +2528,19 @@ MACHINE_CONFIG_START(tmnt_state::sunsetbl) EEPROM_ER5911_8BIT(config, "eeprom"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt2) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_tmnt2)); + screen.set_palette(m_palette); + + PALETTE(config, m_palette, 2048); + 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); @@ -2568,21 +2556,21 @@ MACHINE_CONFIG_START(tmnt_state::sunsetbl) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(tmnt_state::thndrx2) + okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified + oki.add_route(ALL_OUTPUTS, "lspeaker", 1.0); + oki.add_route(ALL_OUTPUTS, "rspeaker", 1.0); +} +void tmnt_state::thndrx2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* 12 MHz */ - MCFG_DEVICE_PROGRAM_MAP(thndrx2_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tmnt_state, punkshot_interrupt) + M68000(config, m_maincpu, 12000000); /* 12 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &tmnt_state::thndrx2_main_map); + m_maincpu->set_vblank_int("screen", FUNC(tmnt_state::punkshot_interrupt)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) - MCFG_DEVICE_PROGRAM_MAP(thndrx2_audio_map) - /* NMIs are generated by the 053260 */ + Z80(config, m_audiocpu, XTAL(3'579'545)); + m_audiocpu->set_addrmap(AS_PROGRAM, &tmnt_state::thndrx2_audio_map); + /* NMIs are generated by the 053260 */ MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) @@ -2590,18 +2578,18 @@ MACHINE_CONFIG_START(tmnt_state::thndrx2) EEPROM_ER5911_8BIT(config, "eeprom"); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_thndrx2) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 2048) - MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_PALETTE_ENABLE_SHADOWS() - MCFG_PALETTE_ENABLE_HILIGHTS() + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(tmnt_state::screen_update_thndrx2)); + screen.set_palette(m_palette); + + PALETTE(config, m_palette, 2048); + 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); @@ -2622,10 +2610,10 @@ MACHINE_CONFIG_START(tmnt_state::thndrx2) YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); - MCFG_K053260_ADD("k053260", XTAL(3'579'545)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) -MACHINE_CONFIG_END + K053260(config, m_k053260, XTAL(3'579'545)); + m_k053260->add_route(0, "lspeaker", 0.75); + m_k053260->add_route(1, "rspeaker", 0.75); +} diff --git a/src/mame/drivers/tnzs.cpp b/src/mame/drivers/tnzs.cpp index c68036d6914..ef83d7674d1 100644 --- a/src/mame/drivers/tnzs.cpp +++ b/src/mame/drivers/tnzs.cpp @@ -1529,42 +1529,43 @@ static GFXDECODE_START( gfx_insectx ) GFXDECODE_ENTRY( "gfx1", 0, insectx_charlayout, 0, 32 ) GFXDECODE_END -MACHINE_CONFIG_START(tnzs_base_state::tnzs_base) +void tnzs_base_state::tnzs_base(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,XTAL(12'000'000)/2) /* 6.0 MHz ??? - Main board Crystal is 12MHz, verified on insectx, kageki, tnzsb */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tnzs_base_state, irq0_line_hold) + Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6.0 MHz ??? - Main board Crystal is 12MHz, verified on insectx, kageki, tnzsb */ + m_maincpu->set_addrmap(AS_PROGRAM, &tnzs_base_state::main_map); + m_maincpu->set_vblank_int("screen", FUNC(tnzs_base_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80,XTAL(12'000'000)/2) /* 6.0 MHz ??? - Main board Crystal is 12MHz, verified on insectx, kageki, tnzsb */ - MCFG_DEVICE_PROGRAM_MAP(base_sub_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tnzs_base_state, irq0_line_hold) + Z80(config, m_subcpu, XTAL(12'000'000)/2); /* 6.0 MHz ??? - Main board Crystal is 12MHz, verified on insectx, kageki, tnzsb */ + m_subcpu->set_addrmap(AS_PROGRAM, &tnzs_base_state::base_sub_map); + m_subcpu->set_vblank_int("screen", FUNC(tnzs_base_state::irq0_line_hold)); tnzs_mainbank(config); - MCFG_QUANTUM_PERFECT_CPU("maincpu") + config.m_perfect_cpu_quantum = subtag("maincpu"); /* video hardware */ SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag("gfxdecode"); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(tnzs_base_state, screen_update_tnzs) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tnzs_base_state, screen_vblank_tnzs)) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(tnzs_base_state::screen_update_tnzs)); + m_screen->screen_vblank().set(FUNC(tnzs_base_state::screen_vblank_tnzs)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tnzs) - MCFG_PALETTE_ADD("palette", 512) - MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_tnzs); + PALETTE(config, m_palette, 512).set_format(PALETTE_FORMAT_xRRRRRGGGGGBBBBB); /* sound hardware */ SPEAKER(config, "speaker").front_center(); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(tnzs_mcu_state::tnzs) +void tnzs_mcu_state::tnzs(machine_config &config) +{ tnzs_base(config); I8742(config, m_mcu, 12000000/2); /* 400KHz ??? - Main board Crystal is 12MHz */ m_mcu->p1_in_cb().set(FUNC(tnzs_mcu_state::mcu_port1_r)); @@ -1573,35 +1574,31 @@ MACHINE_CONFIG_START(tnzs_mcu_state::tnzs) m_mcu->t0_in_cb().set_ioport("COIN1"); m_mcu->t1_in_cb().set_ioport("COIN2"); - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(tnzs_sub_map) + m_subcpu->set_addrmap(AS_PROGRAM, &tnzs_mcu_state::tnzs_sub_map); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(59.15) /* it should be the same as the newer pcb vsync */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) + m_screen->set_refresh_hz(59.15); /* it should be the same as the newer pcb vsync */ + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ /* sound hardware */ ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000)/4)); ymsnd.port_a_read_callback().set_ioport("DSWA"); ymsnd.port_b_read_callback().set_ioport("DSWB"); ymsnd.add_route(ALL_OUTPUTS, "speaker", 0.3); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(extrmatn_state::extrmatn) +void extrmatn_state::extrmatn(machine_config &config) +{ tnzs(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(prompal_main_map) + m_maincpu->set_addrmap(AS_PROGRAM, &extrmatn_state::prompal_main_map); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_INIT_OWNER(extrmatn_state, prompalette) -MACHINE_CONFIG_END + m_palette->set_init(FUNC(extrmatn_state::palette_init_prompalette)); +} void extrmatn_state::plumppop(machine_config &config) { @@ -1611,41 +1608,37 @@ void extrmatn_state::plumppop(machine_config &config) m_upd4701->set_porty_tag("AN2"); } -MACHINE_CONFIG_START(arknoid2_state::arknoid2) +void arknoid2_state::arknoid2(machine_config &config) +{ plumppop(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", arknoid2_state, mcu_interrupt) + m_maincpu->set_vblank_int("screen", FUNC(arknoid2_state::mcu_interrupt)); + m_subcpu->set_addrmap(AS_PROGRAM, &arknoid2_state::arknoid2_sub_map); - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(arknoid2_sub_map) - - MCFG_DEVICE_MODIFY("mcu") - MCFG_DEVICE_DISABLE() -MACHINE_CONFIG_END + subdevice("mcu")->set_disable(); +} -MACHINE_CONFIG_START(insectx_state::insectx) +void insectx_state::insectx(machine_config &config) +{ tnzs_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(insectx_sub_map) + m_subcpu->set_addrmap(AS_PROGRAM, &insectx_state::insectx_sub_map); /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_insectx) + m_gfxdecode->set_info(gfx_insectx); /* sound hardware */ ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000)/4)); /* verified on pcb */ ymsnd.port_a_read_callback().set_ioport("DSWA"); ymsnd.port_b_read_callback().set_ioport("DSWB"); ymsnd.add_route(ALL_OUTPUTS, "speaker", 0.3); -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(kageki_state::kageki) +void kageki_state::kageki(machine_config &config) +{ tnzs_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(kageki_sub_map) + m_subcpu->set_addrmap(AS_PROGRAM, &kageki_state::kageki_sub_map); /* sound hardware */ ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000)/4)); /* verified on pcb */ @@ -1656,28 +1649,25 @@ MACHINE_CONFIG_START(kageki_state::kageki) ymsnd.add_route(2, "speaker", 0.15); ymsnd.add_route(3, "speaker", 0.35); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_START_CB(kageki_state, init_samples) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(1); + m_samples->set_samples_start_callback(FUNC(kageki_state::init_samples)); + m_samples->add_route(ALL_OUTPUTS, "speaker", 1.0); +} -MACHINE_CONFIG_START(tnzsb_state::tnzsb) +void tnzsb_state::tnzsb(machine_config &config) +{ tnzs_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(tnzsb_main_map) - - MCFG_DEVICE_MODIFY("sub") /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(tnzsb_sub_map) + m_maincpu->set_addrmap(AS_PROGRAM, &tnzsb_state::tnzsb_main_map); + m_subcpu->set_addrmap(AS_PROGRAM, &tnzsb_state::tnzsb_sub_map); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(tnzsb_cpu2_map) - MCFG_DEVICE_IO_MAP(tnzsb_io_map) + Z80(config, m_audiocpu, XTAL(12'000'000)/2); /* verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &tnzsb_state::tnzsb_cpu2_map); + m_audiocpu->set_addrmap(AS_IO, &tnzsb_state::tnzsb_io_map); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(59.15) /* verified on pcb */ + m_screen->set_refresh_hz(59.15); /* verified on pcb */ /* sound hardware */ GENERIC_LATCH_8(config, m_soundlatch); @@ -1688,52 +1678,47 @@ MACHINE_CONFIG_START(tnzsb_state::tnzsb) ymsnd.add_route(1, "speaker", 1.0); ymsnd.add_route(2, "speaker", 1.0); ymsnd.add_route(3, "speaker", 2.0); -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(kabukiz_state::kabukiz) +void kabukiz_state::kabukiz(machine_config &config) +{ tnzsb(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(kabukiz_sub_map) - - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(kabukiz_cpu2_map) + m_subcpu->set_addrmap(AS_PROGRAM, &kabukiz_state::kabukiz_sub_map); + m_audiocpu->set_addrmap(AS_PROGRAM, &kabukiz_state::kabukiz_cpu2_map); /* sound hardware */ ym2203_device &ymsnd(*subdevice("ymsnd")); ymsnd.port_a_write_callback().set(FUNC(kabukiz_state::sound_bank_w)); ymsnd.port_b_write_callback().set("dac", FUNC(dac_byte_interface::data_w)); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // 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", 0.5); // 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(jpopnics_state::jpopnics) +void jpopnics_state::jpopnics(machine_config &config) +{ tnzs_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(jpopnics_main_map) - - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(jpopnics_sub_map) + m_maincpu->set_addrmap(AS_PROGRAM, &jpopnics_state::jpopnics_main_map); + m_subcpu->set_addrmap(AS_PROGRAM, &jpopnics_state::jpopnics_sub_map); UPD4701A(config, m_upd4701); m_upd4701->set_portx_tag("AN1"); m_upd4701->set_porty_tag("AN2"); /* video hardware */ - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(1024) - MCFG_PALETTE_FORMAT(GGGGBBBBRRRRxxxx) /* wrong, the other 4 bits seem to be used as well */ - MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) + m_palette->set_entries(1024); + m_palette->set_format(PALETTE_FORMAT_GGGGBBBBRRRRxxxx); /* wrong, the other 4 bits seem to be used as well */ + m_palette->set_endianness(ENDIANNESS_BIG); /* sound hardware */ YM2151(config, "ymsnd", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "speaker", 0.3); /* Not verified - Main board Crystal is 12MHz */ -MACHINE_CONFIG_END +} /*************************************************************************** diff --git a/src/mame/drivers/triplhnt.cpp b/src/mame/drivers/triplhnt.cpp index 988b4d24fb4..495a4083bdf 100644 --- a/src/mame/drivers/triplhnt.cpp +++ b/src/mame/drivers/triplhnt.cpp @@ -271,12 +271,12 @@ PALETTE_INIT_MEMBER(triplhnt_state, triplhnt) } -MACHINE_CONFIG_START(triplhnt_state::triplhnt) - -/* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6800, 800000) - MCFG_DEVICE_PROGRAM_MAP(triplhnt_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", triplhnt_state, irq0_line_hold) +void triplhnt_state::triplhnt(machine_config &config) +{ + /* basic machine hardware */ + M6800(config, m_maincpu, 800000); + m_maincpu->set_addrmap(AS_PROGRAM, &triplhnt_state::triplhnt_map); + m_maincpu->set_vblank_int("screen", FUNC(triplhnt_state::irq0_line_hold)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // battery-backed 74C89 at J5 @@ -295,28 +295,27 @@ MACHINE_CONFIG_START(triplhnt_state::triplhnt) WATCHDOG_TIMER(config, m_watchdog); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(256, 262) - MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239) - MCFG_SCREEN_UPDATE_DRIVER(triplhnt_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_size(256, 262); + screen.set_visarea(0, 255, 0, 239); + screen.set_screen_update(FUNC(triplhnt_state::screen_update)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_triplhnt) - MCFG_PALETTE_ADD("palette", 8) - MCFG_PALETTE_INIT_OWNER(triplhnt_state, triplhnt) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_triplhnt); + PALETTE(config, m_palette, 8).set_init(FUNC(triplhnt_state::palette_init_triplhnt)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(2) /* 2 channels */ - MCFG_SAMPLES_NAMES(triplhnt_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) + SAMPLES(config, m_samples); + m_samples->set_channels(2); /* 2 channels */ + m_samples->set_samples_names(triplhnt_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.20); - MCFG_DEVICE_ADD("discrete", DISCRETE, triplhnt_discrete) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) -MACHINE_CONFIG_END + DISCRETE(config, m_discrete, triplhnt_discrete); + m_discrete->add_route(ALL_OUTPUTS, "mono", 0.90); +} ROM_START( triplhnt ) diff --git a/src/mame/drivers/vsnes.cpp b/src/mame/drivers/vsnes.cpp index d616886b95c..8185f2aa921 100644 --- a/src/mame/drivers/vsnes.cpp +++ b/src/mame/drivers/vsnes.cpp @@ -1701,160 +1701,155 @@ static INPUT_PORTS_START( supxevs ) PORT_DIPSETTING( 0xc0, "RP2C04-0004" ) INPUT_PORTS_END -MACHINE_CONFIG_START(vsnes_state::vsnes) - +void vsnes_state::vsnes(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", N2A03, NTSC_APU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(vsnes_cpu1_map) - /* some carts also trigger IRQs */ + N2A03(config, m_maincpu, NTSC_APU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &vsnes_state::vsnes_cpu1_map); + /* some carts also trigger IRQs */ MCFG_MACHINE_RESET_OVERRIDE(vsnes_state,vsnes) MCFG_MACHINE_START_OVERRIDE(vsnes_state,vsnes) /* video hardware */ - MCFG_SCREEN_ADD("screen1", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DEVICE("ppu1", ppu2c0x_device, screen_update) + screen_device &screen1(SCREEN(config, "screen1", SCREEN_TYPE_RASTER)); + screen1.set_refresh_hz(60); + screen1.set_size(32*8, 262); + screen1.set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + screen1.set_screen_update("ppu1", FUNC(ppu2c0x_device::screen_update)); - MCFG_PPU2C04_ADD("ppu1") - MCFG_PPU2C0X_SET_SCREEN("screen1") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + PPU_2C04(config, m_ppu1); + m_ppu1->set_screen("screen1"); + m_ppu1->set_cpu_tag(m_maincpu); + m_ppu1->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(vsnes_state::jajamaru) +void vsnes_state::jajamaru(machine_config &config) +{ vsnes(config); - MCFG_DEVICE_REMOVE( "ppu1" ) - MCFG_PPU2C05_01_ADD("ppu1") - MCFG_PPU2C0X_SET_SCREEN("screen1") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) -MACHINE_CONFIG_END + PPU_2C05_01(config.replace(), m_ppu1); + m_ppu1->set_screen("screen1"); + m_ppu1->set_cpu_tag(m_maincpu); + m_ppu1->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); +} -MACHINE_CONFIG_START(vsnes_state::mightybj) +void vsnes_state::mightybj(machine_config &config) +{ vsnes(config); - MCFG_DEVICE_REMOVE( "ppu1" ) - MCFG_PPU2C05_02_ADD("ppu1") - MCFG_PPU2C0X_SET_SCREEN("screen1") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) -MACHINE_CONFIG_END + PPU_2C05_02(config.replace(), m_ppu1); + m_ppu1->set_screen("screen1"); + m_ppu1->set_cpu_tag(m_maincpu); + m_ppu1->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); +} -MACHINE_CONFIG_START(vsnes_state::vsgshoe) +void vsnes_state::vsgshoe(machine_config &config) +{ vsnes(config); - MCFG_DEVICE_REMOVE( "ppu1" ) - MCFG_PPU2C05_03_ADD("ppu1") - MCFG_PPU2C0X_SET_SCREEN("screen1") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) -MACHINE_CONFIG_END + PPU_2C05_03(config.replace(), m_ppu1); + m_ppu1->set_screen("screen1"); + m_ppu1->set_cpu_tag(m_maincpu); + m_ppu1->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); +} -MACHINE_CONFIG_START(vsnes_state::topgun) +void vsnes_state::topgun(machine_config &config) +{ vsnes(config); - MCFG_DEVICE_REMOVE( "ppu1" ) - MCFG_PPU2C05_04_ADD("ppu1") - MCFG_PPU2C0X_SET_SCREEN("screen1") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(vsnes_state::vsdual) + PPU_2C05_04(config.replace(), m_ppu1); + m_ppu1->set_screen("screen1"); + m_ppu1->set_cpu_tag(m_maincpu); + m_ppu1->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); +} +void vsnes_state::vsdual(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", N2A03, NTSC_APU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(vsnes_cpu1_map) + N2A03(config, m_maincpu, NTSC_APU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &vsnes_state::vsnes_cpu1_map); - MCFG_DEVICE_ADD("sub", N2A03, NTSC_APU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(vsnes_cpu2_map) + N2A03(config, m_subcpu, NTSC_APU_CLOCK); + m_subcpu->set_addrmap(AS_PROGRAM, &vsnes_state::vsnes_cpu2_map); MCFG_MACHINE_RESET_OVERRIDE(vsnes_state,vsdual) MCFG_MACHINE_START_OVERRIDE(vsnes_state,vsdual) config.set_default_layout(layout_dualhsxs); - MCFG_SCREEN_ADD("screen1", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DEVICE("ppu1", ppu2c0x_device, screen_update) + screen_device &screen1(SCREEN(config, "screen1", SCREEN_TYPE_RASTER)); + screen1.set_refresh_hz(60); + screen1.set_size(32*8, 262); + screen1.set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + screen1.set_screen_update("ppu1", FUNC(ppu2c0x_device::screen_update)); - MCFG_SCREEN_ADD("screen2", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DEVICE("ppu2", ppu2c0x_device, screen_update) + screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER)); + screen2.set_refresh_hz(60); + screen2.set_size(32*8, 262); + screen2.set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + screen2.set_screen_update("ppu2", FUNC(ppu2c0x_device::screen_update)); - MCFG_PPU2C04_ADD("ppu1") - MCFG_PPU2C0X_SET_SCREEN("screen1") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + PPU_2C04(config, m_ppu1); + m_ppu1->set_screen("screen1"); + m_ppu1->set_cpu_tag(m_maincpu); + m_ppu1->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); - MCFG_PPU2C04_ADD("ppu2") - MCFG_PPU2C0X_SET_SCREEN("screen2") - MCFG_PPU2C0X_CPU("sub") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("sub", INPUT_LINE_NMI)) + PPU_2C04(config, m_ppu2); + m_ppu2->set_screen("screen2"); + m_ppu2->set_cpu_tag(m_subcpu); + m_ppu2->int_callback().set_inputline(m_subcpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(vsnes_state::vsdual_pi) +void vsnes_state::vsdual_pi(machine_config &config) +{ vsdual(config); - MCFG_QUANTUM_PERFECT_CPU("maincpu") + config.m_perfect_cpu_quantum = subtag("maincpu"); // need high level of interleave to keep screens in sync in Balloon Fight. // however vsmahjng doesn't like perfect interleave? you end up needing to reset it to boot? maybe something in a bad default state? watchdog? // as the board would always be running in 'perfect interleave' the fact the Mahjong game doesn't work like this needs investigating. -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(vsnes_state::vsnes_bootleg) +} +void vsnes_state::vsnes_bootleg(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502,XTAL(16'000'000)/4) // 4mhz? seems too high but flickers badly otherwise, issue elsewhere? - MCFG_DEVICE_PROGRAM_MAP(vsnes_cpu1_bootleg_map) - /* some carts also trigger IRQs */ + M6502(config, m_maincpu, XTAL(16'000'000)/4); // 4mhz? seems too high but flickers badly otherwise, issue elsewhere? + m_maincpu->set_addrmap(AS_PROGRAM, &vsnes_state::vsnes_cpu1_bootleg_map); + /* some carts also trigger IRQs */ MCFG_MACHINE_RESET_OVERRIDE(vsnes_state,vsnes) MCFG_MACHINE_START_OVERRIDE(vsnes_state,vsnes) - MCFG_DEVICE_ADD("sub", Z80,XTAL(16'000'000)/4) /* ? MHz */ // Z8400APS-Z80CPU - MCFG_DEVICE_PROGRAM_MAP(vsnes_bootleg_z80_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen1", vsnes_state, irq0_line_hold) -// MCFG_DEVICE_PERIODIC_INT_DRIVER(vsnes_state, nmi_line_pulse) + Z80(config, m_subcpu, XTAL(16'000'000)/4); /* ? MHz */ // Z8400APS-Z80CPU + m_subcpu->set_addrmap(AS_PROGRAM, &vsnes_state::vsnes_bootleg_z80_map); + m_subcpu->set_vblank_int("screen1", FUNC(vsnes_state::irq0_line_hold)); +// m_subcpu->set_periodic_int(FUNC(vsnes_state::nmi_line_pulse)); /* video hardware */ - MCFG_SCREEN_ADD("screen1", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(32*8, 262) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DEVICE("ppu1", ppu2c0x_device, screen_update) - - MCFG_PPU2C04_ADD("ppu1") - MCFG_PPU2C0X_CPU("maincpu") - MCFG_PPU2C0X_SET_SCREEN("screen1") - MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) - MCFG_PPU2C0X_IGNORE_SPRITE_WRITE_LIMIT // bootleg seems to need this - code to set the sprite address is replaced with complete copy loops?? + screen_device &screen1(SCREEN(config, "screen1", SCREEN_TYPE_RASTER)); + screen1.set_refresh_hz(60); + screen1.set_size(32*8, 262); + screen1.set_visarea(0*8, 32*8-1, 0*8, 30*8-1); + screen1.set_screen_update("ppu1", FUNC(ppu2c0x_device::screen_update)); + + PPU_2C04(config, m_ppu1); + m_ppu1->set_cpu_tag(m_maincpu); + m_ppu1->set_screen("screen1"); + m_ppu1->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); + m_ppu1->use_sprite_write_limitation_disable(); // bootleg seems to need this - code to set the sprite address is replaced with complete copy loops?? /* sound hardware */ SPEAKER(config, "mono").front_center(); // PCB has 2, code accesses 3? which 2 really exist? - MCFG_DEVICE_ADD("sn1", SN76489, XTAL(16'000'000)/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - - MCFG_DEVICE_ADD("sn2", SN76489, XTAL(16'000'000)/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - - MCFG_DEVICE_ADD("sn3", SN76489, XTAL(16'000'000)/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + SN76489(config, "sn1", XTAL(16'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50); + SN76489(config, "sn2", XTAL(16'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50); + SN76489(config, "sn3", XTAL(16'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50); +} /******************************************************************************/ diff --git a/src/mame/includes/atarist.h b/src/mame/includes/atarist.h index 0d60c5e787c..0add260a05b 100644 --- a/src/mame/includes/atarist.h +++ b/src/mame/includes/atarist.h @@ -95,6 +95,7 @@ public: m_cart(*this, "cartslot"), m_ram(*this, RAM_TAG), m_rs232(*this, RS232_TAG), + m_ymsnd(*this, YM2149_TAG), m_p31(*this, "P31"), m_p32(*this, "P32"), m_p33(*this, "P33"), @@ -137,6 +138,7 @@ public: required_device m_cart; required_device m_ram; required_device m_rs232; + required_device m_ymsnd; required_ioport m_p31; required_ioport m_p32; required_ioport m_p33; @@ -331,6 +333,7 @@ public: required_device m_screen; DECLARE_WRITE_LINE_MEMBER( write_monochrome ); + void common(machine_config &config); void st(machine_config &config); void ikbd_map(address_map &map); void st_map(address_map &map); diff --git a/src/mame/includes/circus.h b/src/mame/includes/circus.h index 92e522ef416..180f7b3aa4f 100644 --- a/src/mame/includes/circus.h +++ b/src/mame/includes/circus.h @@ -35,7 +35,7 @@ public: /* devices */ required_device m_maincpu; required_device m_samples; - required_device m_discrete; + required_device m_discrete; required_device m_gfxdecode; required_device m_palette; diff --git a/src/mame/includes/gridlee.h b/src/mame/includes/gridlee.h index 285003099d1..5aca6952b19 100644 --- a/src/mame/includes/gridlee.h +++ b/src/mame/includes/gridlee.h @@ -39,7 +39,8 @@ public: m_maincpu(*this, "maincpu"), m_latch(*this, "latch"), m_screen(*this, "screen"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_samples(*this, "samples") { } void gridlee(machine_config &config); @@ -72,6 +73,7 @@ private: required_device m_latch; required_device m_screen; required_device m_palette; + required_device m_samples; uint8_t m_last_analog_input[2]; uint8_t m_last_analog_output[2]; diff --git a/src/mame/includes/nes.h b/src/mame/includes/nes.h index d0e88b52d56..06dcf8f4366 100644 --- a/src/mame/includes/nes.h +++ b/src/mame/includes/nes.h @@ -14,11 +14,12 @@ #pragma once -#include "video/ppu2c0x.h" #include "bus/nes/disksys.h" #include "bus/nes/nes_slot.h" #include "bus/nes/nes_carts.h" #include "bus/nes_ctrl/ctrl.h" +#include "video/ppu2c0x.h" +#include "screen.h" /*************************************************************************** CONSTANTS @@ -73,6 +74,7 @@ public: nes_state(const machine_config &mconfig, device_type type, const char *tag) : nes_base_state(mconfig, type, tag), m_ppu(*this, "ppu"), + m_screen(*this, "screen"), m_exp(*this, "exp"), m_cartslot(*this, "nes_slot"), m_disk(*this, "disk") @@ -125,6 +127,7 @@ private: required_device m_ppu; + required_device m_screen; optional_device m_exp; optional_device m_cartslot; optional_device m_disk; diff --git a/src/mame/includes/ninjakd2.h b/src/mame/includes/ninjakd2.h index 9d481375383..5df65126962 100644 --- a/src/mame/includes/ninjakd2.h +++ b/src/mame/includes/ninjakd2.h @@ -23,12 +23,12 @@ public: m_palette(*this, "palette"), m_bg_videoram(*this, "bg_videoram"), m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), m_soundcpu(*this, "soundcpu"), m_pcm(*this, "pcm"), m_pcm_region(*this, "pcm"), m_fg_videoram(*this, "fg_videoram"), m_spriteram(*this, "spriteram"), - m_screen(*this, "screen"), m_decrypted_opcodes(*this, "decrypted_opcodes"), m_mainbank(*this, "mainbank") { } @@ -52,6 +52,8 @@ protected: required_device m_palette; optional_shared_ptr m_bg_videoram; required_device m_gfxdecode; + required_device m_screen; + required_device m_soundcpu; uint8_t m_vram_bank_mask; int m_robokid_sprites; @@ -84,12 +86,10 @@ protected: void ninjakd2_core(machine_config &config); private: - required_device m_soundcpu; optional_device m_pcm; optional_memory_region m_pcm_region; required_shared_ptr m_fg_videoram; required_shared_ptr m_spriteram; - required_device m_screen; optional_shared_ptr m_decrypted_opcodes; required_memory_bank m_mainbank; diff --git a/src/mame/includes/segag80v.h b/src/mame/includes/segag80v.h index 1e52864da60..15c35e03917 100644 --- a/src/mame/includes/segag80v.h +++ b/src/mame/includes/segag80v.h @@ -27,7 +27,8 @@ public: m_usb(*this, "usbsnd"), m_aysnd(*this, "aysnd"), m_vector(*this, "vector"), - m_screen(*this, "screen"){ } + m_screen(*this, "screen") + { } void g80v_base(machine_config &config); void tacscan(machine_config &config); diff --git a/src/mame/includes/super80.h b/src/mame/includes/super80.h index ef67d729eb2..6e72e9f532b 100644 --- a/src/mame/includes/super80.h +++ b/src/mame/includes/super80.h @@ -7,13 +7,13 @@ #include "bus/centronics/ctronics.h" #include "cpu/z80/z80.h" -#include "machine/z80daisy.h" #include "imagedev/cassette.h" #include "imagedev/floppy.h" #include "imagedev/snapquik.h" #include "machine/buffer.h" #include "machine/timer.h" #include "machine/wd_fdc.h" +#include "machine/z80daisy.h" #include "machine/z80dma.h" #include "machine/z80pio.h" #include "sound/samples.h" @@ -21,7 +21,7 @@ #include "sound/wave.h" #include "video/mc6845.h" #include "emupal.h" - +#include "screen.h" /* Bits in m_portf0 variable: d5 cassette LED @@ -35,6 +35,8 @@ public: super80_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_palette(*this, "palette") + , m_gfxdecode(*this, "gfxdecode") + , m_screen(*this, "screen") , m_maincpu(*this, "maincpu") , m_p_ram(*this, "maincpu") , m_p_chargen(*this, "chargen") @@ -132,6 +134,8 @@ private: void mc6845_cursor_configure(); void super80_cassette_motor(bool data); required_device m_palette; + required_device m_gfxdecode; + required_device m_screen; required_device m_maincpu; required_region_ptr m_p_ram; optional_region_ptr m_p_chargen; diff --git a/src/mame/includes/thief.h b/src/mame/includes/thief.h index fdce1653579..aa114c875e3 100644 --- a/src/mame/includes/thief.h +++ b/src/mame/includes/thief.h @@ -3,6 +3,7 @@ #include "sound/samples.h" #include "video/tms9927.h" #include "emupal.h" +#include "screen.h" struct coprocessor_t { std::unique_ptr context_ram; @@ -19,6 +20,7 @@ public: m_maincpu(*this, "maincpu"), m_samples(*this, "samples"), m_tms(*this, "tms"), + m_screen(*this, "screen"), m_palette(*this, "palette") { } void natodef(machine_config &config); @@ -60,6 +62,7 @@ private: required_device m_maincpu; required_device m_samples; required_device m_tms; + required_device m_screen; required_device m_palette; void io_map(address_map &map); diff --git a/src/mame/includes/tnzs.h b/src/mame/includes/tnzs.h index 6c02e4e0814..ac24d47cfea 100644 --- a/src/mame/includes/tnzs.h +++ b/src/mame/includes/tnzs.h @@ -6,15 +6,15 @@ #pragma once -#include "sound/dac.h" -#include "sound/samples.h" -#include "video/seta001.h" #include "cpu/mcs48/mcs48.h" #include "machine/bankdev.h" #include "machine/gen_latch.h" #include "machine/upd4701.h" +#include "sound/dac.h" +#include "sound/samples.h" +#include "video/seta001.h" #include "emupal.h" - +#include "screen.h" class tnzs_base_state : public driver_device { @@ -25,6 +25,8 @@ public: , m_subcpu(*this, "sub") , m_seta001(*this, "spritegen") , m_palette(*this, "palette") + , m_gfxdecode(*this, "gfxdecode") + , m_screen(*this, "screen") , m_mainbank(*this, "mainbank") , m_subbank(*this, "subbank") { } @@ -52,6 +54,8 @@ protected: optional_device m_subcpu; optional_device m_seta001; required_device m_palette; + required_device m_gfxdecode; + required_device m_screen; optional_device m_mainbank; /* FIXME: optional because of reuse from cchance.cpp */ optional_memory_bank m_subbank; /* FIXME: optional because of reuse from cchance.cpp */ diff --git a/src/mame/includes/triplhnt.h b/src/mame/includes/triplhnt.h index b666bd3ee25..9a378779121 100644 --- a/src/mame/includes/triplhnt.h +++ b/src/mame/includes/triplhnt.h @@ -80,7 +80,7 @@ private: required_device m_maincpu; required_device m_latch; required_device m_watchdog; - required_device m_discrete; + required_device m_discrete; required_device m_samples; required_device m_gfxdecode; required_device m_screen; diff --git a/src/mame/includes/vicdual.h b/src/mame/includes/vicdual.h index a363a6d0a3c..11aa50e8945 100644 --- a/src/mame/includes/vicdual.h +++ b/src/mame/includes/vicdual.h @@ -88,7 +88,7 @@ protected: optional_device m_audiocpu; optional_device m_psg; optional_device m_samples; - optional_device m_discrete; + optional_device m_discrete; required_device m_coinstate_timer; optional_device m_nsub_coinage_timer; required_device m_screen; diff --git a/src/mame/machine/genpin.cpp b/src/mame/machine/genpin.cpp index 4702ab1227e..877cb1a5d90 100644 --- a/src/mame/machine/genpin.cpp +++ b/src/mame/machine/genpin.cpp @@ -10,11 +10,11 @@ This is for common pinball machine coding. #include "genpin.h" #include "speaker.h" - -MACHINE_CONFIG_START(genpin_class::genpin_audio) +void genpin_class::genpin_audio(machine_config &config) +{ SPEAKER(config, "mechvol").front_center(); - MCFG_DEVICE_ADD("samples", SAMPLES) - MCFG_SAMPLES_CHANNELS(6) - MCFG_SAMPLES_NAMES(genpin_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mechvol", 1.0) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(6); + m_samples->set_samples_names(genpin_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mechvol", 1.0); +} \ No newline at end of file diff --git a/src/mame/machine/mm1kb.cpp b/src/mame/machine/mm1kb.cpp index 98e4108dbec..1b3f660d358 100644 --- a/src/mame/machine/mm1kb.cpp +++ b/src/mame/machine/mm1kb.cpp @@ -57,13 +57,14 @@ bool mm1_keyboard_device::first_time = true; // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(mm1_keyboard_device::device_add_mconfig) +void mm1_keyboard_device::device_add_mconfig(machine_config &config) +{ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("keyboard_and_chassis_sounds", SAMPLES) - MCFG_SAMPLES_CHANNELS(2) - MCFG_SAMPLES_NAMES(mm1_kb_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.7) -MACHINE_CONFIG_END + SAMPLES(config, m_samples); + m_samples->set_channels(2); + m_samples->set_samples_names(mm1_kb_sample_names); + m_samples->add_route(ALL_OUTPUTS, "mono", 0.7); +} //------------------------------------------------- -- cgit v1.2.3