aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/plane32.cpp
AgeCommit message (Collapse)Author
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 PlaneColin Snover
* Rewrap comments to 80 columns * Clarify comments where possible
2017-10-06SCI32: Clean up ScreenItemColin Snover
* Rewrap comments to 80 columns * Clarify comments where possible * Use smart pointers where appropriate
2017-08-06JANITORIAL: Silence more GCC 7 warningsTorbjörn Andersson
All these fall through were marked as deliberate, so again I've only changed the comment to silence GCC.
2017-07-13SCI32: Move priority comparison of ScreenItems into its own functionColin Snover
Rendering bugs in ScummVM are often caused by buggy game scripts relying on the last ditch sort, which is not the same in ScummVM as in SSCI (since the SSCI last ditch sort relies on a different memory architecture and is super buggy). However, these bugs do not show up very frequently these days, so it is easy to forget all the places that need to be checked when debugging a rendering problem that appears to be caused by sorting failure. This commit breaks out the last ditch comparison formerly in Plane::calcLists to hopefully make it more visible to future programmers. Refs Trac#9957.
2017-07-06SCI32: Improve kPlayVMD renderingColin Snover
1. Added a new game option for linear interpolation when scaling overlay-mode video in ScummVM builds with USE_RGB_COLOR; 2. Implemented SCI2.1-variant of the VMD player renderer (fixes Trac#9857), which bypasses the engine's normal rendering pipeline; 3. Improved accuracy of the SCI3-variant of the VMD player by writing HunkPalettes into the VMD's CelObjMem instead of submitting palettes directly to GfxPalette32.
2017-05-27SCI32: Minor cleanup to plane debug informationColin Snover
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.
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-10-20SCI32: Fix typoColin Snover
2016-10-20SCI32: Split out detection of features that cross SSCI versionsColin Snover
2016-10-16SCI32: Fix screen items incorrectly drawing over higher planesColin Snover
Fixes Trac#9583.
2016-09-29SCI32: Fix potential null pointer dereferenceColin Snover
CID 1351620.
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: Use extern instead of #include frameout.h for splitRectsColin 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-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-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-05-27SCI32: Use better name for fixed priority fieldColin Snover
The old name matches the selector, but isn’t as clear.
2016-05-26SCI32: Remove unused Plane fieldsColin Snover
These fields were written and never read in SSCI.
2016-03-16SCI32: Fix updated screen item count in remapMarkRedraw()Filippos Karapetis
Thanks to snover for noticing this
2016-03-15SCI32: More work on remappingFilippos Karapetis
Still not working
2016-03-13SCI32: Remove incorrect note about dword_C6288Colin Snover
Any reason why flipping this condition did anything to GK1 rendering was due to other unrelated bugs in the renderer.
2016-03-10SCI32: Implement kMovePlaneItemsColin Snover
2016-03-10SCI32: Remove side-effect-abusing calls to ScreenItem::getCelObjColin Snover
2016-03-08SCI: Add missing namespace comments in graphics/.Johannes Schickel
2016-03-07SCI32: Clean up renderer code a bit moreColin Snover
2016-03-07SCI32: Fix adding too many items to drawlistWillem Jan Palenstijn
2016-03-06SCI32: Make PlaneList definition order match declaration orderColin Snover
2016-03-06SCI32: Fix memory leaksColin Snover
2016-03-06SCI32: "Improve" comparison algorithm for planes and screen itemsColin Snover
This adds a slightly more accurate comparison algorithm that will at least ensure that all the engine-generated planes and screen items with matching priorities will be sorted above script-generated planes and screen items, like in the original engine. It still does not sort script-generated items by memory handle order, so if that is ever a thing that actually happens, those may still be in the wrong order.
2016-03-06SCI32: Implement kEditTextColin Snover
2016-03-05SCI32: Fix incorrect insertion of new planesColin Snover
2016-03-02SCI32: Fix changed screen items drawing on top of higher screen itemsColin Snover
2016-03-02SCI32: Add consts and remove redundant conditionalColin Snover
Adding consts to try to isolate rectangles that change during draw list processing, to be investigated for incorrect mutations causing lower screen items to be drawn over higher screen items at their edges.
2016-03-02SCI32: Review rect rounding in Plane and ScreenItemColin Snover
These changes should cause ScummVM to be more accurate in edge case rounding.
2016-03-01SCI32: Add a note about the menu bars in GK1Filippos Karapetis
2016-02-21SCI: Use nullptr instead of 0 for null pointer checksColin Snover
2016-02-21SCI: Fix redrawAll updating visiblePlanesWillem Jan Palenstijn
It was comparing ScreenItem*'s directly, instead of objects.
2016-02-20SCI: Rewrite Plane::mergeToRectListWillem Jan Palenstijn
The old one would continue reading from outerRect after it was deleted.
2016-02-18SCI: Minor cleanupColin Snover
1. Reorder member initialisations to match class member order 2. Use #pragma mark instead of comments for annotating sections 3. Remove useless >=0 checks on unsigned types
2016-02-18SCI: Fix bad positioning of relatively positioned pic celsColin Snover
2016-02-18SCI: Fix some rect off-by-onesColin Snover
2016-02-18SCI: Add comments to plane codeColin Snover
2016-02-18SCI: Implement accurate renderer architecture for SCI32Colin Snover