aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2003-05-07 23:09:04 +0000
committerMax Horn2003-05-07 23:09:04 +0000
commite6c8c462916d3a9885058913b212a3aa9639cc33 (patch)
tree307c1cde5fefe92f757143bc833d571296969368
parentb1145090f6b2dab6a249508bf17238bfa898681a (diff)
downloadscummvm-rg350-e6c8c462916d3a9885058913b212a3aa9639cc33.tar.gz
scummvm-rg350-e6c8c462916d3a9885058913b212a3aa9639cc33.tar.bz2
scummvm-rg350-e6c8c462916d3a9885058913b212a3aa9639cc33.zip
fixed bug #734057
svn-id: r7386
-rw-r--r--scumm/script_v5.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp
index 30be92c18f..2eceedbfa5 100644
--- a/scumm/script_v5.cpp
+++ b/scumm/script_v5.cpp
@@ -1526,16 +1526,21 @@ void Scumm_v5::o5_resourceRoutines() {
_opcode = fetchScriptByte();
if (_opcode != 17)
resid = getVarOrDirectByte(0x80);
- if (_gameId == GID_ZAK256)
- _opcode &= 0x3F;
- else
- _opcode &= 0x1F;
+ if (_gameId != GID_ZAK256) {
+ // FIXME - this probably can be removed eventually, I don't think the following
+ // check will ever be triggered, but then I could be wrong and it's better
+ // to play it safe.
+ if((_opcode & 0x3F) != (_opcode & 0x1F))
+ error("Oops, this shouldn't happen: o5_resourceRoutines opcode %d", _opcode);
+ }
- switch (_opcode) {
+ int op = _opcode & 0x3F;
+
+ switch (_opcode & 0x3F) {
case 1: // load script
case 2: // load sound
case 3: // load costume
- ensureResourceLoaded(resType[_opcode-1], resid);
+ ensureResourceLoaded(resType[op-1], resid);
break;
case 4: // load room
if (_features == GF_AFTER_V3) {
@@ -1555,9 +1560,9 @@ void Scumm_v5::o5_resourceRoutines() {
case 7: // nuke costume
case 8: // nuke room
if (_gameId == GID_ZAK256)
- warning("o5_resourceRoutines %d should not occur in Zak256", _opcode);
+ warning("o5_resourceRoutines %d should not occur in Zak256", op);
else
- setResourceCounter(resType[_opcode-5], resid, 0x7F);
+ setResourceCounter(resType[op-5], resid, 0x7F);
break;
case 9: // lock script