Age | Commit message (Collapse) | Author |
|
The Windows API has an _snprintf function that is not the same as
Unix's snprintf(): if the string is truncated then no trailing NUL
character is appended. This makes the function unsafe. Define a
replacement/wrapper called M_snprintf that works the same but always
appends a trailing NUL, for safety on Windows and other OSes that
behave like this.
Do the same thing for vsnprintf(), and update HACKING to list
snprintf/vsnprintf as forbidden functions. This fixes #375;
thanks to Quasar for pointing out the different behavior of these
functions.
|
|
|
|
|
|
The change in commit 62b5c6028.. broke the compile.
|
|
Use snprintf() in place of sprintf(). This is part of fixing #371.
|
|
Use snprintf() in place of sprintf(). This is part of fixing #371.
|
|
Use snprintf() in place of sprintf(). This is part of fixing #371.
|
|
Use snprintf() or other functions in place of sprintf(). This is part
of fixing #371.
|
|
Mistake introduced in previous commit.
|
|
As part of this, add DIR_SEPARATOR_S as a string version of the
DIR_SEPARATOR macro. Change M_TempFile() to return a string allocated
on the C heap rather than the zone heap.
This is a first step towards fixing #371.
|
|
Use M_StringCopy() instead of strncpy() in the Dehacked code.
|
|
Vanilla Hexen makes you specify the demo name to play by giving
the plain lump name, eg. heretic -playdemo mydemo to load mydemo.lmp.
It doesn't work if you specify the extension or the full file path.
As a convenience and to match the behavior of Chocolate Doom, allow
paths and extensions.
Also rework the code for other games so that they're slightly more
consistent. This fixes #301.
|
|
Vanilla Heretic makes you specify the demo name to play by giving
the plain lump name, eg. heretic -playdemo mydemo to load mydemo.lmp.
It doesn't work if you specify the extension or the full file path.
As a convenience and to match the behavior of Chocolate Doom, allow
paths and extensions.
This fixes half of #301.
|
|
Add a section to the HACKING file listing unsafe C library functions
that should not be used.
|
|
Remove some remaining uses of strncpy() and use M_StringCopy() instead.
|
|
Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
|
|
Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
|
|
Where a pointer is to a buffer that does not need to be mutable for
the operation of the function, use const char * instead. This avoids
some type errors where constant string are passed.
|
|
Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
|
|
Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
|
|
Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
|
|
|
|
Just as M_StringCopy behaves the same as strlcpy(), M_StringConcat
behaves the same as strlcat(). Use this in one location.
|
|
It's more readable to write "M_StringEndsWith(..." than doing a bunch of
pointer arithmetic, and this is a common pattern. Also add
M_StringStartsWith, M_StringJoin and M_StringCopy. The latter is a
safe alternative for strcpy() that works the same as OpenBSD's
strlcpy(). Use these functions in a few places where it makes sense.
|
|
Needed to properly fix bug #369.
|
|
The released linuxdoom source had the devparm ticker dots at a spacing
of two pixels rather than four pixels (as used in Vanilla Doom). In
commit 4a31ec8fcee20e.. I changed this back to four pixel spacing, but
forgot to multiply the number of tics to adjust as appropriate. Fix
this so that the dots are calculated just like Vanilla Doom is.
Thanks to _bruce_ for pointing this out on Doomworld, and to
Alexandre-Xavier for questioning my reasoning when I wasn't convinced
that the current behavior was wrong. This fixes #360.
|
|
Vanilla Hexen allows the game startup to be aborted by pressing the
escape key. This can also be used to abort netgame startup. Add back
this functionality by polling the SDL event loop; this feature only
works if the graphical startup is enabled, but that's good enough.
|
|
Thanks to Brad Harding for the bug report. This fixes #319.
|
|
Remove special logic for setting a scale factor (2x, 3x, etc.) when
running fullscreen instead of windowed. This fixes a crash due to the
fact that I_GraphicsCheckCommandLine() is called before SDL's video
subsystem is initialized.
This makes -2 identical to -geometry 640x480, which is arguably a
better (more easily comprehensible) behavior.
Thanks to Fabian Greffrath for reporting the bug. This fixes #338.
|
|
Doom, Heretic, Hexen and Strife have different default SFX and music
volumes. Make sure the setup tool sets the appropriate default when
creating a new configuration file.
Thanks to Alexandre-Xavier for reporting this and providing the
correct defaults. This fixes #347.
|
|
Strife's default music volume is 13 as opposed to Doom's value of 8.
This was apparently not changed during the development of Chocolate
Strife. Thanks to Alexandre-Xavier for noticing this and providing the
correct value (bug #347).
|
|
There is no real scan code for the PrintScreen key under DOS, but it
is convenient to be able to bind it as a screenshot key. Define a
"fake" scancode (126) to represent PrintScreen so that it can be
represented as a key binding in configuration files. Also add some
comments/notes to the scantokey[] lookup table.
This fixes #369.
|
|
|
|
Fixes static linking and libpng won't link without it anyway.
|
|
commit 42faefce1fd03 added code to set the GUS patch path
automatically when the BFG Edition is installed, but this caused
problems because gusconf.c is not included as part of the build for
the setup tool. Use D_SetVariable() instead which accomplishes the
same thing without a hard dependency.
|
|
It is useful to be able to set variables through an API provided by
the config module; this means that it is possible for one module to
set config variables of another in a more loosely-coupled way.
|
|
|
|
|
|
Doom 3: BFG Edition installs copies of the GUS instrument files
(patches) that can be used for the GUS pseudo-emulation. Detect these
on startup if no GUS patch path has been configured and configure
gus_patch_path config variable automatically.
This fixes #333.
|
|
Initialize low-level sound startup (calls to I_InitSound) separately
from the high-level sound startup (S_Init). In particular, make sure
that SDL sound is initialized before the textscreen multiplayer
waiting screen is shown. This is an attempt to fix a bug with sound in
multiplayer games on Windows; calling SDL_QuitSubSystem(SDL_INIT_VIDEO)
(on closedown of the textscreen library) causes subsequent attempts to
initialize audio to fail.
Big thanks go to Alexandre-Xavier (AXDOOMER) for working out a fix for
this bug and James Haley (Quasar) for giving some technical background
about the lack of separation between SDL subsystems. This (hopefully)
fixes #270.
|
|
In #364 I recommended -1 as the default to avoid taking screenshots in
some situations where a key event is posted for key 0. It turns out
that wasn't such a great idea, as -1 is not parsed properly by the
config parser, and is shown as ??-1 in the setup tool. Default to zero
instead, and add guards to prevent screenshots being taken by mistake.
Thanks to Alexandre-Xavier for pointing this out.
|
|
The -timedemo flag is broken in Vanilla Heretic/Hexen, as not all
fields are read from the demo headers. Fix it, as there's no utility
in having it nonfunctional and plenty of utility in having it
functional. This fixes #300.
|
|
Add -gameversion options for v1.666, v1.7, v1.8. Set demo and savegame
headers appropriately depending on version. Also add an enum entry for
Doom v1.2 but no code support for it yet.
|
|
A deathmatch player spawning facing directly west does not see the
normal teleport fog (or hear it). This is because of an angle that
should be unsigned but is actually signed. Import PrBoom's code to
emulate this bug. This fixes #186.
|
|
Extend from 96 to the full 128 entries found in the frequency table in
the Vanilla .exes. This was helpfully posted by Gez to the Doom wiki:
http://doomwiki.org/wiki/Talk:PC_speaker_sound_effects
Change from the current scheme of storing frequency values to using
the timer divisor values used by the Vanilla .exes; divide into the PC
timer frequency to calculate the frequencies to play.
Thanks to Gez for dumping the full list of frequencies; this fixes #336.
|
|
Preserve the snd_maxslicetime_ms variable when loading/saving configs
in the setup tool.
|
|
Mix_SetMusicCMD() allows a program to be specified to configure an
external program to be invoked for music playback. Add a config
variable (snd_musiccmd) to allow this to be set from a configuration
file. Thanks to Holering for his comments on Doomworld about how to do
this.
|
|
Add snd_maxslicetime_ms variable to control the size of the output
sound buffer, and reduce the default from 70ms to 28ms to match Doom's
35fps timer. Thanks to Holering for reporting this (fixes #345).
|
|
There was a bug where it was possible to keep moving the background
when the boundaries of the map were reached. This is because the code
to move the background was done in calls to AM_Drawer(), which is
fundamentally a bad idea. Some old commented-out code shows that this
was previously done in AM_Drawer (same location that scrolls the map
itself), but it was moved. Move it back.
Thanks to Chris Fielder for the bug report; this fixes #321.
|
|
Print a warning if the user is attempting to record or playback a demo o...
|