diff --git a/src/emu/cpu/upd7810/upd7810.c b/src/emu/cpu/upd7810/upd7810.c index f6d8ddc353f..58f40a50488 100644 --- a/src/emu/cpu/upd7810/upd7810.c +++ b/src/emu/cpu/upd7810/upd7810.c @@ -1991,7 +1991,7 @@ void upd7810_device::execute_set_input(int irqline, int state) switch (irqline) { case INPUT_LINE_NMI: /* NMI is falling edge sensitive */ - if ( m_nmi == ASSERT_LINE && state == CLEAR_LINE ) + if ( m_nmi == CLEAR_LINE && state == ASSERT_LINE ) IRR |= INTNMI; m_nmi = state; @@ -2005,10 +2005,12 @@ void upd7810_device::execute_set_input(int irqline, int state) break; case UPD7810_INTF2: /* INT2 is falling edge sensitive */ - if ( m_int2 == ASSERT_LINE && state == CLEAR_LINE ) + /* we store the physical state (inverse of the logical state) */ + /* to keep the handling of port C consistent with the upd7801 */ + if ( (!m_int2) == CLEAR_LINE && state == ASSERT_LINE ) IRR |= INTF2; - m_int2 = state; + m_int2 = !state; break; default: logerror("upd7810_set_irq_line invalid irq line #%d\n", irqline); diff --git a/src/mame/drivers/fitfight.c b/src/mame/drivers/fitfight.c index 456a90a4fae..6caa4dc30f2 100644 --- a/src/mame/drivers/fitfight.c +++ b/src/mame/drivers/fitfight.c @@ -259,7 +259,7 @@ ADDRESS_MAP_END INTERRUPT_GEN_MEMBER(fitfight_state::snd_irq) { - device.execute().set_input_line(UPD7810_INTF2, HOLD_LINE); + generic_pulse_irq_line(device.execute(), UPD7810_INTF2, 1); } diff --git a/src/mame/drivers/homedata.c b/src/mame/drivers/homedata.c index 8c71ab037d9..4b5e05e425b 100644 --- a/src/mame/drivers/homedata.c +++ b/src/mame/drivers/homedata.c @@ -231,7 +231,7 @@ INTERRUPT_GEN_MEMBER(homedata_state::homedata_irq) INTERRUPT_GEN_MEMBER(homedata_state::upd7807_irq) { - device.execute().set_input_line(UPD7810_INTF1, HOLD_LINE); + generic_pulse_irq_line(device.execute(), UPD7810_INTF1, 1); }