aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
Diffstat (limited to 'scumm')
-rw-r--r--scumm/gfx.cpp8
-rw-r--r--scumm/script.cpp13
-rw-r--r--scumm/scummvm.cpp13
3 files changed, 21 insertions, 13 deletions
diff --git a/scumm/gfx.cpp b/scumm/gfx.cpp
index e0b50e1966..f3d2491e48 100644
--- a/scumm/gfx.cpp
+++ b/scumm/gfx.cpp
@@ -2145,7 +2145,7 @@ void Scumm::moveCamera() {
camera._cur.x &= 0xFFF8;
if (camera._cur.x < VAR(VAR_CAMERA_MIN_X)) {
- if (VAR(VAR_CAMERA_FAST_X))
+ if (VAR_CAMERA_FAST_X != 0xFF && VAR(VAR_CAMERA_FAST_X))
camera._cur.x = VAR(VAR_CAMERA_MIN_X);
else
camera._cur.x += 8;
@@ -2154,7 +2154,7 @@ void Scumm::moveCamera() {
}
if (camera._cur.x > VAR(VAR_CAMERA_MAX_X)) {
- if (VAR(VAR_CAMERA_FAST_X))
+ if (VAR_CAMERA_FAST_X != 0xFF && VAR(VAR_CAMERA_FAST_X))
camera._cur.x = VAR(VAR_CAMERA_MAX_X);
else
camera._cur.x -= 8;
@@ -2169,7 +2169,7 @@ void Scumm::moveCamera() {
t = (actorx >> 3) - _screenStartStrip;
if (t < camera._leftTrigger || t > camera._rightTrigger) {
- if (VAR(VAR_CAMERA_FAST_X)) {
+ if (VAR_CAMERA_FAST_X != 0xFF && VAR(VAR_CAMERA_FAST_X)) {
if (t > 35)
camera._dest.x = actorx + 80;
if (t < 5)
@@ -2190,7 +2190,7 @@ void Scumm::moveCamera() {
if (camera._dest.x > VAR(VAR_CAMERA_MAX_X))
camera._dest.x = VAR(VAR_CAMERA_MAX_X);
- if (VAR(VAR_CAMERA_FAST_X)) {
+ if (VAR_CAMERA_FAST_X != 0xFF && VAR(VAR_CAMERA_FAST_X)) {
camera._cur.x = camera._dest.x;
} else {
if (camera._cur.x < camera._dest.x)
diff --git a/scumm/script.cpp b/scumm/script.cpp
index f1a741d795..8a72b423e1 100644
--- a/scumm/script.cpp
+++ b/scumm/script.cpp
@@ -784,12 +784,17 @@ void Scumm::doSentence(int c, int b, int a) {
void Scumm::checkAndRunSentenceScript() {
int i;
ScriptSlot *ss;
+ int sentenceScript;
+ if (_features & GF_AFTER_V2)
+ sentenceScript = 2;
+ else
+ sentenceScript = VAR(VAR_SENTENCE_SCRIPT);
memset(_localParamList, 0, sizeof(_localParamList));
- if (isScriptInUse(VAR(VAR_SENTENCE_SCRIPT))) {
+ if (isScriptInUse(sentenceScript)) {
ss = vm.slot;
for (i = 0; i < NUM_SCRIPT_SLOT; i++, ss++)
- if (ss->number == VAR(VAR_SENTENCE_SCRIPT) && ss->status != ssDead && ss->freezeCount == 0)
+ if (ss->number == sentenceScript && ss->status != ssDead && ss->freezeCount == 0)
return;
}
@@ -806,8 +811,8 @@ void Scumm::checkAndRunSentenceScript() {
_localParamList[1] = _sentence[_sentenceNum].unk4;
_localParamList[2] = _sentence[_sentenceNum].unk3;
_currentScript = 0xFF;
- if (VAR(VAR_SENTENCE_SCRIPT))
- runScript(VAR(VAR_SENTENCE_SCRIPT), 0, 0, _localParamList);
+ if (sentenceScript)
+ runScript(sentenceScript, 0, 0, _localParamList);
}
void Scumm::runInputScript(int a, int cmd, int mode) {
diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp
index 548fecc87a..6c41ed28f2 100644
--- a/scumm/scummvm.cpp
+++ b/scumm/scummvm.cpp
@@ -845,10 +845,12 @@ int Scumm::scummLoop(int delta) {
// that it will be in a different state each time you run the program.
_rnd.getRandomNumber(2);
- VAR(VAR_TMR_1) += delta;
- VAR(VAR_TMR_2) += delta;
- VAR(VAR_TMR_3) += delta;
- VAR(VAR_TMR_4) += delta;
+ if (!(_features & GF_AFTER_V2)) {
+ VAR(VAR_TMR_1) += delta;
+ VAR(VAR_TMR_2) += delta;
+ VAR(VAR_TMR_3) += delta;
+ VAR(VAR_TMR_4) += delta;
+ }
if (delta > 15)
delta = 15;
@@ -1047,7 +1049,8 @@ load_game:
/* show or hide mouse */
_system->show_mouse(_cursor.state > 0);
- VAR(VAR_TIMER) = 0;
+ if (!(_features & GF_AFTER_V2))
+ VAR(VAR_TIMER) = 0;
return VAR(VAR_TIMER_NEXT);
}