Commit graph

60 commits

Author SHA1 Message Date
Eugene Sandulenko
abea37c9bb
ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
sluicebox
a92582ef0e SCI32: Translate Mac colors when drawing CelObjColor
Fixes several kSetShowStyle transitions such as the iris effect
in LSL6 Hi-res Mac at the end of the beach scene at night (room 860)
2021-05-01 14:29:18 -07:00
Filippos Karapetis
bd7e708fc3 SCI: Move resource related functionality into a separate folder 2020-11-29 14:34:55 +02:00
sluicebox
c4eda7ab4a SCI32: Set Mac gamma level 2020-09-06 21:56:58 -07:00
sluicebox
336bf0dd37 SCI32: Translate Mac colors when drawing cels
Fixes KQ7 credits, RAMA credits
2020-07-23 02:41:10 -07:00
sluicebox
bfb9290138 SCI32: Handle Mac black palette entry 2020-04-16 17:08:49 -07:00
sluicebox
511e5441e3 SCI32: Enable Mac code (remove ENABLE_SCI32_MAC) 2019-10-11 14:18:26 -07:00
D G Turner
50b0d62334 SCI: Really Fix MSVC Warning
The Palette structure referred to here is in sci/graphics/helpers.h
not in the Graphics CursorMan class as previously thought.

Rather than adding a structure constructor which could have side
effects currently, the full structure is initialized here to avoid
the MSVC warning.

The previous change to CursorMan class Palette can be retained as it
is a reasonable code improvement in any case.
2019-10-04 03:28:35 +01:00
Colin Snover
5cffa3891f SCI32: Clean up GfxPalette32
* Replace raw pointers with smart pointers
* Use references instead of const pointers where appropriate
* Tweak initialisation
* Tweak palette copies to the stack
2017-10-06 22:10:50 -05:00
Colin Snover
9e0f23aabb SCI32: Fix backwards palette check 2017-09-27 12:02:01 -05:00
Colin Snover
743082ac8c SCI32: Disable all SCI32 Mac code
This code is currently untestable and is almost certainly at least
partly based on guesswork & not actual reverse-engineering (as was
the case for all other pre-2015 SCI32 code), so future developers
interested in adding SCI32 Mac support should use it only as an
intermediate reference rather than as known good code.
2017-09-24 22:56:59 -05:00
Colin Snover
f42480d7cd SCI32: Support palette-inverting SCI3 variant of kPalVary
This is used by RAMA in room 6201, after eating the alien fruit.
2017-09-24 22:56:58 -05:00
Colin Snover
09ef11a8cb SCI32: Remove ENABLE_SCI3_GAMES ifdef, now that they are supported 2017-07-17 22:42:18 -05:00
Colin Snover
bbad7ada1b SCI32: Ignore chest view palette in Phantasmagoria
This fixes the 3-frame glitch that was also present in the
original game when moving in the chapel from room 6500 to 6400 in
chapter 7.

Fixes Trac#9788.
2017-07-13 21:31:21 -05:00
Colin Snover
8047f3fa77 SCI32: Stop optimising palette merges
While this optimisation helped to reduce unnecessary palette
updates in KQ7, it broke Phant1, which relies on changes to index
255 in the source palette causing palette invalidation.

Refs Trac#9788.
2017-07-13 17:19:50 -05:00
Colin Snover
12d24d5b46 SCI32: Fix bad palette entries when built without USE_RGB_COLOR
This is only a problem for the Windows games that need some
palette entries to be ignored.
2017-07-06 19:12:40 -05:00
Colin Snover
7057f232d7 SCI32: Improve kPlayVMD rendering
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-07-06 19:12:38 -05:00
Colin Snover
2d6fe2b8cd SCI32: Work around bogus palette entries in select Windows games 2017-07-06 19:12:37 -05:00
Colin Snover
c6f5840196 SCI32: Remove magic numbers in HunkPalette 2017-07-06 19:12:37 -05:00
Colin Snover
a689fee663 SCI32: Speed up & deduplicate palette submission code 2017-07-06 19:12:35 -05:00
Colin Snover
8b49313af3 SCI32: Fix terrible rendering performance when vsync is enabled
More than one call to OSystem::updateScreen per frame on systems
with vsync ruins performance because the call is blocked until
the next vsync interval.

This also fixes bad rendering performance with the OpenGL backend.
2017-05-06 10:38:58 -05:00
Colin Snover
e504efe4da SCI32: Add palette code for late SCI2.1mid+ games
Sometime during SCI2.1mid, the palette manager was changed to
save and restore the source palette, and to add in-game gamma
correction. Previously, only the vary start and target palettes
were saved, and gamma correction was only configurable in SSCI by
editing RESOURCE.CFG.
2017-04-22 13:01:37 -05:00
Colin Snover
31daa956d6 SCI: Implement bounds-checked reads of game resources 2017-03-27 19:42:31 -05:00
Colin Snover
34bd1bcaa9 SCI32: Split out detection of features that cross SSCI versions 2016-10-20 11:33:29 -05:00
Colin Snover
b7f93623c4 SCI32: Fix broken palette cycling in SCI2/2.1early games
This fixes the incorrect appearance of the Sierra logo in PQ4 when
the main menu appears in hi-res mode.

The behaviour of kPalCycle(SetCycle) changed in between 2.1early
and 2.1mid to fix an off-by-one error that prevented the last
palette entry in a cycle range from being used. Some earlier games,
like PQ4CD in hi-res mode, relied on this behaviour, and would
render incorrectly if the last palette entry in a range was used.
2016-09-29 19:39:16 -05:00
Colin Snover
e412eaffbc SCI32: Clean up and document GfxPalette32 2016-09-29 19:39:16 -05:00
Colin Snover
7ad9418583 SCI32: Fix off-by-one error in palette fades 2016-09-29 19:39:16 -05:00
Colin Snover
d0517f515e SCI32: Update screen on frameout, instead of in the event loop 2016-09-29 19:39:16 -05:00
Filippos Karapetis
1c19029c58 SCI32: Fix palette in SCI32 Mac games 2016-08-23 05:18:42 +03:00
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