This changes employs a horrible hack to connect the ASCII Quake II to
the UTF-16 WinAPI. The path to "My Documentes" is read in UTF-16, then
converted to a old "DOS style path" with 8.3 characters. This DOS path
has by convention no UTF-16 characters in it and can be converted into
a normal ASCII string. This ASCII string is the path used by Yamagi
Quake II. The conversion logic will fail if the "Windows to DOS
filename transistion" is deactivated in the registry (it's on by
default). In that case no homedir is used and the "Windows Roaming
Mechanism" kicks in.
This brings in support for Microsoft Windows. While more testing is
necessary, the code seems to work quite well (tested by playing through
the first 3 units). Supported Windows versions are Windows XP and
above. Remaining problems are:
- The keyboard layout is always US QWERTY. This is due to a bug
in SDL. While a work around is possible, most likely it won't
be applied to Yamagi Quake II.
- The SDL sound backend needs the "dsound" SDL driver which is
unavailable for 64 bit apllications on 64 bit Windows and
Windows 8. Users should use the OpenAL backend.
- There me be problems if the %PROFILEDIR% containts unicode
characters.
This branch brings fixes to some potential problems found by clangs
"scan-build" tool. The biggest change is es new PRNG, which should
fox some problems related to bad pseudo random number, noticeable
especially after long session. The new PRNG is also a prerequiste
to Windows support.
This is necessary due to the extrem long homedir-pathes in some Windows
localizations. While it would be nice to have the same value on all
platform it would break existing savegames and don't think that it's
worth that.
With this change the homedir is no longer selected in the filesystem,
but in platform dependend functions. This allows us to use WINABI calls
for selection, resulting using the apropriate diretory on localized
versions of Windows XP.
caedes and some other people will probably kill me for this, but I'm the
idiot who has to maintain the code. And that's much easier if it's in a
readable und writeable state.
With sound quality "high" nearly all sound is provided as 16 bit PCM
with 2 channels. Since most players use this setting, provide an optimed
case for it. This should also solve the cracking due to overshot
soundbuffers, which was especially noticeable on Windows. This changes
only effects the old SDL soundbackend and not OpenAL.
Under Windows all config data is written to %USERPROFILE%\AppData\
Local\YamagiQ2. To archive this code was added that translates Windows
pathes with backslashes into Unix pathes with normal slashes.
This is necessary since the default "waveout" driver on windows is
incompatible to Quake II (due to too big output buffers) and "dsound"
can't be forced since it's not available on some installations. The
default driver is choosen by platform:
Windows -> dsound
FreeBSD -> dsp
Linux -> alsa