aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README1
-rw-r--r--common/gameDetector.cpp16
-rw-r--r--common/gameDetector.h2
-rw-r--r--sky/intro.cpp7
-rw-r--r--sky/sky.cpp2
-rw-r--r--sky/sky.h2
6 files changed, 28 insertions, 2 deletions
diff --git a/README b/README
index 6a81d875fd..743d5720c6 100644
--- a/README
+++ b/README
@@ -379,6 +379,7 @@ Command Line Options:
--multi-midi - enable combination Adlib and native MIDI
--native-mt32 - true Roland MT-32 (disable GM emulation)
--aspect-ratio - enable aspect ratio correction
+ --floppy-intro - Use floppy version intro for Beneath a Steel Sky CD
The meaning of long options can be inversed by prefixing them with "no-", e.g.
--no-aspect-ratio. This is useful if you want to override a setting in the
diff --git a/common/gameDetector.cpp b/common/gameDetector.cpp
index 1698d1f8fe..312102aa58 100644
--- a/common/gameDetector.cpp
+++ b/common/gameDetector.cpp
@@ -83,6 +83,9 @@ static const char USAGE_STRING[] =
"\t--multi-midi - enable combination Adlib and native MIDI\n"
"\t--native-mt32 - true Roland MT-32 (disable GM emulation)\n"
"\t--aspect-ratio - enable aspect ratio correction\n"
+#ifndef DISABLE_SKY
+ "\t--floppy-intro - Use floppy version intro for Beneath a Steel Sky CD\n"
+#endif
"\n"
"The meaning of long options can be inverted by prefixing them with \"no-\",\n"
"e.g. \"--no-aspect-ratio\".\n"
@@ -163,6 +166,10 @@ GameDetector::GameDetector() {
_amiga = false;
_language = 0;
+#ifndef DISABLE_SKY
+ _floppyIntro = false;
+#endif
+
_talkSpeed = 60;
_debugMode = 0;
_debugLevel = 0;
@@ -260,6 +267,10 @@ void GameDetector::updateconfig() {
exit(-1);
}
+#ifndef DISABLE_SKY
+ _floppyIntro = g_config->getBool("floppy_intro", _floppyIntro);
+#endif
+
if ((val = g_config->get("language")))
if ((_language = parseLanguage(val)) == -1) {
printf("Error in the config file: invalid language.\n");
@@ -469,6 +480,11 @@ void GameDetector::parseCommandLine(int argc, char **argv) {
} else if (!strcmp (s, "aspect-ratio")) {
_aspectRatio = long_option_value;
g_config->setBool ("aspect_ratio", _aspectRatio);
+#ifndef DISABLE_SKY
+ } else if (!strcmp (s, "floppy-intro")) {
+ _floppyIntro = long_option_value;
+ g_config->setBool ("floppy_intro", _floppyIntro);
+#endif
} else {
goto ShowHelpAndExit;
}
diff --git a/common/gameDetector.h b/common/gameDetector.h
index 697d05c7c4..a563c3c9e9 100644
--- a/common/gameDetector.h
+++ b/common/gameDetector.h
@@ -120,6 +120,8 @@ public:
bool _amiga;
int _language;
+ bool _floppyIntro;
+
uint16 _talkSpeed;
uint16 _debugMode;
uint16 _debugLevel;
diff --git a/sky/intro.cpp b/sky/intro.cpp
index 44105fcfea..41e5dd81cc 100644
--- a/sky/intro.cpp
+++ b/sky/intro.cpp
@@ -205,6 +205,9 @@ bool SkyState::intro(void) {
uint32 *commandPtr = (uint32 *)zeroCommands;
+ if (!isCDVersion())
+ _floppyIntro = true;
+
_skyDisk->prefetchFile(60112); // revolution screen
_skyDisk->prefetchFile(60113); // revolution palette
@@ -214,7 +217,7 @@ bool SkyState::intro(void) {
escDelay(3000); //keep virgin screen up for 3 seconds
CHECK_ESC
- if (!isCDVersion())
+ if (_floppyIntro)
_skyMusic->startMusic(1);
escDelay(3000); //and another 3 seconds.
@@ -242,7 +245,7 @@ bool SkyState::intro(void) {
_skyScreen->paletteFadeUp(60115);
- if (isCDVersion()) {
+ if (!_floppyIntro) {
return doCDIntro();
} else {
_skyDisk->prefetchFile(FN_A_PAL);
diff --git a/sky/sky.cpp b/sky/sky.cpp
index 8e03dc1b77..90bceeac53 100644
--- a/sky/sky.cpp
+++ b/sky/sky.cpp
@@ -88,6 +88,8 @@ SkyState::SkyState(GameDetector *detector, OSystem *syst)
_systemVars.language = detector->_language;
_detector = detector;
+ _floppyIntro = detector->_floppyIntro;
+
_introTextSpace = 0;
_introTextSave = 0;
}
diff --git a/sky/sky.h b/sky/sky.h
index 6527d70d68..75a6256eba 100644
--- a/sky/sky.h
+++ b/sky/sky.h
@@ -65,6 +65,8 @@ protected:
byte *_introTextSpace;
byte *_introTextSave;
+ bool _floppyIntro;
+
uint16 _debugMode;
uint16 _debugLevel;
bool _paintGrid;