* Remove opl_sample_rate variable since it has no practical effect
* Deactivate idle OPL chips
Allocate free OPL voices from active chips before inactive ones
* Add comments for new constants
* Ensure OPL chip LFOs are kept in sync after dormancy
* Check for chip activations before sample generation to preserve sync
* Use correct OPL3 channel polarity by default
* Support multiple OPL3 chips
* Use native OPL sample rate and allow OpenAL to resample it
* Bind DMX OPL stereo correction to a config variable; default to vanilla
* Consolidate num_opl_chips variables; remove menu item
Use BETWEEN macro for mix clamping
* Disable upper register banks when dmx is in OPL2 mode
* Forward declaration of structures in headers where possible
* Use M_snprinf instead of sprintf
* Remove D_INTMAX D_INTMIN
* Don't change libtextscreen files
* Add miniz and win32 include directories
* 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
* crude OPL volume gain
* replace SDL_MixAudioFormat with MixAudioFormat with added gain
* remove unnecessary code path, set default gain = 2
* fix gain calculation
* apply gain only to `src1`
* cosmetic changes
* hot swap of music modules
* get a list of Windows MIDI devices
* move "MIDI Player" menu item only on Windows build
* increase MAX_MIDI_PLAYERS, index fixes
* fix hot swapping with UMAPINFO music, init OPL on song change
* initialize OPL only when necessary
* call I_ShutdownMusic in exit sequence
* don't send SysEx reset for MS GS Synth
* introduce `I_DeviceList` function, rearrange code
* `midi_player_strings` must be NULL at the end
* implement M_getenv for compatibility with non-Latin paths on Windows
* use regular wcslen
SDL_wcslen is undocumented
* fix memory leak
* cache the `wenv == NULL` case
* better support of C89 standart
* VC6 fixes
* __pragma attribute works for _MSC_VER > 1400
* use intptr_t for char*
* C89 has no designated initializers
* correct _MSC_VER versions
* fix check
* add stdint.h for old MSVC versions
Taken from https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h
* add stdint.h to miniz.h
* make packaging work without Python
* fix window_position initialization
* replace PACKED_STRUCT with i_packed_start.h i_packed_end.h
Thus, we do not use variadic macros from C99.
* undo cmake install changes
* fix icon for VC6
* remove DESCRIPTION and HOMEPAGE_URL from project()
* remove i_packed_start.h and i_packed_end.h
* whitespace fixes
* rename PACKEDPREFIX->PACKED_PREFIX and PACKEDATTR->PACKED_SUFFIX
* MINGW check doesn't work this early
* add check for minimum cmake version for MINGW targets
* add OPL emulation from Chocolate Doom
* get rid of detect_voices
* split the SDL music backend into a separate source file
* add post-realloc() check
* add OPL emulation copyright holders
* add some minimal comments
* add config variable and menu item
* sacrifice PCX format screenshot menu entry