aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
AgeCommit message (Collapse)Author
2019-07-22SCUMM: (iMUSE/Amiga) - minor fixesathrxx
- At at least one place in INDY4 the game attempts to send a Roland MT-32 patch to the Amiga driver. This will fail and thus not cause any harm, but I have added a check nonetheless. The original Amiga driver ignores sysex messages that don't have the iMuse manufacturer id 7D. - In INDY4 the iMuse player thinks it has a percussion channel due to the fact that it plays ROL resources. This should also be irrelevant for the actual playback, but I have added a check for that, too.
2019-07-17SCUMM: (iMUSE/Amiga) - Fix compiler warning (#1751)jepael
2019-07-17SCUMM: (iMUSE/Amiga) - fix INDY4 instruments handlingathrxx
FOA Amiga uses 'ROL ' resources (unlike MI2 which has 'AMI ' resources). So our imuse player treated those as MT32 tracks playing on a non-MT32 device and applied GM mapping. Which of course messed up the instruments.
2019-07-17SCUMM: remove unused declarationsathrxx
(several function declarations in imuse_internal.h)
2019-07-17SCUMM: (iMUSE/Amiga) - cleanupathrxx
2019-07-14SCUMM: limit 'Unrecognized base tag' warning to valid casesathrxx
This warning will not only show up if a tag is actually unrecognized but also in cases where the tag is recognized, but the resource size is 0. This happens quite a lot in the Amiga version of MI2 with 'SOU ' tags.
2019-07-14SCUMM: (FM-Towns Audio) remove TODOathrxx
The audio track is not broken. LEC simply didn't make good euphony music tracks for the FM-Towns. There is nothing we can do about that. The TODO implies that someone should mess around with the audio data (change the composition?).
2019-07-14SCUMM: imuse driver directory cleanupathrxx
- move mac, pc speaker and fm-towns ims sound drivers into separate directory (AdLib and MT32/GM drivers are still too entangled with common code to be moved so easily, especially MT32/GM. It would require lots of changes to the common code and possibly to all engines using the MidiDriver class. So I leave that for now.)
2019-07-14SCUMM: (iMuse/Amiga) - improve accuracyathrxx
This fixes the issue that some rhythm instruments didn't receive correct notes. The changes have been limited to the Amiga versions.
2019-07-14SCUMM: hook up Amiga MI2 + INDY4 to new sound driverathrxx
2019-07-14SCUMM: add Amiga iMuse sound driverathrxx
(applies to MI2 and INDY4)
2019-07-14SCUMM: Silence GCC memset() warningsTorbjörn Andersson
Recent GCC versions complain if you memset() a class or struct that contain non-POD data types. Get around that by either initializing the object when created, or by adding a reset() method.
2019-05-27SCUMM: Fix MSVC warningsFilippos Karapetis
- Change float suffix to uppercase - Initialize potentially uninitialized variables - Fix default cases in switch statements
2019-05-25SCUMM: HE: Added some names to basketball U32 commandsEugene Sandulenko
2019-05-05SCUMM: Original V0-V2 flashlight shape and size for MM/Zak (#10947, #10951)Robert Crossfield
2019-05-01COMMON: Replace NEResourceType and PEResourceType with a shared enumCameron Cawley
2019-04-15WINCE: Fix compilationCameron Cawley
2019-03-12SCUMM HE: Bug fix for moonbase stack memory corruptionZhiqi Yin
What: The bug is reproducible in the following ways: 1. quiting the game 2. enter challenge mode state 2, when the game starts move mouse around the menu buttons (choose building or weapons) Observed behavior: In he/wiz_he.cpp:2839, the function failed to return since the stack around variable 'color' was corrupted. The game will crash then. Analysis: Since other function will modify memory area around local variable 'color', the bug shoud be caused by memory overwritten. The memory write happens in this modified file. From the code, it only wants to write a certain amount of pixels. So I found 2 places where more pixels are written. This causes stack memory corruption. Fix: Add checking. If we have written enough pixels then break. Testing: The game UI looks correct. Single player mode game is tested. Bug no longer observable. Tested for both cases mentioned above.
2018-10-02SCUMM: MONKEY2: Skip extra code on FMTOWNS, fixes bug #2223Ben Castricum
2018-08-18SCUMM: Replace use of strdup with Common::StringColin Snover
2018-08-18SCUMM : Add support for European Wii Pajama Sam (EAN3546430138939)Ben Castricum
2018-08-17JANITORIAL: Removing trailing spaces after int castsPaul Gilbert
2018-07-19SCUMM: Add another German Mac version of DOTTAdrian Frühwirth
Fixes Trac#10616.
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.