aboutsummaryrefslogtreecommitdiff
path: root/engines/agi
diff options
context:
space:
mode:
authorMartin Kiewitz2016-02-28 14:05:20 +0100
committerMartin Kiewitz2016-02-28 14:06:22 +0100
commit0caef5d8d029cc497c3ea9996628542b9a6b4cf3 (patch)
tree9380eb3c38166ba76f9d7c9f95887122f1f3cede /engines/agi
parent7ab0de238efd6186c5137d399f8d2915909e91c5 (diff)
downloadscummvm-rg350-0caef5d8d029cc497c3ea9996628542b9a6b4cf3.tar.gz
scummvm-rg350-0caef5d8d029cc497c3ea9996628542b9a6b4cf3.tar.bz2
scummvm-rg350-0caef5d8d029cc497c3ea9996628542b9a6b4cf3.zip
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.
Diffstat (limited to 'engines/agi')
-rw-r--r--engines/agi/agi.h18
-rw-r--r--engines/agi/cycle.cpp8
2 files changed, 16 insertions, 10 deletions
diff --git a/engines/agi/agi.h b/engines/agi/agi.h
index 6534331f6e..b288557f57 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 211513ca36..19aca6f2c4 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).