aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2005-05-21 14:20:28 +0000
committerTravis Howell2005-05-21 14:20:28 +0000
commit2b2c6a404f840096d977e20c1b48d307770c783e (patch)
tree83e72462adcb0ee932663b49f548f0ef6ae749d6
parent31974eaead154ae6637b5655d5a5eb573ce342e2 (diff)
downloadscummvm-rg350-2b2c6a404f840096d977e20c1b48d307770c783e.tar.gz
scummvm-rg350-2b2c6a404f840096d977e20c1b48d307770c783e.tar.bz2
scummvm-rg350-2b2c6a404f840096d977e20c1b48d307770c783e.zip
Add HE73 version for opcode difference.
svn-id: r18207
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v72he.cpp35
-rw-r--r--scumm/script_v80he.cpp35
-rw-r--r--scumm/script_v90he.cpp2
-rw-r--r--scumm/scumm.cpp7
5 files changed, 40 insertions, 40 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index fc1c9baa00..127758393b 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -1072,7 +1072,6 @@ protected:
void o80_drawWizPolygon();
void o80_drawLine();
void o80_pickVarRandom();
- void o80_getResourceSize();
};
struct SpriteInfo;
diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp
index 90ee366eec..e74913edc4 100644
--- a/scumm/script_v72he.cpp
+++ b/scumm/script_v72he.cpp
@@ -2215,8 +2215,41 @@ void ScummEngine_v72he::o72_writeINI() {
}
void ScummEngine_v72he::o72_getResourceSize() {
+ const byte *ptr;
+ int size, type;
+
int resid = pop();
- push(getSoundResourceSize(resid));
+ if (_heversion == 72) {
+ push(getSoundResourceSize(resid));
+ return;
+ }
+
+ byte subOp = fetchScriptByte();
+
+ switch (subOp) {
+ case 13:
+ push (getSoundResourceSize(resid));
+ return;
+ case 14:
+ type = rtRoomImage;
+ break;
+ case 15:
+ type = rtImage;
+ break;
+ case 16:
+ type = rtCostume;
+ break;
+ case 17:
+ type = rtScript;
+ break;
+ default:
+ error("o80_getResourceSize: default type %d", subOp);
+ }
+
+ ptr = getResourceAddress(type, resid);
+ assert(ptr);
+ size = READ_BE_UINT32(ptr + 4) - 8;
+ push(size);
}
void ScummEngine_v72he::o72_setFilePath() {
diff --git a/scumm/script_v80he.cpp b/scumm/script_v80he.cpp
index 018d68e6b3..df3a833c6a 100644
--- a/scumm/script_v80he.cpp
+++ b/scumm/script_v80he.cpp
@@ -354,7 +354,7 @@ void ScummEngine_v80he::setupOpcodes() {
OPCODE(o70_getCharIndexInString),
OPCODE(o6_invalid),
/* F8 */
- OPCODE(o80_getResourceSize),
+ OPCODE(o72_getResourceSize),
OPCODE(o72_setFilePath),
OPCODE(o72_setWindowCaption),
OPCODE(o70_polygonOps),
@@ -824,37 +824,4 @@ void ScummEngine_v80he::o80_pickVarRandom() {
push(readArray(value, 0, num));
}
-void ScummEngine_v80he::o80_getResourceSize() {
- const byte *ptr;
- int size, type;
-
- int resid = pop();
- byte subOp = fetchScriptByte();
-
- switch (subOp) {
- case 13:
- push (getSoundResourceSize(resid));
- return;
- case 14:
- type = rtRoomImage;
- break;
- case 15:
- type = rtImage;
- break;
- case 16:
- type = rtCostume;
- break;
- case 17:
- type = rtScript;
- break;
- default:
- error("o80_getResourceSize: default type %d", subOp);
- }
-
- ptr = getResourceAddress(type, resid);
- assert(ptr);
- size = READ_BE_UINT32(ptr + 4) - 8;
- push(size);
-}
-
} // End of namespace Scumm
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index e0ba5b0209..fd4d948de0 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -353,7 +353,7 @@ void ScummEngine_v90he::setupOpcodes() {
OPCODE(o70_getCharIndexInString),
OPCODE(o6_invalid),
/* F8 */
- OPCODE(o80_getResourceSize),
+ OPCODE(o72_getResourceSize),
OPCODE(o72_setFilePath),
OPCODE(o72_setWindowCaption),
OPCODE(o70_polygonOps),
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index aca3a89dd0..0f1b92c196 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -253,17 +253,17 @@ static const ScummGameSettings scumm_settings[] = {
// Humongous Entertainment Scumm Version 7.2
{"catalog2", "Humongous Interactive Catalog 2", GID_HEGAME, 6, 72, MDT_NONE,
GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows, 0, 0},
- {"freddemo", "Freddi Fish 1: The Case of the Missing Kelp Seeds (Demo)", GID_HEGAME, 6, 72, MDT_NONE,
+ {"freddemo", "Freddi Fish 1: The Case of the Missing Kelp Seeds (Demo)", GID_HEGAME, 6, 73, MDT_NONE,
GF_USE_KEY | GF_NEW_COSTUMES | GF_MULTIPLE_VERSIONS, Common::kPlatformWindows, 0, 0},
{"farmdemo", "Let's Explore the Farm with Buzzy (Demo)", GID_HEGAME, 6, 72, MDT_NONE,
GF_USE_KEY | GF_NEW_COSTUMES | GF_MULTIPLE_VERSIONS, Common::kPlatformWindows, 0, 0},
- {"farm", "Let's Explore the Farm with Buzzy", GID_HEGAME, 6, 72, MDT_NONE,
+ {"farm", "Let's Explore the Farm with Buzzy", GID_HEGAME, 6, 73, MDT_NONE,
GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows, 0, 0},
{"airdemo", "Let's Explore the Airport with Buzzy (Demo)", GID_HEGAME, 6, 72, MDT_NONE,
GF_USE_KEY | GF_NEW_COSTUMES | GF_MULTIPLE_VERSIONS, Common::kPlatformWindows, 0, 0},
{"airport", "Let's Explore the Airport with Buzzy", GID_HEGAME, 6, 72, MDT_NONE,
GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows, 0, 0},
- {"jungle", "Let's Explore the Jungle with Buzzy", GID_HEGAME, 6, 72, MDT_NONE,
+ {"jungle", "Let's Explore the Jungle with Buzzy", GID_HEGAME, 6, 73, MDT_NONE,
GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows, 0, 0},
{"puttzoo", "Putt-Putt Saves the Zoo", GID_HEGAME, 6, 72, MDT_NONE,
@@ -2966,6 +2966,7 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) {
case 80:
engine = new ScummEngine_v80he(detector, syst, game, md5sum, substLastIndex);
break;
+ case 73:
case 72:
engine = new ScummEngine_v72he(detector, syst, game, md5sum, substLastIndex);
break;