If we have only one thing being drawn, and that is opaque, we can
skip filling the render surface with background color.
This shaves another few wasted cycles of the FMV playback. (Since we
now don’t have to write the entire render surface TWICE).
This reduces the time spent in drawTickets() to ~60% of what it was before.
This caused an exception if a error() call occurs, rather than a
clean exit. This occurred in the defaultErrorHandler() function of
engines/engine.cpp, probably due to g_system->getTaskbarManager()
returning a null pointer.
Untangled the audio and video track from each other, and the parsing
of the stream from the decoding of its data. Also fixed a memory leak
as it turns out deleting a Surface doesn't free its data. You have to
call free() in it.
I have only checked the intro, not every cutscene, but that seems to
work fine at least.
As an alternative to using the Screen class's functions, we can let
the VQA decoder draw directly to the backend. This won't work if the
game uses "hi-res mode", but I don't think that's ever the case for
Malcolm's Revenge. I believe the KyraEngine_MR::playVQA() function
ensures that the screen is properly updated after the movie has
finished.
This almost limits the VQA rewrite to vqa.cpp and vqa.h. Whether it's
better this way than changing the Screen functions to take a 'pitch'
parameter...? I don't know. But it's an alternative.
This removes overwrites in ReportHandlerScummVM which are simply the default
implementation anyway. A side effect is that this silences/fixes a warning
about the former onProgramChanged to hide an virtual method due to parameter
differences.
MIDI code will control volume via MIDI events thus the generated audio should
not be affected by mixer sound volumes.
The initial commit 0e6cdfd67580f75e912c5e92abb26821d032f74b added it as music
sound type. Might be copied from the (also) incorrect FluidSynth code.
MIDI code will control volume via MIDI events thus the generated audio should
not be affected by mixer sound volumes.
The initial commit(s) in d4d045b1174b4a48659f39f026ade42684b679bf /
13dc149ded691e718905049990dd0220230c500e added it as music sound type.
So, this seems to be a long standing issue.
Formerly the audio stream was registered as sfx. This is incorrect behavior
since the client code will control music volume with MIDI events on its own.
It seems 67b311713d8f4cfcd460a9649e0075f24278a048 introduced this very long
ago.
This should fix unintended coupling of sfx volume and music volume in BASS.