Age | Commit message (Collapse) | Author |
|
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.
|
|
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.
|
|
The src string may be unterminated and the call to strncpy() be
terminated by reaching dest_size. Instead of calling strlen() on the
src string, check if it has a NUL byte at the same position as the
dest string -- if not, the string was truncated.
Valgrind now gives thumbs up!
|
|
This is meant to be passed over to I_AtExit() which expects an
argument of void type. It thus prevents undefined behaviour because
of the different signature of G_CheckDemoStatus() which is of boolean
type.
Fixes #519
|
|
I think it fits better there and in case further inline fuctions are
introduced in files other than i_scale.c, it should not be necessary
to copy this definition around.
|
|
into hexndemo
|
|
Effectively it's a slightly re-arranged Xbox 360 controller, no major
changes, so we can just use the same config as that one.
|
|
|
|
|
|
instead of interating through the list for the full version
and letting missing texture lumps slip through.
|
|
|
|
differ. This commit adds old DMX's voice allocating alogrithm for Hexen and Heretic.
|
|
|
|
The floor->type and floor->crush fields of the floor thinkers added in
EV_BuildStairs() were originally left uninitialized and thus contained
random memory content.
Initialize them to make sure the floor->type field does not trigger
propagation of random content into the special and texture fields of
the adjacent sector in T_MoveFloor(). That is, make sure its value
is neither donutRaise, i.e. 11, nor lowerAndChange, i.e. 6.
Also, the chances of 32 bit of random memory being "true", i.e. 0, are
negligible.
This is functionally equivalent to what PrBoom+ is doing.
Fixes desync of mm09-512.lmp.
Fixes #368.
|
|
There was no example for how to write function calls. Do this to
make clear that there should be no space between the function name
and the open paren. Give examples of assignments and if() conditions
as well, and tweak the for() style - there's no reason to omit spaces
around operators for the looping conditions.
|
|
For bug compatibility with the original 4-level Demo. Confirmed on
map04 with the Demo version with the following md5sums:
458d3ff08d32fc50abb55a5b68660b6b HEXEN.EXE
876a5a44c7b68f04b3bb9bc7a5bd69d6 HEXEN.WAD
|
|
|
|
The source and destination arguments to memcpy() cannot be overlapping
as this is undefined behavior. In these situations memmove() must be
used instead, and OpenBSD actually throws an error if this is done.
Thanks to ryan-sg for reporting this. This fixes #510.
|
|
The Strife binary has another priority check in the first loop inside
S_GetChannel. TODO: Does DOS Doom have this as well? Find out.
Resolves issue #506.
|
|
Signed/unsigned comparison mismatches
|
|
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.
|
|
Various bits of code assume that booleans are represented as 32-bit
ints and that they can be assigned to from 32-bit values. This isn't
true on all systems; fix code that does this to convert to boolean
values properly.
This is more progress towards fixing #509.
|
|
The st_stuff.c status bar code passes pointer to an entry in
weaponowned[] as an int pointer, but weaponowned[] is an array
of booleans and booleans are not always represented as 32-bit ints.
Remove the (int *) cast and ensure correct behavior.
This fixes the immediate issue in #509 (thanks floppes).
|
|
|
|
Actually, it is impossible to reach the end of these two functions
without return()ing earlier from one of the switch() statements'
branches. But since the compiler cannot know this and warns about it,
and since this warning can be escalated into an error in later
compiler versions, silence it by return()ing a dummy value at the end
of each function.
Fixes #508
|
|
Following the concept of Chocolate Doom, D_IdentifyVersion and
D_SetGameDescription are introduced and called right after loading the
IWAD. The first one checks for the characteristics of the "shareware"
IWAD and sets gamemode accordingly, whereas the latter sets the
gamedescription string according to gamemode. This string is then used
in I_PrintStartupBanner() and I_SetWindowTitle(). So, the "shareware"
version identifies itself properly now.
I consider support for the 4 Level Hexen Demo pretty complete by now.
|
|
|
|
|
|
|
|
into hexndemo
|
|
With these changes it is possible to run the game using the HEXEN.WAD
IWAD from the 4-level Demo and start a new game as one of the three
player classes.
Known missing bits:
- The game does not yet identify itself as the demo version
- The cheat codes are still unchanged
- Bug compatibility, see e.g.
http://dengine.net/dew/index.php?title=Libhexen
|
|
More self-indulgent ramblings about philosophy of software design.
|
|
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.
|
|
Fixed Missing File in Project
|
|
|
|
There was a slash separator missing
Thanks sneakernets for the bug report!
Fixes #498
|
|
fixes #497
|
|
No. 2: even more endianness fixes by myself (Ronald Lasmanowicz)
|
|
No. 1: even more endianness fixes by myself (Ronald Lasmanowicz)
|
|
Allow building in subdirectory or outside source directory
This one allows you to configure && make from a subdirectory or a
directory outside the source tree. Useful for building several versions
in the same tree for comparison.
|
|
|
|
I figured this out while porting Chocolate to the Nintendo Wii and also had to change these lines of code.
|
|
I figured this out while porting Chocolate to the Nintendo Wii and also had to change these lines of code.
|
|
This was added a long time ago, supposedly as a workaround for
SDL_mixer issues. It's not clear that this ever properly solved the
problem, and it seems unlikely that it's doing any good any more.
Quasar has pointed out that it actually impedes performance, and
some forks may want to use SMP (Strife: Veteran Edition had to
remove it).
This fixes #484 (thanks Quasar).
|
|
|
|
as pointed out necessary by Ronald Lasmanowicz for his Wii ports
|
|
when walking inside liquids like water -- on big-endian systems
Originally reported by Ronald Lasmanowicz and fixed in his
wii-hexen port: https://code.google.com/p/wii-hexen/source/detail?r=17
|
|
strife: Fix the name of MAP29, should be "Entity's Lair"
|
|
Double-checked with strife1.exe
|
|
The MVIS flag, if set on an object *without* MF_SHADOW, imparts total
invisibility. This is the intended effect on players using double Shadow
Armors.
|