summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2015-05-27Merge pull request #516 from khokh2001/oldoplSimon Howard
Older DMX's OPL voice allocation algorithm
2015-05-27opl: Tweak voice replacement algorithm.Simon Howard
Prefer replacing a second voice before a voice from a higher- numbered channel. This resolves some issues with the MAP01 music, as noted in comments on #468; it may not be Vanilla behavior in terms of code but seems to better match it based on observation, and makes logical sense. Also adjust code to fit to the 80 column limit.
2015-05-27Oops, revert debug changesFabian Greffrath
2015-05-27Merge branch 'master' of https://github.com/chocolate-doom/chocolate-doomFabian Greffrath
2015-05-27desktop: Add some additional keywords to *.desktop filesFabian Greffrath
fixes #511
2015-05-25Change license statement on sha1.c to GPLv2.Simon Howard
This might seem presumptuous but is actually legitimate. The version of sha1.c here is derived from cipher/sha1.c from the GnuPG 1.4 stable branch in 2012. Since October 2007, all GnuPG releases have been made under the GPLv3, but the earlier releases were under GPLv2 and there do not appear to have been any changes to sha1.c between 2007 and 2012. So the same file was previously released under the GPLv2. The relevant commit from the GnuPG Git repository is 9a2a818887b4d36c; this commit is essentially a revert of the part of that commit that applies to cipher/sha1.c. This fixes #479.
2015-05-12doom: the sky changes in final2 map11->12 and map20->21 transitions.Mike Swanson
The id Anthology version of doom2.exe with Final Doom fixed the "Sky never changes in Doom II" bug. The original Doom source release included the repaired code, but it was re-bugged in an early Chocolate Doom version to emulate the behavior of the better-known versions of vanilla. Thanks to @fabiangreffrath for demonstrating how he (more-generically) fixed the bug in Crispy Doom. Closes #533
2015-05-12Replace AES implementation with the Linux one.Simon Howard
The old AES implementation was from GnuPG, which is GPLv3 and not compatible with Chocolate Doom's GPLv2 license. Switch to the implementation of AES found inside the Linux kernel instead. This fixes #479, #507.
2015-05-10Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2015-05-10Add back the Doom PWAD reload hack.Simon Howard
This was removed back in d190b596c566394717324296cbf6b46e67c64f5c; at the time I didn't understand what it was or how it was supposed to be used - it seemed like cruft left over from Doom's development. It is actually a potentially useful feature for level authors when developing their maps. See here: http://doomwiki.org/wiki/Reload_hack The reload hack is a relatively obscure feature of limited usefulness nowadays, but nonetheless a technical curiosity that ought to be preserved in Chocolate Doom. The reimplementation here is a lot cleaner than the original version from the source release: W_Reload() is based on a call to W_AddFile(), we don't reopen the reload file every time we want to read a lump, and we include a check in W_AddFile() that we are not trying to use the hack on more than one PWAD file. This fixes #539.
2015-05-08warnings: fix "variable ‘..’ set but not used" warningsFabian Greffrath
Fixed by commenting out the reported variables and their settings instead of removing them. Since I am not sure if they were added by mistake or by purpose and then overseen, I think it's better to keep them in the code but not compile them in for now.
2015-05-08warnings: fix "redundant redeclaration of ‘player_names’"Fabian Greffrath
The "extern char player_names[8][16]" array is already declared in hu_stuff.h:59.
2015-05-08warnings: fix "iteration XY invokes undefined behavior" warningsFabian Greffrath
These were caused by loops which caused overflow of variables of type angle_t (= unsigned) by multiplication with iterators of typed int in angle calculations. Changing the type of the iterator variables to "unsigned int" prevents the undefined behavior.
2015-05-08warnings: fix ".. may be used uninitialized in this function" warningsFabian Greffrath
Actually, it was already impossible for the reported variables to be used uninitialized, because they were all assigned a value by calling ReadByte() and the function would return if that failed. However, the compiler couldn't know about this fact, so we do him the favor and initialized them to 0.
2015-05-05hexen: Don't show v1.0 message for demo version.Simon Howard
The Hexen demo IWAD is "detected" as v1.0 because it's missing the same lumps that the commercial v1.0 IWAD is missing, but we don't want to show the warning message if we're playing the demo; it is supported.
2015-05-05hexen: Show a startup warning if using v1.0 IWAD.Simon Howard
The Hexen v1.0 IWAD file differs too much from the v1.1 IWAD file and can't be reasonably supported by us. Show a warning message on startup if the user appears to be trying to play using the v1.0 IWAD file. This fixes #537.
2015-05-05warnings: fix "address of array .. will always evaluate to 'true'"Fabian Greffrath
Remove a redundant check from an ORer condition. Unlike in Doom, in Hexen the player->message element is not a pointer, but a char[80] array. Its address will never be NULL and thus will never get interpreted as "false". Hence, the check for "!player->message" will never be "true" and a check for "|| false)" is a no-op. Thanks to @edward-san for finding this with clang-3.6!
2015-05-05warnings: fix "value computed is not used" warningsFabian Greffrath
This fixes warnings that are caused by calling GET_LONG without using its return value, e.g.: sv_save.c: In function ‘StreamIn_player_t’: ../../src/i_swap.h:34:20: warning: value computed is not used [-Wunused-value] #define LONG(x) ((signed int) SDL_SwapLE32(x)) ^ sv_save.c:33:18: note: in expansion of macro ‘LONG’ #define GET_LONG LONG(*SavePtr.l++) ^ sv_save.c:349:5: note: in expansion of macro ‘GET_LONG’ GET_LONG; ^ Introducing a "long dummy" variable and calling "dummy = GET_LONG" does not help, because this provokes another warning, rightfully so: sv_save.c: In function ‘StreamIn_player_t’: sv_save.c:346:10: warning: variable ‘dummy’ set but not used [-Wunused-but-set-variable] long dummy; Assigning the return value directly to the struct field results in: sv_save.c: In function ‘StreamIn_player_t’: sv_save.c:349:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion] str->mo = GET_LONG; Adding the cast to "(void *)" results in: sv_save.c: In function ‘StreamIn_player_t’: sv_save.c:349:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] str->mo = (void *) GET_LONG; Adding the intermediate cast to "(intptr_t)" finally silences the compiler. Phew!
2015-05-04remove duplicate src/doom/doom.desktop.in templateFabian Greffrath
2015-05-04warnings: fix some cast to/from pointer from/to int warningsFabian Greffrath
This fixes the following two warnings cast from pointer to integer of different size cast to pointer from integer of different size by either changing some ints that are supposed to hold pointers to intptr_t type or by intermediate casting to (intptr_t).
2015-05-01Perform case-insensitive check for .lmp extension.Simon Howard
When using the -playdemo parameter, we support a convenience feature where the .lmp extension is not appended if it is already part of the filename. This makes tab completion much nicer. But if the .lmp file has a filename that is in all-caps (.LMP) we were still appending the extension because the check was case sensitive. Change the check to be case insensitive. This fixes #501 (thanks Ioan Chera).
2015-04-28include <string.h> in z_zone.c for memset()Fabian Greffrath
2015-04-26doom: Clear origin pointer when stopping sound.Simon Howard
When an mobj_t is freed, any currently-playing sounds attached to that object are stopped, but the sound code was leaving a dangling pointer to the freed mobj_t that was flagged by the -zonescan checks.
2015-04-26zone: Add -zonescan parameter.Simon Howard
As further tooling to help debug bugs like #530, add a command line parameter that will scan the zone heap every time a block of memory is freed with Z_Free(), to detect dangling pointers to the freed block.
2015-04-26zone: Add -zonezero parameter.Simon Howard
As seen in bug #530, some of the game code can in some situations hold pointers to, and dereference, freed sections of the zone heap. Add a new command line parameter that zeroes out memory of blocks when they are freed with Z_Free(), hopefully exposing code that depends on reading freed memory.
2015-04-26Don't read currentthinker->next after Z_Free().Simon Howard
Save the next pointer in the P_RunThinkers() loop when iterating through thinkers, so that if the current thinker is freed we can still advance to the next thinker without dereferencing freed memory.
2015-04-26Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2015-04-26hexen: Remove m_misc.c.Simon Howard
This file is empty and contains no code, as it was factored out into the common m_misc.c during raven-branch development. The Heretic version got removed once it was empty but the Hexen one wasn't, for some reason.
2015-04-21deh: fix parsing of last lines in files without newline at EOFFabian Greffrath
Chocolate Doom fails to properly parse the last line in DEHACKED files that are missing a newline character at the end of the file (which might have been a common sickness to DOS editors). This is, because DEH_GetChar() returns -1 at EOF and DEH_ReadLine() in turn immediately returns NULL if the result of (DEH_GetChar() < 0), regardless of the content of the readbuffer. It only returns a pointer to the content of the readbuffer if DEH_GetChar() returns '\n' which is, however, impossible if there is no such character before the file ends. Now DEH_ReadLine() only returns NULL if the readbuffer is empty at the end of the file and returns a valid pointer else. Fixes #531
2015-04-15setup: Remove "enable gamepad" checkbox.Simon Howard
This control seemed redundant, as we have the control below it that selects the gamepad to use. So remove it and set the usejoystick variable automatically based on whether joystick_index has been configured to point to a valid device.
2015-04-15setup: Add joyb_jump to empty defaults.Simon Howard
When applying defaults for a particular gamepad, we must clear all the current buttons, and the jump binding wasn't on this list for some reason.
2015-04-15setup: Undo axis reversal for Gameport adapter.Simon Howard
This reverts my last change. I was testing with the Gravis Gamepad and had the switch for left-handed mode turned on and didn't realise (embarrassing!)
2015-04-13Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2015-04-13setup: Invert both axes for Gameport adapter.Simon Howard
Directions were backwards for both X and Y axes when testing with an original Gravis Gamepad.
2015-04-13Fix assigning structs not compiling on Visual StudioFabian Greffrath
2015-04-11Clear mouse events caused by mouse warp.Simon Howard
SDL_WarpMouse() can create mouse events that are later interpreted as user mouse input. Thanks Super6-4 for this fix.
2015-04-11Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2015-04-11Merge pull request #521 from chungy/xbone-padSimon Howard
setup: add support for the Xbox One controller on Linux
2015-04-11setup: Add OS X config for Gameport adapter.Simon Howard
The identified name/signature for this adapter is different under OS X. Also fix a mistake in the last commit.
2015-04-12Merge branch 'master' of https://github.com/chocolate-doom/chocolate-doomSimon Howard
2015-04-12setup: Add config for USB Gameport adapter.Simon Howard
This configuration supports the "Super Joy Box 7" USB gameport adapter, for people using old PC gameport joysticks / gamepads. The button configuration matches the original Vanilla configuration, for authenticity.
2015-04-10Strip out SDL_VERSION_ATLEAST #ifdef conditionals.Simon Howard
These were added ages ago as hacks to make the code compile with SDL2, back when SDL2 was still in development. They aren't relevant any more and aren't useful - the actual SDL2 port is proceeding on sdl2-branch.
2015-04-10Add missing #includes.Simon Howard
2015-04-04setup: Add help URLs for configuration windows.Simon Howard
The wiki now has documentation pages for most of the windows in the setup tool. Add help URLs that link to these. One other minor change here is that the warp button on the main menu had to change to F2 instead of F1, which is now the help key.
2015-03-30Merge pull request #523 from chocolate-doom/hexndemoFabian Greffrath
Add support for the Hexen 4 Level Demo Version
2015-03-30The 4-Level Demo Version also has 3 Info pagesFabian Greffrath
2015-03-30Turn maxplayers into a global variableFabian Greffrath
... and decrease its value from MAXPLAYERS (i.e. 8) to 4 if (gamemode == shareware). It seems that it was hard-coded to this value until some time between the releases of the Demo and the Full version. Arrays are still declared with their full width of 8, though, they are just not iterated over the whole range anymore. This fixes playback of the IWAD demos.
2015-03-28net: Include port number in address strings.Simon Howard
When generating string representations of network addresses, include the UDP port number if it isn't the standard port number. This is necessary because the string version of the address is used by the setup tool when filling in the address field; if a non-standard port is used then it needs to be included. Also fix byte swapping on the address portion in the same function. Thanks to Alexandre-Xavier for the bug report on #469.
2015-03-27misc: Handle M_StringCopy() short buffer case.Simon Howard
M_StringCopy() must always be provided a buffer of at least one character long, so that a NUL character can be written. If this is not the case, return immediately and indicate that the buffer was truncated.
2015-03-27Remove old DOS source files.Simon Howard
These are leftover files that were kept around for posterity in the heretic/ and hexen/ directories, that contained system-specific DOS code used in the DOS versions of the games. There's no real reason to keep these files around any more and it's confusing having them around: some people who have tried to compile the code have mistakenly tried to include these files in compilation.