Follow up on: https://bugs.scummvm.org/ticket/11368
Adds detection for German Playstation version.
Also corrects detection of Japanese Playstation version.
Files need to be extracted/split correctly from DISCWLD.LFD/DISCWLD.LFI. I will attach a QuickBMS script to the PR, which can be used on the German and Japanese CDs to extract the data, or could be used to inform handling the LFD/LFI files directly in ScummVM. The QuickBMS script mention in the above request ticket isn't quite right for the Discworld 1 files.
getSampleIndex and getSampleFile in tinsel.cpp now fallback to ENGLISH files if they fail to find (e.g.) GERMAN.IDX.
This was an easy way to add support for the PSX German CD, without breaking the German DOS CD, Japanese PSX CD etc.
The German PSX version should be as compatible as the English PSX version.
The Japanese PSX version subtitles are not supported, and cause ScummVM to crash when you first try to hover over an object. However, you can view the intro cutscene, and hear the audio.
This is one of the players that has had problems with deadlocks
recently. I'm not very well versed in threaded programming, but arthxx
has promised to fix up some more players later. This one was used as
proof of concept because it deadlocks a lot.
This is so that individual audio players can share the same mutex as the
mixer. When they have their own, it's apparently quite easy to
accidentally introduce deadlocks. Particularly when the audio player is
shut down.
../scummvm/gui/options.cpp: In member function 'virtual void GUI::OptionsDialog::apply()':
../scummvm/gui/options.cpp:647:82: warning: comparison of integer expressions of different signedness: 'uint' {aka 'unsigned int'} and 'int' [-Wsign-compare]
647 | else if (scalerPlugins[defaultScaler]->get<ScalerPluginObject>().getFactor() != g_system->getDefaultScaleFactor())
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Previously it could return true for sounds that have already finished if the
game is paused (because the AudioProcess is not run when paused). This only
really affects modal gumps.