Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New features, sync with upstream (#4)
* ignore stuff * ignore more * add ROL support * fix bug which is also still in adplug HEAD. * list descriptions of file formats * add example LDS file * add example D00 file * add AdLib MIDI Music Format sample file * set either YM3812 clock or YMF262 clock, depending on mode * Update README.md * RIX test file * note on standard.bnk, which is needed to convert ROL files * script to extract Softstar RIX files from MUS.MKF * remove duplicate * add missing LDS entry to list * support LAA Lucas Arts Adlib music files * add LAA and CMF sample files * support Sierra SCI files * put extreme verbosity under command line option * change boolean from int to bool * suppress input file format debug information unless -d option is specified * show which file format driver we are using. we cannot use gettype() because that might depend on values read from the header which we have not read yet. * enable -DDEBUG (some LogWrite in some drivers were not compiled) separate debug log messages from error log messages * globals are always initialized to 0 * fix compiler warnings * only ignore build directory, always use out-of-tree builds! * useful tool to check which a2m files can be converted (or played with adplay) * add A2M: AdLib Tracker 2 support * proper error reporting when a2m version is not supported * version 1 and version 5 sample files. I cannot find 2,3,6,7 (with different compression) and 4,8 (without compression). * add S3M Scream Tracker 3 AdLib support * oops, fix left over half baked test code * also support .as3m extensions * (A)S3M sample tune * add RAW support * add Ultima 6 support * add u6m support * add u6m sample file * fix compiler warnings * static link and strip for release binaries * add SA2/SAT Surprise AdLib Tracker support * use std::map which appears sorted because it's a tree * fix compiler warnings (long types) * enable all warnings, fix dangling else, const on return type, possible uninitialized variables * fix compiler warnings. unused variables, uninitialized, dangling-else, different signedness, differnt size * sync with adplug HEAD. buffer overflow fix, unused variabes commented out, normal .h extension * fix unsigned long types, .h extension, case fallthroughs, unused variables * compiler fixes: unused variables, case fallthroughs * actually enforce C++17 and disable GNU extensions. before, there was no -std=c++17 option added to the command line. * fix: modernize-use-override * remove dependency on IODash for simply writing a file. IODash also has an unsafe strcpy, although the socket code is not used. * do not download stuff we have no control over. include cxxopts.hpp directly, simplify build. * as per the C++ Core Guidelines, use .h for header files and be consistent with the rest of the project. * add timbre bank for demo1.mus * add AMUSIC Adlib Tracker support * add IMF/WLF Apogee/id/3D Realms music file support * Sync with latest adplug upstream. We lose all the compiler warning fixes I wasted an hour of time on, but we gain very easy updating of loaders when upstream changes. Only rad2.c (global_use_opl3 variable) and imf.c (comment out database code) are changed now! * Sync with adplug HEAD at Sat Oct 7 06:05:10 AM CEST 2023 * add missing debug.h and player.h * remove linking with stdc++fs * change %d to %ld for long ints * add missing argument comlo * add -W -Wall command line options again, except for unused variables and case fallthroughs. Both should be fixed upstream. Compiles cleanly now. All type related stuff (signed/unsigned comparissons) and other compiler warnings were fixed in the last two years since when adlib2vgm forked the library. * update list of supported formats, change -l output to match that of README.md which makes it easier to keep them in sync. * add AdLib Tracker 1.0 support. One line added to Formats.h, one entry added to main.cpp. * add BAM, Bob's Adlib Music Player support * add Easy AdLib 1.0 (aka FMPlay) by The Brain support * add CMF2: SoundFX Macs Opera CMF Player support * do not enforce .cmf extension * add forgotten cff files * Update README.md with latest additions. * add support for all XAD players, add support for DeFy AdLib Tracker * add Faust Music Tracker and God Of Thunder support * add HERAD Herbulot AdLib Player support * Update README.md with newly added formats * add support for HSC Adlib Composer and Johannes Bjerregaard's JBM Adlib Music Format. * skip detection of C compiler * add support for Ken Silverman Music, Mlat Adlib Tracker, and AdLib Visual Composer MIDIPlay Files. * only (over)write output file if a proper loader was found. * Update README.md with newly added formats * add support for Beni Tracker PIS module, add plumbing to force certain loaders to use OPL3. PIS sounds wrong on OPL2. * print using loader.... * add support for SNGPlay * add support for Note Sequencer v1.0 by sopepos. Even though it is properly forced to OPL3, it still doesn't sound the same as adplay. It seems that some writes are lost during the conversion. * final update of supported format list * write end of sound data marker at end of sound data * sort includes * consistent all tab style, add vi modeline at the bottom * make everything endian-proof. the old code did not work on big-endian systems. add defines for common constants. * simplify opl3 writes * refactor store_sleep. use push_back on vector for a single item. * remove stray spaces * expand store_sleep to also emit shorter codes for short sleep times. * further simplify store_sleep usage * update credits * decrease indentation by 1 by inverting condition * replace stray spaces * simplify. note that toupper() does nothing if !isalpha() * during rounding of sleep_samples, keep track of the residue for slightly better timing. * add GD3 Tag support * Update README.md, metadata is done. * Revert commit 289193b This accidentally broke KSM conversion, and probably others. Back to leaving an empty output file when no proper loader was found. * RIX loader can also demux MKF files directly. One of the few formats that support subsongs. * support subsong selection for the few formats that support multiple songs in one file. * add looping support. adplug does not return any loop points, so this basically enables looping the whole file. * Update README.md, remove looping todo. * exit with error on unmatched command line arguments * add auto-detect if 1) there is no extension, 2) the extension is unknown, or 3) the format is overridden with -f detect or a similar unknown format. * add two "unknown" example files. * Update README.md. File detection is implemented. * add test to detect possible future regressions * test: error if adlib2vgm is not found, and report if the results are identical. * also keep track of file sizes * ignore test results * invert diffs, reference first * emit more shorter (2 bytes) wait commands instead of the full 3 byte command. * test/island is slightly shorter now we emit more optimal wait codes. * simplify emitting wait n samples * do not write empty files if something went wrong. only open en write the output file if we have a successful conversion. * also test exit codes (0,1, or 2) * more robust error handling during save() * eliminate need for file/filename as class variables. * spaces back to tabs in CMakeLists, only include cpp files in sources (dependencies on h files are automatic wit CMake), add utfcpp to include directories. * add gzip support. * Update README.md, add zstr * add forgotten zstr header files * add check for static zlib * Update README.md add zlib at the bottom, build instructions * Update README.md compact usage examples, add examples of compression, looping and forced detection * Update README.md add example with longopts and subsong * Update README.md remove paths --------- Co-authored-by: Ivo van Poorten <[email protected]>
- Loading branch information