Skip to content

Commit

Permalink
PS2: Implement algorithm for day of week for use in tm_wday.
Browse files Browse the repository at this point in the history
  • Loading branch information
digitall committed Jun 18, 2012
1 parent ad2b898 commit 954d56a
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions backends/platform/ps2/ps2time.cpp
Expand Up @@ -105,8 +105,14 @@ void OSystem_PS2::readRtcTime(void) {
g_day, g_month, g_year + 2000);
}

void OSystem_PS2::getTimeAndDate(TimeDate &t) const {
// Tomohiko Sakamoto's 1993 algorithm for any Gregorian date
static int dayOfWeek(int y, int m, int d) {
static const int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= m < 3;
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}

void OSystem_PS2::getTimeAndDate(TimeDate &t) const {
uint32 currentSecs = g_timeSecs + (msecCount - g_lastTimeCheck) / 1000;
if (currentSecs >= SECONDS_PER_DAY) {
buildNewDate(+1);
Expand All @@ -120,9 +126,5 @@ void OSystem_PS2::getTimeAndDate(TimeDate &t) const {
t.tm_year = g_year + 100;
t.tm_mday = g_day;
t.tm_mon = g_month - 1;
#ifdef RELEASE_BUILD
#error getTimeAndDate() is not setting the day of the week
#else
t.tm_wday = 0; // FIXME
#endif
t.tm_wday = dayOfWeek(t.tm_year, t.tm_mon, t.tm_mday);
}

0 comments on commit 954d56a

Please sign in to comment.