aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
AgeCommit message (Collapse)Author
2017-07-30SCI32: Add script patch for PQ4 floppy computer issueMartin Kiewitz
This fixes buggy PQ4 system script code and makes entering user and password on the police computer not trigger a signature mismatch anymore. Script code was fixed by Sierra in PQ4 CD.
2017-07-27VIDEO: Allow setting the mixer sound type used to play audio tracksBastien Bouclet
2017-07-26SCI32: Reduce priority of PATCHES directory for Phant2Colin Snover
For whatever reason, Sierra decided that the final patches would go in the root directory for Phant2. The game disc includes (different, older) patches for many of the same resources in the PATCHES directory, and loading those instead makes the game not always work quite right.
2017-07-26SCI32: Add kMinimize to stop unmapped function warningColin Snover
2017-07-26SCI32: Patch spin loop in Phant2 puzzleColin Snover
2017-07-26SCI32: Dummy SCI3 bitmap calls to discover possible usageColin Snover
Non-use of these kernel calls was assumed by reviewing script disassembly by SV, but it turns out that SV was not picking up script patches correctly in SCI3 games, so this data is no longer considered reliable.
2017-07-26SCI32: Patch bad version retrieval in Phant2Colin Snover
2017-07-26SCI32: Fix truncated save game names in Phant2Colin Snover
Phant2 creates save game names that append "<PROTECTED>" at the end of the game name, with an assumption that the game name is always exactly 36 characters long. This seems to be OK with other games too (tested GK1, SQ6, and Torin).
2017-07-26SCI32: Fix lofsa/lofss of strings in SCI3 disassemblyColin Snover
2017-07-24SCI32: Promote MGDX to ADGF_TESTINGColin Snover
2017-07-24SCI32: Add music volume UI sync for MGDXColin Snover
2017-07-24SCI32: Fix MGDX platform in detection tablesColin Snover
2017-07-24SCI32: Match 4-language MGDX extra save game dataColin Snover
2017-07-24SCI32: Use dynamic selector in QFG4 trap script patchColin Snover
2017-07-24SCI32: Deduplicate volume reset script patches & add to MGDXColin Snover
2017-07-24SCI32: Add deflang (default language) kGetConfig key for MGDXColin Snover
2017-07-24SCI32: Fix ResourceManager::changeAudioDirectoryColin Snover
Fixes Trac#9577.
2017-07-23SCI32: Emit a warning when an audio resource cannot be foundColin Snover
Refs Trac#9976.
2017-07-23SCI: Blacklist certain audio map patch filesColin Snover
Refs Trac#9976.
2017-07-23SCI: Keep audio maps out of the LRU cacheColin Snover
2017-07-23SCI32: Fix explicit mouse position changesColin Snover
This was broken by 9f33f2b3df22a26314dbb74173f49bc930c7a1f9.
2017-07-23SCI32: Add missing method documentationColin Snover
2017-07-23SCI32: Stop throttling of kFrameOut during interactive VMD playbackColin Snover
Refs Trac#9974, Trac#9975.
2017-07-23SCI32: Make stop flag condition more explicitColin Snover
2017-07-23SCI32: Check for stop events before rendering the next frameColin Snover
This should make things slightly more responsive and avoids unnecessary rendering of frames that are just going to disappear in a moment.
2017-07-23SCI32: Improve performance when flushing events during video playbackColin Snover
Calling through EventManager::getSciEvent to flush events is pretty inefficient and created stalls that lead to dropped frames during the chapter 7 chase in Phantasmagoria 1. If necessary, performance could be improved further by extending Common::EventManager to expose SDL_FlushEvents, but this seems to finish in 0-1ms so should be OK for now. Refs Trac#9974, Trac#9975.
2017-07-23SCI: Minor cleanups in kGetEventColin Snover
2017-07-23SCI32: Fix hot rectangle eventsColin Snover
This fixes delayed mouse cursor updates during the chase scene in Phant1. Refs Trac#9975.
2017-07-23SCI: Resolve offset names when disassembling object methodsColin Snover
2017-07-23SCI32: Avoid extra cursor paints when the cursor has not movedColin Snover
2017-07-23SCI32: Don't warp the mouse when it doesn't need to be warpedColin Snover
2017-07-23SCI32: Detect multi-disc audio by RESSCI files instead of RESAUDColin Snover
If a user fails to rename audio files in the required manner when copying them, detecting multi-disc audio by looking for a renamed audio file does not work very well. Looking at RESSCI.00n is a better choice, though this is not completely valid since e.g. Rama 1.0 US has only one RESOURCE.SFX volume which its installer copies to the hard drive, so a little more work will need to be done in the future to find and fix these kinds of edge cases. Refs Trac#9976.
2017-07-18SCI32: Fix kIsOnMe crashes in LSL7 About screenColin Snover
2017-07-17SCI32: Promote LSL7 to ADGF_TESTINGColin Snover
2017-07-17SCI32: Destroy audio streams in Audio32 using DisposeAfterUse flagColin Snover
Since Resource::makeStream returns a MemoryReadStream which will not attempt to free the resource memory, it is fine to always dispose those streams and get rid of the separate resourceStream property, which was a holdover from some past WIP resource design which no longer exists.
2017-07-17SCI32: Fix stream leaks in Audio32/SOLStreamColin Snover
makeSOLStream was leaking the SeekableSubReadStream object it creates itself if it was not called with DisposeAfterUse::YES. That substream is an implementation detail which should not rely on the caller to be destroyed.
2017-07-17SCI32: Add workaround for Torin/LSL7 running with subtitles onlyColin Snover
Since these later SCI32 games weren't really designed to work with subtitles-only message mode, if this doesn't work consistently or breaks the games a lot in other places, the subtitles-only message type could possibly be implemented in some other way, like by messing with the game's speech volume global instead.
2017-07-17SCI32: Remove ENABLE_SCI3_GAMES ifdef, now that they are supportedColin Snover
2017-07-17SCI32: Add guest additions support for LSL7Colin Snover
2017-07-17SCI32: Fix playback of looped audioColin Snover
This fixes at least Lighthouse audio 808 in room 270, and audio 801 in room 810.
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.