aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/director/configure.engine3
-rw-r--r--engines/director/detection.cpp102
-rw-r--r--engines/director/detection_tables.h48
-rw-r--r--engines/director/director.cpp49
-rw-r--r--engines/director/director.h63
-rw-r--r--engines/director/module.mk13
6 files changed, 278 insertions, 0 deletions
diff --git a/engines/director/configure.engine b/engines/director/configure.engine
new file mode 100644
index 0000000000..41f9a6249d
--- /dev/null
+++ b/engines/director/configure.engine
@@ -0,0 +1,3 @@
+# This file is included from the main "configure" script
+# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps]
+add_engine director "Macromedia Director" no
diff --git a/engines/director/detection.cpp b/engines/director/detection.cpp
new file mode 100644
index 0000000000..0a7af66a1d
--- /dev/null
+++ b/engines/director/detection.cpp
@@ -0,0 +1,102 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "base/plugins.h"
+
+#include "engines/advancedDetector.h"
+#include "common/savefile.h"
+#include "common/system.h"
+#include "common/textconsole.h"
+
+#include "director/director.h"
+
+namespace Director {
+
+struct DirectorGameDescription {
+ ADGameDescription desc;
+
+ DirectorGameID gameID;
+ uint16 version;
+};
+
+DirectorGameID DirectorEngine::getGameID() const {
+ return _gameDescription->gameID;
+}
+
+Common::Platform DirectorEngine::getPlatform() const {
+ return _gameDescription->desc.platform;
+}
+
+uint16 DirectorEngine::getVersion() const {
+ return _gameDescription->version;
+}
+
+Common::Language DirectorEngine::getLanguage() const {
+ return _gameDescription->desc.language;
+}
+
+bool DirectorEngine::hasFeature(EngineFeature f) const {
+ return
+ (f == kSupportsRTL);
+}
+
+} // End of Namespace Director
+
+static const PlainGameDescriptor directorGames[] = {
+ { "director", "Macromedia Director Game" },
+ { "gundam0079", "Gundam 0079: The War for Earth" },
+ { 0, 0 }
+};
+
+#include "director/detection_tables.h"
+
+class DirectorMetaEngine : public AdvancedMetaEngine {
+public:
+ DirectorMetaEngine() : AdvancedMetaEngine(Director::gameDescriptions, sizeof(Director::DirectorGameDescription), directorGames) {
+ _singleid = "director";
+ }
+
+ virtual const char *getName() const {
+ return "Macromedia Director";
+ }
+
+ virtual const char *getOriginalCopyright() const {
+ return "Macromedia Director (C) Macromedia";
+ }
+
+ virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
+};
+
+bool DirectorMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
+ const Director::DirectorGameDescription *gd = (const Director::DirectorGameDescription *)desc;
+
+ if (gd)
+ *engine = new Director::DirectorEngine(syst, gd);
+
+ return (gd != 0);
+}
+
+#if PLUGIN_ENABLED_DYNAMIC(DIRECTOR)
+ REGISTER_PLUGIN_DYNAMIC(DIRECTOR, PLUGIN_TYPE_ENGINE, DirectorMetaEngine);
+#else
+ REGISTER_PLUGIN_STATIC(DIRECTOR, PLUGIN_TYPE_ENGINE, DirectorMetaEngine);
+#endif
diff --git a/engines/director/detection_tables.h b/engines/director/detection_tables.h
new file mode 100644
index 0000000000..7bb2c33dcd
--- /dev/null
+++ b/engines/director/detection_tables.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef DIRECTOR_DETECTION_TABLES_H
+#define DIRECTOR_DETECTION_TABLES_H
+
+namespace Director {
+
+static const DirectorGameDescription gameDescriptions[] = {
+ {
+ {
+ "gundam0079",
+ "",
+ AD_ENTRY1("Gundam0079.exe", "1a7acbba10a7246ba58c1d53fc7203f5"),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ GID_GENERIC,
+ 5
+ },
+
+ { AD_TABLE_END_MARKER, GID_GENERIC, 0 }
+};
+
+} // End of Namespace Director
+
+#endif
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
new file mode 100644
index 0000000000..840692ae7f
--- /dev/null
+++ b/engines/director/director.cpp
@@ -0,0 +1,49 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "audio/mixer.h"
+
+#include "common/scummsys.h"
+#include "common/error.h"
+#include "common/system.h"
+#include "common/textconsole.h"
+
+#include "director/director.h"
+
+namespace Director {
+
+DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc) {
+ if (!_mixer->isReady())
+ error("Sound initialization failed");
+
+ // Setup mixer
+ syncSoundSettings();
+}
+
+DirectorEngine::~DirectorEngine() {
+}
+
+Common::Error DirectorEngine::run() {
+ return Common::kNoError;
+}
+
+} // End of namespace Director
diff --git a/engines/director/director.h b/engines/director/director.h
new file mode 100644
index 0000000000..6fe173c3f0
--- /dev/null
+++ b/engines/director/director.h
@@ -0,0 +1,63 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef DIRECTOR_DIRECTOR_H
+#define DIRECTOR_DIRECTOR_H
+
+#include "common/scummsys.h"
+
+#include "engines/engine.h"
+
+class OSystem;
+
+namespace Director {
+
+enum DirectorGameID {
+ GID_GENERIC
+};
+
+struct DirectorGameDescription;
+
+class DirectorEngine : public ::Engine {
+public:
+ DirectorEngine(OSystem *syst, const DirectorGameDescription *gameDesc);
+ ~DirectorEngine();
+
+ // Detection related functions
+
+ DirectorGameID getGameID() const;
+ uint16 getVersion() const;
+ Common::Platform getPlatform() const;
+ Common::Language getLanguage() const;
+
+ bool hasFeature(EngineFeature f) const;
+
+protected:
+ virtual Common::Error run();
+
+private:
+ const DirectorGameDescription *_gameDescription;
+};
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/module.mk b/engines/director/module.mk
new file mode 100644
index 0000000000..122ff6c7d8
--- /dev/null
+++ b/engines/director/module.mk
@@ -0,0 +1,13 @@
+MODULE := engines/director
+
+MODULE_OBJS = \
+ detection.o \
+ director.o
+
+# This module can be built as a plugin
+ifeq ($(ENABLE_DIRECTOR), DYNAMIC_PLUGIN)
+PLUGIN := 1
+endif
+
+# Include common rules
+include $(srcdir)/rules.mk