aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
AgeCommit message (Collapse)Author
2016-12-12SCI32: Adjust transition timingsColin Snover
Transition timings were originally chosen largely by feel in SQ6, as there was little other evidence to determine the correct speed. As additional games started being playable in ScummVM, it became apparent that these speeds were not quite right. Additional adjustments may be needed in the future, but these new timings seem to be somewhat closer to expectations than before.
2016-12-12SCI32: Add workaround for hearts game in Hoyle5Colin Snover
2016-12-12SCI: Ensure bytecode/BWT for "file" op is also printedColin Snover
Learning the bytecode for file op is necessary when creating workaround signatures, as the signature-finding mechanism does not currently ignore line/file instructions.
2016-12-11SCI32: Add workarounds for Hoyle5 Crazy EightsColin Snover
2016-12-11SCI32: Implement List sortColin Snover
Used by Hoyle5. Also includes a tiny amount of cleanup in kAddAfter for consistency with kAddBefore.
2016-12-11SCI32: Add workaround for Hoyle5 startup call to kPlatformColin Snover
Fixes Trac#9665.
2016-12-11SCI32: Add a workaround for kDoSoundPlay for KQ7 demoOmer Mor
2016-12-03SCI: Remove unnecessary duplicate shadowing variableColin Snover
2016-12-03SCI: Remove unnecessary lock in SegManagerColin Snover
2016-12-03SCI: Deduplicate text-reading code in kGetFarTextColin Snover
2016-12-03SCI: Clean up some commentsColin Snover
2016-12-03SCI32: Fix LSL6hires text speed sliderColin Snover
For whatever reason, this game uses a different global for specifying the text speed.
2016-11-20SCI32: Add recursion code to kListFirstTrue and kListAllTrueColin Snover
This change ensures that these kernel calls operate in the same manner that they did in SSCI.
2016-11-20SCI: Improve disassembly outputColin Snover
1. pushi opcode now displays decimal value and selector value (if one exists) in-line 2. lofsa, lofss, and super opcodes now display resolved object/class names 3. Opcode arguments are visually aligned
2016-11-20SCI: Add code-address breakpoints to debuggerColin Snover
2016-11-19SCI32: Add script patch for Shivers room 35170Colin Snover
2016-11-19SCI: Warn more loudly about uninitialised parameter readsColin Snover
Silently returning zero values can cause games to break. e.g. Shivers 1 room 35170 has a script bug where vJoystick::handleEvent makes a super call which causes doVerb to be called a second time with no arguments. In the original game this happened to work because the value already on the stack happened to be 1. In ScummVM this silently (unless VM debug messages were enabled) failed because the uninitialised read value was forced to 0.
2016-11-19SCI32: Add missing updateInfoFlagViewVisible callWillem Jan Palenstijn
I missed the one for varselector sends handled by the secondary loop in op_ret. This fixes #9641.
2016-11-10SCI32: Fix incomplete workaround commentColin Snover
2016-11-10SCI32: Fix GK1 crash when erasing letters in St Louis CemeteryColin Snover
Fixes Trac#9642.
2016-11-04SCI32: Implement kPlayVMDIgnorePalettesColin Snover
Used in Shivers room 35170 when pressing the play button.
2016-11-04SCI32: Stop digital audio when VMDs open in some SCI2.1 gamesColin Snover
2016-11-04SCI32: Allow format strings with missing argumentsColin Snover
SSCI created a fake va_list and passed it to vsprintf, so extra placeholders would just silently end up reading garbage memory.
2016-11-04SCI32: Treat %d as unsigned in kStringColin Snover
At least Shivers has VMDs with resource IDs above 2^15; treating %d as signed means that the wrong filename gets created.
2016-11-02SCI32: Fix missing digital audio playback on save game restoreColin Snover
Fixes Trac#9581.
2016-11-02SCI32: Automate kNumCels workaroundColin Snover
2016-10-27SCI32: Read byte/string array values as signed in SCI2.1early-Colin Snover
KQ7 1.51 writes int16s from the save game catalogue into a Str object, then retrieves byte 0 from the string and compares it to -1. This happens to work out because (1) characters were treated as signed in SCI2.1early and earlier, and (2) int16s in the save game catalogue were little-endian. In SCI2.1mid and later, this trick no longer works because characters are treated as unsigned and get zero-extended instead. Fixes Trac#9632.
2016-10-27SCI32: Fix typosColin Snover
Thanks @OmerMor.
2016-10-27SCI32: Fix LSL6hires script bugColin Snover
Fixes Trac#9612.
2016-10-26SCI: Rename hexDigitToInt to indicate it's intentionally brokenWillem Jan Palenstijn
2016-10-25SCI: Implement SSCI bug in hexadecimal escape sequencesColin Snover
In SSCI, strchr is called against a hex string with a duplicate 0 ("01234567890abcdef") to determine the decimal value of hex digits, which means the values A-F are incorrectly interpreted as 11-16 instead of 10-15. All versions of SSCI with support for hexadecimal escape sequences in messages (starting somewhere around Feb 1993) are buggy. The native save/load dialog of SCI32 relies on this defect to render the up and down arrows of the game selector. Fixes Trac#9582.
2016-10-20SCI32: Fix wrong value passed to updateInfoFlagViewVisibleColin Snover
updateInfoFlagViewVisible accepts a property index, not a selector ID. Fixes Trac#9583.
2016-10-20SCI32: Split out detection of features that cross SSCI versionsColin Snover
2016-10-20SCI32: Fix zero-offset exportsColin Snover
Exports with a zero offset are supposed to point to the start of the code block in the script hunk, but they were being ignored. This may also apply to SCI1.1 games, but until that can be verified, this fixes the zero-offset in only SCI32 games for now.
2016-10-16SCI32: Fix crash when clicking around the arterial blockage in SQ6Colin Snover
Thanks @hpvb for the report. Fixes Trac#9615. Closes #850.
2016-10-16SCI32: Fix workaround commentColin Snover
2016-10-15SCI32: Fix crash clicking quit button during LSL6hires creditsColin Snover
2016-10-15SCI32: Fix crash in LSL6hires endingColin Snover
Fixes Trac#9613.
2016-10-15SCI32: Fix kPalVary(SetVary) in SCI2.1early gamesColin Snover
Game scripts pass an extra argument which is never used in SSCI. This happens e.g. when warping from room 620 to room 860 in LSL6hires. Adding a signature for kPalVarySetVary for SCI2.1early games only does not work because KQ7 1.51 is detected as SCI2.1early but the interpreter includes kPalVary code that matches SCI2.1mid. Fixes Trac#9611.
2016-10-14SCI: Ensure export breakpoints always trigger on export callsColin Snover
Previously, export calls to non-existing functions would act like there was never an export call, and the breakpoint would never be triggered.
2016-10-14SCI32: Fix slow transitions in SQ6Colin Snover
2016-10-14SCI: Make -propDict- unique for each classWillem Jan Palenstijn
Previously, this was using the offset of the property dict inside the script. However, this isn't unique. For example, SQ6's DPath and PolyPath classes both have their property dict at offset 8 of their respective scripts. This would break Obj::isMemberOf. Closes #846.
2016-10-12SCI: Add modified workaround for Simbani bridge room for GOGWillem Jan Palenstijn
The GOG version comes with a fan patch that uses rm470::name to store a timer to rate-limit rm470::doit. This breaks the workaround detection since that uses the name field.
2016-10-11SCI32: Fix garbage collection of objects stored in IntArraysColin Snover
2016-10-09SCI: Fix memory leakColin Snover
2016-10-09SCI32: Clarify some identifiersColin Snover
transparentColor -> skipColor displace -> origin scaledWidth -> xResolution scaledHeight -> yResolution
2016-10-09SCI32: Change storage type of int16 arrays to hold reg_ts insteadColin Snover
Memory references and integers in SSCI are both 16-bit numbers, so game scripts frequently (incorrectly) use an IntArray instead of an IDArray for holding references. Since references in ScummVM are 32-bit reg_ts, IntArray entries must be large enough to hold reg_ts in order to be compatible with game scripts that store references in integer arrays. The alternative solution is to find and patch all incorrect use of IntArray across all games. This is possible, but a bit risky from a save game stability perspective, since incorrect IntArray usage is sometimes not apparent until well after the array is instantiated (like GK1's global interview array). This change invalidates existing SCI32 save games.
2016-10-09JANITORIAL: Remove trailing spacesEugene Sandulenko
2016-10-08SCI: Release SCI music mutex earlier in reconstructPlayListWillem Jan Palenstijn
This avoids a deadlock where the main thread (via reconstructPlayList) tries to acquire the mixer lock (in soundPlay) while holding the SCI music lock, and the audio thread is holding the mixer lock and tries to acquire the SCI music lock (in miditimerCallback). Bug #6691.
2016-10-05SCI32: Fix uninitialized read when starting a new game in LSL6hiresColin Snover