aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics
AgeCommit message (Collapse)Author
2017-05-04SCI32: Disable game script video benchmarkingColin Snover
The approach to video benchmarking used by SCI engine does not translate very well to modern video devices -- it will either be so slow that the games think the system is not capable of showing normal visual effects, or so fast that the benchmarks overflow their counters. So, game scripts that perform video benchmarking are now patched to unconditionally return the highest speed value. A pleasant but subtle side-effect of this change is that the extra time sitting at a blank screen before the start of a game (while benchmarks ran) is now gone. Fixes Trac#9741.
2017-05-01Revert "SCI32: Add debugging calls to GfxCursor32"Colin Snover
This reverts commit c02f2674ad3533aebd6c5dbcaf47f3e1d20904a4. Two minutes after committing this, the author of the ticket resolved the problem, which was caused by missing VMDs.
2017-05-01SCI32: Add debugging calls to GfxCursor32Colin Snover
Refs Trac#9740.
2017-04-29SCI32: Remove unnecessary GfxFrameout::_frameNowVisibleColin Snover
This flag was used in SSCI to read from VRAM instead of from the back buffer when a mouse interrupt was received in the middle of a back buffer update. Since ScummVM controls when mouse events are received via polling, it is not possible to receive a mouse event in the middle of back buffer updates, so this code is unnecessary for the engine to work properly. This also fixes Valgrind warnings about use of uninitialized memory at the start of the game, caused by not filling the cursor memory buffers because `_frameNowVisible` was false until the first frame was rendered.
2017-04-23SCI32: Serialize Robots in SCI3Colin Snover
This is necessary for at least Lighthouse, which maintains the state of Robots across save games.
2017-04-23SCI32: Fix out-of-bounds reads of truncated uncompressed celsColin Snover
This happens e.g. on the About page in LSL7 because of an interpreter problem where bitmap handles are destroyed and then reused without a kFrameOut call to remove old screen items from the visible plane list before a kIsOnMe call that causes the engine to try to read from reused bitmap handles with different contents and dimensions. This replaces bad memory reads on the About page in LSL7 with an assertion failure, until the problem with the About page can be properly addressed.
2017-04-23SCI32: Activate SCI3 draw/erase list calculation algorithmColin Snover
This code branch, existing since at least SQ6 but apparently never used by any SCI2/2.1 game, is in fact the algorithm used by SCI3. This fixes (at least) doubled rendering of transparent surfaces like the background of the inventory window and conversation choices panel in LSL7.
2017-04-23SCI32: Fix bad draw rectangle size in Duck video playerColin Snover
This was causing uninitialised garbage data from the scale buffer to be drawn to the screen.
2017-04-23SCI32: Remove unused SegManager from DuckPlayerColin Snover
2017-04-23SCI32: Add kPlayVMD subop 27 (SetPlane)Colin Snover
Used by RAMA, when playing a video at the Hub Camp computer at the beginning of the game (room 1004).
2017-04-23SCI32: Reset ScreenItem cel type when updating from a VM objectColin Snover
In Phant2, when going to email on Curtis's office computer, a screen item that contained a bitmap on the last frame was updated to contain a view on the next frame. This crashed the engine when it tried to reuse the old disposed bitmap instead of the new view because the cel type was never changed from kCelTypeMem to kCelTypeView.
2017-04-22SCI32: Disable brightness boost when black-lined video is disabledColin Snover
The boost is intended to compensate for the darkness caused by the black lines, so should not be applied when there are no black lines. This fixes too-bright videos in at least LSL7.
2017-04-22SCI32: Store handle to VMD bitmap separately from ScreenItemColin Snover
In at least RAMA, when using the pocket computer to view a mail and then pressing the "return" button, the ScreenItem containing the VMD will be destroyed before the VMD player is told to close the video, resulting in a use-after-free trying to access the bitmap ID through the deleted ScreenItem.
2017-04-22SCI32: Fix dumb typo in CelInfo32::toStringColin Snover
The typo was `if (kCelTypeColor)` instead of `if (type == kCelTypeColor)`. Changed to use a switch instead for improved clarity and code intelligence.
2017-04-22SCI32: Fix broken final step of 2.1mid+ pixel dissolveColin Snover
2017-04-22SCI32: Fix bad kPointSize implementationColin Snover
Fixes text scaling gone mad in Phant2.
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: 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-03-30SCI32: Always reinit GfxText32 statics on game startupColin Snover
Fixes bad scaling of text when switching between games with different script resolutions.
2017-03-30SCI32: Use built-in system font as default font for GfxText32Colin Snover
Fixes the non-interactive Lighthouse demo.
2017-03-30SCI32: Implement known-used portions of kPlayDuckColin Snover
2017-03-30SCI: Update formatting strings to match updated Span APIColin Snover
2017-03-27SCI: Remove old SCI32 check from SCI16 drawing codeColin Snover
2017-03-27SCI: Use containers in GfxView and remove some SCI32 codeColin Snover
2017-03-27SCI: Implement bounds-checked reads of game resourcesColin Snover
2017-02-05SCI: Fix more unsafe C-string usageColin Snover
2017-01-16SCI32: Add pic cel to CelInfo32 debugging outputColin Snover
2017-01-16SCI32: Fix handling of negative z-indexesColin Snover
Fixes the ego disappearing behind the castle doors in MGDX.
2017-01-16SCI32: Clarify comment about empty code path in cursor codeColin Snover
2017-01-12SCI32: Fix crash trying to clip invalid rects generated by transitionsColin Snover
In PQ4CD, when leaving the shooting range through the front door, some transition screen items will be generated that have invalid dimensions. SSCI simply clips these rectangles to zero.
2017-01-12SCI32: "Fix" renderer for PQ4CDColin Snover
PQ4CD and several other games contain a hack in two renderer methods to avoid rendering invalid screen items with zero or negative-dimension target rects. This prevents PQ4CD from crashing during the fifth phase of target practice.
2017-01-12SCI32: Add workarounds, transitions, fixes for PQ4CDColin Snover
2017-01-11SCI32: Fix uninitialised read of cursor background at start of gameColin Snover
2017-01-11SCI32: Improve mouse responsivenessColin Snover
This is most noticeable at the beginning of the game during benchmarking, where the benchmarking loop used to cause the mouse to get stuck for the duration of the benchmark.
2017-01-09SCI32: Fix bad coordinates in PQ:SWAT demoColin Snover
2017-01-09SCI32: Fix invalid bitmap deletion in AVIPlayerColin Snover
2017-01-09SCI32: Fix crashes and bad cel positioning in GK2 demoColin Snover
2017-01-06SCI: Add FIXME for (very unlikely) race condition in _palVarySignalWillem Jan Palenstijn
2017-01-02SCI32: Load VMDs from resource bundlesColin Snover
GK2 includes some VMDs in the RESSCI.00n volume bundles for the chase scene at the end of Chapter 6.
2016-12-19SCI32: Improve ScreenItem missing resource errorColin Snover
2016-12-19SCI32: Add support for alternate graphics selectorsColin Snover
Used by at least Phantasmagoria 2.
2016-12-19SCI32: Change plane and screen item sorting algorithmColin Snover
SSCI's last resort comparison here was to compare the object IDs of planes & screen items, but this randomly breaks (at least) the "you have died" dialog at the end of Phant1, and text & buttons in Hoyle5, even in SSCI itself. This commit changes last resort comparison to use a monotonically increasing ID instead, which keeps objects with identical priority & z-index in creation order when compared. Fixes Trac#9585.
2016-12-19SCI32: Fix incorrect parsing of empty |f| text escape codeColin Snover
This sequence is used in Hoyle5 when viewing the rules for a game.
2016-12-17SCI32: Fix bitmap surface memory leaks in video playersColin Snover
Fixes Trac#9662.
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-10SCI: Fix buffer overflows in GfxPicture circle drawingColin Snover
Fixes Trac#9660.
2016-11-19SCI32: Remove no-longer-necessary Phant1 VMD sync hackColin Snover
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