aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2004-08-22 06:16:16 +0000
committerTravis Howell2004-08-22 06:16:16 +0000
commit82b9f1e599b0cd37d81eeda573a5b23bd0d85d9b (patch)
tree0a6ec72f2468188f593464d66c5f5f5e1fe3c710 /scumm
parent0574c35fa45a856f4176ad72e597311c65b4f677 (diff)
downloadscummvm-rg350-82b9f1e599b0cd37d81eeda573a5b23bd0d85d9b.tar.gz
scummvm-rg350-82b9f1e599b0cd37d81eeda573a5b23bd0d85d9b.tar.bz2
scummvm-rg350-82b9f1e599b0cd37d81eeda573a5b23bd0d85d9b.zip
Mac. version of indy3 uses VAR_VIDEOMODE value of 50
Add initial support for loading EGA resource svn-id: r14671
Diffstat (limited to 'scumm')
-rw-r--r--scumm/resource.cpp2
-rw-r--r--scumm/scumm.cpp18
-rw-r--r--scumm/scumm.h2
3 files changed, 19 insertions, 3 deletions
diff --git a/scumm/resource.cpp b/scumm/resource.cpp
index babb2f0671..f51e2b4e64 100644
--- a/scumm/resource.cpp
+++ b/scumm/resource.cpp
@@ -2601,6 +2601,8 @@ uint16 newTag2Old(uint32 oldTag) {
return (0x5842); // BX
case (MKID('CYCL')):
return (0x4343); // CC
+ case (MKID('EPAL')):
+ return (0x5053); // SP
default:
return (0);
}
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index 8303712236..481d7fb267 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -559,6 +559,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
_ENCD_offs = 0;
_EXCD_offs = 0;
_CLUT_offs = 0;
+ _EPAL_offs = 0;
_IM00_offs = 0;
_PALS_offs = 0;
_fullRedraw = false;
@@ -1360,13 +1361,14 @@ void ScummEngine::initScummVars() {
} else
VAR(VAR_SOUNDCARD) = 3;
}
- // Amiga version of MI2 and FM Towns versions use unique values
if (_features & GF_FMTOWNS)
VAR(VAR_VIDEOMODE) = 42;
+ else if (_gameId == GID_INDY3 && (_features & GF_MACINTOSH))
+ VAR(VAR_VIDEOMODE) = 50;
else if (_gameId == GID_MONKEY2 && (_features & GF_AMIGA))
VAR(VAR_VIDEOMODE) = 82;
else
- VAR(VAR_VIDEOMODE) = 19;
+ VAR(VAR_VIDEOMODE) = 14;
if (_gameId == GID_LOOM && _features & GF_OLD_BUNDLE) {
// Set number of sound resources
if (!(_features & GF_MACINTOSH))
@@ -2306,6 +2308,7 @@ void ScummEngine::initRoomSubBlocks() {
_ENCD_offs = 0;
_EXCD_offs = 0;
+ _EPAL_offs = 0;
_CLUT_offs = 0;
_PALS_offs = 0;
@@ -2606,6 +2609,17 @@ void ScummEngine::initRoomSubBlocks() {
if (_features & GF_OLD_BUNDLE)
ptr = 0;
else if (_features & GF_SMALL_HEADER)
+ ptr = findResourceSmall(MKID('EPAL'), roomptr);
+ else
+ ptr = findResourceData(MKID('EPAL'), roomptr);
+
+ if (ptr) {
+ _EPAL_offs = ptr - roomptr;
+ }
+
+ if (_features & GF_OLD_BUNDLE)
+ ptr = 0; // TODO ? do 16 bit games use a palette?!?
+ else if (_features & GF_SMALL_HEADER)
ptr = findResourceSmall(MKID('CLUT'), roomptr);
else
ptr = findResourceData(MKID('CLUT'), roomptr);
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 3b091558fe..a577de5d94 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -854,7 +854,7 @@ protected:
ColorCycle _colorCycle[16]; // Palette cycles
uint32 _ENCD_offs, _EXCD_offs;
- uint32 _CLUT_offs;
+ uint32 _CLUT_offs, _EPAL_offs;
uint32 _IM00_offs, _PALS_offs;
StripTable *_roomStrips;