aboutsummaryrefslogtreecommitdiff
path: root/engines/gob
diff options
context:
space:
mode:
authorSven Hesse2007-02-12 19:30:52 +0000
committerSven Hesse2007-02-12 19:30:52 +0000
commitffdd3522bf2337f828ca31882c1f68678f59d45e (patch)
tree399c60a253b51fbaf2a033bd85290dcc3dc23f9c /engines/gob
parent80bc94304c94780919c7c2b7f0f49febc7ee33a7 (diff)
downloadscummvm-rg350-ffdd3522bf2337f828ca31882c1f68678f59d45e.tar.gz
scummvm-rg350-ffdd3522bf2337f828ca31882c1f68678f59d45e.tar.bz2
scummvm-rg350-ffdd3522bf2337f828ca31882c1f68678f59d45e.zip
More demo version fixes
svn-id: r25532
Diffstat (limited to 'engines/gob')
-rw-r--r--engines/gob/detection.cpp13
-rw-r--r--engines/gob/gob.cpp11
-rw-r--r--engines/gob/inter_v2.cpp10
-rw-r--r--engines/gob/sound.cpp2
-rw-r--r--engines/gob/video_v2.cpp3
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)