diff options
-rw-r--r-- | engines/gob/detection.cpp | 13 | ||||
-rw-r--r-- | engines/gob/gob.cpp | 11 | ||||
-rw-r--r-- | engines/gob/inter_v2.cpp | 10 | ||||
-rw-r--r-- | engines/gob/sound.cpp | 2 | ||||
-rw-r--r-- | engines/gob/video_v2.cpp | 3 |
5 files changed, 29 insertions, 10 deletions
diff --git a/engines/gob/detection.cpp b/engines/gob/detection.cpp index da8a6e03d5..f7b1b6c783 100644 --- a/engines/gob/detection.cpp +++ b/engines/gob/detection.cpp @@ -561,6 +561,17 @@ static const GOBGameDescription gameDescriptions[] = { { "ween", "", + AD_ENTRY1("intro.stk", "e6d13fb3b858cb4f78a8780d184d5b2c"), + FR_FRA, + kPlatformAtariST, + }, + GF_GOB2, + "intro" + }, + { + { + "ween", + "", AD_ENTRY1("intro.stk", "4b10525a3782aa7ecd9d833b5c1d308b"), FR_FRA, kPlatformPC, @@ -588,7 +599,7 @@ static const GOBGameDescription gameDescriptions[] = { kPlatformPC, }, GF_GOB2, - "intro" + "show" }, { { diff --git a/engines/gob/gob.cpp b/engines/gob/gob.cpp index e278217b87..f06ab17c14 100644 --- a/engines/gob/gob.cpp +++ b/engines/gob/gob.cpp @@ -627,6 +627,7 @@ int GobEngine::init() { error("GobEngine::init(): Unknown version of game engine"); _noMusic = MidiDriver::parseMusicDriver(ConfMan.get("music_driver")) == MD_NULL; if (!_noMusic && !(_platform == Common::kPlatformAmiga) && + !(_platform == Common::kPlatformAtariST) && (((_platform == Common::kPlatformMacintosh) && (_features & Gob::GF_GOB1)) || (_features & Gob::GF_GOB2))) _adlib = new Adlib(this); @@ -648,9 +649,13 @@ int GobEngine::init() { _global->_debugFlag = 1; _global->_doRangeClamp = 1; - // WORKAROUND: Some Amiga versions only play music when the video mode is - // Amiga-ish - _global->_fakeVideoMode = (_platform == Common::kPlatformAmiga) ? 0x11 : 0x13; + // WORKAROUND: Some versions check the video mode to detect the system + if (_platform == Common::kPlatformAmiga) + _global->_fakeVideoMode = 0x11; + else if (_platform == Common::kPlatformAtariST) + _global->_fakeVideoMode = 0x10; + else + _global->_fakeVideoMode = 0x13; _global->_videoMode = 0x13; _global->_useMouse = 1; diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp index 05aef9e10b..725810de5f 100644 --- a/engines/gob/inter_v2.cpp +++ b/engines/gob/inter_v2.cpp @@ -1403,9 +1403,9 @@ bool Inter_v2::o2_readData(char &cmdCount, int16 &counter, int16 &retFlag) { if (((dataVar >> 2) == 59) && (size == 4)) { retSize = _vm->_dataio->readData(handle, tmp, 4); WRITE_VAR(59, READ_LE_UINT32(tmp)); - // The scripts in some Amiga versions divide through 256^3 then, + // The scripts in some versions divide through 256^3 then, // effectively doing a LE->BE conversion - if ((_vm->_platform == Common::kPlatformAmiga) && (VAR(59) < 256)) + if ((_vm->_platform != Common::kPlatformPC) && (VAR(59) < 256)) WRITE_VAR(59, SWAP_BYTES_32(VAR(59))); } else retSize = _vm->_dataio->readData(handle, buf, size); @@ -1741,7 +1741,7 @@ bool Inter_v2::o2_palLoad(char &cmdCount, int16 &counter, int16 &retFlag) { break; case 52: - if ((_vm->_platform != Common::kPlatformAmiga) && + if ((_vm->_platform == Common::kPlatformPC) && ((_vm->_global->_videoMode != 0x0D) || (_vm->_global->_colorCount == 256))) { _vm->_global->_inter_execPtr += 48; return false; @@ -1830,7 +1830,7 @@ bool Inter_v2::o2_palLoad(char &cmdCount, int16 &counter, int16 &retFlag) { _vm->_draw->_vgaPalette[i].green = _vm->_global->_inter_execPtr[1]; _vm->_draw->_vgaPalette[i].blue = _vm->_global->_inter_execPtr[2]; } - if ((_vm->_platform != Common::kPlatformAmiga) && _vm->_global->_videoMode >= 0x13) + if ((_vm->_platform == Common::kPlatformPC) && _vm->_global->_videoMode >= 0x13) return false; break; @@ -2224,7 +2224,7 @@ void Inter_v2::o2_initScreen(void) { _vm->_global->_fakeVideoMode = videoMode; - // Some Amiga versions require this + // Some versions require this if (videoMode == 0xD) videoMode = 0x14; diff --git a/engines/gob/sound.cpp b/engines/gob/sound.cpp index 41f6f95721..6d9e66ce21 100644 --- a/engines/gob/sound.cpp +++ b/engines/gob/sound.cpp @@ -151,6 +151,8 @@ void Snd::nextCompositionPos(void) { setSample(_compositionSamples[slot], 1, 0, 0); return; } + if (_compositionPos == 49) + _compositionPos = -1; } _compositionPos = -1; } diff --git a/engines/gob/video_v2.cpp b/engines/gob/video_v2.cpp index 7118f7d80a..69515f27d9 100644 --- a/engines/gob/video_v2.cpp +++ b/engines/gob/video_v2.cpp @@ -99,7 +99,8 @@ Video::SurfaceDesc *Video_v2::initSurfDesc(int16 vidMode, int16 width, int16 hei int16 someFlags = 1; SurfaceDesc *descPtr; - if (_vm->_platform == Common::kPlatformAmiga) + if ((_vm->_platform == Common::kPlatformAmiga) || + (_vm->_platform == Common::kPlatformAtariST)) flags &= ~RETURN_PRIMARY; if (flags != PRIMARY_SURFACE) |