aboutsummaryrefslogtreecommitdiff
path: root/engines/gob
diff options
context:
space:
mode:
authorSven Hesse2008-03-02 23:57:29 +0000
committerSven Hesse2008-03-02 23:57:29 +0000
commita513f0f43a393f846aa49a3c9d455239b8ba9c44 (patch)
treedc7bec6baeb98459aa6c772dbc5f815f1da959bd /engines/gob
parentd5e09de48c09de714bcd916fe9c6b3d2522ccbc6 (diff)
downloadscummvm-rg350-a513f0f43a393f846aa49a3c9d455239b8ba9c44.tar.gz
scummvm-rg350-a513f0f43a393f846aa49a3c9d455239b8ba9c44.tar.bz2
scummvm-rg350-a513f0f43a393f846aa49a3c9d455239b8ba9c44.zip
Added a workaround of sorts for Inca2. It's essentially playable, sans saving, space shooter and correct speech language selection
svn-id: r31032
Diffstat (limited to 'engines/gob')
-rw-r--r--engines/gob/detection.cpp2
-rw-r--r--engines/gob/gob.cpp1
-rw-r--r--engines/gob/gob.h3
-rw-r--r--engines/gob/inter_v2.cpp12
4 files changed, 16 insertions, 2 deletions
diff --git a/engines/gob/detection.cpp b/engines/gob/detection.cpp
index ef36617289..b920d79b1b 100644
--- a/engines/gob/detection.cpp
+++ b/engines/gob/detection.cpp
@@ -1317,7 +1317,7 @@ static const GOBGameDescription gameDescriptions[] = {
kPlatformPC,
Common::ADGF_NO_FLAGS
},
- kGameTypeGob3,
+ kGameTypeInca2,
kFeaturesCD,
"intro"
},
diff --git a/engines/gob/gob.cpp b/engines/gob/gob.cpp
index 00d8f19986..e6afeefc03 100644
--- a/engines/gob/gob.cpp
+++ b/engines/gob/gob.cpp
@@ -291,6 +291,7 @@ bool GobEngine::initGameParts() {
break;
case kGameTypeGob3:
+ case kGameTypeInca2:
_init = new Init_v3(this);
_video = new Video_v2(this);
_inter = new Inter_v3(this);
diff --git a/engines/gob/gob.h b/engines/gob/gob.h
index 2ea291da71..e23e917a7c 100644
--- a/engines/gob/gob.h
+++ b/engines/gob/gob.h
@@ -86,7 +86,8 @@ enum GameType {
kGameTypeWoodruff,
kGameTypeBargon,
kGameTypeWeen,
- kGameTypeLostInTime
+ kGameTypeLostInTime,
+ kGameTypeInca2
};
enum Features {
diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp
index fffbdaceaf..46d40d1553 100644
--- a/engines/gob/inter_v2.cpp
+++ b/engines/gob/inter_v2.cpp
@@ -1782,6 +1782,18 @@ bool Inter_v2::o2_freeCollision(OpFuncParams &params) {
}
bool Inter_v2::o2_goblinFunc(OpFuncParams &params) {
+ // TODO: In Inca 2, this is the big SpaceShoot0rz()-Opcode.
+ // It's not yet implemented, so we fudge our way through
+ // and pretend we've won.
+ if (_vm->getGameType() == kGameTypeInca2) {
+ _vm->_global->_inter_execPtr += 4;
+ uint16 resVar = (uint16) load16();
+ _vm->_global->_inter_execPtr += 4;
+
+ WRITE_VAR(resVar, 1);
+ return false;
+ }
+
OpGobParams gobParams;
int16 cmd;