JANITORIAL: Update more old bug tracker numbers

I missed the six digit ones and a few others in:
93eeffc84d
This commit is contained in:
sluicebox 2021-06-07 17:44:05 -06:00
parent 17b125b479
commit 674ed112aa
25 changed files with 70 additions and 70 deletions

View file

@ -229,7 +229,7 @@ Common::String DefaultSaveFileManager::getSavePath() const {
// Try to use game specific savepath from config // Try to use game specific savepath from config
dir = ConfMan.get("savepath"); dir = ConfMan.get("savepath");
// Work around a bug (#999122) in the original 0.6.1 release of // Work around a bug (#1689) in the original 0.6.1 release of
// ScummVM, which would insert a bad savepath value into config files. // ScummVM, which would insert a bad savepath value into config files.
if (dir == "None") { if (dir == "None") {
ConfMan.removeKey("savepath", ConfMan.getActiveDomainName()); ConfMan.removeKey("savepath", ConfMan.getActiveDomainName());

View file

@ -655,7 +655,7 @@ bool Parallaction::checkSpecialZoneBox(ZonePtr z, uint32 type, uint x, uint y) {
if (((ACTIONTYPE(z) == kZoneMerge) && (((x == z->u._mergeObj1) && (y == z->u._mergeObj2)) || ((x == z->u._mergeObj2) && (y == z->u._mergeObj1)))) || if (((ACTIONTYPE(z) == kZoneMerge) && (((x == z->u._mergeObj1) && (y == z->u._mergeObj2)) || ((x == z->u._mergeObj2) && (y == z->u._mergeObj1)))) ||
((ACTIONTYPE(z) == kZoneGet) && ((x == z->u._getIcon) || (y == z->u._getIcon)))) { ((ACTIONTYPE(z) == kZoneGet) && ((x == z->u._getIcon) || (y == z->u._getIcon)))) {
// WORKAROUND for bug 2070751: special zones are only used in NS, to allow the // WORKAROUND for bug #3897: special zones are only used in NS, to allow the
// the EXAMINE/USE action to be applied on some particular item in the inventory. // the EXAMINE/USE action to be applied on some particular item in the inventory.
// The usage a verb requires at least an item match, so type can't be 0, as it // The usage a verb requires at least an item match, so type can't be 0, as it
// was in the original code. This bug has been here since the beginning, and was // was in the original code. This bug has been here since the beginning, and was

View file

@ -2080,7 +2080,7 @@ void ScummEngine::processActors() {
// 'optimization' wouldn't yield a useful gain anyway. // 'optimization' wouldn't yield a useful gain anyway.
// //
// In particular, changing this loop caused a number of bugs in the // In particular, changing this loop caused a number of bugs in the
// past, including bugs #758167, #775097, and #1864. // past, including bugs #912, #1055, and #1864.
// //
// Note that Sam & Max uses a stable sorting method. Older games don't // Note that Sam & Max uses a stable sorting method. Older games don't
// and, according to cyx, neither do newer ones. At least not FT and // and, according to cyx, neither do newer ones. At least not FT and
@ -2461,7 +2461,7 @@ void Actor::startAnimActor(int f) {
_needRedraw = true; _needRedraw = true;
_cost.animCounter = 0; _cost.animCounter = 0;
// V1 - V2 games don't seem to need a _cost.reset() at this point. // V1 - V2 games don't seem to need a _cost.reset() at this point.
// Causes Zak to lose his body in several scenes, see bug #771508 // Causes Zak to lose his body in several scenes, see bug #1032
if (_vm->_game.version >= 3 && f == _initFrame) { if (_vm->_game.version >= 3 && f == _initFrame) {
_cost.reset(); _cost.reset();
if (_vm->_game.heversion != 0) { if (_vm->_game.heversion != 0) {
@ -2844,7 +2844,7 @@ void ScummEngine::actorTalk(const byte *msg) {
// bug (#11480). It is not okay to skip the stopTalk() calls here. // bug (#11480). It is not okay to skip the stopTalk() calls here.
// Instead, I have added two checks from LOOM DOS EGA disasm (one // Instead, I have added two checks from LOOM DOS EGA disasm (one
// below and one in CHARSET_1()). // below and one in CHARSET_1()).
// WORKAROUND for bugs #770039 and #770049 // WORKAROUND for bugs #985 and #990
/*if (_game.id == GID_LOOM) { /*if (_game.id == GID_LOOM) {
if (!*_charsetBuffer) if (!*_charsetBuffer)
return; return;
@ -2858,7 +2858,7 @@ void ScummEngine::actorTalk(const byte *msg) {
} else { } else {
int oldact; int oldact;
// WORKAROUND bug #770724 // WORKAROUND bug #1025
if (_game.id == GID_LOOM && _roomResource == 23 && if (_game.id == GID_LOOM && _roomResource == 23 &&
vm.slot[_currentScript].number == 232 && _actorToPrintStrFor == 0) { vm.slot[_currentScript].number == 232 && _actorToPrintStrFor == 0) {
_actorToPrintStrFor = 2; // Could be anything from 2 to 5. Maybe compare to original? _actorToPrintStrFor = 2; // Could be anything from 2 to 5. Maybe compare to original?

View file

@ -164,7 +164,7 @@ static Common::Point closestPtOnLine(const Common::Point &lineStart, const Commo
} }
byte ScummEngine::getMaskFromBox(int box) { byte ScummEngine::getMaskFromBox(int box) {
// WORKAROUND for bug #740244 and #755863. This appears to have been a // WORKAROUND for bug #791 and #897. This appears to have been a
// long standing bug in the original engine? // long standing bug in the original engine?
if (_game.version <= 3 && box == 255) if (_game.version <= 3 && box == 255)
return 1; return 1;
@ -173,7 +173,7 @@ byte ScummEngine::getMaskFromBox(int box) {
if (!ptr) if (!ptr)
return 0; return 0;
// WORKAROUND for bug #847827: This is a bug in the data files, as it also // WORKAROUND for bug #1315: This is a bug in the data files, as it also
// occurs with the original engine. We work around it here anyway. // occurs with the original engine. We work around it here anyway.
if (_game.id == GID_INDY4 && _currentRoom == 225 && _roomResource == 94 && box == 8) if (_game.id == GID_INDY4 && _currentRoom == 225 && _roomResource == 94 && box == 8)
return 0; return 0;
@ -462,7 +462,7 @@ Box *ScummEngine::getBoxBaseAddr(int box) {
// WORKAROUND: In "pass to adventure", the loom demo, when bobbin enters // WORKAROUND: In "pass to adventure", the loom demo, when bobbin enters
// the tent to the elders, box = 2, but ptr[0] = 2 -> errors out. // the tent to the elders, box = 2, but ptr[0] = 2 -> errors out.
// Also happens in Indy3EGA (see bug #770351) and ZakEGA (see bug #771803). // Also happens in Indy3EGA (see bug #1007) and ZakEGA (see bug #1037).
// //
// This *might* mean that we have a bug in our box implementation // This *might* mean that we have a bug in our box implementation
// OTOH, the original engine, unlike ScummVM, performed no bound // OTOH, the original engine, unlike ScummVM, performed no bound
@ -587,7 +587,7 @@ BoxCoords ScummEngine::getBoxCoordinates(int boxnum) {
box->lr.x = (short)FROM_LE_32(bp->v8.lrx); box->lr.x = (short)FROM_LE_32(bp->v8.lrx);
box->lr.y = (short)FROM_LE_32(bp->v8.lry); box->lr.y = (short)FROM_LE_32(bp->v8.lry);
// WORKAROUND (see patch #684732): Some walkboxes in CMI appear // WORKAROUND (see patch #8173): Some walkboxes in CMI appear
// to have been flipped, in the sense that for instance the // to have been flipped, in the sense that for instance the
// lower boundary is above the upper one. We work around this // lower boundary is above the upper one. We work around this
// by simply flipping them back. // by simply flipping them back.
@ -757,7 +757,7 @@ int ScummEngine::getNextBox(byte from, byte to) {
// WORKAROUND #1: It seems that in some cases, the box matrix is corrupt // WORKAROUND #1: It seems that in some cases, the box matrix is corrupt
// (more precisely, is too short) in the datafiles already. In // (more precisely, is too short) in the datafiles already. In
// particular this seems to be the case in room 46 of Indy3 EGA (see // particular this seems to be the case in room 46 of Indy3 EGA (see
// also bug #770690). This didn't cause problems in the original // also bug #1017). This didn't cause problems in the original
// engine, because there, the memory layout is different. After the // engine, because there, the memory layout is different. After the
// walkbox would follow the rest of the room file, thus the program // walkbox would follow the rest of the room file, thus the program
// always behaved the same (and by chance, correct). Not so for us, // always behaved the same (and by chance, correct). Not so for us,
@ -769,7 +769,7 @@ int ScummEngine::getNextBox(byte from, byte to) {
// WORKAROUND #2: In addition to the above, we have to add this special // WORKAROUND #2: In addition to the above, we have to add this special
// case to fix the scene in Indy3 where Indy meets Hitler in Berlin. // case to fix the scene in Indy3 where Indy meets Hitler in Berlin.
// See bug #770690 and also bug #774783. // See bug #1017 and also bug #1052.
if ((_game.id == GID_INDY3) && _roomResource == 46 && from == 1 && to == 0) if ((_game.id == GID_INDY3) && _roomResource == 46 && from == 1 && to == 0)
return 0; return 0;

View file

@ -237,8 +237,8 @@ void ScummEngine_v7::setCameraAt(int pos_x, int pos_y) {
// Even though cameraMoved() is called automatically, we may // Even though cameraMoved() is called automatically, we may
// need to know at once that the camera has moved, or text may // need to know at once that the camera has moved, or text may
// be printed at the wrong coordinates. See bugs #795938 and // be printed at the wrong coordinates. See bugs #1195 and
// #929242 // #1579
cameraMoved(); cameraMoved();
} }
} }

View file

@ -1923,7 +1923,7 @@ bool Gdi::drawStrip(byte *dstPtr, VirtScreen *vs, int x, int y, const int width,
// Do some input verification and make sure the strip/strip offset // Do some input verification and make sure the strip/strip offset
// are actually valid. Normally, this should never be a problem, // are actually valid. Normally, this should never be a problem,
// but if e.g. a savegame gets corrupted, we can easily get into // but if e.g. a savegame gets corrupted, we can easily get into
// trouble here. See also bug #795214. // trouble here. See also bug #1191.
int offset = -1, smapLen; int offset = -1, smapLen;
if (_vm->_game.features & GF_16COLOR) { if (_vm->_game.features & GF_16COLOR) {
smapLen = READ_LE_UINT16(smap_ptr); smapLen = READ_LE_UINT16(smap_ptr);

View file

@ -363,7 +363,7 @@ void IMuseInternal::pause(bool paused) {
update_volumes(); update_volumes();
_music_volume = vol; _music_volume = vol;
// Fix for Bug #817871. The MT-32 apparently fails // Fix for Bug #1263. The MT-32 apparently fails
// sometimes to respond to a channel volume message // sometimes to respond to a channel volume message
// (or only uses it for subsequent note events). // (or only uses it for subsequent note events).
// The result is hanging notes on pause. Reportedly // The result is hanging notes on pause. Reportedly
@ -607,7 +607,7 @@ bool IMuseInternal::startSound_internal(int sound, int offset) {
// playing, otherwise the music may stop when Sam and Max are thrown // playing, otherwise the music may stop when Sam and Max are thrown
// out of Bumpusville, because entering the mansion sets up a trigger // out of Bumpusville, because entering the mansion sets up a trigger
// for a sound that isn't necessarily playing. This is somewhat related // for a sound that isn't necessarily playing. This is somewhat related
// to bug #780918. // to bug #1090.
int i; int i;
ImTrigger *trigger = _snm_triggers; ImTrigger *trigger = _snm_triggers;
@ -633,8 +633,8 @@ bool IMuseInternal::startSound_internal(int sound, int offset) {
// iMuse messiness while upgrading the iMuse engine, but it // iMuse messiness while upgrading the iMuse engine, but it
// is apparently necessary to deal with fade-and-restart // is apparently necessary to deal with fade-and-restart
// race conditions that were observed in MI2. Reference // race conditions that were observed in MI2. Reference
// Bug #590511 and Patch #607175 (which was reversed to fix // Bug #385 and Patch #8038 (which was reversed to fix
// an FOA regression: Bug #622606). // an FOA regression: Bug #488).
Player *player = findActivePlayer(sound); Player *player = findActivePlayer(sound);
if (!player) { if (!player) {
ptr = findStartOfSound(sound, IMuseInternal::kMDhd); ptr = findStartOfSound(sound, IMuseInternal::kMDhd);
@ -1255,7 +1255,7 @@ int32 IMuseInternal::ImSetTrigger(int sound, int id, int a, int b, int c, int d,
break; break;
// We used to only compare 'id' and 'sound' here, but at least // We used to only compare 'id' and 'sound' here, but at least
// at the Dino Bungie Memorial that causes the music to stop // at the Dino Bungie Memorial that causes the music to stop
// after getting the T-Rex tooth. See bug #888161. // after getting the T-Rex tooth. See bug #1429.
if (trig->id == id && trig->sound == sound && trig->command[0] == a) if (trig->id == id && trig->sound == sound && trig->command[0] == a)
break; break;
@ -1291,7 +1291,7 @@ int32 IMuseInternal::ImSetTrigger(int sound, int id, int a, int b, int c, int d,
// This fixes some carnival music problems. // This fixes some carnival music problems.
// NOTE: We ONLY do this if the sound that will trigger the command is actually // NOTE: We ONLY do this if the sound that will trigger the command is actually
// playing. Otherwise, there's a problem when exiting and re-entering the // playing. Otherwise, there's a problem when exiting and re-entering the
// Bumpusville mansion. Ref Bug #780918. // Bumpusville mansion. Ref Bug #1090.
if (trig->command[0] == 8 && getSoundStatus_internal(trig->command[1], true) && getSoundStatus_internal(sound, true)) if (trig->command[0] == 8 && getSoundStatus_internal(trig->command[1], true) && getSoundStatus_internal(sound, true))
stopSound_internal(trig->command[1]); stopSound_internal(trig->command[1]);
return 0; return 0;

View file

@ -102,7 +102,7 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) {
break; break;
case 1: case 1:
// Shut down a part. [Bug 1088045, comments] // Shut down a part. [Bug #1849, comments]
part = player->getPart(p[0]); part = player->getPart(p[0]);
if (part != NULL) if (part != NULL)
part->uninit(); part->uninit();

View file

@ -101,7 +101,7 @@ void ScummEngine::setOwnerOf(int obj, int owner) {
// In Sam & Max this is necessary, or you won't get your stuff back // In Sam & Max this is necessary, or you won't get your stuff back
// from the Lost and Found tent after riding the Cone of Tragedy. But // from the Lost and Found tent after riding the Cone of Tragedy. But
// it probably applies to all V6+ games. See bugs #493153 and #907113. // it probably applies to all V6+ games. See bugs #52 and #1507.
// FT disassembly is checked, behavior is correct. [sev] // FT disassembly is checked, behavior is correct. [sev]
int arg = (_game.version >= 6) ? obj : 0; int arg = (_game.version >= 6) ? obj : 0;
@ -502,7 +502,7 @@ int ScummEngine::getObjActToObjActDist(int a, int b) {
// Perform adjustXYToBeInBox() *only* if the first item is an // Perform adjustXYToBeInBox() *only* if the first item is an
// actor and the second is an object. This used to not check // actor and the second is an object. This used to not check
// whether the second item is a non-actor, which caused bug // whether the second item is a non-actor, which caused bug
// #853874). // #1320).
if (acta && !actb) { if (acta && !actb) {
AdjustBoxResult r = acta->adjustXYToBeInBox(x2, y2); AdjustBoxResult r = acta->adjustXYToBeInBox(x2, y2);
x2 = r.x; x2 = r.x;

View file

@ -1178,7 +1178,7 @@ void ScummEngine_v5::readMAXS(int blockSize) {
_numArray = 50; _numArray = 50;
_numVerbs = 100; _numVerbs = 100;
// Used to be 50, which wasn't enough for MI2 and FOA. See bugs // Used to be 50, which wasn't enough for MI2 and FOA. See bugs
// #933610, #936323 and #941275. // #1591, #1600 and #1607.
_numNewNames = 150; _numNewNames = 150;
_objectRoomTable = NULL; _objectRoomTable = NULL;

View file

@ -77,7 +77,7 @@ void ScummEngine::startScene(int room, Actor *a, int objectNr) {
stopCycle(0); stopCycle(0);
if (_game.id == GID_SAMNMAX) { if (_game.id == GID_SAMNMAX) {
// WORKAROUND bug #85373 SAM: Overlapping music at Bigfoot convention // WORKAROUND bug #1132 SAM: Overlapping music at Bigfoot convention
// Added sound queue processing between execution of exit // Added sound queue processing between execution of exit
// script and entry script. In the case of this bug, the // script and entry script. In the case of this bug, the
// entry script required that the iMuse state be fully up // entry script required that the iMuse state be fully up
@ -99,7 +99,7 @@ void ScummEngine::startScene(int room, Actor *a, int objectNr) {
if (_game.version >= 7) { if (_game.version >= 7) {
// Set the shadow palette(s) to all black. This fixes // Set the shadow palette(s) to all black. This fixes
// bug #795940, and actually makes some sense (after all, // bug #1196, and actually makes some sense (after all,
// shadows tend to be rather black, don't they? ;-) // shadows tend to be rather black, don't they? ;-)
memset(_shadowPalette, 0, NUM_SHADOW_PALETTE * 256); memset(_shadowPalette, 0, NUM_SHADOW_PALETTE * 256);
} else { } else {

View file

@ -399,7 +399,7 @@ bool ScummEngine::loadState(int slot, bool compat, Common::String &filename) {
// Thus, we should probably not stop music when restoring from one of // Thus, we should probably not stop music when restoring from one of
// these saves. This change stops the Mole Man theme from going quiet in // these saves. This change stops the Mole Man theme from going quiet in
// Sam & Max when Doug tells you about the Ball of Twine, as mentioned in // Sam & Max when Doug tells you about the Ball of Twine, as mentioned in
// patch #886058. // patch #8316.
// //
// If we don't have iMUSE at all we may as well stop the sounds. The previous // If we don't have iMUSE at all we may as well stop the sounds. The previous
// default behavior here was to stopAllSounds on all state restores. // default behavior here was to stopAllSounds on all state restores.
@ -465,7 +465,7 @@ bool ScummEngine::loadState(int slot, bool compat, Common::String &filename) {
if (_screenTop < 0) if (_screenTop < 0)
_screenTop = 0; _screenTop = 0;
// WORKAROUND bug #795214: For unknown reasons, object 819 sometimes is in // WORKAROUND bug #1191: For unknown reasons, object 819 sometimes is in
// state 1 in old save games, implying it should be drawn. This in turn // state 1 in old save games, implying it should be drawn. This in turn
// results in a crash when entering the church, as object 819 is part of the // results in a crash when entering the church, as object 819 is part of the
// exitof the church and there are no graphics assigned to it. // exitof the church and there are no graphics assigned to it.
@ -1484,7 +1484,7 @@ void ScummEngine::saveLoadWithSerializer(Common::Serializer &s) {
syncWithSerializer(s, info); syncWithSerializer(s, info);
// If we are loading, and the music being loaded was supposed to loop // If we are loading, and the music being loaded was supposed to loop
// forever, then resume playing it. This helps a lot when the audio CD // forever, then resume playing it. This helps a lot when the audio CD
// is used to provide ambient music (see bug #788195). // is used to provide ambient music (see bug #1150).
if (s.isLoading() && info.playing && info.numLoops < 0) if (s.isLoading() && info.playing && info.numLoops < 0)
_sound->playCDTrackInternal(info.track, info.numLoops, info.start, info.duration); _sound->playCDTrackInternal(info.track, info.numLoops, info.start, info.duration);
} }
@ -1715,7 +1715,7 @@ void ScummEngine::loadResourceOLD(Common::Serializer &ser, ResType type, ResId i
} }
if (type == rtObjectName && ser.getVersion() >= VER(25)) { if (type == rtObjectName && ser.getVersion() >= VER(25)) {
// Paranoia: We increased the possible number of new names // Paranoia: We increased the possible number of new names
// to fix bugs #933610 and #936323. The savegame format // to fix bugs #1591 and #1600. The savegame format
// didn't change, but at least during the transition // didn't change, but at least during the transition
// period there is a slight chance that we try to load // period there is a slight chance that we try to load
// more names than we have allocated space for. If so, // more names than we have allocated space for. If so,

View file

@ -1036,7 +1036,7 @@ void ScummEngine::killScriptsAndResources() {
// no longer in use (i.e. not owned by anyone anymore); or if // no longer in use (i.e. not owned by anyone anymore); or if
// it is an object which is owned by a room. // it is an object which is owned by a room.
if (owner == 0 || (_game.version < 7 && owner == OF_OWNER_ROOM)) { if (owner == 0 || (_game.version < 7 && owner == OF_OWNER_ROOM)) {
// WORKAROUND for a problem mentioned in bug report #941275: // WORKAROUND for a problem mentioned in bug report #1607:
// In FOA in the sentry room, in the chest plate of the statue, // In FOA in the sentry room, in the chest plate of the statue,
// the pegs may be renamed to mouth: this custom name is lost // the pegs may be renamed to mouth: this custom name is lost
// when leaving the room; this hack prevents this). // when leaving the room; this hack prevents this).
@ -1485,7 +1485,7 @@ int ScummEngine::resStrLen(const byte *src) {
chr = *src++; chr = *src++;
num++; num++;
// WORKAROUND for bug #985948, a script bug in Indy3. See also // WORKAROUND for bug #1675, a script bug in Indy3. See also
// the corresponding code in ScummEngine::convertMessageToString(). // the corresponding code in ScummEngine::convertMessageToString().
if (_game.id == GID_INDY3 && chr == 0x2E) { if (_game.id == GID_INDY3 && chr == 0x2E) {
continue; continue;

View file

@ -1228,7 +1228,7 @@ void ScummEngine_v2::stopScriptCommon(int script) {
} }
if (_game.id == GID_MANIAC && _roomResource == 26 && vm.slot[_currentScript].number == 10001) { if (_game.id == GID_MANIAC && _roomResource == 26 && vm.slot[_currentScript].number == 10001) {
// FIXME: Nasty hack for bug #915575 // FIXME: Nasty hack for bug #1529
// Don't let the exit script for room 26 stop the script (116), when // Don't let the exit script for room 26 stop the script (116), when
// switching to the dungeon (script 89) // switching to the dungeon (script 89)
if (script == MM_SCRIPT(111) && isScriptRunning(MM_SCRIPT(84))) if (script == MM_SCRIPT(111) && isScriptRunning(MM_SCRIPT(84)))

View file

@ -570,7 +570,7 @@ void ScummEngine_v5::o5_add() {
getResultPos(); getResultPos();
a = getVarOrDirectWord(PARAM_1); a = getVarOrDirectWord(PARAM_1);
// WORKAROUND bug #770065: This works around a script bug in LoomCD. To // WORKAROUND bug #994: This works around a script bug in LoomCD. To
// understand the reasoning behind this, compare script 210 and 218 in // understand the reasoning behind this, compare script 210 and 218 in
// room 20. Apparently they made a mistake when converting the absolute // room 20. Apparently they made a mistake when converting the absolute
// delays into relative ones. // delays into relative ones.
@ -615,13 +615,13 @@ void ScummEngine_v5::o5_animateActor() {
int act = getVarOrDirectByte(PARAM_1); int act = getVarOrDirectByte(PARAM_1);
int anim = getVarOrDirectByte(PARAM_2); int anim = getVarOrDirectByte(PARAM_2);
// WORKAROUND bug #820357: This seems to be yet another script bug which // WORKAROUND bug #1265: This seems to be yet another script bug which
// the original engine let slip by. For details, refer to the tracker item. // the original engine let slip by. For details, refer to the tracker item.
if (_game.id == GID_INDY4 && vm.slot[_currentScript].number == 206 && _currentRoom == 17 && (act == 31 || act == 86)) { if (_game.id == GID_INDY4 && vm.slot[_currentScript].number == 206 && _currentRoom == 17 && (act == 31 || act == 86)) {
return; return;
} }
// WORKAROUND bug #859513: While on mars, going outside without your helmet // WORKAROUND bug #1339: While on mars, going outside without your helmet
// (or missing some other part of your "space suite" will cause your // (or missing some other part of your "space suite" will cause your
// character to complain ("I can't breathe."). Unfortunately, this is // character to complain ("I can't breathe."). Unfortunately, this is
// coupled with an animate command, making it very difficult to return to // coupled with an animate command, making it very difficult to return to
@ -653,7 +653,7 @@ void ScummEngine_v5::o5_chainScript() {
cur = _currentScript; cur = _currentScript;
// WORKAROUND bug #743314: Work around a bug in script 33 in Indy3 VGA. // WORKAROUND bug #812: Work around a bug in script 33 in Indy3 VGA.
// That script is used for the fist fights in the Zeppelin. It uses // That script is used for the fist fights in the Zeppelin. It uses
// Local[5], even though that is never set to any value. But script 33 is // 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 set to // called via chainScript by script 32, and in there Local[5] is set to
@ -1009,7 +1009,7 @@ void ScummEngine_v5::o5_getActorMoving() {
void ScummEngine_v5::o5_getActorRoom() { void ScummEngine_v5::o5_getActorRoom() {
getResultPos(); getResultPos();
int act = getVarOrDirectByte(PARAM_1); int act = getVarOrDirectByte(PARAM_1);
// WORKAROUND bug #746349. This is a really odd bug in either the script // WORKAROUND bug #832. This is a really odd bug in either the script
// or in our script engine. Might be a good idea to investigate this // 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. // further by e.g. looking at the FOA engine a bit closer.
if (_game.id == GID_INDY4 && _roomResource == 94 && vm.slot[_currentScript].number == 206 && !isValidActor(act)) { if (_game.id == GID_INDY4 && _roomResource == 94 && vm.slot[_currentScript].number == 206 && !isValidActor(act)) {
@ -1063,7 +1063,7 @@ void ScummEngine_v5::o5_getActorY() {
if ((_game.id == GID_INDY3) && !(_game.platform == Common::kPlatformMacintosh)) { if ((_game.id == GID_INDY3) && !(_game.platform == Common::kPlatformMacintosh)) {
a = getVarOrDirectByte(PARAM_1); a = getVarOrDirectByte(PARAM_1);
// WORKAROUND bug #636433 (can't get into Zeppelin) // WORKAROUND bug #560 (can't get into Zeppelin)
if (_roomResource == 36) { if (_roomResource == 36) {
setResult(getObjY(a) - 1); setResult(getObjY(a) - 1);
return; return;
@ -1123,12 +1123,12 @@ void ScummEngine_v5::o5_getDist() {
else else
r = getObjActToObjActDist(o1, o2); r = getObjActToObjActDist(o1, o2);
// FIXME: MI2 race workaround, see bug #597022. We never quite figured out // FIXME: MI2 race workaround, see bug #420. We never quite figured out
// what the real cause of this, or if it maybe occurs in the original, too... // what the real cause of this, or if it maybe occurs in the original, too...
if (_game.id == GID_MONKEY2 && vm.slot[_currentScript].number == 40 && r < 60) if (_game.id == GID_MONKEY2 && vm.slot[_currentScript].number == 40 && r < 60)
r = 60; r = 60;
// WORKAROUND bug #795937 // WORKAROUND bug #1194
if ((_game.id == GID_MONKEY_EGA || _game.id == GID_PASS) && o1 == 1 && o2 == 307 && vm.slot[_currentScript].number == 205 && r == 2) if ((_game.id == GID_MONKEY_EGA || _game.id == GID_PASS) && o1 == 1 && o2 == 307 && vm.slot[_currentScript].number == 205 && r == 2)
r = 3; r = 3;
@ -1219,7 +1219,7 @@ void ScummEngine_v5::o5_isEqual() {
a = readVar(var); a = readVar(var);
b = getVarOrDirectWord(PARAM_1); b = getVarOrDirectWord(PARAM_1);
// HACK: See bug report #602348. The sound effects for Largo's screams // HACK: See bug report #441. The sound effects for Largo's screams
// are only played on type 5 soundcards. However, there is at least one // are only played on type 5 soundcards. However, there is at least one
// other sound effect (the bartender spitting) which is only played on // other sound effect (the bartender spitting) which is only played on
// type 3 soundcards. // type 3 soundcards.
@ -1257,7 +1257,7 @@ void ScummEngine_v5::o5_isLessEqual() {
int16 a = getVar(); int16 a = getVar();
int16 b = getVarOrDirectWord(PARAM_1); int16 b = getVarOrDirectWord(PARAM_1);
// WORKAROUND bug #820507 : Work around a bug in Indy3Town. // WORKAROUND bug #1266 : Work around a bug in Indy3Town.
if (_game.id == GID_INDY3 && (_game.platform == Common::kPlatformFMTowns) && if (_game.id == GID_INDY3 && (_game.platform == Common::kPlatformFMTowns) &&
(vm.slot[_currentScript].number == 200 || vm.slot[_currentScript].number == 203) && (vm.slot[_currentScript].number == 200 || vm.slot[_currentScript].number == 203) &&
_currentRoom == 70 && b == -256) { _currentRoom == 70 && b == -256) {
@ -1619,7 +1619,7 @@ void ScummEngine_v5::o5_resourceRoutines() {
loadFlObject(getVarOrDirectWord(PARAM_2), resid); loadFlObject(getVarOrDirectWord(PARAM_2), resid);
break; break;
// TODO: For the following see also Hibarnatus' information on bug #805691. // TODO: For the following see also Hibarnatus' information on bug #7315.
case 32: case 32:
// TODO (apparently never used in FM-TOWNS) // TODO (apparently never used in FM-TOWNS)
debug(0, "o5_resourceRoutines %d not yet handled (script %d)", op, vm.slot[_currentScript].number); debug(0, "o5_resourceRoutines %d not yet handled (script %d)", op, vm.slot[_currentScript].number);
@ -2036,7 +2036,7 @@ void ScummEngine_v5::o5_setVarRange() {
void ScummEngine_v5::o5_startMusic() { void ScummEngine_v5::o5_startMusic() {
if (_game.platform == Common::kPlatformFMTowns && _game.version == 3) { if (_game.platform == Common::kPlatformFMTowns && _game.version == 3) {
// In FM-TOWNS games this is some kind of Audio CD status query function. // In FM-TOWNS games this is some kind of Audio CD status query function.
// See also bug #762589 (thanks to Hibernatus for providing the information). // See also bug #927 (thanks to Hibernatus for providing the information).
getResultPos(); getResultPos();
int b = getVarOrDirectByte(PARAM_1); int b = getVarOrDirectByte(PARAM_1);
int result = 0; int result = 0;
@ -2546,7 +2546,7 @@ void ScummEngine_v5::o5_walkActorToActor() {
if (_game.id == GID_LOOM && _game.version == 4 && nr == 1 && nr2 == 0 && if (_game.id == GID_LOOM && _game.version == 4 && nr == 1 && nr2 == 0 &&
dist == 255 && vm.slot[_currentScript].number == 98) { dist == 255 && vm.slot[_currentScript].number == 98) {
// WORKAROUND bug #743615: LoomCD script 98 contains this: // WORKAROUND bug #814: LoomCD script 98 contains this:
// walkActorToActor(1,0,255) // walkActorToActor(1,0,255)
// Once again this is either a script bug, or there is some hidden // Once again this is either a script bug, or there is some hidden
// or unknown meaning to this odd walk request... // or unknown meaning to this odd walk request...
@ -2728,7 +2728,7 @@ void ScummEngine_v5::decodeParseString() {
// //
// Note: We can't use saveDefault() here because we only want to // Note: We can't use saveDefault() here because we only want to
// save the position and color. In particular, we do not want to // save the position and color. In particular, we do not want to
// save the 'center' flag. See bug #933168. // save the 'center' flag. See bug #1588.
if (_game.version <= 3) { if (_game.version <= 3) {
_string[textSlot]._default.xpos = _string[textSlot].xpos; _string[textSlot]._default.xpos = _string[textSlot].xpos;
_string[textSlot]._default.ypos = _string[textSlot].ypos; _string[textSlot]._default.ypos = _string[textSlot].ypos;

View file

@ -397,7 +397,7 @@ int ScummEngine_v6::readArray(int array, int idx, int base) {
if (!ah) if (!ah)
error("readArray: invalid array %d (%d)", array, readVar(array)); error("readArray: invalid array %d (%d)", array, readVar(array));
// WORKAROUND bug #645711. This is clearly a script bug, as this script // WORKAROUND bug #600. This is clearly a script bug, as this script
// excerpt shows nicely: // excerpt shows nicely:
// ... // ...
// [03A7] (5D) if (isAnyOf(array-447[localvar13][localvar14],[0,4])) { // [03A7] (5D) if (isAnyOf(array-447[localvar13][localvar14],[0,4])) {
@ -755,7 +755,7 @@ void ScummEngine_v6::o6_startScript() {
_sound->soundKludge(list, 2); _sound->soundKludge(list, 2);
} }
// WORKAROUND bug #556558: At Dino Bungee National Memorial, the buttons for // WORKAROUND bug #269: At Dino Bungee National Memorial, the buttons for
// the Wally and Rex dinosaurs will always restart their speech, instead of // the Wally and Rex dinosaurs will always restart their speech, instead of
// stopping and starting their speech. This was a script bug in the original // stopping and starting their speech. This was a script bug in the original
// game. // game.
@ -764,7 +764,7 @@ void ScummEngine_v6::o6_startScript() {
o6_breakHere(); o6_breakHere();
} }
// WORKAROUND bug #903223: In Puerto Pollo, if you have Guybrush examine // WORKAROUND bug #1493: In Puerto Pollo, if you have Guybrush examine
// the church clock, he'll read out the current time. Nice touch, only that // the church clock, he'll read out the current time. Nice touch, only that
// it sounds crap in the german version (and maybe others, too). It seems // it sounds crap in the german version (and maybe others, too). It seems
// the original engine of the german version played just a simple fixed // the original engine of the german version played just a simple fixed
@ -1153,7 +1153,7 @@ void ScummEngine_v6::o6_walkActorToObj() {
} else { } else {
a2 = derefActorSafe(obj, "o6_walkActorToObj(2)"); a2 = derefActorSafe(obj, "o6_walkActorToObj(2)");
if (_game.id == GID_SAMNMAX && a2 == 0) { if (_game.id == GID_SAMNMAX && a2 == 0) {
// WORKAROUND bug #742676 SAM: Fish Farm. Note quite sure why it // WORKAROUND bug #801 SAM: Fish Farm. Note quite sure why it
// happens, whether it's normal or due to a bug in the ScummVM code. // happens, whether it's normal or due to a bug in the ScummVM code.
debug(0, "o6_walkActorToObj: invalid actor %d", obj); debug(0, "o6_walkActorToObj: invalid actor %d", obj);
return; return;
@ -1234,7 +1234,7 @@ void ScummEngine_v6::o6_animateActor() {
int act = pop(); int act = pop();
if (_game.id == GID_TENTACLE && _roomResource == 57 && if (_game.id == GID_TENTACLE && _roomResource == 57 &&
vm.slot[_currentScript].number == 19 && act == 593) { vm.slot[_currentScript].number == 19 && act == 593) {
// WORKAROUND bug #743363: This very odd case (animateActor(593,250)) // WORKAROUND bug #813: This very odd case (animateActor(593,250))
// occurs in DOTT, in the cutscene after George cuts down the "cherry // occurs in DOTT, in the cutscene after George cuts down the "cherry
// tree" and the tree Laverne is trapped in vanishes... // tree" and the tree Laverne is trapped in vanishes...
// Not sure if this means animateActor somehow also must work for objects // Not sure if this means animateActor somehow also must work for objects
@ -2220,7 +2220,7 @@ void ScummEngine_v6::o6_wait() {
break; break;
return; return;
case 232: // SO_WAIT_FOR_TURN case 232: // SO_WAIT_FOR_TURN
// WORKAROUND for bug #744441: An angle will often be received as the // WORKAROUND for bug #819: An angle will often be received as the
// actor number due to script bugs in The Dig. In all cases where this // actor number due to script bugs in The Dig. In all cases where this
// occurs, _curActor is set just before it, so we can use it instead. // occurs, _curActor is set just before it, so we can use it instead.
// //
@ -2355,7 +2355,7 @@ void ScummEngine_v6::o6_printEgo() {
void ScummEngine_v6::o6_talkActor() { void ScummEngine_v6::o6_talkActor() {
int offset = _scriptPointer - _scriptOrgPointer; int offset = _scriptPointer - _scriptOrgPointer;
// WORKAROUND for bug #896489: see below for detailed description // WORKAROUND for bug #1452: see below for detailed description
if (_forcedWaitForMessage) { if (_forcedWaitForMessage) {
if (VAR(VAR_HAVE_MSG)) { if (VAR(VAR_HAVE_MSG)) {
_scriptPointer--; _scriptPointer--;
@ -2383,7 +2383,7 @@ void ScummEngine_v6::o6_talkActor() {
_string[0].loadDefault(); _string[0].loadDefault();
actorTalk(_scriptPointer); actorTalk(_scriptPointer);
// WORKAROUND for bug #896489: "DIG: Missing subtitles when talking to Brink" // WORKAROUND for bug #1452: "DIG: Missing subtitles when talking to Brink"
// Original script does not have wait.waitForMessage() after several messages: // Original script does not have wait.waitForMessage() after several messages:
// //
// [011A] (5D) if (getActorCostume(VAR_EGO) == 1) { // [011A] (5D) if (getActorCostume(VAR_EGO) == 1) {
@ -2744,7 +2744,7 @@ void ScummEngine_v6::o6_kernelGetFunctions() {
switch (args[0]) { switch (args[0]) {
case 113: case 113:
// WORKAROUND for bug #899249: The scripts used for screen savers // WORKAROUND for bug #1465: The scripts used for screen savers
// in Sam & Max use hard coded values for the maximum height and width. // in Sam & Max use hard coded values for the maximum height and width.
// This causes problems in rooms (ie. Credits) where their values are // This causes problems in rooms (ie. Credits) where their values are
// lower, so we set result to zero if out of bounds. // lower, so we set result to zero if out of bounds.

View file

@ -2386,7 +2386,7 @@ void ScummEngine::scummLoop(int delta) {
oldEgo = VAR(VAR_EGO); oldEgo = VAR(VAR_EGO);
// In V1-V3 games, CHARSET_1 is called much earlier than in newer games. // In V1-V3 games, CHARSET_1 is called much earlier than in newer games.
// See also bug #770042 for a case were this makes a difference. // See also bug #987 for a case were this makes a difference.
if (_game.version <= 3) if (_game.version <= 3)
CHARSET_1(); CHARSET_1();

View file

@ -99,7 +99,7 @@ void ScummEngine::debugMessage(const byte *msg) {
b = buffer[10] | (buffer[11] << 8) | (buffer[14] << 16) | (buffer[15] << 24); b = buffer[10] | (buffer[11] << 8) | (buffer[14] << 16) | (buffer[15] << 24);
// Sam and Max uses a caching system, printing empty messages // Sam and Max uses a caching system, printing empty messages
// and setting VAR_V6_SOUNDMODE beforehand. See patch 609791. // and setting VAR_V6_SOUNDMODE beforehand. See patch #8051.
if (_game.id == GID_SAMNMAX) if (_game.id == GID_SAMNMAX)
channel = VAR(VAR_V6_SOUNDMODE); channel = VAR(VAR_V6_SOUNDMODE);
@ -184,7 +184,7 @@ void ScummEngine_v6::drawBlastTexts() {
do { do {
c = *buf++; c = *buf++;
// FIXME: This is a workaround for bugs #864030 and #2440: // FIXME: This is a workaround for bugs #1347 and #2440:
// In COMI, some text contains ASCII character 11 = 0xB. It's // In COMI, some text contains ASCII character 11 = 0xB. It's
// not quite clear what it is good for; so for now we just ignore // not quite clear what it is good for; so for now we just ignore
// it, which seems to match the original engine (BTW, traditionally, // it, which seems to match the original engine (BTW, traditionally,
@ -1235,7 +1235,7 @@ int ScummEngine::convertMessageToString(const byte *msg, byte *dst, int dstSize)
if (chr == 0xFF) { if (chr == 0xFF) {
chr = src[num++]; chr = src[num++];
// WORKAROUND for bug #985948, a script bug in Indy3. Apparently, // WORKAROUND for bug #1675, a script bug in Indy3. Apparently,
// a german 'sz' was encoded incorrectly as 0xFF2E. We replace // a german 'sz' was encoded incorrectly as 0xFF2E. We replace
// this by the correct encoding here. See also ScummEngine::resStrLen(). // this by the correct encoding here. See also ScummEngine::resStrLen().
if (_game.id == GID_INDY3 && chr == 0x2E) { if (_game.id == GID_INDY3 && chr == 0x2E) {
@ -1732,7 +1732,7 @@ void ScummEngine_v7::loadLanguageBundle() {
while (*ptr == '\n' || *ptr == '\r') while (*ptr == '\n' || *ptr == '\r')
*ptr++ = 0; *ptr++ = 0;
// Convert '\n' code to a newline. See also bug #902415. // Convert '\n' code to a newline. See also bug #1487.
char *src, *dst; char *src, *dst;
src = dst = _languageBuffer + _languageIndex[i].offset; src = dst = _languageBuffer + _languageIndex[i].offset;
while (*src) { while (*src) {

View file

@ -250,7 +250,7 @@ uint16 AutoRoute::autoRoute(Compact *cpt) {
if (_routeGrid[(destY + 1) * ROUTE_GRID_WIDTH + destX + 1]) { if (_routeGrid[(destY + 1) * ROUTE_GRID_WIDTH + destX + 1]) {
//if ((cpt == &Sky::SkyCompact::foster) && (cptScreen == 12) && (destX == 2) && (destY == 14)) { //if ((cpt == &Sky::SkyCompact::foster) && (cptScreen == 12) && (destX == 2) && (destY == 14)) {
if (_skyCompact->cptIsId(cpt, CPT_FOSTER) && (cptScreen == 12) && (destX == 2) && (destY == 14)) { if (_skyCompact->cptIsId(cpt, CPT_FOSTER) && (cptScreen == 12) && (destX == 2) && (destY == 14)) {
/* workaround for Scriptbug #1804 /* workaround for Script bug #1804
In screen 12 (the pipe factory) Joey can block Foster's target In screen 12 (the pipe factory) Joey can block Foster's target
coordinates (2/14). This is normally not too tragic, but in the coordinates (2/14). This is normally not too tragic, but in the
scene when foster gets thrown out by Lamb (first time you enter scene when foster gets thrown out by Lamb (first time you enter

View file

@ -1411,7 +1411,7 @@ bool Logic::fnDrawScreen(uint32 a, uint32 b, uint32 c) {
_skyScreen->fnDrawScreen(a, b); _skyScreen->fnDrawScreen(a, b);
if (Logic::_scriptVariables[SCREEN] == 32) { if (Logic::_scriptVariables[SCREEN] == 32) {
/* workaround for script bug #786482 /* workaround for script bug #1140
Under certain circumstances, which never got completely cleared, Under certain circumstances, which never got completely cleared,
the gardener can get stuck in an animation, waiting for a sync the gardener can get stuck in an animation, waiting for a sync
signal from foster. signal from foster.

View file

@ -1238,7 +1238,7 @@ bool Sound::startSpeech(uint16 textNum) {
free(speechData); free(speechData);
// Workaround for BASS bug #897775 - some voice-overs are played at // Workaround for BASS bug #1461 - some voice-overs are played at
// half speed in 0.0368 (the freeware CD version), in 0.0372 they sound // half speed in 0.0368 (the freeware CD version), in 0.0372 they sound
// just fine. // just fine.

View file

@ -244,7 +244,7 @@ DisplayedText Text::displayText(char *textPtr, uint8 *dest, bool center, uint16
uint32 numLines = 0; uint32 numLines = 0;
_numLetters = 2; _numLetters = 2;
// work around bug #778105 (line width exceeded) // work around bug #1080 (line width exceeded)
char *tmpPtr = strstr(textPtr, "MUND-BEATMUNG!"); char *tmpPtr = strstr(textPtr, "MUND-BEATMUNG!");
if (tmpPtr) if (tmpPtr)
strcpy(tmpPtr, "MUND BEATMUNG!"); strcpy(tmpPtr, "MUND BEATMUNG!");

View file

@ -98,7 +98,7 @@ void Logic::initialize() {
void Logic::newScreen(uint32 screen) { void Logic::newScreen(uint32 screen) {
Object *compact = (Object *)_objMan->fetchObject(PLAYER); Object *compact = (Object *)_objMan->fetchObject(PLAYER);
// work around script bug #911508 // work around script bug #1520
if (((screen == 25) || (_scriptVars[SCREEN] == 25)) && (_scriptVars[SAND_FLAG] == 4)) { if (((screen == 25) || (_scriptVars[SCREEN] == 25)) && (_scriptVars[SAND_FLAG] == 4)) {
Object *cpt = _objMan->fetchObject(SAND_25); Object *cpt = _objMan->fetchObject(SAND_25);
Object *george = _objMan->fetchObject(PLAYER); Object *george = _objMan->fetchObject(PLAYER);
@ -1212,7 +1212,7 @@ int Logic::fnTheyDo(Object *cpt, int32 id, int32 tar, int32 instruc, int32 param
//send an instruction to mega we're talking to and wait //send an instruction to mega we're talking to and wait
//until it has finished before returning to script //until it has finished before returning to script
int Logic::fnTheyDoWeWait(Object *cpt, int32 id, int32 tar, int32 instruc, int32 param1, int32 param2, int32 param3, int32 x) { int Logic::fnTheyDoWeWait(Object *cpt, int32 id, int32 tar, int32 instruc, int32 param1, int32 param2, int32 param3, int32 x) {
// workaround for scriptbug #928791: Freeze at hospital // workaround for script bug #1575: Freeze at hospital
// in at least one game version, a script forgets to set sam_returning back to zero // in at least one game version, a script forgets to set sam_returning back to zero
if ((tar == SAM) && (instruc == INS_talk) && (param2 == 2162856)) if ((tar == SAM) && (instruc == INS_talk) && (param2 == 2162856))
_scriptVars[SAM_RETURNING] = 0; _scriptVars[SAM_RETURNING] = 0;

View file

@ -604,7 +604,7 @@ void Screen::verticalMask(uint16 x, uint16 y, uint16 bWidth, uint16 bHeight) {
for (uint16 blkx = 0; blkx < bWidth; blkx++) { for (uint16 blkx = 0; blkx < bWidth; blkx++) {
// A sprite can be masked by several layers at the same time, // A sprite can be masked by several layers at the same time,
// so we have to check them all. See bug #917427. // so we have to check them all. See bug #1536.
for (int16 level = _roomDefTable[_currentScreen].totalLayers - 2; level >= 0; level--) { for (int16 level = _roomDefTable[_currentScreen].totalLayers - 2; level >= 0; level--) {
if (_layerGrid[level][gridX + blkx + gridY * lGridSizeX]) { if (_layerGrid[level][gridX + blkx + gridY * lGridSizeX]) {
uint16 *grid = _layerGrid[level] + gridX + blkx + gridY * lGridSizeX; uint16 *grid = _layerGrid[level] + gridX + blkx + gridY * lGridSizeX;

View file

@ -437,7 +437,7 @@ bool Screen::endRenderCycle() {
#ifdef LIMIT_FRAME_RATE #ifdef LIMIT_FRAME_RATE
// Give the other threads some breathing space. This apparently helps // Give the other threads some breathing space. This apparently helps
// against bug #875683, though I was never able to reproduce it for // against bug #1386, though I was never able to reproduce it for
// myself. // myself.
_vm->_system->delayMillis(10); _vm->_system->delayMillis(10);
#endif #endif