Namco System 21 doesn't seem to use pos irq for master/slave.

Phelios doesn't like ASSERT_LINE for vblank, fun
This commit is contained in:
angelosa 2016-12-30 05:19:16 +01:00
parent 6f2c9cb5c8
commit 8e8f20df82
3 changed files with 9 additions and 17 deletions

View File

@ -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);

View File

@ -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)
{

View File

@ -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()