diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/director/configure.engine | 3 | ||||
-rw-r--r-- | engines/director/detection.cpp | 102 | ||||
-rw-r--r-- | engines/director/detection_tables.h | 48 | ||||
-rw-r--r-- | engines/director/director.cpp | 49 | ||||
-rw-r--r-- | engines/director/director.h | 63 | ||||
-rw-r--r-- | engines/director/module.mk | 13 |
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 |