aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/features.h
AgeCommit message (Collapse)Author
2019-07-09SCI: Implement early GetLongest() behavior, bug #10000sluicebox
2019-06-30SCI32: Extend scaler sanity checks to all SCI32 versionsFilippos Karapetis
Fixes QFG4 bug #10765. It's preferable to have sanity checks in the code, rather than crashing due to invalid draw rectangles from buggy game scripts. It's no use checking which specific interpreter versions had sanity checks and trust the game scripts of the other interpreters. Thus, it's easier and safer to always enable these sanity checks.
2018-12-28SCI32: Add feature detection for plane id baseLars Skovlund
This provides a generic fix for AddScreenItem crashes in early SCI32 floppy games that have previously required individual script patches.
2017-10-06SCI32: Clean up PlaneColin Snover
* Rewrap comments to 80 columns * Clarify comments where possible
2017-08-26SCI32: Fix SFX volume being misapplied to music & speech in some gamesColin Snover
This was happening in games with game scripts that control the master volume themselves by applying the master volume to each channel sent to the kernel, instead of relying on the kernel to manage the master volume for them.
2017-07-07SCI32: Force General MIDI for games that support nothing elseColin Snover
* MGDX has only GM music; * KQ7 1.x's AdLib data is incomplete, so is not usable even though it is partially there Fixes Trac#9789.
2017-06-18SCI: Switch SCI2 games to use Audio32Colin Snover
Upon investigation of Sound code across SCI32 games, it was determined that there are actually (at least) 3 different revisions, not just a single SCI2.1 version. This patch only changes the parts of Sound code that are relevant to the correct use of Audio32. Fixes Trac#9736, Trac#9756, Trac#9767, Trac#9791.
2017-06-09SCI32: Implement kLock & kDoAudio(1) for SCI32Colin Snover
1. Unlocking all resources of a type using a resource ID of -1 is gone in SCI32; 2. Audio locks need to be serialized starting in GK2 for the game's modified kDoAudio(1) call; 3. Audio locks in SCI3 must work more like SSCI, since at least Lighthouse's `BackMusic::fade` method will attempt to unlock audio that was never locked by a script. In SSCI (and now in ScummVM too) this is a no-op; previously in ScummVM, it would remove Audio32's own lock on the audio resource, resulting in a use-after-free; 4. kDoAudio(1) starting in GK2 returns the number of active *not-in-memory* channels being played, not the total number of active channels. Fixes Trac#9675.
2017-04-22SCI32: Add palette code for late SCI2.1mid+ gamesColin Snover
Sometime during SCI2.1mid, the palette manager was changed to save and restore the source palette, and to add in-game gamma correction. Previously, only the vary start and target palettes were saved, and gamma correction was only configurable in SSCI by editing RESOURCE.CFG.
2017-04-21SCI: Improve audio volume & settings sync codeColin Snover
This patch includes enhancements to the ScummVM integration with SCI engine, with particular focus on SCI32 support. 1. Fixes audio volumes syncing erroneously to ScummVM in games that modify the audio volume without user action (e.g. SCI1.1 talkies that reduce music volume during speech playback). Now, volumes will only be synchronised when the user interacts with the game's audio settings. This mechanism works by looking for a known volume control object in the stack, and only syncing when the control object is present. (Ports and planes were researched and found unreliable.) 2. Fixes audio syncing in SCI32 games that do not set game volumes through kDoSoundMasterVolume/kDoAudioVolume, like GK1, GK2, Phant1, and Torin. 3. Fixes speech/subtitles syncing in SCI32 games that do not use global 90, like LSL6hires. 4. Fixes in-game volume controls in SCI32 games reflecting outdated audio volumes when a change is made during the game from the ScummVM launcher. 5. Fixes SCI32 games that would restore volumes from save games or reset volumes on startup, which caused game volumes to be out-of-sync with ScummVM when started. 6. ScummVM integration code for audio sync has been abstracted into a new GuestAdditions class. This keeps the ScummVM- specific code all in one place, with only small hooks into the engine code. ScummVM integrated save/load code should probably also go here in the future. Fixes Trac#9700.
2017-01-12SCI32: "Fix" renderer for PQ4CDColin Snover
PQ4CD and several other games contain a hack in two renderer methods to avoid rendering invalid screen items with zero or negative-dimension target rects. This prevents PQ4CD from crashing during the fifth phase of target practice.
2016-12-19SCI32: Add support for alternate graphics selectorsColin Snover
Used by at least Phantasmagoria 2.
2016-11-04SCI32: Stop digital audio when VMDs open in some SCI2.1 gamesColin Snover
2016-10-20SCI32: Split out detection of features that cross SSCI versionsColin Snover
2016-08-13SCI: Fix pseudo mouse in various SCI1 games like e.g. Larry5Martin Kiewitz
Pseudo mouse was functionality in SCI1+ games, that allowed the user to control the mouse via keyboard cursor keys. This new class only worked, when a tiny difference inside the keyboard driver happened on kMapKeyToDir calls. We previously tried to enable this behavior depending on cursor type, but this didn't work correctly (Larry 5 for example was not detected as such, but had PseudoMouse support).
2015-12-29SCI32: split up SCI2.1 into EARLY/MIDDLE/LATEMartin Kiewitz
- Detection works via signatures (couldn't find a better way) - new kString subcalls were introduced SCI2.1 LATE - kString now has signatures and is split via subcall table - kString fix, so that KQ7 doesn't crash, when starting a chapter - Sci2StringFunctionType removed, because no longer needed
2014-02-18SCI: Make GPL headers consistent in themselves.Johannes Schickel
2012-04-29SCI: Fix for bug #3522046 "Detection of SQ4CD as Windows breaks Music"Filippos Karapetis
Fall back to the DOS soundtracks in Windows CD versions if the user picks a non-General MIDI music device, as the Windows tracks only contain MIDI music
2011-06-20ALL: Remove trailing whitespacesMax Horn
This tries to make our code a bit more compliant with our code formatting conventions. For future use, this is the command I used: git ls-files "*.cpp" "*.h" | xargs sed -i -e 's/[ \t]*$//'
2011-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2010-11-25SCI: Added support for the alternate Windows MIDI soundtracks of the CD ↵Filippos Karapetis
versions of EcoQuest, Jones, KQ5 and SQ4 svn-id: r54476
2010-11-21SCI: Added a heuristic to detect the modified late SCI2.1/SCI3 ↵Filippos Karapetis
kString/kArray kernel functions svn-id: r54398
2010-11-17SCI: lofsa/lofss functionality for SCI3Filippos Karapetis
- Updated detectLofsType() for SCI3 - Cleaned up op_lofsa and op_lofss and updated them for SCI3 svn-id: r54293
2010-07-31SCI: fix lofs autodetectionMartin Kiewitz
makes polish lsl1 work (its game superclass name got translated, so no "Game" object available) - bug #3037194 thx to dam-soft for his patient help svn-id: r51557
2010-07-27SCI: Better fix for bug #3035058 - ECOQUEST demo: Missing subtitlesMatthew Hoops
The demo really uses kGetMessage and not kMessage. We now detect which version of the message function is used. Thanks to Walter for pointing this out. svn-id: r51384
2010-06-10Moved the MoveCountType enum above the GameFeatures class, as it's the only ↵Filippos Karapetis
class using it svn-id: r49561
2010-02-07Split GameFeatures::autoDetectFeature into several methods, one for each featureMax Horn
svn-id: r47962
2010-02-07SCI: Add GameFeatures::getDetectionAddr auxillary methodMax Horn
svn-id: r47961
2010-02-07With the new detection for setCursor, the game object and game ID are no ↵Filippos Karapetis
longer required, which makes some ugly code obsolete. Yay! :) svn-id: r47951
2010-02-07Rewrite detectSetCursorType() so that it works for KQ5 Mac in addition to ↵Matthew Hoops
KQ5 DOS CD. svn-id: r47948
2010-02-03Placed all the game feature detection code in a separate classFilippos Karapetis
svn-id: r47850