summaryrefslogtreecommitdiff
path: root/src/doom
AgeCommit message (Collapse)Author
2015-01-19Add extra checks to weapon cycling loops.Simon Howard
Ensure that the loops to find the next weapon always terminate - even if there are somehow no weapons equipped. Also, only ever do weapon cycling when in the GS_LEVEL gamestate. This fixes #503 - thanks to Fabian and raithe on Doomworld.
2014-12-26allow building in subdirectory or outside source directoryDave Murphy
2014-11-01Revert "Automap accuracy fixes"James Haley
This reverts commit 12ecb4550e46ffdc28248be185738a88be033afd.
2014-11-01Automap accuracy fixesJames Haley
* Grid is not supported and gives no such message * Spot marking behavior is substantially different
2014-10-24Replace strdup() with M_StringDuplicate().Simon Howard
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.
2014-10-21Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2014-10-21bfgedition: remap menu graphics by means of DEH_AddStringReplacement()Fabian Greffrath
during the initialization instead of a hard-coded diversion in the options menu itself
2014-10-21doom: Add -pack parameter to specify mission pack.Simon Howard
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.
2014-10-19doom: Write -cdrom savegames to c:\doomdata.Simon Howard
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.
2014-10-19doom: Add game names for Freedoom IWADs.Simon Howard
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).
2014-10-18Fix dehacked patch loading order.Simon Howard
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.
2014-10-18dehacked: Allow override of string replacements.Simon Howard
If loading two dehacked patches and both replace the same string, the second replacement should override the first. Change the API function DEH_AddStringReplacement so that the from_text and to_text are implicitly duplicated, and we can free to_text and replace it later if we subsequently change it to something else.
2014-10-18doom: Refactor IWAD dehacked patch loading.Simon Howard
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.
2014-10-17doom: Add -noiwaddeh command line parameter.Simon Howard
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.
2014-10-08Allow -warp to episodes beyond episode 4.Simon Howard
Vanilla Doom's -warp parameter allows warping to episodes beyond E4. This didn't work in Chocolate Doom because of some changes made to the G_InitNew code before the source release. Actual decompilation of that function in Vanilla Doom shows that the episode/map sanity checking is not present: http://pastie.org/8140437 There is at least one known WAD (2002ado) that has a map on E5M1 that is playable in Vanilla, and this stops that map from being possible to play. Comment out that code because it obviously doesn't deserve to be there. This fixes #426. Thanks plumsinus.
2014-09-13Add vld_ prefix for vldoor_e enum values.Simon Howard
It was pointed out to me recently that vldoor_e has enum values named 'open' and 'close'. These can potentially conflict with POSIX standard functions that have the same names, if the right header files are included. This doesn't currently cause any problems. However, to avoid any possibility of a conflict occurring if a different compiler is used, add a vld_ prefix to all the enum values, to namespace them.
2014-09-13dehacked: Load Freedoom DEHACKED lump on startup.Simon Howard
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.
2014-09-11improvements to the [STRINGS] section parserFabian Greffrath
- restructure DEH_ReadLine() to avoid use of "goto" - bex_string_t type name ends in "_t" - declare constant table as "static const" - add magic comment *allow-extended-strings* and corresponding variable deh_allow_extended_strings - fix logical error when no [STRINGS] section is registered to which corrent_section could be compared
2014-09-08add parser for [STRINGS] sections in BEX filesFabian Greffrath
2014-06-18Move extern definitions for p_map.c to p_local.hFabian Greffrath
This fixes conflicting array sizes for the variable "spechit" as reported in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=748393. Fixes #414
2014-05-05Clean up file headers.Simon Howard
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.
2014-04-27music: Add loop point Ogg/Flac metadata support.Simon Howard
ZDoom has defined a format for Vorbis metadata comments named LOOP_START and LOOP_END that allow the start and end points to be defined in .ogg and .flac files for looping music. Add support for these (they are used in Brandon Blume's SC-55 recordings).
2014-04-19Exit with error on startup if using the wrong IWAD.Simon Howard
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.
2014-04-19joystick: Add joystick button to toggle menu.Simon Howard
When using a joystick or gamepad it's nice to be able to bring up the menu without having to reach for the keyboard. This makes modern gamepads more useful/usable.
2014-04-19joystick: Add an axis to allow strafing.Simon Howard
Modern gamepads typically have 2-3 D-pads and joysticks. This means that it's desirable to be able to use one joystick for turning and another for strafing. Add another axis in addition to the current X and y axes that performs strafe movement.
2014-04-10doom: Allow warp up to MAP40 to match Vanilla.Simon Howard
Vanilla Doom allows warp with the IDCLEV cheat up to MAP40, though it normally crashes. Match this behavior and set MAP40 as the maximum rather than MAP34. This fixes #181 (thanks Alexandre Xavier).
2014-04-01Replace all snprintf() calls with M_snprintf().Simon Howard
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.
2014-03-30doom: Eliminate use of sprintf().Simon Howard
Use snprintf() or other functions in place of sprintf(). This is part of fixing #371.
2014-03-30Eliminate some uses of sprintf() from common code.Simon Howard
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.
2014-03-30hexen: Make -playdemo cope with paths.Simon Howard
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.
2014-03-29doom: Eliminate use of unsafe string functions.Simon Howard
Eliminate use of strcpy, strcat, strncpy, and use the new safe alternatives.
2014-03-29misc: Add M_StringConcat.Simon Howard
Just as M_StringCopy behaves the same as strlcpy(), M_StringConcat behaves the same as strlcat(). Use this in one location.
2014-03-29misc: Add string utility functions.Simon Howard
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.
2014-03-25Set GUS patch path variable using D_SetVariable.Simon Howard
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.
2014-03-24Fix various Clang compiler warnings.Simon Howard
2014-03-23Rearrange order of SDL sound startup.Simon Howard
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.
2014-03-23Set default for key_menu_screenshot to 0.Simon Howard
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.
2014-03-23doom: Add initial support for versions < v1.9.Simon Howard
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.
2014-03-23doom: Emulate 'no fog on spawn west' Vanilla bug.Simon Howard
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.
2014-03-20Merge pull request #365 from fabiangreffrath/bfg_warningSimon Howard
Print a warning if the user is attempting to record or playback a demo o...
2014-03-20Remove superfluous dividers.Fabian Greffrath
2014-03-20Print a warning if the user is attempting to record or playback a demo or ↵Fabian Greffrath
connect to a network game using one of the BFG Edition IWADs.
2014-03-18Add a dedicated key for taking screenshots.Fabian Greffrath
2014-03-17Allow for PNG screenshots.Fabian Greffrath
2014-03-16doom: Fix behavior of M_EPI4 menu item.Simon Howard
Ultimate Doom's doom.exe will crash when run with an IWAD that doesn't contain M_EPI4 (like the stock v1.9 IWAD). Thanks to Alexandre Xavier for the bug report (fixes #344).
2014-03-16doom: Add -dehlump parameter to load DEHACKED lumps.Simon Howard
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).
2014-03-02doom: Reverse detail graphic for BFG edition.Simon Howard
Use "ON" to mean "high detail", "OFF" for "low detail". The logic was backwards.
2014-02-24Keep (bfgedition) as part of the check for TITLEPIC.Fabian Greffrath
2014-02-24More robust checks for BFG Edition.Fabian Greffrath
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.
2014-02-20Add BFG edition workaround for options menu crash.Simon Howard
The BFG edition IWADs have their M_GDHIGH lumps changed to say "Fullscreen:" instead of just "high". This breaks the options menu which assumes a graphic that is not as wide. In the same spirit as the title screen workaround, add a workaround for this as well: use the message "on/off" graphics instead when we are running using a BFG edition IWAD. This fixes #341 (thanks Fabian Greffrath).