81367 Commits

Author SHA1 Message Date
Colin Snover
3f0e061eaa SCI32: Refactor DuckPlayer to use common video playback code
This lets DuckPlayer support configurable black-lined video and
configurable high-quality scaling.
2017-07-06 19:12:39 -05:00
Colin Snover
f15f9e3b7c SCI32: Refactor Video32 code to reduce code & feature duplication 2017-07-06 19:12:39 -05:00
Colin Snover
71256a0d3c SCI32: Improve playback quality of SEQ videos 2017-07-06 19:12:39 -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
8cb35442c0 SCI32: Improve kShowMovieWin (AVI) rendering
1. Added a new game option for linear interpolation when scaling
   video in ScummVM builds with USE_RGB_COLOR;
2. 8bpp videos that put black in a palette index other than 0
   (KQ7) should now always render correctly without the earlier
   game-specific workarounds which did not work very well;
3. Data from game scripts regarding video size and position are
   now ignored, since games always just try to show videos in the
   middle of the screen, but frequently get this a little bit
   wrong, causing either bad aspect ratios or off-center videos;
4. Builds without USE_RGB_COLOR support will not crash when
   attempting to play >8bpp AVIs, like those from KQ7 2.00b.

Fixes Trac#9843, Trac#9762.
2017-07-06 19:12:38 -05:00
Colin Snover
e9bef89646 SCI32: Remove useless call
The show list is already cleared by showBits so it does not need to
be cleared a second time.
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
f7fcce24e1 SCI32: Remove unused method declaration 2017-07-06 19:12:37 -05:00
Colin Snover
35346bc71b SCI32: Update mouse position for rendering in all frameOuts 2017-07-06 19:12:37 -05:00
Colin Snover
1466fb247e SCI32: Add workaround for SQ6 2017-07-06 19:12:36 -05:00
Colin Snover
798c6bf34d COMMON: Add yet another GUIO option flag
SCI engine has very many game options.
2017-07-06 19:12:36 -05:00
Colin Snover
7ce2e4cf08 GRAPHICS: Allow nearest neighbor scaling of 1Bpp and 2Bpp TransparentSurfaces
This is one small step toward allowing more shared usage of
existing scaling code.
2017-07-06 19:12:36 -05:00
Colin Snover
1fbee2f51e SCI32: Allow skipping SEQ animations
In SSCI, SEQ animations cannot be skipped.
2017-07-06 19:12:36 -05:00
Colin Snover
9f910535c9 SCI32: Centralise OSystem screen updates 2017-07-06 19:12:35 -05:00
Colin Snover
f40ea8c2e7 SCI32: Stop setting unused palette timestamp property 2017-07-06 19:12:35 -05:00
Colin Snover
a689fee663 SCI32: Speed up & deduplicate palette submission code 2017-07-06 19:12:35 -05:00
Colin Snover
332fabcb8a SDL: Only recreate SDL2 window when necessary
Destroying and recreating the SDL window whenever the video mode
changes in SDL2 is not necessary and causes several problems:

1. In windowed mode, the game window shifts position;
2. In fullscreen mode in macOS, every time the window is
   recreated, it causes the OS to play its switch-to-fullscreen
   animation again and emit system alert noises;
3. The window content flickers; and
4. The engine loses events from the old destroyed window.

This patch changes the SDL backend code to avoid destroying and
recreating the SDL window when using SDL2, except when switching
OpenGL modes, since there is no way to change the OpenGL feature
of a window.

There are still some outstanding issues with OpenGL where window
size ends up getting reset even though the user has resized it;
this will probably need to be addressed at some point in another
patch.

Thanks to @bgK and @criezy for their feedback which made this
patch much better.

Co-Authored-By: Bastien Bouclet <bastien.bouclet@gmail.com>
2017-07-06 19:11:54 -05:00
Paul Gilbert
6d37e1e88c TITANIC: Fix Arboretum Winter view enter animation 2017-07-06 18:24:23 -04:00
Paul Gilbert
11bb59a08f TITANIC: Fix NPC conversation crash 2017-07-06 16:33:45 -04:00
Paul Gilbert
e04815f932 TITANIC: Mark a few more sound playbacks as speech 2017-07-06 15:31:07 -04:00
Paul Gilbert
5e3ad4b236 TITANIC: Fix ship announcements with no content 2017-07-06 11:34:20 -04:00
Paul Gilbert
6044ba16ce TITANIC: Added sound command to debugger 2017-07-06 11:07:55 -04:00
Paul Gilbert
0b18b0b1b5 TITANIC: Fix crash clicking on MissiveOMat login prompt 2017-07-06 08:48:54 -04:00
Paul Gilbert
1972fd0537 TITANIC: Don't show Access Denied on MissiveOMat after successful login 2017-07-06 08:25:14 -04:00
Paul Gilbert
6a16dfa670 TITANIC: Fix Rooms Glyphs list only allowing a single custom entry 2017-07-05 21:19:12 -04:00
Paul Gilbert
6d0207c7d6 TITANIC: Fix refreshing inventory tooltip when chicken gets cold 2017-07-05 19:58:11 -04:00
Paul Gilbert
7ed7e022f1 TITANIC: Fix parrot to only eat hot plain chickens 2017-07-05 18:23:23 -04:00
Bastien Bouclet
6f46b174df MOHAWK: Myst: Poll for events every 10ms when waiting 2017-07-05 20:35:26 +02:00
Bastien Bouclet
31d428fd02 MOHAWK: Use movie slots instead of movie ids for stored opcodes
Fixes Trac#9873.
2017-07-05 19:13:32 +02:00
Paul Gilbert
afe27c6de8 TITANIC: Don't allow GMM save/loading during cutscenes 2017-07-05 08:22:05 -04:00
Tobia Tesan
348edec176 DIRECTOR: Make 3-ary processEvent private 2017-07-05 08:35:33 +02:00
Tobia Tesan
2ae7d9f86b DIRECTOR: Handle kEventPrepareMovie with 1-ary processEvent 2017-07-05 08:35:33 +02:00
Tobia Tesan
9ddb97b4ed DIRECTOR: Handle kEventExitFrame with 1-ary processEvent 2017-07-05 08:35:33 +02:00
Tobia Tesan
7b675fc1de DIRECTOR: Handle kEventNone with 1-ary processEvent 2017-07-05 08:35:33 +02:00
Tobia Tesan
8a6dce9fd3 DIRECTOR: Handle kEventIdle with 1-ary processEvent 2017-07-05 08:35:33 +02:00
Tobia Tesan
1d5c92783e DIRECTOR: Add processSpriteEvent 2017-07-05 08:35:33 +02:00
Tobia Tesan
fd310f1fd3 DIRECTOR: Move executeImmediateScripts to lingo.cpp 2017-07-05 08:35:33 +02:00
Tobia Tesan
f1d2149db6 DIRECTOR: Include director/frame.h and sprite.h in lingo.cpp 2017-07-05 08:35:33 +02:00
Tobia Tesan
9735fb06ca DIRECTOR: Move #define CHANNEL_COUNT to director.h 2017-07-05 08:35:33 +02:00
Tobia Tesan
265b0882f6 DIRECTOR: Use 1-ary processEvent call to start movie
Perahsp a specialized Lingo::start() would be better for clarity for
this single one?
2017-07-05 08:35:33 +02:00
Tobia Tesan
8a6ef727cf DIRECTOR: Add kEventStart case for processGenericEvent 2017-07-05 08:35:33 +02:00
Tobia Tesan
5a4942b6c5 DIRECTOR: Remove "primary event handler" comment
According to D4 manual only mouse/key/timeout event can have primary
handler
2017-07-05 08:35:33 +02:00
Tobia Tesan
3059c95abd DIRECTOR: Handle keyDown in 1-ary processEvent
Might change semantics by calling the standard chain for input events.

That is what the D4 docs suggest anyway.
2017-07-05 08:35:33 +02:00
Tobia Tesan
137e10eef2 DIRECTOR: Add kFrameScript call
This follows from D4 docs.

Changes semantics, *might* break stuff.
2017-07-05 08:35:33 +02:00
Tobia Tesan
0584f936dc DIRECTOR: Reorder processInputEvent 2017-07-05 08:35:33 +02:00
Tobia Tesan
bfe3a316c4 DIRECTOR: Swap order of processEvent calls
This appears to be the correct order from docs and makes code easier to
reorder.

*Might* break stuff though.
2017-07-05 08:35:33 +02:00
Tobia Tesan
57dbfbf988 DIRECTOR: Call primaryEventHandler in processInputEvent 2017-07-05 08:35:33 +02:00
Tobia Tesan
c267bc208f DIRECTOR: Handle kEventPrepareFrame in processFrameEvent 2017-07-05 08:35:33 +02:00
Tobia Tesan
963bc4a351 DIRECTOR: Move kEventMouseUp/Down handling to processInputEvent 2017-07-05 08:35:33 +02:00