aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/frameout.cpp
AgeCommit message (Collapse)Author
2016-08-19SCI32: Remove unused ResourceManager from GfxFrameoutColin Snover
2016-08-19SCI32: Remove CoordAdjuster32, at least for the momentColin Snover
This may come back in the future to deduplicate some gfx code, but SCI32 had two different inlined ways of doing coordinate conversions with different rounding methods, so CoordAdjuster32 didn't get used when the graphics system was rewritten. At the moment, SCI32 code uses the mulru/mulinc methods from helper.h for scaling up/down coordinates.
2016-08-19SCI32: Implement kRobotColin Snover
2016-08-19SCI32: Implement kShakeScreen for SCI32Colin Snover
2016-08-19SCI32: Fix signature of kSetNowSeenColin Snover
2016-08-19SCI32: Fix commentColin Snover
2016-08-19SCI32: Implement SCI32 cursor supportColin Snover
2016-08-19SCI32: Remove GfxScreen from GfxFrameoutColin Snover
Only cursor remains to be updated to go through GfxFrameout, and then we can let GfxScreen go back to being SCI16-only.
2016-08-11SCI32: Fix GfxFrameout::_isHiRes flag to be accurate for all gamesColin Snover
2016-08-01SCI32: Don't crash on zero-dimension show rectsColin Snover
In the original engine this would have simply resulted in no draw, but ScummVM is more strict about it. It is not 100% clear whether these are normal and should be allowed or not, so for the moment we'll emit a warning whenever a zero-dimension show rect is seen. For now they only seem to be generated by plane transitions, and these zero-dimension screen items cannot simply be omitted because the 2.1early transitions code requires a fixed number of screen items per step.
2016-08-01SCI32: Add 6-argument signature of kAddPicAtColin Snover
This is used by Torin in room 50900.
2016-08-01SCI32: Implement plane transitions (kSetShowStyle and kSetScroll)Colin Snover
This commit implements all of the known plane transitions from SCI2 through SCI2.1mid games. Because kSetShowStyle is always called indirectly via the Styler game script, it is difficult to find all the places where transitions are used. As such, transitions that appeared to never be used have been added as stubs which will trigger a game crash with a message to report what was being done, so any missed transition types can be identified quickly and then implemented.
2016-07-27SCI32: Fix backwards kFrameOut throttle timingsColin Snover
2016-07-24SCI32: Improve behaviour of screen transitionsColin Snover
1. Use the same throttling speed as normal frameouts. The old throttling speed seemed a bit too slow. 2. Exit the event loop immediately if the engine is supposed to quit, instead of forcing the user to wait until the transition has finished before quitting.
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-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: Improve accuracy of frameout throttlerColin Snover
2016-07-01SCI32: Fix signed comparison warningsColin Snover
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: 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-26SCI32: Fix benchmarking for QFG4Colin 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: Remove unused dependencies from GfxFrameoutColin Snover
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-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-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-27SCI32: Add explicit checks for null pointersColin Snover
CID 1351617, 1351618, 1351619, 1351620, 1351621, 1351622, 1354791.
2016-03-18SCI32: Use correct script dimensions for later SCI32 gamesColin Snover
These values are hard-coded in the engine executable for each game.
2016-03-18SCI32: Fix crashes in kIsOnMe caused by stale CelObjsColin Snover
2016-03-18SCI32: Fix incorrect double-read from CLUTColin Snover
2016-03-17SCI32: Remove outdated note about state of frameout codeColin Snover
This code is engine-accurate now, not based on guesswork.
2016-03-17SCI32: Temporarily remove dead SCI2.1early transitions codeColin Snover
This code sneaked in with the graphics engine rewrite, but is not ready yet to be used. It will return shortly, once it is enabled and working.
2016-03-17SCI32: Update unimplemented TODO to reflect the correct operation typeColin Snover
2016-03-17SCI32: Enable redrawAllCount in palMorphFrameOutColin Snover
2016-03-16SCI32: Work around bad Styler script in KQ7 2.0bColin Snover
The SCI2.1mid version of the game includes scripts designed for SCI2.1early which means wrong parameters are sent to the kernel.
2016-03-16SCI32: Remove dead code related to priority map handlingFilippos Karapetis
The priority map is not used at all in SCI32 at the engine level by design, so all the relevant code that handles picture priority is pretty much dead
2016-03-16SCI32: Global 12 contains the previous roomFilippos Karapetis
2016-03-15SCI32: More work on remappingFilippos Karapetis
Still not working
2016-03-11SCI32: Add remap counters and hook them up to frameOutFilippos Karapetis
2016-03-10SCI32: Clean up debug messages in GfxFrameoutColin Snover
Error messages now contain the name of the failed function and plane/screen item information that can be used to look up the plane/screen item in a debugger, if the games ever crash in a release in this code, per suggestion by @m-kiewitz. Commented out messages that were used during the rearchitecture of the main graphics engine are also removed, since that code is stable now.
2016-03-10SCI32: Implement kMovePlaneItemsColin Snover
2016-03-10SCI32: Implement kSetNowSeenColin Snover
2016-03-08SCI32: Clean up kIsOnMe and fix rounding bugColin Snover
The implementation was not correctly rounding the scaled position with mulru, leading to occasionally incorrect hit detection at the boundaries of boxes.
2016-03-07SCI32: Change magnifier warning to errorColin Snover
If anything actually uses this feature, we should know about it eventually.
2016-03-07SCI32: Add debugger command to view screen items in the visible plane listColin Snover