opl additive voice volume calculation fix

opl additive voice volume calculation fix
opl note limitation and octave overflow fixes
Update i_oplmusic.c
opl additive voice volume calculation fix

opl additive voice volume calculation fix
Automap accuracy fixes

* Grid is not supported and gives no such message
* Spot marking behavior is substantially different
Revert "Automap accuracy fixes"

This reverts commit 12ecb4550e46ffdc28248be185738a88be033afd.
Automap accuracy fixes (against proper game)

* Grid is not supported and gives no such message
* Spot marking is substantially different
Remove unreferenced "grid" variable

And yes I double checked the commit target this time.
opl: Internally swap MUS/MID percussion channel #s.

MIDI uses channel 9 for percussion but MUS uses channel 15. As the
channel numbers matter when we run out of free voices (#468),
internally swap channels 9 and 15 so that channel precedence is
decided correctly.
Merge branch 'master' of github.com:chocolate-doom/chocolate-doom
Merge pull request #465 from khokh2001/opl-fix

opl additive voice volume calculation fix

Adjust how the OPL volume register values are calculated based on the
channel, note and global MIDI volume, to better match how the Doom
DMX library performs these calculations (thanks Alexey Khokholov /
khokh2001).
Merge pull request #466 from khokh2001/opl-fix2

opl note limitation and octave overflow fixes

Adjust how the OPL MIDI code behaves at extreme MIDI note values
(high/low octaves) to better match how the Doom DMX library decides
on the OPL register value (thanks Alexey Khokholov / khokh20010.
opl: Fix code style to match guidelines.

Eliminate tab characters and trailing whitespace. Add extra
whitespace around operators in for() expressions.
setup: Fix bug with strdup() of NULL pointer.

getenv() can return NULL if the environment variable is not set, but
the result of getenv() was always being passed to M_StringDuplicate()
without any check. This could cause crashes on some platforms.
Instead, rework the code into a first stage that gets the player's
name and a second that duplicates it into a mutable form.

This fixes #455.
hexen: Fix incorrect size on M_StringCopy().

The size parameter for the destination buffer used for this string
copy was one character too short, the result being that patch lump
names using the maximum length (8 characters) were having the last
character cropped off. This in turn caused problems with custom
WADs that added new textures with names like these: the game would
exit on startup with a message like:

  R_InitTextures: Missing patch in texture SKY3GOLD

Amazingly this bug was not noticed because most of the patches in
the Hexen IWAD file have short names of 7 characters or less. The
only exception I noticed was SKYWALL2 which maps to SKYWALL,
another patch, hiding the bug.

Thanks to ETTiNGRiNDER for reporting this bug to me and for
providing me with a private copy of his in-development PWAD that I
could use to find the problem.
hexen: Store minotaur start time as little endian.

The minotaur uses the first four bytes of the mobj_t args[] array to
store its spawn time; after a certain amount of time has passed the
minotaur self-destructs. But the level time was being copied from the
leveltime variable without any endian conversion taking place. For
compatibility with Vanilla Hexen savegames we need to store the start
time in little endian format.

This fixes the first issue noted in #477 (thanks Quasar).
hexen: audit calls to P_StartACS().

Scripts can have a maximum of three arguments when started
(see ACS_Execute / #80 linedef special type). This means that the
array of arguments passed must be at least three elements in
length. When loading scripts, check the argument count never
exceeds 3, and print a warning message if it does.

Don't pass pointers to structure members implicitly treating them
as elements of an array (as this relies on compiler-dependent
behavior as to how structure members are laid out). Instead, copy
values into a temporary array to make the intended behavior explicit.

This fixes #477. Thanks to Quasar for reporting it.
textscreen: Exit immediately when all windows close.

The main loop should exit when the last window closes, but the loop
code was waiting for one event to be received before this took
effect.

This fixes #474. Thanks to Alexandre-Xavier for the report.
Add Steam IWAD path for Strife: Veteran Edition