GOB: un-ban and fix a somehow corrupted version of Fascination

(This version has been found on original floppies)

svn-id: r53772
This commit is contained in:
Arnaud Boutonné 2010-10-24 20:20:48 +00:00
parent 0db700a3dc
commit 25e1af837a
2 changed files with 19 additions and 6 deletions

View file

@ -2264,16 +2264,14 @@ static const GOBGameDescription gameDescriptions[] = {
kFeaturesAdLib,
"demo.stk", "demo.tot", 0
},
// This version is not detected on purpose: it's a pirated version, using a corrupted crack.
// Tagged ADGF_PIRATED! Do not re-add nor un-tag!
{
{ // Supplied by scoriae
{
"fascination",
"",
"VGA",
AD_ENTRY1s("disk0.stk", "c14330d052fe4da5a441ac9d81bc5891", 1061955),
UNK_LANG,
EN_ANY,
kPlatformPC,
ADGF_PIRATED,
ADGF_NO_FLAGS,
GUIO_NOSUBTITLES | GUIO_NOSPEECH
},
kGameTypeFascination,

View file

@ -306,6 +306,21 @@ void Inter::funcBlock(int16 retFlag) {
} // End of workaround
cmd = _vm->_game->_script->readByte();
// WORKAROUND:
// A VGA version has some broken code in its scripts, this workaround skips the corrupted parts.
if (_vm->getGameType() == kGameTypeFascination) {
int addr = _vm->_game->_script->pos();
if ((startaddr == 0x212D) && (addr == 0x290E) && (cmd == 0x90) && !scumm_stricmp(_vm->_game->_curTotFile, "INTRO1.tot")) {
_vm->_game->_script->skip(2);
cmd = _vm->_game->_script->readByte();
}
if ((startaddr == 0x207D) && (addr == 0x22CE) && (cmd == 0x90) && !scumm_stricmp(_vm->_game->_curTotFile, "INTRO2.tot")) {
_vm->_game->_script->skip(2);
cmd = _vm->_game->_script->readByte();
}
}
if ((cmd >> 4) >= 12) {
cmd2 = 16 - (cmd >> 4);
cmd &= 0xF;