Commit Graph
1494 Commits
Author SHA1 Message Date
sluicebox 1441468855 SCI: Fix kDrawPic palette validation
Fixes CAMELOT bug #11024
2019-07-21 23:24:53 +03:00
sluicebox 954f5142cb SCI: Implement full kWait behavior
Fixes PQ3 bug #11020
2019-07-21 18:20:07 +03:00
sluicebox ca66a776b0 SCI: Implement early GetLongest() behavior, bug #10000 2019-07-09 09:51:10 +03:00
Filippos Karapetis 2fd416b0ac SCI32: Extend scaler sanity checks to all SCI32 versions
Fixes QFG4 bug #10765. It's preferable to have sanity checks in the
code, rather than crashing due to invalid draw rectangles from buggy
game scripts. It's no use checking which specific interpreter versions
had sanity checks and trust the game scripts of the other interpreters.
Thus, it's easier and safer to always enable these sanity checks.
2019-06-30 14:46:37 +03:00
Kawa-oneechan 18716672bb SCI: Split out duplicated color remapping code 2019-06-23 23:46:38 +03:00
Kawa 9aadb27267 SCI: Add some more SCI11+ features
Also gate them behind the presence of a 184.VOC resource instead of GID_CATDATE. This should not matter with regards to the remap effects -- the 2015 and 2016 demos had none, and the first that did has an unknown release status. Only the 2017 demo would fall, which would be easily fixed by dropping in a valid 184.VOC patch file.
2019-06-23 01:46:53 +03:00
Filippos Karapetis 9da3d22703 SCI: Fix MSVC warnings
- Remove unused parameters
- Initialize potentially uninitialized variables
- Use Common::String instead of a fixed buffer
- Remove redundant parentheses
- Change float suffix to be uppercase
- Fix spacing
- Fix integer left shifts with boolean variables
- Fix potential division by zero
- Fix missing breaks
2019-05-27 14:53:41 +03:00
Colin Snover 8cec2ba8f9 SCI: Remove unnecessary two-phase GfxCursor initialisation 2019-05-12 19:05:50 +03:00
sluicebox 6790855916 SCI: Handle recursive view loop references
Fixes bug #10953 in FPFP
2019-05-01 14:53:23 +03:00
sluicebox 82ccce948a SCI: Fix Mac icon bar event handling
Fix mouse presses falling through the icon bar in KQ6 and FPFP Mac
2019-04-01 01:16:53 +03:00
sluicebox 903ca29558 SCI: Fix kAddMenu language separator parsing
Fixes bug #10926 that prevents SQ3 German Amiga from loading
2019-03-29 19:12:52 +02:00
sluicebox 0008fab4f5 SCI: Fix Mac icon bar crash on restart (KQ6, FPFP)
Add support for reinitializing the mac icon bar when restarting.
Restarting runs the game's init script which calls KPlatform again.
Prior to this, restarting these games would fail an assertion.
2019-03-25 11:42:54 +02:00
Lars Skovlund 4b6e0e0e7d SCI32: Add feature detection for plane id base
This provides a generic fix for AddScreenItem crashes in early SCI32
floppy games that have previously required individual script patches.
2018-12-28 11:55:32 +02:00
Filippos Karapetis 27699a2e71 SCI32: Fix regression in VMD player 2018-12-27 15:03:22 +02:00
Colin Snover 02586ca220 SCI: Fix incorrect ifdef name in Video32 2018-12-05 01:02:27 +02:00
Kawa c22e8ebfd0 SCI: fix full view remap effect (#1432) 2018-12-03 22:31:23 +02:00
Kawa ca2209cb5f SCI: Add support for The Dating Pool (#1403) 2018-12-02 22:56:19 +02:00
D G Turner 09abcc5c2c SCI: Fix Fall Through Compiler Warnings. 2018-11-13 12:10:30 +00:00
Filippos Karapetis 6a32f07ee8 SCI32: Add support for upscaling VMD videos
This feature can be used for the Windows version of KQ7, as well as
PQ:SWAT
2018-10-25 02:55:35 +03:00
Filippos Karapetis 66cbaeefe2 SCI32: Adapt the pathfinding debug code to work woth SCI32 games 2018-08-25 12:39:12 +03:00
Filippos Karapetis 52ff27746f SCI32: Fix fade-in for some screens in Hoyle 5 2018-08-21 03:36:07 +03:00
Torbjörn Andersson bc1a9b06d4 SCI: Use LarryScale in games that support it, not just LSL7
This is the solution discussed in bug #10568 ("SCI: PHANT1: Crash
on startup"). I believe that it's the correct solution, and that
ScummVM will do the right thing, but I'm not 100% sure.
2018-06-29 21:59:39 +02:00
David Fioramonti fab1894f21 SCI32: Only enable larry scaler for LSL7
Fixes Trac#10568.
2018-06-15 11:39:28 -05:00
Thierry Crozat 4229e2642e Merge pull request #1141 from DanielSWolf/larryscale
SCI: High-quality "LarryScale" cel scaler for LSL7
2018-06-03 17:41:47 +01:00
Willem Jan Palenstijn 65861bb914 SCI: Change workaround for PalVary / Animate race condition
The new approach is to delay kAnimate briefly (with an 68ms timeout)
while there is a zero-tick PalVary running, so that it has time to
trigger.

The previous workaround would immediately process a zero-tick
PalVaryInit/PalVaryReverse. This caused problems in QfG3 (bug #10304)
where it interfered with PalVaryPause.

The previous workaround could also be modified to handle pause/resume,
but this new approach should be closer to SSCI's behaviour, which used a
timer for a zero-tick PalVary too.

This fixes bug #10304, and keeps #5298 fixed too.
2018-04-22 22:54:18 +02:00
Adrian Frühwirth 9e3376c8d0 JANITORIAL: Silence GCC warning 2018-03-23 18:42:37 +01:00
Daniel Wolf 999cf71dcf SCI: Add game option for enabling/disabling LarryScale in LSL7
All other SCI games continue using the default scaler.
2018-03-16 22:33:06 +01:00
Daniel Wolf f8c32b07e7 SCI: Use LarryScale cel scaler instead of nearest-neighbor 2018-03-16 22:33:06 +01:00
Colin Snover 617497d094 SCI: Fix UB shifting negative integers 2017-11-19 12:48:14 -06:00
Colin Snover e26a677f62 SCI32: Tell OSystem to show/hide cursors as appropriate
This is needed so that the system cursor can be appropriately
hidden outside the game's draw area, to match the normal behaviour
of ScummVM.
2017-10-15 19:03:09 -05:00
Colin Snover 432fd522d2 ENGINES: Remove default1x scaler flag
This flag is removed for a few reasons:

* Engines universally set this flag to true for widths > 320,
  which made it redundant everywhere;
* This flag functioned primarily as a "force 1x scaler" flag,
  since its behaviour was almost completely undocumented and users
  would need to figure out that they'd need an explicit non-default
  scaler set to get a scaler to operate at widths > 320;
* (Most importantly) engines should not be in the business of
  deciding how the backend may choose to render its virtual screen.
  The choice of rendering behaviour belongs to the user, and the
  backend, in that order.

A nearby future commit restores the default1x scaler behaviour in
the SDL backend code for the moment, but in the future it is my
hope that there will be a better configuration UI to allow users
to specify how they want scaling to work for high resolutions.
2017-10-07 12:30:29 -05:00
Colin Snover c7c5f28bdb SCI32: Clean up scriptWidth/scriptHeight/screenWidth/screenHeight
This removes the unnecessary Buffer subclass and stops most places
where the output buffer was being interrogated about dimensions
instead of GfxFrameout.
2017-10-06 22:56:26 -05:00
Colin Snover 15f6e6b97e SCI32: Remove resolved TODO in helpers.h 2017-10-06 22:56:25 -05:00
Colin Snover b6c3f0f547 SCI32: Clean up CelObj
* Rewrap comments to 80 columns
* Clarify comments where possible
* Use smart pointers where appropriate
* Change view/pic flags detection to always use word-size
  (byte-size check for flag 0x80 was a compiler optimisation)
2017-10-06 22:56:24 -05:00
Colin Snover ac0a83a424 SCI32: Clean up GfxControls32
* Rewrap comments to 80 columns
* Clarify comments where possible
* Fix whitespace errors
2017-10-06 22:56:24 -05:00
Colin Snover d5e09a9f68 SCI32: Rewrap comments to 80 columns in lists32.h 2017-10-06 22:56:13 -05:00
Colin Snover 4521e9774a SCI32: Clean up GfxPaint32
* Rewrap comments to 80 columns
2017-10-06 22:11:03 -05:00
Colin Snover 31e1d0932c SCI32: Clean up Plane
* Rewrap comments to 80 columns
* Clarify comments where possible
2017-10-06 22:11:03 -05:00
Colin Snover 1b42146955 SCI32: Clean up GfxRemap32
* Rewrap comments to 80 columns
* Clarify comments where possible
2017-10-06 22:11:03 -05:00
Colin Snover a2c8674252 SCI32: Clean up GfxText32
* Rewrap comments to 80 columns
* Clarify comments where possible
2017-10-06 22:11:02 -05:00
Colin Snover f51b158f8c SCI32: Clean up GfxFrameout
* Rewrap doxygen comments to 80 columns
* Swap public/private sections so public APIs come first
* Clarify comments where easily possible
2017-10-06 22:10:51 -05:00
Colin Snover c413030be3 SCI32: Clean up Video32
* Rewrap comments to 80 columns
* Clarify comments where appropriate
2017-10-06 22:10:51 -05:00
Colin Snover 9d05bf7920 SCI32: Clean up GfxCursor32
* Rewrap doxygen comments to 80 columns
* Renamings for clarity
* Deduplicate copy/paint code
2017-10-06 22:10:51 -05:00
Colin Snover ff3503abde SCI32: Clean up GfxTransitions32
* Use containers where appropriate
* Re-wrap doxygen comments to 80 columns
* Clarify comments for parts of the engine that are understood now
  but were not understood at the time of the initial
  implementation
2017-10-06 22:10:50 -05:00
Colin Snover 0ac5d84062 SCI32: Clean up ScreenItem
* Rewrap comments to 80 columns
* Clarify comments where possible
* Use smart pointers where appropriate
2017-10-06 22:10:50 -05: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 8985f8f447 SCI32: Always sort kernel-generated screen items above script-generated screen items in last-ditch sort
Fixes Trac#10257. Fixes Trac#10261.
2017-10-02 21:35:21 -05:00
Colin Snover f46fa18006 SCI32: Stop trying to clean up uninitialized VMDs
Fixes Trac#10252.
2017-09-30 11:35:08 -05:00
Colin Snover b2966f3fc8 SCI32: Fix support for RAMA demo
Fixes Trac#10251.
2017-09-30 01:08:12 -05:00
Colin Snover 3cdf26b355 SCI32: Fix bad text rendering in RAMA
In SCI3, Sierra removed the ability of the main renderer to
automatically scale CelObjs with different source resolutions.
Instead, in SCI3, all CelObjs are treated as having the same
resolution as the screen (i.e. 640x480).

In all SCI3 games other than RAMA, keeping the code paths for
resolution-dependent scaling is not a problem because all the
assets and game code are correctly designed to use the same
640x480 resolution throughout. RAMA, on the other hand, was
written with the text subsystem set to a resolution of 630x450
(Phant1's screen resolution), and in SSCI, resolution-dependent
scaling code was not removed from the *text* subsystem. As a
result, RAMA's game scripts rely on the slightly larger scaled
dimensions coming out of the text system when determining the size
of screen items for rendering, and then also rely on the main
renderer ignoring the 630x450 resolution baked into the bitmaps
generated by the text subsystem when drawing them to the screen.
2017-09-29 19:56:24 -05:00