aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
AgeCommit message (Collapse)Author
2017-11-28SCI32: Fix crash starting KQ7 demoColin Snover
Fixes Trac#10343.
2017-10-29SCI: Fix UB in SegManager memcpy/strcpy operationsColin Snover
Passing overlapping buffers to C standard library memcpy, strcpy, and strncpy is undefined behavior. In SSCI these operations would perform a forward copy, and most stdlib implementations do the same, but at least newer Linux glibc on x86 copies bytes in reverse, so just using the standard library on this platform results in broken output. Because SSCI used a blind forward copy instead of memmove for overlapping copy operations, this patch implements an explicit forward copy to ensure that overlapping copies continue to operate the same as in SSCI. This fixes the Island of Dr. Brain v1.1 flamingo puzzle (script 185, flamingos::init, localCall 4c3) on platforms that do not perform forward copy in memcpy/strcpy/strncpy. Thanks to @moralrecordings for research on this bug and an initial patch using memmove. Closes gh-1034.
2017-10-21SCI: Allow lofsa string printing in disasm for all SCI versionsWillem Jan Palenstijn
2017-10-21SCI: Fix offsets in disasm for multi-param opcodesWillem Jan Palenstijn
This code was assuming that retval points to the start of the next instruction, which is only true if the current parameter is the last one. This fixes op_call printing.
2017-10-16SCI32: Fix cursor color when quitting for phant1David Fioramonti
When quitting the game at the main menu and hitting no or quitting the game while playing the cursor color over the buttons will be tan the first time rather than red. This fix makes it so it will be red. This was done by removing a check in HotSpot::doit() which checks the global193 value. Removing this check fixes the problem. Fixes Trac#9977. Thanks snover and wjp for your help.
2017-10-08SCI32: Fix crash restoring save from endgame of RAMAColin Snover
Fixes Trac#10263.
2017-10-09SCI: Add QfG4 script patch to fix sliding down slope bug #9801Martin Kiewitz
It's quite difficult to patch. I hope this finally solved it.
2017-10-08SCI: Crazy Nick's Larry workaround bug #10184Martin Kiewitz
Added this already through last commit by accident Was supposed to get added by this. Workaround for reading uninitialized temp game bug.
2017-10-08SCI: Restrict some workarounds to certain tempsMartin Kiewitz
Also add a bit more documentation / Fix some documentation
2017-10-07SCI: Change index inside workaround tables to an index rangeMartin Kiewitz
So that one can specify an entire range of temp variables by using just one single entry.
2017-10-07SCI: Use explicit indexes in castlebrain/islandbrain word search workaroundsColin Snover
2017-10-07SCI: Add workaround for uninitialized reads in Island of Dr BrainColin Snover
Leaning on the enter key during a word search puzzle will trigger this bug, just like in Castle of Dr Brain.
2017-10-07ENGINES: Remove default1x scaler flagColin Snover
This flag is removed for a few reasons: * Engines universally set this flag to true for widths > 320, which made it redundant everywhere; * This flag functioned primarily as a "force 1x scaler" flag, since its behaviour was almost completely undocumented and users would need to figure out that they'd need an explicit non-default scaler set to get a scaler to operate at widths > 320; * (Most importantly) engines should not be in the business of deciding how the backend may choose to render its virtual screen. The choice of rendering behaviour belongs to the user, and the backend, in that order. A nearby future commit restores the default1x scaler behaviour in the SDL backend code for the moment, but in the future it is my hope that there will be a better configuration UI to allow users to specify how they want scaling to work for high resolutions.
2017-10-07SCI: Improve Larry 1 Spanish script patchMartin Kiewitz
So that it also works even when the patch files are missing.
2017-10-07SCI: Add script patch for Larry 1 Spanish bug #10240Martin Kiewitz
Fixes buying an apple from man wearing a barrel, who walks around in front of the casino.
2017-10-07Revert "SCI: Add workaround for uninitialized reads in Island of Dr Brain"Martin Kiewitz
This reverts commit ae8e4fa8e95f3ae347dfc681330bccc0b09d1f01. This change is wrong in any case. It should be specific to temp 14+15 at the very least. I also did not get an answer on what is actually happening internally. That's not how we should add workarounds. My review was also still pending.
2017-10-07SCI: Add workaround for uninitialized reads in Island of Dr BrainColin Snover
Leaning on the enter key during a word search puzzle will trigger this bug, just like in Castle of Dr Brain.
2017-10-07SCI: Add workaround for uninit read during wordsearch in castlebrainDavid Fioramonti
During the wordsearch puzzle (room 320 click left door) the game will crash because of an uninitalized read of temp variables in word::dispatchEvent (which gets called a lot), if the player clicks the same letter or different letters aggressively or holds down the enter key. Fixes Trac#9783.
2017-10-06SCI32: Clean up scriptWidth/scriptHeight/screenWidth/screenHeightColin Snover
This removes the unnecessary Buffer subclass and stops most places where the output buffer was being interrogated about dimensions instead of GfxFrameout.
2017-10-06SCI32: Clean up script patch commentsColin Snover
2017-10-06SCI32: Clean up CelObjColin Snover
* Rewrap comments to 80 columns * Clarify comments where possible * Use smart pointers where appropriate * Change view/pic flags detection to always use word-size (byte-size check for flag 0x80 was a compiler optimisation)
2017-10-06SCI32: Clean up PlaneColin Snover
* Rewrap comments to 80 columns * Clarify comments where possible
2017-10-06SCI32: Clean up GfxRemap32Colin Snover
* Rewrap comments to 80 columns * Clarify comments where possible
2017-10-06SCI32: Clean up Audio32Colin Snover
* Rewrap comments to 80 columns * Remove resolved TODOs * Use containers and smart pointers where appropriate
2017-10-06SCI32: Clean up GfxFrameoutColin Snover
* Rewrap doxygen comments to 80 columns * Swap public/private sections so public APIs come first * Clarify comments where easily possible
2017-10-06SCI32: Clean up GfxTransitions32Colin Snover
* Use containers where appropriate * Re-wrap doxygen comments to 80 columns * Clarify comments for parts of the engine that are understood now but were not understood at the time of the initial implementation
2017-10-06SCI32: Clean up ScreenItemColin Snover
* Rewrap comments to 80 columns * Clarify comments where possible * Use smart pointers where appropriate
2017-10-06SCI32: Clean up GfxPalette32Colin Snover
* Replace raw pointers with smart pointers * Use references instead of const pointers where appropriate * Tweak initialisation * Tweak palette copies to the stack
2017-10-04SCI32: Speed up memory check counter in lighthouse in LighthouseColin Snover
2017-10-04SCI32: Give more specific game version numbersColin Snover
2017-10-03SCI32: Restore gameplay time in RAMAColin Snover
This will cause non-linear time shifts in the system timer that the game's custom save logic may not expect, but in initial testing the game doesn't seem to care about this. Fixes Trac#10259.
2017-09-30SCI32: Fix crash when dying in RAMAColin Snover
As it turns out, autorama.sg *is* actually used sometimes. Fixes Trac#10253.
2017-09-30SCI: Fix printing of super calls on clones in debuggerColin Snover
2017-09-30SCI32: Fix support for RAMA demoColin Snover
Fixes Trac#10251.
2017-09-29SCI32: Clean up unused kBitmap code/subopsColin Snover
2017-09-29SCI32: Fix bad text rendering in RAMAColin Snover
In SCI3, Sierra removed the ability of the main renderer to automatically scale CelObjs with different source resolutions. Instead, in SCI3, all CelObjs are treated as having the same resolution as the screen (i.e. 640x480). In all SCI3 games other than RAMA, keeping the code paths for resolution-dependent scaling is not a problem because all the assets and game code are correctly designed to use the same 640x480 resolution throughout. RAMA, on the other hand, was written with the text subsystem set to a resolution of 630x450 (Phant1's screen resolution), and in SSCI, resolution-dependent scaling code was not removed from the *text* subsystem. As a result, RAMA's game scripts rely on the slightly larger scaled dimensions coming out of the text system when determining the size of screen items for rendering, and then also rely on the main renderer ignoring the 630x450 resolution baked into the bitmaps generated by the text subsystem when drawing them to the screen.
2017-09-28SCI: Add script patch for QfG2 Jackalmen Oops - bug #10218Martin Kiewitz
Was a game bug, finally fixed. This was a combined effort of wjp and myself. Thanks to wjp. We both don't own QfG2 1.000 atm, so we could not try it for that version.
2017-09-28SCI32: Disable change directory button in original save/load in RAMAColin Snover
2017-09-28SCI32: Allow save games to be deleted from original save/restore in RAMAColin Snover
2017-09-28SCI32: Block RAMA from creating PREF.DAT fileColin Snover
This file normally stores brightness, music volume, and most recently used save game directory. Since we store the music volume ourselves and don't use the save game directory, the only potentially useful information is the brightness level, and that is fine to just restore from the save games.
2017-09-28SCI: Remove resolved TODOColin Snover
2017-09-28SCI32: Add audio volume sync support for RAMAColin Snover
2017-09-27SCI: Add support for keyup eventsColin Snover
Basic keyup event support appears to have been added in the SCI1.1 IBM keyboard driver, and more robust support was provided in SCI32 which actually gets used by at least Lighthouse. This patch adds support for keyup events in SCI1.1+. Fixes Trac#10242.
2017-09-27SCI: Fix use-after-free when kernel call debugging is active during a save ↵Colin Snover
game restore
2017-09-27SCI: Do some clean-up of event handling systemColin Snover
Convert macros and vars to enums, rename keyboard events in preparation for adding key up events, clean up unnecessary nested conditionals, add TODOs for potential future work.
2017-09-27SCI: Add uninitialized read workaround for shoplifting in SQ4CDDavid Fioramonti
When in Galaxy Galleria, going into the software store and trying to shoplift the SQ4 Hintbook will crash the game after you leave and are electrocuted. Fixes Trac#10229. Closes gh-1031.
2017-09-24SCI32: Dummy kPlayVMDSetFrameRateColin Snover
This subop is used only by RAMA. The VMD objects in RAMA's game code contain a frame rate field, which is usually -1, but occasionally is not. In the cases where it is not -1, it appears to be either set for a video with sound (so the value doesn't do anything to that video), or it is just resetting back to the baked-in frame rate of the video file (so it doesn't need to exist, except to fix videos broken by earlier played videos with explicit frame rates). Since this is a global state flag that does not get reset in SSCI, the ultimate effect of kPlayVMDSetFrameRate in RAMA is that it does nothing to any of the videos where the explicit frame rate is set, but it does inadvertently cause *other* videos with no sound and no explicit frame rate to have a different frame rate depending upon what was played earlier in the game (and whether or not the engine was restarted in the meantime). This bad transferring of frame rates is most noticeable with the exit-video of the vidmail player, which is played when you back out after selecting a vidmail. Its nominal framerate is 10fps, but it will play at whatever frame rate was last set by some other video that happened to have an explicit frame rate, even if that frame rate was bogus. So, just ignore all calls to this subop, as it is fatally buggy.
2017-09-24SCI32: Remove unnecessary negative assertion check on unsigned integerColin Snover
Fixes CID 1381416.
2017-09-24SCI32: Disable all SCI32 Mac codeColin Snover
This code is currently untestable and is almost certainly at least partly based on guesswork & not actual reverse-engineering (as was the case for all other pre-2015 SCI32 code), so future developers interested in adding SCI32 Mac support should use it only as an intermediate reference rather than as known good code.
2017-09-24SCI: Remove Mac SCI32 code from SCI16 codeColin Snover