SCI: add user option for high resolution graphics
Instead of choosing Windows as platform, users can now also simply click this option for Gabriel Knight 1 + King's Quest 6 Defaults to high resolution graphics
This commit is contained in:
parent
354a3af717
commit
0aa9924df1
7 changed files with 71 additions and 19 deletions
|
@ -378,6 +378,16 @@ static const ADExtraGuiOptionsMap optionsList[] = {
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
GAMEOPTION_HIGH_RESOLUTION_GRAPHICS,
|
||||
{
|
||||
_s("Enable high resolution graphics"),
|
||||
_s("Enable high resolution graphics/content"),
|
||||
"enable_high_resolution_graphics",
|
||||
true
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
GAMEOPTION_PREFER_DIGITAL_SFX,
|
||||
{
|
||||
|
|
|
@ -29,6 +29,7 @@ namespace Sci {
|
|||
#define GAMEOPTION_KQ6_WINDOWS_CURSORS GUIO_GAMEOPTIONS5
|
||||
#define GAMEOPTION_SQ4_SILVER_CURSORS GUIO_GAMEOPTIONS6
|
||||
#define GAMEOPTION_EGA_UNDITHER GUIO_GAMEOPTIONS7
|
||||
#define GAMEOPTION_HIGH_RESOLUTION_GRAPHICS GUIO_GAMEOPTIONS8
|
||||
|
||||
// SCI3 games have a different script format (in CSC files) and are currently unsupported
|
||||
#define ENABLE_SCI3_GAMES
|
||||
|
@ -746,7 +747,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10996},
|
||||
{"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 12581736},
|
||||
AD_LISTEND},
|
||||
Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO4(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// Gabriel Knight - English Windows CD (from jvprat)
|
||||
// Executable scanning reports "2.000.000", VERSION file reports "01.100.000"
|
||||
|
@ -754,7 +755,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10996},
|
||||
{"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 12581736},
|
||||
AD_LISTEND},
|
||||
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD | ADGF_UNSTABLE, GUIO5(GUIO_NOASPECT, GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// Gabriel Knight - German DOS CD (from Tobis87)
|
||||
// SCI interpreter version 2.000.000
|
||||
|
@ -762,7 +763,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "a7d3e55114c65647310373cb390815ba", 11392},
|
||||
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13400497},
|
||||
AD_LISTEND},
|
||||
Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO4(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// Gabriel Knight - Spanish DOS CD (from jvprat)
|
||||
// Executable scanning reports "2.000.000", VERSION file reports "1.000.000, April 13, 1995"
|
||||
|
@ -770,7 +771,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "7cb6e9bba15b544ec7a635c45bde9953", 11404},
|
||||
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13381599},
|
||||
AD_LISTEND},
|
||||
Common::ES_ESP, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::ES_ESP, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO4(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// Gabriel Knight - French DOS CD (from Hkz)
|
||||
// VERSION file reports "1.000.000, May 3, 1994"
|
||||
|
@ -778,7 +779,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "55f909ba93a2515042a08d8a2da8414e", 11392},
|
||||
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13325145},
|
||||
AD_LISTEND},
|
||||
Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO4(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// Gabriel Knight - German Windows CD (from Tobis87)
|
||||
// SCI interpreter version 2.000.000
|
||||
|
@ -786,7 +787,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "a7d3e55114c65647310373cb390815ba", 11392},
|
||||
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13400497},
|
||||
AD_LISTEND},
|
||||
Common::DE_DEU, Common::kPlatformWindows, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::DE_DEU, Common::kPlatformWindows, ADGF_CD | ADGF_UNSTABLE, GUIO5(GUIO_NOASPECT, GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// Gabriel Knight - Spanish Windows CD (from jvprat)
|
||||
// Executable scanning reports "2.000.000", VERSION file reports "1.000.000, April 13, 1995"
|
||||
|
@ -794,7 +795,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "7cb6e9bba15b544ec7a635c45bde9953", 11404},
|
||||
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13381599},
|
||||
AD_LISTEND},
|
||||
Common::ES_ESP, Common::kPlatformWindows, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::ES_ESP, Common::kPlatformWindows, ADGF_CD | ADGF_UNSTABLE, GUIO5(GUIO_NOASPECT, GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// Gabriel Knight - English Macintosh
|
||||
{"gk1", "", {
|
||||
|
@ -1569,7 +1570,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "eb9e177281b7cde188dc0d83194cd365", 8960},
|
||||
{"resource.msg", 0, "3cf5de44de36191f109d425b8450efc8", 259510},
|
||||
AD_LISTEND},
|
||||
Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// King's Quest 6 - English DOS Floppy
|
||||
// SCI interpreter version 1.001.054
|
||||
|
@ -1623,7 +1624,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "7a550ebfeae2575ca00d47703a6a774c", 9215},
|
||||
{"resource.000", 0, "233394a5f33b475ae5975e7e9a420865", 8376352},
|
||||
AD_LISTEND},
|
||||
Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO4(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// King's Quest 6 - English Windows CD (from the King's Quest Collection)
|
||||
// Executable scanning reports "1.cfs.158", VERSION file reports "1.034 9/11/94 - KQ6 version 1.000.00G"
|
||||
|
@ -1632,7 +1633,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
|||
{"resource.map", 0, "7a550ebfeae2575ca00d47703a6a774c", 9215},
|
||||
{"resource.000", 0, "233394a5f33b475ae5975e7e9a420865", 8376352},
|
||||
AD_LISTEND},
|
||||
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO5(GUIO_NOASPECT, GAMEOPTION_KQ6_WINDOWS_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO6(GUIO_NOASPECT, GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_KQ6_WINDOWS_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
|
||||
|
||||
// King's Quest 6 - English Macintosh Floppy
|
||||
// VERSION file reports "1.0"
|
||||
|
|
|
@ -849,7 +849,7 @@ void Kernel::loadKernelNames(GameFeatures *features) {
|
|||
// In the Windows version of KQ6 CD, the empty kSetSynonyms
|
||||
// function has been replaced with kPortrait. In KQ6 Mac,
|
||||
// kPlayBack has been replaced by kShowMovie.
|
||||
if (g_sci->getPlatform() == Common::kPlatformWindows)
|
||||
if ((g_sci->getPlatform() == Common::kPlatformWindows) || (g_sci->forceHiresGraphics()))
|
||||
_kernelNames[0x26] = "Portrait";
|
||||
else if (g_sci->getPlatform() == Common::kPlatformMacintosh)
|
||||
_kernelNames[0x84] = "ShowMovie";
|
||||
|
|
|
@ -539,6 +539,11 @@ reg_t kPlatform(EngineState *s, int argc, reg_t *argv) {
|
|||
return NULL_REG;
|
||||
}
|
||||
|
||||
if (g_sci->forceHiresGraphics()) {
|
||||
// force Windows platform, so that hires-graphics are enabled
|
||||
isWindows = true;
|
||||
}
|
||||
|
||||
uint16 operation = (argc == 0) ? 0 : argv[0].toUint16();
|
||||
|
||||
switch (operation) {
|
||||
|
|
|
@ -50,7 +50,7 @@ GfxScreen::GfxScreen(ResourceManager *resMan) : _resMan(resMan) {
|
|||
// to provide that under DOS as well, but as gk1/floppy does support
|
||||
// upscaled hires scriptswise, but doesn't actually have the hires content
|
||||
// we need to limit it to platform windows.
|
||||
if (g_sci->getPlatform() == Common::kPlatformWindows) {
|
||||
if ((g_sci->getPlatform() == Common::kPlatformWindows) || (g_sci->forceHiresGraphics())) {
|
||||
if (g_sci->getGameId() == GID_KQ6)
|
||||
_upscaledHires = GFX_SCREEN_UPSCALED_640x440;
|
||||
#ifdef ENABLE_SCI32
|
||||
|
|
|
@ -95,6 +95,8 @@ SciEngine::SciEngine(OSystem *syst, const ADGameDescription *desc, SciGameId gam
|
|||
_console = 0;
|
||||
_opcode_formats = 0;
|
||||
|
||||
_forceHiresGraphics = false;
|
||||
|
||||
// Set up the engine specific debug levels
|
||||
DebugMan.addDebugChannel(kDebugLevelError, "Error", "Script error debugging");
|
||||
DebugMan.addDebugChannel(kDebugLevelNodes, "Lists", "Lists and nodes debugging");
|
||||
|
@ -222,6 +224,34 @@ Common::Error SciEngine::run() {
|
|||
_scriptPatcher = new ScriptPatcher();
|
||||
SegManager *segMan = new SegManager(_resMan, _scriptPatcher);
|
||||
|
||||
// Read user option for hires graphics
|
||||
// Only show/selectable for:
|
||||
// - King's Quest 6 CD
|
||||
// - King's Quest 6 CD demo
|
||||
// - Gabriel Knight 1 CD
|
||||
// TODO: Police Quest 4?
|
||||
// TODO: Check, if Gabriel Knight 1 floppy supports high resolution
|
||||
// TODO: Check, if Gabriel Knight 1 on Mac supports high resolution
|
||||
switch (getPlatform()) {
|
||||
case Common::kPlatformDOS:
|
||||
case Common::kPlatformWindows:
|
||||
// Only DOS+Windows
|
||||
switch (_gameId) {
|
||||
case GID_KQ6:
|
||||
if (isCD())
|
||||
_forceHiresGraphics = ConfMan.getBool("enable_high_resolution_graphics");
|
||||
break;
|
||||
case GID_GK1:
|
||||
if ((isCD()) && (!isDemo()))
|
||||
_forceHiresGraphics = ConfMan.getBool("enable_high_resolution_graphics");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
};
|
||||
|
||||
// Initialize the game screen
|
||||
_gfxScreen = new GfxScreen(_resMan);
|
||||
_gfxScreen->enableUndithering(ConfMan.getBool("disable_dithering"));
|
||||
|
@ -805,6 +835,10 @@ bool SciEngine::isCD() const {
|
|||
return _gameDescription->flags & ADGF_CD;
|
||||
}
|
||||
|
||||
bool SciEngine::forceHiresGraphics() const {
|
||||
return _forceHiresGraphics;
|
||||
}
|
||||
|
||||
bool SciEngine::isBE() const{
|
||||
switch(_gameDescription->platform) {
|
||||
case Common::kPlatformAmiga:
|
||||
|
|
|
@ -269,6 +269,7 @@ public:
|
|||
Common::Platform getPlatform() const;
|
||||
bool isDemo() const;
|
||||
bool isCD() const;
|
||||
bool forceHiresGraphics() const;
|
||||
|
||||
/** Returns true if the game's original platform is big-endian. */
|
||||
bool isBE() const;
|
||||
|
@ -422,6 +423,7 @@ private:
|
|||
Console *_console;
|
||||
Common::RandomSource _rng;
|
||||
Common::MacResManager _macExecutable;
|
||||
bool _forceHiresGraphics; // user-option for GK1, KQ6, PQ4
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue