diff options
author | Willem Jan Palenstijn | 2006-03-18 13:44:57 +0000 |
---|---|---|
committer | Willem Jan Palenstijn | 2006-03-18 13:44:57 +0000 |
commit | 879b5e4064686d9857b4e11e81dd224e16e1d6c2 (patch) | |
tree | c0e2789960f2f3413f6265ae4c49d7213790c663 | |
parent | e60c0441adb663332d0e546421fa715dc5aaecca (diff) | |
download | scummvm-rg350-879b5e4064686d9857b4e11e81dd224e16e1d6c2.tar.gz scummvm-rg350-879b5e4064686d9857b4e11e81dd224e16e1d6c2.tar.bz2 scummvm-rg350-879b5e4064686d9857b4e11e81dd224e16e1d6c2.zip |
workaround: manually add delay when showing image between levels in gob1 ega
svn-id: r21364
-rw-r--r-- | engines/gob/gob.cpp | 4 | ||||
-rw-r--r-- | engines/gob/gob.h | 5 | ||||
-rw-r--r-- | engines/gob/inter.cpp | 25 |
3 files changed, 30 insertions, 4 deletions
diff --git a/engines/gob/gob.cpp b/engines/gob/gob.cpp index b1d8ea0783..58bf4252a8 100644 --- a/engines/gob/gob.cpp +++ b/engines/gob/gob.cpp @@ -64,8 +64,8 @@ struct GobGameSettings { static const GobGameSettings gob_games[] = { // Supplied by Florian Zeitz on scummvm-devel - {"gob1", "Gobliiins (DOS EGA)", GF_GOB1, "82aea70ef26f41fa963dfae270993e49"}, - {"gob1", "Gobliiins (DOS EGA)", GF_GOB1, "1f499458837008058b8ba6ae07057214"}, + {"gob1", "Gobliiins (DOS EGA)", GF_GOB1 | GF_EGA, "82aea70ef26f41fa963dfae270993e49"}, + {"gob1", "Gobliiins (DOS EGA)", GF_GOB1 | GF_EGA, "1f499458837008058b8ba6ae07057214"}, {"gob1", "Gobliiins (Windows)", GF_GOB1, "8a5e850c49d7cacdba5f5eb1fcc77b89"}, // Supplied by Theruler76 in bug report #1201233 diff --git a/engines/gob/gob.h b/engines/gob/gob.h index 111e575bd9..a3e53787d4 100644 --- a/engines/gob/gob.h +++ b/engines/gob/gob.h @@ -64,14 +64,15 @@ enum { GF_GOB3 = 1 << 2, GF_WOODRUFF = 1 << 3, GF_CD = 1 << 4, - GF_MAC = 1 << 5 + GF_MAC = 1 << 5, + GF_EGA = 1 << 6 }; enum { DEBUG_FUNCOP = 1 << 0, DEBUG_DRAWOP = 1 << 1, DEBUG_GOBOP = 1 << 2, - DEBUG_MUSIC = 1 << 3, // CD and adlib music + DEBUG_MUSIC = 1 << 3, // CD and adlib music DEBUG_PARSER = 1 << 4, DEBUG_GAMEFLOW = 1 << 5, DEBUG_FILEIO = 1 << 6, diff --git a/engines/gob/inter.cpp b/engines/gob/inter.cpp index 606849cb58..895301e07a 100644 --- a/engines/gob/inter.cpp +++ b/engines/gob/inter.cpp @@ -139,11 +139,36 @@ void Inter::funcBlock(int16 retFlag) { return; } + int startaddr = _vm->_global->_inter_execPtr-_vm->_game->_totFileData; + counter = 0; do { if (_terminate) break; + // WORKAROUND: + // The EGA version of gob1 doesn't add a delay after showing + // images between levels. We manually add it here. + if ((_vm->_features & GF_GOB1) && (_vm->_features & GF_EGA)) { + int addr = _vm->_global->_inter_execPtr-_vm->_game->_totFileData; + if ((startaddr == 0x18B4 && addr == 0x1A7F && // Zombie + !strncmp(_vm->_game->_curTotFile, "avt005.tot", 10)) || + (startaddr == 0x1299 && addr == 0x139A && // Dungeon + !strncmp(_vm->_game->_curTotFile, "avt006.tot", 10)) || + (startaddr == 0x11C0 && addr == 0x12C9 && // Cauldron + !strncmp(_vm->_game->_curTotFile, "avt012.tot", 10)) || + (startaddr == 0x09F2 && addr == 0x0AF3 && // Statue + !strncmp(_vm->_game->_curTotFile, "avt016.tot", 10)) || + (startaddr == 0x0B92 && addr == 0x0C93 && // Castle + !strncmp(_vm->_game->_curTotFile, "avt019.tot", 10)) || + (startaddr == 0x17D9 && addr == 0x18DA && // Finale + !strncmp(_vm->_game->_curTotFile, "avt022.tot", 10))) + { + _vm->_util->longDelay(5000); + } + } + // (end workaround) + cmd = (byte)*_vm->_global->_inter_execPtr; if ((cmd >> 4) >= 12) { cmd2 = 16 - (cmd >> 4); |