[Scummvm-cvs-logs] scummvm master -> 0caef5d8d029cc497c3ea9996628542b9a6b4cf3

m-kiewitz m_kiewitz at users.sourceforge.net
Sun Feb 28 14:06:27 CET 2016


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:
0caef5d8d0 AGI: Set monitor VM var to EGA for Hercules rendering


Commit: 0caef5d8d029cc497c3ea9996628542b9a6b4cf3
    https://github.com/scummvm/scummvm/commit/0caef5d8d029cc497c3ea9996628542b9a6b4cf3
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2016-02-28T14:06:22+01:00

Commit Message:
AGI: Set monitor VM var to EGA for Hercules rendering

Original AGI Hercules rendering was restricted by the Hercules
resolution, which is why they had to remove the AGI prompt and
replace it with a prompt window like the one used in SCI.
We are not and even when we support that prompt window, we
will still support the original AGI prompt even for Hercules
rendering.
Maybe some games had special graphic code, when Hercules rendering
is active. This needs to get checked.

We are now telling the scripts that we are running on EGA,
so that they don't put text at different coordinates.
Hercules rendering also used a different grid for putting text
for example Space Quest 2 right at the start.
This change avoids problems with such placement. We don't really
want to restrict ourselves by implementing that different
text grid resolution.

Also added comments on game feature flags.

Changed paths:
    engines/agi/agi.h
    engines/agi/cycle.cpp



diff --git a/engines/agi/agi.h b/engines/agi/agi.h
index 6534331..b288557 100644
--- a/engines/agi/agi.h
+++ b/engines/agi/agi.h
@@ -148,17 +148,17 @@ enum BooterDisks {
 // position and position.v.
 //
 enum AgiGameFeatures {
-	GF_AGIMOUSE    = (1 << 0),
+	GF_AGIMOUSE    = (1 << 0), // this disables "Click-to-walk mouse interface"
 	GF_AGDS        = (1 << 1),
-	GF_AGI256      = (1 << 2),
-	GF_AGI256_2    = (1 << 3),
-	GF_AGIPAL      = (1 << 4),
-	GF_MACGOLDRUSH = (1 << 5),
-	GF_FANMADE     = (1 << 6),
-	GF_MENUS       = (1 << 7),
-	GF_ESCPAUSE    = (1 << 8),
+	GF_AGI256      = (1 << 2), // marks fanmade AGI-256 games
+	GF_AGI256_2    = (1 << 3), // marks fanmade AGI-256-2 games
+	GF_AGIPAL      = (1 << 4), // marks game using fanmade AGIPAL extension
+	GF_MACGOLDRUSH = (1 << 5), // use "grdir" instead of "dir" for volume loading
+	GF_FANMADE     = (1 << 6), // marks fanmade games
+	GF_MENUS       = (1 << 7), // not used anymore
+	GF_ESCPAUSE    = (1 << 8), // not used anymore, we detect this internally
 	GF_OLDAMIGAV20 = (1 << 9),
-	GF_CLIPCOORDS  = (1 << 10),
+	GF_CLIPCOORDS  = (1 << 10), // not used atm
 	GF_2GSOLDSOUND = (1 << 11)
 };
 
diff --git a/engines/agi/cycle.cpp b/engines/agi/cycle.cpp
index 211513c..19aca6f 100644
--- a/engines/agi/cycle.cpp
+++ b/engines/agi/cycle.cpp
@@ -497,7 +497,13 @@ int AgiEngine::runGame() {
 			break;
 		case Common::kRenderHercA:
 		case Common::kRenderHercG:
-			setVar(VM_VAR_MONITOR, kAgiMonitorHercules);
+			// Set EGA for now. Some games place text differently, when this is set to kAgiMonitorHercules.
+			// Text placement was different for Hercules rendering (16x12 instead of 16x16). There also was
+			// not enough space left for the prompt at the bottom. This was caused by the Hercules resolution.
+			// We don't have this restriction and we also support the regular prompt for Hercules mode.
+			// In theory Sierra could have had special Hercules code inside their games.
+			// TODO: check this.
+			setVar(VM_VAR_MONITOR, kAgiMonitorEga);
 			break;
 		// Don't know if Amiga AGI games use a different value than kAgiMonitorEga
 		// for vMonitor so I just use kAgiMonitorEga for them (As was done before too).






More information about the Scummvm-git-logs mailing list