diff options
| author | Kamil Zbróg | 2013-10-11 01:01:56 +0100 | 
|---|---|---|
| committer | Kamil Zbróg | 2013-10-11 01:01:56 +0100 | 
| commit | 1a55957647a10540f5c11935c2ede372e593f713 (patch) | |
| tree | c29c2016f27f34c6f69eb4053b19dee05025c934 | |
| parent | 5b54a546e0de7a3e2e103667320459695a243d9c (diff) | |
| download | scummvm-rg350-1a55957647a10540f5c11935c2ede372e593f713.tar.gz scummvm-rg350-1a55957647a10540f5c11935c2ede372e593f713.tar.bz2 scummvm-rg350-1a55957647a10540f5c11935c2ede372e593f713.zip  | |
PRINCE: Detection of german and polish game
| -rw-r--r-- | engines/configure.engines | 1 | ||||
| -rw-r--r-- | engines/engines.mk | 5 | ||||
| -rw-r--r-- | engines/plugins_table.h | 3 | ||||
| -rw-r--r-- | engines/prince/detection.cpp | 145 | ||||
| -rw-r--r-- | engines/prince/module.mk | 13 | ||||
| -rw-r--r-- | engines/prince/prince.cpp | 70 | ||||
| -rw-r--r-- | engines/prince/prince.h | 79 | 
7 files changed, 316 insertions, 0 deletions
diff --git a/engines/configure.engines b/engines/configure.engines index 20e5a56ef1..fab0862407 100644 --- a/engines/configure.engines +++ b/engines/configure.engines @@ -33,6 +33,7 @@ add_engine myst "Myst" no "" "" "16bit"  add_engine neverhood "Neverhood" no  add_engine parallaction "Parallaction" yes  add_engine pegasus "The Journeyman Project: Pegasus Prime" yes "" "" "16bit" +add_engine prince "The Prince & The Coward" no  add_engine queen "Flight of the Amazon Queen" yes  add_engine saga "SAGA" yes "ihnm saga2" "ITE"  add_engine ihnm "IHNM" yes diff --git a/engines/engines.mk b/engines/engines.mk index 5b3eeea61c..7ad9dd666d 100644 --- a/engines/engines.mk +++ b/engines/engines.mk @@ -155,6 +155,11 @@ DEFINES += -DENABLE_PEGASUS=$(ENABLE_PEGASUS)  MODULES += engines/pegasus  endif +ifdef ENABLE_PRINCE +DEFINES += -DENABLE_PRINCE=$(ENABLE_PRINCE) +MODULES += engines/prince +endif +  ifdef ENABLE_QUEEN  DEFINES += -DENABLE_QUEEN=$(ENABLE_QUEEN)  MODULES += engines/queen diff --git a/engines/plugins_table.h b/engines/plugins_table.h index ee7713bb76..85283b2e8a 100644 --- a/engines/plugins_table.h +++ b/engines/plugins_table.h @@ -122,3 +122,6 @@ LINK_PLUGIN(TUCKER)  #if PLUGIN_ENABLED_STATIC(WINTERMUTE)  LINK_PLUGIN(WINTERMUTE)  #endif +#if PLUGIN_ENABLED_STATIC(PRINCE) +LINK_PLUGIN(PRINCE) +#endif diff --git a/engines/prince/detection.cpp b/engines/prince/detection.cpp new file mode 100644 index 0000000000..e7f1ac01dd --- /dev/null +++ b/engines/prince/detection.cpp @@ -0,0 +1,145 @@ +/* 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 "prince/prince.h"
 +
 +namespace Prince {
 +
 +struct PrinceGameDescription {
 +	ADGameDescription desc;
 +
 +	int gameType;
 +};
 +
 +int PrinceEngine::getGameType() const {
 +	return _gameDescription->gameType;
 +}
 +
 +const char *PrinceEngine::getGameId() const {
 +	return _gameDescription->desc.gameid;
 +}
 +
 +uint32 PrinceEngine::getFeatures() const {
 +	return _gameDescription->desc.flags;
 +}
 +
 +Common::Language PrinceEngine::getLanguage() const {
 +	return _gameDescription->desc.language;
 +}
 +
 +}
 +
 +static const PlainGameDescriptor princeGames[] = {
 +	{"prince", "Prince Game"},
 +	{0, 0}
 +};
 +
 +namespace Prince {
 +
 +static const PrinceGameDescription gameDescriptions[] = {
 +    
 +    // German
 +	{
 +		{
 +			"prince",
 +			"Galador",
 +			AD_ENTRY1s("databank.ptc", "5fa03833177331214ec1354761b1d2ee", 3565031),
 +			Common::DE_DEU,
 +			Common::kPlatformWindows,
 +			ADGF_NO_FLAGS,
 +			GUIO1(GUIO_NONE)
 +		},
 +		0
 +	},
 +    // Polish
 +	{
 +		{
 +			"prince",
 +			"Ksiaze i Tchorz",
 +			AD_ENTRY1s("databank.ptc", "48ec9806bda9d152acbea8ce31c93c49", 3435298),
 +			Common::PL_POL,
 +			Common::kPlatformWindows,
 +			ADGF_NO_FLAGS,
 +			GUIO1(GUIO_NONE)
 +		},
 +		1
 +	},
 +
 +
 +	{ AD_TABLE_END_MARKER, 0 }
 +};
 +
 +} // End of namespace Prince
 +
 +using namespace Prince;
 +
 +// we match from data too, to stop detection from a non-top-level directory
 +const static char *directoryGlobs[] = {
 +	"all",
 +	0
 +};
 +
 +class PrinceMetaEngine : public AdvancedMetaEngine {
 +public:
 +	PrinceMetaEngine() : AdvancedMetaEngine(Prince::gameDescriptions, sizeof(Prince::PrinceGameDescription), princeGames) {
 +		_singleid = "prince";
 +		_maxScanDepth = 2;
 +		_directoryGlobs = directoryGlobs;
 +	}
 +
 +	virtual const char *getName() const {
 +		return "Prince Engine";
 +	}
 +
 +	virtual const char *getOriginalCopyright() const {
 +		return "Copyright (C)";
 +	}
 +
 +	virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
 +	virtual bool hasFeature(MetaEngineFeature f) const;
 +};
 +
 +bool PrinceMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
 +    using namespace Prince;
 +	const PrinceGameDescription *gd = (const PrinceGameDescription *)desc;
 +	if (gd) {
 +		*engine = new PrinceEngine(syst, gd);
 +	}
 +	return gd != 0;
 +}
 +
 +bool PrinceMetaEngine::hasFeature(MetaEngineFeature f) const {
 +	return false;
 +}
 +
 +bool Prince::PrinceEngine::hasFeature(EngineFeature f) const {
 +	return false;//(f == kSupportsRTL);
 +}
 +
 +#if PLUGIN_ENABLED_DYNAMIC(PRINCE)
 +REGISTER_PLUGIN_DYNAMIC(PRINCE, PLUGIN_TYPE_ENGINE, PrinceMetaEngine);
 +#else
 +REGISTER_PLUGIN_STATIC(PRINCE, PLUGIN_TYPE_ENGINE, PrinceMetaEngine);
 +#endif
 diff --git a/engines/prince/module.mk b/engines/prince/module.mk new file mode 100644 index 0000000000..1621e48ce7 --- /dev/null +++ b/engines/prince/module.mk @@ -0,0 +1,13 @@ +MODULE := engines/prince
 +
 +MODULE_OBJS = \
 +	detection.o \
 +	prince.o
 +
 +# This module can be built as a plugin
 +ifeq ($(ENABLE_PRINCE), DYNAMIC_PLUGIN)
 +PLUGIN := 1
 +endif
 +
 +# Include common rules
 +include $(srcdir)/rules.mk
 diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp new file mode 100644 index 0000000000..e2149e9919 --- /dev/null +++ b/engines/prince/prince.cpp @@ -0,0 +1,70 @@ +/* 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 "common/scummsys.h"
 + 
 +#include "common/config-manager.h"
 +#include "common/debug-channels.h"
 +#include "common/debug.h"
 +#include "common/events.h"
 +#include "common/file.h"
 +#include "common/random.h"
 +#include "common/fs.h"
 +#include "common/keyboard.h"
 +#include "common/substream.h"
 +
 +#include "graphics/cursorman.h"
 +#include "graphics/surface.h"
 +#include "graphics/palette.h"
 +#include "graphics/pixelformat.h"
 +
 +#include "engines/util.h"
 +#include "engines/advancedDetector.h"
 +
 +#include "audio/audiostream.h"
 +
 +#include "prince/prince.h"
 +
 +namespace Prince {
 +
 +PrinceEngine::PrinceEngine(OSystem *syst, const PrinceGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc) {
 +	_rnd = new Common::RandomSource("prince");
 +}
 +
 +PrinceEngine::~PrinceEngine() {
 +	DebugMan.clearAllDebugChannels();
 +
 +	delete _rnd;
 +}
 +
 +Common::Error PrinceEngine::run() {
 +
 +	initGraphics(640, 480, true);
 +
 +	return Common::kNoError;
 +}
 +
 +void PrinceEngine::setFullPalette() {
 +	_system->getPaletteManager()->setPalette(_palette, 0, 256);
 +} 
 +
 +
 +} // End of namespace Prince
 diff --git a/engines/prince/prince.h b/engines/prince/prince.h new file mode 100644 index 0000000000..e73deb63e3 --- /dev/null +++ b/engines/prince/prince.h @@ -0,0 +1,79 @@ +/* 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 PRINCE_H
 +#define PRINCE_H
 +
 +#include "common/random.h"
 +#include "common/system.h"
 +#include "common/debug.h"
 +#include "common/debug-channels.h"
 +#include "common/textconsole.h"
 +#include "common/rect.h"
 +
 +#include "engines/engine.h"
 +#include "engines/util.h"
 +
 +#include "graphics/surface.h"
 +
 +#include "audio/mixer.h"
 +
 +namespace Prince {
 +
 +struct PrinceGameDescription;
 +
 +class PrinceEngine;
 +
 +class PrinceEngine : public Engine {
 +protected:
 +	Common::Error run();
 +
 +public:
 +	PrinceEngine(OSystem *syst, const PrinceGameDescription *gameDesc);
 +	virtual ~PrinceEngine();
 +
 +	virtual bool hasFeature(EngineFeature f) const;
 +
 +	int getGameType() const;
 +	const char *getGameId() const;
 +	uint32 getFeatures() const;
 +	Common::Language getLanguage() const;
 +
 +	const PrinceGameDescription *_gameDescription;
 +	
 +private:
 +	Common::RandomSource *_rnd;
 +
 +	byte _palette[768];
 +	Graphics::Surface *_frontScreen;
 +	Graphics::Surface *_roomBackground;
 +
 +	void loadBackground(Common::SeekableReadStream *stream);
 +	void setFullPalette();
 +	
 +	void drawSprite(Graphics::Surface *sprite, int32 x, int32 y, int32 mod);
 +
 +};
 +
 +} // End of namespace Prince
 +
 +#endif
  | 
