summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/dirtc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/dirtc.cpp')
-rw-r--r--src/emu/dirtc.cpp9
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)