SCUMM: Add workaround for script bugs that caused problems in Jumping Bean mini games of Pajama Sam: Games to Play on Any Day.

This commit is contained in:
Kirben 2014-07-22 19:47:05 +10:00
parent 50940f13ae
commit 04ed4d3a8d
3 changed files with 9 additions and 1 deletions

View File

@ -389,7 +389,7 @@ static const GameSettings gameVariantsTable[] = {
{"freddicove", "HE 100", 0, GID_HEGAME, 6, 100, MDT_NONE, GF_USE_KEY | GF_HE_LOCALIZED | GF_16BIT_COLOR, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)},
// Restructured the Scumm engine
{"pjgames", 0, 0, GID_HEGAME, 6, 100, MDT_NONE, GF_USE_KEY | GF_HE_LOCALIZED | GF_16BIT_COLOR, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)},
{"pjgames", 0, 0, GID_PJGAMES, 6, 100, MDT_NONE, GF_USE_KEY | GF_HE_LOCALIZED | GF_16BIT_COLOR, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)},
// Added the use of bink videos
{"Soccer2004", 0, 0, GID_SOCCER2004, 6, 100, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)},

View File

@ -264,6 +264,13 @@ int Sprite::getSpriteFlagRemapPalette(int spriteId) {
int Sprite::getSpriteFlagAutoAnim(int spriteId) {
assertRange(1, spriteId, _varNumSprites, "sprite");
// WORKAROUND: Two scripts (room 2 script 2070/2071) compare against
// a return value of one, but the original game returned the flag value
// (0x200000) for true. These scripts bugs caused problems (infinite loop
// and beans not appearing) in the Jumping Beans mini games under ScummVM.
if (_vm->_game.id == GID_PJGAMES)
return 0;
return ((_spriteTable[spriteId].flags & kSFAutoAnim) != 0) ? 1 : 0;
}

View File

@ -256,6 +256,7 @@ enum ScummGameId {
GID_BASEBALL2003,
GID_BASKETBALL,
GID_MOONBASE,
GID_PJGAMES,
GID_HECUP // CUP demos
};