More demo version fixes

svn-id: r25532
This commit is contained in:
Sven Hesse 2007-02-12 19:30:52 +00:00
parent 80bc94304c
commit ffdd3522bf
5 changed files with 29 additions and 10 deletions

View file

@ -557,6 +557,17 @@ static const GOBGameDescription gameDescriptions[] = {
GF_GOB2,
"intro"
},
{
{
"ween",
"",
AD_ENTRY1("intro.stk", "e6d13fb3b858cb4f78a8780d184d5b2c"),
FR_FRA,
kPlatformAtariST,
},
GF_GOB2,
"intro"
},
{
{
"ween",
@ -588,7 +599,7 @@ static const GOBGameDescription gameDescriptions[] = {
kPlatformPC,
},
GF_GOB2,
"intro"
"show"
},
{
{

View file

@ -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;

View file

@ -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;

View file

@ -151,6 +151,8 @@ void Snd::nextCompositionPos(void) {
setSample(_compositionSamples[slot], 1, 0, 0);
return;
}
if (_compositionPos == 49)
_compositionPos = -1;
}
_compositionPos = -1;
}

View file

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