only has 64 entries and is not precise enough. It now uses finesine instead.
- fixed: When compositing a multipatch texture any patch that is a multpatch
texture itself and contains rotations may not be composited directly into
the destination buffer. This must be done with an intermediate buffer.
- Fixed: Drawing a slider in the options menu did not scale the x-coordinate.
- Fixed: If the alt HUD had to draw negative numbers the minus sign was misplaced
due to incorrect texture coordinate calculations.
- changed option menu scaling for widescreen modes so that it doesn't scale down
so quickly.
- made some error messages in DECORATE that don't affect the parsing non-fatal
so that the parser can continue to find more problems.
SVN r2076 (trunk)
all files loaded with '-file' are scanned for this lump. This lump is read
before any WAD initialization takes place, in particular the IWAD is not yet
loaded at this time. This allows PWADs the option to specify an IWAD they
want to run with and optionally autoload external resource WADs.
- Fixed a few places where FixPathSeperator was called with a locked FString buffer.
It's better to use the FString version of this function instead.
SVN r2073 (trunk)
everything that eventually calls D_AddFile. Also create the list of files
loaded on the command line separately to allow further checks on them.
SVN r2072 (trunk)
- Reorganized the SBarInfo code.
- Added interpolate(<speed>) flag to drawnumber, drawbar, and drawgem. The old
way of interpolating the health and armor is depreciated.
- Added: armortype to drawswitchableimage loosely based on Gez's submission.
- As an extension to the previous you can now use comparison operators on
inventory items and armortype in drawswitchableimage.
SVN r2069 (trunk)
because it exposed a design flaw in the thinker system:
Having every single actor default to the highest available statnum means that
nothing can be placed in a slot where it is guaranteed to be run after all actors
have ticked. But this is required for any thinker that moves an actor
(i.e. AActorMover and DSectorEffect.) With DSectorEffect it just went unnoticed
because they were added at the end of the list so almost nothing they moved was
behind them in a thinker list. However, when an actor was spawned on a moving
floor it did not move smoothly. The default statnum is now 100 so that there's
sufficient slots above where such thinkers can be placed.
SVN r2060 (trunk)
it happened outside the moved actor's Tick function. This got particularly
obvious with moving skybox viewpoints (See Daedalus's MAP21 intro for a good
example.)
SVN r2059 (trunk)
broken. I don't know what I thinking when I plugged in 2*finesine[pitch]
for Hexen's lookdir, because that's totally wrong. Not only is the
magnitude far too low, but it also aims in the opposite direction you
are looking. The new code only attempts to be close to Hexen's original
while looking straight ahead and extrapolates that to other angles using
proper 3D math.
SVN r2057 (trunk)
a mild performance increase it's not what I hoped it would do...
- Moved portal initialization for the portal things to P_SpawnSpecials
instead of having the things self-initialize in PostBeginPlay. This was
done to ensure that the portals are fully set up when the game begins.
Otherwise there is no decent way to let the renderer post-process this
information during setup.
- Changed: For 800x600 the default scaling handling of the options menu
makes it become too small so for any resolution with a width between
800 and 959 it has been reverted to the regular clean scaling factor.
SVN r2055 (trunk)
were flagged not to have decals.
- Fixed: DBaseDecal/DImpactDecal::CloneSelf never checked the return value
from their StickToWall call and left unplaced decals behind if that happened.
SVN r2046 (trunk)
player does not immediately activate switches. oldbuttons was not usable
for this. This also required that CopyPlayer preserves this info.
- Fixed: When restarting the music there was a NULL pointer check missing
so it crashed when the game was started wi
- Fixed: If the Use key is used to respawn the player it must be cleared
so that it doesn't trigger any subsequent actions after respawning.
- Fixed: Resurrecting a monster did not restore flags5 and flags6.
- Fixed: Projectiles which killed a non-monster were unable to determine
what precisely they hit because MF_CORPSE is only valid for monsters.
A new flag, MF6_KILLED that gets set for all objects that die, was added
for this case.
- Added a generic A_Weave function that exposes all possible options of
A_BishopMissileWeave and A_CStaffMissileSlither. These 2 functions are
no longer needed from DECORATE and therefore deprecated.
SVN r2045 (trunk)
onscreen. In addition, it now uses the whole height available to it. Also,
at lower resolutions, items on the compatibility options menu now cut off
the beginning of the option label rather than the option setting, making
this menu useable where previously it was not.
SVN r2044 (trunk)
flag now restarts the song so that the new looping setting can be applied.
(This was easier than modifying every music handler to support modifying
loop changes on the fly, which seems like overkill.)
SVN r2041 (trunk)
- In mus2midi.cpp, added range checking to MUS_SYSEVENT and MUS_CTRLCHANGE,
and masking for note-off keys, note-on velocities, and program changes.
SVN r2032 (trunk)
- added compatibility option to invert sprite sorting. Apparently Doom.exe
originally sorted them differently than most source port and on some maps
which depends on this it doesn't look right (e.g. Strain MAP13)
SVN r2031 (trunk)
But that's insufficient because it doesn't factor in any subsequent velocity
change that happens between the damaging and the next call to A_FreezeDeathChunks.
- fixed: The TimeFreezer did not freeze other players' controls in a
multiplayer game.
- fixed: DECORATE's 'gravity' property incorrectly messed around with the
NOGRAVITY flag.
- fixed: Hitscan attacks didn't check the puff's replacement for damage types.
SVN r2026 (trunk)
each other. PIT_CheckThing will return true under the following contitions
now:
* It was called from P_Move
* The actor that is blocking the move already overlaps with the monster
that is being moved.
* the move will take the 2 actors further apart.
SVN r2018 (trunk)
swap between them each frame. The one that's not the TempRenderTexture is used
as the FrontCopySurface without the need for a copy operation. This removes the
performance penalty the previous commit introduced for these modes.
SVN r2014 (trunk)
properly in letterboxed modes.
- Added another surface to receive a copy of the top back buffer immediately
before it is presented. This effectively produces a copy of the front
buffer without the performance penalty of GetFrontBufferData, so fullscreen
wipe preparation and screenshots are faster now. At lower resolutions,
always copying the backbuffer does incur a slight FPS hit, but it's
practically free at higher resolutions.
SVN r2013 (trunk)
assumed that since the wipes only run at 35 FPS, the time spent DMA'ing
it from system to video memory would be acceptable. Apparently I was wrong.
In particular, updating the same surface several times probably has to
synchronize between each one, making melt particularly slower than it
needs to be.
SVN r2012 (trunk)
The editor number for player start spot 5 is now stored in the game info
so that there's only one place where this check needs to be done.
- Fixed: WIF_NOAUTOAIM only worked for projectiles unlike Skulltag's original
implementation.
SVN r1997 (trunk)
savegames would hold the full file path for wads that had been specified
with backslash characters, because GetWadName() would not trim off the
path.
SVN r1994 (trunk)
former used fistp, which is not portable across platforms, so cannot be
used in the play simulation. They were only suitable for the renderer.
xs_Float.h also has a very fast float->fixed conversion, so FLOAT2FIXED
uses that now.
(And I also learned that the FPU's round to nearest is not the rounding I
learned in grade school but actually Banker's Rounding. I had no idea.)
(Also, also, the only thing that could have made quickertoint faster than
toint was that it stored a 32-bit int. I never timed them, and I doubt in
practice there was any real difference between the two.)
- Changed atan2f to atan2. Using floats is not a win, because the result is
returned as a double on the x87 stack, which the caller then needs to cast
down to a float using fst/fld.
SVN r1990 (trunk)
* Looping sounds that have been playing for a very long time, were evicted,
and then were restarted need to have their positions clamped to lie
within the bounds of the sounds. If we try to set a start position very
far beyond the end, it will overflow inside FMOD and not work.
* A start time of 0 is not actually valid and means the sound was never
assigned a start time.
- The latter bug also reveals a problem with starting looped sounds evicted:
They need to be assigned a start time so if they should have the opportunity
to start later, they will be properly synchronized.
SVN r1987 (trunk)
Both Hexen and Heretic depend on such projectiles not doing it as do many
mods that create snow/rain effects plus any terrain splash mod.
SVN r1984 (trunk)
are scaled to the height of a 200 pixel tall sky. Skies taller than 240
use the same scale as a 240 tall sky but are shifted down to make the
top of the texture align with the top of the screen when looking fully up.
Thus, by using a sky texture with a height of 240 or more pixels, the sky
will be drawn with square pixels instead of the vertically elongated ones
imposed by Doom's native 320x200 resolution.
SVN r1978 (trunk)
- Improved sky stretching a bit: It now only stretches the sky as tall as it
needs to be: 228 pixels, not 256. It no longer stretches horizontally,
either.
The reason it stretches to 228 and not 200 pixels is because Doom shifted
its sky texture down 28 pixels. By stretching to 228 pixels, we can keep
the sky tiled at the same height on the horizon. Skies 200 pixels tall
(or more) will continue to tile at the center of the screen when looking
directly ahead.
SVN r1976 (trunk)
time as the polled timer so that the timer does not start running until the
first time it is used.
- Removed the srand() call from D_DoomMain(), because it started the game
timer running prematurely, and we never call rand() anywhere. (Not to
mention, even if we did use rand(), always seeding it with 0 is rather
pointless.)
SVN r1974 (trunk)
unsigned integer that can use all 32 bits. They must therefore use
the unsigned mul instruction rather than the signed imul instruction.
- Fixed several signed/unsigned comparison and possibly uninitialized
variable warnings flagged by GCC.
SVN r1965 (trunk)
player sprites will retain the same precision they had when they were
rendered as part of the 3D view. (needed for propery alignment of flashes
on top of weapon sprites) It worked just fine for D3D, but software
rendering was another matter. I consequently did battle with imprecisions
in the whole masked texture drawing routines that had previously been
partially masked by only drawing on whole pixel boundaries. Particularly,
the tops of posts are calculated by multiplying by spryscale, and the
texture mapping coordinates are calculated by multiplying by dc_iscale
(where dc_iscale = 1 / spryscale). Since these are both 16.16 fixed point
values, there is a significant variance. For best results, the drawing
routines should only use one of these values, but that would mean
introducing division into the inner loop. If the division removed the
necessity for the fudge code in R_DrawMaskedColumn(), would it be worth it?
Or would the divide be slower than the fudging? Or would I be better off
doing it like Build and using transparent pixel checks instead, not
bothering with skipping transparent areas? For now, I chop off the
fractional part of the top coordinate for software drawing, since it was
the easiest thing to do (even if it wasn't the most correct thing to do).
SVN r1955 (trunk)
position when evicting sounds, because restarting the sound system causes
the DSP clock to restart at 0, so start times that were recorded before
the reset are no longer applicable after the reset.
- Fixed: S_StopChannel() always set the channel's actor to NULL, eliminating
origin information when resetting the sound system.
SVN r1949 (trunk)
* when a logical condition was rewritten and inverted, one of the boolean test wasn't inverted along the rest. So the "monster must not be a player" was accidentally changed into "monster must be a player", which is usually going to be false... There's another minor, but related issue.
SVN r1948 (trunk)
use a larger aiming range, and ignore non-targets in P_AimLineAttack().
- Added another parameter to P_AimLineAttack(): A target to be aimed at. If
this is non-NULL, then all actors between the shooter and the target will
be ignored.
SVN r1941 (trunk)
SoundSequenceOnActor(int tid, string seqname);
SoundSequenceOnSector(int tag, string seqname, int location);
SoundSequenceOnPolyobj(int polynum, string seqname);
SoundSequenceOnSector takes an extra parameter that specifies where in the
sector the sound comes from (floor, ceiling, interior, or all of it). See
the SECSEQ defines in zdefs.acs.
SVN r1939 (trunk)
may still be needed. In particular, when drawing a seg with a midtexture is
split by foreground geometry, the first drawseg generated from it will have
the correct WallSZ1,2 values, but subsequent ones will have whatever
R_RenderDecal() left behind. These values are used to calculate the upper
and lower bounds of the midtexture. (Ironically, my work to Build-ify things
had done away with these globals, but that's gone now.)
SVN r1938 (trunk)
changing game code.
- made SpawningMapThing an argument of AActor::StaticSpawn instead of a global
variable.
- added a stub to the DECORATE parser for defining dynamic lights directly
in DECORATE. This is needed so that ZDoom remains compatible with any DECORATE
which uses this GZDoom feature in the future.
SVN r1935 (trunk)
A_SetUserVar/SetUserVariable/GetUserVariable now take a variable name
instead of an array index. A_SetUserArray/SetUserArray/GetUserArray
have been added to access elements in user-defined arrays.
SVN r1933 (trunk)
size textures at any scale. I also tried doing sky scrolling on the sky
cylinder, but that didn't look so good, so I left it in screen space.
SVN r1932 (trunk)
but should use the camera position instead to get the correct position for
the closest point along the trail.
- Fixed: Explosions no longer caused splashes.
- Fixed: Copying translations to lower decals had the shade color check wrong.
- Fixed: Waggling floors did not move attached geometry.
- Cleaned up p_floor.cpp so that related parts of the code are grouped together.
SVN r1926 (trunk)
a different default terrain than a generic solid surface.
- added format char processing to A_Print(Bold) and all printable messages
that can be defined in DECORATE.
- Fixed: The railgun code ignored MF3_ALWAYSPUFF.
- added desaturated translations.
- added optional state parameters to A_ReFire and A_GunFlash and A_CountdownArg.
SVN r1921 (trunk)
- fixed: When a blasted actor collided with another one this other actor's
DONTBLAST flag was not checked.
- added a global DamageFactor actor property. All damage this actor takes is multiplied
by this factor in addition to damage type specific damage factors.
SVN r1915 (trunk)
at just fixing it at a specific value, since the supply of SM14 cards isn't
all that diverse and all from ATI, but apparently Radeon 8500s and 9000s
have different precision levels in their pixel shaders. See bug report
<http://forum.zdoom.org/viewtopic.php?p=444523>
- Removed unused variables FBFormat and PalFormat.
SVN r1901 (trunk)