libmpq is a much simpler alternative to StormLib for reading MPQ archives.
We use our own fork of libmpq: https://github.com/diasurgical/libmpq
Impact:
* DevilutionX is now a lot more portable. Unlike StormLib, libmpq only
needs platform-specific code for Windows.
* Locks around file access **removed** (instead we duplicate the file descriptor for streamed audio only).
* RAM usage is **300 KiB** lower than StormLib.
* Stripped release linux_x86_64 binary is **32 KiB** smaller.
* Amiga build now hangs instead of crashing.
Users keep building non-release builds by copy-pasting the commands from
here.
As this uses a standard build flag (and not `-DBINARY_RELEASE=ON`),
users who are familiar with CMake or are building for development
will know to remove it.
Meanwhile, users who simply want to build from source will benefit from
optimized builds.
[ci skip]
SDL_mixer can only stream a single music track
SDL_audiolib has unlimited streams.
With this change, we finally have streaming sounds (respecting
sfx_STREAM).
Audio options can now also be set via diablo.ini, which should help us
better diagnose the static noise issues.
Unfortunately, OD Beta has a major regression with SDL joystick support,
as it always reports buttons as keyboard keys instead of actual buttons.
This partially breaks external keyboard support, where e.g. space no
longer acts as expected.
However, on balance, OD Beta is better than the 2014 firmware at this
point.