MSM6242: Fix hang on savestate load -nw-

This commit is contained in:
Phil Bennett 2013-01-03 14:21:18 +00:00
parent e72c597d45
commit c014d27cd6

View File

@ -104,6 +104,7 @@ void msm6242_device::device_start()
save_item(NAME(m_irq_flag)); save_item(NAME(m_irq_flag));
save_item(NAME(m_irq_type)); save_item(NAME(m_irq_type));
save_item(NAME(m_tick)); save_item(NAME(m_tick));
save_item(NAME(m_last_update_time));
} }
@ -247,32 +248,32 @@ void msm6242_device::update_rtc_registers()
m_last_update_time = curtime; m_last_update_time = curtime;
// no delta? just return // no delta? just return
if (delta <= 0) if (delta == 0)
return; return;
// ticks // ticks
if ((m_tick % 200) != ((delta + m_tick) % 0x200)) if ((m_tick % 200) != ((delta + m_tick) % 0x200))
irq(IRQ_64THSECOND); irq(IRQ_64THSECOND);
delta = bump(RTC_TICKS, delta, 0, 0x8000); delta = bump(RTC_TICKS, delta, 0, 0x8000);
if (delta <= 0) if (delta == 0)
return; return;
// seconds // seconds
irq(IRQ_SECOND); irq(IRQ_SECOND);
delta = bump(RTC_SECOND, delta, 0, 60); delta = bump(RTC_SECOND, delta, 0, 60);
if (delta <= 0) if (delta == 0)
return; return;
// minutes // minutes
irq(IRQ_MINUTE); irq(IRQ_MINUTE);
delta = bump(RTC_MINUTE, delta, 0, 60); delta = bump(RTC_MINUTE, delta, 0, 60);
if (delta <= 0) if (delta == 0)
return; return;
// hours // hours
irq(IRQ_HOUR); irq(IRQ_HOUR);
delta = bump(RTC_HOUR, delta, 0, 24); delta = bump(RTC_HOUR, delta, 0, 24);
if (delta <= 0) if (delta == 0)
return; return;
// days // days