Age | Commit message (Collapse) | Author |
|
This removes the unnecessary Buffer subclass and stops most places
where the output buffer was being interrogated about dimensions
instead of GfxFrameout.
|
|
* Rewrap comments to 80 columns
* Clarify comments where appropriate
|
|
Fixes Trac#10252.
|
|
Convert macros and vars to enums, rename keyboard events in
preparation for adding key up events, clean up unnecessary nested
conditionals, add TODOs for potential future work.
|
|
In a couple of places, Lighthouse updates the renderer with screen
items for the next room before the room transition video plays.
This is normally fine when using the compositing video renderer
because the videos are drawn into new planes which occlude the
screen items, so the screen items are culled from the draw list
and do not submit their palettes. However, when in HQ video mode,
we currently force the overlay renderer, which was not blocking
screen items before forcing a frameOut, so the screen items'
palettes got submitted prematurely in this case and caused bad
rendering after the video finished playback.
Now, if we are forcing into the overlay code path, we still create
a blank plane behind the overlay before the forced frameOut in
order to correctly occlude screen items and keep them from
participating in rendering before they normally would.
Fixes Trac#10233, Trac#10235.
|
|
|
|
OpenGL backends don't always support the pixel format that is
returned by the Indeo 3 decoder when playing the GK2A.AVI from the
GK2 demo. If this happens, use the backend's preferred pixel format
and convert in software.
If a backend doesn't support any 16-bit or 32-bit format, the
playback code will error out. This is probably fine, since there
are not really any of those any more.
Fixes Trac#9994.
|
|
This is needed for 8.VMD in Lighthouse (room 380, the credits
room), which is rendered partially off the bottom of the screen.
OSystem does not accept rects that are offscreen.
Technically this video probably should not have been doubled
vertically by game scripts, but there is not enough space to fix
the rendering with a regular script patch, and it is a very
unimportant video.
|
|
|
|
Refs Trac#9974, Trac#9975.
|
|
|
|
This should make things slightly more responsive and avoids
unnecessary rendering of frames that are just going to disappear
in a moment.
|
|
Calling through EventManager::getSciEvent to flush events is
pretty inefficient and created stalls that lead to dropped
frames during the chapter 7 chase in Phantasmagoria 1.
If necessary, performance could be improved further by extending
Common::EventManager to expose SDL_FlushEvents, but this seems to
finish in 0-1ms so should be OK for now.
Refs Trac#9974, Trac#9975.
|
|
This lets DuckPlayer support configurable black-lined video and
configurable high-quality scaling.
|
|
|
|
|
|
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.
|
|
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.
|
|
In SSCI, SEQ animations cannot be skipped.
|
|
|
|
|
|
|
|
Videos in GK2 use this flag (e.g. the chapter 6 intro).
Now that GfxPalette32::updateHardware no longer calls
OSystem::updateScreen (only GfxFrameout::frameOut does this now),
every time a palette swap occurs during playback, there is a frame
of blackness that should not exist. This is because the order of
operation is:
1. Send black palette
2. Call frameOut (which updates the screen)
3. Send new, correct palette
4. No frameOut (so the screen is not updated with the correct
palette)
OSystem::updateScreen cannot be called multiple times for the same
frame due to vsync, but also, there does not appear to be any
reason to send a black palette, since it seems to be intended to
avoid temporarily rendering video frames with the wrong palette on
a hardware device that cannot guarantee simultaneous application
of a new palette and new pixel data. ScummVM does not have such
a problem, so this feature appears to be unnecessary for us.
For the moment, this 'feature' remains hidden behind an ifdef,
instead of being removed entirely, to avoid potential confusion
when comparing VMD code from SSCI.
|
|
|
|
This was causing uninitialised garbage data from the scale buffer
to be drawn to the screen.
|
|
|
|
Used by RAMA, when playing a video at the Hub Camp computer at the
beginning of the game (room 1004).
|
|
The boost is intended to compensate for the darkness caused by the
black lines, so should not be applied when there are no black
lines. This fixes too-bright videos in at least LSL7.
|
|
In at least RAMA, when using the pocket computer to view a mail
and then pressing the "return" button, the ScreenItem containing
the VMD will be destroyed before the VMD player is told to close
the video, resulting in a use-after-free trying to access the
bitmap ID through the deleted ScreenItem.
|
|
|
|
|
|
GK2 includes some VMDs in the RESSCI.00n volume bundles for the
chase scene at the end of Chapter 6.
|
|
Fixes Trac#9662.
|
|
|
|
Used in Shivers room 35170 when pressing the play button.
|
|
|
|
For example, Shivers room 932 when subtitles are enabled.
|
|
Fixes Trac#9588.
|
|
|
|
|
|
|
|
Used only by chapter 7 of Phant1.
|
|
CID 1361588.
|
|
The sleep values for video playback are the amount of time until
the next frame needs to be displayed, whereas speedThrottler is
used to ensure that a given amount of time always elapses between
two triggered speedThrottler calls.
|
|
|
|
Used by Lighthouse.
|
|
|
|
Drawing the cursor in this mode will result in a read overflow as
it is 8bpp.
|
|
|
|
|