diff options
author | Wilbert Pol <wilbert@jdg.info> | 2013-01-12 19:58:49 +0000 |
---|---|---|
committer | Wilbert Pol <wilbert@jdg.info> | 2013-01-12 19:58:49 +0000 |
commit | eeb97d5e1d59acddd7347132a198034f2f79fcf4 (patch) | |
tree | e1d91d342d526066493746166ef69a41872f56d5 /src | |
parent | c5f62bebdfdf3262736a776d1a3d0c953eea7692 (diff) |
(MESS) Running eagles5 on the sms2kr driver. It apparently expects the irq to be cleared when explicitly disabling VINT irqs during VINT. (nw)
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/video/315_5124.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/emu/video/315_5124.c b/src/emu/video/315_5124.c index b22cf8b3bbd..f39d8744ec6 100644 --- a/src/emu/video/315_5124.c +++ b/src/emu/video/315_5124.c @@ -602,6 +602,26 @@ WRITE8_MEMBER( sega315_5124_device::register_write ) if (reg_num == 1) { m_check_vint_timer->adjust( m_screen->time_until_pos( m_screen->vpos(), VINT_HPOS) ); + + // + // When running eagles5 on the ssm2kr driver the irq_state is 1 because of some + // previos HINTs that occured. eagles5 sets register 01 to 0x02 and expects + // the irq state to be cleared after that. + // The following bit of code takes care of that. + // + if ((m_status & STATUS_VINT) && !(m_reg[0x01] & 0x20)) + { + if (m_irq_state == 1) + { + m_irq_state = 0; + + if ( !m_cb_int.isnull() ) + { + m_cb_int(CLEAR_LINE); + } + } + } + } m_addrmode = 0; break; |