Age | Commit message (Collapse) | Author |
|
The config file API previously relied on binding config variables
using M_BindVariable() which took a void pointer. It occurred to me
that if used on a boolean variable, this would be erroneous, but the
void pointer would make it impossible to tell. Split this into
separate M_Bind{Foo}Variable() functions based on type, which allows
for proper type checking on the pointers that are passed.
Vaguely related to #509.
|
|
strdup() can theoretically fail and return NULL. This could lead to
a crash or undesirable behavior. Add M_StringDuplicate() which does
the same thing but exits with an error if a string cannot be
allocated.
This fixes #456. Thanks to Quasar for the suggestion.
|
|
|
|
during the initialization instead of a hard-coded diversion in the
options menu itself
|
|
The main purpose for this parameter is to allow mods made for the Final
Doom IWADs to be played properly with Freedoom. Chocolate Doom detects
mission packs (pack_tnt/pack_plut) based on the file name. However, the
Freedoom: Phase 2 IWAD contains the textures for all three Doom2-format
IWADs, so can be used to play MegaWADs like Plutonia 2 that were
designed to be played with plutonia.wad.
Because mission pack detection is done based on filename, freedoom2.wad
is handled the same as doom2.wad (a sensible default). But this means that
when playing using a mod like Plutonia 2, the wrong level name is shown
on the automap screen (along with eg. intermission text). To fix this we
need a way to manually override the mission pack. -pack allows this to
be done. It's kind of tedious that this has to be done manually but at
least it can be done.
Thanks chungy for the bug report/suggestion. This fixes #449.
|
|
When using the -cdrom command line parameter (does anyone still use
that?), savegames should be written to c:\doomdata to properly
reproduce Vanilla behavior. These were being incorrectly written to
c:\doomdata\savegames\foo.wad instead.
This fixes #175. Thanks Alexandre-Xavier.
|
|
When playing using one of the Freedoom IWADs, set the gamedescription
string to be the full title of the IWAD being played, rather than
showing "Ultimate Doom" or "Doom II: Hell on Earth" etc.
This fixes #446 (thanks chungy).
|
|
The order in which we load dehacked patches is important. Change the
order so that IWAD dehacked patches are loaded before any others, and
so if, for example, we're playing with Freedoom, the Freedoom string
replacements can be overridden by those from extra mods we're playing
with.
As part of this, ditch DEH_Init() and use DEH_ParseCommandLine()
instead to handle the -deh option. Remove the DEH_Init() message
from startup and show messages about dehacked patches that we load
with the WAD files that we load.
|
|
As per suggestions from Fabian Greffrath:
* Change -noiwaddeh to -nodeh for consistency with other source ports
(Boom-derived source ports use this to disable loading of DEHACKED
lumps).
* Extend the parameter so that it also disables loading of the Chex
Quest dehacked patch.
* Refactor the code for loading IWAD dehacked patches to all be in a
single function.
|
|
Both the Freedoom IWADs and the rereleased HACX IWAD contain embedded
DEHACKED lumps that are automatically loaded on startup. However,
there may be some situations where it is undesirable to load these
patches - when loading certain mods such as BTSX, for example. For
these cases, allow the user to override the default behavior with a
command line parameter.
|
|
If using one of the Freedoom IWADs, detect it by checking for the
FREEDOOM lump, and then load its DEHACKED lump to apply the
cosmetic string changes that it includes. In case we're using an old
version of one of the Freedoom IWADs, don't bomb out with an error
while parsing the DEHACKED lump.
|
|
This change rewrites and simplifies the copyright headers at the top
of all source files:
* Remove "Emacs style mode select" line; this line was included in
the headers for the originally released source files and appears
to be to set the file type for old versions of Emacs. I'm not sure
entirely why it was required but I don't think it is any more.
* Remove "You should have received a copy of..." text from copyright
header. This refers to the old 59 Temple Place address where the
FSF headquarters used to be located and is no longer correct.
Rather than change to the new address, just remove the paragraph
as it is superfluous anyway. This fixes #311.
* Remove ---- separator lines so that the file headers are barer
and more simplified.
|
|
Having multiple binaries can cause some confusion - some users try to
run chocolate-doom with hexen.wad, thinking it is supported. Add a
startup check that makes sure the user is not trying to start the game
using the wrong IWAD file for the binary being run.
This fixes #382.
|
|
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.
|
|
Use snprintf() or other functions in place of sprintf(). This is part
of fixing #371.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
connect to a network game using one of the BFG Edition IWADs.
|
|
Lots of otherwise Vanilla-compatible WADs contain DEHACKED lumps.
Allow these to be loaded by adding a -dehlump command line parameter.
Thanks to Fabian Greffrath for the suggestion (fixes #349).
|
|
|
|
1) Move the check for (bfgedition) right behind loading the IWAD, i.e.
before any PWADs are loaded that could probably provide a DMENUPIC lump.
2) Instead of checking for a missing TITLEPIC lump (which is only true
for the doom2.wad shipped with the BFG Edition) check for the presence
of DMENUPIC (which is exclusive to both classic IWADs shipped with the
BFG Edition). The M_GDHIGH lumps, however, are incompatibly modified
in *both* IWADs.
3) Move the check for the missing TITLEPIC lump to the place where it
becomes actually crucial, i.e. D_DoAdvanceDemo() and make it independent
of the (bfgedition) check. So, PWADs still have a chance to provide their
own TITLEPIC lump.
|
|
Freedoom has new IWAD names. Support these as fallbacks if no other
IWAD file can be found, but prefer FreeDM as it has Vanilla-
compatible levels. Show a warning on startup if running using the
main Freedoom IWADs.
|
|
Fabian Greffrath).
Subversion-branch: /branches/v2-branch
Subversion-revision: 2747
|
|
startup.
Subversion-branch: /branches/v2-branch
Subversion-revision: 2699
|
|
Xavier).
Subversion-branch: /branches/v2-branch
Subversion-revision: 2635
|
|
Subversion-branch: /branches/v2-branch
Subversion-revision: 2583
|
|
Subversion-branch: /branches/v2-branch
Subversion-revision: 2537
|
|
instances of this within the code (thanks Edward-san).
Subversion-branch: /branches/v2-branch
Subversion-revision: 2468
|
|
Subversion-branch: /branches/v2-branch
Subversion-revision: 2458
|
|
statdump.exe does with Vanilla Doom.
Subversion-branch: /branches/v2-branch
Subversion-revision: 2450
|
|
the splash screen before network startup.
Subversion-branch: /branches/v2-branch
Subversion-revision: 2435
|
|
Subversion-branch: /branches/v2-branch
Subversion-revision: 2413
|
|
can be added to other games.
Subversion-branch: /branches/v2-branch
Subversion-revision: 2395
|
|
Subversion-branch: /branches/v2-branch
Subversion-revision: 2394
|
|
IWADs.
Subversion-branch: /branches/v2-branch
Subversion-revision: 2390
|
|
Subversion-branch: /branches/v2-branch
Subversion-revision: 2381
|
|
Subversion-branch: /branches/raven-branch
Subversion-revision: 2360
|
|
Subversion-branch: /branches/raven-branch
Subversion-revision: 2347
|
|
executables load response files, including the setup tool.
Subversion-branch: /branches/raven-branch
Subversion-revision: 2276
|
|
Subversion-branch: /branches/raven-branch
Subversion-revision: 2258
|
|
several days ago.
Subversion-branch: /branches/raven-branch
Subversion-revision: 2212
|
|
player quit, to avoid possible desyncs. Further refactoring to split
game-specific code from generic code.
Subversion-branch: /branches/raven-branch
Subversion-revision: 2141
|
|
Subversion-branch: /branches/raven-branch
Subversion-revision: 1987
|
|
Subversion-branch: /branches/raven-branch
Subversion-revision: 1931
|