From 8e8f20df82a8f8b2808776a76ab836b73400e79a Mon Sep 17 00:00:00 2001 From: angelosa Date: Fri, 30 Dec 2016 05:19:16 +0100 Subject: [PATCH] Namco System 21 doesn't seem to use pos irq for master/slave. Phelios doesn't like ASSERT_LINE for vblank, fun --- src/mame/drivers/namcos2.cpp | 11 +++-------- src/mame/drivers/namcos21.cpp | 12 ++++-------- src/mame/machine/namco_c148.cpp | 3 ++- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/mame/drivers/namcos2.cpp b/src/mame/drivers/namcos2.cpp index fcf919c0077..35297a43810 100644 --- a/src/mame/drivers/namcos2.cpp +++ b/src/mame/drivers/namcos2.cpp @@ -1695,22 +1695,17 @@ MACHINE_CONFIG_END TIMER_DEVICE_CALLBACK_MEMBER(namcos2_state::screen_scanline) { int scanline = param; - + int cur_posirq = get_posirq_scanline(); + if(scanline == 240) { m_master_intc->vblank_irq_trigger(); m_slave_intc->vblank_irq_trigger(); } - if(scanline == m_master_intc->get_posirq_line()) + if(scanline == cur_posirq) { m_master_intc->pos_irq_trigger(); - // TODO: wrong place! - m_screen->update_partial(param); - } - - if(scanline == m_slave_intc->get_posirq_line()) - { m_slave_intc->pos_irq_trigger(); // TODO: wrong place! m_screen->update_partial(param); diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp index 991aac829b7..bf1ade64ac0 100644 --- a/src/mame/drivers/namcos21.cpp +++ b/src/mame/drivers/namcos21.cpp @@ -1856,6 +1856,7 @@ MACHINE_START_MEMBER(namcos21_state,namcos21) TIMER_DEVICE_CALLBACK_MEMBER(namcos21_state::screen_scanline) { int scanline = param; +// int cur_posirq = get_posirq_scanline()*2; if(scanline == 240*2) { @@ -1865,20 +1866,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos21_state::screen_scanline) m_gpu_intc->vblank_irq_trigger(); } - if(scanline == m_master_intc->get_posirq_line()*2) + #if 0 + if(scanline == cur_posirq) { m_master_intc->pos_irq_trigger(); - // TODO: wrong place! - m_screen->update_partial(param); - } - - if(scanline == m_slave_intc->get_posirq_line()*2) - { m_slave_intc->pos_irq_trigger(); // TODO: wrong place! m_screen->update_partial(param); } - + #endif if(m_gpu_intc != nullptr) { diff --git a/src/mame/machine/namco_c148.cpp b/src/mame/machine/namco_c148.cpp index 8713f013dab..5faab77aa17 100644 --- a/src/mame/machine/namco_c148.cpp +++ b/src/mame/machine/namco_c148.cpp @@ -194,7 +194,8 @@ WRITE8_MEMBER( namco_c148_device::ext_posirq_line_w ) void namco_c148_device::vblank_irq_trigger() { - m_hostcpu->set_input_line(m_irqlevel.vblank, ASSERT_LINE); + // TODO: Phelios doesn't ack the vblank irq at all! + m_hostcpu->set_input_line(m_irqlevel.vblank, HOLD_LINE); } void namco_c148_device::pos_irq_trigger()