Index: configure
===================================================================
--- configure	(revision 39903)
+++ configure	(working copy)
@@ -96,6 +96,7 @@
 add_engine tinsel "Tinsel" no
 add_engine touche "Touche: The Adventures of the Fifth Musketeer" yes
 add_engine tucker "Bud Tucker in Double Trouble" yes
+add_engine dragon "Dragon History" yes
 
 
 #
Index: engines/dragon/detection.cpp
===================================================================
--- engines/dragon/detection.cpp	(revision 0)
+++ engines/dragon/detection.cpp	(revision 0)
@@ -0,0 +1,137 @@
+/* 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "dragon/dragon.h"
+
+#include "base/game.h"
+#include "base/plugins.h"
+#include "engines/metaengine.h"
+#include "common/advancedDetector.h"
+
+static const PlainGameDescriptor dragonGames[] = {
+	{ "dragon", "Dragon History" },
+	{ 0, 0 }
+};
+
+namespace Dragon {
+
+const ADGameDescription gameDescriptions[] = {
+	
+	{
+		"dragon",
+		0,
+		{
+			{"init", 0, "ab6473f08497bd592741754647431ca3", -1},
+			{NULL, 0, NULL, 0}
+		},
+		Common::EN_ANY,
+		Common::kPlatformPC,
+		ADGF_NO_FLAGS
+	},
+	
+	{
+		"dragon",
+		0,
+		{
+			{"init", 0, "ab6473f08497bd592741754647431ca3", -1},
+			{NULL, 0, NULL, 0}
+		},
+		Common::CZ_CZE,
+		Common::kPlatformPC,
+		ADGF_NO_FLAGS
+	},
+
+	{
+		"dragon",
+		0,
+		{
+			{"init", 0, "ab6473f08497bd592741754647431ca3", -1},
+			{NULL, 0, NULL, 0}
+		},
+		Common::PL_POL,
+		Common::kPlatformPC,
+		ADGF_NO_FLAGS
+	},
+
+	AD_TABLE_END_MARKER
+};
+
+} // End of namespace Dragon
+
+const ADParams detectionParams = {
+	// Pointer to ADGameDescription or its superset structure
+	(const byte *)Dragon::gameDescriptions,
+	// Size of that superset structure
+	sizeof(ADGameDescription),
+	// Number of bytes to compute MD5 sum for
+	5000,
+	// List of all engine targets
+	dragonGames,
+	// Structure for autoupgrading obsolete targets
+	0,
+	// Name of single gameid (optional)
+	"dragon",
+	// List of files for file-based fallback detection (optional)
+	0,
+	// Flags
+	0
+};
+
+class DragonMetaEngine : public AdvancedMetaEngine {
+public:
+	DragonMetaEngine() : AdvancedMetaEngine(detectionParams) {}
+	
+	virtual const char *getName() const {
+		return "Dragon History Engine";
+	}
+
+	virtual const char *getOriginalCopyright() const {
+		return "Copyright (C) 1995 NoSense";
+	}
+	
+	virtual bool hasFeature(MetaEngineFeature f) const;
+	virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
+};
+
+bool DragonMetaEngine::hasFeature(MetaEngineFeature f) const {
+	return false;
+}
+
+bool Dragon::DragonEngine::hasFeature(EngineFeature f) const {
+	return false;
+}
+
+bool DragonMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
+	if (desc) {
+		*engine = new Dragon::DragonEngine(syst);
+	}
+	return desc != 0;
+}
+
+#if PLUGIN_ENABLED_DYNAMIC(DRAGON)
+	REGISTER_PLUGIN_DYNAMIC(DRAGON, PLUGIN_TYPE_ENGINE, DragonMetaEngine);
+#else
+	REGISTER_PLUGIN_STATIC(DRAGON, PLUGIN_TYPE_ENGINE, DragonMetaEngine);
+#endif
Index: engines/dragon/dragon.h
===================================================================
--- engines/dragon/dragon.h	(revision 0)
+++ engines/dragon/dragon.h	(revision 0)
@@ -0,0 +1,55 @@
+/* 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef DRAGON_H
+#define DRAGON_H
+ 
+#include "engines/engine.h"
+//#include "engines/advancedDetector.h"
+
+namespace Dragon {
+
+class DragonEngine : public Engine {
+public:
+	DragonEngine(OSystem *syst, const ADGameDescription *gameDesc);
+	~DragonEngine();
+
+	virtual int init();
+	virtual int go();
+
+	bool hasFeature(Engine::EngineFeature f) const;
+
+private:
+	Common::RandomSource _rnd;
+};
+
+enum {
+	kDragonGeneralDebugLevel = 1 << 0
+};
+
+} // End of namespace Dragon
+
+#endif // DRAGON_H
+
Index: engines/dragon/dragon.cpp
===================================================================
--- engines/dragon/dragon.cpp	(revision 0)
+++ engines/dragon/dragon.cpp	(revision 0)
@@ -0,0 +1,75 @@
+/* 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+ 
+#include "common/scummsys.h"
+ 
+#include "common/events.h" // for getEventManager()
+#include "common/config-manager.h"
+#include "common/file.h"
+#include "common/fs.h"
+ 
+#include "dragon/dragon.h"
+
+namespace Dragon {
+
+DragonEngine::DragonEngine(OSystem *syst, const ADGameDescription *gameDesc) 
+ : Engine(syst) {
+	// Put your engine in a sane state, but do nothing big yet;
+	// in particular, do not load data from files; rather, if you
+	// need to do such things, do them from init().
+ 
+	// Do not initialize graphics here
+ 
+	// However this is the place to specify all default directories
+	//Common::File::addDefaultDirectory(_gameDataPath + "sound/");
+ 
+	// Here is the right place to set up the engine specific debug levels
+	Common::addDebugChannel(kDragonGeneralDebugLevel, "general", "General debug level");
+ 
+	// Don't forget to register your random source
+	syst->getEventManager()->registerRandomSource(_rnd, "dragon");
+}
+
+int DragonEngine::init() {
+	// Initialize graphics using following:
+	initGraphics(320, 200, false);
+ 
+	return 0;
+}
+
+int DragonEngine::go() {
+	debugC(1, kDragonGeneralDebugLevel, "DragonEngine::go()");
+ 
+	return 0;
+}
+
+DragonEngine::~DragonEngine() {
+	// Dispose your resources here
+ 
+	// Remove all of our debug levels here
+	Common::clearAllDebugChannels();
+}
+
+} // End of namespace Dragon
Index: engines/dragon/module.mk
===================================================================
--- engines/dragon/module.mk	(revision 0)
+++ engines/dragon/module.mk	(revision 0)
@@ -0,0 +1,15 @@
+MODULE := engines/dragon
+ 
+MODULE_OBJS := \
+	dragon.o detection.o
+ 
+MODULE_DIRS += \
+	engines/dragon
+ 
+# This module can be built as a plugin
+ifeq ($(ENABLE_DRAGON), DYNAMIC_PLUGIN)
+PLUGIN := 1
+endif
+ 
+# Include common rules 
+include $(srcdir)/rules.mk
Index: base/plugins.cpp
===================================================================
--- base/plugins.cpp	(revision 39903)
+++ base/plugins.cpp	(working copy)
@@ -157,6 +157,9 @@
 		#if PLUGIN_ENABLED_STATIC(TUCKER)
 		LINK_PLUGIN(TUCKER)
 		#endif
+		#if PLUGIN_ENABLED_STATIC(DRAGON)
+		LINK_PLUGIN(DRAGON)
+		#endif
 
 		// Music plugins
 		// TODO: Use defines to disable or enable each MIDI driver as a
