22#ifndef SCI_ENGINE_FEATURES_H
23#define SCI_ENGINE_FEATURES_H
25#include "sci/resource/resource.h"
26#include "sci/engine/seg_manager.h"
31 kMoveCountUninitialized,
36enum PseudoMouseAbilityType {
37 kPseudoMouseAbilityUninitialized,
38 kPseudoMouseAbilityFalse,
39 kPseudoMouseAbilityTrue
42enum MessageTypeSyncStrategy {
43 kMessageTypeSyncStrategyNone,
44 kMessageTypeSyncStrategyDefault
47 kMessageTypeSyncStrategyLSL6Hires,
48 kMessageTypeSyncStrategyShivers
53 kSpeedThrottleDefaultDelay = 30
99 inline bool usesModifiedAudioAttenuation()
const {
100 switch (
g_sci->getGameId()) {
103 return g_sci->isCD();
104 case GID_MOTHERGOOSEHIRES:
113 return getSciVersion() == SCI_VERSION_2_1_EARLY;
119 inline bool gameScriptsControlMasterVolume()
const {
120 switch (
g_sci->getGameId()) {
122 case GID_PHANTASMAGORIA2:
130 inline bool hasSci3Audio()
const {
131 return getSciVersion() == SCI_VERSION_3 ||
g_sci->getGameId() == GID_GK2;
134 inline bool hasTransparentPicturePlanes()
const {
135 const SciGameId &gid =
g_sci->getGameId();
140 return getSciVersion() >= SCI_VERSION_2_1_MIDDLE &&
142 gid != GID_MOTHERGOOSEHIRES;
145 inline bool hasMidPaletteCode()
const {
146 return getSciVersion() >= SCI_VERSION_2_1_MIDDLE ||
g_sci->getGameId() == GID_KQ7;
149 inline bool hasLatePaletteCode()
const {
150 return getSciVersion() > SCI_VERSION_2_1_MIDDLE ||
151 g_sci->getGameId() == GID_GK2 ||
152 g_sci->getGameId() == GID_PQSWAT ||
155 g_sci->getGameId() == GID_SHIVERS ||
156 g_sci->getGameId() == GID_TORIN;
159 inline bool VMDOpenStopsAudio()
const {
165 return getSciVersion() == SCI_VERSION_2_1_MIDDLE &&
166 g_sci->getGameId() != GID_SQ6 &&
167 g_sci->getGameId() != GID_GK2;
170 inline bool useDoSoundMac32()
const {
174 (
g_sci->getGameId() == GID_HOYLE5 ||
175 g_sci->getGameId() == GID_PHANTASMAGORIA ||
176 g_sci->getGameId() == GID_PQSWAT ||
177 g_sci->getGameId() == GID_SHIVERS ||
178 g_sci->getGameId() == GID_SQ6);
181 inline bool useMacGammaLevel()
const {
187 getSciVersion() >= SCI_VERSION_2 &&
188 getSciVersion() < SCI_VERSION_2_1_LATE &&
189 g_sci->getGameId() != GID_PQSWAT &&
190 g_sci->getGameId() != GID_TORIN;
193 inline bool usesAlternateSelectors()
const {
194 return g_sci->getGameId() == GID_PHANTASMAGORIA2;
207 switch (
g_sci->getGameId()) {
243 int detectPlaneIdBase();
247 bool usesCdTrack() {
return _usesCdTrack; }
267 bool useWindowsCursors() {
return _useWindowsCursors; }
275 bool useAudioPopfix()
const {
return _useAudioPopfix; }
277 bool useEarlyGetLongestTextCalculations()
const;
312 bool autoDetectLofsType(
const Common::String& gameSuperClassName,
int methodNum);
313 bool autoDetectGfxFunctionsType(
int methodNum = -1);
314 bool autoDetectSoundType();
315 bool autoDetectMoveCountType();
317 bool autoDetectSci21KernelType();
320 SciVersion _doSoundType, _setCursorType, _lofsType, _gfxFunctionsType, _messageFunctionType;
325 MoveCountType _moveCountType;
327 bool _forceDOSTracks;
328 bool _useWindowsCursors;
330 PseudoMouseAbilityType _pseudoMouseAbility;
332 bool _useAudioPopfix;
Definition: features.h:56
bool audioVolumeSyncUsesGlobals() const
bool usesOldGfxFunctions()
Definition: features.h:235
SciVersion detectLofsType()
void forceDOSTracks()
Definition: features.h:265
bool supportsTextSpeed() const
Definition: features.h:206
bool canSaveFromGMM() const
SciVersion detectMessageFunctionType()
MessageTypeSyncStrategy getMessageTypeSyncStrategy() const
SciVersion detectSetCursorType()
SciVersion detectGfxFunctionsType()
bool isGameFlagBitOrderNormal() const
uint16 getGameFlagsGlobal() const
PseudoMouseAbilityType detectPseudoMouseAbility()
bool hasScriptObjectNames() const
MoveCountType detectMoveCountType()
bool supportsSpeechWithSubtitles() const
SciVersion detectDoSoundType()
Common::Platform getPlatform() const
Definition: seg_manager.h:48
SciVersion
Definition: detection.h:136
Definition: vm_types.h:39