aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README8
-rw-r--r--engines/sci/graphics/cursor.cpp12
-rw-r--r--engines/sci/graphics/cursor.h7
-rw-r--r--engines/sci/sci.cpp1
4 files changed, 27 insertions, 1 deletions
diff --git a/README b/README
index 6b4539ac0f..d6482e0392 100644
--- a/README
+++ b/README
@@ -2004,6 +2004,14 @@ Flight of the Amazon Queen adds the following non-standard keywords:
music_mute bool If true, music is muted
sfx_mute bool If true, sound effects are muted
+King's Quest VI Windows adds the following non-standard keywords:
+
+ windows_cursors bool If true, the original unscaled black and white
+ Windows cursors are used instead of the DOS
+ ones. If false, the DOS cursors are used in the
+ Windows version, upscaled to match the rest of
+ the upscaled graphics
+
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 8de9ced57c..30fc7a0f3d 100644
--- a/engines/sci/graphics/cursor.cpp
+++ b/engines/sci/graphics/cursor.cpp
@@ -23,6 +23,7 @@
*
*/
+#include "common/config-manager.h"
#include "common/events.h"
#include "common/macresman.h"
#include "common/system.h"
@@ -59,6 +60,10 @@ 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;
}
GfxCursor::~GfxCursor() {
@@ -171,6 +176,10 @@ void GfxCursor::kernelSetView(GuiResourceId viewNum, int loopNum, int celNum, Co
if (_cachedCursors.size() >= MAX_CACHED_CURSORS)
purgeCache();
+ // Use the original Windows cursors in KQ6, if requested
+ if (_useOriginalKQ6WinCursors)
+ viewNum += 2000; // Windows cursors
+
if (!_cachedCursors.contains(viewNum))
_cachedCursors[viewNum] = new GfxView(_resMan, _screen, _palette, viewNum);
@@ -195,7 +204,7 @@ void GfxCursor::kernelSetView(GuiResourceId viewNum, int loopNum, int celNum, Co
}
const byte *rawBitmap = cursorView->getBitmap(loopNum, celNum);
- if (_upscaledHires) {
+ if (_upscaledHires && !_useOriginalKQ6WinCursors) {
// Scale cursor by 2x - note: sierra didn't do this, but it looks much better
width *= 2;
height *= 2;
@@ -226,6 +235,7 @@ void GfxCursor::kernelSetMacCursor(GuiResourceId viewNum, int loopNum, int celNu
}
// TODO: What about the 2000 resources? Inventory items? How to handle?
+ // Update: Perhaps these are handled like the Windows cursors in KQ6?
// TODO: 1000 + celNum won't work for GK1
Resource *resource = _resMan->findResource(ResourceId(kResourceTypeCursor, 1000 + celNum), false);
diff --git a/engines/sci/graphics/cursor.h b/engines/sci/graphics/cursor.h
index ae3b51e26a..cb65398f4b 100644
--- a/engines/sci/graphics/cursor.h
+++ b/engines/sci/graphics/cursor.h
@@ -112,6 +112,13 @@ private:
CursorCache _cachedCursors;
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.
+ bool _useOriginalKQ6WinCursors;
};
} // End of namespace Sci
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index 08256a86ca..35fdbe4ea7 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -184,6 +184,7 @@ Common::Error SciEngine::run() {
// Assign default values to the config manager, in case settings are missing
ConfMan.registerDefault("sci_originalsaveload", "false");
ConfMan.registerDefault("native_fb01", "false");
+ ConfMan.registerDefault("windows_cursors", "false"); // Windows cursors for KQ6 Windows
_resMan = new ResourceManager();
assert(_resMan);