This adds emulation for the dual OPL2 FM synthesis chip configuration to the
supported hardware OPL3 options: RetroWave OPL3 and OPL3LPT. This enables
stereo AdLib playback for SCI (and possibly other engines) on these devices.
This was already implemented for the OPL3 emulators (Dosbox and Nuked) and
ALSA. Generic code has been added to the OPL class to add similar emulation
for the other OPL3 options; this can also be easily added to any future OPL3
hardware or emulators which do not already have dual OPL2 support.
Fixes segfault when logging that an OPL driver doesn't support the
emulation type requested by a game.
The code used driver id as an array index, but this is incorrect
because array indexes depends on which drivers are compiled in.
This issue was identified and fixed in 2015, but this line was missed:
6f01600e12
Fixes the crash in bug #14413
This commit adds support for the SudoMaker RetroWave OPL3 sound card. Requires
the retrowave library.
Add the following settings to scummvm.ini:
retrowaveopl3_bus=serial
retrowaveopl3_port=<port> f.e. COM3 or ttyACM0
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.
The OPL2LPT is an OPL2 chip plugged on a parallel port. It is
write-only but otherwise acts as a classic AdLib. This commit adds
support for this device.
User is expected to have the right permissions on the parallel
port. By default, the first suitable parallel port is used. It is
possible to override that with the hidden configuration setting
"opl2lpt_parport".
It depends on the presence of the libieee1284 library which abstracts
a bit parallel port handling. An alternative would be to access
directly /dev/parportX on Linux. This would amount of code but it
would be Linux-only.
Tested with Indy 3 and SOMI.
The way I've configured ScummVM, the default is to use FluidSynth
for MIDI, and any game where I want AdLib overrides that setting.
I have set the DOSBox OPL emulator as the default.
However, this causes the game's "opl_driver" setting to be "auto",
which overrides the default setting, and usually picks the MAME
OPL emulator. To counter this, if it sees that "opl_driver" is
"auto", it will check the default setting.
In other words, only use "auto" if "opl_driver" isn't set on any
level. I think this is the behaviour that should cause the least
amount of astonishment.