diff options
author | Filippos Karapetis | 2016-07-01 00:54:44 +0300 |
---|---|---|
committer | GitHub | 2016-07-01 00:54:44 +0300 |
commit | a40e43f7772f45dfa59de14d8f5349869c3f2d78 (patch) | |
tree | 2ab248f2a8feedc15709d0611e7d5f691665a403 /engines/sci | |
parent | 28d97d0f552329d14833fe5da7b8998e2159fd73 (diff) | |
parent | 36c7e7d252b1a41f551fdb47512d5095e4dfe488 (diff) | |
download | scummvm-rg350-a40e43f7772f45dfa59de14d8f5349869c3f2d78.tar.gz scummvm-rg350-a40e43f7772f45dfa59de14d8f5349869c3f2d78.tar.bz2 scummvm-rg350-a40e43f7772f45dfa59de14d8f5349869c3f2d78.zip |
Merge pull request #770 from OmerMor/kgettime
SCI: Fixed KGetTime with SYSDATE subop in SCI0-LATE.
Diffstat (limited to 'engines/sci')
-rw-r--r-- | engines/sci/engine/kmisc.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp index f4bb4ff85b..0a5f26476f 100644 --- a/engines/sci/engine/kmisc.cpp +++ b/engines/sci/engine/kmisc.cpp @@ -243,10 +243,18 @@ reg_t kGetTime(EngineState *s, int argc, reg_t *argv) { debugC(kDebugLevelTime, "GetTime(24h) returns %d", retval); break; case KGETTIME_DATE : - // Year since 1980 (0 = 1980, 1 = 1981, etc.) - retval = loc_time.tm_mday | ((loc_time.tm_mon + 1) << 5) | (((loc_time.tm_year - 80) & 0x7f) << 9); + { + // SCI0 late: Year since 1920 (0 = 1920, 1 = 1921, etc) + // SCI01 and newer: Year since 1980 (0 = 1980, 1 = 1981, etc) + // Atari ST SCI0 late versions use the newer base year. + int baseYear = 80; + if (getSciVersion() == SCI_VERSION_0_LATE && g_sci->getPlatform() == Common::kPlatformDOS) { + baseYear = 20; + } + retval = loc_time.tm_mday | ((loc_time.tm_mon + 1) << 5) | (((loc_time.tm_year - baseYear) & 0x7f) << 9); debugC(kDebugLevelTime, "GetTime(date) returns %d", retval); break; + } default: error("Attempt to use unknown GetTime mode %d", mode); break; |