The Miles MT-32 MIDI driver extends MidiDriver_BASE, but does not
override its sysEx method, which does nothing by default. This
resulted in a few initialization sysex messages for The 7th Guest
not being sent.
I've added an implementation for this method.
Adapted from 3657db3a7b7bf640edb768f6ffc37df9d5073d22
My commit 0e734722 causes lockups in SCUMM (sometimes) and SCI (very often). I didn't like the way I had fixed this before, but in the end I now had to do it in a similar way.
Timers should be reset only the first time the enable flag is sent. This also requires some updates to drivers which didn't send these flags accurately.
- Increase internal sample rate to dividers of the actual chip clocks and fix other related things. This seems to improve certain sfx/noise generator like sounds. The performance still seems to be okay.
- Fix feedback glitch that caused some noise with certain instrument patches when playing short notes.
- Fix squarewave sound glitch (mute channels when volume is zero; this could also cause unnecessary noise).
- Some cleanup.
The previous fix did not work as the forbidden exception had no effect
since scummsys.h and thus forbidden.h had already been included prior
to the fluidsynth header being included. This also meant that undefining
the exception define after the header would have had no effect anyway.
This new solution was suggest by eriktorbjorn on bug #11278 and should
avoid the need to add an exception which would persist over the entire
source file.
The OPL3LPT is like the OPL2LPT with an OPL3 chip. Add OPL3 support to
the existing OPL2LPT driver.
There is no auto-detection of OPL3 capability. The user is required to
explicitly select OPL3LPT as their OPL device.
Tested with Sam & Max Hit the Road.
- move mac, pc speaker and fm-towns ims sound drivers into separate directory
(AdLib and MT32/GM drivers are still too entangled with common code to be moved so easily, especially MT32/GM. It would require lots of changes to the common code and possibly to all engines using the MidiDriver class. So I leave that for now.)
Paula low-pass filtering, as implemented by UAE.
The Amiga has two filtering circuits: a static RC filter
(only) on the A500, and an LED filter that can be enabled
or disabled dynamically.
By default, the Paula now doesn't apply the static RC
filter, but allows for enabling the LED filter (with
setAudioFilter()).
NOTE: At the moment, this code still uses floating point
arithmetics! It also calls tan() three times per
instantiation.
Fixes warning C4530: C++ exception handler used, but unwind semantics are not enabled
by disabling exceptions in the STL since ScummVM doesn't support them
This is another warning of the use of memset to clear a non-trivial
structure / class. This can be removed since the structure is cleared by
the constructor which will be called by the "new" so clearing this again
is redundant.
Apart from some basic cleanup this commit reverts a somewhat unfortunate design decision I made. The Kyra/Hof/Lol PC-98 sound drivers shouldn't inherit from the emulator. This commit separates the driver from the emulator putting some common interface in between. This should allow easier implementation of other PC-98 sound drivers.
No need to explicitly set it to 1.0. (There may have been in an
earlier version, to avoid any possible rounding error. But if so,
that reason is long gone.)
The high-resolution videos play back at much lower volume than the
original ones. This adds hard-coded values for how much to amplify
each cutscene. It's all done by ear, and it does introduce some
clipping, but I think it should be acceptable.
Of course, it could also be a problem with the audio decoder, so
this may be the wrong approach entirely.
It also hads further support for playing AIFF files. However, the
Blorb files for Lurking Horror & Sherlock on the if-archive website
don't seem to be valid AIFF files, so sound doesn't play using them
(This is basically an unnecessary emulation of a hardware limitation. EOB II will try to load approximately 70 KByte of samples for the outro sequence, which would lead to some missing sounds with the 64 Kbyte limit).