aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
AgeCommit message (Collapse)Author
2018-07-02SCUMM: Clarify workaround for Venice music in Indy 3 FMTOWNSAdrian Frühwirth
2018-06-23SCUMM: Workaround erroneous AKC_JUMP in German SPY Fox 3Sven Meier
Fixes Trac#3813 and makes this version of the game completable.
2018-06-06SCUMM: Fix recent commit to compile under all circumstancesAdrian Frühwirth
2018-06-06SCUMM: Work around distorted speech on submarine in Indy4Adrian Frühwirth
The speech sample at VCTL offset 0x76ccbca ("Hey you!") which is used when Indy gets caught on the German submarine seems to not be a VOC but raw PCM s16be at (this is a guess) 44.1 kHz with a bogus VOC header. To work around this we skip the VOC header and decode the raw PCM data. Fixes Trac#10559
2018-06-04SCUMM: Remove unnecessary space.Torbjörn Andersson
2018-06-03SCUMM: Improve 'imuse play' debugger command error handlingAdrian Frühwirth
This commit introduces the following (seemingly non-invasive) changes to make the 'imuse play' debugger command more useful (i.e. don't crash when trying to load the wrong kind of (sound) resource. * ScummEngine::readSoundResource() Instead of fatally error()'ing upon hitting a non-sound resource type, e.g. a room header (0x524d4844 aka RMHD), we now only issue a warning(). This enables the already existing dead code which properly returns 0 (aka no resource loaded). * ResourceManager::validateResource() Instead of fatally error()'ing upon hitting an illegal glob type we now only issue a warning() and return false (also existing dead code). All methods calling validateResource() check its return value so this seems like the right thing to do anyway. * ScummDebugger::Cmd_IMuse() Instead of directly calling ensureResourceLoaded() we now call getResourceAddress() instead (which in turn calls ensureResourceLoaded() and handles other edge cases) and only attempt to play a sound if the returned pointer actually is valid. Fixes Trac#10527.
2018-06-01SCUMM: Ensure pointer returned by getResourceAddress() is usableAdrian Frühwirth
In some cases the pointer returned is used directly without further error checking. As most instances already assert() in this case this commit simply adds asserts where missing and deemed appropriate.
2018-05-30SCUMM: HE: Mark Bink as engine dependencyEugene Sandulenko
2018-05-28Merge pull request #1187 from bgK/detection-refactor-unknownBastien Bouclet
ENGINES: Return unknown game variants with the list of detected games
2018-05-21SCUMM: Fix wrong comment about iMUSE digital variableAdrian Frühwirth
2018-05-20JANITORIAL: Remove trailing whitespaceAdrian Frühwirth
2018-05-10SCUMM: Improve autosave handlingAdrian Frühwirth
v5+ scripts can request saving/loading of savegames, this type of savegame is internally called a "temporary" savegame (_saveStateTemporary == true) which is invisible to the user (I'm not sure whether this is by design or not). Currently the savegame handling in scummLoop_handleSaveLoad() doesn't distinguish between such temporary savegames and normal autosaves and unconditionally resets _lastSaveTime (even after loading). This has the unwanted side effect of potentially delaying the creation of normal autosaves which are supposed to be created in accordance with the autosave period setting in the GUI. This commit makes sure that _lastSaveTime only gets updated if and only if saving a (non-temporary) autosave.
2018-05-10ENGINES: Merge GameDescriptor and DetectedGameBastien Bouclet
2018-05-10ENGINES: Set the GameDescriptor decription in the constructorBastien Bouclet
2018-05-10ENGINES: Turn GameDescriptor into a simple structBastien Bouclet
2018-05-10ENGINES: Change MetaEngine::listSupportedGames to return plain game descriptorsBastien Bouclet
2018-05-10ENGINES: Change MetaEngine::findGame to return a plain game descriptorBastien Bouclet
2018-05-10ENGINES: Add unknown game variants to the game detector resultsBastien Bouclet
2018-05-07SCUMM: Remove superfluous 'else' in IMuseInternal::ImSetTrigger()Adrian Frühwirth
Both means to calculate `diff` are essentially equal because wraparound of unsigned integers is well-defined and does what the 'else' branch is simulating manually. Because of this, gcc complains when compiling with -Wduplicated-branches.
2018-05-07SCUMM: Simplify clampCameraPos() using CLIPAdrian Frühwirth
2018-05-05ALL: Use CLIP to clip volumesAdrian Frühwirth
2018-05-01SCUMM: Protect autosave (slot 0) from deletion/overwritingAdrian Frühwirth
2018-04-29ENGINES: Show the unknown Game dialog only when the detector is launched by ↵Lothar Serra Mari
the Add Game feature
2018-04-19JANITORIAL: Fix whitespaceAdrian Frühwirth
2018-04-07ALL: Load savegame thumbnail only when necessaryAdrian Frühwirth
This commit introduces the following changes: 1. Graphics::loadThumbnail() Now returns a boolean and takes a new argument skipThumbnail which defaults to false. In case of true, loadThumbnail() reads past the thumbnail data in the input stream instead of actually loading the thumbnail. This simplifies savegame handling where, up until now, many engines always read the whole savegame metadata (including the thumbnail) and then threw away the thumbnail when not needed (which is in almost all cases, the most common exception being MetaEngine::querySaveMetaInfos() which is responsible for loading savegame metadata for displaying it in the GUI launcher. 2. readSavegameHeader() Engines which already implement such a method (name varies) now take a new argument skipThumbnail (default: true) which is passed through to loadThumbnail(). This means that the default case for readSavegameHeader() is now _not_ loading the thumbnail from a savegame and just reading past it. In those cases, e.g. querySaveMetaInfos(), where we actually are interested in loading the thumbnail readSavegameHeader() needs to explicitely be called with skipThumbnail == false. Engines whose readSavegameHeader() (name varies) already takes an argument loadThumbnail have been adapted to have a similar prototype and semantics. I.e. readSaveHeader(in, loadThumbnail, header) now is readSaveHeader(in, header, skipThumbnail). 3. Error handling Engines which previously did not check the return value of readSavegameHeader() (name varies) now do so ensuring that possibly broken savegames (be it a broken thumbnail or something else) don't make it into the GUI launcher list in the first place.
2018-03-28SCUMM: Mark methods as overrideEugene Sandulenko
2018-03-24SCUMM: Fix interrupting speech not working with AZERTY keyboardThierry Crozat
On my AZERTY keyboard the period is obtained using SHIFT + ; and the code checking the PERIOD keycode and no modifier was failing on both account. The manual for my French DOTT mentions the period key, but I have not actually checked how it worked with the original executable and if using the semicolon key without shift or using the colon key (which would be the period key on a English-US layout) works.
2018-03-12GUI: Remove the ThemeItem draw queuesBastien Bouclet
Drawing nows happens directly when the Dialog or Widget draw methods are called. This makes it easy to debug why a particular low level draw method was called, by inspecting the call stack. This replaces the notion of "buffering" by two independant ways to control what is drawn and where: - The active layer is used to select whether the foreground or background part of the dialogs are rendered by the draw calls. - The active surface is used to select if the draw calls affect the back buffer or the screen. The foreground layer of the active dialog is drawn directly to the screen. Its background layer is drawn to the back buffer. This way widgets can restore the back buffer in order to update without having to redraw the dialog's background. Dialogs lower in the dialog stack are drawn entirely to the back buffer.
2018-03-12SCUMM: MM V0: Fix regression from 038b3b178939f1bcc6714eda1b88c3e80e787c02 ↵Robert Crossfield
and comment/cleanup
2018-02-04JANITORIAL: Fix code formattingEugene Sandulenko
2018-02-04SCUMM HE: Use Miles AdLib drivernukeykt
2018-02-01Revert "SCUMM: Check for and flag demos correctly"Eugene Sandulenko
There are too many regressions.
2018-01-31SCUMM: Fix compilation failure when DISABLE_TOWNS_DUAL_LAYER_MODE is definedColin Snover
2018-01-31SCUMM: Rename iMUSE save/load function to avoid confusing function hidingColin Snover
2018-01-31SCUMM: Check for and flag demos correctlyHenrik "Henke37" Andersson
Rewrote the detection matching to use the extra field like the other two. This requires extensive testing due to touching code shared for a lot of games and being sensitive to individual versions of games.
2018-01-31SCUMM: Remove variable shadowingColin Snover
2018-01-31SCUMM: Fix compilation failureColin Snover
2018-01-31SCUMM: Fix warning (it generates another one in common/ though)Eugene Sandulenko
2018-01-31COMMON: Move VER macro for serializer into common codeColin Snover
2018-01-31SCUMM: Replace UB-triggering serialization code with Common::SerializerColin Snover
Fixes Trac#10342.
2018-01-31SCUMM: Fix stack overflow initializing localsColin Snover
This happens when clicking on the triangular button in room 27 in The Dig. There are probably several other places where this overflow happens, since there are several different `int args[16]` in the code (and many more `int args[` of various sizes, not all of which are at least NUM_SCRIPT_LOCAL).
2018-01-31SCUMM: Fix stack overflow initializing localsColin Snover
This happens at least when trying to right click on the motorcycle at the start of Full Throttle.
2018-01-31SCUMM: implement lipsync for v7 gamesAdrian Frühwirth
2018-01-31SCUMM: really implement lipsyncGiovanni Bajo
It looks like the code was there, but it was never fully implemented because _curSoundPos was never being incremented. Experimentally, it looks like it works if it is a 60FPS counter.
2018-01-27GUI: Remove Dialog::markAsDirty to expose full GUI redrawsBastien Bouclet
2017-12-22SCUMM HE: Add early version of Let's Explore the Farm with Buzzy.Kirben
2017-12-01SCUMM: Fix array overflow writing var when no current script is setColin Snover
This situation is triggered normally when _currentScript is 0xFF, but it could potentially also happen if _currentScript is some other number >= NUM_SCRIPT_SLOT, so the check is a bit more conservative than it might appear to need to be.
2017-12-01SCUMM: Fix signed integer overflow reading default v70HE cursorColin Snover
2017-12-01SCUMM: Fix buffer overflow reading default v70HE cursorColin Snover
2017-12-01SCUMM: Fix possible return of garbage valuesColin Snover