diff options
author | mooglyguy <therealmogminer@gmail.com> | 2018-12-20 13:32:42 +0100 |
---|---|---|
committer | mooglyguy <therealmogminer@gmail.com> | 2018-12-20 13:32:42 +0100 |
commit | 7ba9c79cdd6c65bc414e9b67aff45f8886ba326e (patch) | |
tree | 64d9ca22747765cbc67d9b8cc1a259b9a698c708 | |
parent | 0e75c994b8b7921040c1154217b798b8f2477552 (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]
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 |