aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
AgeCommit message (Collapse)Author
2017-07-16SCI32: Remove duplicate callColin Snover
2017-07-16SCI32: Fix wrong GK1 sound volume syncColin Snover
Fixes Trac#9793.
2017-07-16SCI32: Improve GK1 narrator speech syncColin Snover
2017-07-16SCI: Clarify Tab character & modifier workarounds in GfxMenuColin Snover
2017-07-16SCI: Fix kMenuSelect to understand control charactersColin Snover
In b4c0be8b42d63cbf3c808be1a94839483f674ce9 keyboard events were adjusted to send control characters to game scripts, which matches how keyboard input works in SSCI. Unfortunately this broke games using kMenuSelect because that kernel code was not expecting to receive control characters. Here is an amended list of known types of keyboard shortcuts, for future reference: * All games with text inputs (Ctrl+C clears text boxes) * Most games using MenuBar, like QFG1EGA (Ctrl+P pauses the game, Tab or Ctrl+I show inventory) * QFG1VGA (Ctrl+S shows stats) * Torin (Ctrl+N, Ctrl+O, Ctrl+S, etc. activate menu commands) * LSL1VGA & LSL3 (Ctrl+Alt+X to bypass age check) * Most in-game debuggers (Alt+T for teleport) The shortcut handling code is still not 100% accurate since there are some edge cases that are not implemented (e.g. in DOS/SSCI, Shift+Ctrl+<key> usually sends the same key information as Ctrl+<key>, but not if <key> is Tab), but it should now be working in a consistent and rational manner for end-users.
2017-07-16SCI: Fix control character keyboard eventsColin Snover
Used by: * All games with text inputs (Ctrl+C clears text boxes) * QFG1VGA (Ctrl+S shows stats) * Torin (Ctrl+N, Ctrl+O, Ctrl+S, etc. activate menu commands) The branch that used to shift control keys for SCI versions <= SCI_VERSION_1_MIDDLE was bogus; history indicates it was intended to be used to fix backends that sent control characters when Ctrl+Alt were used together, but that case is already handled by the Alt-checking code just prior to that code. Games expect to receive control characters only when Ctrl is the only active modifier, and this seems to be consistent across all versions of SCI engine from SCI0 all the way through at least SCI2.1. Fixes Trac#6703, Trac#9837.
2017-07-15SCI32: Add patch for mismatched PointSoft Torin heap 20700Colin Snover
Refs Trac#9776, Trac#9864. Fixes Trac#9797.
2017-07-15SCI: Stop double-initialization of SCI0/1 objectsColin Snover
These objects should have been initialized only during the first pass. Double-initialization does not cause any visible problem problem during normal operation (mostly it just causes memory waste by making Object::_baseVars/_baseMethod double up their data), but could have silently allowed games to receive bogus data for an out-of-bounds property or method index, instead of raising an error.
2017-07-15SCI: Fix up Object::_baseMethod implementationColin Snover
1. In SCI0/1, selectors and offsets in the method block are stored contiguously (all selectors, then all offsets), with a null separator between the two runs. All the later versions of SCI instead interleave selectors & offsets. Since these values are already being copied into a new array anyway, code for reading method selectors/offsets is now simplified by interleaving this data when it is written into _baseMethod for SCI0/1, so the same equation for retrieving method selectors/offsets can be used across all SCI versions. 2. In SCI1.1-2.1 branch, the method count was being copied into the first entry of the array, which meant that SCI1.1-2.1 had extra code for dealing with the fact that the first entry was not an entry. This has been fixed, and the extra code removed. 3. Data was being overread into _baseMethod in all games SCI0-2.1. (SCI0/1 had an extra magic value of 2, and SCI1.1-2.1 had an extra magic value of 3). Reviewing history, it's not clear why this happened, other than that it appears to have been introduced at 7b0760f1bc5c28abcede041a6e3930f84ff3d319. My best guess is that this was a confusion between byte count and record count, where the intent was to read an extra 2 bytes for the null separator in SCI0/1, but it actually read 2 records instead. (I do not have a guess on why SCI1.1 ended up with a 3.) This overreading has been removed.
2017-07-13SCI32: Add detection entry for Phantasmagoria FR 1.100.000Colin Snover
Fixes Trac#9910.
2017-07-13SCI32: Patch out bad rat view init code in PhantasmagoriaColin Snover
Fixes Trac#9957.
2017-07-13SCI32: Ignore chest view palette in PhantasmagoriaColin Snover
This fixes the 3-frame glitch that was also present in the original game when moving in the chapel from room 6500 to 6400 in chapter 7. Fixes Trac#9788.
2017-07-13SCI32: Move priority comparison of ScreenItems into its own functionColin Snover
Rendering bugs in ScummVM are often caused by buggy game scripts relying on the last ditch sort, which is not the same in ScummVM as in SSCI (since the SSCI last ditch sort relies on a different memory architecture and is super buggy). However, these bugs do not show up very frequently these days, so it is easy to forget all the places that need to be checked when debugging a rendering problem that appears to be caused by sorting failure. This commit breaks out the last ditch comparison formerly in Plane::calcLists to hopefully make it more visible to future programmers. Refs Trac#9957.
2017-07-13SCI32: Stop optimising palette mergesColin Snover
While this optimisation helped to reduce unnecessary palette updates in KQ7, it broke Phant1, which relies on changes to index 255 in the source palette causing palette invalidation. Refs Trac#9788.
2017-07-13SCI32: Add workaround for Phant1Colin Snover
2017-07-09SCI: Fix detected name for lsl6-cdTarek Soliman
2017-07-09SCI32: Fix kObjectIntersectWillem Jan Palenstijn
It was using SCI16 calls to get the NowSeenRects. This fixes #9855.
2017-07-07SCI32: Implement kShowStyle HShutterOut transitionColin Snover
This transition style was used when exiting the asteroids minigame in PQ4, though it appears likely that this was an error in the original game script since it does not actually do anything in the context that it is used (neither here nor in the original interpreter). Still, this code is already written, and it fixes the crash, so in it goes. Fixes Trac#9856.
2017-07-07SCI32: Add workarounds for PQ4Colin Snover
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-07-07SCI32: Fix missing music in MGDXColin Snover
GM patch data is the same across all SCI32 games.
2017-07-07SCI: Fix audio_list debug command engine version infoColin Snover
2017-07-06SCI32: Fix bad palette entries when built without USE_RGB_COLORColin Snover
This is only a problem for the Windows games that need some palette entries to be ignored.
2017-07-06SCI32: Refactor DuckPlayer to use common video playback codeColin Snover
This lets DuckPlayer support configurable black-lined video and configurable high-quality scaling.
2017-07-06SCI32: Refactor Video32 code to reduce code & feature duplicationColin Snover
2017-07-06SCI32: Improve playback quality of SEQ videosColin Snover
2017-07-06SCI32: Improve kPlayVMD renderingColin Snover
1. Added a new game option for linear interpolation when scaling overlay-mode video in ScummVM builds with USE_RGB_COLOR; 2. Implemented SCI2.1-variant of the VMD player renderer (fixes Trac#9857), which bypasses the engine's normal rendering pipeline; 3. Improved accuracy of the SCI3-variant of the VMD player by writing HunkPalettes into the VMD's CelObjMem instead of submitting palettes directly to GfxPalette32.
2017-07-06SCI32: Improve kShowMovieWin (AVI) renderingColin Snover
1. Added a new game option for linear interpolation when scaling video in ScummVM builds with USE_RGB_COLOR; 2. 8bpp videos that put black in a palette index other than 0 (KQ7) should now always render correctly without the earlier game-specific workarounds which did not work very well; 3. Data from game scripts regarding video size and position are now ignored, since games always just try to show videos in the middle of the screen, but frequently get this a little bit wrong, causing either bad aspect ratios or off-center videos; 4. Builds without USE_RGB_COLOR support will not crash when attempting to play >8bpp AVIs, like those from KQ7 2.00b. Fixes Trac#9843, Trac#9762.
2017-07-06SCI32: Remove useless callColin Snover
The show list is already cleared by showBits so it does not need to be cleared a second time.
2017-07-06SCI32: Work around bogus palette entries in select Windows gamesColin Snover
2017-07-06SCI32: Remove magic numbers in HunkPaletteColin Snover
2017-07-06SCI32: Remove unused method declarationColin Snover
2017-07-06SCI32: Update mouse position for rendering in all frameOutsColin Snover
2017-07-06SCI32: Add workaround for SQ6Colin Snover
2017-07-06SCI32: Allow skipping SEQ animationsColin Snover
In SSCI, SEQ animations cannot be skipped.
2017-07-06SCI32: Centralise OSystem screen updatesColin Snover
2017-07-06SCI32: Stop setting unused palette timestamp propertyColin Snover
2017-07-06SCI32: Speed up & deduplicate palette submission codeColin Snover
2017-07-01SCI: Fix typo in pq3 script patchMartin Kiewitz
2017-07-01SCI: Add script patch for pq3, points for giving locket (bug #9862)Martin Kiewitz
This script patch will fix not getting 10 points for giving the locket to Marie.
2017-06-24SCI32: Replace Torin dragon's cave patch with a better patchColin Snover
The previous script patch for this bug was much simpler and targeted the bad code that hangs, instead of the bad code that caused the unexpected flag setting, but this caused glitches in the dragon's cave that couldn't really be fixed since different animations relied on some common code for positioning Boogle. So, now, this more complicated patch fixes the fast-forward code in the seraglio to set Boogle's in-the-bag flag, which is what the dragon's cave needs in order to not hang when worming Boogle. Also, because this patch now targets the code that caused the bad flag state, instead of the code that hangs on the bad state, any save game in the dragon's cave with the bag flag setting will need to be fixed by exiting and re-entering the dragon's cave. Refs Trac#9836.
2017-06-24SCI32: Fix Boogle warp glitch caused by previous game patchColin Snover
Refs Trac#9836.
2017-06-23SCI32: Add patch for game script bug in Torin dragon's caveColin Snover
Fixes Trac#9836.
2017-06-19SCI32: Create Torin-specific save game count limitation removerColin Snover
Fixes Trac#9840.
2017-06-19SCI32: Add workaround for invalid kFrameOut call in PQ4Colin Snover
Fixes Trac#9848.
2017-06-19SCI32: Add workaround for uninitialised read in PQ4Colin Snover
Fixes Trac#9847.
2017-06-19SCI32: Add workaround for invalid kPalVarySetStart call in PQ4Colin Snover
Fixes Trac#9845.
2017-06-18SCI32: Remove Windows platform from GK1 GermanColin Snover
This entry was added by a batch change operation in f7a72c897a9657320ccd6a32873b364f77412e98, but the German version of GK1 does not support Windows.
2017-06-18SCI32: Forward OLDDPCM8 parameter instead of using an if-elseColin Snover
Thanks @OmerMor for pointing out this improvement.
2017-06-18SCI: Fix looping of sounds that are not initialized yetColin Snover
This fixes at least the character selection screen in QFG4CD, where the sound for the torches is supposed to loop, but wasn't because kDoSoundSetLoop would bail out before setting the loop property on the soundObj.