summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
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
commiteeb97d5e1d59acddd7347132a198034f2f79fcf4 (patch)
treee1d91d342d526066493746166ef69a41872f56d5 /src
parentc5f62bebdfdf3262736a776d1a3d0c953eea7692 (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.c20
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;