summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-12-20 13:32:42 +0100
committer mooglyguy <therealmogminer@gmail.com>2018-12-20 13:32:42 +0100
commit7ba9c79cdd6c65bc414e9b67aff45f8886ba326e (patch)
tree64d9ca22747765cbc67d9b8cc1a259b9a698c708
parent0e75c994b8b7921040c1154217b798b8f2477552 (diff)
-bus/nes_ctrl: Added support for dance mats, used by the nes_vt driver. [David Haywood]
-nes_vt: Hooked up dance mat devices to ddrdismx and ddrstraw. [David Haywood] -snesb: Renamed rushbeat and spidrmnb to better match the softlist sets. [David Haywood] -bus/msx_cart/msx_audio, yamaha: Removed MACHINE_CONFIG macros. [Ryan Holtz] -sound/8950intf, ad1848, k054539, okim6258: Removed MCFG macros. [Ryan Holtz] -gijoe, konamigx, lethal, mtouchxl, mystwarr, pcat_dyn, piratesh, plygonet, qdrmfgp, rungun, snk, ultrsprt, xexex: Removed MACHINE_CONFIG macros. [Ryan Holtz]
-rw-r--r--src/devices/bus/msx_cart/msx_audio.cpp62
-rw-r--r--src/devices/bus/msx_cart/msx_audio_kb.h16
-rw-r--r--src/devices/bus/msx_cart/yamaha.cpp13
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.cpp10
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.h2
-rw-r--r--src/devices/bus/nes_ctrl/joypad.cpp24
-rw-r--r--src/devices/bus/nes_ctrl/joypad.h22
-rw-r--r--src/devices/machine/ds1205.h2
-rw-r--r--src/devices/sound/8950intf.h25
-rw-r--r--src/devices/sound/ad1848.cpp18
-rw-r--r--src/devices/sound/ad1848.h10
-rw-r--r--src/devices/sound/k054539.h22
-rw-r--r--src/devices/sound/okim6258.h14
-rw-r--r--src/mame/drivers/gijoe.cpp48
-rw-r--r--src/mame/drivers/konamigx.cpp243
-rw-r--r--src/mame/drivers/lethal.cpp56
-rw-r--r--src/mame/drivers/mtouchxl.cpp39
-rw-r--r--src/mame/drivers/mystwarr.cpp191
-rw-r--r--src/mame/drivers/nes_vt.cpp28
-rw-r--r--src/mame/drivers/pcat_dyn.cpp30
-rw-r--r--src/mame/drivers/piratesh.cpp47
-rw-r--r--src/mame/drivers/plygonet.cpp54
-rw-r--r--src/mame/drivers/qdrmfgp.cpp78
-rw-r--r--src/mame/drivers/rungun.cpp100
-rw-r--r--src/mame/drivers/snesb.cpp43
-rw-r--r--src/mame/drivers/snk.cpp546
-rw-r--r--src/mame/drivers/ultrsprt.cpp39
-rw-r--r--src/mame/drivers/xexex.cpp58
-rw-r--r--src/mame/mame.lst4
29 files changed, 920 insertions, 924 deletions
diff --git a/src/devices/bus/msx_cart/msx_audio.cpp b/src/devices/bus/msx_cart/msx_audio.cpp
index 970422bf684..61f96ff1eaa 100644
--- a/src/devices/bus/msx_cart/msx_audio.cpp
+++ b/src/devices/bus/msx_cart/msx_audio.cpp
@@ -80,16 +80,17 @@ msx_cart_msx_audio_hxmu900_device::msx_cart_msx_audio_hxmu900_device(const machi
}
-MACHINE_CONFIG_START(msx_cart_msx_audio_hxmu900_device::device_add_mconfig)
+void msx_cart_msx_audio_hxmu900_device::device_add_mconfig(machine_config &config)
+{
// This is actually incorrect. The sound output is passed back into the MSX machine where it is mixed internally and output through the system 'speaker'.
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("y8950", Y8950, XTAL(3'579'545)) // Not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
- MCFG_Y8950_KEYBOARD_WRITE_HANDLER(WRITE8("kbdc", msx_audio_kbdc_port_device, write))
- MCFG_Y8950_KEYBOARD_READ_HANDLER(READ8("kbdc", msx_audio_kbdc_port_device, read))
+ Y8950(config, m_y8950, XTAL(3'579'545)); // Not verified
+ m_y8950->add_route(ALL_OUTPUTS, "mono", 0.40);
+ m_y8950->keyboard_write().set("kbdc", FUNC(msx_audio_kbdc_port_device::write));
+ m_y8950->keyboard_read().set("kbdc", FUNC(msx_audio_kbdc_port_device::read));
- MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, nullptr)
-MACHINE_CONFIG_END
+ MSX_AUDIO_KBDC_PORT(config, "kbdc", msx_audio_keyboards, nullptr);
+}
void msx_cart_msx_audio_hxmu900_device::device_start()
@@ -145,29 +146,27 @@ msx_cart_msx_audio_nms1205_device::msx_cart_msx_audio_nms1205_device(const machi
}
-MACHINE_CONFIG_START(msx_cart_msx_audio_nms1205_device::device_add_mconfig)
+void msx_cart_msx_audio_nms1205_device::device_add_mconfig(machine_config &config)
+{
// This is actually incorrect. The sound output is passed back into the MSX machine where it is mixed internally and output through the system 'speaker'.
// At the same time the sound is also output on two output on the nms1205 cartridge itself
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("y8950", Y8950, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
- MCFG_Y8950_KEYBOARD_WRITE_HANDLER(WRITE8("kbdc", msx_audio_kbdc_port_device, write))
- MCFG_Y8950_KEYBOARD_READ_HANDLER(READ8("kbdc", msx_audio_kbdc_port_device, read))
- MCFG_Y8950_IRQ_HANDLER(WRITELINE(*this, msx_cart_msx_audio_nms1205_device, irq_write))
+ Y8950(config, m_y8950, XTAL(3'579'545));
+ m_y8950->add_route(ALL_OUTPUTS, "mono", 0.40);
+ m_y8950->keyboard_write().set("kbdc", FUNC(msx_audio_kbdc_port_device::write));
+ m_y8950->keyboard_read().set("kbdc", FUNC(msx_audio_kbdc_port_device::read));
+ m_y8950->irq().set(FUNC(msx_cart_msx_audio_nms1205_device::irq_write));
- MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, nullptr)
+ MSX_AUDIO_KBDC_PORT(config, "kbdc", msx_audio_keyboards, nullptr);
// There is a 2 MHz crystal on the PCB, the 6850 TX and RX clocks are derived from it
ACIA6850(config, m_acia6850, 0);
m_acia6850->txd_handler().set("mdout", FUNC(midi_port_device::write_txd));
- MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
- MCFG_MIDI_RX_HANDLER(WRITELINE(*this, msx_cart_msx_audio_nms1205_device, midi_in))
-
- MCFG_MIDI_PORT_ADD("mdthru", midiout_slot, "midiout")
-
- MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
-MACHINE_CONFIG_END
+ MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(FUNC(msx_cart_msx_audio_nms1205_device::midi_in));
+ MIDI_PORT(config, m_mdthru, midiout_slot, "midiout");
+ MIDI_PORT(config, m_mdout, midiout_slot, "midiout");
+}
ROM_START( msx_nms1205 )
@@ -246,18 +245,19 @@ msx_cart_msx_audio_fsca1_device::msx_cart_msx_audio_fsca1_device(const machine_c
}
-MACHINE_CONFIG_START(msx_cart_msx_audio_fsca1_device::device_add_mconfig)
+void msx_cart_msx_audio_fsca1_device::device_add_mconfig(machine_config &config)
+{
// This is actually incorrect. The sound output is passed back into the MSX machine where it is mixed internally and output through the system 'speaker'.
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("y8950", Y8950, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
- MCFG_Y8950_KEYBOARD_WRITE_HANDLER(WRITE8("kbdc", msx_audio_kbdc_port_device, write))
- MCFG_Y8950_KEYBOARD_READ_HANDLER(READ8("kbdc", msx_audio_kbdc_port_device, read))
- MCFG_Y8950_IO_READ_HANDLER(READ8(*this, msx_cart_msx_audio_fsca1_device, y8950_io_r))
- MCFG_Y8950_IO_WRITE_HANDLER(WRITE8(*this, msx_cart_msx_audio_fsca1_device, y8950_io_w))
-
- MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, nullptr)
-MACHINE_CONFIG_END
+ Y8950(config, m_y8950, XTAL(3'579'545));
+ m_y8950->add_route(ALL_OUTPUTS, "mono", 0.40);
+ m_y8950->keyboard_write().set("kbdc", FUNC(msx_audio_kbdc_port_device::write));
+ m_y8950->keyboard_read().set("kbdc", FUNC(msx_audio_kbdc_port_device::read));
+ m_y8950->io_read().set(FUNC(msx_cart_msx_audio_fsca1_device::y8950_io_r));
+ m_y8950->io_write().set(FUNC(msx_cart_msx_audio_fsca1_device::y8950_io_w));
+
+ MSX_AUDIO_KBDC_PORT(config, "kbdc", msx_audio_keyboards, nullptr);
+}
static INPUT_PORTS_START( msx_audio_fsca1 )
diff --git a/src/devices/bus/msx_cart/msx_audio_kb.h b/src/devices/bus/msx_cart/msx_audio_kb.h
index 0746a803b40..25f0a2d24f8 100644
--- a/src/devices/bus/msx_cart/msx_audio_kb.h
+++ b/src/devices/bus/msx_cart/msx_audio_kb.h
@@ -5,15 +5,8 @@
#pragma once
-
DECLARE_DEVICE_TYPE(MSX_AUDIO_KBDC_PORT, msx_audio_kbdc_port_device)
-
-#define MCFG_MSX_AUDIO_KBDC_PORT_ADD(_tag, _slot_intf, _def_slot) \
- MCFG_DEVICE_ADD(_tag, MSX_AUDIO_KBDC_PORT, 0 ) \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-
-
class msx_audio_kb_port_interface : public device_slot_card_interface
{
public:
@@ -31,6 +24,15 @@ class msx_audio_kbdc_port_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
+ template <typename T>
+ msx_audio_kbdc_port_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
+ : msx_audio_kbdc_port_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ option_reset();
+ opts(*this);
+ set_default_option(dflt);
+ set_fixed(false);
+ }
msx_audio_kbdc_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
diff --git a/src/devices/bus/msx_cart/yamaha.cpp b/src/devices/bus/msx_cart/yamaha.cpp
index b480879fc29..e6f7dc844fe 100644
--- a/src/devices/bus/msx_cart/yamaha.cpp
+++ b/src/devices/bus/msx_cart/yamaha.cpp
@@ -46,7 +46,8 @@ msx_cart_sfg05_device::msx_cart_sfg05_device(const machine_config &mconfig, cons
}
-MACHINE_CONFIG_START(msx_cart_sfg_device::device_add_mconfig)
+void msx_cart_sfg_device::device_add_mconfig(machine_config &config)
+{
// YM2151 (OPM)
// YM3012 (DAC)
// YM2148 (MKS)
@@ -64,13 +65,11 @@ MACHINE_CONFIG_START(msx_cart_sfg_device::device_add_mconfig)
m_ym2148->port_read_handler().set("kbdc", FUNC(msx_audio_kbdc_port_device::read));
m_ym2148->irq_handler().set(FUNC(msx_cart_sfg_device::ym2148_irq_w));
- MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, nullptr)
-
- MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
+ MSX_AUDIO_KBDC_PORT(config, m_kbdc, msx_audio_keyboards, nullptr);
- MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
- MCFG_MIDI_RX_HANDLER(WRITELINE("ym2148", ym2148_device, write_rxd))
-MACHINE_CONFIG_END
+ MIDI_PORT(config, "mdout", midiout_slot, "midiout");
+ MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set("ym2148", FUNC(ym2148_device::write_rxd));
+}
ROM_START( msx_sfg01 )
diff --git a/src/devices/bus/nes_ctrl/ctrl.cpp b/src/devices/bus/nes_ctrl/ctrl.cpp
index 7618f89dbd7..2724e86dcaf 100644
--- a/src/devices/bus/nes_ctrl/ctrl.cpp
+++ b/src/devices/bus/nes_ctrl/ctrl.cpp
@@ -212,3 +212,13 @@ void fc_expansion_devices(device_slot_interface &device)
device.option_add("barcode_battler", NES_BARCODE_BATTLER);
device.option_add("subor_keyboard", NES_SUBORKEYBOARD);
}
+
+void majesco_control_port1_devices(device_slot_interface &device)
+{
+ device.option_add("ddr", NES_VT_MAJESCO_DDR);
+}
+
+void majesco_control_port2_devices(device_slot_interface &device)
+{
+ // nothing?
+}
diff --git a/src/devices/bus/nes_ctrl/ctrl.h b/src/devices/bus/nes_ctrl/ctrl.h
index aed994bb93f..1050ce0e45f 100644
--- a/src/devices/bus/nes_ctrl/ctrl.h
+++ b/src/devices/bus/nes_ctrl/ctrl.h
@@ -99,6 +99,8 @@ void nes_control_port2_devices(device_slot_interface &device);
void fc_control_port1_devices(device_slot_interface &device);
void fc_control_port2_devices(device_slot_interface &device);
void fc_expansion_devices(device_slot_interface &device);
+void majesco_control_port1_devices(device_slot_interface &device);
+void majesco_control_port2_devices(device_slot_interface &device);
#endif // MAME_BUS_NES_CTRL_CTRL_H
diff --git a/src/devices/bus/nes_ctrl/joypad.cpp b/src/devices/bus/nes_ctrl/joypad.cpp
index 08849bb0af5..f8ae2c30e95 100644
--- a/src/devices/bus/nes_ctrl/joypad.cpp
+++ b/src/devices/bus/nes_ctrl/joypad.cpp
@@ -39,7 +39,8 @@ DEFINE_DEVICE_TYPE(NES_FCPAD_P2, nes_fcpad2_device, "nes_fcpad2", "Ninten
DEFINE_DEVICE_TYPE(NES_CCPAD_LEFT, nes_ccpadl_device, "nes_ccpadl", "FC Crazy Climber Left Pad")
DEFINE_DEVICE_TYPE(NES_CCPAD_RIGHT, nes_ccpadr_device, "nes_ccpadr", "FC Crazy Climber Right Pad")
DEFINE_DEVICE_TYPE(NES_ARCSTICK, nes_arcstick_device, "nes_arcstick", "Nintendo Family Computer Arcade Stick")
-
+// for the standalone TV Plug and Play
+DEFINE_DEVICE_TYPE(NES_VT_MAJESCO_DDR, nes_vt_majesco_ddr_device, "nes_ddr", "Majesco DDR Pad")
static INPUT_PORTS_START( nes_joypad )
PORT_START("JOYPAD")
@@ -77,6 +78,18 @@ static INPUT_PORTS_START( nes_ccpad_left )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY
INPUT_PORTS_END
+static INPUT_PORTS_START( nes_ddr )
+ PORT_START("JOYPAD")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Up Arrow") // these can't be treated as a joystick as opposing directions are often required
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Down Arrow")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Left Arrow")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Right Arrow")
+INPUT_PORTS_END
+
static INPUT_PORTS_START( nes_ccpad_right )
PORT_START("JOYPAD")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -142,6 +155,10 @@ ioport_constructor nes_arcstick_device::device_input_ports() const
return INPUT_PORTS_NAME( nes_arcstick );
}
+ioport_constructor nes_vt_majesco_ddr_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( nes_ddr );
+}
static void arcstick_daisy(device_slot_interface &device)
@@ -196,6 +213,11 @@ nes_ccpadr_device::nes_ccpadr_device(const machine_config &mconfig, const char *
{
}
+nes_vt_majesco_ddr_device::nes_vt_majesco_ddr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ nes_joypad_device(mconfig, NES_VT_MAJESCO_DDR, tag, owner, clock)
+{
+}
+
nes_arcstick_device::nes_arcstick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
nes_joypad_device(mconfig, NES_ARCSTICK, tag, owner, clock),
m_daisychain(*this, "subexp"),
diff --git a/src/devices/bus/nes_ctrl/joypad.h b/src/devices/bus/nes_ctrl/joypad.h
index b503f7d4ec8..46cfd854756 100644
--- a/src/devices/bus/nes_ctrl/joypad.h
+++ b/src/devices/bus/nes_ctrl/joypad.h
@@ -80,6 +80,17 @@ public:
virtual ioport_constructor device_input_ports() const override;
};
+// ======================> nes_vt_majesco_ddr_device
+
+class nes_vt_majesco_ddr_device : public nes_joypad_device
+{
+public:
+ // construction/destruction
+ nes_vt_majesco_ddr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual ioport_constructor device_input_ports() const override;
+};
+
// ======================> nes_arcstick_device
class nes_arcstick_device : public nes_joypad_device
@@ -102,10 +113,11 @@ protected:
// device type definition
-DECLARE_DEVICE_TYPE(NES_JOYPAD, nes_joypad_device)
-DECLARE_DEVICE_TYPE(NES_FCPAD_P2, nes_fcpad2_device)
-DECLARE_DEVICE_TYPE(NES_CCPAD_LEFT, nes_ccpadl_device)
-DECLARE_DEVICE_TYPE(NES_CCPAD_RIGHT, nes_ccpadr_device)
-DECLARE_DEVICE_TYPE(NES_ARCSTICK, nes_arcstick_device)
+DECLARE_DEVICE_TYPE(NES_JOYPAD, nes_joypad_device)
+DECLARE_DEVICE_TYPE(NES_FCPAD_P2, nes_fcpad2_device)
+DECLARE_DEVICE_TYPE(NES_CCPAD_LEFT, nes_ccpadl_device)
+DECLARE_DEVICE_TYPE(NES_CCPAD_RIGHT, nes_ccpadr_device)
+DECLARE_DEVICE_TYPE(NES_ARCSTICK, nes_arcstick_device)
+DECLARE_DEVICE_TYPE(NES_VT_MAJESCO_DDR, nes_vt_majesco_ddr_device)
#endif // MAME_BUS_NES_CTRL_JOYPAD_H
diff --git a/src/devices/machine/ds1205.h b/src/devices/machine/ds1205.h
index 92941c87090..7f854d901fc 100644
--- a/src/devices/machine/ds1205.h
+++ b/src/devices/machine/ds1205.h
@@ -20,7 +20,7 @@ class ds1205_device : public device_t, public device_nvram_interface
{
public:
// construction/destruction
- ds1205_device( const machine_config &mconfig, const char *tag, device_t *owner, u32 clock );
+ ds1205_device( const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
DECLARE_WRITE_LINE_MEMBER( write_rst );
DECLARE_WRITE_LINE_MEMBER( write_clk );
diff --git a/src/devices/sound/8950intf.h b/src/devices/sound/8950intf.h
index 258e27ccdb2..fd65a036ef8 100644
--- a/src/devices/sound/8950intf.h
+++ b/src/devices/sound/8950intf.h
@@ -6,21 +6,6 @@
#pragma once
-#define MCFG_Y8950_IRQ_HANDLER(cb) \
- downcast<y8950_device &>(*device).set_irq_handler((DEVCB_##cb));
-
-#define MCFG_Y8950_KEYBOARD_READ_HANDLER(cb) \
- downcast<y8950_device &>(*device).set_keyboard_read_handler((DEVCB_##cb));
-
-#define MCFG_Y8950_KEYBOARD_WRITE_HANDLER(cb) \
- downcast<y8950_device &>(*device).set_keyboard_write_handler((DEVCB_##cb));
-
-#define MCFG_Y8950_IO_READ_HANDLER(cb) \
- downcast<y8950_device &>(*device).set_io_read_handler((DEVCB_##cb));
-
-#define MCFG_Y8950_IO_WRITE_HANDLER(cb) \
- downcast<y8950_device &>(*device).set_io_write_handler((DEVCB_##cb));
-
class y8950_device : public device_t,
public device_sound_interface,
public device_rom_interface
@@ -29,11 +14,11 @@ public:
y8950_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration helpers
- template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_keyboard_read_handler(Object &&cb) { return m_keyboard_read_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_keyboard_write_handler(Object &&cb) { return m_keyboard_write_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_io_read_handler(Object &&cb) { return m_io_read_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_io_write_handler(Object &&cb) { return m_io_write_handler.set_callback(std::forward<Object>(cb)); }
+ auto irq() { return m_irq_handler.bind(); }
+ auto keyboard_read() { return m_keyboard_read_handler.bind(); }
+ auto keyboard_write() { return m_keyboard_write_handler.bind(); }
+ auto io_read() { return m_io_read_handler.bind(); }
+ auto io_write() { return m_io_write_handler.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/sound/ad1848.cpp b/src/devices/sound/ad1848.cpp
index 27c4d87ce70..1049a03a177 100644
--- a/src/devices/sound/ad1848.cpp
+++ b/src/devices/sound/ad1848.cpp
@@ -22,15 +22,19 @@ ad1848_device::ad1848_device(const machine_config &mconfig, const char *tag, dev
{
}
-MACHINE_CONFIG_START(ad1848_device::device_add_mconfig)
+void ad1848_device::device_add_mconfig(machine_config &config)
+{
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ldac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
- MCFG_DEVICE_ADD("rdac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // 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)
-MACHINE_CONFIG_END
+ DAC_16BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5); // unknown DAC
+ DAC_16BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // 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);
+}
void ad1848_device::device_start()
diff --git a/src/devices/sound/ad1848.h b/src/devices/sound/ad1848.h
index 07aec2ee991..61d8a9202d8 100644
--- a/src/devices/sound/ad1848.h
+++ b/src/devices/sound/ad1848.h
@@ -8,19 +8,13 @@
#include "sound/dac.h"
-#define MCFG_AD1848_IRQ_CALLBACK(cb) \
- downcast<ad1848_device &>(*device).set_irq_callback((DEVCB_##cb));
-
-#define MCFG_AD1848_DRQ_CALLBACK(cb) \
- downcast<ad1848_device &>(*device).set_drq_callback((DEVCB_##cb));
-
class ad1848_device : public device_t
{
public:
ad1848_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_drq_callback(Object &&cb) { return m_drq_cb.set_callback(std::forward<Object>(cb)); }
+ auto irq() { return m_irq_cb.bind(); }
+ auto drq() { return m_drq_cb.bind(); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
diff --git a/src/devices/sound/k054539.h b/src/devices/sound/k054539.h
index 3dfb22f4583..ebc117d494c 100644
--- a/src/devices/sound/k054539.h
+++ b/src/devices/sound/k054539.h
@@ -13,16 +13,6 @@
#define K054539_CB_MEMBER(_name) void _name(double left, double right)
-#define MCFG_K054539_APAN_CB(_class, _method) \
- downcast<k054539_device &>(*device).set_analog_callback(k054539_device::cb_delegate(&_class::_method, #_class "::" #_method, this));
-
-#define MCFG_K054539_REGION_OVERRRIDE(_region) \
- downcast<k054539_device &>(*device).set_override("^" _region);
-
-#define MCFG_K054539_TIMER_HANDLER(_devcb) \
- downcast<k054539_device &>(*device).set_timer_handler(DEVCB_##_devcb);
-
-
class k054539_device : public device_t,
public device_sound_interface,
public device_rom_interface
@@ -42,10 +32,18 @@ public:
k054539_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration helpers
- template <typename Object> void set_analog_callback(Object &&cb) { m_apan_cb = std::forward<Object>(cb); }
- template <class Object> devcb_base &set_timer_handler(Object &&cb) { return m_timer_handler.set_callback(std::forward<Object>(cb)); }
auto timer_handler() { return m_timer_handler.bind(); }
+ void set_analog_callback(cb_delegate callback) { m_apan_cb = callback; }
+ template <class FunctionClass> void set_analog_callback(const char *devname, void (FunctionClass::*callback)(double, double), const char *name)
+ {
+ set_analog_callback(cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ template <class FunctionClass> void set_analog_callback(void (FunctionClass::*callback)(double, double), const char *name)
+ {
+ set_analog_callback(cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+
DECLARE_WRITE8_MEMBER(write);
DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/sound/okim6258.h b/src/devices/sound/okim6258.h
index aa4d3df0cca..6ca2c67532b 100644
--- a/src/devices/sound/okim6258.h
+++ b/src/devices/sound/okim6258.h
@@ -7,20 +7,6 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_OKIM6258_DIVIDER(div) \
- downcast<okim6258_device &>(*device).set_start_div((okim6258_device::div));
-
-#define MCFG_OKIM6258_ADPCM_TYPE(type) \
- downcast<okim6258_device &>(*device).set_type((okim6258_device::type));
-
-#define MCFG_OKIM6258_OUT_BITS(bits) \
- downcast<okim6258_device &>(*device).set_outbits((okim6258_device::bits));
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
diff --git a/src/mame/drivers/gijoe.cpp b/src/mame/drivers/gijoe.cpp
index 1dbbc9e7f96..7a809a57e95 100644
--- a/src/mame/drivers/gijoe.cpp
+++ b/src/mame/drivers/gijoe.cpp
@@ -291,31 +291,31 @@ void gijoe_state::machine_reset()
m_cur_control2 = 0;
}
-MACHINE_CONFIG_START(gijoe_state::gijoe)
-
+void gijoe_state::gijoe(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) /* 16MHz Confirmed */
- MCFG_DEVICE_PROGRAM_MAP(gijoe_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gijoe_state, gijoe_interrupt)
+ M68000(config, m_maincpu, XTAL(32'000'000)/2); /* 16MHz Confirmed */
+ m_maincpu->set_addrmap(AS_PROGRAM, &gijoe_state::gijoe_map);
+ m_maincpu->set_vblank_int("screen", FUNC(gijoe_state::gijoe_interrupt));
- MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(32'000'000)/4) /* Amuse & confirmed. Z80E at 8MHz */
- MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ Z80(config, m_audiocpu, XTAL(32'000'000)/4); /* Amuse & confirmed. Z80E at 8MHz */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &gijoe_state::sound_map);
EEPROM_ER5911_8BIT(config, "eeprom");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_DRIVER(gijoe_state, screen_update_gijoe)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_PALETTE_ADD("palette", 2048)
- MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
- MCFG_PALETTE_ENABLE_SHADOWS()
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(64*8, 32*8);
+ screen.set_visarea(24, 24+288-1, 16, 16+224-1);
+ screen.set_screen_update(FUNC(gijoe_state::screen_update_gijoe));
+ screen.set_palette("palette");
+
+ palette_device &palette(PALETTE(config, "palette", 2048));
+ palette.set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
+ palette.enable_shadows();
K056832(config, m_k056832, 0);
m_k056832->set_tile_callback(FUNC(gijoe_state::tile_callback), this);
@@ -335,11 +335,11 @@ MACHINE_CONFIG_START(gijoe_state::gijoe)
K054321(config, m_k054321, "lspeaker", "rspeaker");
- MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
- MCFG_K054539_TIMER_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
-MACHINE_CONFIG_END
+ k054539_device &k054539(K054539(config, "k054539", XTAL(18'432'000)));
+ k054539.timer_handler().set_inputline("audiocpu", INPUT_LINE_NMI);
+ k054539.add_route(0, "rspeaker", 1.0);
+ k054539.add_route(1, "lspeaker", 1.0);
+}
ROM_START( gijoe )
diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp
index 062b35fd3df..a81d2f6a0c1 100644
--- a/src/mame/drivers/konamigx.cpp
+++ b/src/mame/drivers/konamigx.cpp
@@ -1612,17 +1612,18 @@ WRITE_LINE_MEMBER(konamigx_state::hblank_irq_ack_w)
m_gx_syncen |= 0x40;
}
-MACHINE_CONFIG_START(konamigx_state::konamigx)
+void konamigx_state::konamigx(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68EC020, MASTER_CLOCK)
- MCFG_DEVICE_PROGRAM_MAP(gx_type2_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", konamigx_state, konamigx_type2_vblank_irq)
+ M68EC020(config, m_maincpu, MASTER_CLOCK);
+ m_maincpu->set_addrmap(AS_PROGRAM, &konamigx_state::gx_type2_map);
+ m_maincpu->set_vblank_int("screen", FUNC(konamigx_state::konamigx_type2_vblank_irq));
- MCFG_DEVICE_ADD("soundcpu", M68000, SUB_CLOCK/2)
- MCFG_DEVICE_PROGRAM_MAP(gxsndmap)
+ M68000(config, m_soundcpu, SUB_CLOCK/2);
+ m_soundcpu->set_addrmap(AS_PROGRAM, &konamigx_state::gxsndmap);
- MCFG_DEVICE_ADD("dasp", TMS57002, MASTER_CLOCK/2)
- MCFG_DEVICE_DATA_MAP(gxtmsmap)
+ TMS57002(config, m_dasp, MASTER_CLOCK/2);
+ m_dasp->set_addrmap(AS_DATA, &konamigx_state::gxtmsmap);
K053252(config, m_k053252, MASTER_CLOCK/4);
m_k053252->set_offsets(24, 16);
@@ -1630,7 +1631,7 @@ MACHINE_CONFIG_START(konamigx_state::konamigx)
m_k053252->int2_ack().set(FUNC(konamigx_state::hblank_irq_ack_w));
m_k053252->set_screen("screen");
- MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+ config.m_minimum_quantum = attotime::from_hz(6000);
MCFG_MACHINE_START_OVERRIDE(konamigx_state,konamigx)
MCFG_MACHINE_RESET_OVERRIDE(konamigx_state,konamigx)
@@ -1638,22 +1639,22 @@ MACHINE_CONFIG_START(konamigx_state::konamigx)
EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
- MCFG_SCREEN_RAW_PARAMS(8000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223)
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
+ m_screen->set_raw(8000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223);
/* These parameters are actual value written to the CCU.
tbyahhoo attract mode desync is caused by another matter. */
//MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
// TODO: WTF, without these most games crashes? Some legacy call in video code???
- MCFG_SCREEN_SIZE(1024, 1024)
- MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx)
+ m_screen->set_size(1024, 1024);
+ m_screen->set_visarea(24, 24+288-1, 16, 16+224-1);
+ m_screen->set_screen_update(FUNC(konamigx_state::screen_update_konamigx));
- MCFG_PALETTE_ADD("palette", 8192)
- MCFG_PALETTE_FORMAT(XRGB)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_ENABLE_HILIGHTS()
+ PALETTE(config, m_palette, 8192);
+ m_palette->set_format(PALETTE_FORMAT_XRGB);
+ m_palette->enable_shadows();
+ m_palette->enable_hilights();
K056832(config, m_k056832, 0);
m_k056832->set_tile_callback(FUNC(konamigx_state::type2_tile_callback), this);
@@ -1678,31 +1679,29 @@ MACHINE_CONFIG_START(konamigx_state::konamigx)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_MODIFY("dasp")
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.3) // Connected to the aux input of respective 54539.
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.3)
-
- MCFG_SOUND_ROUTE(2, "lspeaker", 0.3)
- MCFG_SOUND_ROUTE(3, "rspeaker", 0.3)
+ m_dasp->add_route(0, "lspeaker", 0.3); // Connected to the aux input of respective 54539.
+ m_dasp->add_route(1, "rspeaker", 0.3);
+ m_dasp->add_route(2, "lspeaker", 0.3);
+ m_dasp->add_route(3, "rspeaker", 0.3);
K056800(config, m_k056800, XTAL(18'432'000));
m_k056800->int_callback().set_inputline(m_soundcpu, M68K_IRQ_1);
- MCFG_DEVICE_ADD("k054539_1", K054539, XTAL(18'432'000))
- MCFG_DEVICE_ROM("k054539")
- MCFG_K054539_TIMER_HANDLER(WRITELINE(*this, konamigx_state, k054539_irq_gen))
- MCFG_SOUND_ROUTE(0, "dasp", 0.5, 0)
- MCFG_SOUND_ROUTE(1, "dasp", 0.5, 1)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-
- MCFG_DEVICE_ADD("k054539_2", K054539, XTAL(18'432'000))
- MCFG_DEVICE_ROM("k054539")
- MCFG_SOUND_ROUTE(0, "dasp", 0.5, 2)
- MCFG_SOUND_ROUTE(1, "dasp", 0.5, 3)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-MACHINE_CONFIG_END
+ K054539(config, m_k054539_1, XTAL(18'432'000));
+ m_k054539_1->set_device_rom_tag("k054539");
+ m_k054539_1->timer_handler().set(FUNC(konamigx_state::k054539_irq_gen));
+ m_k054539_1->add_route(0, "dasp", 0.5, 0);
+ m_k054539_1->add_route(1, "dasp", 0.5, 1);
+ m_k054539_1->add_route(0, "lspeaker", 1.0);
+ m_k054539_1->add_route(1, "rspeaker", 1.0);
+
+ K054539(config, m_k054539_2, XTAL(18'432'000));
+ m_k054539_2->set_device_rom_tag("k054539");
+ m_k054539_2->add_route(0, "dasp", 0.5, 2);
+ m_k054539_2->add_route(1, "dasp", 0.5, 3);
+ m_k054539_2->add_route(0, "lspeaker", 1.0);
+ m_k054539_2->add_route(1, "rspeaker", 1.0);
+}
void konamigx_state::konamigx_bios(machine_config &config)
{
@@ -1733,7 +1732,8 @@ void konamigx_state::tbyahhoo(machine_config &config)
m_k056832->set_config("gfx1", K056832_BPP_5, 0, 0);
}
-MACHINE_CONFIG_START(konamigx_state::dragoonj)
+void konamigx_state::dragoonj(machine_config &config)
+{
konamigx(config);
MCFG_VIDEO_START_OVERRIDE(konamigx_state, dragoonj)
@@ -1743,27 +1743,30 @@ MACHINE_CONFIG_START(konamigx_state::dragoonj)
m_k055673->set_sprite_callback(FUNC(konamigx_state::dragoonj_sprite_callback), this);
m_k055673->set_config("gfx2", K055673_LAYOUT_RNG, -53, -23);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(konamigx_state::le2)
+void konamigx_state::le2(machine_config &config)
+{
konamigx(config);
MCFG_VIDEO_START_OVERRIDE(konamigx_state, le2)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", konamigx_state, konamigx_type2_scanline, "screen", 0, 1)
+
+ TIMER(config, "scantimer").configure_scanline(FUNC(konamigx_state::konamigx_type2_scanline), "screen", 0, 1);
m_k056832->set_config("gfx1", K056832_BPP_8, 1, 0);
m_k055673->set_sprite_callback(FUNC(konamigx_state::le2_sprite_callback), this);
m_k055673->set_config("gfx2", K055673_LAYOUT_LE2, -46, -23);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(konamigx_state::konamigx_6bpp)
+void konamigx_state::konamigx_6bpp(machine_config &config)
+{
konamigx(config);
MCFG_VIDEO_START_OVERRIDE(konamigx_state, konamigx_6bpp)
m_k056832->set_config("gfx1", K056832_BPP_6, 0, 0);
m_k055673->set_config("gfx2", K055673_LAYOUT_GX, -46, -23);
-MACHINE_CONFIG_END
+}
void konamigx_state::salmndr2(machine_config &config)
{
@@ -1774,31 +1777,33 @@ void konamigx_state::salmndr2(machine_config &config)
m_k055673->set_config("gfx2", K055673_LAYOUT_GX6, -48, -23);
}
-MACHINE_CONFIG_START(konamigx_state::opengolf)
+void konamigx_state::opengolf(machine_config &config)
+{
konamigx(config);
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_RAW_PARAMS(8000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223)
- MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_opengolf)
+ m_screen->set_raw(8000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223);
+ m_screen->set_visarea(40, 40+384-1, 16, 16+224-1);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_opengolf);
+
MCFG_VIDEO_START_OVERRIDE(konamigx_state, opengolf)
m_k055673->set_config("gfx2", K055673_LAYOUT_GX6, -53, -23);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(gx_type1_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &konamigx_state::gx_type1_map);
adc0834_device &adc(ADC0834(config, "adc0834", 0));
adc.set_input_callback(FUNC(konamigx_state::adc0834_callback));
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(konamigx_state::racinfrc)
+void konamigx_state::racinfrc(machine_config &config)
+{
konamigx(config);
- MCFG_SCREEN_MODIFY("screen")
- //MCFG_SCREEN_RAW_PARAMS(6000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223)
- //MCFG_SCREEN_VISIBLE_AREA(32, 32+384-1, 16, 16+224-1)
+ //m_screen->set_raw(6000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223);
+ //m_screen->set_visarea(32, 32+384-1, 16, 16+224-1);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_racinfrc);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_racinfrc)
MCFG_VIDEO_START_OVERRIDE(konamigx_state, racinfrc)
m_k053252->set_offsets(24-8+16, 0);
@@ -1807,23 +1812,23 @@ MACHINE_CONFIG_START(konamigx_state::racinfrc)
m_k055673->set_config("gfx2", K055673_LAYOUT_GX, -53, -23);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(gx_type1_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &konamigx_state::gx_type1_map);
adc0834_device &adc(ADC0834(config, "adc0834", 0));
adc.set_input_callback(FUNC(konamigx_state::adc0834_callback));
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(konamigx_state::gxtype3)
+void konamigx_state::gxtype3(machine_config &config)
+{
konamigx(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(gx_type3_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", konamigx_state, konamigx_type4_scanline, "screen", 0, 1)
+ m_maincpu->set_addrmap(AS_PROGRAM, &konamigx_state::gx_type3_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(konamigx_state::konamigx_type4_scanline), "screen", 0, 1);
config.set_default_layout(layout_dualhsxs);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_type3)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_type3);
+
MCFG_VIDEO_START_OVERRIDE(konamigx_state, konamigx_type3)
m_k053252->set_offsets(0, 16);
@@ -1833,53 +1838,49 @@ MACHINE_CONFIG_START(konamigx_state::gxtype3)
m_k055673->set_config("gfx2", K055673_LAYOUT_GX6, -132, -23);
- MCFG_DEVICE_REMOVE("palette")
- MCFG_PALETTE_ADD("palette", 16384)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_ENABLE_HILIGHTS()
-
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
- MCFG_SCREEN_SIZE(1024, 1024)
- MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_left)
-
- MCFG_SCREEN_ADD("screen2", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
- MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
- MCFG_SCREEN_SIZE(1024, 1024)
- MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_right)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(konamigx_state::gxtype4)
+ PALETTE(config.replace(), m_palette, 16384);
+ m_palette->enable_shadows();
+ m_palette->enable_hilights();
+
+ m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE);
+ m_screen->set_size(1024, 1024);
+ m_screen->set_visarea(0, 576-1, 16, 32*8-1-16);
+ m_screen->set_screen_update(FUNC(konamigx_state::screen_update_konamigx_left));
+
+ screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER));
+ screen2.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE);
+ screen2.set_raw(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223);
+ screen2.set_size(1024, 1024);
+ screen2.set_visarea(0, 576-1, 16, 32*8-1-16);
+ screen2.set_screen_update(FUNC(konamigx_state::screen_update_konamigx_right));
+}
+
+void konamigx_state::gxtype4(machine_config &config)
+{
konamigx(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(gx_type4_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", konamigx_state, konamigx_type4_scanline, "screen", 0, 1)
+ m_maincpu->set_addrmap(AS_PROGRAM, &konamigx_state::gx_type4_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(konamigx_state::konamigx_type4_scanline), "screen", 0, 1);
config.set_default_layout(layout_dualhsxs);
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
- //MCFG_SCREEN_SIZE(128*8, 264)
- //MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_left)
-
- MCFG_SCREEN_ADD("screen2", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
- MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
- MCFG_SCREEN_SIZE(1024, 1024)
- MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_right)
-
- MCFG_DEVICE_REMOVE("palette")
- MCFG_PALETTE_ADD("palette", 8192)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_ENABLE_HILIGHTS()
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_type4)
+ m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE);
+ //m_screen->set_size(128*8, 264);
+ //m_screen->set_visarea(0, 384-1, 16, 32*8-1-16);
+ m_screen->set_screen_update(FUNC(konamigx_state::screen_update_konamigx_left));
+
+ screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER));
+ screen2.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE);
+ screen2.set_raw(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223);
+ screen2.set_size(1024, 1024);
+ screen2.set_visarea(0, 384-1, 16, 32*8-1-16);
+ screen2.set_screen_update(FUNC(konamigx_state::screen_update_konamigx_right));
+
+ PALETTE(config.replace(), m_palette, 8192);
+ m_palette->enable_shadows();
+ m_palette->enable_hilights();
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_type4);
MCFG_VIDEO_START_OVERRIDE(konamigx_state, konamigx_type4)
m_k053252->set_offsets(0, 16);
@@ -1888,35 +1889,35 @@ MACHINE_CONFIG_START(konamigx_state::gxtype4)
m_k056832->set_config("gfx1", K056832_BPP_8, 0, 0);
m_k055673->set_config("gfx2", K055673_LAYOUT_GX6, -79, -24); // -23 looks better in intro
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(konamigx_state::gxtype4_vsn)
+void konamigx_state::gxtype4_vsn(machine_config &config)
+{
gxtype4(config);
config.set_default_layout(layout_dualhsxs);
- //MCFG_SCREEN_MODIFY("screen")
- //MCFG_SCREEN_SIZE(128*8, 32*8)
- //MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
+ //m_screen->set_size(128*8, 32*8);
+ //m_screen->set_visarea(0, 576-1, 16, 32*8-1-16);
m_k053252->set_offsets(0, 16);
- MCFG_SCREEN_MODIFY("screen2")
- MCFG_SCREEN_SIZE(1024, 1024)
- MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
+ subdevice<screen_device>("screen2")->set_size(1024, 1024);
+ subdevice<screen_device>("screen2")->set_visarea(0, 576-1, 16, 32*8-1-16);
MCFG_VIDEO_START_OVERRIDE(konamigx_state, konamigx_type4_vsn)
m_k056832->set_config("gfx1", K056832_BPP_8, 0, 2); // set djmain_hack to 2 to kill layer association or half the tilemaps vanish on screen 0
m_k055673->set_config("gfx2", K055673_LAYOUT_GX6, -132, -23);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(konamigx_state::gxtype4sd2)
+void konamigx_state::gxtype4sd2(machine_config &config)
+{
gxtype4(config);
MCFG_VIDEO_START_OVERRIDE(konamigx_state, konamigx_type4_sd2)
m_k055673->set_config("gfx2", K055673_LAYOUT_GX6, -81, -23);
-MACHINE_CONFIG_END
+}
void konamigx_state::winspike(machine_config &config)
{
diff --git a/src/mame/drivers/lethal.cpp b/src/mame/drivers/lethal.cpp
index efe2a3d983c..b05d14dfcef 100644
--- a/src/mame/drivers/lethal.cpp
+++ b/src/mame/drivers/lethal.cpp
@@ -489,32 +489,32 @@ void lethal_state::machine_reset()
m_bank4000->set_bank(0);
}
-MACHINE_CONFIG_START(lethal_state::lethalen)
-
+void lethal_state::lethalen(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", HD6309, MAIN_CLOCK/2) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(le_main)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lethal_state, lethalen_interrupt)
+ HD6309(config, m_maincpu, MAIN_CLOCK/2); /* verified on pcb */
+ m_maincpu->set_addrmap(AS_PROGRAM, &lethal_state::le_main);
+ m_maincpu->set_vblank_int("screen", FUNC(lethal_state::lethalen_interrupt));
- MCFG_DEVICE_ADD("soundcpu", Z80, MAIN_CLOCK/4) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(le_sound)
+ Z80(config, m_soundcpu, MAIN_CLOCK/4); /* verified on pcb */
+ m_soundcpu->set_addrmap(AS_PROGRAM, &lethal_state::le_sound);
- ADDRESS_MAP_BANK(config, "bank4000").set_map(&lethal_state::bank4000_map).set_options(ENDIANNESS_BIG, 8, 16, 0x4000);
+ ADDRESS_MAP_BANK(config, m_bank4000).set_map(&lethal_state::bank4000_map).set_options(ENDIANNESS_BIG, 8, 16, 0x4000);
EEPROM_ER5911_8BIT(config, "eeprom");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(59.62) /* verified on pcb */
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(216, 504-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(lethal_state, screen_update_lethalen)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_PALETTE_ADD("palette", 8192)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(59.62); /* verified on pcb */
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(64*8, 32*8);
+ screen.set_visarea(216, 504-1, 16, 240-1);
+ screen.set_screen_update(FUNC(lethal_state::screen_update_lethalen));
+ screen.set_palette(m_palette);
+
+ PALETTE(config, m_palette, 8192);
+ m_palette->enable_shadows();
+ m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
K056832(config, m_k056832, 0);
m_k056832->set_tile_callback(FUNC(lethal_state::tile_callback), this);
@@ -535,20 +535,20 @@ MACHINE_CONFIG_START(lethal_state::lethalen)
K054321(config, m_k054321, "lspeaker", "rspeaker");
- MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
- MCFG_K054539_TIMER_HANDLER(INPUTLINE("soundcpu", INPUT_LINE_NMI))
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
-MACHINE_CONFIG_END
+ k054539_device &k054539(K054539(config, "k054539", XTAL(18'432'000)));
+ k054539.timer_handler().set_inputline("soundcpu", INPUT_LINE_NMI);
+ k054539.add_route(0, "rspeaker", 1.0);
+ k054539.add_route(1, "lspeaker", 1.0);
+}
-MACHINE_CONFIG_START(lethal_state::lethalej)
+void lethal_state::lethalej(machine_config &config)
+{
lethalen(config);
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VISIBLE_AREA(224, 512-1, 16, 240-1)
+ subdevice<screen_device>("screen")->set_visarea(224, 512-1, 16, 240-1);
m_k053244->set_offsets(-105, 0);
-MACHINE_CONFIG_END
+}
ROM_START( lethalen ) // US version UAE
ROM_REGION( 0x40000, "maincpu", 0 ) /* main program */
diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp
index f185d0975aa..bfff75d3ad5 100644
--- a/src/mame/drivers/mtouchxl.cpp
+++ b/src/mame/drivers/mtouchxl.cpp
@@ -211,36 +211,36 @@ void mtxl_state::cdrom(device_t *device)
}
#endif
-MACHINE_CONFIG_START(mtxl_state::at486)
- MCFG_DEVICE_ADD(m_maincpu, I486DX4, 33000000)
- MCFG_DEVICE_PROGRAM_MAP(at32_map)
- MCFG_DEVICE_IO_MAP(at32_io)
+void mtxl_state::at486(machine_config &config)
+{
+ I486DX4(config, m_maincpu, 33000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mtxl_state::at32_map);
+ m_maincpu->set_addrmap(AS_IO, &mtxl_state::at32_io);
#ifndef REAL_PCI_CHIPSET
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb)
+ m_maincpu->set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
- MCFG_DEVICE_ADD("mb", AT_MB, 0)
+ AT_MB(config, "mb", 0);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
// on board devices
- MCFG_DEVICE_ADD("board1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "ide", true) // FIXME: determine ISA bus clock
- MCFG_SLOT_OPTION_MACHINE_CONFIG("ide", cdrom)
- MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "svga_dm", true) // original is a gd-5440
+ ISA16_SLOT(config, "board1", 0, "mb:isabus", pc_isa16_cards, "ide", true).set_option_machine_config("ide", cdrom); // FIXME: determine ISA bus clock
+ ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, "svga_dm", true); // original is a gd-5440
ns16550_device &uart(NS16550(config, "ns16550", XTAL(1'843'200)));
uart.out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
uart.out_int_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir4_w));
- MCFG_MICROTOUCH_ADD("microtouch", 9600, WRITELINE(uart, ins8250_uart_device, rx_w))
+ MICROTOUCH(config, "microtouch", 9600).stx().set(uart, FUNC(ins8250_uart_device::rx_w));
- MCFG_DEVICE_ADD("cs4231", AD1848, 0)
- MCFG_AD1848_IRQ_CALLBACK(WRITELINE("mb:pic8259_master", pic8259_device, ir5_w))
- MCFG_AD1848_DRQ_CALLBACK(WRITELINE("mb:dma8237_1", am9517a_device, dreq1_w))
+ ad1848_device &cs4231(AD1848(config, "cs4231", 0));
+ cs4231.irq().set("mb:pic8259_master", FUNC(pic8259_device::ir5_w));
+ cs4231.drq().set("mb:dma8237_1", FUNC(am9517a_device::dreq1_w));
subdevice<am9517a_device>("mb:dma8237_1")->out_iow_callback<1>().set("cs4231", FUNC(ad1848_device::dack_w));
// remove the keyboard controller and use the HLE one which allow keys to be unmapped
- MCFG_DEVICE_REMOVE("mb:keybc");
- MCFG_DEVICE_REMOVE("mb:pc_kbdc");
+ config.device_remove("mb:keybc");
+ config.device_remove("mb:pc_kbdc");
kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
kbdc.system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
@@ -261,14 +261,15 @@ MACHINE_CONFIG_START(mtxl_state::at486)
AMD_29F040(config, "flash");
/* Security key */
- MCFG_DS1205_ADD("multikey")
+ DS1205(config, "multikey");
#ifdef REAL_PCI_CHIPSET
/* PCI root */
- MCFG_PCI_ROOT_ADD(":pci")
- MCFG_SIS85C496_ADD(":pci:05.0", ":maincpu", 32*1024*1024)
+ PCI_ROOT(config, ":pci");
+ // FIXME: This MCFG fragment does not compile. -R
+ //MCFG_SIS85C496_ADD(":pci:05.0", ":maincpu", 32*1024*1024)
#endif
-MACHINE_CONFIG_END
+}
#ifdef REAL_PCI_CHIPSET
#define MOTHERBOARD_ROMS \
diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp
index 92c669d480f..219f7993465 100644
--- a/src/mame/drivers/mystwarr.cpp
+++ b/src/mame/drivers/mystwarr.cpp
@@ -938,17 +938,17 @@ MACHINE_RESET_MEMBER(mystwarr_state,gaiapols)
}
-MACHINE_CONFIG_START(mystwarr_state::mystwarr)
-
+void mystwarr_state::mystwarr(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16000000) /* 16 MHz (confirmed) */
- MCFG_DEVICE_PROGRAM_MAP(mystwarr_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mystwarr_state, mystwarr_interrupt, "screen", 0, 1)
+ M68000(config, m_maincpu, 16000000); /* 16 MHz (confirmed) */
+ m_maincpu->set_addrmap(AS_PROGRAM, &mystwarr_state::mystwarr_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(mystwarr_state::mystwarr_interrupt), "screen", 0, 1);
- MCFG_DEVICE_ADD("soundcpu", Z80, 8000000)
- MCFG_DEVICE_PROGRAM_MAP(mystwarr_sound_map)
+ Z80(config, m_soundcpu, 8000000);
+ m_soundcpu->set_addrmap(AS_PROGRAM, &mystwarr_state::mystwarr_sound_map);
- MCFG_QUANTUM_TIME(attotime::from_hz(1920))
+ config.m_minimum_quantum = attotime::from_hz(1920);
EEPROM_ER5911_8BIT(config, "eeprom");
@@ -959,19 +959,19 @@ MACHINE_CONFIG_START(mystwarr_state::mystwarr)
MCFG_MACHINE_RESET_OVERRIDE(mystwarr_state,mystwarr)
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
-// MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_mystwarr)
-
- MCFG_PALETTE_ADD("palette", 2048)
- MCFG_PALETTE_FORMAT(XRGB)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_ENABLE_HILIGHTS()
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
+// m_screen->set_refresh_hz(60);
+ m_screen->set_raw(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(600));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(24, 24+288-1, 16, 16+224-1);
+ m_screen->set_screen_update(FUNC(mystwarr_state::screen_update_mystwarr));
+
+ PALETTE(config, m_palette, 2048);
+ m_palette->set_format(PALETTE_FORMAT_XRGB);
+ m_palette->enable_shadows();
+ m_palette->enable_hilights();
K056832(config, m_k056832, 0);
m_k056832->set_tile_callback(FUNC(mystwarr_state::mystwarr_tile_callback), this);
@@ -996,19 +996,20 @@ MACHINE_CONFIG_START(mystwarr_state::mystwarr)
K054321(config, m_k054321, "lspeaker", "rspeaker");
- MCFG_DEVICE_ADD("k054539_1", K054539, XTAL(18'432'000))
- MCFG_DEVICE_ADDRESS_MAP(0, mystwarr_k054539_map)
- MCFG_K054539_TIMER_HANDLER(WRITELINE(*this, mystwarr_state, k054539_nmi_gen))
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.0) /* stereo channels are inverted */
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
+ K054539(config, m_k054539_1, XTAL(18'432'000));
+ m_k054539_1->set_addrmap(0, &mystwarr_state::mystwarr_k054539_map);
+ m_k054539_1->timer_handler().set(FUNC(mystwarr_state::k054539_nmi_gen));
+ m_k054539_1->add_route(0, "rspeaker", 1.0); /* stereo channels are inverted */
+ m_k054539_1->add_route(1, "lspeaker", 1.0);
- MCFG_DEVICE_ADD("k054539_2", K054539, XTAL(18'432'000))
- MCFG_DEVICE_ADDRESS_MAP(0, mystwarr_k054539_map)
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.0) /* stereo channels are inverted */
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
-MACHINE_CONFIG_END
+ K054539(config, m_k054539_2, XTAL(18'432'000));
+ m_k054539_2->set_addrmap(0, &mystwarr_state::mystwarr_k054539_map);
+ m_k054539_2->add_route(0, "rspeaker", 1.0); /* stereo channels are inverted */
+ m_k054539_2->add_route(1, "lspeaker", 1.0);
+}
-MACHINE_CONFIG_START(mystwarr_state::viostorm)
+void mystwarr_state::viostorm(machine_config &config)
+{
mystwarr(config);
MCFG_MACHINE_RESET_OVERRIDE(mystwarr_state,viostorm)
@@ -1017,37 +1018,32 @@ MACHINE_CONFIG_START(mystwarr_state::viostorm)
m_k053252->set_offsets(40, 16);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(viostorm_map)
- MCFG_TIMER_MODIFY("scantimer")
- MCFG_TIMER_DRIVER_CALLBACK(mystwarr_state, metamrph_interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &mystwarr_state::viostorm_map);
+ subdevice<timer_device>("scantimer")->set_callback(FUNC(mystwarr_state::metamrph_interrupt));
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(mystwarr_state, viostorm)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_metamrph)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(900))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
+ m_screen->set_screen_update(FUNC(mystwarr_state::screen_update_metamrph));
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(900));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(40, 40+384-1, 16, 16+224-1);
m_k056832->set_tile_callback(FUNC(mystwarr_state::game4bpp_tile_callback), this);
m_k055673->set_sprite_callback(FUNC(mystwarr_state::metamrph_sprite_callback), this);
m_k055673->set_config("gfx2", K055673_LAYOUT_RNG, -62, -23);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(mystwarr_state::metamrph)
+void mystwarr_state::metamrph(machine_config &config)
+{
mystwarr(config);
MCFG_MACHINE_RESET_OVERRIDE(mystwarr_state,metamrph)
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(metamrph_map)
- MCFG_TIMER_MODIFY("scantimer")
- MCFG_TIMER_DRIVER_CALLBACK(mystwarr_state, metamrph_interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &mystwarr_state::metamrph_map);
+ subdevice<timer_device>("scantimer")->set_callback(FUNC(mystwarr_state::metamrph_interrupt));
m_k053252->set_offsets(24, 15);
@@ -1055,115 +1051,104 @@ MACHINE_CONFIG_START(mystwarr_state::metamrph)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(mystwarr_state, metamrph)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_metamrph)
-
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(900))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 15, 15+224-1)
+ m_screen->set_screen_update(FUNC(mystwarr_state::screen_update_metamrph));
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(900));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(24, 24+288-1, 15, 15+224-1);
m_k056832->set_tile_callback(FUNC(mystwarr_state::game4bpp_tile_callback), this);
m_k055673->set_sprite_callback(FUNC(mystwarr_state::metamrph_sprite_callback), this);
m_k055673->set_config("gfx2", K055673_LAYOUT_RNG, -51, -24);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(mystwarr_state::dadandrn)
+void mystwarr_state::dadandrn(machine_config &config)
+{
mystwarr(config);
MCFG_MACHINE_RESET_OVERRIDE(mystwarr_state,dadandrn)
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(dadandrn_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mystwarr_state, ddd_interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &mystwarr_state::dadandrn_map);
+ m_maincpu->set_vblank_int("screen", FUNC(mystwarr_state::ddd_interrupt));
config.device_remove("scantimer");
m_k053252->set_offsets(24, 16+1);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dadandrn)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_dadandrn);
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(mystwarr_state, dadandrn)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_dadandrn)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 17, 17+224-1)
+ m_screen->set_screen_update(FUNC(mystwarr_state::screen_update_dadandrn));
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(600));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(24, 24+288-1, 17, 17+224-1);
m_k056832->set_tile_callback(FUNC(mystwarr_state::game5bpp_tile_callback), this);
m_k055673->set_sprite_callback(FUNC(mystwarr_state::gaiapols_sprite_callback), this);
m_k055673->set_config("gfx2", K055673_LAYOUT_GX, -42, -22);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(mystwarr_state::gaiapols)
+void mystwarr_state::gaiapols(machine_config &config)
+{
mystwarr(config);
MCFG_MACHINE_RESET_OVERRIDE(mystwarr_state,gaiapols)
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(gaiapols_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mystwarr_state, ddd_interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &mystwarr_state::gaiapols_map);
+ m_maincpu->set_vblank_int("screen", FUNC(mystwarr_state::ddd_interrupt));
config.device_remove("scantimer");
m_k053252->set_offsets(40, 16);
K054000(config, "k054000", 0);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gaiapols)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_gaiapols);
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(mystwarr_state, gaiapols)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_dadandrn)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_RAW_PARAMS(8000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(40, 40+376-1, 16, 16+224-1)
+ m_screen->set_screen_update(FUNC(mystwarr_state::screen_update_dadandrn));
+ m_screen->set_raw(8000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(600));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(40, 40+376-1, 16, 16+224-1);
m_k056832->set_tile_callback(FUNC(mystwarr_state::game4bpp_tile_callback), this);
m_k055673->set_sprite_callback(FUNC(mystwarr_state::gaiapols_sprite_callback), this);
m_k055673->set_config("gfx2", K055673_LAYOUT_RNG, -61, -22); // stage2 brick walls
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(mystwarr_state::martchmp)
+void mystwarr_state::martchmp(machine_config &config)
+{
mystwarr(config);
MCFG_MACHINE_RESET_OVERRIDE(mystwarr_state,martchmp)
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(martchmp_map)
- MCFG_TIMER_MODIFY("scantimer")
- MCFG_TIMER_DRIVER_CALLBACK(mystwarr_state, mchamp_interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &mystwarr_state::martchmp_map);
+ subdevice<timer_device>("scantimer")->set_callback(FUNC(mystwarr_state::mchamp_interrupt));
- MCFG_DEVICE_MODIFY("soundcpu")
- MCFG_DEVICE_PROGRAM_MAP(martchmp_sound_map)
+ m_soundcpu->set_addrmap(AS_PROGRAM, &mystwarr_state::martchmp_sound_map);
m_k053252->set_clock(16000000/2);
m_k053252->set_offsets(32, 24-1);
- MCFG_PALETTE_MODIFY("palette")
- MCFG_PALETTE_FORMAT(XRGB)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_ENABLE_HILIGHTS()
+ m_palette->set_format(PALETTE_FORMAT_XRGB);
+ m_palette->enable_shadows();
+ m_palette->enable_hilights();
MCFG_VIDEO_START_OVERRIDE(mystwarr_state, martchmp)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
- MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_martchmp)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(32, 32+384-1, 16, 16+224-1)
+ m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ m_screen->set_screen_update(FUNC(mystwarr_state::screen_update_martchmp));
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(32, 32+384-1, 16, 16+224-1);
m_k056832->set_tile_callback(FUNC(mystwarr_state::game5bpp_tile_callback), this);
@@ -1173,11 +1158,11 @@ MACHINE_CONFIG_START(mystwarr_state::martchmp)
config.device_remove("k054539_1");
config.device_remove("k054539_2");
- MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
- MCFG_K054539_TIMER_HANDLER(WRITELINE(*this, mystwarr_state, k054539_nmi_gen))
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.0) /* stereo channels are inverted */
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
-MACHINE_CONFIG_END
+ k054539_device &k054539(K054539(config, "k054539", XTAL(18'432'000)));
+ k054539.timer_handler().set(FUNC(mystwarr_state::k054539_nmi_gen));
+ k054539.add_route(0, "rspeaker", 1.0); /* stereo channels are inverted */
+ k054539.add_route(1, "lspeaker", 1.0);
+}
/**********************************************************************************/
diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp
index aa6d19a83cf..e15f88bedbe 100644
--- a/src/mame/drivers/nes_vt.cpp
+++ b/src/mame/drivers/nes_vt.cpp
@@ -104,7 +104,10 @@ public:
, m_csel(*this, "CARTSEL")
{ }
+ void nes_vt_base(machine_config &config);
+
void nes_vt(machine_config &config);
+ void nes_vt_ddr(machine_config &config);
void nes_vt_hum(machine_config &config);
void nes_vt_pjoy(machine_config &config);
@@ -1349,7 +1352,7 @@ static const uint8_t descram_ppu_2012_2017[5][6] = {
{0x4, 0x7, 0x2, 0x6, 0x5, 0x3},
};
-void nes_vt_state::nes_vt(machine_config &config)
+void nes_vt_state::nes_vt_base(machine_config &config)
{
/* basic machine hardware */
M6502_VTSCR(config, m_maincpu, NTSC_APU_CLOCK); // selectable speed?
@@ -1373,9 +1376,6 @@ void nes_vt_state::nes_vt(machine_config &config)
ADDRESS_MAP_BANK(config, "prg").set_map(&nes_vt_state::prg_map).set_options(ENDIANNESS_LITTLE, 8, 15, 0x8000);
- 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();
@@ -1389,6 +1389,22 @@ void nes_vt_state::nes_vt(machine_config &config)
m_apu->add_route(ALL_OUTPUTS, "mono", 0.50);
}
+void nes_vt_state::nes_vt(machine_config &config)
+{
+ nes_vt_base(config);
+
+ NES_CONTROL_PORT(config, m_ctrl1, nes_control_port1_devices, "joypad");
+ NES_CONTROL_PORT(config, m_ctrl2, nes_control_port2_devices, "joypad");
+}
+
+void nes_vt_state::nes_vt_ddr(machine_config &config)
+{
+ nes_vt_base(config);
+
+ NES_CONTROL_PORT(config, m_ctrl1, majesco_control_port1_devices, "ddr");
+ NES_CONTROL_PORT(config, m_ctrl2, majesco_control_port2_devices, nullptr);
+}
+
void nes_vt_state::nes_vt_hum(machine_config &config)
{
nes_vt(config);
@@ -1842,8 +1858,8 @@ CONS( 200?, gprnrs16, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_ini
// Notes about the DDR games:
// * Missing PCM sounds (unsupported in NES VT APU code right now)
// * Console has stereo output (dual RCA connectors).
-CONS( 2006, ddrdismx, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "Majesco (licensed from Konami, Disney)", "Dance Dance Revolution Disney Mix", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // shows (c)2001 Disney onscreen, but that's recycled art from the Playstation release, actual release was 2006
-CONS( 2006, ddrstraw, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "Majesco (licensed from Konami)", "Dance Dance Revolution Strawberry Shortcake", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+CONS( 2006, ddrdismx, 0, 0, nes_vt_ddr, nes_vt, nes_vt_state, empty_init, "Majesco (licensed from Konami, Disney)", "Dance Dance Revolution Disney Mix", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // shows (c)2001 Disney onscreen, but that's recycled art from the Playstation release, actual release was 2006
+CONS( 2006, ddrstraw, 0, 0, nes_vt_ddr, nes_vt, nes_vt_state, empty_init, "Majesco (licensed from Konami)", "Dance Dance Revolution Strawberry Shortcake", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
// unsorted, these were all in nes.xml listed as ONE BUS systems
CONS( 200?, mc_dg101, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "dreamGEAR", "dreamGEAR 101 in 1", MACHINE_IMPERFECT_GRAPHICS ) // dreamGear, but no enhanced games?
diff --git a/src/mame/drivers/pcat_dyn.cpp b/src/mame/drivers/pcat_dyn.cpp
index 8f5428b7142..292ebb90a9e 100644
--- a/src/mame/drivers/pcat_dyn.cpp
+++ b/src/mame/drivers/pcat_dyn.cpp
@@ -163,18 +163,18 @@ void pcat_dyn_state::pcat_dyn_sb_conf(device_t *device)
MCFG_DEVICE_SLOT_INTERFACE(pc_joysticks, nullptr, true) // remove joystick
}
-MACHINE_CONFIG_START(pcat_dyn_state::pcat_dyn)
+void pcat_dyn_state::pcat_dyn(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I486, 40000000) /* Am486 DX-40 */
- MCFG_DEVICE_PROGRAM_MAP(pcat_map)
- MCFG_DEVICE_IO_MAP(pcat_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
+ I486(config, m_maincpu, 40000000); /* Am486 DX-40 */
+ m_maincpu->set_addrmap(AS_PROGRAM, &pcat_dyn_state::pcat_map);
+ m_maincpu->set_addrmap(AS_IO, &pcat_dyn_state::pcat_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
/* video hardware */
pcvideo_trident_vga(config);
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_DEVICE_REPLACE("vga", TVGA9000_VGA, 0)
+ subdevice<screen_device>("screen")->set_refresh_hz(60);
+ TVGA9000_VGA(config.replace(), "vga", 0);
pcat_common(config);
@@ -182,9 +182,9 @@ MACHINE_CONFIG_START(pcat_dyn_state::pcat_dyn)
m_mc146818->irq().set("pic8259_2", FUNC(pic8259_device::ir0_w));
m_mc146818->set_century_index(0x32);
- MCFG_DEVICE_ADD("ad1848", AD1848, 0)
- MCFG_AD1848_IRQ_CALLBACK(WRITELINE("pic8259_1", pic8259_device, ir5_w))
- MCFG_AD1848_DRQ_CALLBACK(WRITELINE("dma8237_1", am9517a_device, dreq0_w))
+ ad1848_device &ad1848(AD1848(config, "ad1848", 0));
+ ad1848.irq().set("pic8259_1", FUNC(pic8259_device::ir5_w));
+ ad1848.drq().set("dma8237_1", FUNC(am9517a_device::dreq0_w));
m_dma8237_1->out_iow_callback<0>().set("ad1848", FUNC(ad1848_device::dack_w));
m_dma8237_1->out_iow_callback<1>().set(FUNC(pcat_dyn_state::dma8237_1_dack_w));
@@ -218,10 +218,10 @@ MACHINE_CONFIG_START(pcat_dyn_state::pcat_dyn)
m_isabus->drq3_callback().set("dma8237_1", FUNC(am9517a_device::dreq3_w));
// FIXME: determine ISA bus clock
- MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", pcat_dyn_isa8_cards, "sb15", true)
- MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("sb15", pcat_dyn_sb_def)
- MCFG_SLOT_OPTION_MACHINE_CONFIG("sb15", pcat_dyn_sb_conf)
-MACHINE_CONFIG_END
+ isa8_slot_device &isa1(ISA8_SLOT(config, "isa1", 0, "isa", pcat_dyn_isa8_cards, "sb15", true));
+ isa1.set_option_device_input_defaults("sb15", DEVICE_INPUT_DEFAULTS_NAME(pcat_dyn_sb_def));
+ isa1.set_option_machine_config("sb15", pcat_dyn_sb_conf);
+}
/***************************************
*
diff --git a/src/mame/drivers/piratesh.cpp b/src/mame/drivers/piratesh.cpp
index e7800a322d4..f7f1ec0d56c 100644
--- a/src/mame/drivers/piratesh.cpp
+++ b/src/mame/drivers/piratesh.cpp
@@ -1,4 +1,5 @@
// license:BSD-3-Clause
+// copyright-holders:R. Belmont
/**************************************************************************
Pirate Ship
@@ -597,35 +598,35 @@ void piratesh_state::machine_reset()
}
-MACHINE_CONFIG_START(piratesh_state::piratesh)
-
+void piratesh_state::piratesh(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2)
- MCFG_DEVICE_PROGRAM_MAP(piratesh_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", piratesh_state, piratesh_interrupt, "screen", 0, 1)
+ M68000(config, m_maincpu, XTAL(32'000'000)/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &piratesh_state::piratesh_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(piratesh_state::piratesh_interrupt), "screen", 0, 1);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
K053252(config, m_k053252, XTAL(32'000'000)/4);
m_k053252->set_offsets(40, 16); // TODO
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
- MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ TICKET_DISPENSER(config, "ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ HOPPER(config, "hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
// MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223) // TODO
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_DRIVER(piratesh_state, screen_update_piratesh)
+ screen.set_raw(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223); // TODO
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(600));
+ screen.set_size(64*8, 32*8);
+ screen.set_visarea(24, 24+288-1, 16, 16+224-1);
+ screen.set_screen_update(FUNC(piratesh_state::screen_update_piratesh));
- MCFG_PALETTE_ADD("palette", 2048)
- MCFG_PALETTE_FORMAT(BGRX)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_ENABLE_HILIGHTS()
+ palette_device &palette(PALETTE(config, "palette", 2048));
+ palette.set_format(PALETTE_FORMAT_BGRX);
+ palette.enable_shadows();
+ palette.enable_hilights();
K056832(config, m_k056832, 0);
m_k056832->set_tile_callback(FUNC(piratesh_state::piratesh_tile_callback), this);
@@ -653,11 +654,11 @@ MACHINE_CONFIG_START(piratesh_state::piratesh)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
- MCFG_K054539_TIMER_HANDLER(WRITELINE(*this, piratesh_state, k054539_nmi_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.2)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.2)
-MACHINE_CONFIG_END
+ K054539(config, m_k054539, XTAL(18'432'000));
+ m_k054539->timer_handler().set(FUNC(piratesh_state::k054539_nmi_gen));
+ m_k054539->add_route(0, "lspeaker", 0.2);
+ m_k054539->add_route(1, "rspeaker", 0.2);
+}
diff --git a/src/mame/drivers/plygonet.cpp b/src/mame/drivers/plygonet.cpp
index 93cba3d29d2..2d1cff6bfba 100644
--- a/src/mame/drivers/plygonet.cpp
+++ b/src/mame/drivers/plygonet.cpp
@@ -552,38 +552,38 @@ WRITE_LINE_MEMBER(polygonet_state::k054539_nmi_gen)
m_sound_intck = state;
}
-MACHINE_CONFIG_START(polygonet_state::plygonet)
-
- MCFG_DEVICE_ADD("maincpu", M68EC020, XTAL(32'000'000)/2)
- MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", polygonet_state, polygonet_interrupt)
+void polygonet_state::plygonet(machine_config &config)
+{
+ M68EC020(config, m_maincpu, XTAL(32'000'000)/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &polygonet_state::main_map);
+ m_maincpu->set_vblank_int("screen", FUNC(polygonet_state::polygonet_interrupt));
- MCFG_DEVICE_ADD("dsp", DSP56156, XTAL(40'000'000))
- MCFG_DEVICE_PROGRAM_MAP(dsp_program_map)
- MCFG_DEVICE_DATA_MAP(dsp_data_map)
+ DSP56156(config, m_dsp, XTAL(40'000'000));
+ m_dsp->set_addrmap(AS_PROGRAM, &polygonet_state::dsp_program_map);
+ m_dsp->set_addrmap(AS_DATA, &polygonet_state::dsp_data_map);
- MCFG_DEVICE_ADD("audiocpu", Z80, 8000000)
- MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ Z80(config, m_audiocpu, 8000000);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &polygonet_state::sound_map);
- MCFG_QUANTUM_PERFECT_CPU("maincpu") /* TODO: TEMPORARY! UNTIL A MORE LOCALIZED SYNC CAN BE MADE */
+ config.m_perfect_cpu_quantum = subtag("maincpu"); /* TODO: TEMPORARY! UNTIL A MORE LOCALIZED SYNC CAN BE MADE */
- EEPROM_ER5911_8BIT(config, "eeprom");
+ EEPROM_ER5911_8BIT(config, m_eeprom);
WATCHDOG_TIMER(config, "watchdog");
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_plygonet)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_plygonet);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(64, 64+368-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(polygonet_state, screen_update_polygonet)
- MCFG_SCREEN_PALETTE("palette")
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(64*8, 32*8);
+ screen.set_visarea(64, 64+368-1, 0, 32*8-1);
+ screen.set_screen_update(FUNC(polygonet_state::screen_update_polygonet));
+ screen.set_palette(m_palette);
- MCFG_PALETTE_ADD("palette", 32768)
- MCFG_PALETTE_FORMAT(XRGB)
+ PALETTE(config, m_palette, 32768);
+ m_palette->set_format(PALETTE_FORMAT_XRGB);
K053936(config, m_k053936, 0);
@@ -593,11 +593,11 @@ MACHINE_CONFIG_START(polygonet_state::plygonet)
K054321(config, m_k054321, "lspeaker", "rspeaker");
- MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
- MCFG_K054539_TIMER_HANDLER(WRITELINE(*this, polygonet_state, k054539_nmi_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
-MACHINE_CONFIG_END
+ k054539_device &k054539(K054539(config, "k054539", XTAL(18'432'000)));
+ k054539.timer_handler().set(FUNC(polygonet_state::k054539_nmi_gen));
+ k054539.add_route(0, "lspeaker", 0.75);
+ k054539.add_route(1, "rspeaker", 0.75);
+}
/**********************************************************************************/
diff --git a/src/mame/drivers/qdrmfgp.cpp b/src/mame/drivers/qdrmfgp.cpp
index fb526b115e0..ddcf12cfaa7 100644
--- a/src/mame/drivers/qdrmfgp.cpp
+++ b/src/mame/drivers/qdrmfgp.cpp
@@ -523,30 +523,32 @@ void qdrmfgp_state::machine_reset()
* Machine driver
*
*************************************/
-MACHINE_CONFIG_START(qdrmfgp_state::qdrmfgp)
+void qdrmfgp_state::qdrmfgp(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) /* 16.000 MHz */
- MCFG_DEVICE_PROGRAM_MAP(qdrmfgp_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", qdrmfgp_state, qdrmfgp_interrupt, "screen", 0, 1)
+ M68000(config, m_maincpu, XTAL(32'000'000)/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &qdrmfgp_state::qdrmfgp_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(qdrmfgp_state::qdrmfgp_interrupt), "screen", 0, 1);
MCFG_MACHINE_START_OVERRIDE(qdrmfgp_state,qdrmfgp)
+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, true);
m_ata->irq_handler().set(FUNC(qdrmfgp_state::ide_interrupt));
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_DRIVER(qdrmfgp_state, screen_update_qdrmfgp)
- MCFG_SCREEN_PALETTE("palette")
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(64*8, 32*8);
+ screen.set_visarea(40, 40+384-1, 16, 16+224-1);
+ screen.set_screen_update(FUNC(qdrmfgp_state::screen_update_qdrmfgp));
+ screen.set_palette(m_palette);
- MCFG_PALETTE_ADD("palette", 2048)
- MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ PALETTE(config, m_palette, 2048);
+ m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
MCFG_VIDEO_START_OVERRIDE(qdrmfgp_state,qdrmfgp)
@@ -562,19 +564,19 @@ MACHINE_CONFIG_START(qdrmfgp_state::qdrmfgp)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
- MCFG_DEVICE_ADDRESS_MAP(0, qdrmfgp_k054539_map)
- MCFG_K054539_TIMER_HANDLER(WRITELINE(*this, qdrmfgp_state, k054539_irq1_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(qdrmfgp_state::qdrmfgp2)
+ k054539_device &k054539(K054539(config, m_k054539, XTAL(18'432'000)));
+ k054539.set_addrmap(0, &qdrmfgp_state::qdrmfgp_k054539_map);
+ k054539.timer_handler().set(FUNC(qdrmfgp_state::k054539_irq1_gen));
+ k054539.add_route(0, "lspeaker", 1.0);
+ k054539.add_route(1, "rspeaker", 1.0);
+}
+void qdrmfgp_state::qdrmfgp2(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) /* 16.000 MHz */
- MCFG_DEVICE_PROGRAM_MAP(qdrmfgp2_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", qdrmfgp_state, qdrmfgp2_interrupt)
+ M68000(config, m_maincpu, XTAL(32'000'000)/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &qdrmfgp_state::qdrmfgp2_map);
+ m_maincpu->set_vblank_int("screen", FUNC(qdrmfgp_state::qdrmfgp2_interrupt));
MCFG_MACHINE_START_OVERRIDE(qdrmfgp_state,qdrmfgp2)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
@@ -583,16 +585,16 @@ MACHINE_CONFIG_START(qdrmfgp_state::qdrmfgp2)
m_ata->irq_handler().set(FUNC(qdrmfgp_state::gp2_ide_interrupt));
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_DRIVER(qdrmfgp_state, screen_update_qdrmfgp)
- MCFG_SCREEN_PALETTE("palette")
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(64*8, 32*8);
+ screen.set_visarea(40, 40+384-1, 16, 16+224-1);
+ screen.set_screen_update(FUNC(qdrmfgp_state::screen_update_qdrmfgp));
+ screen.set_palette(m_palette);
- MCFG_PALETTE_ADD("palette", 2048)
- MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ PALETTE(config, m_palette, 2048);
+ m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
MCFG_VIDEO_START_OVERRIDE(qdrmfgp_state,qdrmfgp2)
@@ -608,11 +610,11 @@ MACHINE_CONFIG_START(qdrmfgp_state::qdrmfgp2)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
- MCFG_DEVICE_ADDRESS_MAP(0, qdrmfgp_k054539_map)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-MACHINE_CONFIG_END
+ k054539_device &k054539(K054539(config, "k054539", XTAL(18'432'000)));
+ k054539.set_addrmap(0, &qdrmfgp_state::qdrmfgp_k054539_map);
+ k054539.add_route(0, "lspeaker", 1.0);
+ k054539.add_route(1, "rspeaker", 1.0);
+}
/*************************************
diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp
index cb332f098f0..08fd70935c7 100644
--- a/src/mame/drivers/rungun.cpp
+++ b/src/mame/drivers/rungun.cpp
@@ -393,37 +393,37 @@ void rungun_state::machine_reset()
m_sound_status = 0;
}
-MACHINE_CONFIG_START(rungun_state::rng)
-
+void rungun_state::rng(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16000000)
- MCFG_DEVICE_PROGRAM_MAP(rungun_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rungun_state, rng_interrupt)
+ M68000(config, m_maincpu, 16000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &rungun_state::rungun_map);
+ m_maincpu->set_vblank_int("screen", FUNC(rungun_state::rng_interrupt));
- MCFG_DEVICE_ADD("soundcpu", Z80, 8000000)
- MCFG_DEVICE_PROGRAM_MAP(rungun_sound_map)
+ Z80(config, m_soundcpu, 8000000);
+ m_soundcpu->set_addrmap(AS_PROGRAM, &rungun_state::rungun_sound_map);
- MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // higher if sound stutters
+ config.m_minimum_quantum = attotime::from_hz(6000); // higher if sound stutters
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rungun)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_rungun);
EEPROM_ER5911_8BIT(config, "eeprom");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
- MCFG_SCREEN_REFRESH_RATE(59.185606)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(88, 88+416-1, 24, 24+224-1)
- MCFG_SCREEN_UPDATE_DRIVER(rungun_state, screen_update_rng)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
-
- MCFG_PALETTE_ADD("palette", 1024)
- MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_ENABLE_HILIGHTS()
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ m_screen->set_refresh_hz(59.185606);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(88, 88+416-1, 24, 24+224-1);
+ m_screen->set_screen_update(FUNC(rungun_state::screen_update_rng));
+ m_screen->set_palette(m_palette);
+ m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
+
+ PALETTE(config, m_palette, 1024);
+ m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
+ m_palette->enable_shadows();
+ m_palette->enable_hilights();
K053936(config, m_k053936, 0);
m_k053936->set_offsets(34, 9);
@@ -438,10 +438,10 @@ MACHINE_CONFIG_START(rungun_state::rng)
m_k053252->set_offsets(9*8, 24);
m_k053252->set_screen("screen");
- MCFG_PALETTE_ADD("palette2", 1024)
- MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_ENABLE_HILIGHTS()
+ PALETTE(config, m_palette2, 1024);
+ m_palette2->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
+ m_palette2->enable_shadows();
+ m_palette2->enable_hilights();
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -450,38 +450,38 @@ MACHINE_CONFIG_START(rungun_state::rng)
K054321(config, m_k054321, "lspeaker", "rspeaker");
// SFX
- MCFG_DEVICE_ADD("k054539_1", K054539, 18.432_MHz_XTAL)
- MCFG_DEVICE_ADDRESS_MAP(0, k054539_map)
- MCFG_K054539_TIMER_HANDLER(WRITELINE(*this, rungun_state, k054539_nmi_gen))
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
+ K054539(config, m_k054539_1, 18.432_MHz_XTAL);
+ m_k054539_1->set_addrmap(0, &rungun_state::k054539_map);
+ m_k054539_1->timer_handler().set(FUNC(rungun_state::k054539_nmi_gen));
+ m_k054539_1->add_route(0, "rspeaker", 1.0);
+ m_k054539_1->add_route(1, "lspeaker", 1.0);
// BGM, volumes handtuned to make SFXs audible (still not 100% right tho)
- MCFG_DEVICE_ADD("k054539_2", K054539, 18.432_MHz_XTAL)
- MCFG_DEVICE_ADDRESS_MAP(0, k054539_map)
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.6)
- MCFG_SOUND_ROUTE(1, "lspeaker", 0.6)
-MACHINE_CONFIG_END
+ K054539(config, m_k054539_2, 18.432_MHz_XTAL);
+ m_k054539_2->set_addrmap(0, &rungun_state::k054539_map);
+ m_k054539_2->add_route(0, "rspeaker", 0.6);
+ m_k054539_2->add_route(1, "lspeaker", 0.6);
+}
// for dual-screen output Run and Gun requires the video de-multiplexer board connected to the Jamma output, this gives you 2 Jamma connectors, one for each screen.
// this means when operated as a single dedicated cabinet the game runs at 60fps, and has smoother animations than when operated as a twin setup where each
// screen only gets an update every other frame.
-MACHINE_CONFIG_START(rungun_state::rng_dual)
+void rungun_state::rng_dual(machine_config &config)
+{
rng(config);
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(rungun_state, screen_update_rng_dual_left)
-
- MCFG_SCREEN_ADD("demultiplex2", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
- MCFG_SCREEN_REFRESH_RATE(59.185606)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(88, 88+416-1, 24, 24+224-1)
- MCFG_SCREEN_UPDATE_DRIVER(rungun_state, screen_update_rng_dual_right)
- MCFG_SCREEN_PALETTE("palette2")
+ m_screen->set_screen_update(FUNC(rungun_state::screen_update_rng_dual_left));
+
+ screen_device &demultiplex2(SCREEN(config, "demultiplex2", SCREEN_TYPE_RASTER));
+ demultiplex2.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ demultiplex2.set_refresh_hz(59.185606);
+ demultiplex2.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ demultiplex2.set_size(64*8, 32*8);
+ demultiplex2.set_visarea(88, 88+416-1, 24, 24+224-1);
+ demultiplex2.set_screen_update(FUNC(rungun_state::screen_update_rng_dual_right));
+ demultiplex2.set_palette(m_palette2);
m_k053252->set_slave_screen("demultiplex2");
-MACHINE_CONFIG_END
+}
// Older non-US 53936/A13 roms were all returning bad from the mask ROM check. Using the US ROM on non-US reports good therefore I guess that data matches for that
diff --git a/src/mame/drivers/snesb.cpp b/src/mame/drivers/snesb.cpp
index 3efb634e167..ffeff63c862 100644
--- a/src/mame/drivers/snesb.cpp
+++ b/src/mame/drivers/snesb.cpp
@@ -29,7 +29,7 @@ TODO:
- sblast2b : pressing start during gameplay changes the character used. Intentional?
- denseib : fix gfx glitches, missing texts
- legendsb : dipswitches
- - rushbeat : everything
+ - rushbets : everything
***************************************************************************
@@ -173,8 +173,8 @@ public:
void init_endless();
void init_mk3snes();
void init_legendsb();
- void init_rushbeat();
- void init_spidrmnb();
+ void init_rushbets();
+ void init_venom();
private:
std::unique_ptr<int8_t[]> m_shared_ram;
@@ -701,7 +701,7 @@ static INPUT_PORTS_START( endless )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
INPUT_PORTS_END
-static INPUT_PORTS_START( spidrmnb )
+static INPUT_PORTS_START( venom )
PORT_INCLUDE(snes_common)
PORT_START("DSW1")
@@ -733,6 +733,27 @@ static INPUT_PORTS_START( spidrmnb )
PORT_START("COIN")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+
+ // The game code has been hacked to use only 3 buttons (the arcade panel) as a result many moves are not even possible and some buttons have multiple purposes compared to the original game
+ PORT_MODIFY("SERIAL1_DATA1")
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x000f, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_MODIFY("SERIAL2_DATA1")
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x000f, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
MACHINE_CONFIG_START(snesb_state::kinstb)
@@ -1084,7 +1105,7 @@ void snesb_state::init_endless()
init_snes();
}
-void snesb_state::init_rushbeat()
+void snesb_state::init_rushbets()
{
uint8_t *src = memregion("user7")->base();
uint8_t *dst = memregion("user3")->base();
@@ -1149,7 +1170,7 @@ void snesb_state::init_rushbeat()
init_snes_hirom();
}
-void snesb_state::init_spidrmnb()
+void snesb_state::init_venom()
{
uint8_t *src = memregion("user7")->base();
uint8_t *dst = memregion("user3")->base();
@@ -1194,7 +1215,7 @@ void snesb_state::init_spidrmnb()
int j = (address_tab_high[i >> 15] << 15) + (i & 0x7fc0) + address_tab_low[i & 0x3f];
dst[i] = data_table[src[j]];
-
+
if (i >= 0x00000 && i < 0x10000) {
dst[i] = bitswap<8>(dst[i], 6, 7, 0, 3, 1, 4, 2, 5) ^ 0xff;
}
@@ -1404,7 +1425,7 @@ ROM_START( endless )
ROM_LOAD( "endlessduel.unknownposition4", 0x180000, 0x80000, CRC(9a9493ad) SHA1(82ee4fce9cc2014cb8404fd43eebb7941cdb9ac1) )
ROM_END
-ROM_START( rushbeat )
+ROM_START( rushbets )
ROM_REGION( 0x200000, "user3", ROMREGION_ERASEFF )
ROM_REGION(0x100, "sound_ipl", 0)
@@ -1419,7 +1440,7 @@ ROM_START( rushbeat )
ROM_LOAD( "ic22.bin", 0x180000, 0x80000, CRC(95a234d2) SHA1(31a556c8ed395f61ba198631ee086c18cc740792) )
ROM_END
-ROM_START( spidrmnb )
+ROM_START( venom )
ROM_REGION( 0x300000, "user3", ROMREGION_ERASEFF )
ROM_REGION(0x100, "sound_ipl", 0)
@@ -1442,5 +1463,5 @@ GAME( 1996, denseib, 0, kinstb, denseib, snesb_state, init_den
GAME( 1997, sblast2b, 0, kinstb, sblast2b, snesb_state, init_sblast2b, ROT0, "bootleg", "Sonic Blast Man 2 Special Turbo (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS)
GAME( 1996, endless, 0, kinstb, endless, snesb_state, init_endless, ROT0, "bootleg", "Gundam Wing: Endless Duel (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, legendsb, 0, kinstb, kinstb, snesb_state, init_legendsb, ROT0, "bootleg", "Legend (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, rushbeat, 0, kinstb, kinstb, snesb_state, init_rushbeat, ROT0, "bootleg", "Rushing Beat Shura (SNES bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, spidrmnb, 0, kinstb, spidrmnb, snesb_state, init_spidrmnb, ROT0, "bootleg", "Venom & Spider-Man - Separation Anxiety (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, rushbets, 0, kinstb, kinstb, snesb_state, init_rushbets, ROT0, "bootleg", "Rushing Beat Shura (SNES bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, venom, 0, kinstb, venom, snesb_state, init_venom, ROT0, "bootleg", "Venom & Spider-Man - Separation Anxiety (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp
index f6a798caa91..0279c99f658 100644
--- a/src/mame/drivers/snk.cpp
+++ b/src/mame/drivers/snk.cpp
@@ -3611,38 +3611,38 @@ GFXDECODE_END
/**********************************************************************/
-MACHINE_CONFIG_START(snk_state::marvins)
-
+void snk_state::marvins(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, 3360000) /* 3.36 MHz */
- MCFG_DEVICE_PROGRAM_MAP(marvins_cpuA_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_maincpu, 3360000); /* 3.36 MHz */
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::marvins_cpuA_map);
+ m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("sub", Z80, 3360000) /* 3.36 MHz */
- MCFG_DEVICE_PROGRAM_MAP(marvins_cpuB_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_subcpu, 3360000); /* 3.36 MHz */
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::marvins_cpuB_map);
+ m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* verified on schematics */
- MCFG_DEVICE_PROGRAM_MAP(marvins_sound_map)
- MCFG_DEVICE_IO_MAP(marvins_sound_portmap)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(snk_state, nmi_line_assert, 244) // schematics show a separate 244Hz timer
+ Z80(config, m_audiocpu, 4000000); /* verified on schematics */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::marvins_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &snk_state::marvins_sound_portmap);
+ m_audiocpu->set_periodic_int(FUNC(snk_state::nmi_line_assert), attotime::from_hz(244)); // schematics show a separate 244Hz timer
- MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+ config.m_minimum_quantum = attotime::from_hz(6000);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_SIZE(36*8, 28*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_marvins)
- MCFG_SCREEN_PALETTE("palette")
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_size(36*8, 28*8);
+ m_screen->set_visarea(0*8, 36*8-1, 1*8, 28*8-1);
+ m_screen->set_screen_update(FUNC(snk_state::screen_update_marvins));
+ m_screen->set_palette(m_palette);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_marvins)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_marvins);
- MCFG_PALETTE_ADD("palette", 0x400)
- MCFG_PALETTE_ENABLE_SHADOWS()
+ PALETTE(config, m_palette, 0x400);
+ m_palette->enable_shadows();
+ m_palette->set_init(FUNC(snk_state::palette_init_tnk3));
- MCFG_PALETTE_INIT_OWNER(snk_state,tnk3)
MCFG_VIDEO_START_OVERRIDE(snk_state,marvins)
/* sound hardware */
@@ -3652,69 +3652,60 @@ MACHINE_CONFIG_START(snk_state::marvins)
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0, HOLD_LINE);
AY8910(config, "ay1", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35); /* verified on schematics */
-
AY8910(config, "ay2", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35);/* verified on schematics */
-
SNKWAVE(config, "wave", 8000000).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on schematics */
-MACHINE_CONFIG_END
-
+}
-MACHINE_CONFIG_START(snk_state::vangrd2)
+void snk_state::vangrd2(machine_config &config)
+{
marvins(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(madcrash_cpuA_map)
-
- MCFG_DEVICE_MODIFY("sub")
- MCFG_DEVICE_PROGRAM_MAP(madcrash_cpuB_map)
-MACHINE_CONFIG_END
-
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::madcrash_cpuA_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::madcrash_cpuB_map);
+}
-MACHINE_CONFIG_START(snk_state::madcrush)
+void snk_state::madcrush(machine_config &config)
+{
marvins(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(madcrush_cpuA_map)
-
- MCFG_DEVICE_MODIFY("sub")
- MCFG_DEVICE_PROGRAM_MAP(madcrush_cpuB_map)
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_START(snk_state::jcross)
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::madcrush_cpuA_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::madcrush_cpuB_map);
+}
+void snk_state::jcross(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, 3350000) /* NOT verified */
- MCFG_DEVICE_PROGRAM_MAP(jcross_cpuA_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_maincpu, 3350000); /* NOT verified */
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::jcross_cpuA_map);
+ m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("sub", Z80, 3350000) /* NOT verified */
- MCFG_DEVICE_PROGRAM_MAP(jcross_cpuB_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_subcpu, 3350000); /* NOT verified */
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::jcross_cpuB_map);
+ m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* NOT verified */
- MCFG_DEVICE_PROGRAM_MAP(jcross_sound_map)
- MCFG_DEVICE_IO_MAP(jcross_sound_portmap)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(snk_state, irq0_line_assert, 244) // Marvin's frequency, sounds ok
+ Z80(config, m_audiocpu, 4000000); /* NOT verified */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::jcross_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &snk_state::jcross_sound_portmap);
+ m_audiocpu->set_periodic_int(FUNC(snk_state::irq0_line_assert), attotime::from_hz(244)); // Marvin's frequency, sounds ok
- MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+ config.m_minimum_quantum = attotime::from_hz(6000);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_SIZE(36*8, 28*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tnk3)
- MCFG_SCREEN_PALETTE("palette")
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_size(36*8, 28*8);
+ m_screen->set_visarea(0*8, 36*8-1, 1*8, 28*8-1);
+ m_screen->set_screen_update(FUNC(snk_state::screen_update_tnk3));
+ m_screen->set_palette(m_palette);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tnk3)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_tnk3);
- MCFG_PALETTE_ADD("palette", 0x400)
- MCFG_PALETTE_ENABLE_SHADOWS()
+ PALETTE(config, m_palette, 0x400);
+ m_palette->enable_shadows();
+ m_palette->set_init(FUNC(snk_state::palette_init_tnk3));
- MCFG_PALETTE_INIT_OWNER(snk_state,tnk3)
MCFG_VIDEO_START_OVERRIDE(snk_state,jcross)
/* sound hardware */
@@ -3723,79 +3714,70 @@ MACHINE_CONFIG_START(snk_state::jcross)
GENERIC_LATCH_8(config, m_soundlatch);
AY8910(config, "ay1", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35); /* NOT verified */
-
AY8910(config, "ay2", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35); /* NOT verified */
-MACHINE_CONFIG_END
-
+}
-MACHINE_CONFIG_START(snk_state::sgladiat)
+void snk_state::sgladiat(machine_config &config)
+{
jcross(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(sgladiat_cpuA_map)
-
- MCFG_DEVICE_MODIFY("sub")
- MCFG_DEVICE_PROGRAM_MAP(sgladiat_cpuB_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::sgladiat_cpuA_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::sgladiat_cpuB_map);
/* video hardware */
/* visible area is correct. Debug info is shown in the black bars at the sides
of the screen when the Debug dip switch is on */
MCFG_VIDEO_START_OVERRIDE(snk_state,sgladiat)
-MACHINE_CONFIG_END
-
+}
-MACHINE_CONFIG_START(snk_state::hal21)
+void snk_state::hal21(machine_config &config)
+{
jcross(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(hal21_cpuA_map)
-
- MCFG_DEVICE_MODIFY("sub")
- MCFG_DEVICE_PROGRAM_MAP(hal21_cpuB_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::hal21_cpuA_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::hal21_cpuB_map);
- MCFG_DEVICE_MODIFY("audiocpu")
- MCFG_DEVICE_PROGRAM_MAP(hal21_sound_map)
- MCFG_DEVICE_IO_MAP(hal21_sound_portmap)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(snk_state, irq0_line_hold, 220) // music tempo, hand tuned
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::hal21_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &snk_state::hal21_sound_portmap);
+ m_audiocpu->set_periodic_int(FUNC(snk_state::irq0_line_hold), attotime::from_hz(220)); // music tempo, hand tuned
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(snk_state,hal21)
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_START(snk_state::tnk3)
+}
+void snk_state::tnk3(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'400'000)/4) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(tnk3_cpuA_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_maincpu, XTAL(13'400'000)/4); /* verified on pcb */
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::tnk3_cpuA_map);
+ m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("sub", Z80, XTAL(13'400'000)/4) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(tnk3_cpuB_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_subcpu, XTAL(13'400'000)/4); /* verified on pcb */
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::tnk3_cpuB_map);
+ m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(tnk3_YM3526_sound_map)
+ Z80(config, m_audiocpu, XTAL(8'000'000)/2); /* verified on pcb */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::tnk3_YM3526_sound_map);
- MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+ config.m_minimum_quantum = attotime::from_hz(6000);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_SIZE(36*8, 28*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tnk3)
- MCFG_SCREEN_PALETTE("palette")
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_size(36*8, 28*8);
+ m_screen->set_visarea(0*8, 36*8-1, 1*8, 28*8-1);
+ m_screen->set_screen_update(FUNC(snk_state::screen_update_tnk3));
+ m_screen->set_palette(m_palette);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tnk3)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_tnk3);
- MCFG_PALETTE_ADD("palette", 0x400)
- MCFG_PALETTE_ENABLE_SHADOWS()
+ PALETTE(config, m_palette, 0x400);
+ m_palette->enable_shadows();
+ m_palette->set_init(FUNC(snk_state::palette_init_tnk3));
- MCFG_PALETTE_INIT_OWNER(snk_state,tnk3)
MCFG_VIDEO_START_OVERRIDE(snk_state,tnk3)
/* sound hardware */
@@ -3803,100 +3785,92 @@ MACHINE_CONFIG_START(snk_state::tnk3)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ym1", YM3526, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-MACHINE_CONFIG_END
-
+ ym3526_device &ym1(YM3526(config, "ym1", XTAL(8'000'000)/2)); /* verified on pcb */
+ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1));
+ ym1.add_route(ALL_OUTPUTS, "mono", 2.0);
+}
-MACHINE_CONFIG_START(snk_state::aso)
+void snk_state::aso(machine_config &config)
+{
tnk3(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(aso_cpuA_map)
-
- MCFG_DEVICE_MODIFY("sub")
- MCFG_DEVICE_PROGRAM_MAP(aso_cpuB_map)
-
- MCFG_DEVICE_MODIFY("audiocpu")
- MCFG_DEVICE_PROGRAM_MAP(aso_YM3526_sound_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::aso_cpuA_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::aso_cpuB_map);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::aso_YM3526_sound_map);
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(snk_state,aso)
-MACHINE_CONFIG_END
-
+}
-MACHINE_CONFIG_START(snk_state::athena)
+void snk_state::athena(machine_config &config)
+{
tnk3(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("audiocpu")
- MCFG_DEVICE_PROGRAM_MAP(YM3526_YM3526_sound_map)
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_YM3526_sound_map);
/* sound hardware */
- MCFG_DEVICE_ADD("ym2", YM3526, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-MACHINE_CONFIG_END
-
+ ym3526_device &ym2(YM3526(config, "ym2", XTAL(8'000'000)/2)); /* verified on pcb */
+ ym2.irq_handler().set(FUNC(snk_state::ymirq_callback_2));
+ ym2.add_route(ALL_OUTPUTS, "mono", 2.0);
+}
-MACHINE_CONFIG_START(snk_state::fitegolf)
+void snk_state::fitegolf(machine_config &config)
+{
tnk3(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("audiocpu")
// xtal is 4MHz instead of 8MHz/2 but the end result is the same
- MCFG_DEVICE_PROGRAM_MAP(YM3812_sound_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::YM3812_sound_map);
/* sound hardware */
- MCFG_DEVICE_REPLACE("ym1", YM3812, XTAL(4'000'000)) /* verified on pcb */
- MCFG_YM3812_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-MACHINE_CONFIG_END
+ ym3812_device &ym1(YM3812(config.replace(), "ym1", XTAL(4'000'000))); /* verified on pcb */
+ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1));
+ ym1.add_route(ALL_OUTPUTS, "mono", 2.0);
+}
-MACHINE_CONFIG_START(snk_state::fitegolf2)
+void snk_state::fitegolf2(machine_config &config)
+{
fitegolf(config);
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_fitegolf2)
-MACHINE_CONFIG_END
+ m_screen->set_screen_update(FUNC(snk_state::screen_update_fitegolf2));
+}
-MACHINE_CONFIG_START(snk_state::countryc)
+void snk_state::countryc(machine_config &config)
+{
fitegolf(config);
- /* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(countryc_cpuA_map)
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_START(snk_state::ikari)
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::countryc_cpuA_map);
+}
+void snk_state::ikari(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'400'000)/4) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(ikari_cpuA_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_maincpu, XTAL(13'400'000)/4); /* verified on pcb */
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::ikari_cpuA_map);
+ m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("sub", Z80, XTAL(13'400'000)/4) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(ikari_cpuB_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_subcpu, XTAL(13'400'000)/4); /* verified on pcb */
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::ikari_cpuB_map);
+ m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(YM3526_YM3526_sound_map)
+ Z80(config, m_audiocpu, XTAL(8'000'000)/2); /* verified on pcb */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_YM3526_sound_map);
- MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+ config.m_minimum_quantum = attotime::from_hz(6000);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_SIZE(36*8, 28*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_ikari)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ikari)
-
- MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 0x400)
- MCFG_PALETTE_ENABLE_SHADOWS()
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_size(36*8, 28*8);
+ m_screen->set_visarea(0*8, 36*8-1, 1*8, 28*8-1);
+ m_screen->set_screen_update(FUNC(snk_state::screen_update_ikari));
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_ikari);
+ PALETTE(config, m_palette, 0x400);
+ m_palette->set_prom_region("proms");
+ m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms));
+ m_palette->enable_shadows();
MCFG_VIDEO_START_OVERRIDE(snk_state,ikari)
@@ -3905,57 +3879,58 @@ MACHINE_CONFIG_START(snk_state::ikari)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ym1", YM3526, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-
- MCFG_DEVICE_ADD("ym2", YM3526, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-MACHINE_CONFIG_END
+ ym3526_device &ym1(YM3526(config, "ym1", XTAL(8'000'000)/2)); /* verified on pcb */
+ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1));
+ ym1.add_route(ALL_OUTPUTS, "mono", 2.0);
+ ym3526_device &ym2(YM3526(config, "ym2", XTAL(8'000'000)/2)); /* verified on pcb */
+ ym2.irq_handler().set(FUNC(snk_state::ymirq_callback_2));
+ ym2.add_route(ALL_OUTPUTS, "mono", 2.0);
+}
-MACHINE_CONFIG_START(snk_state::victroad)
+void snk_state::victroad(machine_config &config)
+{
ikari(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("audiocpu")
- MCFG_DEVICE_PROGRAM_MAP(YM3526_Y8950_sound_map)
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_Y8950_sound_map);
/* sound hardware */
- MCFG_DEVICE_REPLACE("ym2", Y8950, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_Y8950_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_START(snk_state::bermudat)
+ y8950_device &ym2(Y8950(config.replace(), "ym2", XTAL(8'000'000)/2)); /* verified on pcb */
+ ym2.irq().set(FUNC(snk_state::ymirq_callback_2));
+ ym2.add_route(ALL_OUTPUTS, "mono", 2.0);
+}
+void snk_state::bermudat(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(bermudat_cpuA_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_maincpu, XTAL(8'000'000)/2); /* verified on pcb */
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::bermudat_cpuA_map);
+ m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("sub", Z80, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(bermudat_cpuB_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_subcpu, XTAL(8'000'000)/2); /* verified on pcb */
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::bermudat_cpuB_map);
+ m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(YM3526_Y8950_sound_map)
+ Z80(config, m_audiocpu, XTAL(8'000'000)/2); /* verified on pcb */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_Y8950_sound_map);
- MCFG_QUANTUM_TIME(attotime::from_hz(24000))
+ config.m_minimum_quantum = attotime::from_hz(24000);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
// this visible area matches the psychos pcb
- MCFG_SCREEN_SIZE(50*8, 28*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 50*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_gwar)
- MCFG_SCREEN_PALETTE("palette")
+ m_screen->set_size(50*8, 28*8);
+ m_screen->set_visarea(0*8, 50*8-1, 0*8, 28*8-1);
+ m_screen->set_screen_update(FUNC(snk_state::screen_update_gwar));
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_gwar);
+ PALETTE(config, m_palette, 0x400);
+ m_palette->set_prom_region("proms");
+ m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms));
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gwar)
- MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 0x400)
MCFG_VIDEO_START_OVERRIDE(snk_state,gwar)
/* sound hardware */
@@ -3963,103 +3938,83 @@ MACHINE_CONFIG_START(snk_state::bermudat)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ym1", YM3526, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-
- MCFG_DEVICE_ADD("ym2", Y8950, XTAL(8'000'000)/2) /* verified on pcb */
- MCFG_Y8950_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
-MACHINE_CONFIG_END
+ ym3526_device &ym1(YM3526(config, "ym1", XTAL(8'000'000)/2)); /* verified on pcb */
+ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1));
+ ym1.add_route(ALL_OUTPUTS, "mono", 2.0);
+ y8950_device &ym2(Y8950(config, "ym2", XTAL(8'000'000)/2)); /* verified on pcb */
+ ym2.irq().set(FUNC(snk_state::ymirq_callback_2));
+ ym2.add_route(ALL_OUTPUTS, "mono", 2.0);
+}
-MACHINE_CONFIG_START(snk_state::psychos)
+void snk_state::psychos(machine_config &config)
+{
bermudat(config);
-
- /* video hardware */
MCFG_VIDEO_START_OVERRIDE(snk_state,psychos)
-MACHINE_CONFIG_END
-
+}
-MACHINE_CONFIG_START(snk_state::gwar)
+void snk_state::gwar(machine_config &config)
+{
bermudat(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::gwar_cpuA_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::gwar_cpuB_map);
+}
- /* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(gwar_cpuA_map)
-
- MCFG_DEVICE_MODIFY("sub")
- MCFG_DEVICE_PROGRAM_MAP(gwar_cpuB_map)
-
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_START(snk_state::gwara)
+void snk_state::gwara(machine_config &config)
+{
bermudat(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::gwara_cpuA_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::gwara_cpuB_map);
+}
- /* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(gwara_cpuA_map)
-
- MCFG_DEVICE_MODIFY("sub")
- MCFG_DEVICE_PROGRAM_MAP(gwara_cpuB_map)
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_START(snk_state::chopper1)
+void snk_state::chopper1(machine_config &config)
+{
bermudat(config);
-
- /* basic machine hardware */
- MCFG_DEVICE_MODIFY("sub")
- MCFG_DEVICE_PROGRAM_MAP(gwar_cpuB_map)
-
- MCFG_DEVICE_MODIFY("audiocpu")
- MCFG_DEVICE_PROGRAM_MAP(YM3812_Y8950_sound_map)
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::gwar_cpuB_map);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3812_Y8950_sound_map);
/* sound hardware */
- MCFG_DEVICE_REPLACE("ym1", YM3812, 4000000)
- MCFG_YM3812_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
-
+ ym3812_device &ym1(YM3812(config.replace(), "ym1", 4000000));
+ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1));
+ ym1.add_route(ALL_OUTPUTS, "mono", 1.0);
+}
-MACHINE_CONFIG_START(snk_state::choppera)
+void snk_state::choppera(machine_config &config)
+{
chopper1(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::gwar_cpuA_map);
+}
- /* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(gwar_cpuA_map)
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_START(snk_state::tdfever)
+void snk_state::tdfever(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, 4000000)
- MCFG_DEVICE_PROGRAM_MAP(tdfever_cpuA_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_maincpu, 4000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::tdfever_cpuA_map);
+ m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("sub", Z80, 4000000)
- MCFG_DEVICE_PROGRAM_MAP(tdfever_cpuB_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold)
+ Z80(config, m_subcpu, 4000000);
+ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::tdfever_cpuB_map);
+ m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold));
- MCFG_DEVICE_ADD("audiocpu", Z80, 4000000)
- MCFG_DEVICE_PROGRAM_MAP(YM3526_Y8950_sound_map)
+ Z80(config, m_audiocpu, 4000000);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_Y8950_sound_map);
- MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+ config.m_minimum_quantum = attotime::from_hz(6000);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_SIZE(50*8, 28*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 50*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tdfever)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tdfever)
-
- MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 0x400)
- MCFG_PALETTE_ENABLE_SHADOWS()
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_size(50*8, 28*8);
+ m_screen->set_visarea(0*8, 50*8-1, 0*8, 28*8-1);
+ m_screen->set_screen_update(FUNC(snk_state::screen_update_tdfever));
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_tdfever);
+ PALETTE(config, m_palette, 0x400);
+ m_palette->set_prom_region("proms");
+ m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms));
+ m_palette->enable_shadows();
MCFG_VIDEO_START_OVERRIDE(snk_state,tdfever)
@@ -4068,29 +4023,28 @@ MACHINE_CONFIG_START(snk_state::tdfever)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ym1", YM3526, 4000000)
- MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-
- MCFG_DEVICE_ADD("ym2", Y8950, 4000000)
- MCFG_Y8950_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
+ ym3526_device &ym1(YM3526(config, "ym1", 4000000));
+ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1));
+ ym1.add_route(ALL_OUTPUTS, "mono", 1.0);
+ y8950_device &ym2(Y8950(config, "ym2", 4000000));
+ ym2.irq().set(FUNC(snk_state::ymirq_callback_2));
+ ym2.add_route(ALL_OUTPUTS, "mono", 1.0);
+}
-MACHINE_CONFIG_START(snk_state::tdfever2)
+void snk_state::tdfever2(machine_config &config)
+{
tdfever(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("audiocpu")
- MCFG_DEVICE_PROGRAM_MAP(Y8950_sound_map)
+ m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::Y8950_sound_map);
/* sound hardware */
// apparently, no "ym1" in tdfever2
// (registers are written to but they cause sound not to work)
- MCFG_DEVICE_REMOVE("ym1")
-MACHINE_CONFIG_END
+ config.device_remove("ym1");
+}
/***********************************************************************/
diff --git a/src/mame/drivers/ultrsprt.cpp b/src/mame/drivers/ultrsprt.cpp
index dff66316263..9dd1cfed0fc 100644
--- a/src/mame/drivers/ultrsprt.cpp
+++ b/src/mame/drivers/ultrsprt.cpp
@@ -236,14 +236,15 @@ void ultrsprt_state::machine_reset()
/*****************************************************************************/
-MACHINE_CONFIG_START(ultrsprt_state::ultrsprt)
+void ultrsprt_state::ultrsprt(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", PPC403GA, 25000000)
- MCFG_DEVICE_PROGRAM_MAP(ultrsprt_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ultrsprt_state, irq1_line_assert)
+ PPC403GA(config, m_maincpu, 25000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &ultrsprt_state::ultrsprt_map);
+ m_maincpu->set_vblank_int("screen", FUNC(ultrsprt_state::irq1_line_assert));
- MCFG_DEVICE_ADD("audiocpu", M68000, 8000000) // Unconfirmed
- MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ M68000(config, m_audiocpu, 8000000); // Unconfirmed
+ m_audiocpu->set_addrmap(AS_PROGRAM, &ultrsprt_state::sound_map);
EEPROM_93C46_16BIT(config, "eeprom");
@@ -256,15 +257,15 @@ MACHINE_CONFIG_START(ultrsprt_state::ultrsprt)
m_upd[1]->set_porty_tag("P2Y");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60) // TODO: Determine correct timings
- MCFG_SCREEN_SIZE(640, 480)
- MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 399)
- MCFG_SCREEN_UPDATE_DRIVER(ultrsprt_state, screen_update_ultrsprt)
- MCFG_SCREEN_PALETTE("palette")
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60); // TODO: Determine correct timings
+ screen.set_size(640, 480);
+ screen.set_visarea(0, 511, 0, 399);
+ screen.set_screen_update(FUNC(ultrsprt_state::screen_update_ultrsprt));
+ screen.set_palette(m_palette);
- MCFG_PALETTE_ADD("palette", 8192)
- MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ PALETTE(config, m_palette, 8192);
+ m_palette->set_format(PALETTE_FORMAT_xRRRRRGGGGGBBBBB);
/* sound hardware */
K056800(config, m_k056800, XTAL(18'432'000));
@@ -273,11 +274,11 @@ MACHINE_CONFIG_START(ultrsprt_state::ultrsprt)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
- MCFG_K054539_TIMER_HANDLER(INPUTLINE("audiocpu", M68K_IRQ_5))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-MACHINE_CONFIG_END
+ k054539_device &k054539(K054539(config, "k054539", XTAL(18'432'000)));
+ k054539.timer_handler().set_inputline("audiocpu", M68K_IRQ_5);
+ k054539.add_route(0, "lspeaker", 1.0);
+ k054539.add_route(1, "rspeaker", 1.0);
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/xexex.cpp b/src/mame/drivers/xexex.cpp
index 4610d9d06c8..e9d500fdd2b 100644
--- a/src/mame/drivers/xexex.cpp
+++ b/src/mame/drivers/xexex.cpp
@@ -469,34 +469,34 @@ void xexex_state::machine_reset()
m_frame = -1;
}
-MACHINE_CONFIG_START(xexex_state::xexex)
-
+void xexex_state::xexex(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) // 16MHz
- MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", xexex_state, xexex_interrupt, "screen", 0, 1)
+ M68000(config, m_maincpu, XTAL(32'000'000)/2); // 16MHz
+ m_maincpu->set_addrmap(AS_PROGRAM, &xexex_state::main_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(xexex_state::xexex_interrupt), "screen", 0, 1);
- MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(32'000'000)/4) // Z80E 8Mhz
- MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ Z80(config, m_audiocpu, XTAL(32'000'000)/4); // Z80E 8Mhz
+ m_audiocpu->set_addrmap(AS_PROGRAM, &xexex_state::sound_map);
- MCFG_QUANTUM_TIME(attotime::from_hz(1920))
+ config.m_minimum_quantum = attotime::from_hz(1920);
EEPROM_ER5911_8BIT(config, "eeprom");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
-// MCFG_SCREEN_REFRESH_RATE(XTAL(32'000'000)/4/512/288)
- MCFG_SCREEN_RAW_PARAMS(XTAL(32'000'000)/4, 384+33+40+55, 0, 383, 256+12+6+14, 0, 255) // 8Mhz horizontal dotclock
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 0, 0+256-1)
- MCFG_SCREEN_UPDATE_DRIVER(xexex_state, screen_update_xexex)
-
- MCFG_PALETTE_ADD("palette", 2048)
- MCFG_PALETTE_FORMAT(XRGB)
- MCFG_PALETTE_ENABLE_SHADOWS()
- MCFG_PALETTE_ENABLE_HILIGHTS()
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+// m_screen->set_refresh_hz(XTAL(32'000'000)/4/512/288);
+ m_screen->set_raw(XTAL(32'000'000)/4, 384+33+40+55, 0, 383, 256+12+6+14, 0, 255); // 8Mhz horizontal dotclock
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(40, 40+384-1, 0, 0+256-1);
+ m_screen->set_screen_update(FUNC(xexex_state::screen_update_xexex));
+
+ PALETTE(config, m_palette, 2048);
+ m_palette->set_format(PALETTE_FORMAT_XRGB);
+ m_palette->enable_shadows();
+ m_palette->enable_hilights();
K056832(config, m_k056832, 0);
m_k056832->set_tile_callback(FUNC(xexex_state::tile_callback), this);
@@ -512,7 +512,7 @@ MACHINE_CONFIG_START(xexex_state::xexex)
K053251(config, m_k053251, 0);
- MCFG_DEVICE_ADD("k053252", K053252, XTAL(32'000'000)/4)
+ K053252(config, m_k053252, XTAL(32'000'000)/4);
K054338(config, m_k054338, 0);
@@ -528,18 +528,18 @@ MACHINE_CONFIG_START(xexex_state::xexex)
ymsnd.add_route(1, "filter2_l", 0.50);
ymsnd.add_route(1, "filter2_r", 0.50);
- MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
- MCFG_K054539_APAN_CB(xexex_state, ym_set_mixing)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ K054539(config, m_k054539, XTAL(18'432'000));
+ m_k054539->set_analog_callback(FUNC(xexex_state::ym_set_mixing));
+ m_k054539->add_route(0, "lspeaker", 1.0);
+ m_k054539->add_route(0, "rspeaker", 1.0);
+ m_k054539->add_route(1, "lspeaker", 1.0);
+ m_k054539->add_route(1, "rspeaker", 1.0);
FILTER_VOLUME(config, "filter1_l").add_route(ALL_OUTPUTS, "lspeaker", 1.0);
FILTER_VOLUME(config, "filter1_r").add_route(ALL_OUTPUTS, "rspeaker", 1.0);
FILTER_VOLUME(config, "filter2_l").add_route(ALL_OUTPUTS, "lspeaker", 1.0);
FILTER_VOLUME(config, "filter2_r").add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-MACHINE_CONFIG_END
+}
ROM_START( xexex ) /* Europe, Version AA */
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index f2c6c4de7d3..64b70e12720 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -35435,9 +35435,9 @@ iron // bootleg
legendsb // bootleg
kinstb // bootleg
mk3snes // bootleg
-rushbeat // bootleg
+rushbets // bootleg
sblast2b // bootleg
-spidrmnb // bootleg
+venom // bootleg
@source:snk.cpp
alphamis // (c) 1985