diff options
author | Sven Hesse | 2008-03-02 23:57:29 +0000 |
---|---|---|
committer | Sven Hesse | 2008-03-02 23:57:29 +0000 |
commit | a513f0f43a393f846aa49a3c9d455239b8ba9c44 (patch) | |
tree | dc7bec6baeb98459aa6c772dbc5f815f1da959bd | |
parent | d5e09de48c09de714bcd916fe9c6b3d2522ccbc6 (diff) | |
download | scummvm-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
-rw-r--r-- | engines/gob/detection.cpp | 2 | ||||
-rw-r--r-- | engines/gob/gob.cpp | 1 | ||||
-rw-r--r-- | engines/gob/gob.h | 3 | ||||
-rw-r--r-- | engines/gob/inter_v2.cpp | 12 |
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 ¶ms) { } bool Inter_v2::o2_goblinFunc(OpFuncParams ¶ms) { + // 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; |