diff options
Diffstat (limited to 'src/emu/dirtc.cpp')
-rw-r--r-- | src/emu/dirtc.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/emu/dirtc.cpp b/src/emu/dirtc.cpp index 4243622822b..0d5442fe6c2 100644 --- a/src/emu/dirtc.cpp +++ b/src/emu/dirtc.cpp @@ -195,10 +195,13 @@ void device_rtc_interface::advance_days() m_register[RTC_DAY_OF_WEEK] = 1; } - if (m_register[RTC_DAY] > DAYS_PER_MONTH[m_register[RTC_MONTH] - 1]) + if (m_register[RTC_MONTH] > 0 && m_register[RTC_DAY] > DAYS_PER_MONTH[m_register[RTC_MONTH] - 1]) { - m_register[RTC_DAY] = 1; - m_register[RTC_MONTH]++; + if (m_register[RTC_MONTH] != 2 || m_register[RTC_DAY] != 29 || !rtc_feature_leap_year() || + (m_register[RTC_YEAR] % 4) != 0) { + m_register[RTC_DAY] = 1; + m_register[RTC_MONTH]++; + } } if (m_register[RTC_MONTH] == 13) |