aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics
AgeCommit message (Collapse)Author
2016-07-12SCI32: Fix unnecessary palette updatesColin Snover
Some games load palettes that include color 255, but this is hardcoded to white in SSCI, so just ignore it during merges since it is ignored when the hardware palette is updated anyway.
2016-07-12SCI32: Avoid flash of incorrect colour when palettes are changedColin Snover
Avoid forcing the screen to refresh after a palette change if the screen is also about to be drawn to, as the palette change + draw is intended to be an atomic operation.
2016-07-11SCI32: Add detection for Hoyle 5 demoColin Snover
2016-07-11SCI32: Give planes a default typeColin Snover
With the addition of the transparent pic type code, the _type property would be read uninitialised by setType if _pictureId was set to kPlanePic. CID 1357230, 1357231.
2016-07-11SCI32: Guard against no split countColin Snover
CID 1357229.
2016-07-11SCI32: Fix incorrect logic of cycler overflowColin Snover
2016-07-11SCI32: Minor cleanup of GfxPalette32Colin Snover
2016-07-11SCI32: Fix bad output caused by missing palette copiesColin Snover
Sometimes, games accidentally use palette entries that are not marked as used and expect them to be a particular colour, like the Phantasmagoria title screen, or the white palette entry (always 255 in DOS/Win).
2016-07-11SCI32: Split GfxPalette and GfxPalette32 + HunkPaletteColin Snover
2016-07-10SCI32: Clean up Video32/VMDPlayerColin Snover
2016-07-10SCI32: Add support for blacklined videoColin Snover
Ow. My eyeballs.
2016-07-10SCI32: Implement kPlayVMDColin Snover
2016-07-02SCI32: Expose graphics throttling codeColin Snover
Controls that manage their own event loops and call frameOut directly generally need to sleep in order to avoid 100% CPU, just like the main VM event loop.
2016-07-02SCI32: Document _remapOccurred flagColin Snover
2016-07-02SCI32: Improve accuracy of frameout throttlerColin Snover
2016-07-02SCI32: Add const to getCurrentBufferColin Snover
2016-07-02SCI32: Document ScreenItem::_insetRectColin Snover
2016-07-02SCI32: Fix dropping events in kEditTextWillem Jan Palenstijn
2016-07-01SCI32: Fix signed comparison warningsColin Snover
2016-07-01SCI32: Fix bad rendering of subtitle backgrounds in TorinColin Snover
The way dimensions of scaled screen items are calculated changed over the lifetime of SSCI. In early low-resolution and mixed-resolution games, scaled drawing needed to use at a global cadence across the entire screen to ensure proper alignment, but in later games (like Torin), local scaling of individual screen items seems to be the way scaling is performed.
2016-06-30SCI32: Add transparent pic plane typeColin Snover
It is not clear if this is ever actually used by game scripts, though.
2016-06-30SCI32: Clean-up pass on rendering pipelineColin Snover
This pass exposed two bugs, which have been fixed: 1. Checks of `_updated` and `_moved` were reversed in some areas, which lead to rendering bugs. In SQ6 the rendering bugs were subtle or non-existant, but in e.g. PQ:SWAT the Sierra logo and title screen animations were totally missing. 2. The renderer formerly kept reading from ScreenItemLists when new items were added in decrementScreenItemArrayCounts, but this was determined to be unnecessary.
2016-06-30SCI32: Implement engine-accurate screen item list sortingColin Snover
It seems highly probable that there are later SCI games that use the "hi res" rendering path, so sorting and unsorting of ScreenItemLists needs to be accurate.
2016-06-30SCI32: Document & clean up extra rect argument for frameOutColin Snover
This extra rect seems to probably only ever be used by VMD playback in some SCI2.1 games.
2016-06-30SCI32: Add low resolution constantsColin Snover
In a few places in the graphics system, fixed low-resolution values are used instead of the game script resolution.
2016-06-26SCI32: Fix benchmarking for QFG4Colin Snover
2016-06-26SCI32: Change Color::operator!= to all operator== directlyColin Snover
2016-06-26SCI32: Fix typoColin Snover
2016-06-26SCI32: Remove no-longer-relevant commentColin Snover
2016-06-26SCI32: Fix broken Remap implementationColin Snover
Remap would crash SCI2.1early games with 19 remap slots, and did not actually work in most cases in SCI2.1mid+ games. The SCI16 implementation was moved to its own separate file but was otherwise touched as little as possible, so may still have similar problems to the SCI32 code. 1. Split SCI16 and SCI32 code into separate files 2. Use -32 prefixes for SCI32 code and no prefix for SCI16 code, where possible, to match other existing code 3. Avoid accidental corruption of values from the VM that may be valid when signed or larger than 8 bits 4. Added documentation 5. Add missing remap CelObj calls 6. Inline where possible in performance-critical code paths 7. Fix bad `matchColor` function, and move it from GfxPalette to GfxRemap32 since it is only used by GfxRemap32 8. Fix bad capitalisation in getCycleMap 9. Remove unnecessary initialisation of SingleRemaps 10. Update architecture to more closely mirror how SSCI worked 11. Clarify the purpose of each type of remap type (and associated variable names) 12. Split large `apply` function into smaller units 13. Fix buffer overrun when loading a SCI2.1early game with remap 14. Remove use of `#define` constants 15. Warn instead of crashing with an error on invalid input (to match SSCI more closely) 16. Change the collision avoidance mechanism between the RemapType enum and remap kernel functions 17. Add save/load function
2016-06-21SCI32: Expose a draw buffer on BitmapResource objectsColin Snover
Most of the time, we get a bitmap to draw on it. Exposing a buffer avoids consumers having to create their own all the time, and encourages use of common drawing code exposed by the buffer.
2016-06-21SCI32: Remove unused dependencies from GfxFrameoutColin Snover
2016-06-21SCI32: Fixes to GfxText32Colin Snover
1. Inline borderSize constant in createFontBitmap for consistency 2. Fix "DrawTextBox GetLongest=0" warning to only appear in games that actually had this check (SQ6 and MGDX) 3. "Fix" implementation of getTextSize for SCI2.1early, which gave lines with word wrap disabled a height of 0 4. Add inlining hints to some methods in BitmapResource that were missing them for some reason
2016-06-21SCI32: Implement basic kMessageBoxColin Snover
This kernel call seems only to be used by KQ7 1.51 (which was Windows-only) to send warnings to the user. It was easy enough to do a basic implementation in the ScummVM GUI rather than just make it an empty call, so now it is a thing.
2016-06-21SCI32: Implement kScrollWindowWillem Jan Palenstijn
These should be all the actually used subfunctions. Co-authored-by: Colin Snover <github.com@zetafleet.com>
2016-06-21SCI32: Implement line drawing (kAddLine/kUpdateLine/kRemoveLine)Colin Snover
This line drawing code lives in a remodelled GfxPaint32 class that is totally separate from GfxPaint16.
2016-06-21SCI32: Make GfxText32::_scaledWidth/Height staticsWillem Jan Palenstijn
They were global in SSCI. This way secondary GfxText32 instances (such as in ScrollWindow) use the correct scaling.
2016-06-21SCI32: Fix drawText on consecutive control codesWillem Jan Palenstijn
2016-06-21SCI32: Fix getTextWidth on consecutive control codesWillem Jan Palenstijn
2016-06-14SCI32: Fix video performance benchmarking in most SCI32 gamesColin Snover
Most SCI32 games draw a "fred" object to the screen when the game first starts to benchmark video performance. When framerate throttling is enabled (which fixes many/most timing-related bugs and reduces system load caused by unnecessary graphics updates), the game's performance check will think that video card is slow, causing some "high-performance" game features to be disabled. To avoid this, we simply disable throttling during benchmarking by detecting the "fred" object.
2016-06-13SCI32: All versions of KQ7 are using the older remap range semanticsFilippos Karapetis
2016-06-13SCI32: Remove the unused newColors arrayFilippos Karapetis
2016-05-30SCI32: Really guard against null pointer dereference in calcListsColin Snover
CID 1356125.
2016-05-28SCI32: Provide default value for vmap minDiffIndexColin Snover
SSCI did not initialise minDiffIndex and would always flow into the condition that sets it, but some compilers complain that the value may be used uninitialised, so we will just set it to map back to its original palette index by default.
2016-05-28SCI32: Simplify default text width equationColin Snover
2016-05-28SCI: Explicit type conversion. Avoids warnings on number of compilers.Eugene Sandulenko
2016-05-28SCI: Fix warningEugene Sandulenko
2016-05-28SCI32: Remove unused titled text bitmap codeColin Snover
Titled text bitmaps do not appear to be used by any game scripts. They seem to only be used by the error manager in SSCI, but ScummVM has its own error handling, so we don’t need this implementation.
2016-05-27SCI32: Add explicit checks for null pointersColin Snover
CID 1351617, 1351618, 1351619, 1351620, 1351621, 1351622, 1354791.
2016-05-27SCI32: Initialise pointers in CelObj scalerColin Snover
This ensures that if there is a bug in the drawing code that causes the row to be unset, it will not result in silently reading garbage out of random memory. CID 1354802