Commit Graph
31 Commits
Author SHA1 Message Date
Colin Snover e133c74403 SCI32: Fix unnecessary palette updates
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-12 14:43:56 -05:00
Colin Snover efc12ffc5c SCI32: Avoid flash of incorrect colour when palettes are changed
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-12 14:41:17 -05:00
Colin Snover 60c3663142 SCI32: Fix incorrect logic of cycler overflow 2016-07-11 10:39:50 -05:00
Colin Snover bc362e5b7c SCI32: Minor cleanup of GfxPalette32 2016-07-11 10:39:50 -05:00
Colin Snover 8fb55564a6 SCI32: Fix bad output caused by missing palette copies
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-11 10:39:50 -05:00
Colin Snover 4cfc387602 SCI32: Split GfxPalette and GfxPalette32 + HunkPalette 2016-07-11 10:39:50 -05:00
Colin Snover cfda8b9ecd SCI32: Fix broken Remap implementation
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-26 12:42:58 -05:00
Filippos Karapetis 3a770fa0d8 SCI32: Initial implementation of kRemapColors
applyRemap() is still not finished, so nothing is actually visible yet
2016-03-11 05:10:32 +02:00
Johannes Schickel 693f8dc295 SCI: Add missing namespace comments in graphics/. 2016-03-08 20:13:05 +01:00
Filippos Karapetis a2c6e647e6 SCI: Spacing 2016-03-08 20:36:04 +02:00
Colin Snover 729d0182d8 SCI32: Add unnecessary micro-optimisation to palette merging code 2016-03-07 23:48:13 -06:00
Colin Snover 0afb056e2d SCI32: Fix palette color overflow 2016-03-07 23:47:44 -06:00
Colin Snover 0235a84b90 SCI32: Enable GfxPalette32::cycleAllPause
This is used by the Mr Soylent machines in SQ6 (e.g. room 370).
2016-03-07 22:52:49 -06:00
Colin Snover 1c4778d571 SCI: Minor cleanup
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-18 21:11:06 -06:00
Filippos Karapetis c1dacbe65d SCI: Use American English, like we do in other parts of ScummVM
This replaces "colour" to "color"
2016-02-19 02:50:16 +02:00
Colin Snover 37539625d7 SCI: Fix palette equality check 2016-02-18 13:18:02 -06:00
Colin Snover 75ccabc325 SCI: Implement accurate renderer architecture for SCI32 2016-02-18 13:18:02 -06:00
Eugene Sandulenko eaad4208c7 SCI: Proper initialization.
There is no guarantee of initialization order in the constructor
declaration, thus corss references are not a good idea.
2016-02-14 12:50:04 +01:00
Filippos Karapetis 1d2abb4c9e SCI: Fix usage of override functions and silence a warning 2016-01-15 01:53:12 +02:00
Colin Snover 40f6d74d97 SCI: Minor clean-ups to comments and null pointer values 2016-01-14 17:21:05 -06:00
Colin Snover 8224d32122 SCI: Implement SCI32 kPalette findColor and matchColor
It seems that findColor is used only by kPalette, and matchColor is
used only by Remap.
2016-01-14 17:21:05 -06:00
Colin Snover fb891e4c08 SCI: Implement SCI32 kPalVary and kPalette setFade
This also fixes kPalCycle signatures to be more accurate.
2016-01-14 16:13:22 -06:00
Filippos Karapetis 28b91136cd SCI: Fix the math in applyFade(), and simplify setFade() 2016-01-08 17:16:09 +02:00
Filippos Karapetis 65f54c227f SCI: *Really* fix the logic in applyFade()
Thanks wjp
2016-01-08 15:58:10 +02:00
Filippos Karapetis 04f372f004 SCI: Fix the logic in applyFade()
Note that this is still unused, as it is normally called from
kSetShowStyle()
2016-01-08 15:55:24 +02:00
Filippos Karapetis e4e7f1825d SCI: Renamed one more function name to conform to our guidelines 2016-01-08 15:43:59 +02:00
Filippos Karapetis 8c6b5168a1 SCI: Make GfxPalette32 conform to out formatting guidelines
We do not prepend underscores to private class functions
2016-01-08 15:40:05 +02:00
Filippos Karapetis a65ff0e56e SCI: SCI32 palette cyclers are disjoint, so use a single palette copy 2016-01-08 15:35:19 +02:00
Filippos Karapetis c6e083bcf4 SCI: Simplify the SCI32 palette cycling code 2016-01-08 15:19:04 +02:00
Filippos Karapetis a119108835 SCI: Fix compilation 2016-01-08 11:09:29 +02:00
Colin Snover aeee621e44 SCI32: Add initial support for palette cycling (kPalCycle) and fading (kPalFade)
Graphics palette code was rewritten between SCI1 and SCI2, so
SCI32 palette engine code has been moved to a separate GfxPalette32
class.
2016-01-07 16:35:09 -06:00