aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.common6
-rw-r--r--base/plugins.cpp4
-rw-r--r--base/plugins.h4
-rwxr-xr-xconfigure13
-rw-r--r--kyra/.cvsignore1
-rw-r--r--kyra/kyra.cpp101
-rw-r--r--kyra/kyra.h49
-rw-r--r--kyra/kyra.obin0 -> 66348 bytes
-rw-r--r--kyra/libkyra.abin0 -> 67154 bytes
-rw-r--r--kyra/module.mk15
10 files changed, 193 insertions, 0 deletions
diff --git a/Makefile.common b/Makefile.common
index 7ad95aa335..bcd2541825 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -85,6 +85,12 @@ else
MODULES += saga
endif
+ifdef DISABLE_KYRA
+DEFINES += -DDISABLE_KYRA
+else
+MODULES += kyra
+endif
+
# After the game specific modules follow the shared modules
MODULES += \
gui \
diff --git a/base/plugins.cpp b/base/plugins.cpp
index 87ccc10c9f..c096d1813a 100644
--- a/base/plugins.cpp
+++ b/base/plugins.cpp
@@ -245,6 +245,10 @@ void PluginManager::loadPlugins() {
LOAD_MODULE("queen", QUEEN);
#endif
+#ifndef DISABLE_KYRA
+ LOAD_MODULE("kyra", KYRA);
+#endif
+
#ifndef DISABLE_SAGA
LOAD_MODULE("saga", SAGA);
#endif
diff --git a/base/plugins.h b/base/plugins.h
index 6f276743db..9fe4a287cb 100644
--- a/base/plugins.h
+++ b/base/plugins.h
@@ -165,6 +165,10 @@ DECLARE_PLUGIN(SWORD2)
DECLARE_PLUGIN(QUEEN)
#endif
+#ifndef DISABLE_KYRA
+DECLARE_PLUGIN(KYRA)
+#endif
+
#ifndef DISABLE_SAGA
DECLARE_PLUGIN(SAGA)
#endif
diff --git a/configure b/configure
index ebe2811344..391abffe80 100755
--- a/configure
+++ b/configure
@@ -38,6 +38,7 @@ _build_sky=yes
_build_sword1=yes
_build_sword2=yes
_build_queen=yes
+_build_kyra=no
_build_saga=no
_need_memalign=no
_build_plugins=no
@@ -212,6 +213,7 @@ Optional Features:
--disable-sword1 don't build the Broken Sword I engine
--disable-sword2 don't build the Broken Sword II engine
--disable-queen don't build the Flight of the Amazon Queen engine
+ --enable-kyra build the Legend of Kyrandia engine
--enable-saga build the SAGA engine
--enable-plugins build engines as loadable modules instead of
static linking them
@@ -261,6 +263,7 @@ for ac_option in $@; do
--disable-sword1) _build_sword1=no ;;
--disable-sword2) _build_sword2=no ;;
--disable-queen) _build_queen=no ;;
+ --enable-kyra) _build_kyra=yes ;;
--enable-saga) _build_saga=yes ;;
--enable-alsa) _alsa=yes ;;
--disable-alsa) _alsa=no ;;
@@ -478,6 +481,12 @@ else
_mak_queen='# DISABLE_QUEEN = 1'
fi
+if test "$_build_kyra" = no ; then
+ _mak_queen='DISABLE_KYRA = 1'
+else
+ _mak_queen='# DISABLE_KYRA = 1'
+fi
+
if test "$_build_saga" = no ; then
_mak_saga='DISABLE_SAGA = 1'
else
@@ -848,6 +857,9 @@ fi
if test "$_build_saga" = yes ; then
echo " SAGA Engine"
fi
+if test "$_build_kyra" = yes ; then
+ echo " Legend of Kyrandia"
+fi
echo
echo_n "Backend... "
@@ -934,6 +946,7 @@ $_mak_sky
$_mak_sword1
$_mak_sword2
$_mak_queen
+$_mak_kyra
$_mak_saga
INCLUDES += $INCLUDES
diff --git a/kyra/.cvsignore b/kyra/.cvsignore
new file mode 100644
index 0000000000..39a06683b7
--- /dev/null
+++ b/kyra/.cvsignore
@@ -0,0 +1 @@
+.deps
diff --git a/kyra/kyra.cpp b/kyra/kyra.cpp
new file mode 100644
index 0000000000..242395e75c
--- /dev/null
+++ b/kyra/kyra.cpp
@@ -0,0 +1,101 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003 The ScummVM project
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ *
+ */
+
+#include "stdafx.h"
+
+#include "base/gameDetector.h"
+#include "base/plugins.h"
+#include "backends/fs/fs.h"
+
+#include "sound/mixer.h"
+#include "common/file.h"
+#include "common/config-manager.h"
+#include "kyra.h"
+
+static const GameSettings kyra_setting =
+ { "kyra", "Legend of Kyrandia", 0 };
+
+GameList Engine_KYRA_gameList() {
+ GameList games;
+
+ games.push_back(kyra_setting);
+ return games;
+}
+
+// TODO: Improve this :)
+DetectedGameList Engine_KYRA_detectGames(const FSList &fslist) {
+ DetectedGameList detectedGames;
+ File test_file;
+
+ printf("Detecting Kyra...\n");
+
+ // Iterate over all files in the given directory
+ for (FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
+ const char *name = file->displayName().c_str();
+ if ((0 == scumm_stricmp("chapter1.vrm", name)) ||
+ (0 == scumm_stricmp("chapter5.vrm", name))) {
+ detectedGames.push_back(kyra_setting);
+ break;
+ }
+ }
+
+ return detectedGames;
+}
+
+Engine *Engine_KYRA_create(GameDetector *detector, OSystem *syst) {
+ return new Kyra::KyraEngine(detector, syst);
+}
+
+REGISTER_PLUGIN("Legend of Kyrandia Engine", Engine_KYRA_gameList, Engine_KYRA_create, Engine_KYRA_detectGames)
+
+namespace Kyra {
+KyraEngine::KyraEngine(GameDetector *detector, OSystem *syst)
+ : Engine(syst) {
+
+ // Setup mixer
+ if (!_mixer->isReady()) {
+ warning("Sound initialization failed.");
+ }
+
+ _mixer->setVolume(ConfMan.getInt("sfx_volume") * ConfMan.getInt("master_volume") / 255);
+
+ //getGameDataPath();
+
+ // Initialize backend
+ syst->initSize(320, 240);
+}
+
+KyraEngine::~KyraEngine() {
+}
+
+void KyraEngine::errorString(const char *buf1, char *buf2) {
+ strcpy(buf2, buf1);
+}
+
+void KyraEngine::go() {
+ warning("Kyrandia Engine ::go()");
+}
+
+void KyraEngine::shutdown() {
+ _system->quit();
+}
+} // End of namespace KYRA
+
diff --git a/kyra/kyra.h b/kyra/kyra.h
new file mode 100644
index 0000000000..9bcf09e3c4
--- /dev/null
+++ b/kyra/kyra.h
@@ -0,0 +1,49 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003 The ScummVM project
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ *
+ */
+
+#ifndef KYRA_H
+#define KYRA_H
+
+#include "common/scummsys.h"
+#include "base/engine.h"
+#include "base/gameDetector.h"
+#include "common/util.h"
+
+namespace Kyra {
+
+class KyraEngine : public Engine {
+
+ void errorString( const char *buf_input, char *buf_output);
+
+protected:
+ void go();
+ void shutdown();
+
+public:
+
+ KyraEngine(GameDetector *detector, OSystem *syst);
+ virtual ~KyraEngine();
+
+};
+
+} // End of namespace Kyra
+
+#endif
diff --git a/kyra/kyra.o b/kyra/kyra.o
new file mode 100644
index 0000000000..59a0c31fd9
--- /dev/null
+++ b/kyra/kyra.o
Binary files differ
diff --git a/kyra/libkyra.a b/kyra/libkyra.a
new file mode 100644
index 0000000000..11359e0af3
--- /dev/null
+++ b/kyra/libkyra.a
Binary files differ
diff --git a/kyra/module.mk b/kyra/module.mk
new file mode 100644
index 0000000000..bf81faf477
--- /dev/null
+++ b/kyra/module.mk
@@ -0,0 +1,15 @@
+MODULE := kyra
+
+MODULE_OBJS = \
+ kyra/kyra.o
+
+MODULE_DIRS += \
+ kyra
+
+# This module can be built as a plugin
+ifdef BUILD_PLUGINS
+PLUGIN := 1
+endif
+
+# Include common rules
+include $(srcdir)/common.rules