diff options
-rw-r--r-- | scumm/script_v2.cpp | 5 | ||||
-rw-r--r-- | scumm/script_v5.cpp | 70 |
2 files changed, 36 insertions, 39 deletions
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp index 0d75988578..75115928ca 100644 --- a/scumm/script_v2.cpp +++ b/scumm/script_v2.cpp @@ -373,7 +373,7 @@ int Scumm_v2::getVar() { } void Scumm_v2::decodeParseString() { - byte buffer[256]; // FIXME + byte buffer[256]; byte *ptr = buffer; byte c; bool insertSpace = false; @@ -1252,8 +1252,7 @@ void Scumm_v2::o2_setBoxFlags() { } void Scumm_v2::o2_setCameraAt() { - setCameraAtEx(getVarOrDirectByte(0x80) * 8); // FIXME: I'm pretty sure we actually pan - // by strip, not X/Y, here. Hence *8 + setCameraAtEx(getVarOrDirectByte(0x80) * 8); } void Scumm_v2::o2_roomOps() { diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp index 6f1458c900..a7dad1f64a 100644 --- a/scumm/script_v5.cpp +++ b/scumm/script_v5.cpp @@ -591,13 +591,12 @@ void Scumm_v5::o5_chainScript() { cur = _currentScript; - // FIXME: Work around a bug in script 33 in Indy3 VGA. That script is - // used for the fist fights in the Zeppeling. It uses Local[5], even - // though that is never set to any value. But script 33 is called - // via chainScript by script 32, and in there Local[5] is defined to - // the actor ID of the opposing soldier. So, we copy that value - // over to the Local[5] variable of script 33. - // See also bug #743314. + // WORKAROUND bug #743314: Work around a bug in script 33 in Indy3 VGA. + // That script is used for the fist fights in the Zeppeling. It uses + // Local[5], even though that is never set to any value. But script 33 is + // called via chainScript by script 32, and in there Local[5] is defined + // to the actor ID of the opposing soldier. So, we copy that value over + // to the Local[5] variable of script 33. if ((_gameId == GID_INDY3_TOWNS || _gameId == GID_INDY3_256 || _gameId == GID_INDY3) && vm.slot[cur].number == 32 && script == 33) { vars[5] = vm.localvar[cur][5]; @@ -954,10 +953,9 @@ void Scumm_v5::o5_getActorMoving() { void Scumm_v5::o5_getActorRoom() { getResultPos(); int act = getVarOrDirectByte(0x80); - // FIXME: Workaround for bug #746349. This is a really odd bu - //in either the script or in our script engine. Might be a good - // idea to investigate this further by e.g. looking at the FOA - // engine a bit closer. + // WORKAROUND bug #746349. This is a really odd bug in either the script + // or in our script engine. Might be a good idea to investigate this + // further by e.g. looking at the FOA engine a bit closer. if (_gameId == GID_INDY4 && _roomResource == 94 && vm.slot[_currentScript].number == 206 && act > _numActors) { setResult(0); return; @@ -1024,7 +1022,7 @@ void Scumm_v5::o5_getActorY() { if (_gameId == GID_INDY3_TOWNS || _gameId == GID_INDY3_256 || _gameId == GID_INDY3) { a = getVarOrDirectByte(0x80); - // FIXME - bug 636433 workaround (can't get into Zeppelin) + // WORKAROUND bug #636433 (can't get into Zeppelin) if (_roomResource == 36) { setResult(getObjY(a) - 1); return; @@ -1304,12 +1302,12 @@ void Scumm_v5::o5_loadRoom() { if (!(_features & GF_SMALL_HEADER) || room != _currentRoom) startScene(room, 0, 0); - // FIXME: Incredibly nasty evil hack to fix bug #770699 (During meeting - // with Guru, script 42 changes between room 0 and room 19 to create - // 'some time later' effects. On switching back to room 19, the camera - // reverts to 0,0 - Added for 0.5.0, should be fixed properly - if (_gameId == GID_ZAK && (vm.slot[_currentScript].number == 42) && (room == 19)) - setCameraAt(480, 0); + // FIXME: Incredibly nasty evil hack to fix bug #770699 (During meeting + // with Guru, script 42 changes between room 0 and room 19 to create + // 'some time later' effects. On switching back to room 19, the camera + // reverts to 0,0 - Added for 0.5.0, should be fixed properly + if (_gameId == GID_ZAK && (vm.slot[_currentScript].number == 42) && (room == 19)) + setCameraAt(480, 0); _fullRedraw = 1; } @@ -1908,7 +1906,7 @@ void Scumm_v5::o5_setObjectName() { byte *objptr; objptr = getOBCDFromObject(obj); if (objptr == NULL) { - // FIXME: Bug 587553. This is an odd one and looks more like + // WORKAROUND bug #587553: This is an odd one and looks more like // an actual bug in the original script. Usually we would error warning("Can't find OBCD to rename object %d to %s", obj, work); return; @@ -2139,14 +2137,13 @@ void Scumm_v5::o5_stopScript() { script = getVarOrDirectByte(0x80); - if ((_gameId == GID_ZAK) && (_roomResource == 7) && (vm.slot[_currentScript].number == 10001)) { - // FIXME: Nasty hack for bug #771499 - // Don't let the exit script for room 7 stop the buy script (24), - // switching to the number selection keypad (script 15) - if ((script == 24) && isScriptRunning(15)) - return; - } - + if ((_gameId == GID_ZAK) && (_roomResource == 7) && (vm.slot[_currentScript].number == 10001)) { + // FIXME: Nasty hack for bug #771499 + // Don't let the exit script for room 7 stop the buy script (24), + // switching to the number selection keypad (script 15) + if ((script == 24) && isScriptRunning(15)) + return; + } if (!script) stopObjectCode(); @@ -2421,20 +2418,21 @@ void Scumm_v5::o5_walkActorToActor() { if (_gameId == GID_LOOM256 && nr == 1 && nr2 == 0 && dist == 255 && vm.slot[_currentScript].number == 98) { - // FIXME: Work around bug #743615. LoomCD script 98 - // contains this: walkActorToActor(1,0,255) - // Once more this is either a script bug, or there is - // some hidden meaning in this odd walk request? + // WORKAROUND bug #743615: LoomCD script 98 contains this: + // walkActorToActor(1,0,255) + // Once again this is either a script bug, or there is some hidden + // or unknown meaning to this odd walk request... return; } if (_gameId == GID_INDY4 && nr == 1 && nr2 == 106 && dist == 255 && vm.slot[_currentScript].number == 210) { - // FIXME: Work around an invalid actor bug when using the - // camel in Fate of Atlantis, the "wits" path. The room-65-210 - // script contains this: walkActorToActor(1,106,255) - // Once more this is either a script bug, or there is - // some hidden meaning in this odd walk request? + // WORKAROUND bug: Work around an invalid actor bug when using the + // camel in Fate of Atlantis, the "wits" path. The room-65-210 script + // contains this: + // walkActorToActor(1,106,255) + // Once again this is either a script bug, or there is some hidden + // or unknown meaning to this odd walk request... return; } |