[Scummvm-git-logs] scummvm master -> 473cf8dd730caa9ddcac59e6313cded94d90553b

dreammaster noreply at scummvm.org
Sat Nov 18 05:59:16 UTC 2023


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
473cf8dd73 ULTIMA: Split the games up into sub-engines


Commit: 473cf8dd730caa9ddcac59e6313cded94d90553b
    https://github.com/scummvm/scummvm/commit/473cf8dd730caa9ddcac59e6313cded94d90553b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-11-17T19:59:08-10:00

Commit Message:
ULTIMA: Split the games up into sub-engines

Changed paths:
    engines/ultima/configure.engine
    engines/ultima/detection_tables.h
    engines/ultima/metaengine.cpp
    engines/ultima/module.mk


diff --git a/engines/ultima/configure.engine b/engines/ultima/configure.engine
index 291efd035c6..bf849aa483a 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 e9df23a8b72..bd05343b11e 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 0cd7d624b5b..c834c9ac50e 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 7c2985082ad..aad1ad4ef58 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)




More information about the Scummvm-git-logs mailing list