aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tsage/detection.cpp1
-rw-r--r--engines/tsage/detection_tables.h6
-rw-r--r--engines/tsage/globals.cpp2
-rw-r--r--engines/tsage/sherlock/sherlock_logo.cpp13
-rw-r--r--engines/tsage/sherlock/sherlock_logo.h5
-rw-r--r--engines/tsage/tsage.cpp10
6 files changed, 31 insertions, 6 deletions
diff --git a/engines/tsage/detection.cpp b/engines/tsage/detection.cpp
index 9d61b4d182..388967931d 100644
--- a/engines/tsage/detection.cpp
+++ b/engines/tsage/detection.cpp
@@ -62,6 +62,7 @@ static const PlainGameDescriptor tSageGameTitles[] = {
{ "ringworld", "Ringworld: Revenge of the Patriarch" },
{ "blueforce", "Blue Force" },
{ "ringworld2", "Return to Ringworld" },
+ { "sherlock-logo", "The Lost Files of Sherlock Holmes (Logo)" },
{ 0, 0 }
};
diff --git a/engines/tsage/detection_tables.h b/engines/tsage/detection_tables.h
index 1ff0cde18c..1dfc3e6fd2 100644
--- a/engines/tsage/detection_tables.h
+++ b/engines/tsage/detection_tables.h
@@ -189,9 +189,9 @@ static const tSageGameDescription gameDescriptions[] = {
// The Lost Files of Sherlock Holmes - The Case of the Serrated Scalpel (Logo)
{
{
- "sherlock1",
- "Logo",
- AD_ENTRY1s("sf3.rlb", "c8e1a82c67c3caf57368eadde13dc15f", 0),
+ "sherlock-logo",
+ "",
+ AD_ENTRY1s("sf3.rlb", "153f9b93eda4e95578e31be30e69b5e5", 50419),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index 3b78af3e3e..1be3e2b6da 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -160,7 +160,7 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface
case GType_Sherlock1:
_inventory = nullptr;
- _sceneHandler = new SceneHandler();
+ _sceneHandler = new Sherlock::SherlockSceneHandler();
_game = new Sherlock::SherlockLogo();
break;
}
diff --git a/engines/tsage/sherlock/sherlock_logo.cpp b/engines/tsage/sherlock/sherlock_logo.cpp
index e2c5629bfc..58cefe551b 100644
--- a/engines/tsage/sherlock/sherlock_logo.cpp
+++ b/engines/tsage/sherlock/sherlock_logo.cpp
@@ -60,6 +60,19 @@ void SherlockLogo::quitGame() {
/*--------------------------------------------------------------------------*/
+void SherlockSceneHandler::postInit(SceneObjectList *OwnerList) {
+ _delayTicks = 2;
+
+ GLOBALS._soundManager.postInit();
+ GLOBALS._soundManager.buildDriverList(true);
+ GLOBALS._soundManager.installConfigDrivers();
+
+ GLOBALS._sceneManager.setNewScene(10);
+ GLOBALS._game->start();
+}
+
+/*--------------------------------------------------------------------------*/
+
void SherlockLogoScene::Action1::signal() {
SherlockLogoScene &scene = *(SherlockLogoScene *)GLOBALS._sceneManager._scene;
diff --git a/engines/tsage/sherlock/sherlock_logo.h b/engines/tsage/sherlock/sherlock_logo.h
index 1f3eb15c53..c9fb50e6ef 100644
--- a/engines/tsage/sherlock/sherlock_logo.h
+++ b/engines/tsage/sherlock/sherlock_logo.h
@@ -51,6 +51,11 @@ public:
virtual bool canLoadGameStateCurrently();
};
+class SherlockSceneHandler : public SceneHandler {
+public:
+ virtual void postInit(SceneObjectList *OwnerList);
+};
+
class SherlockLogoScene: public Scene {
class Action1 : public Action {
public:
diff --git a/engines/tsage/tsage.cpp b/engines/tsage/tsage.cpp
index 0b882d5cbf..4412d0670f 100644
--- a/engines/tsage/tsage.cpp
+++ b/engines/tsage/tsage.cpp
@@ -44,11 +44,12 @@ TSageEngine::TSageEngine(OSystem *system, const tSageGameDescription *gameDesc)
_debugger = new DemoDebugger();
else
_debugger = new RingworldDebugger();
- }
- else if (g_vm->getGameID() == GType_BlueForce)
+ } else if (g_vm->getGameID() == GType_BlueForce)
_debugger = new BlueForceDebugger();
else if (g_vm->getGameID() == GType_Ringworld2)
_debugger = new Ringworld2Debugger();
+ else if (g_vm->getGameID() == GType_Sherlock1)
+ _debugger = new DemoDebugger();
}
Common::Error TSageEngine::init() {
@@ -110,6 +111,11 @@ void TSageEngine::initialize() {
// Reset all global variables
R2_GLOBALS.reset();
+ } else if (g_vm->getGameID() == GType_Sherlock1) {
+ g_resourceManager->addLib("SF3.RLB");
+ g_globals = new Globals();
+
+ return;
}
g_globals->gfxManager().setDefaults();