aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
Diffstat (limited to 'scumm')
-rw-r--r--scumm/resource.cpp4
-rw-r--r--scumm/saveload.cpp2
-rw-r--r--scumm/script_v5.cpp6
-rw-r--r--scumm/scumm.h2
-rw-r--r--scumm/scummvm.cpp7
-rw-r--r--scumm/sound.cpp2
6 files changed, 15 insertions, 8 deletions
diff --git a/scumm/resource.cpp b/scumm/resource.cpp
index c07288924b..a979bfa4d5 100644
--- a/scumm/resource.cpp
+++ b/scumm/resource.cpp
@@ -1487,8 +1487,8 @@ int Scumm::readSoundResourceSmallHeader(int type, int idx) {
wa_size = _fileHandle.readUint16LE();
_fileHandle.seek(wa_size - 2, SEEK_CUR);
- //FIXME AD resources don't exist in Atari ST and Mac versions
- if (_midiDriver == MD_ADLIB) {
+ if (!(_features & GF_ATARI_ST || _features & GF_MACINTOSH)) {
+ warning("Loader");
ad_offs = _fileHandle.pos();
ad_size = _fileHandle.readUint16LE();
}
diff --git a/scumm/saveload.cpp b/scumm/saveload.cpp
index 53e6ba4c4b..7cb699d4d0 100644
--- a/scumm/saveload.cpp
+++ b/scumm/saveload.cpp
@@ -176,7 +176,7 @@ bool Scumm::loadState(int slot, bool compat, SaveFileManager *mgr) {
else
setupV1ZakPalette();
} else if (_features & GF_16COLOR) {
- if (_features & GF_AMIGA)
+ if ((_features & GF_AMIGA) || (_features & GF_ATARI_ST))
setupAmigaPalette();
else
setupEGAPalette();
diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp
index b85ffa8438..db79e581a1 100644
--- a/scumm/script_v5.cpp
+++ b/scumm/script_v5.cpp
@@ -1057,7 +1057,7 @@ void Scumm_v5::o5_getActorX() {
int a;
getResultPos();
- if (_gameId == GID_INDY3)
+ if ((_gameId == GID_INDY3) && !(_features & GF_MACINTOSH))
a = getVarOrDirectByte(0x80);
else
a = getVarOrDirectWord(0x80);
@@ -1069,7 +1069,7 @@ void Scumm_v5::o5_getActorY() {
int a;
getResultPos();
- if (_gameId == GID_INDY3) {
+ if ((_gameId == GID_INDY3) && !(_features & GF_MACINTOSH)) {
a = getVarOrDirectByte(0x80);
// WORKAROUND bug #636433 (can't get into Zeppelin)
@@ -2496,7 +2496,7 @@ void Scumm_v5::o5_verbOps() {
void Scumm_v5::o5_wait() {
const byte *oldaddr = _scriptPointer - 1;
- if (_gameId == GID_INDY3) {
+ if ((_gameId == GID_INDY3) && !(_features & GF_MACINTOSH)) {
_opcode = 2;
} else
_opcode = fetchScriptByte();
diff --git a/scumm/scumm.h b/scumm/scumm.h
index b82d967102..dd8bf89803 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -86,6 +86,8 @@ enum GameFeatures {
GF_FMTOWNS = 1 << 16,
GF_FEW_LOCALS = 1 << 17,
GF_NES = 1 << 18,
+ GF_ATARI_ST = 1 << 19,
+ GF_MACINTOSH = 1 << 20,
GF_EXTERNAL_CHARSET = GF_SMALL_HEADER
};
diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp
index 382b758eaf..6901725373 100644
--- a/scumm/scummvm.cpp
+++ b/scumm/scummvm.cpp
@@ -234,6 +234,11 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) {
if (detector->_amiga)
detector->_game.features |= GF_AMIGA;
+ if (detector->_atari_st)
+ detector->_game.features |= GF_ATARI_ST;
+ if (detector->_macintosh) {
+ detector->_game.features |= GF_MACINTOSH;
+ }
switch (detector->_game.version) {
case 1:
@@ -943,7 +948,7 @@ void Scumm::scummInit() {
_roomPalette[i] = i;
_shadowPalette[i] = i;
}
- if (_features & GF_AMIGA)
+ if ((_features & GF_AMIGA) || (_features & GF_ATARI_ST))
setupAmigaPalette();
else
setupEGAPalette();
diff --git a/scumm/sound.cpp b/scumm/sound.cpp
index e720f081f2..fbfdcc838b 100644
--- a/scumm/sound.cpp
+++ b/scumm/sound.cpp
@@ -436,7 +436,7 @@ void Sound::playSound(int soundID) {
// Used in Amiga verisons of indy3ega and loom
// Used in Mac. version of indy3ega
- if (((_scumm->_features & GF_OLD_BUNDLE) && (_scumm->_gameId == GID_INDY3)) || ((_scumm->_features & GF_AMIGA) && (_scumm->_version == 3))) {
+ if (((_scumm->_features & GF_MACINTOSH) && (_scumm->_gameId == GID_INDY3)) || ((_scumm->_features & GF_AMIGA) && (_scumm->_version == 3))) {
if (ptr[26] == 00) {
size = READ_BE_UINT16(ptr + 12);
rate = 3579545 / READ_BE_UINT16(ptr + 20);