aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
AgeCommit message (Collapse)Author
2017-04-23SCI32: Add workarounds for RAMAColin Snover
2017-04-23SCI32: Add workarounds for LighthouseColin Snover
2017-04-23SCI32: Put Lighthouse restart game in restart save slotColin Snover
2017-04-23SCI32: Fix call to kFileIOIsValidDirectory in RAMAColin Snover
2017-04-22SCI: Avoid crashing when disassembling a call with a bad objectColin Snover
lookupSelector will raise an error if the passed object ID is invalid.
2017-04-22SCI: Improve message when crashing due to a bad selectorColin Snover
2017-04-22SCI: Display class names in disassemblyColin Snover
2017-04-22SCI: Remove #undef for a macro that does not existColin Snover
2017-04-22SCI32: Implement support for QFG4 autosaveColin Snover
2017-04-22SCI32: Add workarounds & patches for QFG4Colin Snover
2017-04-22SCI: Fix whitespace errorsColin Snover
2017-04-22SCI: Fix typo in debug messageColin Snover
2017-04-22SCI32: Fix bad kPointSize implementationColin Snover
Fixes text scaling gone mad in Phant2.
2017-04-22SCI32: Fix kStringFormat signaturesColin Snover
2017-04-22SCI: Accept 32-bit values to reg_t::incOffsetColin Snover
This fixes bad variable relocation in Phant2 causing the game to crash when reading object names.
2017-04-22SCI32: Provide more detail in console when a save game fails checksColin Snover
2017-04-22SCI32: Make version 41 the first supported save game versionColin Snover
Save games created by earlier versions of ScummVM are prone to having subtle graphics problems or other corruption caused by incomplete save/load code.
2017-04-22SCI32: Add palette code for late SCI2.1mid+ gamesColin Snover
Sometime during SCI2.1mid, the palette manager was changed to save and restore the source palette, and to add in-game gamma correction. Previously, only the vary start and target palettes were saved, and gamma correction was only configurable in SSCI by editing RESOURCE.CFG.
2017-04-22SCI: Fix compilation when SCI32 is disabledColin Snover
2017-04-22SCI: Do not sync objects when saving gamesColin Snover
Commit 5de2668939a6735da2b3438b7c586fc185791ef8 silently changed behaviour from running this code only when restoring a game, to running all the time, in an apparent copy-paste error.
2017-04-22SCI: Improve comments in GuestAdditionsColin Snover
2017-04-22SCI32: Add workaround for SQ6 invalid read after a failed save game restoreColin Snover
2017-04-22SCI32: Fix infinite recursion when loading invalid save from launcherColin Snover
2017-04-22SCI32: Fix launcher load for ShiversColin Snover
2017-04-22SCI: Implement delayed restore for SCI32 and move implementations to ↵Colin Snover
GuestAdditions
2017-04-22SCI32: Remove original save/load option from games without ScummVM save ↵Colin Snover
integration
2017-04-22SCI: Move ScummVM kernel calls to 0xe0Colin Snover
2017-04-22SCI: Clean up unnecessary delayed restore flagsColin Snover
_delayedRestoreGame is always set and cleared at the same time as _delayedRestoreGameId, and _delayedRestoreFromLauncher is written but never read.
2017-04-22SCI: Move ScummVM save/restore to GuestAdditions and reimplement for SCI32Colin Snover
2017-04-21SCI: Improve audio volume & settings sync codeColin Snover
This patch includes enhancements to the ScummVM integration with SCI engine, with particular focus on SCI32 support. 1. Fixes audio volumes syncing erroneously to ScummVM in games that modify the audio volume without user action (e.g. SCI1.1 talkies that reduce music volume during speech playback). Now, volumes will only be synchronised when the user interacts with the game's audio settings. This mechanism works by looking for a known volume control object in the stack, and only syncing when the control object is present. (Ports and planes were researched and found unreliable.) 2. Fixes audio syncing in SCI32 games that do not set game volumes through kDoSoundMasterVolume/kDoAudioVolume, like GK1, GK2, Phant1, and Torin. 3. Fixes speech/subtitles syncing in SCI32 games that do not use global 90, like LSL6hires. 4. Fixes in-game volume controls in SCI32 games reflecting outdated audio volumes when a change is made during the game from the ScummVM launcher. 5. Fixes SCI32 games that would restore volumes from save games or reset volumes on startup, which caused game volumes to be out-of-sync with ScummVM when started. 6. ScummVM integration code for audio sync has been abstracted into a new GuestAdditions class. This keeps the ScummVM- specific code all in one place, with only small hooks into the engine code. ScummVM integrated save/load code should probably also go here in the future. Fixes Trac#9700.
2017-04-18SCI: Fix handling of buggy SCI0 export tablesColin Snover
The previous fix for this bug was incorrect; it only happened to work because of another bug: the number of exports was being read incorrectly (reading the byte size of the export block, not the number of exports), so the validation check for the export number always passed. Then, the "small" offsets that were seen were actually either invalid reads into the header of the next block in the script (KQ4), or reads into the bad first export table which contained an unfilled offset (Camelot). Once the incorrect number of exports was fixed, the previous "fix" broke in KQ4 because the export number validation started to work correctly and the first export table does not have enough entries (needs 2, has 1). This patch fixes the bug by using the last export table in SCI0 scripts instead of the first export table. (This does not affect most scripts, since only the buggy scripts have more than one export table.) Fixes Trac#9731.
2017-03-30SCI32: Check for game aborts in all kList iteration methodsColin Snover
This fixes a use-after-free in GK2 when restoring a second save game, when the List reg_t is still considered valid but the List has moved due to a partial game restore.
2017-03-30SCI: Add clarifying comment to op_restColin Snover
2017-03-30SCI: Stop getCurrentCallOrigin from mutating stack framesColin Snover
This fixes incorrect backtraces after a workaround failure or other call to getCurrentCallOrigin when one or more stack frames are calls to local procedures.
2017-03-30SCI32: Improve bounds checking in SciString trimColin Snover
2017-03-30SCI: Ensure object name reg_ts are valid before dereferencing themColin Snover
2017-03-30SCI32: Add workaround for uninitialised read in TorinColin Snover
2017-03-30SCI32: Add workaround for uninitialised read in GK1Colin Snover
2017-03-30SCI: Give kernel calls a valid stack pointerColin Snover
Some kernel calls need to be able to call back into game script code, which requires a valid stack pointer for use with invokeSelector. An example of this is the guest additions code that syncs audio volumes from ScummVM: it needs to be able to call into the game scripts responsible for managing the in-game audio volume UI.
2017-03-30SCI: Whitespace alignmentColin Snover
2017-03-30SCI32: Fix crash when using brightness slider in ShiversColin Snover
2017-03-30SCI32: Fix broken sliders in Shivers settingsColin Snover
This problem is caused by the same invalid super call that broke the CCTV joystick.
2017-03-30SCI: Replace magic numbers in reg_t handling with symbolsColin Snover
2017-03-30SCI32: Add kWebConnect and kWinExecColin Snover
Used by Phant2.
2017-03-30SCI32: Implement known-used portions of kPlayDuckColin Snover
2017-03-30SCI: Fix remaining format string warningWillem Jan Palenstijn
2017-03-30SCI: Update formatting strings to match updated Span APIColin Snover
2017-03-27SCI: Simplify calculation of locals size in SCI0/1Colin Snover
2017-03-27SCI: Implement bounds-checked reads of game resourcesColin Snover
2017-03-19SCI: Add Colonel's Bequest patch and extend patcher functionalityMartin Kiewitz
Add Colonel's Bequest patch to fix an issue in room 35. When you tell Lilly about Gertie in act 2, Lilly will then walk out of the room. In case Laura (ego) is in her way, the game will effectively block and will appear frozen. This also happened, when using the original interpreter. This also adds a new functionality to the script patcher. PATCH_GETORIGINALUINT16 is able to get a full UINT16 from original script data and insert it somewhere else. PATCH_GETORIGINALBYTE and PATCH_GETORIGINALBYTEADJUST commands were merged internally and use the same internal command now. Some script patches were adjusted accordingly. Thanks again to wjp for helping on the script issue.