aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
Diffstat (limited to 'scumm')
-rw-r--r--scumm/intern.h9
-rw-r--r--scumm/script_v6.cpp20
-rw-r--r--scumm/script_v8.cpp16
-rw-r--r--scumm/scumm.h7
-rw-r--r--scumm/vars.cpp6
5 files changed, 34 insertions, 24 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index df71a11d7b..23f47d887e 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -371,6 +371,7 @@ protected:
void o6_deleteFile();
void o6_findAllObjects();
void o6_pickVarRandom();
+ void o6_getDateTime();
};
class Scumm_v7 : public Scumm_v6
@@ -434,7 +435,6 @@ protected:
void o8_startVideo();
void o8_kernelSetFunctions();
void o8_kernelGetFunctions();
- void o8_getDateTime();
void o8_getActorChore();
@@ -446,13 +446,6 @@ protected:
void o8_getStringWidth();
- /* V8 Scumm Vars */
- byte VAR_TIMEDATE_YEAR;
- byte VAR_TIMEDATE_MONTH;
- byte VAR_TIMEDATE_DAY;
- byte VAR_TIMEDATE_HOUR;
- byte VAR_TIMEDATE_MINUTE;
- byte VAR_TIMEDATE_SECOND;
};
diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp
index ffd2a1ba3e..8039c1515b 100644
--- a/scumm/script_v6.cpp
+++ b/scumm/script_v6.cpp
@@ -29,6 +29,7 @@
#include "intern.h"
#include "sound.h"
#include "verbs.h"
+#include <time.h>
#include "smush/player.h"
#include "smush/scumm_renderer.h"
@@ -303,7 +304,7 @@ void Scumm_v6::setupOpcodes()
OPCODE(o6_invalid),
OPCODE(o6_invalid),
/* D0 */
- OPCODE(o6_invalid),
+ OPCODE(o6_getDateTime),
OPCODE(o6_stopTalking),
OPCODE(o6_getAnimateVariable),
OPCODE(o6_invalid),
@@ -2964,6 +2965,23 @@ void Scumm_v6::o6_pickVarRandom() {
push(2);
}
+void Scumm_v6::o6_getDateTime()
+{
+ struct tm *t;
+ time_t now = time(NULL);
+
+ t = localtime(&now);
+
+ _vars[VAR_TIMEDATE_YEAR] = t->tm_year;
+ _vars[VAR_TIMEDATE_MONTH] = t->tm_mon;
+ _vars[VAR_TIMEDATE_DAY] = t->tm_mday;
+ _vars[VAR_TIMEDATE_HOUR] = t->tm_hour;
+ _vars[VAR_TIMEDATE_MINUTE] = t->tm_min;
+
+ if (_features & GF_AFTER_V8)
+ _vars[VAR_TIMEDATE_SECOND] = t->tm_sec;
+}
+
void Scumm_v6::decodeParseString(int m, int n)
{
byte b;
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp
index a34a33ee41..e116ddcbce 100644
--- a/scumm/script_v8.cpp
+++ b/scumm/script_v8.cpp
@@ -266,7 +266,7 @@ void Scumm_v8::setupOpcodes()
/* B4 */
OPCODE(o6_saveRestoreVerbs),
OPCODE(o6_setObjectName),
- OPCODE(o8_getDateTime),
+ OPCODE(o6_getDateTime),
OPCODE(o6_drawBox),
/* B8 */
OPCODE(o6_invalid),
@@ -1358,20 +1358,6 @@ void Scumm_v8::o8_system()
}
}
-void Scumm_v8::o8_getDateTime()
-{
- struct tm *t;
- time_t now = time(NULL);
-
- t = localtime(&now);
-
- _vars[VAR_TIMEDATE_YEAR] = t->tm_year;
- _vars[VAR_TIMEDATE_MONTH] = t->tm_mon;
- _vars[VAR_TIMEDATE_DAY] = t->tm_mday;
- _vars[VAR_TIMEDATE_HOUR] = t->tm_hour;
- _vars[VAR_TIMEDATE_MINUTE] = t->tm_min;
- _vars[VAR_TIMEDATE_SECOND] = t->tm_sec;
-}
void Scumm_v8::o8_startVideo()
{
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 97d956afd2..27e20cb11d 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -1108,6 +1108,13 @@ public:
byte VAR_CUSTOMSCALETABLE;
byte VAR_VIDEONAME;
byte VAR_V6_SOUNDMODE;
+
+ byte VAR_TIMEDATE_YEAR;
+ byte VAR_TIMEDATE_MONTH;
+ byte VAR_TIMEDATE_DAY;
+ byte VAR_TIMEDATE_HOUR;
+ byte VAR_TIMEDATE_MINUTE;
+ byte VAR_TIMEDATE_SECOND;
};
// This is a constant lookup table of reverse bit masks
diff --git a/scumm/vars.cpp b/scumm/vars.cpp
index 86d18ce6bb..839f134bd0 100644
--- a/scumm/vars.cpp
+++ b/scumm/vars.cpp
@@ -109,6 +109,12 @@ void Scumm::setupScummVars()
VAR_V6_EMSSPACE = 76;
VAR_V6_RANDOM_NR = 118;
+ VAR_TIMEDATE_YEAR = 119;
+ VAR_TIMEDATE_MONTH = 129;
+ VAR_TIMEDATE_DAY = 128;
+ VAR_TIMEDATE_HOUR = 125;
+ VAR_TIMEDATE_MINUTE = 126;
+
VAR_V6_SOUNDMODE = 9;
}