aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2012-03-07 23:20:15 +0200
committerFilippos Karapetis2012-03-07 23:20:50 +0200
commit7e4c5dce4a787ac6876b9548e206757196a1ef09 (patch)
treee92dca7ad1e78aa2fa85b390d57046c1ee86c534
parent62966183e448d2e9332f3abf50918594280a02d6 (diff)
downloadscummvm-rg350-7e4c5dce4a787ac6876b9548e206757196a1ef09.tar.gz
scummvm-rg350-7e4c5dce4a787ac6876b9548e206757196a1ef09.tar.bz2
scummvm-rg350-7e4c5dce4a787ac6876b9548e206757196a1ef09.zip
SCI: Add a new configuration option for SQ4 CD, "silver_cursors"
This allows the user to choose the alternate set of silver mouse cursors that is available in the game resources of the game, instead of the original golden ones
-rw-r--r--README7
-rw-r--r--engines/sci/graphics/cursor.cpp26
-rw-r--r--engines/sci/graphics/cursor.h15
-rw-r--r--engines/sci/sci.cpp1
4 files changed, 43 insertions, 6 deletions
diff --git a/README b/README
index a85ff20050..82d5df3df6 100644
--- a/README
+++ b/README
@@ -2082,7 +2082,12 @@ King's Quest VI Windows adds the following non-standard keyword:
ones. If false, the DOS cursors are used in the
Windows version, upscaled to match the rest of
the upscaled graphics
-
+
+Space Quest IV CD adds the following non-standard keyword:
+
+ silver_cursors bool If true, an alternate set of silver mouse cursors
+ is used instead of the original golden ones
+
Simon the Sorcerer 1 and 2 add the following non-standard keywords:
music_mute bool If true, music is muted
diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp
index daab532d0e..52a5961070 100644
--- a/engines/sci/graphics/cursor.cpp
+++ b/engines/sci/graphics/cursor.cpp
@@ -59,10 +59,16 @@ GfxCursor::GfxCursor(ResourceManager *resMan, GfxPalette *palette, GfxScreen *sc
_zoomColor = 0;
_zoomMultiplier = 0;
_cursorSurface = 0;
+
if (g_sci && g_sci->getGameId() == GID_KQ6 && g_sci->getPlatform() == Common::kPlatformWindows)
_useOriginalKQ6WinCursors = ConfMan.getBool("windows_cursors");
else
_useOriginalKQ6WinCursors = false;
+
+ if (g_sci && g_sci->getGameId() == GID_SQ4 && getSciVersion() == SCI_VERSION_1_1)
+ _useSilverSQ4CDCursors = ConfMan.getBool("silver_cursors");
+ else
+ _useSilverSQ4CDCursors = false;
}
GfxCursor::~GfxCursor() {
@@ -206,6 +212,26 @@ void GfxCursor::kernelSetView(GuiResourceId viewNum, int loopNum, int celNum, Co
return;
}
+ // Use the alternate silver cursors in SQ4 CD, if requested
+ if (_useSilverSQ4CDCursors) {
+ switch(viewNum) {
+ case 850:
+ case 852:
+ case 854:
+ case 856:
+ celNum = 3;
+ break;
+ case 851:
+ case 853:
+ case 855:
+ case 999:
+ celNum = 2;
+ break;
+ default:
+ break;
+ }
+ }
+
if (!_cachedCursors.contains(viewNum))
_cachedCursors[viewNum] = new GfxView(_resMan, _screen, _palette, viewNum);
diff --git a/engines/sci/graphics/cursor.h b/engines/sci/graphics/cursor.h
index 25109b3920..ac928f50bb 100644
--- a/engines/sci/graphics/cursor.h
+++ b/engines/sci/graphics/cursor.h
@@ -113,13 +113,18 @@ private:
bool _isVisible;
- // KQ6 Windows has different black and white cursors. If this is
- // true (set from the sci_originalkq6wincursors ini setting), then
- // we use these, and don't scale them by 2x like the rest of the
- // graphics, like SSCI did. These look very ugly, which is why
- // they aren't enabled by default.
+ // KQ6 Windows has different black and white cursors. If this is true (set
+ // from the windows_cursors ini setting), then we use these and don't scale
+ // them by 2x like the rest of the graphics, like SSCI did. These look very
+ // ugly, which is why they aren't enabled by default.
bool _useOriginalKQ6WinCursors;
+ // The CD version of SQ4 contains a complete set of silver mouse cursors.
+ // If this is true (set from the silver_cursors ini setting), then we use
+ // these instead and replace the game's gold cursors with their silver
+ // equivalents.
+ bool _useSilverSQ4CDCursors;
+
// Mac versions of games use a remap list to remap their cursors
Common::Array<uint16> _macCursorRemap;
};
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index 00731fc1cf..4ae55cbcba 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -194,6 +194,7 @@ Common::Error SciEngine::run() {
ConfMan.registerDefault("sci_originalsaveload", "false");
ConfMan.registerDefault("native_fb01", "false");
ConfMan.registerDefault("windows_cursors", "false"); // Windows cursors for KQ6 Windows
+ ConfMan.registerDefault("silver_cursors", "false"); // Silver cursors for SQ4 CD
_resMan = new ResourceManager();
assert(_resMan);