diff --git a/engines/ultima/configure.engine b/engines/ultima/configure.engine index 291efd035c66..bf849aa483a4 100644 --- a/engines/ultima/configure.engine +++ b/engines/ultima/configure.engine @@ -1,3 +1,7 @@ # This file is included from the main "configure" script # add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps] -add_engine ultima "Ultima" yes "" "" "highres 16bit lua" +add_engine ultima "Ultima" no "ultima1 ultima4 ultima6 ultima8" +add_engine ultima1 "Ultima I - The First Age of Darkness" no "" "" "" +add_engine ultima4 "Ultima IV - Quest of the Avatar" yes "" "" "" +add_engine ultima6 "Ultima VI = The False Prophet" yes "" "" "highres 16bit lua" +add_engine ultima8 "Ultima VIII - Pagan" yes "" "" "highres 16bit" diff --git a/engines/ultima/detection_tables.h b/engines/ultima/detection_tables.h index e9df23a8b723..bd05343b11e0 100644 --- a/engines/ultima/detection_tables.h +++ b/engines/ultima/detection_tables.h @@ -32,7 +32,7 @@ namespace Ultima { #define GUI_OPTIONS_SAVAGE_EMPIRE GUIO0() static const UltimaGameDescription GAME_DESCRIPTIONS[] = { -#ifndef RELEASE_BUILD +#ifdef ENABLE_ULTIMA1 { // Ultima I - The First Age of Darkness { @@ -85,6 +85,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = { }, #endif +#ifdef ENABLE_ULTIMA4 { // Ultima IV - Quest of the Avatar { @@ -114,7 +115,9 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = { GAME_ULTIMA4, GF_VGA_ENHANCED }, +#endif +#ifdef ENABLE_ULTIMA6 // GOG Ultima VI { { @@ -297,7 +300,9 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = { GAME_ULTIMA6, GF_VGA_ENHANCED }, +#endif +#ifdef ENABLE_ULTIMA8 // Ultima VIII - CD (provided by ddeluca1com, bug #11944) { { @@ -626,7 +631,9 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = { GAME_CRUSADER_REG, 0 }, +#endif +#ifdef ENABLE_ULTIMA6 // GOG Martian Dreams { { @@ -747,6 +754,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = { GAME_SAVAGE_EMPIRE, GF_VGA_ENHANCED }, +#endif { AD_TABLE_END_MARKER, (GameId)0, 0 } }; diff --git a/engines/ultima/metaengine.cpp b/engines/ultima/metaengine.cpp index 0cd7d624b5bd..c834c9ac50e0 100644 --- a/engines/ultima/metaengine.cpp +++ b/engines/ultima/metaengine.cpp @@ -27,13 +27,21 @@ #include "common/str-array.h" #include "common/memstream.h" #include "common/translation.h" +#ifdef ENABLE_ULTIMA1 #include "ultima/shared/early/ultima_early.h" +#endif +#ifdef ENABLE_ULTIMA4 #include "ultima/ultima4/ultima4.h" #include "ultima/ultima4/metaengine.h" +#endif +#ifdef ENABLE_ULTIMA6 #include "ultima/nuvie/metaengine.h" #include "ultima/nuvie/nuvie.h" +#endif +#ifdef ENABLE_ULTIMA8 #include "ultima/ultima8/ultima8.h" #include "ultima/ultima8/metaengine.h" +#endif #include "ultima/metaengine.h" @@ -174,24 +182,30 @@ const ADExtraGuiOptionsMap *UltimaMetaEngine::getAdvancedExtraGuiOptions() const Common::Error UltimaMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const { const Ultima::UltimaGameDescription *gd = (const Ultima::UltimaGameDescription *)desc; switch (gd->gameId) { -#ifndef RELEASE_BUILD +#ifdef ENABLE_ULTIMA1 case Ultima::GAME_ULTIMA1: *engine = new Ultima::Shared::UltimaEarlyEngine(syst, gd); break; #endif +#ifdef ENABLE_ULTIMA4 case Ultima::GAME_ULTIMA4: *engine = new Ultima::Ultima4::Ultima4Engine(syst, gd); break; +#endif +#ifdef ENABLE_ULTIMA6 case Ultima::GAME_ULTIMA6: case Ultima::GAME_MARTIAN_DREAMS: case Ultima::GAME_SAVAGE_EMPIRE: *engine = new Ultima::Nuvie::NuvieEngine(syst, gd); break; +#endif +#ifdef ENABLE_ULTIMA8 case Ultima::GAME_ULTIMA8: case Ultima::GAME_CRUSADER_REG: case Ultima::GAME_CRUSADER_REM: *engine = new Ultima::Ultima8::Ultima8Engine(syst, gd); break; +#endif default: return Common::kUnsupportedGameidError; @@ -206,9 +220,11 @@ int UltimaMetaEngine::getMaximumSaveSlot() const { SaveStateList UltimaMetaEngine::listSaves(const char *target) const { SaveStateList saveList = AdvancedMetaEngine::listSaves(target); +#ifdef ENABLE_ULTIMA6 Common::String gameId = getGameId(target); if (gameId == "ultima6" || gameId == "ultima6_enh") Ultima::Nuvie::MetaEngine::listSaves(saveList); +#endif return saveList; } @@ -216,6 +232,7 @@ SaveStateList UltimaMetaEngine::listSaves(const char *target) const { SaveStateDescriptor UltimaMetaEngine::querySaveMetaInfos(const char *target, int slot) const { SaveStateDescriptor desc = AdvancedMetaEngine::querySaveMetaInfos(target, slot); if (!desc.isValid() && slot > 0) { +#ifdef ENABLE_ULTIMA8 Common::String gameId = getGameId(target); if (gameId == "ultima8") { Common::String filename = getSavegameFile(slot, target); @@ -223,18 +240,25 @@ SaveStateDescriptor UltimaMetaEngine::querySaveMetaInfos(const char *target, int if (!Ultima::Ultima8::MetaEngine::querySaveMetaInfos(filename, desc)) return SaveStateDescriptor(); } +#endif } return desc; } Common::KeymapArray UltimaMetaEngine::initKeymaps(const char *target) const { +#if defined(ENABLE_ULTIMA4) || defined(ENABLE_ULTIMA8) const Common::String gameId = getGameId(target); +#endif + +#ifdef ENABLE_ULTIMA4 if (gameId == "ultima4" || gameId == "ultima4_enh") return Ultima::Ultima4::MetaEngine::initKeymaps(); +#endif +#ifdef ENABLE_ULTIMA8 if (gameId == "ultima8" || gameId == "remorse" || gameId == "regret") return Ultima::Ultima8::MetaEngine::initKeymaps(gameId); - +#endif return Common::KeymapArray(); } diff --git a/engines/ultima/module.mk b/engines/ultima/module.mk index 7c2985082ad2..aad1ad4ef583 100644 --- a/engines/ultima/module.mk +++ b/engines/ultima/module.mk @@ -52,7 +52,10 @@ MODULE_OBJS := \ shared/maps/map_tile.o \ shared/maps/map_widget.o \ shared/maps/creature.o \ - shared/std/string.o \ + shared/std/string.o + +ifdef ENABLE_ULTIMA1 +MODULE_OBJS += \ ultima0/core/resources.o \ ultima0/game.o \ ultima0/resources.o \ @@ -132,7 +135,11 @@ MODULE_OBJS := \ ultima1/widgets/urban_player.o \ ultima1/widgets/urban_widget.o \ ultima1/widgets/wench.o \ - ultima1/game.o \ + ultima1/game.o +endif + +ifdef ENABLE_ULTIMA4 +MODULE_OBJS += \ ultima4/controllers/alpha_action_controller.o \ ultima4/controllers/camp_controller.o \ ultima4/controllers/combat_controller.o \ @@ -219,7 +226,11 @@ MODULE_OBJS := \ ultima4/views/tileview.o \ ultima4/views/view.o \ ultima4/metaengine.o \ - ultima4/ultima4.o \ + ultima4/ultima4.o +endif + +ifdef ENABLE_ULTIMA6 +MODULE_OBJS += \ nuvie/metaengine.o \ nuvie/nuvie.o \ nuvie/actors/actor.o \ @@ -380,7 +391,11 @@ MODULE_OBJS := \ nuvie/views/sun_moon_ribbon.o \ nuvie/views/sun_moon_strip_widget.o \ nuvie/views/view.o \ - nuvie/views/view_manager.o \ + nuvie/views/view_manager.o +endif + +ifdef ENABLE_ULTIMA8 +MODULE_OBJS += \ ultima8/metaengine.o \ ultima8/ultima8.o \ ultima8/audio/audio_channel.o \ @@ -584,6 +599,7 @@ MODULE_OBJS := \ ultima8/world/actors/targeted_anim_process.o \ ultima8/world/actors/teleport_to_egg_process.o \ ultima8/world/actors/u8_avatar_mover_process.o +endif # This module can be built as a plugin ifeq ($(ENABLE_ULTIMA), DYNAMIC_PLUGIN)