diff options
Diffstat (limited to 'src/mame/drivers/m72.c')
-rw-r--r-- | src/mame/drivers/m72.c | 463 |
1 files changed, 125 insertions, 338 deletions
diff --git a/src/mame/drivers/m72.c b/src/mame/drivers/m72.c index c2b767a6c45..ac1f92a19be 100644 --- a/src/mame/drivers/m72.c +++ b/src/mame/drivers/m72.c @@ -101,7 +101,7 @@ other supported games as well. /***************************************************************************/ -MACHINE_START_MEMBER(m72_state,m72) +void m72_state::machine_start() { m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m72_state::m72_scanline_interrupt),this)); @@ -123,7 +123,7 @@ TIMER_CALLBACK_MEMBER(m72_state::synch_callback) machine().scheduler().boost_interleave(attotime::from_hz(MASTER_CLOCK/4/12), attotime::from_seconds(25)); } -MACHINE_RESET_MEMBER(m72_state,m72) +void m72_state::machine_reset() { m_irq_base = 0x20; m_mcu_sample_addr = 0; @@ -135,8 +135,8 @@ MACHINE_RESET_MEMBER(m72_state,m72) MACHINE_RESET_MEMBER(m72_state,xmultipl) { + m72_state::machine_reset(); m_irq_base = 0x08; - m_scanline_timer->adjust(m_screen->time_until_pos(0)); } MACHINE_RESET_MEMBER(m72_state,kengo) @@ -1774,6 +1774,21 @@ static GFXDECODE_START( majtitle ) GFXDECODE_END +static MACHINE_CONFIG_FRAGMENT( m72_audio_chips ) + /* sound hardware */ + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_SOUND_ADD("m72", M72, 0); + + MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) + MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) + MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) + MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_DAC_ADD("dac") + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) +MACHINE_CONFIG_END static MACHINE_CONFIG_START( m72_base, m72_state ) @@ -1785,9 +1800,7 @@ static MACHINE_CONFIG_START( m72_base, m72_state ) MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK) MCFG_CPU_PROGRAM_MAP(sound_ram_map) MCFG_CPU_IO_MAP(sound_portmap) - - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) - MCFG_MACHINE_RESET_OVERRIDE(m72_state,m72) + /* video hardware */ MCFG_GFXDECODE_ADD("gfxdecode", "palette", m72) @@ -1800,23 +1813,11 @@ static MACHINE_CONFIG_START( m72_base, m72_state ) MCFG_VIDEO_START_OVERRIDE(m72_state,m72) - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) + MCFG_FRAGMENT_ADD(m72_audio_chips) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( m72, m72_base ) - MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, fake_nmi, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ MACHINE_CONFIG_END @@ -1830,211 +1831,97 @@ static MACHINE_CONFIG_DERIVED( m72_8751, m72_base ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rtype, m72_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ +static MACHINE_CONFIG_DERIVED( rtype, m72_base ) + MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(rtype_map) - MCFG_CPU_IO_MAP(m72_portmap) - MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK) - MCFG_CPU_PROGRAM_MAP(sound_ram_map) + MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_IO_MAP(rtype_sound_portmap) - /* IRQs are generated by main Z80 and YM2151 */ - - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) - MCFG_MACHINE_RESET_OVERRIDE(m72_state,m72) - - /* video hardware */ - MCFG_GFXDECODE_ADD("gfxdecode", "palette", m72) - MCFG_PALETTE_ADD("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_m72) - MCFG_SCREEN_PALETTE("palette") - - MCFG_VIDEO_START_OVERRIDE(m72_state,m72) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + MCFG_DEVICE_REMOVE("dac") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( xmultipl, m72_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_CPU_PROGRAM_MAP(xmultipl_map) - MCFG_CPU_IO_MAP(hharry_portmap) +static MACHINE_CONFIG_DERIVED( xmultiplm72, m72_base ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(xmultiplm72_map) - MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK) - MCFG_CPU_PROGRAM_MAP(sound_rom_map) - MCFG_CPU_IO_MAP(rtype2_sound_portmap) + MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) + MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl) - - /* video hardware */ - MCFG_GFXDECODE_ADD("gfxdecode", "palette", m72) - MCFG_PALETTE_ADD("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_m72) - MCFG_SCREEN_PALETTE("palette") - - MCFG_VIDEO_START_OVERRIDE(m72_state,xmultipl) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( xmultiplm72, m72_state ) - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_CPU_PROGRAM_MAP(xmultiplm72_map) - MCFG_CPU_IO_MAP(m72_portmap) +static MACHINE_CONFIG_DERIVED( dbreedm72, m72_base ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(dbreedm72_map) - MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK) - MCFG_CPU_PROGRAM_MAP(sound_ram_map) - MCFG_CPU_IO_MAP(sound_portmap) + MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl) +MACHINE_CONFIG_END - /* video hardware */ - MCFG_GFXDECODE_ADD("gfxdecode", "palette", m72) - MCFG_PALETTE_ADD("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_m72) - MCFG_SCREEN_PALETTE("palette") - - MCFG_VIDEO_START_OVERRIDE(m72_state,m72) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) +static MACHINE_CONFIG_DERIVED( dkgenm72, m72 ) // dervices from 'm72' because we use 'fake nmi' on the soundcpu + + MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dbreed, m72_state ) + +// not m72 +static MACHINE_CONFIG_DERIVED( xmultipl, m72 ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_CPU_PROGRAM_MAP(dbreed_map) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(xmultipl_map) MCFG_CPU_IO_MAP(hharry_portmap) - MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK) + MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_PROGRAM_MAP(sound_rom_map) MCFG_CPU_IO_MAP(rtype2_sound_portmap) MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) + MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl) - /* video hardware */ - MCFG_GFXDECODE_ADD("gfxdecode", "palette", rtype2) - MCFG_PALETTE_ADD("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_m72) - MCFG_SCREEN_PALETTE("palette") - - MCFG_VIDEO_START_OVERRIDE(m72_state,hharry) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) + MCFG_VIDEO_START_OVERRIDE(m72_state,xmultipl) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dbreedm72, m72_state ) + +// not m72, different video system (more sprites) +static MACHINE_CONFIG_START( majtitle, m72_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_CPU_PROGRAM_MAP(dbreedm72_map) - MCFG_CPU_IO_MAP(m72_portmap) + MCFG_CPU_PROGRAM_MAP(majtitle_map) + MCFG_CPU_IO_MAP(majtitle_portmap) MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK) - MCFG_CPU_PROGRAM_MAP(sound_ram_map) - MCFG_CPU_IO_MAP(sound_portmap) + MCFG_CPU_PROGRAM_MAP(sound_rom_map) + MCFG_CPU_IO_MAP(rtype2_sound_portmap) MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) - MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl) - /* video hardware */ - MCFG_GFXDECODE_ADD("gfxdecode", "palette", m72) + MCFG_GFXDECODE_ADD("gfxdecode", "palette", majtitle) MCFG_PALETTE_ADD("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_m72) + MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_majtitle) MCFG_SCREEN_PALETTE("palette") - MCFG_VIDEO_START_OVERRIDE(m72_state,m72) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + MCFG_VIDEO_START_OVERRIDE(m72_state,majtitle) - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) + MCFG_FRAGMENT_ADD(m72_audio_chips) MACHINE_CONFIG_END +// not m72, different video system (less tiles regions?) static MACHINE_CONFIG_START( rtype2, m72_state ) /* basic machine hardware */ @@ -2048,9 +1935,6 @@ static MACHINE_CONFIG_START( rtype2, m72_state ) MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) - MCFG_MACHINE_RESET_OVERRIDE(m72_state,m72) - /* video hardware */ MCFG_GFXDECODE_ADD("gfxdecode", "palette", rtype2) MCFG_PALETTE_ADD("palette", 512) @@ -2062,63 +1946,41 @@ static MACHINE_CONFIG_START( rtype2, m72_state ) MCFG_VIDEO_START_OVERRIDE(m72_state,rtype2) - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) + MCFG_FRAGMENT_ADD(m72_audio_chips) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( majtitle, m72_state ) +// not m72, different video system (less tiles regions?) +static MACHINE_CONFIG_START( dbreed, m72_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_CPU_PROGRAM_MAP(majtitle_map) - MCFG_CPU_IO_MAP(majtitle_portmap) + MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ + MCFG_CPU_PROGRAM_MAP(dbreed_map) + MCFG_CPU_IO_MAP(hharry_portmap) - MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK) + MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK) MCFG_CPU_PROGRAM_MAP(sound_rom_map) MCFG_CPU_IO_MAP(rtype2_sound_portmap) MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) - MCFG_MACHINE_RESET_OVERRIDE(m72_state,m72) + + MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl) /* video hardware */ - MCFG_GFXDECODE_ADD("gfxdecode", "palette", majtitle) + MCFG_GFXDECODE_ADD("gfxdecode", "palette", rtype2) MCFG_PALETTE_ADD("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_majtitle) + MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72) MCFG_SCREEN_PALETTE("palette") - MCFG_VIDEO_START_OVERRIDE(m72_state,majtitle) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + MCFG_VIDEO_START_OVERRIDE(m72_state,hharry) - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) + MCFG_FRAGMENT_ADD(m72_audio_chips) MACHINE_CONFIG_END +// not m72, different video system (less tiles regions?) static MACHINE_CONFIG_START( hharry, m72_state ) /* basic machine hardware */ @@ -2132,7 +1994,7 @@ static MACHINE_CONFIG_START( hharry, m72_state ) MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) + MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl) /* video hardware */ @@ -2146,21 +2008,11 @@ static MACHINE_CONFIG_START( hharry, m72_state ) MCFG_VIDEO_START_OVERRIDE(m72_state,hharry) - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); + MCFG_FRAGMENT_ADD(m72_audio_chips) - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) MACHINE_CONFIG_END +// not m72, different video system (less tiles regions?) static MACHINE_CONFIG_START( hharryu, m72_state ) /* basic machine hardware */ @@ -2174,7 +2026,7 @@ static MACHINE_CONFIG_START( hharryu, m72_state ) MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) + MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl) /* video hardware */ @@ -2188,63 +2040,11 @@ static MACHINE_CONFIG_START( hharryu, m72_state ) MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu) - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); + MCFG_FRAGMENT_ADD(m72_audio_chips) - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) -MACHINE_CONFIG_END - -static MACHINE_CONFIG_START( dkgenm72, m72_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_CPU_PROGRAM_MAP(m72_map) - MCFG_CPU_IO_MAP(m72_portmap) - - MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK) - MCFG_CPU_PROGRAM_MAP(sound_ram_map) - MCFG_CPU_IO_MAP(sound_portmap) - MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, fake_nmi, 128*55) /* clocked by V1? (Vigilante) */ - /* IRQs are generated by main Z80 and YM2151 */ - - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) - MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl) - - /* video hardware */ - MCFG_GFXDECODE_ADD("gfxdecode", "palette", m72) - MCFG_PALETTE_ADD("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_m72) - MCFG_SCREEN_PALETTE("palette") - - MCFG_VIDEO_START_OVERRIDE(m72_state,m72) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) MACHINE_CONFIG_END +// not m72, different video system (less tiles regions?) static MACHINE_CONFIG_START( poundfor, m72_state ) /* basic machine hardware */ @@ -2258,9 +2058,6 @@ static MACHINE_CONFIG_START( poundfor, m72_state ) MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, fake_nmi, 128*55) /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_MACHINE_START_OVERRIDE(m72_state,m72) - MCFG_MACHINE_RESET_OVERRIDE(m72_state,m72) - /* video hardware */ MCFG_GFXDECODE_ADD("gfxdecode", "palette", rtype2) MCFG_PALETTE_ADD("palette", 512) @@ -2272,21 +2069,10 @@ static MACHINE_CONFIG_START( poundfor, m72_state ) MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor) - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) + MCFG_FRAGMENT_ADD(m72_audio_chips) MACHINE_CONFIG_END +// not m72, different video system (less tiles regions?) static MACHINE_CONFIG_START( cosmccop, m72_state ) /* basic machine hardware */ @@ -2314,19 +2100,7 @@ static MACHINE_CONFIG_START( cosmccop, m72_state ) MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor) - /* sound hardware */ - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("m72", M72, 0); - - MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) + MCFG_FRAGMENT_ADD(m72_audio_chips) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( kengo, cosmccop ) @@ -3740,38 +3514,51 @@ ROM_END // the program roms failing their tests. This is why we still have simulation code for many games // despite having Japanese version MCU roms for several of them. See notes next to the sets -GAME( 1987, rtype, 0, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (World)", GAME_NO_COCKTAIL ) -GAME( 1987, rtypej, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (Japan)", GAME_NO_COCKTAIL ) -GAME( 1987, rtypejp, rtype, rtype, rtypep, driver_device, 0, ROT0, "Irem", "R-Type (Japan prototype)", GAME_NO_COCKTAIL ) -GAME( 1987, rtypeu, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem (Nintendo of America license)", "R-Type (US)", GAME_NO_COCKTAIL ) -GAME( 1987, rtypeb, rtype, rtype, rtype, driver_device, 0, ROT0, "bootleg", "R-Type (World bootleg)", GAME_NO_COCKTAIL ) -GAME( 1987, bchopper, 0, m72, bchopper, m72_state, bchopper, ROT0, "Irem", "Battle Chopper", GAME_NO_COCKTAIL ) -GAME( 1987, mrheli, bchopper, m72_8751, bchopper, m72_state, m72_8751, ROT0, "Irem", "Mr. HELI no Daibouken (Japan)", GAME_NO_COCKTAIL ) -GAME( 1988, nspirit, 0, m72, nspirit, m72_state, nspirit, ROT0, "Irem", "Ninja Spirit", GAME_NO_COCKTAIL ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?) -GAME( 1988, nspiritj, nspirit, m72_8751, nspirit, m72_state, m72_8751, ROT0, "Irem", "Saigo no Nindou (Japan)", GAME_NO_COCKTAIL ) // waits for japan warning screen, works with our mcu dump, corrupt warning screen due to priority / mixing errors (Japan Version) -GAME( 1988, imgfight, 0, m72, imgfight, m72_state, imgfight, ROT270, "Irem", "Image Fight (World, revision A)", 0 ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?) -GAME( 1988, imgfightj, imgfight, m72_8751, imgfight, m72_state, m72_8751, ROT270, "Irem", "Image Fight (Japan)", 0 ) // waits for japan warning screen, works with our mcu dump, can't actually see warning screen due to priority / mixing errors, check tilemap viewer (Japan Version) -GAME( 1989, loht, 0, m72, loht, m72_state, loht, ROT0, "Irem", "Legend of Hero Tonma", GAME_NO_COCKTAIL ) // fails rom check if used with Japan MCU rom (World version?) -GAME( 1989, lohtj, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "Irem", "Legend of Hero Tonma (Japan)", GAME_NO_COCKTAIL ) // waits for japan warning screen, works with our mcu dump (Japan Version) -GAME( 1989, lohtb2, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (Japan, bootleg with i8751)", GAME_NO_COCKTAIL ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board -GAME( 1989, lohtb, loht, m72, loht, driver_device, 0, ROT0, "bootleg", "Legend of Hero Tonma (unprotected bootleg)", GAME_NOT_WORKING| GAME_NO_COCKTAIL ) +GAME( 1987, rtype, 0, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (World)", GAME_NO_COCKTAIL ) +GAME( 1987, rtypej, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (Japan)", GAME_NO_COCKTAIL ) +GAME( 1987, rtypejp, rtype, rtype, rtypep, driver_device, 0, ROT0, "Irem", "R-Type (Japan prototype)", GAME_NO_COCKTAIL ) +GAME( 1987, rtypeu, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem (Nintendo of America license)", "R-Type (US)", GAME_NO_COCKTAIL ) +GAME( 1987, rtypeb, rtype, rtype, rtype, driver_device, 0, ROT0, "bootleg", "R-Type (World bootleg)", GAME_NO_COCKTAIL ) + +GAME( 1987, bchopper, 0, m72, bchopper, m72_state, bchopper, ROT0, "Irem", "Battle Chopper", GAME_NO_COCKTAIL ) +GAME( 1987, mrheli, bchopper, m72_8751, bchopper, m72_state, m72_8751, ROT0, "Irem", "Mr. HELI no Daibouken (Japan)", GAME_NO_COCKTAIL ) + +GAME( 1988, nspirit, 0, m72, nspirit, m72_state, nspirit, ROT0, "Irem", "Ninja Spirit", GAME_NO_COCKTAIL ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?) +GAME( 1988, nspiritj, nspirit, m72_8751, nspirit, m72_state, m72_8751, ROT0, "Irem", "Saigo no Nindou (Japan)", GAME_NO_COCKTAIL ) // waits for japan warning screen, works with our mcu dump, corrupt warning screen due to priority / mixing errors (Japan Version) + +GAME( 1988, imgfight, 0, m72, imgfight, m72_state, imgfight, ROT270, "Irem", "Image Fight (World, revision A)", 0 ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?) +GAME( 1988, imgfightj, imgfight, m72_8751, imgfight, m72_state, m72_8751, ROT270, "Irem", "Image Fight (Japan)", 0 ) // waits for japan warning screen, works with our mcu dump, can't actually see warning screen due to priority / mixing errors, check tilemap viewer (Japan Version) + +GAME( 1989, loht, 0, m72, loht, m72_state, loht, ROT0, "Irem", "Legend of Hero Tonma", GAME_NO_COCKTAIL ) // fails rom check if used with Japan MCU rom (World version?) +GAME( 1989, lohtj, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "Irem", "Legend of Hero Tonma (Japan)", GAME_NO_COCKTAIL ) // waits for japan warning screen, works with our mcu dump (Japan Version) +GAME( 1989, lohtb2, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (Japan, bootleg with i8751)", GAME_NO_COCKTAIL ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board +GAME( 1989, lohtb, loht, m72, loht, driver_device, 0, ROT0, "bootleg", "Legend of Hero Tonma (unprotected bootleg)", GAME_NOT_WORKING| GAME_NO_COCKTAIL ) + GAME( 1989, xmultipl, 0, xmultipl, xmultipl, driver_device, 0, ROT0, "Irem", "X Multiply (World, M81)", GAME_NO_COCKTAIL ) -GAME( 1989, xmultiplm72, xmultipl, xmultiplm72, xmultipl, m72_state, xmultiplm72, ROT0, "Irem", "X Multiply (Japan, M72)", GAME_NO_COCKTAIL ) -GAME( 1989, dbreed, 0, dbreed, dbreed, driver_device, 0, ROT0, "Irem", "Dragon Breed (M81 PCB version)", GAME_NO_COCKTAIL ) -GAME( 1989, dbreedm72, dbreed, dbreedm72, dbreed, m72_state, dbreedm72, ROT0, "Irem", "Dragon Breed (M72 PCB version)", GAME_NO_COCKTAIL ) -GAME( 1989, rtype2, 0, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II", GAME_NO_COCKTAIL ) -GAME( 1989, rtype2j, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan)", GAME_NO_COCKTAIL ) -GAME( 1989, rtype2jc, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan, revision C)", GAME_NO_COCKTAIL ) -GAME( 1990, majtitle, 0, majtitle, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (World)", GAME_NO_COCKTAIL ) -GAME( 1990, majtitlej, majtitle, majtitle, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (Japan)", GAME_NO_COCKTAIL ) -GAME( 1990, hharry, 0, hharry, hharry, driver_device, 0, ROT0, "Irem", "Hammerin' Harry (World)", GAME_NO_COCKTAIL ) -GAME( 1990, hharryu, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem America", "Hammerin' Harry (US)", GAME_NO_COCKTAIL ) -GAME( 1990, dkgensan, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem", "Daiku no Gensan (Japan, M82)", GAME_NO_COCKTAIL ) -GAME( 1990, dkgensanm72, hharry, dkgenm72, hharry, m72_state, dkgenm72, ROT0, "Irem", "Daiku no Gensan (Japan, M72)", GAME_NO_COCKTAIL ) +GAME( 1989, xmultiplm72, xmultipl, xmultiplm72, xmultipl, m72_state, xmultiplm72, ROT0, "Irem", "X Multiply (Japan, M72)", GAME_NO_COCKTAIL ) + +GAME( 1989, dbreed, 0, dbreed, dbreed, driver_device, 0, ROT0, "Irem", "Dragon Breed (M81 PCB version)", GAME_NO_COCKTAIL ) +GAME( 1989, dbreedm72, dbreed, dbreedm72, dbreed, m72_state, dbreedm72, ROT0, "Irem", "Dragon Breed (M72 PCB version)", GAME_NO_COCKTAIL ) + +GAME( 1989, rtype2, 0, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II", GAME_NO_COCKTAIL ) +GAME( 1989, rtype2j, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan)", GAME_NO_COCKTAIL ) +GAME( 1989, rtype2jc, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan, revision C)", GAME_NO_COCKTAIL ) + +GAME( 1990, majtitle, 0, majtitle, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (World)", GAME_NO_COCKTAIL ) +GAME( 1990, majtitlej, majtitle, majtitle, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (Japan)", GAME_NO_COCKTAIL ) + +GAME( 1990, hharry, 0, hharry, hharry, driver_device, 0, ROT0, "Irem", "Hammerin' Harry (World)", GAME_NO_COCKTAIL ) +GAME( 1990, hharryu, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem America", "Hammerin' Harry (US)", GAME_NO_COCKTAIL ) +GAME( 1990, dkgensan, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem", "Daiku no Gensan (Japan, M82)", GAME_NO_COCKTAIL ) +GAME( 1990, dkgensanm72, hharry, dkgenm72, hharry, m72_state, dkgenm72, ROT0, "Irem", "Daiku no Gensan (Japan, M72)", GAME_NO_COCKTAIL ) + GAME( 1990, poundfor, 0, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (World)", GAME_NO_COCKTAIL ) GAME( 1990, poundforj, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (Japan)", GAME_NO_COCKTAIL ) GAME( 1990, poundforu, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem America", "Pound for Pound (US)", GAME_NO_COCKTAIL ) -GAME( 1990, airduel, 0, m72, airduel, m72_state, airduel, ROT270, "Irem", "Air Duel (Japan)", 0 ) -GAME( 1991, cosmccop, 0, cosmccop, gallop, driver_device, 0, ROT0, "Irem", "Cosmic Cop (World)", GAME_NO_COCKTAIL ) -GAME( 1991, gallop, cosmccop, m72, gallop, m72_state, gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan)", GAME_NO_COCKTAIL ) -GAME( 1991, kengo, 0, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go", GAME_NO_COCKTAIL ) + +GAME( 1990, airduel, 0, m72, airduel, m72_state, airduel, ROT270, "Irem", "Air Duel (Japan)", 0 ) + +GAME( 1991, cosmccop, 0, cosmccop, gallop, driver_device, 0, ROT0, "Irem", "Cosmic Cop (World)", GAME_NO_COCKTAIL ) +GAME( 1991, gallop, cosmccop, m72, gallop, m72_state, gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan)", GAME_NO_COCKTAIL ) + +GAME( 1991, kengo, 0, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go", GAME_NO_COCKTAIL ) |