Commit Graph
86814 Commits
Author SHA1 Message Date
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 SnoverandBastien Bouclet 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
Tobia Tesan 5a9a1571fa DIRECTOR: Include sprite.h in lingo-events.cpp 2017-07-05 08:35:33 +02:00
Tobia Tesan f9302e2c94 DIRECTOR: Handle frame enter/exit with 1-ary processEvent call 2017-07-05 08:35:33 +02:00
Tobia Tesan ce3aaa08d0 DIRECTOR: Implement processFrameEvent 2017-07-05 08:35:33 +02:00