diff options
Diffstat (limited to 'src/mame/drivers/m72.cpp')
-rw-r--r-- | src/mame/drivers/m72.cpp | 128 |
1 files changed, 62 insertions, 66 deletions
diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp index b95dffc2804..ed0965b93c9 100644 --- a/src/mame/drivers/m72.cpp +++ b/src/mame/drivers/m72.cpp @@ -188,7 +188,6 @@ other supported games as well. #include "includes/m72.h" #include "includes/iremipt.h" -#include "cpu/mcs51/mcs51.h" #include "cpu/nec/nec.h" #include "cpu/nec/v25.h" #include "cpu/z80/z80.h" @@ -1802,7 +1801,8 @@ static GFXDECODE_START( gfx_majtitle ) GFXDECODE_END -MACHINE_CONFIG_START(m72_state::m72_audio_chips) +void m72_state::m72_audio_chips(machine_config &config) +{ /* sound hardware */ SPEAKER(config, "speaker").front_center(); @@ -1812,60 +1812,62 @@ MACHINE_CONFIG_START(m72_state::m72_audio_chips) RST_NEG_BUFFER(config, "soundirq", 0).int_callback().set_inputline(m_soundcpu, 0); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb) + m_soundcpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb)); - MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO) + IREM_M72_AUDIO(config, "m72"); ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CLOCK)); ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w)); ymsnd.add_route(ALL_OUTPUTS, "speaker", 1.0); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END + DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.2); // unknown DAC + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); +} MACHINE_CONFIG_START(m72_state::m72_base) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_DEVICE_PROGRAM_MAP(m72_map) - MCFG_DEVICE_IO_MAP(m72_portmap) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb) - MCFG_DEVICE_ADD("soundcpu",Z80, SOUND_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(sound_ram_map) - MCFG_DEVICE_IO_MAP(sound_portmap) + V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */ + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::m72_map); + m_maincpu->set_addrmap(AS_IO, &m72_state::m72_portmap); + m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb)); + + Z80(config, m_soundcpu, SOUND_CLOCK); + m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_ram_map); + m_soundcpu->set_addrmap(AS_IO, &m72_state::sound_portmap); PIC8259(config, m_upd71059c, 0); m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_m72) - MCFG_PALETTE_ADD("palette", 512) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_m72); + PALETTE(config, m_palette, 512); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) - MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256); + m_screen->set_screen_update(FUNC(m72_state::screen_update)); + m_screen->set_palette(m_palette); MCFG_VIDEO_START_OVERRIDE(m72_state,m72) m72_audio_chips(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(m72_state::m72) +void m72_state::m72(machine_config &config) +{ m72_base(config); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, fake_nmi, 128*55) /* clocked by V1? (Vigilante) */ - /* IRQs are generated by main Z80 and YM2151 */ -MACHINE_CONFIG_END + m_soundcpu->set_periodic_int(FUNC(m72_state::fake_nmi), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */ + /* IRQs are generated by main Z80 and YM2151 */ +} -MACHINE_CONFIG_START(m72_state::m72_8751) +void m72_state::m72_8751(machine_config &config) +{ m72_base(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(m72_protected_map) - MCFG_DEVICE_IO_MAP(m72_protected_portmap) + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::m72_protected_map); + m_maincpu->set_addrmap(AS_IO, &m72_state::m72_protected_portmap); MB8421_MB8431_16BIT(config, m_dpram); //m_dpram->intl_callback().set(m_upd71059c, FUNC(pic8259_device::ir3_w)); // not actually used? @@ -1875,46 +1877,40 @@ MACHINE_CONFIG_START(m72_state::m72_8751) mculatch.data_pending_callback().set_inputline(m_mcu, MCS51_INT1_LINE); mculatch.set_separate_acknowledge(true); - MCFG_DEVICE_ADD("mcu", I8751, XTAL(8'000'000)) /* Uses its own XTAL */ - MCFG_DEVICE_IO_MAP(mcu_io_map) - MCFG_MCS51_PORT_P1_OUT_CB(WRITE8(*this, m72_state, mcu_port1_w)) -MACHINE_CONFIG_END + I8751(config, m_mcu, XTAL(8'000'000)); /* Uses its own XTAL */ + m_mcu->set_addrmap(AS_IO, &m72_state::mcu_io_map); + m_mcu->port_out_cb<1>().set(FUNC(m72_state::mcu_port1_w)); +} -MACHINE_CONFIG_START(m72_state::rtype) +void m72_state::rtype(machine_config &config) +{ m72_base(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(rtype_map) - - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_IO_MAP(rtype_sound_portmap) + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::rtype_map); + m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype_sound_portmap); - MCFG_DEVICE_REMOVE("m72") - MCFG_DEVICE_REMOVE("dac") - MCFG_DEVICE_REMOVE("vref") -MACHINE_CONFIG_END + config.device_remove("m72"); + config.device_remove("dac"); + config.device_remove("vref"); +} -MACHINE_CONFIG_START(m72_state::m72_xmultipl) +void m72_state::m72_xmultipl(machine_config &config) +{ m72_8751(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(xmultiplm72_map) - - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ - /* IRQs are generated by main Z80 and YM2151 */ - -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::xmultiplm72_map); + m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */ + /* IRQs are generated by main Z80 and YM2151 */ +} -MACHINE_CONFIG_START(m72_state::m72_dbreed) +void m72_state::m72_dbreed(machine_config &config) +{ m72_base(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(dbreedm72_map) + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::dbreedm72_map); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ - /* IRQs are generated by main Z80 and YM2151 */ -MACHINE_CONFIG_END + m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */ + /* IRQs are generated by main Z80 and YM2151 */ +} @@ -1965,7 +1961,7 @@ MACHINE_CONFIG_START(m72_state::rtype2) MCFG_DEVICE_IO_MAP(m84_portmap) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb) - MCFG_DEVICE_ADD("soundcpu", Z80, SOUND_CLOCK) + MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK) MCFG_DEVICE_PROGRAM_MAP(sound_rom_map) MCFG_DEVICE_IO_MAP(rtype2_sound_portmap) MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ @@ -2008,7 +2004,7 @@ MACHINE_CONFIG_START(m72_state::cosmccop) MCFG_DEVICE_PROGRAM_MAP(kengo_map) MCFG_DEVICE_IO_MAP(m84_v33_portmap) - MCFG_DEVICE_ADD("soundcpu", Z80, SOUND_CLOCK) + MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK) MCFG_DEVICE_PROGRAM_MAP(sound_rom_map) MCFG_DEVICE_IO_MAP(rtype2_sound_portmap) MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ @@ -2055,7 +2051,7 @@ MACHINE_CONFIG_START(m72_state::m82) MCFG_DEVICE_PROGRAM_MAP(m82_map) MCFG_DEVICE_IO_MAP(m82_portmap) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb) - MCFG_DEVICE_ADD("soundcpu", Z80, SOUND_CLOCK) + MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK) MCFG_DEVICE_PROGRAM_MAP(sound_rom_map) MCFG_DEVICE_IO_MAP(rtype2_sound_portmap) MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ @@ -2090,7 +2086,7 @@ MACHINE_CONFIG_START(m72_state::poundfor) MCFG_DEVICE_PROGRAM_MAP(rtype2_map) MCFG_DEVICE_IO_MAP(poundfor_portmap) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb) - MCFG_DEVICE_ADD("soundcpu", Z80, SOUND_CLOCK) + MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK) MCFG_DEVICE_PROGRAM_MAP(sound_rom_map) MCFG_DEVICE_IO_MAP(poundfor_sound_portmap) MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, fake_nmi, 128*55) /* clocked by V1? (Vigilante) */ |