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) | 
