aboutsummaryrefslogtreecommitdiff
path: root/engines/cine
diff options
context:
space:
mode:
authorKari Salminen2009-06-27 12:26:26 +0000
committerKari Salminen2009-06-27 12:26:26 +0000
commit49dd58de45db302214b65af5b296a21f84f02ebe (patch)
tree96c1b93526b44fb7bb590a9cfbc8dd8b3be218c6 /engines/cine
parent5a6573d33de407c69000fba7acbf44cf43eab139 (diff)
downloadscummvm-rg350-49dd58de45db302214b65af5b296a21f84f02ebe.tar.gz
scummvm-rg350-49dd58de45db302214b65af5b296a21f84f02ebe.tar.bz2
scummvm-rg350-49dd58de45db302214b65af5b296a21f84f02ebe.zip
Name Operation Stealth's global variables 251 and 252 and init them in main loop.
These are used as a sort of a backup for the mouse position (x, y) variables 249 and 250. Future Wars's VAR_MOUSE_Y_MODE and Operation Stealth's VAR_MOUSE_X_POS_2ND (251) clash and that's possibly why executePlayerInput currently works incorrectly with Operation Stealth. More reverse engineering is needed... svn-id: r41915
Diffstat (limited to 'engines/cine')
-rw-r--r--engines/cine/cine.h8
-rw-r--r--engines/cine/main_loop.cpp2
-rw-r--r--engines/cine/various.cpp12
3 files changed, 12 insertions, 10 deletions
diff --git a/engines/cine/cine.h b/engines/cine/cine.h
index bf56e9189b..1031d6d449 100644
--- a/engines/cine/cine.h
+++ b/engines/cine/cine.h
@@ -127,11 +127,15 @@ extern CineEngine *g_cine;
#define COPY_PROT_FAIL_PRC_NAME "L201.ANI"
enum {
- VAR_MOUSE_X_MODE = 253,
+ // Both FW and OS
VAR_MOUSE_X_POS = 249,
- VAR_MOUSE_Y_MODE = 251,
VAR_MOUSE_Y_POS = 250,
+ // FW only
+ VAR_MOUSE_X_MODE = 253,
+ VAR_MOUSE_Y_MODE = 251,
// OS only
+ VAR_MOUSE_X_POS_2ND = 251, // Many times used in conjunction with VAR_MOUSE_X_POS
+ VAR_MOUSE_Y_POS_2ND = 252, // Many times used in conjunction with VAR_MOUSE_Y_POS
VAR_BYPASS_PROTECTION = 255,
VAR_LOW_MEMORY = 0
};
diff --git a/engines/cine/main_loop.cpp b/engines/cine/main_loop.cpp
index c6bca84e46..44e4e43a6c 100644
--- a/engines/cine/main_loop.cpp
+++ b/engines/cine/main_loop.cpp
@@ -288,6 +288,8 @@ void CineEngine::mainLoop(int bootScriptIdx) {
globalVars[VAR_MOUSE_X_POS] = 0;
globalVars[VAR_MOUSE_Y_POS] = 0;
if (g_cine->getGameType() == Cine::GType_OS) {
+ globalVars[VAR_MOUSE_X_POS_2ND] = 0;
+ globalVars[VAR_MOUSE_Y_POS_2ND] = 0;
globalVars[VAR_BYPASS_PROTECTION] = 0; // set to 1 to bypass the copy protection
globalVars[VAR_LOW_MEMORY] = 0; // set to 1 to disable some animations, sounds etc.
}
diff --git a/engines/cine/various.cpp b/engines/cine/various.cpp
index 1ec558c217..7192afcd92 100644
--- a/engines/cine/various.cpp
+++ b/engines/cine/various.cpp
@@ -1095,8 +1095,8 @@ uint16 executePlayerInput(void) {
// This fixes swimming at the bottom of the ocean after
// having been thrown into it with the girl.
if (g_cine->getGameType() == Cine::GType_OS) {
- globalVars[251] = globalVars[VAR_MOUSE_X_POS];
- globalVars[252] = globalVars[VAR_MOUSE_Y_POS];
+ globalVars[VAR_MOUSE_X_POS_2ND] = globalVars[VAR_MOUSE_X_POS];
+ globalVars[VAR_MOUSE_Y_POS_2ND] = globalVars[VAR_MOUSE_Y_POS];
}
return var_5E;
@@ -1501,10 +1501,7 @@ void processSeqListElement(SeqListElement &element) {
if (xMoveKeyb != kKeybMoveRight) {
adder = -adder;
}
- // FIXME: In Operation Stealth's disassembly global variable 251 is used here
- // but it's named as VAR_MOUSE_Y_MODE in ScummVM. Is it correct or a
- // left over from Future Wars's reverse engineering?
- globalVars[VAR_MOUSE_X_POS] = globalVars[251] = ptr1[4] + x + adder;
+ globalVars[VAR_MOUSE_X_POS] = globalVars[VAR_MOUSE_X_POS_2ND] = ptr1[4] + x + adder;
}
if (yMoveKeyb && allowPlayerInput) {
@@ -1512,8 +1509,7 @@ void processSeqListElement(SeqListElement &element) {
if (yMoveKeyb != kKeybMoveDown) {
adder = -adder;
}
- // TODO: Name currently unnamed global variable 252
- globalVars[VAR_MOUSE_Y_POS] = globalVars[252] = ptr1[5] + y + adder;
+ globalVars[VAR_MOUSE_Y_POS] = globalVars[VAR_MOUSE_Y_POS_2ND] = ptr1[5] + y + adder;
}
if (globalVars[VAR_MOUSE_X_POS] || globalVars[VAR_MOUSE_Y_POS]) {