Based on https://doomwiki.org/wiki/MUSINFO
With corrections about the use of 14100, which
is actually not supported at the moment in
ZDoom, Eternity or the original PrBoom-plus.
d_deh.c has some compatibility conversion so we don't need to keep
unused flags from prboom+ or preserve any specific order.
However, for clarity, try to keep same order than dehacked to avoid
confusions. Flags that are not used in dehacked were placed last in
the bit mask.
To maximize forwards compatiblity in case the flags in Bits/Bits2
got shifted around in different ports, both Bits and Bits2 will
accept any of the flags when using mnemonics, and they will set
their values in the corresponding bits.
However, "Bits" will only unset (set to zero) the bits in the lower
32 bits, and "Bits2" will only unset (set zero) the second 32 bits
set. This is to prevent dehacked files that only manipulate the
first 32 bits from affecting the default values from "Bits2", which
would have otherwise held hardcoded behavior expected from Doom.
Also explicitly prevent rendering TNT1 sprite, instead of expecting it
to be a transparent/empty image.
This way we avoid errors when running without prboom.wad
Based on prboom-plus support.
However, unlike prboom-plus this will also support the music files
configured in prboom.cfg, if configured to do so.
Another difference is that the doom id 14165 is used for changing the
music to the default level track. Which is what ZDoom does.
See: https://zdoom.org/wiki/Classes:MusicChanger
Also, support for 14100 was added too since crispy/doom retro do that.
See: https://zdoom.org/wiki/MUSINFO
Add "auto" Framerate option to use the reported framerate from the
frontend targeted refresh rate.
It'll also be set as the new default for the Framerate option.
It'll fallback to 60 FPS if not obtained.
PrBoom+/UMAPINFO port prepends a 255 byte to the version of the demo
whenever UMAPINFO is being used, so that incompatible engines will
fail to detect the version.
This adds support for it allowing the rest of the versioning system
to be kept as it is and let UMAPINFO be used with all existing
formats. In case of a mismatch an error will be printed but the demo
be allowed to play regardless of the mismatch.
This groups actor info in one place and orevents mistakes when the order is wrong causing mismatches.
There was actually already some mismatches found and fixed while doing this (meat3).