aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/kgraphics32.cpp
AgeCommit message (Collapse)Author
2016-08-27SCI32: Allow invalid bitmap references to be passed to kBitmapDestroyColin Snover
SSCI explicitly ignored invalid references passed to this function. Fixes GK1 room 410, when using the Rada Drum book on the drummer.
2016-08-26SCI32: Fix warningWillem Jan Palenstijn
2016-08-22SCI32: Add stubs for the kPlayVMDSetPreload and kPaletteSetGamma callsFilippos Karapetis
These were introduced in SCI3, and are used by RAMA. We don't preload videos, so we don't really need kPlayVMDSetPreload, but kPaletteSetGamma may need an implementation. With these two stubs, the main menu of RAMA is working again
2016-08-19SCI32: Fix limited data range comparison warningColin Snover
On at least DC platform, the ShowStyleType enum is fit to a 4-bit data size, so the 16-bit input value needs to be checked for validity *before* it is cast to a 4-bit ShowStyleType.
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: Add kSetNowSeen variant for older SCI32 gamesColin Snover
KQ7 2.00b, PQ:SWAT, Phant1, GK2, and Torin are all verified as using the 'ignore' variant; SQ6 and QFG4CD are verified as using the 'fail' variant. MGDX and Shivers could not be checked as they have only Phar Lap Win16 executables, so took a guess based on their release dates.
2016-08-19SCI32: Implement kShakeScreen for SCI32Colin Snover
2016-08-19SCI32: Remove GfxScreen from SCI32Colin Snover
2016-08-19SCI32: Implement SCI32 cursor supportColin Snover
2016-08-01SCI32: Add bitmap segment and remove GC option from hunk segmentColin Snover
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-08-01SCI32: Enable optional explicit memory management of hunk entriesColin Snover
Bitmaps in ScrollWindow and Robot code are managed by the kernel and not by game scripts, although they must be able to be referenced through a reg_t. To prevent incorrect GC of bitmaps that are in use but not referenced by any game script, explicit memory management of hunk entries can be enabled.
2016-07-11SCI32: Split GfxPalette and GfxPalette32 + HunkPaletteColin Snover
2016-07-11SCI32: Split kPalCycle into subop functionsColin 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: Implement kBitmapDrawViewColin Snover
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: 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-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-27SCI32: Add explicit checks for null pointersColin Snover
CID 1351617, 1351618, 1351619, 1351620, 1351621, 1351622, 1354791.
2016-04-14JANITORIAL: Reduce GUI header dependenciesOri Avtalion
2016-03-20SCI32: Clean up outdated/wrong commentsColin Snover
2016-03-20SCI32: Return correct value from kSetFontHeightColin Snover
2016-03-20SCI32: Do not change accumulator in non-returning kernel callsColin Snover
This did not cause any known bugs, but is wrong according to the way the actual engine works.
2016-03-20SCI32: Use signed values for displacement positionColin Snover
2016-03-15SCI32: Document kAddLineFilippos Karapetis
2016-03-15SCI32: Implement kBitmapSetDisplaceFilippos Karapetis
2016-03-14SCI32: Implement kBitmapDrawColorColin Snover
2016-03-13SCI32: Implement kCelInfoColin Snover
2016-03-13SCI32: Implement kCelHigh and kCelWide SCI32 versionsColin Snover
The SCI16 versions do not implement the scaling algorithm used by SCI32 so would be off by one in some cases.
2016-03-11SCI32: Initial implementation of kRemapColorsFilippos Karapetis
applyRemap() is still not finished, so nothing is actually visible yet
2016-03-10SCI32: Implement kMovePlaneItemsColin Snover
2016-03-10SCI32: Minor cleanup of kernel callsColin Snover
2016-03-10SCI32: Implement kCantBeHereColin Snover
2016-03-08SCI32: Disable kRemapColors32, as SCI32 remapping is still incompleteFilippos Karapetis
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: Implement kBitmapDrawTextColin Snover
2016-03-07SCI32: Move in-memory bitmap read/write into its own classColin Snover
2016-03-06SCI32: Implement kEditTextColin Snover
2016-03-03SCI32: Fix misidentification of createFontBitmap(CelInfo &)Colin Snover
2016-03-03SCI32: Add all kBitmap signaturesColin Snover
Not all SCI2.1late/SCI3 function signatures are fully known yet, but all subops are now represented in the kernel tables.
2016-03-02SCI32: Minor consistency improvement to FrameOutColin Snover
2016-03-01SCI32: Revert GK1 hacksWillem Jan Palenstijn
Replacing a valid signature error by a warning isn't useful.
2016-03-01SCI32: Warn when the unhandled parameter is set in kPalVarySetPercentFilippos Karapetis
2016-03-01SCI32: GK1 adds another optional parameter to kPalVarySetPercentFilippos Karapetis
2016-02-28SCI32: Non-titled text bitmap implementationColin Snover
This implementation is not 100% engine accurate, but it is more accurate than what was there, and hopefully the differences between this and the engine code are merely cosmetic. The known (intentional) differences are: 1. Uses ScummVM rects inside the engine code, converting to/from SCI rects on the kernel edges and when scaling 2. Fewer side effects when performing operations that *should* have been pure from the start (like text dimension calculation). Still not side-effect-free, but at least things like colours and alignment do not need to be reset every time a measurement is taken, unlike in the actual engine. Editor controls and some other kBitmap code are temporarily disabled as a result of changes to GfxText32 until they can be updated to be engine-accurate.
2016-02-21SCI32: Use debugC instead of debugCN for debug outputMartin Kiewitz