* use cJSON library
* implement array_foreach, custom memory allocator for m_array
* use Doom 1 duration of the "entering" screen for id24 animation
* add player->visitedlevels array
* add U_BuildEpisodes function, try to emulate behaviour of KEX port and R&R
* update workflows
* implement stream_module_t interface, use it for sndfile and modplug
This way we got the proper pause, loop and gain for the modplug module.
* switch to OpeanAl for sound mixing
* Rewrote Load_SNDFile() to use float format. Made libsndfile mandatory.
* update main.yml workflow
* implement OpeanAl music streaming
* remove i_sdlmusic.c and SDL_Mixer dependecy
* enable mpeg support in libsndfile
* require SndFile 1.1.0
* check SF_FORMAT_MPEG_LAYER_III symbol
* use AL_GAIN for opl_gain
* switch to vcpkg for MSVC build
* Remove library downloads and install in MSYS2 environment.
* Add vcpkg.json with dependencies.
* add vcpkg to CI
* fix parallel linking conflict (files with the same name)
* use vcpkg targets (fix debug build)
* delete cross compilation toolchain files, update README.md
* switch to ninja for MSVC build
* turn off MSYS2 update
* use binary caching feature, save to GitHub using NuGet backend
* This works much more robust, also it's recommended method:
https://github.com/microsoft/vcpkg/blob/master/docs/users/binarycaching.md
* move MSVC workflow to separate file, don't run it on pull request