diff options
author | Martin Kiewitz | 2016-02-28 14:05:20 +0100 |
---|---|---|
committer | Martin Kiewitz | 2016-02-28 14:06:22 +0100 |
commit | 0caef5d8d029cc497c3ea9996628542b9a6b4cf3 (patch) | |
tree | 9380eb3c38166ba76f9d7c9f95887122f1f3cede | |
parent | 7ab0de238efd6186c5137d399f8d2915909e91c5 (diff) | |
download | scummvm-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.
-rw-r--r-- | engines/agi/agi.h | 18 | ||||
-rw-r--r-- | engines/agi/cycle.cpp | 8 |
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). |