diff options
| author | Johannes Schickel | 2012-06-18 16:46:56 -0700 | 
|---|---|---|
| committer | Johannes Schickel | 2012-06-18 16:46:56 -0700 | 
| commit | 88512351d0e265bec0f85c09a7cc9bb388fef4f4 (patch) | |
| tree | 2d2142b294dd492d297097b1a43c1e68d5fdaa1e | |
| parent | e8546a46a01ee74f7d9833196246b27fbc5bc473 (diff) | |
| parent | 954d56a30fcde8b72c30d8fdfa7ad68945d3ac96 (diff) | |
| download | scummvm-rg350-88512351d0e265bec0f85c09a7cc9bb388fef4f4.tar.gz scummvm-rg350-88512351d0e265bec0f85c09a7cc9bb388fef4f4.tar.bz2 scummvm-rg350-88512351d0e265bec0f85c09a7cc9bb388fef4f4.zip  | |
Merge pull request #249 from digitall/PS2DayOfWeek
PS2: Implement algorithm for day of week for use in tm_wday.
| -rw-r--r-- | backends/platform/ps2/ps2time.cpp | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/backends/platform/ps2/ps2time.cpp b/backends/platform/ps2/ps2time.cpp index decfc552ec..124c154d06 100644 --- a/backends/platform/ps2/ps2time.cpp +++ b/backends/platform/ps2/ps2time.cpp @@ -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); @@ -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);  }  | 
