degree of support for songs that use loop controllers to loop the song back to a point after
the very beginning of the song.
- Enable loops during SMF generation. Infinite loops will be clamped to some finite amount. (This is currently 30, so a 3 minute song will still restart from the very beginning after 90 minutes)
- Fixed: The SMF, HMI, and XMI readers all generated invalid MEVT_NOP events.
- Fixed: SMF generation died on songs that set their tempo during the initial beat.
SVN r2864 (trunk)
- Was there any reason why the MIDI_GUS device was so well hidden from the user? It sure does not sound broken. Added it to MIDI menu and $mididevice.
SVN r2862 (trunk)
- set 'cursor' as default for Action Doom 2. Doom's bunny is probably not the best thing here...
- made cursor user-settable in the menu.
SVN r2855 (trunk)
- fixed: Savegames that were saved without picture did not display the 'No picture' message because the empty PNG container was still recognized as image.
SVN r2847 (trunk)
* the sprite used for 'pause'.
* the factor with which a monster's health is multiplied to decide if it's supposed to be gibbed,
* the decision to make monsters run faster in nightmare mode.
- moved the hard coded lock messages for lock types 102 and 103 into the language lump.
- fixed: Raven's fast monsters could become slower in Nightmare if they had very short walking states.
SVN r2834 (trunk)
- Locks can now define more than one LockedSound by separating them with commas. The default setting
for this property is now "*keytry", "misc/keytry". The first sound that is defined is the one that will
be played for the lock. Thus, for standard locks, if the player class defines *keytry, that will be
played. Otherwise, misc/keytry will be played as before.
SVN r2827 (trunk)
- merged all places where secrets are credited into one common function.
- added the Doom64 COUNTSECRET actor flag.
- fixed: AInventory::CreateCopy did not clear the COUNTITEM flag.
- fixed: Dropping an item did not increase the item count but the dropped item could still have the COUNTITEM flag. Now this flag gets cleared when the item gets picked up so that dropped items don't count a second time.
SVN r2826 (trunk)
Windows sends some when the mouseis ungrabbed even when it does not move.
This caused the currently selected menu item to get unselected.
SVN r2803 (trunk)
- allow specifying the fractional precision for the numbers behind the sliders.
- took all HUD related options out of the display options menu and created a seaparate one for them.
- added several more display and HUD options to the menu.
- created a new 'Miscellaneous options' menu for a few items that should be accessible but don't fit anywhere else.
SVN r2795 (trunk)
- Added a generic Standard MIDI File creator that works with any of the sequencers. mus2midi.cpp
is no longer used but is kept around as a reference.
SVN r2677 (trunk)
- Moved MIDI precaching logic into MIDIStreamer so that SMF and HMI files can both use the
same implementation.
- Added a player for HMI midi files.
SVN r2675 (trunk)
bindings for it. I'm not sure how this should be exposed through the menu, however. Technically,
it's different from the pan keys, but from an end user's point of view, they both zoom the
automap, so they should both be listed under the Zoom in and out controls. But the menu code
can't handle that.
SVN r2663 (trunk)
- fixed: APROP_Invulnerable could only be set and unset but not checked.
- fixed: Two sided polyobjects applied thrust to sctors in a way that did not work.
SVN r2620 (trunk)
- add a GetReplacement method to PClass to clean up some really ugly code
- Who wrote the 'kill' CCMD? The way it checked if two classes were identical was horrendously overcomplicated.
SVN r2601 (trunk)
- allow all texts in conversations to reference the string table.
- fixed: If no dialogue is found for the current map, SCRIPT00 should still be loaded.
SVN r2577 (trunk)
- fixed: All blood spawning functions checked the ALLOWPARTICLES flag on the class defaults before actor replacement instead of after.
SVN r2563 (trunk)
- Use fluid_patchset to specify the SoundFont(s) for FluidSynth instead of doubling up with
snd_midipatchset, which is already used by FMOD.
SVN r2555 (trunk)
which is painfully apparent on hexen.wad MAP01's music, which hits around 90 voices.
- Patch from Chris:
* Add FluidSynth to the menu.
* Enable FluidSynth for MIDI as well as MUS.
* Fix CmakeLists.txt.
SVN r2554 (trunk)
to try compiling it myself on Windows to see if it's really that slow or if
Ubuntu just ships an unoptimized version, because performance is pretty pathetic
when compared to the other options. (I understand that it's a complete SoundFont2
renderer, so it is understandably slower than something like TiMidity++, but still.
Does it really need to be around 10x slower? I played with the chorus, reverb, and
interpolation settings, and none of them seemed to make much difference in
performance.)
SVN r2545 (trunk)
- Fixed: P_LoopSidedefs() needs to clean out sidetemp[] because when it's called a second time, the maximum of the number of vertices and that of sides may have increased compared to when P_AllocateSideDefs() created the array, which led to access violations.
SVN r2541 (trunk)
- added Polyobj_MoveToSpot action specials. They are functionally identical to Polyobj_MoveTo but get the target coordinate from a map spot instead.
SVN r2503 (trunk)
- fixed: AActor::CanSeek had the check for the visibility of the target actor's alpha reversed.
- added an Alt HUD icon for Hexen's fighter's fist.
SVN r2501 (trunk)
grabbed. At least if the pointer is visible when the debugger break happens, I don't worry
about it getting stuck hidden. (Note that that seems to be related to Alt+Tabbing out of the
game and coming back. I wish I knew what's going on.)
SVN r2497 (trunk)
example. Do not modify the window class pointer. I still had an instance where I was left with
an invisible pointer no matter where I moved it, so hopefully this takes care of that. (edit:
it doesn't.)
SVN r2496 (trunk)
- Two tweaks to raw mouse input to make it better behaved when the window suddenly has focus
removed (e.g. because of a debugger break):
* Keep the pointer centered in the window, as for Win32Mouse. Even though it's not generating
any traditional input events, it's still moving all over the screen. e.g. If we have focus
yanked away and you're pressing the right mouse button as it happens, you can suddenly find
yourself with a popup menu open.
* Use SetCursorState() like the other mouse modes instead of ShowCursor() to hide the
pointer. This way, we don't need to worry about being stuck with trying to use the system
with an invisible pointer, because only the game window will be pointer-less.
SVN r2495 (trunk)
the sector. Note that this contrasts with sound sequence things in that it takes a name and
not a number. Also, placing a sound sequence thing in a sector will override this property.
SVN r2492 (trunk)
* 0. Do not clear. This is the standard behavior.
* 1. Clear to black.
* 2. Clear to white.
* 3. Alternate between black and white every 128 ms.
* 4. Step through the palette one color at a time every 32 ms.
* 5. Epileptic seizure inducing random colors every frame.
SVN r2491 (trunk)
does not include xtoviewangle[centerx] in the mirroring so that the two columns at the center
of the screen do not map to the same angle. (BTW, this array is only used for the sky drawing.)
SVN r2487 (trunk)
CHAN_LOOP so that the higher level sound code knows they loop and can handle them accordingly.
- Added support for a LOOP_BIDI tag. Set it to "1", "On", "True", or "Yes" to use a
bidirectional loop. This only works with sounds and not music, because music is streamed
so does not support them.
- Extended custom loop support to work with samples as well as music.
SVN r2434 (trunk)
way MP3 obfuscates custom tags. Vorbis and FLAC are fine. (I could make it work with MP3,
but you should be using Vorbis instead.) They are:
* LOOP_START: Start time for the loop. If omitted, the song repeats from the beginning.
* LOOP_END: End time for the loop. If omitted, the song loops at the end. (If you need to specify this, why aren't you using a shorter song.)
You only need to specify one of these tags to set the custom loop. Naturally, you can set
them both, as well. The format for each tag is the same:
* If it contains a colon (:), it specifies by time. This may be of the form 00:00:00.00
(HH:MM:SS.ss) to specify by play. Various parts may be left off. e.g. To start the loop
at 20 seconds in, you can use ":20", 0:20", "00:00:20", ":20.0", etc. Values after the
decimal are fractions of a second and accurate to one millisecond.
* If you don't include a colon but just have a raw number, then it's the number of PCM
samples at which to loop.
* Any characters other than digits (0-9), colons (:), or a single decimal point for the
seconds portion will result in the tag being ignored.
SVN r2424 (trunk)
- "Give artifacts" and "give puzzlepieces" now use the amount value to decide how much of each
item to give you. 0 means to give you the max. The old behavior can be obtained by explicitly
stating 1. (Since "give all" encompasses these as well, this also applies to that.)
- Added "give everything" cheat to give everything. This is like "give all" but ignores the
WIF_CHEATNOTWEAPON flag. (Note that this flag has valid uses, but that doesn't stop people
from abusing it anyway.)
SVN r2418 (trunk)
* the unaltered floating point version is 10% faster than the 64 bit integer version.
* using doubles instead of floats increases performance by another 25%.
* another 15% can be gained by manually optimizing the code.
- P_InterceptVector now uses the optimized floating point version which is almost twice as fast as the 64bit integer version.
SVN r2395 (trunk)
since the screenwipe speedup fixes also mean that this function no longer operates directly
with the front buffer, but rather with a copy that is not letterboxed.
SVN r2355 (trunk)
- Added character alignment parameter to font monospacing.
- Fixed: character shadows were not scaled.
- Heretic keys now have an icon associated with them so that they can be drawn through drawkeybar.
- Replaced the built in Heretic and Hexen status bars with SBarInfo equivalents.
SVN r2353 (trunk)
- Added: alpha command to SBarInfo which allows you to increase the translucency for certain parts of the status bar.
- Added: reverse flag for drawkeybar which reverses the order in which rows are filled with keys.
- Changed a gamemode statement to an else in the Doom hud since the frag count and keys should never be shown at the same time.
SVN r2351 (trunk)
- Restored some original Doom behavior that received complaints from users:
* reactivated the old sliding against diagonal walls code and compatibility optioned it with COMPATF_WALLRUN.
* re-added the original hitscan checking code using a cross-section of the actor instead of the bounding box, compatibility optioned with COMPATF_HITSCAN.
SVN r2340 (trunk)
* Fixed: Trying to use a response file would result in infinite looping until memory was
exhausted.
* Fixed: Response files were read after coalescing file parameters, which would lead to
non-coalesced parameters if the original command line and response file both had them.
* You can now use more than one response file.
* Response files can include other response files.
SVN r2334 (trunk)
some other application already has it. While technically this is a failure, the device is
still created, so we can continue using it anyway.
SVN r2326 (trunk)
A_FadeTo(float target, float amount = 0.10, bool remove = false)
Alters transparency towards target by amount. If remove is true, the actor is destroyed if it reaches target.
SVN r2305 (trunk)
- String constants starting in '$' will cause drawstring to reference the language lump.
- Added pushup transition for strife popups. This elulates the stats screen from hexen 2. This behaves identical to slideinbottom if the primary statusbar has fullscreenoffsets set.
SVN r2299 (trunk)
It will use negative indices for this. Currently supported strings are level name, level lump name and
skill name.
- Extended skill definitions so that printable name and image lump name are separate fields so that a
printable name can be specified for Doom, too.
SVN r2294 (trunk)
- Added new sprite #### and frame character # to specify the behavior of sprite ---- on a
per-sprite and per-frame basis respectively.
SVN r2291 (trunk)
- extended FileReader hierarchy so that FileReader, FileReaderZ etc. all inherit from one
base class so that the same code can be used to read from both uncompressed and compressed streams.
SVN r2287 (trunk)
- disabled writing the nodes with the dumpmap command. ZDoom doesn't need the nodes to load a map and this only worked if the original
map had standard nodes but trying to write out nodes loaded from any other format would have caused broken data.
SVN r2285 (trunk)
- extended compatibility text to allow changing line flags and setting line specials on specific linedefs.
- removed Strain MAP07 hack and replaced it by a clean 'clearlineflags' option.
- Added Doomo format translations for Sector_CopyScroller because this looks like something that might be useful for making
some Boom maps work without having to resort to compatibility.txt.
- added a compatibility setting for UAC Ultra MAP07 which exploited some undefined scrolling behavior in Boom.
(What lengths are we going to make sloppily created maps work? This entire commit was just to address this particular problem...)
SVN r2280 (trunk)
This means all subclasses also need to call their superclass's EndEffect(), which they were
not doing. For consistency, all the subclasses now do the same for InitEffect(), though
APowerup::InitEffect() is still a no-op.
SVN r2252 (trunk)
textures of type TEX_MiscPatch will return the first such texture, as it does with all
the other types. (It will still prefer to return a texture of a different type.
Why are these treated differently, anyway?)
SVN r2251 (trunk)
is not necessarily "self". The only visible change from this should be that inventory items
now set their own variables and not their owners'.
SVN r2235 (trunk)
- fixed memory leaks in SBARINFO and WAD loading code.
- added GetBloodColor and GetBloodType inline functions to AActor to wrap the GetMeta calls used for this.
SVN r2234 (trunk)
* Second argument: Volume scalar. 0 and 128 are normal volume. (Where "normal" is whatever
it was defined with in SNDINFO.) Other values scale it accordingly.
* Third argument: Minimum distance before volume fading starts.
* Fourth argument: Maximum distance at which the sound is audible. Setting either of these to 0
will use whatever they were defined with in SNDINFO.
SVN r2214 (trunk)
- Added an option to parse lumps named ZMAPINFO in place of MAPINFO. Any MAPINFO lumps in files containing
a ZMAPINFO lump will be completely ignored. This is to allow ZDoom specific definitions which are incompatible
with other engines capable of reading MAPINFO. Any ZMAPINFO lump must be in the new MAPINFO format.
SVN r2208 (trunk)
- fixed: When creating the initial identity translation for player translations the
global palette remapping was not taken into account.
SVN r2200 (trunk)
of this:
* A cluster's flat definition can now be preceded by a $ to do a string table lookup.
* Since the standard flat names are now in the LANGUAGE lump, the normal Dehacked substitution
for these is no longer handled specially and so will not be automatically disabled merely
by providing your own MAPINFO.
SVN r2195 (trunk)
atexit for it, which gets executed after the sound system shuts down.
- Fixed: FPlayList::Backup() failed to wrap around below entry 0 because Position is
unsigned now.
SVN r2188 (trunk)
Reinstated Doom's original code that made projectiles with the MF_NOCLIP flag set continue to exist even
though the movement itself was never properly handled.
Fortunately the game mode check formerly associated with this can be removed because none of the other games have
any projectiles using MF_NOCLIP so at least it's no longer restricted to Doom...
SVN r2187 (trunk)
Since we're already sending everything to a rich edit control hidden in the background,
we can just grab its contents for the report.
- Use code page 1252 when previewing text files in the crash dialog.
SVN r2185 (trunk)
now added to -file. This was previously restricted to only .wad, .zip, .pk3, and .txt.
- You can now pass -file/-deh/-bex more than once on the command line, and they will all
have effect.
SVN r2184 (trunk)
specify a character advance separately from the glyph width. GetChar and GetCharWidth now
return this value in place of the glyph width. (For non-BMF fonts, these should still
return the same values as before.)
SVN r2180 (trunk)
Silverex's X-Chat comes with the former now. Unfortunately, I can't seem to actually
set the font when my system default code page is 932, since it wants to use some Kanji-
compatible font instead. I wonder if I can still use the Unicode RichEdit control with
Windows 9x. (Does it even matter? Windows 9x users make up less than 0.1% of all visitors
to zdoom.org these days.)
SVN r2176 (trunk)
This is compatibility optioned with COMPAT_STAIRINDEX. Also added a compatibility setting for
Eternal Doom MAP25 which relies on Doom's original broken behavior.
- added a few sanity checks for duplicate actor names in DECORATE. ZDoom will now print more warnings
and all crash cases should be properly handled but since this is still an error this will not work
properly in all circumstances. For example, if you have a duplicate name all classes that inherit
from the original definition will not survive a savegame if they reference a state belonging to that
class at the point of saving.
- Print 'tried to register class more than once' in red to highlight it.
- fixed: actors may not replace themselves.
SVN r2158 (trunk)
(which I had forgotten to do for 2.4.0). If you don't use a controller to activate the string
entry mode and keep your hands off the controller while typing, it remains invisible.
SVN r2121 (trunk)
machines, so when an NPC need to show the "enough" response, it has enough
information available to do so.
- Some new Strife Teaser fixes I forgot to commit are in here.
- Moved norawinput check into FindRawInputFunctions().
SVN r2120 (trunk)
- fixed: The sound channel structure should not store the sound table's entries' addresses which are stored in a TArray by pointer. In case the array gets reallocated very bad things can happen. This caused some bad crashes when GZDoom's FraggleScript implementation created new sound entries.
SVN r2114 (trunk)
they are both created by the first-stage Sigil. AlienSpectre3 should have also been
immune to them but was not. In addition, Macil1 was erroneously immune to V1, when he should
not be immune to any spectral damage. (Though, since he's immortal, all that really amounts to
is that he can enter his pain state.)
SVN r2106 (trunk)
longer piggy-backs off of Hexen's puzzle item traversal but instead works like Strife,
using P_AimLineAttack() to find something to talk to and includes some slight left and right
"autoaim". I can think of a few consequences of this:
* Using puzzle items on actors has been restored to its original range of 64.
* Since talking now depends on P_AimLineAttack() instead of a line use traversal, you can
probably set up situations where you can talk to somebody that you couldn't talk to before
because some special line was in the way.
* You don't need to stick a guard flush against the wall to block players from using a switch
behind them, because now the autoaim will get the player.
SVN r2102 (trunk)
for all non-Doom games was too wide.
- fixed: Strife's dialogues cannot use the new options menu code to draw
themselves so now they use a stripped down version of the old code.
- Replaced I_MSTime with I_FPSTime in node builder timing because basetime
will not be initialized yet if a map is started directly from the commandline.
SVN r2096 (trunk)
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)
Mobility Radeon 9000 (on a PCI card, no less!), I have decided to give the
PS14 support some loving: D3D windowed gamma now works on these cards using
a texture lookup for the gamma table. Sadly, this halves my framerate, so
setting gamma to 1 will skip the gamma correction, as it was before, for
full speed. (On my 8800 GT, the gamma correction was free.)
SVN r1898 (trunk)
into the FastProjectile base class and removed the native MageWandMissile
class, using the generic functionality instead.
- Fixed: GetReplacement and GetReplacee always checked the skill definitions,
even if they weren't supposed to be used. It was also missing a range check
for 'gameskill'.
SVN r1894 (trunk)
- fixed: The BossCube could be blocked by floors and ceiling resulting
in incorrect movement. I changed it so that A_BrainSpit now sets the
MF5_NOINTERACTION flag for anything it spawns that has the MF_NOCLIP
flag. For travelling cubes active collision detection makes no sense
and only causes problems. This should also make the boss brain
work in the other games which previously were excluded by a game mode
check in the movement code.
- fixed: ACS's GetUserVariable did not work for the script activator.
- fixed: Moving floors could be blocked by 2 actors without MF2_PASSMOBJ
overlapping each other (common mapping bug, check Herian 2 MAP30.)
SVN r1891 (trunk)
for true color. Instead of using a clipping rectangle on the destination it
tried to alter the source offsets which produced incorrect results for
mirrored or rotated patches.
SVN r1889 (trunk)
invalid for net games. hxvisit was erroneously accepted for net games
before, which it shouldn't have, since it's basically idclev for Hexen.
SVN r1881 (trunk)
instead of the player class's maximum.
- Fixed: A_CStaffCheck() assumed the player's max health was 100 instead
of getting checking for the true maximum.
SVN r1876 (trunk)
first before drawing into it if the copy op passed to it is OP_OVERWRITE.
FTexture::FillBuffer() sets this to erase whatever texture might have been
in the space it is going into.
SVN r1874 (trunk)
surfaces are alternately locked for read-only access each frame, forcing
the driver to stop buffering more than one frame at a time. The input lag
on my system doesn't seem to be as bad as it once was (I can no longer
see it obviously with my naked eye), but turning antilag on "feels"
slightly more responsive. The cvar d3d_antilag turns this technique on and
off. See <http://www.xyzw.de/c120.html> for more details.
SVN r1870 (trunk)
It must set it to 0 if the alpha is 0 to avoid problems with special
colormap detection.
- Changed SPECIALCOLORMAP_MASK again so that it does not interfere with
any valid setting. It must use a value with a 0-alpha because these
are guaranteed not to be produced by the DECORATE code elsewhere.
- Fixed precision issues with AddFixedColormap's search for identical colormaps.
- Added custom colormap support to texture composition code.
- Fixed initialization of FSpecialColormap::GrayscaleToColor. This is not
a mapping from the palette but from a [0,255] grayscale ramp and used to
apply colormaps to true color images for texture composition.
SVN r1867 (trunk)
which could cause crashes.
- Added custom special colormaps to DECORATE.
- Cleaned up special colormap code and removed lots of dependencies on the
knowledge of the tables' contents.
SVN r1860 (trunk)
completely ignore them, either).
- Separated light level fixing out of player_t's fixedcolormap parameter.
Using a fixed light level (e.g. PowerTorch) will no longer wipe out
colored lighting.
- Moved the blending rectangle drawing into a separate discrete stage, since
doing it while copying the 3D view window to the display now blends
underneath the weapon instead of on top of it.
- Consolidated the special colormaps into a single 2D table.
- Tweaked the special colormaps slightly to make the true color results more
closely match the paletted approximations.
- fb_d3d9_shaders.h was getting unwieldy, so I moved the shaders out of the
executable and into zdoom.pk3. Shaders are still precompiled so I don't need
to pull in a dependancy on D3DX.
- Added a few more shaders to accomodate drawing weapons with all the in-game
lighting models. These are accessed with the new DrawTexture tags
DTA_SpecialColormap and DTA_ColormapStyle.
- Player weapon sprites are now drawn using Direct3D and receive all the
benefits thereof.
SVN r1858 (trunk)
BOUNCE_MBF and BOUNCE_UseSeeSound, too, when clearing one of these flags.
- Fixed: When adding the AVOIDMELEE code the code was accidentally changed so that
friendly monsters could no longer acquire targets by themselves.
- Renamed WIF_BOT_MELEE to WIF_MELEEWEAPON because it's no longer a bot only flag.
- Added MBF's monster_backing feature as an actor flag: AVOIDMELEE.
SVN r1848 (trunk)
* Moves the dog sound out of the Doom-specific sounds in SNDINFO to address this,
* Renames the dog actor to MBFHelperDog to prevent name conflicts,
* Adds APROP_Score to CheckActorProperty,
* Completes the randomspawner update (the reason I moved the recursion counter out of
special1 was that I found some projectiles had this set to them, for example in
A_LichAttack, but I forgot to add transfer for them),
* Provides centered sprites for beta plasma balls if this is deemed deserving correction.
SVN r1847 (trunk)
- Cleaned up A_LookEx code and merged most of it with the base functions.
The major difference was a common piece of code that was repeated 5 times
throughout the code so I moved it into a subfunction.
- Changed P_BlockmapSearch to pass a user parameter to its callback so that
A_LookEx does not need to store its info inside the actor itself.
SVN r1846 (trunk)
- added thing activation types for BUMPSPECIAL and USESPECIAL. Also added
a new ClearSpecial flag to the activation type.
- added MBF's code for dogs jumping down, controlled by the MF6_JUMPDOWN
flag.
SVN r1835 (trunk)
yesterday's additions. Changed it so that the parser first checks for
the presence of a '-' sign before deciding whether to use strtol or
strtoul to convert the string into a number.
SVN r1831 (trunk)
The range checks this protected against can be safely omitted now that the misc fields are large enough.
- added MBF Dehacked emulation.
SVN r1824 (trunk)
* MBF's dog (definition only, no sprites yet.)
* User variables. There's an array of 10. They can be set and checked in both DECORATE and ACS.
* Made the tag name changeable but eliminated the redundancy of having both the meta property and the individual actor's one. Having one is fully sufficient. TO BE FIXED: Names are case insensitive but this should better be case sensitive. Unfortunately there's currently nothing better than FName to store a string inside an actor without severely complicating matters. Also bumped savegame version to avoid problems with this change.
SVN r1823 (trunk)
- Added more things from Gez's experimental build:
* MBF grenade and bouncing code.
* Arch Vile ghosts emulation (only for compatibility.txt.)
* Several MBF related compatibility options.
SVN r1821 (trunk)
* info CCMD to print extended actor information (not fully implemented yet)
* summonmbf CCMD.
* Beta BFG code pointer (but not the related missiles yet.)
* PowerInvisibility enhancements.
* ScoreItem with one significant change: Added a score variable that can be
checked through ACS and DECORATE. The engine itself will do nothing with it.
* Nailgun option for A_Explode.
* A_PrintBold and A_Log.
* A_SetSpecial.
SVN r1819 (trunk)
unused line argument fields, because these maps could potentially break
in the future if the argument is later assigned a meaning. (Hopefully
all the argument counts in actionspecials.h are accurate. I found a
few that were wrong.)
SVN r1817 (trunk)
- Fixed: The non-Windows CreatePath can fail if part of the path already
exists, because mkdir will return an error code for trying to recreate
an existing directory.
SVN r1814 (trunk)
closer to the original. The old code was shorter but a little slower. The
new code is a bit faster than the original with VC++ and about the same
with GCC. Interestingly, GCC produces code for Killough's version that
performs about the same as the original, but when compiled with VC++,
Killough's is notably worse.
SVN r1813 (trunk)
- moved default item drop style into gameinfo.
- moved default respawn time into gameinfo.
- moved default inventory max amount into gameinfo.
- turned Heretic's blocking of the sector for LS_Plat_RaiseAndStayTx0 into
a parameter instead of having the game mode decide.
SVN r1812 (trunk)
- fixed: Floor and ceiling hugger projectiles should not be spawned with ONFLOORZ or ONCEILINGZ
because that will make them ignore the actual floor height if it differs from the sector's floor.
- fixed: Floor and ceiling huggers spawned by a player did not get their vertical velocity set to 0.
- some sidenum related changes in inactive 3D floor code.
SVN r1802 (trunk)
the various bounce-related flags spread across the different Actor flags
field into a single BounceFlags field.
- Fixed: P_BounceWall() should calculate the XY velocity using a real
square root and not P_AproxDistance(), because the latter can cause
them to speed up or slow down.
SVN r1796 (trunk)
Zipdir is not doing byte swapping like it should. zdoom.ini is stored
in ~/Preferences, but all other file accesses are probably going to be
like Windows and look in the same directory as the executable.
SVN r1786 (trunk)
that parameter is now gone.
- Removed automatic ".wad" appending from FWadCollection::InitMultipleFiles()
since it isn't needed and prevented files without extensions from being
loaded. D_AddFile() already takes care of adding the extension if the
name as-given does not exist.
- Fixed: Loading single files did not print a newline in the startup text.
SVN r1784 (trunk)
ran dmadds to combine it with the IWAD's sprites, they would be replaced by
the IWAD's sprites, so when loading such wads, we should ignore those as
valid sprites. (Thanks to entryway for finding this.) See 22ventry's
22sprite.wad for an example.
SVN r1782 (trunk)
that were changed some time ago.
- fixed: The damage inflictor for a rail attack was the shooter, not the puff.
- Fixed: Floor and ceiling huggers may not change their z-velocity when seeking.
- Fixed: UDMF set the secret sector flag before parsing the sector's properties,
resulting in it always being false.
- Renamed sector's oldspecial variable to secretsector to better reflect its
only use.
- Fixed: A_BrainSpit stored as the SpawnShot's target the intended BossTarget,
not itself contrarily to other projectile spawning functions.
A_SpawnFly then used the target for CopyFriendliness, thinking it'll be the
BossEye when in fact it wasn't.
- Added Gez's submission for a DEHACKED hack introduced by Boom.
(using code pointers of the form 'Pointer 0 (x statenumber)'.
- fixed: Attaching 3DMidtex lines by sector tag did not work because lines
were marked by index in the sector's line list but needed to be marked by
line index in the global array.
- fixed: On Linux ZDoom was creating a directory called "~.zdoom" for
save files because of a missing slash.
- fixed: UDMF was unable to read floating point values in exponential format
because the C Mode scanner was missing a definition for them.
- fixed: The recent changes for removing pointer aliasing got the end sequence
info from an incorrect variable. To make this more robust the sequence index
is now stored as a hexadecimal string to avoid storing binary data in a string.
Also moved end sequence lookup from f_finale.cpp to the calling code so that
the proper end sequences can be retrieved for secret exits, too.
SVN r1777 (trunk)
flag set, causing it to be ignored during rendering. Why this didn't cause
more trouble, I don't know.
- Fixed: The UDMF parser passed the wrong value for "default alpha" for
TranslucentLine to P_FinishLoadingLineDef().
SVN r1775 (trunk)
- Fixed: Even though P_DamageMobj checked an attack's originator
for MF2_NODMGTHRUST the same check was missing from P_RadiusAttack.
- Fixed: A_MinotaurRoam should not assume without check that it was
called by a MinotaurFriend.
- Fixed: The Minotaur declared A_MntrFloorFire which it did not use.
- Fixed: All Spawnspot functions did not check for a spot tid of 0 as
the script's activator.
- Fixed: Friendly monsters ignored team association of their owning
players.
SVN r1770 (trunk)
alive, it now sets the activator to the actor the player is aiming at. I
also noticed that this looked like it was a quick copy'n'paste job from
SetActivator. It returns false if the activator at the end of the function
was the world, but it never sets the activator to the world. I'm not sure
that's the best use of the return value.
SVN r1760 (trunk)
edit-and-continue from working for the Windows source files.
- When a WM_KEYDOWN message is received with VK_PROCESSKEY, the scan key is
now used to retrieve the real virtual key for the message. This fixes the
previous issue that caused me to completely disable the IME.
- Removed the code that disables the IME, since it also disables the ability
to switch between keyboard layouts that do not use an IME.
- TranslateMessage() is no longer called if GUI capture mode is off, so no
dead key processing is performed until it might be useful.
SVN r1758 (trunk)
max health as the mug shot max health, zero uses 100 as the mug shot max
health, and positive values used directly as the mug shot max health.
SVN r1757 (trunk)
1000 as the threshold for god mode damage to use it instead. (Players with
MF2_INVULNERABLE set already used 1000000 as their threshold.)
SVN r1755 (trunk)
in the gameinfo.
- Added Yes/No selections for Y/N messages so that you can answer them
entirely with a joystick.
- Fixed: Starting the menu at the title screen with a key other than Escape
left the top level menu out of the menu stack.
- Changed the save menu so that cancelling input of a new save name only
deactivates that control and does not completely close the menus.
- Fixed "any key" messages to override input to menus hidden beneath them and
to work with joysticks.
- Removed the input parameter from M_StartMessage and the corresponding
messageNeedsInput global, because it was redundant. Any messages that want
a Y/N response also supply a callback, and messages that don't care which
key you press don't supply a callback.
- Changed MKEY_Back so that it cancels out of text entry fields before
backing to the previous menu, which it already did for the keyboard.
- Changed the menu responder so that key downs always produce results,
regardless of whether or not an equivalent key is already down.
SVN r1753 (trunk)
is found. This mimics the old behavior which also disabled DEHACKED when
the DEHSUPP lump was incompatible with the current engine. This behavior is
needed to ensure that WADs that contain a ZDaemon-exclusive DEHSUPP lump
continue to work as intended.
SVN r1748 (trunk)
- Fixed: TObjPtr did not use a union to map its 2 pointers together.
- Added a compatibility mode for A_Mushroom. For DECORATE it is an additional
parameter but to force it for Dehacked mods some minor hacks using the
Misc1 variable were needed.
SVN r1746 (trunk)
influence of vertical thrust from the radius attack, since ZDoom does
explosions in three dimensions, but Doom only did it in two.
- Fixed: The last three parameters to A_VileAttack had their references off
by one. Most notably as a result, the blast radius was used as the thrust,
so it sent you flying far faster than it should have.
SVN r1745 (trunk)
issues that caused its inclusion. Is an optimized GCC build any faster
for being able to use strict aliasing rules? I dunno. It's still slower
than a VC++ build.
I did run into two cases where TAutoSegIterator caused intractable problems
with breaking strict aliasing rules, so I removed the templating from it,
and the caller is now responsible for casting the probe value from void *.
- Removed #include "autosegs.h" from several files that did not need it
(in particular, dobject.h when not compiling with VC++).
SVN r1743 (trunk)
originally a counter, so if it started at 0, A_SpawnFly would effectively
never spawn anything. Fixes Dehacked patches that use A_SpawnSound to
play a sound, since it calls A_SpawnFly.
SVN r1741 (trunk)
- Joystick devices now send key up events for any buttons that are held
down when they are destroyed.
- Changed the joystick enable-y menu items to be nonrepeatable so that you
can't create several device scans per second. Changing them with a
controller is also disabled so that you can't, for example, toggle XInput
support using an XInput controller and have things go haywire when the
game receives an infinite number of key down events when the controller
is reinitialized with the other input system.
- Changed menu input to use a consolidated set of buttons, so most menus
can be navigated with a controller as well as a keyboard.
- Changed the way that X/Y analog axes are converted to digital axes.
Previously, this was done by checking if each axis was outside its deadzone.
Now they are checked together based on their angle, so straight up/down/
left/right are much easier to achieve.
SVN r1739 (trunk)
methods. Analog axes now respond Button_Speed and cl_run in exactly the
same way as digital buttons do.
- Changed rounding slightly for analog axis -> integer in G_BuildTiccmd().
- Fixed: FXInputController::ProcessThumbstick() was slightly off when it
converted to the range [-1.0,+1.0].
SVN r1733 (trunk)
the same as the next new skill defined, if neither definition explicitly set
the value for ACSReturn.
- Added a DefaultSkill property. Adding it to a skill will cause that skill
to be the default one selected in the menu. If none is specified as the
default, then the middle skill is the default.
SVN r1731 (trunk)
numerically next to the slider.
- The minimum value for m_yaw, m_pitch, m_forward, and m_side from the
menu has been dropped from 0.5 to 0, so those particular mouse motions can
be disabled entirely without using the console.
SVN r1729 (trunk)
* WRF_NOBOB (1): Weapon won't bob
* WRF_NOFIRE (12): Weapon won't fire at all
* WRF_NOSWITCH (2): Weapon can't be switched off
* WRF_NOPRIMARY (4): Weapon will not fire its main attack
* WRF_NOSECONDARY (8): Weapon will not fire its alt attack
SVN r1720 (trunk)
and a list of all attached controllers, and a second level for configuring
an individual controller.
- Fixed: Pressing Up at the top of a menu with more lines than fit on screen
would find an incorrect bottom position if the menu had a custom top height.
- Added the cvars joy_dinput, joy_ps2raw, and joy_xinput to enable/disable
specific game controller input systems independant of each other.
- Device change broadcasts are now sent to the Doom event queue, so
device scanning can be handled in one common place.
- Added a fast version of IsXInputDevice that uses the Raw Input device
list, because querying WMI for this information is painfully slow.
- Added support for compiling with FMOD Ex 4.26+ and running the game
with an older DLL. This combination will now produce sound.
SVN r1717 (trunk)
* A_SentinelAttack must check for a NULL target
* Monsters with CANTLEAVEFLOORPIC could not move because their floor
texture was not initialized.
SVN r1715 (trunk)
level to end when in a sector of type 'end level when health below 10'.
- Fixed: The 'kill' cheat set the player to nonshootable even if it did not
succeed.
SVN r1714 (trunk)
missiles.) Also added PPF_NOTHRUSTWHILEINVUL to prevent invulnerable players
from being thrusted while taking damage. (Non-players were already
unthrusted.)
SVN r1695 (trunk)
velocity, and now it's known as such. The actor variables momx/momy/momz
are now known as velx/vely/velz, and the ACS functions GetActorMomX/Y/Z
are now known as GetActorVelX/Y/Z. For compatibility, momx/momy/momz will
continue to work as aliases from DECORATE. The ACS functions, however,
require you to use the new name, since they never saw an official release
yet.
SVN r1689 (trunk)
maintains its own FOV scale independent from any other weapons the player
may have.
- Fixed: When parsing DECORATE functions that were not exported, the parser
crashed after giving you the warning.
SVN r1688 (trunk)
- Added XInput support. For the benefit of people compiling with MinGW,
the CMakeLists.txt checks for xinput.h and disables it if it cannot
be found. (And much to my surprise, I accidentally discovered that if you
have the DirectX SDK installed, those headers actually do work with GCC,
though they add a few extra warnings.)
SVN r1686 (trunk)
and loading, XInput, allow axes to be used as buttons (for the Xbox
controller's trigger buttons), allow the joystick to move through the
menus, and my PS2 adapter which has no Vista x64 drivers.
* I'm sure SDL is broken again. Don't bother reporting it, because I already know.
SVN r1680 (trunk)
members into 32 bits so that it can be stored in a plain old int without
any transformations. The transformation coord -> int -> coord was
destructive if the coordinate value was negative, causing the final
coordinate to be centered even if the original was not.
SVN r1678 (trunk)
- Added oleaut32.lib as an explicit library in the VC Proj, since the 2005 Express Edition
doesn't include it implicitly the way the other versions do.
SVN r1673 (trunk)
took far too long to reach this point.) Manual axis configuration is
currently disabled, since I need to rewrite that, too. The eventual point of
this is that the code will be modular enough that I can just plop in
routines for XInput controllers and driver-less PlayStation 2 adapters
without much fuss, since the old joystick code was very much DirectInput-
centric.
SVN r1672 (trunk)
one for each call.
- Fixed: AWeaponGiver::TryPickup checked the wrong item for ammo to give.
- fixed: FRandom::Random2(int mask) must return the difference between 2 byte values
for compatibility.
- fixed: The sound name world/volcano/shoot was accidentally destroyed in the source.
SVN r1671 (trunk)
a Minotaur couldn't spawn floor flames when standing in water having its
feet clipped.
- added vid_vsync to display options.
- fixed: Animations of type 'Range' must be disabled if the textures don't
come from the same definition unit (i.e both containing file and use type
are identical.)
- changed: Item pushing is now only done once per P_XYMovement call.
- Increased the push factor of Heretic's pod to 0.5 so that its behavior
more closely matches the original which depended on several bugs in the engine.
- Removed damage thrust clamping in P_DamageMobj and changed the thrust calculation
to use floats to prevent overflows. The prevention of the overflows was the
only reason the clamping was done.
- Added Raven's dagger-like vector sprite for the player to the automap code.
SVN r1668 (trunk)
loaded as if they had one more lump with that end marker. This matches the
behaviour of previously released ZDooms. (The warning is still present, so
there's no excuse to release more wads like this.)
SVN r1667 (trunk)
* BUMPSPECIAL flag: actors with this flag will run their special if collided on by a player
* WEAPON.NOAUTOAIM flag, though it is restricted to attacks that spawn a missile (it will not affect autoaim settings for a hitscan or railgun, and that's deliberate)
* A_FireSTGrenade codepointer, extended to be parameterizable
* The grenade (as the default actor for A_FireSTGrenade)
* Protective armors à la RedArmor: they work with a DamageFactor; for example to recreate the RedArmor from Skulltag, copy its code from skulltag.pk3 but remove the "native" keyword and add DamageFactor "Fire" 0.1 to its properties.
SVN r1661 (trunk)
- Fixed: P_LineAttack may not check the puff actor for MF6_FORCEPAIN because
it's not necessarily spawned yet.
- Fixed: FWeaponSlots::PickNext/PrevWeapon must be limited to one iteration
through the weapon slots. Otherwise they will hang if there's no weapons
in a player's inventory.
SVN r1659 (trunk)
* scalex_top
* scaley_top
* scalex_mid
* scaley_mid
* scalex_bottom
* scalex_bottom
- Added sidedef versions of the linedef flags wrapmidtex and clipmidtex (via
UDMF; names are the same). If the flag is set on the line, it applies to
both sides. Otherwise, each side can control them individually.
SVN r1645 (trunk)
- Added MF6_NOFEAR flag.
- Added A_MonsterRefire(probability, jumptarget).
- Added A_JumpIfTargetInSight(state) action function.
- Changed: Puffs set their angle to face the originator of the attack.
- Strife's burning hands originally make the level view fullbright.
changed in ZDoom to do partial brightening.
SVN r1642 (trunk)
default bindings for it. (Only works with Raw Input on XP. Vista has
support through Win32 mouse, as well. DirectInput does not support it at
all, because the DirectInput mouse device does not expose this control.)
SVN r1640 (trunk)
the PC98 equivalent so it would be recognized as kp=. (Interestingly, F13-
F16 and kp= only generate events when using Raw Input, not when using
DirectInput.
SVN r1639 (trunk)
regardless of pain chance.
- Changed screenblocks CVAR to be settable per game.
- Added SpawnSpotForced and SpawnSpotFacingForced ACS functions.
- Added pushfactor actor property.
SVN r1638 (trunk)
- fixed: The Dehacked parser could not parse flag values with the highest bit
set because it used atoi to convert the string into a number.
SVN r1624 (trunk)
the game has finished.
- Added NOBOSSRIP flag. Note: we are now at flags6!
- Added SetSkyScrollSpeed(int skyplane, fixed speed) ACS function.
- Added THRUACTORS flag that disables all actor<->actor collision detection.
- Added DONTSEEKINVISIBLE flag for missiles that can't home in on invisible
targets.
- Added SFX_TRANSFERPITCH flag to A_SpawnItemEx.
- Added Ultimate Freedoom IWAD detection.
- Added GetAirSupply and SetAirSupply functions to ACS.
- Fixed: The *surface sound was not played when drowning was switched off
by setting the level's air supply to 0.
SVN r1619 (trunk)
fullscreen. (e.g. You could no longer scroll the console with the mouse
buffer.)
- Fixed: Wheeling down was seen as wheeling up with the Win32 mouse.
SVN r1618 (trunk)
in data2. This was just unnecessary overhead that wasn't really needed
anywhere.
- Moved GUI-mode input into a separate function to make the code easier to
read.
SVN r1617 (trunk)
switched it to buffered input, and the pause key seems to be properly
cooked, so I don't need to look for it with WM_KEYDOWN/UP. Tab doesn't
need to be special-cased either, because buffered input never passes on
the Tab key when you press Alt+Tab. I have no idea why I special-cased
Num Lock, but it seems to be working fine. By setting the exclusive mode
to background, I can also avoid special code for releasing all keys when
the window loses focus, because I'll still receive those events while the
window is in the background.
SVN r1613 (trunk)
once. This is because destroying one weapon has a potential to destroy a
sister weapon as well. If the sister weapon is the next one in line (as it
typically is), it would process that one, not realizing it was no longer
part of the inventory, and stop because its Inventory link was NULL.
SVN r1610 (trunk)
mouse should be grabbed. This fixes the case where you start the game in
the background and it grabs the mouse anyway.
- Changed raw mouse grabbing to call ShowCursor() directly instead of through
SetCursorState(), since changing the pointer isn't working with it
(probably due to the lack of legacy mouse messages), and the others work
fine by setting an invisible cursor.
- Fixed: Raw mouse input passes wheel movements in an unsigned field, but the
value is signed, so it requires a cast to use it.
- Reverted accidental changes to src/sdl/i_input.cpp.
SVN r1605 (trunk)
textures. They also must be set to dimensions other than (0,0) to avoid division
by zero errors.
- Fixed: Random spawners did not handle the MF_DROPPED flag.
SVN r1602 (trunk)
with RIDEV_NOLEGACY apparently prevents SetCursor() from doing anything.
- Split mouse code off from i_input.cpp into i_mouse.cpp and added raw mouse
handling. (WM_INPUT obsoleted most of DirectInput for XP.)
- Fixed: Similar to the Win32 mouse, using the DirectInput mouse in windowed
mode, if you alt-tabbed away and then clicked on the window's title bar,
mouse input would be frozen until the mouse was ungrabbed again.
SVN r1601 (trunk)
- Changed bounce flags into a property and added real bouncing sound properties.
Compatibility modes to preserve use of the SeeSound are present and the old
flags map to these.
SVN r1599 (trunk)
clicking on the window's title bar moved it practically off the screen.
- Beginnings of i_input.cpp rewrite: Win32 and DirectInput mouse handling has
been moved into classes.
SVN r1597 (trunk)
speedup.
- Replaced the Shanno-Fano/Huffman reading routines from FZipExploder with
ones of my own devising, based solely on the specs in the APPNOTE.
SVN r1590 (trunk)
files that use a literal table and 8k dictionary, and that the just-added
Shrink support works at all.
- Replaced the bit-at-a-time Shannon-Fano decoder from GunZip.c64 with the
word-at-a-time one from 7-Zip for a slight speedup when working with
Imploded files.
SVN r1588 (trunk)
- Removed #pragma warnings from cmdlib.h and fixed the places where they were
still triggered.
These #pragmas were responsible for >90% of the GCC warnings that were not
listed in VC++.
- Fixed one bug in the process: DSeqNode::m_Atten was never adjusted when the
parameter handling of the sound functions for attenuation was changed.
Changed m_Atten to a float and fixed the SNDSEQ parser to set proper values.
Also added the option to specify attenuation with direct values in addition
to the predefined names.
SVN r1583 (trunk)
- Fixed: P_CheckSwitchRange tried to access a line's backsector without
checking if it is valid.
- Fixed: Fast projectile could not be frozen by the Time freezer.
- Added several new ACS functions: GetActorMomX/Y/Z, GetActorViewHeight,
SetActivator, SetActivatorToTarget.
SVN r1578 (trunk)
- Added support for ACS functions that can be defined without recompiling ACC.
- Fixed: The short lump name for embedded files must be cleared so that they
are not found by a normal lump search.
- Added AProp_Notarget actor property.
- Fixed: TraceBleed was missing a NULL pointer check,
- Fixed: P_RandomChaseDir could crash for friendly monsters that belong to
a player which left the game.
- Changed A_PodGrow so that it plays the generator's attack sound instead of
"misc/podgrow".
SVN r1575 (trunk)
- Added transference of a select few flags from PowerProtection to its owner.
- Added actor type parameters to A_PodPain() and A_MakePod().
- The savegame path is now passed through NicePath(), since it's user-
specifiable.
- Added save_dir cvar. When non-empty, it controls where savegames go.
- SBARINFO update:
* Added the ability to center things with fullscreenoffsets enabled. Due
to some limitations the syntax is [-]<integer> [+ center].
* Fixed: the translucent flag on drawinventorybar didn't work quite right.
* Fixed: Extremely minor inaccuracy in the Doom SBarInfo code. The
fullscreen inventory bar wasn't scaled correctly.
SVN r1571 (trunk)
- Made 'next endgame' work again for cases where it is supposed to be
the same as 'next endgame4'.
- GCC nitpick fix: Classes being used as template parameters may not be
defined locally in a function. Fixed FWadFile::SetNamespace for that.
- Improved error reporting for incorrect textures in maps.
- Fixed: When music was stopped this was not set in the global music state.
- Fixed: Friendly monsters did not target enemy players in deathmatch.
SVN r1567 (trunk)
texture manager. They now get assigned a new FEmptyTexture object
that is just a 1x1 pixel transparent texture.
- Fixed: Multiple namespace markers of the same type were no longer detected.
- Fixed sprite renaming.
SVN r1566 (trunk)
checking for the end marker. On 32-bit systems, this is -1, but on 64-bit
systems, it is a very large integer that is highly unlikely to be in mapped
memory.
SVN r1564 (trunk)
- Fixed: AM_NewResolution crashed when called from outside a level.
- Added support for Quake PAK files.
- Improved warning messages for WAD files with incorrect marker usage.
SVN r1556 (trunk)
extensions.
- Removed merging of special namespaces. For the texture manager this has
become totally useless so there is no need to do this anymore. Not merging
the namespaces also allows a much more reliable detection of lumps belonging
to special namespaces so the ScanForFlatHack function is no longer needed.
Instead, any lump up to F_END with a length of 4096 will be marked for
inclusion as a flat texture if no F_START marker is found.
- Made the counting of intermission stats in Doom a GAMEINFO option so that
it can be activated in all games.
SVN r1555 (trunk)
- Added -noautoload option.
- Added default Raven automap colors set. Needs to be tested because I can't
compare against the DOS version myself.
- Extened A_PlaySound and A_StopSound to be able to set all parameters of the
internal sound code.
SVN r1544 (trunk)
of a moving floor, regardless of movement speed. For NOBLOCKMAP items this
is necessary because otherwise they can be left in the air and it also adds
some options for other things.
SVN r1540 (trunk)
variable inside A_VileAttack() so that if P_DamageMobj() destroys the
target, the function will still have a valid pointer to it (since reading
it from the actor's instance data invokes the read barrier, which would
return NULL).
SVN r1538 (trunk)
CMAKE_BUILD_TYPE. (It seems to like to hang when generating arith.h for gdtoa when you
do this, but killing the make process and restarting it seems to fix that.)
SVN r1531 (trunk)
empty weapon slots due to the recent rewrite of the weapon slot assignment
code. To handle such classes each game now defines a default weapon slot
setting in its gameinfo. This will be used when a player class without any
weapon slot settings is used.
SVN r1521 (trunk)
- Fixed: player.crouchsprite had no proper means of unsetting the crouch
sprite which is needed by the ChexPlayer.
- Fixed: A_ChangeFlags must unlink the actor from the world before changing
the NOBLOCKMAP and NOSECTOR flags.
SVN r1514 (trunk)
- Changed the definition of several typedef'd structs so that they are
properly named.
- Limited DEHSUPP lump lookup to search zdoom.pk3 only. It will no longer
be possible to load DEHSUPP lumps from user WADs.
- Brought back the text-based DEHSUPP parser and changed it to be able to
reference states by label. Also changed label names of
DoomUnusedStates and added proper labels to all states that were
previously forced to be the first state of an actor so that the old
(limited) method could access them. This was done to address the following
bug:
- Fixed: The player's death states calling A_PlayerSkinCheck should not be
part of the state set that is accessible by Dehacked. These will produce
error messages when mapped to non-players.
SVN r1512 (trunk)
cryptographically secure random number generator, if available, instead
of the current time.
- Changed the random number generator from Lee Killough's algorithm to the
SFMT607 variant of the Mersenne Twister.
SVN r1507 (trunk)
typedef'ed anonymous structs.
- Fixed: P_AutoUseHealth() used autousemodes 0 and 1 instead of 1 and 2.
- Fixed: SBARINFO did not recognize 5:4 aspect ratio.
- Fixed: screenshot_dir was ignored.
SVN r1505 (trunk)
with maps that have no name.
- Fixed: The inner loop in AWeaponSlot::PickWeapon could endlessly loop when
the counter variable became negative.
SVN r1504 (trunk)
- removed gamemode variable. All it was used for were some checks that
really should depend on GI_MAPxx.
- Externalized all internal gameinfo definitions.
- added include to MAPINFO parser.
- split IWAD detection code off from d_main.cpp into its own file.
- disabled gamemission based switch filtering because it is not useful.
- added GAMEINFO submission by Blzut3 with significant modifications. There
is no GAMEINFO lump. Instead all information is placed in MAPINFO, except
the data that is needed to decide which WADs to autoload.
SVN r1497 (trunk)
- Reinitializing the WAD manager will now delete all data.
- Preparation for GAMEINFO: zdoom.pk3 will be opened separately before checking the IWAD
so that the internal GAMEINFOs can be externalized, too.
SVN r1494 (trunk)
making a function call in ACS. Now you can print inside functions and
also return values from them for the caller to plug directly into
another string without having to save it to a temporary variable.
SVN r1492 (trunk)
initialization. To be used to check for errors in scripts without actually
running the game.
- Added the -stdout parameter to the Windows version to send all output to
a console, like the Linux version has done all along.
SVN r1486 (trunk)
- Removed CVAR_SERVERINFO flag from compatmode. Since it writes to
compatflags, that should be enough. Having that flag set for both of
them leads to problems with e.g. loading a savegame, where compatflags is
restored, then compatmode is restored and it completely undoes whatever
compatflags was restored to.
- Fixed: Trying to start a map for some single file that isn't really a map
caused a crash.
SVN r1478 (trunk)
- Added more output to zipdir and a -q option to turn it off.
- Added -u option to zipdir to only recompress those files in a zip that have
changed.
- Added -d and -f options to zipdir. -d forces deflate compression, and -f
forces a write of the zip, even if it's newer than all the files it contains.
- Added support for bzip2 and LZMA compression to zipdir.
SVN r1468 (trunk)
the title screen, because the demo loop reset the server cvars after each
attempt to play a demo, even though the demos never actually played. The
proper long-term solution would be to make shadow copies of all cvars
touched by demos and use those for the demo and the real things for
everything else, but this should do for now and is a lot easier.
SVN r1463 (trunk)
QueryPerformanceCounter() is obviously using the TSC for its timing on my
machine, yet the overhead it has to do to keep the timer sane is apparently
noticeable on a few maps. I suppose I should at some time check
clock_gettime() and see if it has similar issues on Linux.
SVN r1460 (trunk)
be called now.
- fixed: D'Sparil's second form was missing the BOSSDEATH flag.
- fixed: D'Sparil's first form requires the DONTGIB flag.
- fixed: Heretic doesn't crush monsters. To handle this in a more generic
fashion this depends on the presence of a gib sprite now.
SVN r1459 (trunk)
- Fixed: Gravity application was not correct. For actors with no vertical
momentum the initial pull is supposed to be twice as strong as when
vertical movement already takes place.
- added invquery CCMD like in Strife. Also removed all underscores from the
tag strings so that they can be printed properly.
- Fixed: Skill baby was missing 'autousehealth' for all games.
- Added a new CVAR: sv_disableautohealth
- Autouse of health items is no longer hardwired to the default item classes.
There's a new property HealthPickup.Autouse. 0 means no autouse, 1 a small
Raven health item, 2 a large Raven health item and 3 a Strife item.
SVN r1452 (trunk)
effect rather than as an input to the ChannelGroup Target Unit. This means
the water effect is now applied after any room reverb, rather than in
parallel with it.
- Fixed: UI sounds should not have reverb applied to them.
SVN r1450 (trunk)
DSP position. Without also synchronizing the stopping of sounds, it can
cause problems with things like the chainsaw where the sound is stopped and
immediately restarted, causing occasional gaps between the stopping of the
sound and the starting of the new one. (I added the start synchronization to
combat flanging of paired moving polyobjects when moving around, but I think
just removing velocity from the player for sound calculations takes care of
that well enough.)
SVN r1447 (trunk)
- Added FakeInventory.Respawns DECORATe property
- Fixed: Unsetting the MF5_INCONVERSATION flag did not work when quitting the
conversation by pressing Escape.
SVN r1442 (trunk)
so it contained an invalid pointer. There were also a few other places that
simply assumed that the second chip is set to something valid.
- Fixed: NPCs which are engaged in a conversation should not move.
- Fixed: Player movement animation was not stopped when starting a conversation.
SVN r1439 (trunk)
don't actually compress all that well, even the ones that aren't too short
to possibly compress. (Maybe make the whole thing one long, never-ending
zlib data stream with Z_SYNC_FLUSH used to chunk things at packet
boundaries? That would probably help the compression ratio, but it would
require changing the way the netcode determines sequence, which would be
a much more invasive change.)
SVN r1438 (trunk)
code depends on the original indices.
- Fixed: P_StartConversation set the global dialog node variable for all
players, not just the consoleplayer.
- Fixed: AWeapon::PickupForAmmo assumed that any weapon having a secondary
ammo type also has a primary one.
SVN r1431 (trunk)
- changed weapon slots to be stored per player. Information is now transmitted
across the network so that all machines know each player's current weapon
configuration so that it can be used by cheats or HUD display routines.
SVN r1430 (trunk)
have those escapes stripped before printing so that they do not merge with
subsequent text.
- Moved default weapon slot assignments into the player classes.
Weapon.SlotNumber is now used solely for mods that want to add new weapons
without completely redoing the player's arsenal. Restored some config-based
weapon slot customization, though slots are no longer automatically saved
to the config and section names have changed slightly. However, unlike
before, config slots are now the definitive word on slot assignments and
cannot be overridden by any other files loaded.
- Fixed: Several weapons were missing a game filter from their definitions.
- Removed storage of weapon slots in the config so that weapon slots can
be setup in the weapons themselves. Slots are still configurable, since
they need to be for KEYCONF to work; any changes simply won't be saved
when you quit.
- Removed limit on weapon slot sizes.
SVN r1428 (trunk)
certain actors and added an option to APowerInvisibility to set this
flag when active.
- Added map specific automap backgrounds.
- Fixed: Voodoo dolls did not play a sound when dying.
- Added colorized error messages to DECORATE and made a few more error
conditions that do not block further parsing not immediately abort.
- Made all errors in CreateNewActor not immediately fatal so that the
rest of the DECORATE lump can be parsed normally to look for more errors.
- Fixed: Defining classes with the same name as their immediate base class
was legal. It should not be allowed that a class has another one with the
same name in its ancestry.
- Fixed: Formatting of the intermission screen on Heretic, Hexen and Strife
was broken. Changed it to use WI_Drawpercent which does it properly and
also allows showing percentage in these games now.
- Fixed: The MAPINFO parser ignored missing terminating braces of the last
block in the file.
SVN r1425 (trunk)
colored error messages appear colored in the startup window. Also lightened
up the "Flat" red to contrast better with the startup background.
SVN r1424 (trunk)
- Fixed: Most Linux filesystems do not fill in d_type for scandir(), so we
cannot rely on it to detect directories.
- Added NicePath() function to perform shell-style ~ substitution on path
names.
- Changed the default screenshot directory on Unix to ~/.zdoom/screenshots/.
- Added -shotdir command line option to temporarily override the
screenshot_dir cvar.
SVN r1413 (trunk)
replaced it did the check at the center of the area intersected by the
sprite and the drawseg, whereas 2.0.63 only did the check at the location
of the sprite on the map.
SVN r1411 (trunk)
monsters in A_DoChase(). They can still find new targets without this,
and with it, they got stuck on the first frame of their see state.
SVN r1410 (trunk)
change levels while dead by immediately respawning you before the switch
so that you get to keep all your inventory.
- Fixed: G_InitLevelLocals() did not set flags2.
SVN r1406 (trunk)
maps in the compatibility list.
- Added compatibility settings for a few more levels in some classic WADs.
- Added spechit overflow workaround for Strain MAP07. This is highly map
specific because the original behavior cannot be restored.
- Added a check for Doom's IWAD levels that forces COMPAT_SHORTTEX for them.
MD5 cannot be used well here because there's many different IWADs with
slightly different levels. This is only done for Doom format levels to
ensure that custom IWADs for ZDoom are not affected.
- fixed: level.flags2 was not reset at level start.
- Fixed: Morph powerups can change the actor picking up the item so
AInventory::CallTryPickup must be able to return the new actor.
- Fixed: ACS's GiveInventory may not assume that a PlayerPawn is still
attached to the player data after an item has been given.
- Added a missing NULL pointer check to DBaseStatusBar::Blendview.
SVN r1405 (trunk)
lets A_Look() always put the actor into its see state. This problem could
be heard by an Archvile's resurrectee playing its see sound but failing to
enter its see state because it was called from A_Chase().
SVN r1399 (trunk)
- fixed: The nextmap and nextsecret CCMDs need to call G_DeferedInitNew instead of G_InitNew.
- merged MAPINFO branch back into trunk.
SVN r1393 (trunk)
but Linux being Linux, there are no guarantees that it's appropriate for
other systems.
- Fixed: SDL input code did not generate GUI events for the mousewheel, so it
could not be used to scroll the console buffer.
SVN r1381 (trunk)
- Fixed: The compatmode CVAR needs CVAR_NOINITCALL so that the compatibility flags don't get reset each start.
- Fixed: compatmode Doom(strict) was missing COMPAT_CROSSDROPOFF
SVN r1376 (trunk)
vulnerability "format not a string literal and no format arguments".
- Changed the CMake script to search for fmod libraries by full name instead
of assuming a symbolic link has been placed for the latest version. It can
also find a non-installed copy of FMOD if it is placed local to the ZDoom
source tree.
SVN r1373 (trunk)
- added a new compatmode CVAR which allows setting some generic compatibility
flag combinations:
Doom: sets the options needed to make most Doom.exe compatible map play without
errors.
Doom (strict): Same as above but sets a few more options. Please note that this
does not mean full Doom.exe behavior emulation.
Boom: Sets all options that consider differences between ZDoom and Boom.
ZDoom 2.0.63: Sets only the COMPATF_SOUNDTARGET option which is needed for
many older ZDoom maps.
- added new COMPAT_CROSSDROPOFF option to block monsters from being pushed over
dropoffs by damage kickback.
- fixed: AFastProjectile::Tick must call Effect only 8 times per tic, regardless
of the amount of steps taken.
- fixed: momentum checks in AFastProjectile did not use absolute values.
SVN r1369 (trunk)
clone a texture. Used for creating warping textures.
- Fixed: P_FindFloorCeiling should not be called before setting the actor's z-
coordinate. For testing 3D Midtex lines and 3D floors the proper position
needs to be set first.
- Fixed the autoaim fix from Jan 10.
SVN r1358 (trunk)
delayed until after its z-coordinate has been set. That means that for
map spawns AActor::StaticSpawn may not call P_FindFloorCeiling for such
actors.
SVN r1352 (trunk)
- Fixed: P_RailAttack used the shooting actor or a default puff for some splash
related actions. It should use the puff type passed to it as a parameter instead.
- Changed splash handling in P_LineAttack to use the actual hit position to
spawn the splash and not the puff's spawn position which is offset a little.
- made some precision related changes to P_HitWater. The precise hit coordinate
can now be passed as parameters.
SVN r1350 (trunk)
the time freezer and make them behave better.
- Fixed: When sounds are paused not all newly started sounds should actually
be played.
- Fixed: SBARINFO had no means to check if a weapon uses any ammo at all and
as a result the inventory icon was misplaced if a no-ammo weapon was selected.
SVN r1343 (trunk)
compatibility ZDoom needs to define this name, too, even though it doesn't
use it.
- Fixed: The nodebuilder could hang on badly set up polyobjects. Now it aborts
when the loop iterates NumberOfSegs times.
SVN r1338 (trunk)
- Added a static error counter to FScriptPosition class.
- Changed initialization of actor class type properties: fuglyname is gone as
is the postprocessing in FinishThingdef. Instead an empty placeholder class
is now created when a class is first referenced and this placeholder is later
filled in.
- Added option to replace backslash with '^' in state frame definitions because
the backslash is just causing too many problems because it's also an escape
character.
SVN r1334 (trunk)
a player class selection menu and an episode menu.
- Fixed: AddToConsole could write outside its working buffer.
- Fixed: 0 was no longer recognized as placeholder for 'no state' in A_Chase.
- Fixed: When picking up weapons the code did not check if it should switch away
from weak weapons.
SVN r1332 (trunk)
CrossbowFX2 and MaceFX4 were missing decals, and HornRodFX2 gets a whole
new decal.
- Fixed: bfgscrc2.png had some holes in the middle that did not look so good.
(From previously being handled through WinTex, maybe?)
SVN r1325 (trunk)
vector math routines (almost two years ago!) because the original code
multiplied down columns of the rotation matrix, but the new code multiplies
across rows of the matrix instead. This is remedied by flipping the matrix
across the x=y axis by reversing the sign of the sine value passed to the
matrix constructor.
SVN r1324 (trunk)
summoning.
- Added Karate Chris's fix for Serpent Staff vampirism on teammates.
- Locks and teleporters now take precedence over one-sidedness for automap
coloring.
SVN r1317 (trunk)
256 to 1024 to deal with a module that otherwise would not load.
- Removed the artificial restriction on not supporting Vorbis-compressed
samples in XMs if they are stereo, since it turns out that OggMod does
support them.
SVN r1316 (trunk)
in such a sector. As a workaround for current map formats a new actor
(DoomEdNum 9041) was added that can set the extended sector flags without the
use of ACS and sector tags. The new flag can also be set with Sector_ChangeFlags.
- Fixed: Players ignored MF2_TELESTOMP and always telefragged what was in the way.
- Fixed: Actors with MF5_NOINTERACTION were not affected by the time freezer.
SVN r1315 (trunk)
instead of overwriting the original string. ACS performing this operation
in place caused crashes with RTC-3057.
- fixed: FScriptPosition::Message did not print the message if it was not
a fatal error.
SVN r1313 (trunk)
which caused roundoff errors that made it less than 1/3 effective.
- Added support for "RRGGBB" strings to V_GetColor.
- Fixed: Desaturation maps for the TEXTURES lump were calculated incorrectly.
- Changed GetSpriteIndex to cache the last used sprite name so that the code
using this function doesn't have to do it itself.
- Moved some more code for the state parser into p_states.cpp.
- Fixed: TDeletingArray should not try to delete NULL pointers.
SVN r1312 (trunk)
statements.
- Added ClassifyActor(tid) ACS builtin function. This takes a TID and returns
a set of bits describing the actor. If TID is 0, it returns information
about the activator. If there is more than one actor with the given TID,
only the first one is considered. Currently defined bits are:
ACTOR_NONE No actors with this TID exist (only when TID is not 0).
ACTOR_WORLD Activator is the world (only when TID is 0).
ACTOR_PLAYER Actor is a player (includes bots and voodoo dolls).
ACTOR_BOT Actor is a bot.
ACTOR_VOODOODOLL Actor is a voodoo doll.
ACTOR_MONSTER Actor is a monster.
ACTOR_ALIVE Actor is alive (players/monsters only).
ACTOR_DEAD Actor is dead (players/monsters only).
ACTOR_MISSILE Actor is a missile.
ACTOR_GENERIC Actor exists, but no further information is available.
SVN r1310 (trunk)
- AutoExec paths now support the same variable expansion as the search paths.
Additionally, on Windows, the default autoexec path is now relative to
$PROGDIR, rather than using a fixed path to the executable's current
directory.
- All usable Autoload and AutoExec sections are now created at the top of
the config file along with some brief explanatory notes so they are
readily visible to anyone who wants to edit them.
SVN r1307 (trunk)
failed to start the demo.
- Added a MF5_BRIGHT flag to always render an actor fullbright.
- Fixed: Calling Door_Animated with a non-zero tag created a new thinker
for each two-sided line of the sector.
- Added Karate Chris's submission for making 'spray' a cheat.
- Added CO2's default parameter additions for several Doom code pointers
submission.
- Added CO2's A_RemoveMaster/A_RemoveChildren submission.
- Added Blzut3's SBARINFO replacement for the Doom statusbar.
- Fixed: SBarInfo still displayed the wrong bar for height 0
- Added A_KillSiblings and A_DamageSiblings code pointers.
- added MaxAbsorb and MaxFullAbsorb properties for Armor.
SVN r1304 (trunk)
look awful on widescreen intermissions. Also changed the column widths to
be font-dependant rather than fixed proportions of the screen width.
- Fixed horizontal positioning of 'finished' on the Raven games when scaled.
SVN r1303 (trunk)
hash chains.
- Fixed: specifying texture patches or font characters by full lump name instead
of texture name didn't work. To do this properly the texture manager needs
an option to look for a texture by lump number so that such textures can
be maintained without interfering with regular operation.
- added 'skystretch' and 'autosequences' keywords for MAPINFO so that the effects
of 'noautosequences' and 'forcenoskystretch' can be cancelled.
- Added a 'gamedefaults' section to MAPINFO after discovering that 'defaultmap'
gets reset for each MAPINFO. A global section is needed to define a game's
default setting in zdoom.pk3. The gamedefaults should normally not be changed
by PWADs but it can be done if some mod intends to change gameplay settings
but wants to allow custom add-ons on its own.
SVN r1300 (trunk)
called SMALLFNT.
- Reduced the width of the second column in wi_percents false mode from 3 to
2 characters.
- Added a WISLASH graphic for Doom's intermission screen when wi_percents is
false.
SVN r1298 (trunk)
- Added the following flags to drawselectedinventory center, centerbottom, and
drawshadow.
- Fixed: The translucent flag for drawinventorybar should only have affected
the artibox image.
- Fixed: compatf_limitpain must check for 21 Lost Souls, not 20.
SVN r1297 (trunk)
- Changed WI_drawPercent() when wi_percents is false so that the total
display is optional, and it formats it like Heretic's intermission, with
a slash and a fixed-width right column.
- Font is no longer a property of the screen object. Pass the font to
DrawText and DrawChar directly instead.
- Doom's intermission characters are now collected together as a font
so they can be colorized.
SVN r1294 (trunk)
do it the old way and scan every channel to see if it matches an actor/
entchannel pair.
- Fixed: S_RelinkSounds() did not move the SoundChans bitfield to the new
actor.
- Fixed: Stolen channels could be kept around by the high-level channels
indefinitely.
SVN r1289 (trunk)
- Added kill count awareness to A_ChangeFlag.
- P_NightmareRespawn() now clears the MTF_AMBUSH flag, so respawned monsters
aren't dormant (since there would be no way to activate them, and they
were certainly not dormant when they died).
SVN r1287 (trunk)
- Fixed: The DECORATE expression evaluator was too strict with missing jump labels.
For compatibility it only may print a warning, not an error.
SVN r1284 (trunk)
structure.
- Fixed: Items which should stay but had an IF_ALWAYSPICKUP flag were removed.
- Fixed: The pickup flash must only play when an item is picked up so the
correct place to spawn it is in AInventory::Touch, not in AInventory::GoAway.
SVN r1278 (trunk)
parameters.
- All DECORATE parameters are passed as expressions now. This change allows
for compile time checks of all class names being used in DECORATE so many
incorrect definitions may output warnings now.
- Changed DECORATE sound and color parameters to use expressions.
- Changed: S_StopChannel now resets the actor's sound flags. The previous bug
made me think that delaying this until FMod calls the end of sound callback
may simply be too late.
SVN r1276 (trunk)
the sound channel data when a sound is being stopped. This caused
an endless loop when changing levels with Strife's Flamethrower active.
SVN r1275 (trunk)
and DEM_WIPEOFF commands. Fixes multimap demos desyncing when played back
or recorded with wipes enabled, and prevents multiplayer games from
starting until all players' wipes have finished.
SVN r1272 (trunk)
symbols there instead of into AActor.
- Changed the expression evaluator's floating point precision to double.
- Started rewriting the DECORATE expression evaluator to allow more flexibility.
All the operators use the new functionality but functions, variables and
constants are yet to be redone.
While doing this rewrite I noticed that random2 was always evaluated as const.
This got fixed automatically.
SVN r1264 (trunk)
* This may or may not be a problem, but GCC warned that FStateDefinitions::
AddStateDefines() does not initialize def.FStateDefine::DefineFlags, so
I fixed that.
SVN r1262 (trunk)
two-entry array for passing to the main FindState() routine, but did
not actually pass it, passing the original primary label instead.
SVN r1261 (trunk)
- Fixed: ThingCountSector and ThingCountNameSector did not remove enough
entries from the stack, and did not put the result in the right slot.
- Fixed: Teleport lines were prioritized over secret lines when deciding what
color to draw them on the automap.
- Fixed: Death-reverting morphs did not remove the morph item from the
player's inventory when death caused the morph to revert.
- Updated fmod_wrap.h for FMOD Ex 4.18.
SVN r1259 (trunk)
- Fixed: S_ChannelEnded didn't check for a NULL SfxInfo.
- Fixed: R_InitTables did a typecast to angle_t instead of fixed_t.
- Fixed: PowerProtection and PowerDamage applied their defaults incorrectly.
- Fixed: The damage type property didn't properly read its factor.
SVN r1257 (trunk)
against decorations without breaking anything newer:
Added a new 'projectilepassheight' property that defines an alternative height
that is only used when checking a projectile's movement against this actor.
If the value is positive it is used regardless of other settings, if it is
negative, its absolute will be used if a new compatibility option is enabled
and if it is 0 the normal height will be used.
SVN r1253 (trunk)
the NextState parameter is. The code did some rather unsafe checks with it
to determine its type.
- moved all state related code into a new file: p_states.cpp.
- merged all FindState functions. All the different variations are now inlined
and call the same function to do the real work.
SVN r1243 (trunk)
some changes to the MAPINFO parser which tried to access the texture manager
to check if the level name patches exist. That check had to be moved to
where the intermission screen is set up.
- Fixed: 'bloodcolor' ignored the first parameter value when given a list
of integers.
Please note that this creates an incompatibility between old and new
versions so if you want to create something that works with both 2.2.0
and current versions better use the string format version for the color
parameter!
- Rewrote the DECORATE property parser so that the parser is completely
separated from the property handlers. This should allow reuse of all
the handler code for a new format if Doomscript requires one.
- Fixed: PClass::InitializeActorInfo copied too many bytes if a subclass's
defaults were larger than the parent's.
- Moved A_ChangeFlag to thingdef_codeptr.cpp.
- Moved translation related code from thingdef_properties.cpp to r_translate.cpp
and rewrote the translation parser to use FScanner instead of strtol.
- replaced DECORATE's 'alpha default' by 'defaultalpha' for consistency.
Since this was never used outside zdoom.pk3 it's not critical.
- Removed support for game specific pickup messages because the only thing
this was ever used for - Raven's invulnerability item - has already been
split up into a Heretic and Hexen version.
SVN r1240 (trunk)
controllers, the joystick axis selectors need to NULL the d.graycheck
field, since this is shared by the axis sensitivity sliders' step values.
SVN r1238 (trunk)
- Removed extraneous printf parameter for Texman.Init startup message.
- Added newlines to the ends of a few headers that were missing them.
- Fixed more GCC errors/warnings.
SVN r1232 (trunk)
when explicitly giving them.
- Changed 'give weapon' cheat so that in single player it only gives weapons
belonging to the current game or are placed in a weapon slot to avoid
giving the Chex Quest weapons in Doom and vice versa.
- Fixed: The texture manager must be the first thing to be initialized
because MAPINFO and DECORATE both can reference textures and letting them
create their own textures is not safe.
SVN r1230 (trunk)
The rolloff and channel ended callbacks now call functions in s_sound.cpp
instead of working on the data itself and GSnd->StopSound has been replaced
with S_StopChannel.
SVN r1227 (trunk)
so that all files are included by a central one instead of compiling
each one separately. This speeds up the compilation process by 25%
when doing a complete rebuild in Visual C.
- Cleaned up more header dependencies.
SVN r1226 (trunk)
automatically used by all inventory classes.
- The previous change made it necessary to replace all TryPickup calls with
another function that just calls TryPickup.
- Fixed: AInventory::TryPickup can change the toucher so this must be reported
to subclasses calling the super function. Changed TryPickup to pass the
toucher pointer by reference.
SVN r1221 (trunk)
with PWADs.
- Removed Chex Quest actors that were just unaltered duplicates of Doom's.
- Added detection for Chex Quest 3 IWAD.
- Cleaned up M_QuitGame because the code was almost incomprehensible and I
wanted to add CQ3's new quit messages.
- Added Chex Quest obituaries and a few other messages from CQ3.
- Fixed: drawbar improperly clipped images when not in the top left quadrant.
SVN r1219 (trunk)
buttons are now passed across the network, and there are four new user
buttons specifically for use with this command. Also defined +zoom
and +reload for future implementation.
See http://zdoom.org/files/examples/playerinput.zip for an example.
SVN r1215 (trunk)
fact that NVidia's don't report it, even though they support it. If there
are any cards that no longer have antialised lines on the automap, please
let me know.
- Added vid_hwaalines cvar to force antialiased lines off for the
Direct3D renderer, in case it doesn't really support them.
SVN r1210 (trunk)
method to the SoundRenderer class so that this function doesn't need to
load the sound for the NullSoundRenderer.
- Took some more non-FMOD related code out of fmodsound.cpp, including the
code that checks for raw and Doom sounds. This means that sfxinfo_t is no
longer needed in the SoundRenderer class so I took out all references to it.
SVN r1208 (trunk)
to the rolloff information back to NULL when starting the sound fails.
- Fixed: Rolloff information was taken from the sfxinfo that contained the
actual sound data, not the one that was used for starting the sound.
SVN r1206 (trunk)
and sectors are done in s_sound.cpp and not in fmodsound.cpp. Also removed
several 'sector' parameters because they were never used inside the sound code.
SVN r1200 (trunk)
thinkers tick, not just once every game tick. This more closely follows
the original Lua behavior. This change was made because, in cases of
extremely large and frequent memory allocations, the collector may not run
fast enough if it only has a chance to execute once per tick.
SVN r1197 (trunk)
- Fixed: The smoothlighting code in side_t::GetLightLevel relied on
the global 'linedef' variable for automatic fake contrast although
this issue had already been fixed for the original code here.
- Replaced static string buffers with FString in FONTDEFS parser.
SVN r1194 (trunk)
supported games in any game being played.
- Changed Chex Quest DoomEdNum initilization so that all empty slots
are filled with Doom actors if they exist.
- Added missing spawn filters to Chex Quest items.
SVN r1191 (trunk)
disabled for them
- Fixed: Chex Quest doesn't have a HELP2 screen so it must not be used
in the gameinfo.
- Fixed: Default blood color is no longer red so P_DrawSplash2 must
get it from the gameinfo instead.
- Added new French language texts by DoomKn1ght_.
SVN r1186 (trunk)
can default to green instead of red.
- Fixed: The version of CheckNumForFullName that checks for a specific
WAD did not work.
- Moved MAPINFO names into gameinfo structure.
- Added Chex Quest support. Credits go to fraggle for creating a
Dehacked patch that does most of the work. The rest includes a new
MAPINFO and removal of the drop items from the monsters being used.
SVN r1185 (trunk)
- Added functions to FActorInfo that can set the damage factors and
pain chances to reduce the chance of new errors when working with
these features.
- Fixed: The handling of the deprecated FIRERESIST flag didn't work.
There were 3 problems:
* Actor defaults have no class information so HandleDeprecatedFlags
needs to be passed a pointer to the ActorInfo.
* The DamageFactors list is only created when needed so the code needs to
check if it already exists.
* damage factors are stored as fixed_t but this set a float.
- Added a traditional Strife color set for the automap.
SVN r1183 (trunk)
voices. Because this wasn't done, note_on() could try to access
the sample for a voice that had never been played yet and access
random memory. There may be other places where it's a problem, but
this is where I noticed it, by chance.
SVN r1182 (trunk)
- Fixed: (SBARINFO patch) DrawInventoryBar has a missing argument in
one of its drawgraphic calls.
- Added Gez's patch for Heretic's GIMME cheat.
- Externalized some cheat strings.
SVN r1178 (trunk)
- Fixed: The recent changes in the DECORATE parser require the special parameter
to A_CallSpecial to be an expression, not a constant.
- Removed game filters from old style decorations. No WAD in existence ever
used them and removing them allows to make the parser more robust.
SVN r1170 (trunk)
to reference its arguments directly, except 'self'. This may be helpful if it
becomes necessary to restructure this code once DoomScript becomes real.
- Removed the last remaining global variable related to action functions:
pStateCall. Everything is passed properly as function arguments now.
- fixed: PlayerChunk was missing the NOSKIN flag.
SVN r1169 (trunk)
the texture manager even if it is from Raven's IWADs.
- Removed code related to internal ActorInfo definitions from dobjtype.cpp.
- removed unneeded file dehackedactions.h
SVN r1162 (trunk)
After finding out that gas does have directives to describe the .eh_frame
metadata, I figured that would be significantly easier and quicker than
trying to locate all the scattered docs I would need to read to figure out
how to construct it by hand. Unfortunately, this now means I have to
maintain two versions of exactly the same code. :( (But unless I add 32-bit
color rendering in the future, the chances that I will have to touch it
again are quite slim.)
SVN r1159 (trunk)
internal actor classes which no longer exist.
- Changed the state structure so that the Tics value doesn't need to be hacked
into misc1 with SF_BIGTIC anymore.
- Changed sprite processing so that sprite names are converted to indices
during parsing so that an additional postprocessing step is no longer needed.
- Fixed: Sprite names in DECORATE were case sensitive.
- Exported AActor's defaults to DECORATE and removed all code for the
internal property parser which is no longer needed.
SVN r1146 (trunk)
- Made the speed a parameter to A_RaiseMobj and A_SinkMobj and deleted
GetRaiseSpeed and GetSinkSpeed.
- Added some remaining DECORATE conversions for Hexen by Karate Chris.
SVN r1144 (trunk)
- Removed AT_GAME_SET because it's no longer used anywhere.
- Converted the last remaining global classes to DECORATE.
- Fixed: Inventory.PickupFlash requires an class name as parameter not an
integer. Some Hexen definitions got it wrong.
- Converted Hexen's Pig to DECORATE.
- Replaced the ActorInfo definitions of all internal inventory classes with
DECORATE definitions.
- Added option to specify a powerup's duration in second by using a negative
number.
SVN r1137 (trunk)
* Added: The ability to have drawkeybar auto detect spacing.
* Added: Offset parameter to drawkeybar to allow two key bars with
different keys.
* Added: Multi-row/column keybar parameters. Spacing can also be auto.
These defualt to left to right/top to bottom but can be switched.
* Added: Drawshadow flag to drawnumber. This will draw a solid color and
translucent number under the normal number.
* Added: hexenarmor to drawimage. This takes a parameter for a hexen
armor type and will fade the image like the hexen status bar.
* Added: centerbottom offset to draw(switchable)image.
* Added: translucent flag to drawinventorybar.
* Fixed: Accidentally removed flag from DrawTexture that allowed negative
coordinates to work with fullscreenoffsets. Hopefully this is the last
major bug in the fullscreenoffsets system.
SVN r1135 (trunk)
registers AMD64 provides, this routine still needs to be written as self-
modifying code for maximum performance. The additional registers do allow
for further optimization over the x86 version by allowing all four pixels
to be in flight at the same time. The end result is that AMD64 ASM is about
2.18 times faster than AMD64 C and about 1.06 times faster than x86 ASM.
(For further comparison, AMD64 C and x86 C are practically the same for
this function.) Should I port any more assembly to AMD64, mvlineasm4 is the
most likely candidate, but it's not used enough at this point to bother.
Also, this may or may not work with Linux at the moment, since it doesn't
have the eh_handler metadata. Win64 is easier, since I just need to
structure the function prologue and epilogue properly and use some
assembler directives/macros to automatically generate the metadata. And
that brings up another point: You need YASM to assemble the AMD64 code,
because NASM doesn't support the Win64 metadata directives.
- Added an SSE version of DoBlending. This is strictly C intrinsics.
VC++ still throws around unneccessary register moves. GCC seems to be
pretty close to optimal, requiring only about 2 cycles/color. They're
both faster than my hand-written MMX routine, so I don't need to feel
bad about not hand-optimizing this for x64 builds.
- Removed an extra instruction from DoBlending_MMX, transposed two
instructions, and unrolled it once, shaving off about 80 cycles from the
time required to blend 256 palette entries. Why? Because I tried writing
a C version of the routine using compiler intrinsics and was appalled by
all the extra movq's VC++ added to the code. GCC was better, but still
generated extra instructions. I only wanted a C version because I can't
use inline assembly with VC++'s x64 compiler, and x64 assembly is a bit
of a pain. (It's a pain because Linux and Windows have different calling
conventions, and you need to maintain extra metadata for functions.) So,
the assembly version stays and the C version stays out.
- Removed all the pixel doubling r_detail modes, since the one platform they
were intended to assist (486) actually sees very little benefit from them.
- Rewrote CheckMMX in C and renamed it to CheckCPU.
- Fixed: CPUID function 0x80000005 is specified to return detailed L1 cache
only for AMD processors, so we must not use it on other architectures, or
we end up overwriting the L1 cache line size with 0 or some other number
we don't actually understand.
SVN r1134 (trunk)
- AActor::PreExplode is gone now that the last item that was using it has been converted.
- Converted the Sigil and the remaining things in a_strifeitems.cpp to DECORATE.
SVN r1132 (trunk)
- Changed PoisonCloud and Lightning special treatment in P_DamageMobj to use damage
types instead to keep dependencies on specific actor types out of the main engine code.
- Added Korax DECORATE conversion by Gez and a few others by Karate Chris.
SVN r1130 (trunk)
pieces.
- Added DECORATE conversions for Hexen's Fighter weapons by Karate Chris.
- Added aWeaponGiver class to generalize the standing AssaultGun.
- converted a_Strifeweapons.cpp to DECORATE, except for the Sigil.
SVN r1129 (trunk)
- Fixed: AStalker::CheckMeleeRange did not perform all checks of AActor::CheckMeleeRange.
I replaced this virtual override with a new flag MF5_NOVERTICALMELEERANGE so that
this feature can also be used by other actors.
- Converted Strife's Stalker to DECORATE.
- Converted ArtiTeleport to DECORATE.
SVN r1126 (trunk)
as well inherit directly from AActor.
- Converted Strife's Coin, Oracle, Macil and StrifeHumanoid to DECORATE. Also moved
the burning hand states to StrifePlayer where they really belong.
SVN r1125 (trunk)
redundant ammo multiplication code from P_DropItem and ADehackedPickup::TryPickup.
- Restricted native action function definitions to zdoom.pk3.
SVN r1123 (trunk)
SBARINfO update:
- Added: disablegrin, disableouch, disablepain, and disablerampage flags to
drawmugshot.
- Fixed: LowerHealthCap did not work properly.
- Fixed: Various bugs I noticed in the fullscreenoffsets code.
SVN r1122 (trunk)
occurences in the code that depended on it were changed accordingly.
Invulnerability colormaps are now being set by the items exclusively.
- Changed many checks for the friendly Minotaur to a new flag MF5_SUMMONEDMONSTER
so that it can hopefully be generalized to be usable elsewhere later.
- Added Gez's submission for converting the Minotaur to DECORATE.
SVN r1120 (trunk)
GCC defaults to extended precision instead, unlike Visual C++.
- Removed the useless src/Linux directory from the repository. This was a
holdover from the long-gone 1.22 build system.
SVN r1118 (trunk)
- Changed coordinate storage for EntityBoss so that it works properly even
when the pod is not used to spawn it.
- Converted Strife's Spectres and Entity to DECORATE.
SVN r1117 (trunk)
- Added: fullscreenoffsets flag for status bars. This changes the coordinate
system to be relative to the top left corner of the screen. This is useful
for full screen status bars.
- Changed: drawinventorybar will use the width of artibox or invcurs (strife)
to determine the spacing. Let me know if this breaks any released mods.
- Fixed: If a status bar height of 0 was specified in SBarInfo the wrong bar
would be shown.
- Fixed: If a static inventory bar was used the user still had to press invuse
in order to get rid of the "overlay".
- Fixed: forcescaled would not work if the height of the bar was 0.
- Added: keyslot to drawswitchableimage.
- Fixed: The transition effects for the log and keys popups were switched.
SVN r1116 (trunk)
- Added a check to Zipdir that excludes files with a .orig extension. These
can be left behind by patch.exe and create problems.
- fixed: Unmorphing from chicken caused a crash when reading non-existent
meta-data strings.
SVN r1112 (trunk)
the spawn function that only spawns one mace per level.
- Moved Mace respawning code into AInventory so that it works properly
for replacement actors.
SVN r1107 (trunk)
DECORATE so that the exported code pointers can be used.
- Separated Heretic's and Hexen's invulnerability items for stability
reasons.
SVN r1105 (trunk)
Karate Chris.
- Added several type checks to the weapon slot code.
- Changed: Players no longer respawn in instant death sectors with
the 'Respawn where died' flag on.
SVN r1101 (trunk)
- Fixed compilation of snes_spc on GCC <4.3.
- Fixed compilation of zstring.h on 32-bit MinGW, where SIZE_MAX
and UINT_MAX are not considered identical by the preprocessor.
SVN r1096 (trunk)
CMake 2.4, since the distros don't seem to consider 2.6 stable yet.
As a bonus, GTK+ is no longer a required dependency; now it's optional.
- Made dehsupp ignore CR characters, so it doesn't spew warnings on Linux.
SVN r1092 (trunk)
surprised if this doesn't build in Linux right now. The CMakeLists.txt
were checked with MinGW and NMake, but how they fair under Linux is an
unknown to me at this time.
- Converted most sprintf (and all wsprintf) calls to either mysnprintf or
FStrings, depending on the situation.
- Changed the strings in the wbstartstruct to be FStrings.
- Changed myvsnprintf() to output nothing if count is greater than INT_MAX.
This is so that I can use a series of mysnprintf() calls and advance the
pointer for each one. Once the pointer goes beyond the end of the buffer,
the count will go negative, but since it's an unsigned type it will be
seen as excessively huge instead. This should not be a problem, as there's
no reason for ZDoom to be using text buffers larger than 2 GB anywhere.
- Ripped out the disabled bit from FGameConfigFile::MigrateOldConfig().
- Changed CalcMapName() to return an FString instead of a pointer to a static
buffer.
- Changed startmap in d_main.cpp into an FString.
- Changed CheckWarpTransMap() to take an FString& as the first argument.
- Changed d_mapname in g_level.cpp into an FString.
- Changed DoSubstitution() in ct_chat.cpp to place the substitutions in an
FString.
- Fixed: The MAPINFO parser wrote into the string buffer to construct a map
name when given a Hexen map number. This was fine with the old scanner
code, but only a happy coincidence prevents it from crashing with the new
code
- Added the 'B' conversion specifier to StringFormat::VWorker() for printing
binary numbers.
- Added CMake support for building with MinGW, MSYS, and NMake. Linux support
is probably broken until I get around to booting into Linux again. Niceties
provided over the existing Makefiles they're replacing:
* All command-line builds can use the same build system, rather than having
a separate one for MinGW and another for Linux.
* Microsoft's NMake tool is supported as a target.
* Progress meters.
* Parallel makes work from a fresh checkout without needing to be primed
first with a single-threaded make.
* Porting to other architectures should be simplified, whenever that day
comes.
- Replaced the makewad tool with zipdir. This handles the dependency tracking
itself instead of generating an external makefile to do it, since I couldn't
figure out how to generate a makefile with an external tool and include it
with a CMake-generated makefile. Where makewad used a master list of files
to generate the package file, zipdir just zips the entire contents of one or
more directories.
- Added the gdtoa package from netlib's fp library so that ZDoom's printf-style
formatting can be entirely independant of the CRT.
SVN r1082 (trunk)
- Converted all of Heretic's actors except the weapons to DECORATE.
- Added the option to define the ActorInfos for native classes in DECORATE.
SVN r1078 (trunk)
- added an abstract base class for special map spots that are maintained in
lists and rewrote the boss brain, the mace and DSparil to use it.
- fixed: RandomSpawners didn't destroy themselves after finishing their work.
SVN r1076 (trunk)
- fixed: Alpha for composite textures was not applied.
- fixed: The CentaurMash didn't inherit from the Centaur.
- added some NULL pointer checks to the sound code.
SVN r1075 (trunk)
treated it as a mace and wrote into some undefined memory.
- Fixed: A_BishopMissileWeave didn't initialize special2 for proper movement.
- Added a speed parameter to A_SkullAttack.
- Fixed: Black as first or only blood color didn't work.
- Fixed: Sounds played in wi_stuff.cpp and f_finale.cpp need the CHAN_UI flag.
- Fixed: Spawning a player could play the *gasp sound.
- Fixed: SBARINFO's health display didn't scale to the proper maximum.
- Added Skulltag's Teleport_NoStop action special.
SVN r1074 (trunk)
and vice versa.
- Fixed: In deathmatch specral missiles spawned by players should hurt other
players.
- Fixed: SpectralLightningBigBall didn't set the proper owner for the lightning
projectiles it spawned.
- Changed the EntityBoss's attack function to call the equivalent spectre
functions instead of duplicating their code.
- Gave many of Strife's code pointers that only had a number as name more
meaningful names.
- Fixed: All spectral attacks must set 'health' first before P_CheckMissileSpawn
is called.
SVN r1071 (trunk)
center because some maps apparently abuse the behavior to make the sound
play somewhere where it can't be heard by the player to fake silent movement.
- Fixed: The S_Sound variant taking an actor must check if the actor is not
NULL.
- Fixed: ACS's ActivatorSound must check if the activator is valid.
- Changed stats drawing so that multi-line strings can be used.
SVN r1070 (trunk)
in a level.
- Fixed: Serialized player data must always be loaded, even if it's simply to
be discarded, so that anything serialized after the players will load from
the correct position in the file when revisiting a hub map.
SVN r1069 (trunk)
owned. Having owned inventory items interact with the world is not supposed
to happen.
- Fixed: case PCD_SECTORDAMAGE in p_acs.cpp was missing a terminating 'break'.
- Fixed: When a weapon is destroyed, its sister weapon must also be destroyed.
SVN r1068 (trunk)
- Added a check for PUFFGETSOWNER to A_BFGSpray.
- Moved the PUFFGETSOWNER check into P_SpawnPuff and removed the limitation
to players only.
- Fixed: P_SpawnMapThing still checked FMapThing::flags for the class bits
instead of FMapThing::ClassFilter.
- Fixed: A_CustomMissile must not let P_SpawnMissile call P_CheckMissileSpawn.
It must do this itself after setting the proper owner.
- Fixed: CCMD(give) increased the total item count.
- Fixed: A_Stop didn't set the player specific variables to 0.
SVN r1066 (trunk)
during it.
- UI sounds are now omitted from savegames.
- Fixed: Menu sounds had been restricted to one at a time again.
- Moved the P_SerializeSounds() call to the end of G_SerializeLevel() so that
it will occur after the players are loaded.
- Added fixes from FreeBSD for 0-length and very large string buffers
passed to myvsnprintf.
SVN r1063 (trunk)
sounds are handled.
- Why do polyobjects have a 3D start spot? Flattened it to 2D.
- Moved the sector sound origin calculation out of fmodsound.cpp and into
s_sound.cpp so that the near sound limiting will use the correct sound
location for deciding on neighbors.
SVN r1061 (trunk)
arbitrary point. It has been replaced with a variant that takes a polyobject
as a source, since that was the only use that couldn't be rewritten with the
other variants. This also fixes the bug that polyobject sounds were not
successfully saved and caused a crash when reloading the game. Note that
this is a significant change to how equality of sound sources is determined,
so some things may not behave quite the same as before. (Which would be a
bug, but hopefully everything still sounds the same.)
SVN r1059 (trunk)
run into the adjacent columns.
- Added a NullSoundRenderer so that most of the checks against a NULL GSnd
can be removed.
- Fixed: Looping sounds must always successfully allocate a channel, even if
it's only a pre-evicted channel.
SVN r1058 (trunk)
reset this counter but that can't be done due to unwanted side effects with
existing weapons.
- Changed the 'scale' variable in CVAR(turbo) to double because the calculations
depended on the current floating point precision setting and only worked properly
when set to 'precise' in VC++.
SVN r1057 (trunk)
code to process their messages. This was necessary to handle the %zu format
option used in some memory allocation failure messages.
- Fixed: The flat texture scaling action specials were completely broken.
SVN r1056 (trunk)
the rest of the game is concerned, these sounds will never stop once they
have been started until they are explicitly stopped. If they are evicted
from their channels, the sound code will restart them as soon as possible.
This means that instead of this:
if (!S_IsActorPlayingSomething(actor, CHAN_WEAPON, -1))
{
S_Sound(actor, CHAN_WEAPON|CHAN_LOOP, soundid, 1, ATTN_NORM);
}
The following is now just as effective:
S_Sound(actor, CHAN_WEAPON|CHAN_LOOP, soundid, 1, ATTN_NORM);
There are also a couple of other ramifications presented by this change:
* The full state of the sound system (sans music) is now stored in save
games. Any sounds that were playing when you saved will still be
playing when you load. (Try saving while Korax is making a speech in
Hexen to hear it.)
* Using snd_reset will also preserve any playing sounds.
* Movie playback is disabled, probably forever. I did not want to
update the MovieDisable/ResumeSound stuff for the new eviction
tracking code. A properly updated movie player will use the VMR,
which doesn't need these functions, since it would pipe the sound
straight through the sound system like everything else, so I decided
to dump them now, which leaves the movie player in a totally unworkable
state.
June 26, 2008
- Changed S_Sound() to take the same floating point attenuation that the
internal S_StartSound() uses. Now ambient sounds can use the public
S_Sound() interface.
- Fixed: S_RelinkSound() compared the points of the channels against the
from actor's point, rather than checking the channels' mover.
- Changed Strife's animated doors so that their sounds originate from the
interior of the sector making them and not from the entire vertical height
of the map.
SVN r1055 (trunk)
- Fixed: The internal definition of Floor_LowerToNearest had incorrect parameter
settings.
- Fixed: Heretic's ActivatedTimeBomb had the same spawn ID as the inventory item.
- fixed: Heretic's mace did not have its spawn ID set.
SVN r1052 (trunk)
- Added a generalized version of Skulltag's A_CheckRailReload function.
- Fixed: DrawImage didn't take 0 as a valid image index.
- Added Gez's RandomSpawner submission with significant changes.
- Added optional blocks for MAPINFO map definitions. ZDoom doesn't use
this feature itself but it allows other ports based on ZDoom
to implement their own sets of options without making such a MAPINFO
unreadable by ZDoom.
SVN r1044 (trunk)
- Fixed: After spawning a deathmatch player P_PlayerStartStomp must
be called.
- Fixed: SpawnThings must check if the players were spawned before
calling P_PlayerStartStomp.
SVN r1038 (trunk)
that animated icons can be done with it.
- Changed FImageCollection to use a TArray to hold its data.
- Fixed: SetChanHeadSettings did an assignment instead of comparing
the channel ID witg CHAN_CEILING.
- Changed sound sequence names for animated doors to FNames.
- Automatically fixed: DCeiling didn't properly serialize its texture id.
- Replaced integers as texture ID representation with a specific new type
to track down all potentially incorrect uses and remaining WORDs used
for texture IDs so that more than 32767 or 65535 textures can be defined.
SVN r1036 (trunk)
- DF2_YES_RESPAWN_INVUL and DF_FORCE_RESPAWN now apply to all multiplayer
games, not just deathmatch, without the need for turning on
alwaysapplydmflags.
- Fixed: DF2_YES_RESPAWN_INVUL only worked in deathmatch, even with
alwaysapplydmflags turned on.
- Fixed: DF_COOP_LOSE_ARMOR did not empty the starting armor items.
SVN r1035 (trunk)
consideration the size and shape of the sector producing the sound. See
the lifts on Doom 2 MAP30 and compare with previous versions.
- Fixed: The stop sound for sector-based sound sequences was not played with
the CHAN_AREA flag.
- Removed the distinction between S_Sound() and S_SoundID() functions. Use
S_Sound() for both names and IDs from now on.
SVN r1034 (trunk)
- Grouped the sector plane texture transformation options into a separate
structure and replaced all access to them with wrapper functions.
SVN r1033 (trunk)
any zone you want.
- Using a too-recent version of FMOD now gives an error, since there may be
breaking changes to the API from one version to the next (excluding
revisions in stable branches, which only represent bug fixes).
- Updated fmod_wrap.h for FMOD 4.16 and corrected a bug that had gone
unnoticed before: The delayhi and delaylo parameters for Channel::setDelay()
and getDelay() were swapped.
SVN r1032 (trunk)
mid textures linked to a moving floor.
- Fixed AActor's bouncefactor definitions which I accidentally changed when
adding wallbouncefactor.
- Fixed: A_SpawnItemEx added the floorclip offset to the z coordinate instead
of subtracting it.
SVN r1031 (trunk)
- Fixed: Before a level's thinkers are loaded all previous interpolations must
be cleared.
- Fixed: deleted interpolations didn't NULL the pointer in the interpolated
object. Also added all interpolation pointers to DSectorMarker to ensure
that they are properyl processed by the garbage collector.
SVN r1028 (trunk)
- Changed: Players don't telefrag when they are spawned now but after all
actors have been spawned to avoid accidental voodoo doll telefragging.
- Fixed: ACS scripts for non-existent maps were started on the current one.
- Added a 'wallbouncefactor' property to AActor.
- Reverted forceunderwater change from r1026 and fixed the problem for real:
SECF_FORCEDUNDERWATER only has meaning when coming from the heightsec.
So the initial check of the current sector in AActor::UpdateWaterLevel
must only check for SECF_UNDERWATER, not SECF_UNDERWATERMASK.
SVN r1027 (trunk)
armortype. It does not touch the armor given by the megasphere.
- Changed forcewater handling so that only control sectors created by one-
sided lines become swimmable, since there's a good chance that a two-sided
line is creating the control sector out of a normal, accessible portion of
the map. (See e.g. linedef 29242 of zdoomcmp1.)
SVN r1026 (trunk)
won't be left on the stack at exit.
- Fixed: PSymbol needs a virtual destructor so that PSymbolActionFunction can
free its Arguments.
- Symbols for native classes are now freed on exit.
SVN r1022 (trunk)
might still be present in the texture manager; I don't remember.)
- Fixed: EndSequence needs a proper constructor.
- Some more GCC warning removals.
SVN r1021 (trunk)
were doing some things in their destructor that needed to be done in the
Destroy method.
- Rewrote the interpolation code. Interpolations are no longer some objects
that are separate from the rest of the engine. Instead, they are owned by
the thinkers starting them. Also, polyobjects only spawn a single interpolation
for each polyobject instead of a single one for each vertex.
Also, different types of interpolation objects are used for different types
of interpolation so that they can do some additional work if eventually needed.
SVN r1018 (trunk)
not work
- Added: PowerupTime to drawnumber and drawbar. You must specify a
powerupgiver. Although drawnumber goes in seconds the powerup has left
drawbar will use ticks for extra accuracy.
- I have increased cross-port compatibility with Skulltag. If an unknown
game mode is provided for sbarinfo's gamemode command it will ignore it and
continue.
SVN r1015 (trunk)
capturing the mouse.
- Changed: Telefragging should not thrust the victim if it isn't in precisely the
same position as the killer.
- fixed: A_SpawnItemEx must call P_TeleportMove before checking the spawned
object's position.
SVN r1014 (trunk)
They are not needed anywhere else.
- Changed the HackHack hack for corrupt 256 pixel high textures that
FMultiPatchTexture only calls a virtual function instead of doing any
type checks of the patch itself.
- Cleaned up the constant definitions in doomdata.h.
- Moved the TEXTUREx structures from doomdata.h to multipatchtexture.cpp
because they are used only in this one file.
- Removed some more typedefs from r_defs.h and doomdata.h
- Moved local polyobject data definitions from p_local.h to po_man.cpp.
SVN r1012 (trunk)
potential crashes in the situation that con_scaletext is 2 and somebody
uses a hud message as if a hud size was specified, but forgot to actually
set the hud size.
SVN r1010 (trunk)
into a single place.
- Fixed: Setting an invalid mug shot state crashed the game.
- Fixed my attempts to be clever with strings yesterday.
SVN r1009 (trunk)
texture definitions. HIRESTEX is still supported but deprecated.
- Removed all 16 bit values from texture manager.
- Changed: The texture manager now sorts all textures for a WAD by type
to avoid priority issues with HIRESTEX defined textures.
- Changed sidedef flag WALLF_ADDTRANS into a linedef flag because it is
always the same for both sides of a linedef. This also makes handling
this in the UDMF parser easier because the linedef parsing function does
not need to access the sidedef data.
- Added new ZDoom specific UDMF linedef and sidedef properties to map parser.
- Added new ZDoom specific UDMF sector properties to map parser.
- Added class definitions for new interpolators that are better
equipped to interact with the interpolated objects.
- Separated interpolation code into its own file r_interpolate.cpp.
- Added some simple customization options to the end game screens.
- Fixed: Polyobject detection in the internal node builder did not work
anymore due to some code rearrangement for UDMF map loading. To keep
it compatible between all map formats the THINGS lump of binary format
maps must be loaded before building the nodes. This also means that
the spawning itself can be done in the same function for all map types
(except Build) now.
- Changed 'Smooth mouse movement' menu option from m_filter to smooth_mouse
which is more what would be expected from this option.
- Fixed: Weapons and ammo items that were modified by Dehacked gave full
ammo when being dropped by monsters. To properly handle this the
handling of spawning Dehacked modified pickups was changed to use
the DECORATE replacement feature instead of hacking the spawn state
of the original item and calling a spawn function from there.
SVN r1001 (trunk)
heavily customized version of DUMB (Dynamic Universal Music Bibliotheque).
It has been slightly modified by me:
* Added support for Ogg Vorbis-compressed samples in XM files ala FMOD.
* Removed excessive mallocs from the replay core.
* Rerolled the loops in resample.c. Unrolling them made the object file
~250k large while providing little benefit. Even at ~100k, I think it's
still larger than it ought to be, but I'll live with it for now.
Other than that, it's essentially the same thing you'd hear in foobar2000,
minus some subsong detection features. Release builds of the library look
like they might even be slightly faster than FMOD, which is a plus.
- Fixed: Timidity::font_add() did not release the file reader it created.
- Fixed: The SF2 loader did not free the sample headers in its destructor.
SVN r995 (trunk)
properly when the teleporter had both a tid and a tag. Now, if a teleporter
has a tag these are skipped because they are only present for Hexen
compatibility.
SVN r994 (trunk)
automatic fake contrast.
- Changed: Fake contrast now uses the WALLF_AUTOCONTRAST globally instead
of manipulating the sides' light values individually. This allows changing
the fake contrast at run time and also allows adding individual relative
lighting on top of it which is a planned UDMF feature.
SVN r991 (trunk)
closer to FMOD 3, which downmixed all stereo sounds to mono before
playing them in 3D. Also added experimental 3D spread for stereo sounds
so that you can actually hear them in stereo.
SVN r989 (trunk)
(actors being forced to the ground by instantly moving sectors, strife
railing handling and shooting lines with a non-zero but unassigned tag.)
With UDMF such semantics have to be handled diffently.
- finalized UDMF 1.0 implementation.
- Added Martin Howe's latest morph update.
SVN r987 (trunk)
if the view is near the bounds of the fixed point coordinate system. This
happens because it rotates the view position around (0,0) according to
the current viewangle, so the resultant coordinate may be outside the
bounds of fixed point. All important math in this function is now done
entirely in floating point.
- Fixed: Slopes didn't draw right on 64-bit platforms.
SVN r986 (trunk)
define any new ones of its own, I'm pre-emptively renaming the SNDEAX lump
to REVERBS to remove any possible misunderstanding that this is something
that requires EAX hardware support. (Ideally, it would have been REVERBDEF,
but that's 10 characters long.) The eaxedit console command has also been
renamed to reverbedit for the same reason.
- Fixed: The Palette part of FRemapTable was not initialized with alpha values
other than 0. I'm not sure if it would be better to fix this in the game
palette that it copies from or not, but right now, they get set
unconditionally to 255.
SVN r983 (trunk)
so that using the same flag multiple times will not have unexpected results.
- sbarinfo update #21
* Added: sigil image type to correctly draw the sigil's icon.
* Added: Strife inventory bar style. This is the only style that is radically
different from the others. First of all it changes the SELECTBO to be
INVCURS and draws it before the icons. Each box is changed to have a width
of 35 pixels instead of 31 pixels. And the INVCURS graphic is drawn at
(x-6, y-2).
* Added: whennnotzero flag to drawnumber which will cause it to draw nothing if
the value is 0.
* Fixed: New mugshot code would not leave the god state when it was supposed to
enter the rampage state.
* Fixed: The ouch state was mostly broken.
SVN r981 (trunk)
- Added: hasweaponpiece command to check for custom weapon pieces.
- Added: usessecondaryammo command to check if the current weapon has a second
ammo type.
- Most of SBarInfo's mugshot scripting can be used with the default Doom status
bar.
- Fixed: By default drawmugshot would never come out of normal god mode state.
In addition the state change to and from god mode was not quite as responsive
as the original code.
SVN r980 (trunk)
and did not entirely keep it in sync with the sound system's. This meant
that when starting a new game from the menu, all sounds were played as
menu sounds until you did something to pause the game, because s_sound.cpp
thought sounds were unpaused, while the FMOD system thought they were.
SVN r975 (trunk)
definitions in HIRESTEX. The feature should be complete now.
- Fixed: A_CheckTargetInLOS used BAM angles instead of degrees which is the
DECORATE convention.
- Added Snowkate709's A_CheckTargetInLOS addition.
- Added listmaps CCMD.
SVN r974 (trunk)
optional freeverb unit.
- Removed ResetEnvironment hack, since with software reverb, losing the
existing reverb when focus is lost isn't a problem.
- Commented out the TiMidity FIXME messages.
SVN r973 (trunk)
be used to prevent them from dropping through 3DMIDTEX textures.
- Fixed: AMageStaffFX2::IsOkayToAttack overwrote the projectile's angle variable.
SVN r970 (trunk)
This seems to fix crashes on GCC 64-bit builds when saving games. Not sure
if it was a GCC bug or my bug, since it worked fine with VC++, but since the
code that calculates the index only returns a DWORD, storing it as a size_t
was rather pointless.
SVN r969 (trunk)
definitions take precedence.
- Added base translation tables for UDMF compatibility maps which only should
handle the native line and sector types of each game.
- Turned the inactive SILENT_INSTANT_FLOORS define into a compatibility option
so that it can be (un)set in a map definition and the menu.
SVN r966 (trunk)
of type MiscPatch with the same name.
- Added UDMF line trigger types MonsterUse and MonsterPush.
- Separated skill and class filter bits from FMapThing::flags so that
UDMF can define up to 16 of each. Also separated easy/baby and
hard/nightmare and changed default MAPINFO definitions.
- Changed: Crosshair drawing uses the current player class's default health instead
of 100 to calculate the color for the crosshair.
- Added SECF_NOFALLINGDAMAGE flag plus Sector_ChangeFlags to set it. Also separated
all user settable flags from MoreFlags into their own Flags variable.
SVN r964 (trunk)
mode, it doesn't immediately kill the note. This doesn't appear to match what TiMidity
does, but I think it sounds better to turn the loop off and let the note end naturally
instead of abruptly shutting it off.
SVN r960 (trunk)
GUS patch flags, envelopes, and volume levels, while trying to be closer
to TiMidity++ than original TiMidity.
- Renamed timidity_config and timidity_voices to midi_config and midi_voices
respectively.
SVN r959 (trunk)
- Added very basic Soundfont support to the internal TiMidity. Things missing:
filter, LFOs, modulation envelope, chorus, reverb, and modulators. May or
may not be compatible with TiMidity++'s soundfont extensions.
- Added support for quoted strings to the TiMidity config parser.
SVN r957 (trunk)
- Separated mapthing2_t into mapthinghexen_t and the internal FMapThing so
that it is easier to add new features in the UDMF map format.
- Added some initial code to read UDMF maps.
SVN r956 (trunk)
of all types on the same linedef. Also added a 'first side only' flag. This
is not usable from Hexen or Doom format maps though but in preparation of
the UDMF format discussed here:
http://www.doomworld.com/vb/source-ports/43145-udmf-v0-99-specification-draft-aka-textmap/
- Changed linedef's alpha property from a byte to fixed point after seeing that
255 wasn't handled to be fully opaque.
- fixed a GCC warning in fmodsound.cpp
SVN r954 (trunk)
there were no designated characters to strip at the end of it.
- Added support for Shoutcast/Icecast playlists.
- Added an error message when a playlist could not be opened.
- Added support for PLS format playlists, in addition to M3U.
- Changed FPlayList to use an array of FStrings.
- Fixed: Playlists required every song to be specified by an absolute path.
SVN r951 (trunk)
waveforms, and three of them are non-negative. This can cause a tendency
for the resulting output waveform to go into very high ranges depending on
the timbres used, and Heretic's exemplify this problem.
- Reduced the OPL volume level slightly.
- Fixed: The waveform view from snd_drawoutput was upside-down.
SVN r949 (trunk)
EMIDI specs: Track designations and exclusions should be ignored past
the initial beat, and EMIDI program change and volume events should be
ignored unless they were used in the initial beat.
SVN r944 (trunk)
could also be because the user selected PCM-Float output, but the driver
doesn't support it (even if it claims to *cough*Audigy XP drivers*cough*).
SVN r943 (trunk)
- Simplified the DrawGraphic function in sbarinfo_display.cpp
- Added xOffset, yOffset, and alpha to every drawing function in
sbarinfo_display.cpp. So Strife popups can be handeled better and allow for
other effects (translucent bars?). I'm thinking about making a struct for
these five (also x and y) arguments so that the argument lists don't become a
mess.
- Changed DRAWIMAGE in sbarinfo_display.cpp to not use so many calls to
DrawGraphic.
- DrawKeyBar wasn't using screen->DrawTexture.
- Added a Fade transition for popups. It takes two args fade in rate and fade
out rate. Both are floats (1.0 = 1 tic to complete 0.5 = 2 tics to complete
and so on).
- Added a translucency arg to statusbars. 1.0 = opaque and 0.0 = invisible.
SVN r939 (trunk)
track off, any ticks that had only events on the disabled track would cause
the delay for that track to be thrown away, and the following notes on
enabled tracks would play too soon. This could be heard quite clearly in
xplasma.mid, where track 4 (FMGlass Drone 1) would interfere with the timing
of tracks 13 and 14 (EP1 Melody and EP1 Echo).
SVN r937 (trunk)
already playing on the channel, it should stop it with finish_note(), not
kill_note(). This can be clearly heard in the final cymbal crashes of
D_DM2TTL where TiMidity cuts them off because the final cymbals are played
with a velocity of 1 before the preceding cymbals have finished. (I wonder
if I should be setting the self_nonexclusive flag for GUS patches to
disable even this behavior, though, since gf1note.c doesn't turn off
duplicate notes.)
- Changed envelope handling to hopefully match the GUS player's. The most
egregious mistake TiMidity makes is to treat bit 6 as an envelope enable
bit. This is not what it does; every sample has an envelope. Rather, this
is a "no sampled release" flag. Also, despite fiddling with the
PATCH_SUSTAIN flag during instrument loading, TiMidity never actually
used it. Nor did it do anything at all with the PATCH_FAST_REL flag.
SVN r934 (trunk)
and not properly zero-terminated when all 8 characters were used.
- Fixed: Local sound sequence definitions caused a crash because a proper
NULL check was missing.
SVN r933 (trunk)
- Also changed all true color texture creation functions to use proper alpha
values instead of inverted ones.
- Changed FRemapTable so that all palette entries must contain proper alpha
values.
- Fixed: The F1 screen check in m_menu.cpp was missing a NULL pointer check.
- Changed: The boss brain's explosions play weapons/rocklx which is an
unlimited sound. This can become extremely loud. Replaced with a new
sound which is just an alias to weapons/rocklx but has a limit of 4.
SVN r932 (trunk)
it never freed. I'm not sure it's a good assumption that 9 characters is
always long enough, either, since you can have longer file names than that
inside a zip.
- Fixed: DSBarInfo::DrawGem() crashed if chain or gem was NULL.
SVN r929 (trunk)
3D panning.
- The listener's velocity is now set at 0 for the sound engine. The player
moves so fast that you can hear the doppler shift just by running around,
otherwise.
- Changed the sound code so that all sounds that start playing on a single
tic actually start playing at the exact same sample position.
SVN r927 (trunk)
wave file.
- Changed the default channel velocity for MUS files from 64 to 100 to
better match apparent MIDI practice. (Would like to know what this is
supposed to be.)
- Changed the mus2midi channel assignments to match the internal player's.
- Fixed: apply_envelope_to_amp() should clamp the mix levels to 0.
SVN r926 (trunk)
timidity_voices cvar.
- Added stats lines for the OPL and Timidity MIDI devices.
- Completely changed the way TiMidity volume calculations are done. It
should now be extremely close to the output a real GUS would produce with
its official MIDI player (excepting where TiMidity normalizes sample
volumes). The new equations more closely match what is specified by the DLS
and SF2 specs (but not quite), so I presume it's also more musically
correct than what TiMidity (and TiMidity++) do.
SVN r925 (trunk)
they were outside the blockmap. This could cause extreme delays if an
iteration started outside the valid boundaries.
- added nextmap and nextsecret CCMDs.
SVN r924 (trunk)
before sending it to Channel::getReverbProperties().
- Fixed: The earthquake effect did not play its sound as an actual looping
sound. I'm a bit surprised this only recently started causing problems.
SVN r923 (trunk)
snd_reset would eventually run into the hard limit on the total number
of FMOD::System objects that can be created concurrently (currently 15).
- Added proper error checks to the FMOD initialization process.
SVN r921 (trunk)
- Set note velocity back to using a linear sounding volume curve, although
it's now used to scale channel volume and expression, so recompute_amp()
is still only doing one volume curve lookup.
- Fixed: TimidityMIDIDevice caused a crash at the end of a non-looping song.
SVN r920 (trunk)
instruments to specific notes.
- Changed note velocity to not use the volume curve in recompute_amp(), since
this sounds closer to TiMidity++, although I don't believe it's correct
MIDI behavior. Also changed expression so that it scales the channel volume
before going through the curve.
- Reworked load_instrument to be less opaque.
- Went through the TiMidity code and removed pretty much all of the SDL_mixer
extensions. The only exception would be kill_others(), which I reworked
into a kill_key_group() function, which should be useful for DLS
instruments in the future.
SVN r918 (trunk)
- Removed FRadiusThingsIterator after discovering that VC++ misoptimized
it in P_CheckPosition. Now FBlockThingsIterator is used with the distance
check being done manually.
SVN r914 (trunk)
- Reorganized the HackHack code so that the image creation was moved into
MakeTexture. This was necessary because Unload deleted the pixel data
and broke the whole thing.
- Fixed: FPatchTexture::HackHack and FDoomStatusbarTexture::DrawToBar used the
obsolete and uninitialized variable Near255.
- Removed the span creation code specific to FPatchTexture. It only has an
advantage when the lump has already been loaded in memory but since that
is no longer the case now the generic version in FTexture is actually better.
- Changed: FTexture::CopyToBlock no longer uses the spans but the pixel buffer
directly. Since most patches in multipatch textures are non transparent
the added overhead from creating the spans far outweighs any savings they
might provide. It is also simpler to handle for mirrored or rotated patches now.
- Changed: Textures only create the spans when really needed. Flats and native
textures, for example, do not and it only created needless overhead that they
were always created along with the pixel buffer.
- Made use of player and actor variables consistent in a_hereticweaps.cpp.
- Fixed: A few calls to P_SpawnPlayerMissile passed 0 as angle
SVN r911 (trunk)
- Changed: When loading Zips all patches in the patches/ directory should
be loaded, not only those used by a texture in TEXTUREx.
- Disabled timidity_mastervolume for the internal Timidity again because
with the altered volume calculation it is no longer needed and the default
volume is on the same level as OPL and FMOD.
SVN r909 (trunk)
FMOD_INIT_ENABLE_PROFILE. Renamed the corresponding cvar to snd_profile.
- Removed the normalize parameter from SoundStream::Play().
- Disabled the chorus and reverb effects added to SDL_mixer's Timidity,
because they were probably never tested well, either. Thanks to the bug
in vc_alloc(), they were never even activated.
- Restored the exact frequency range search that was missing from SDL_mixer's
verion of select_sample().
- Fixed: vc_alloc(), kill_others(), and note_on() treated Voice::status as a
bit mask, when it's not. These were changes made to SDL_mixer's Timidity.
- Restored the original Timidity volume equation. The other louder one was
put in when I didn't realize all channels were mono and many notes sounded
too quiet because they never completed their attack phase.
- Fixed: FileReader::Gets() acted as if fgets() always read the maximum
number of characters.
- Fixed: FileReader::Open() did not set FilePos and StartPos to 0.
SVN r908 (trunk)
because it has the same sound volume issues as the external one.
- Replaced use of stdio in Timidity with FileReader and added the option to read
from the lump directory. If the main config file is inside the lump directory
it will assume that everything else is as well. If it is a real file it will be
assumed that the rest is real files as well.
- Fixed: None of the error returns in Timidity::read_config_file closed the file being read.
SVN r906 (trunk)
- Added support for defining composite textures in HIRESTEX. It is not fully tested
and right now can't do much more than the old TEXTUREx method.
- Added a few NULL pointer checks to the texture code.
- Made duplicate class names in DECORATE non-fatal. There is really no stability
concern here and the worst that can happen is that the wrong actor is spawned.
This was a constant hassle when testing with WADs that contain duplicate resources.
SVN r905 (trunk)
- Fixed: MinGW doesn't have _get_pgmptr(), so it couldn't compile i_main.cpp.
- Fixed: MOD_WAVETABLE and MOD_SWSYNTH are not defined by w32api, so MinGW
failed compiling the new MIDI code.
- Fixed: LocalSndInfo and LocalSndSeq in S_Start() need to be const char
pointers, since "" is a constant.
- Fixed: parsecontext.h was missing a newline at the end of the file.
SVN r904 (trunk)
particular, this meant that every channel was almost certainly in mono mode,
which can sound pretty bad if the song isn't meant to be played that way.
- Added bank numbers to the MIDI precaching for Timidity, since I guess I do
need to care about banks, if even the Duke MIDIs use various banks.
- Fixed: snd_midiprecache only exists in Win32 builds, so gameconfigfile.cpp
shouldn't unconditionally link against it.
- Fixed: pre_resample() was still disabled, and it left two samples at the end
of the new wave data uninitialized.
SVN r903 (trunk)
rid of timidity/tables.cpp, which conflicts in name with the main Doom
tables.cpp. (And interestingly, VC++ automatically renamed the object file,
so I wasn't aware of the problem with GCC.)
SVN r902 (trunk)
to enable Timidity to read its config from Zips.
I put this on hold though after finding out that the sound quality
isn't even near that of Timidity++.
- GCC-Fixes (FString::GetChars() for Printf calls)
- Added a dummy Weapon.NOLMS flag so that Skulltag weapons using this flag
can be loaded
SVN r901 (trunk)
channel when restarting the song, rather than emitting a single note off
event which only has a 1 in 127 chance of being for a note that's playing
on that channel. Then I decided it would probably be a good idea to reset
all the controllers as well.
- Increasing the size of the internal Timidity stream buffer from 1/14 sec
(copied from the OPL player) improved its sound dramatically, so apparently
Timidity has issues with short stream buffers. It's now at 1/2 sec in
length. However, there seems to be something weird going on with
corazonazul_ff6boss.mid near the beginning where it stops and immediately
restarts a guitar on the exact same note.
- Added a new sound debugging cvar: snd_drawoutput, which can show various
oscilloscopes and spectrums.
- Internal TiMidity now plays music.
- Changed the progdir global variable into an FString.
SVN r900 (trunk)
- Fixed: SBarInfo tried to calculate scaled offsets on unscaled status bars.
- Added: createpopup to SBarInfo. No we don't have custom popups yet. It only
defines the transition effect. Currently none or slideinbottom.
- Made the first argument of DrawMugShot optional (think of it as an overloaded
function). The use of the first argument is deprecated due to the event of
per player class faces.
- More changes from DrawImage to screen->DrawTexture(). I guess I didn't get
them all just yet.
SVN r897 (trunk)
and P_TryMove. Moved BlockingLine and BlockingMobj into AActor because
the global variables can be easily overwritten with certain DECORATE
constructs.
SVN r894 (trunk)
- Fixed some bugs in the HIRESTEX parser.
- Added floating point support and #include and #define tokens to
FParseContext Not used yet.
- replaced the value scanning code in FParseContext::GetToken with
calls to strtol.
SVN r893 (trunk)
freed and each iterator allocated a new one as a result.
- Split the Xlat parser context class into a generic part that can be
used for other Lemon-based parsers in the future and a smaller
Xlat-specific part.
SVN r892 (trunk)
P_FindFloorCeiling doesn't set it at all. The way it was set in
PIT_FindFloorCeiling didn't look correct.
- Changed P_FindFloorCeiling so that it doesn't need global variables
anymore. I also moved the code to set the calling actor's information
into this function because that's all it is used for. This also fixes
another bug:
- AInventory::BecomePickup called P_FindFloorCeiling to get
proper position values for the item but never set the item's information
to the return value of this call.
SVN r891 (trunk)
Chaos Device. This sound is not defined by the other games so it won't
play by default.
- Added MORPH_UNDOBYTOMEOFPOWER and MORPH_UNDOBYCHAOSDEVICE flags
for the morph style so that the special behavior of these two items
can be switched on and off.
SVN r890 (trunk)
P_FindFloorCeiling never did that.
- Merged Check_Sides and PIT_CrossLine into A_PainShootSkull.
- Replaced P_BlockLinesIterator with FBlockLinesIterator in all places it was
used. This also allowed to remove all the global variable saving in
P_CreateSecNodeList.
- Added a new FBlockLinesIterator class that doesn't need a callback
function because debugging the previous bug proved to be a bit annoying
because it involved a P_BlockLinesIterator loop.
- Fixed: The MBF code to move monsters away from dropoffs did not work as
intended due to some random decisions in P_DoNewChaseDir. When in the
avoiding dropoff mode these are ignored now. This should cure the problem
that monsters hanging over a dropoff tended to drop down.
SVN r887 (trunk)
flag are only drawn as part of a secret sector if that secret has already
been found, even if the option is set to always show secret sectors.
- Added a NULL pointer check to WI_LoadBackground.
SVN r885 (trunk)
MAPINFO where 'lookup' could be specified so that there is one consistent
way to do it.
- Added a missing NULL pointer check to S_Start.
SVN r884 (trunk)
to handle M4 and 5 in Doom and Heretic.
- Added P_CheckMapData functions and replaced all calls to P_OpenMapData that
only checked for a map's presence with it.
- Added Martin Howe's player statusbar face submission.
- Added an 'adddefaultmap' option for MAPINFO. This is the same as 'defaultmap'
but keeps all existing information in the default and just adds to it. This
is needed because Hexen and Strife set some information in their base
MAPINFO and using 'defaultmap' in a PWAD would override that.
- Fixed: Using MAPINFO's f1 option could cause memory leaks.
- Added option to load lumps by full name to several places:
* Finale texts loaded from a text lump
* Demos
* Local SNDINFOs
* Local SNDSEQs
* Image names in FONTDEFS
* intermission script names
- Changed the STCFN121 handling. The character is not an 'I' but a '|' so
instead of discarding it it should be inserted at position 124.
- Renamed indexfont.fon to indexfont so that I could remove a special case
from V_GetFont that was just added for this one font.
- Added a 'dumpspawnedthings' CVAR that enables a listing of all things in
the map and the actor type they spawned.
SVN r882 (trunk)
- Added: fillzeros flag for drawnumber. When set the string will always have
a length of the specified size and zeros will fill in for the missing places.
If the number is negative the negative sign will take the place of the last
digit.
- Added: globalarray type to drawnumber which will display the value in a
global array with the index set to the player's number. Untested.
- Added: isselected command to SBarInfo.
- Fixed: Bi and Tri colored numbers didn't work.
- Fixed: Crash when using nullimage as the last image in drawswitchableimage.
- Applied Graf suggestion to include the y coord when calulating heights to fix
most of the gaps caused by round off errors. At least for now anyways and it
is only applied for drawimage.
- SBarInfo inventory bars have been converted to use screen->DrawTexture()
SVN r881 (trunk)
line.
- Fixed: P_SpawnPuff assumed that all melee attacks have the same range
(MELEERANGE) and didn't set the puff to its melee state if the range
was different. Even worse, it checked a global variable for this so
the behavior was undefined when P_SpawnPuff was called from anywhere
else but P_LineAttack. To reduce the amount of parameters I combined
this information with the hitthing and temporary parameters into one
flags parameter. Also changed P_LineAttack so that it gets passed
an additional parameter that specifies whether the attack is a melee
attack or not and set this to true in all calls that are to be considered
melee attacks. I couldn't use the damage type because A_CustomPunch
and A_CustomMeleeAttack allow passing any damage type they want.
- Added a sprite option as an alternative of particles for FX_ROCKET
and FX_GRENADE.
SVN r879 (trunk)
DECORATE was wrong (2 instead of 1.)
- Changed: Hexen set every cluster to be a hub if it hadn't been defined before
a level using this cluster. Now it will only do that if HexenHack is true,
i.e. when original Hexen format MAPINFOs are parsed. For ZDoom format
MAPINFOs it will now be the same as for the other games which means that
'hub' has to be declared explicitly.
- Added an Idle state that is entered in place of the spawn state if a monster
has to return to its inactive state if it can't find any more targets.
- Added MF5_NOINTERACTION flag which completely disables all physics related
code for any actor with this flag. Mostly useful for particle effects where
the actors just move a certain distance and then disappear.
- Removed the last remains of the antialias precalculation code from
am_map.cpp because it was no longer used.
- Fixed: Two-sided lines bordering a secret sector were not drawn in the
proper color
- Fixed: The automap didn't check ACS_LockedExecuteDoor for its lock color.
SVN r876 (trunk)
rather than a generic one, so identifying errors among files that all have
the same lump name no longer involves any degree of guesswork in
determining exactly which file the error occurred in.
- Added a check to S_ParseSndSeq() for SNDSEQ lumps with unterminated final
sequences.
- Fixed: Parts of s_sndseq.cpp that scan the Sequences array need NULL
pointer checks, in case an improper sequence was encountered during
parsing but not early enough to avoid creating a slot for it in the array.
SVN r874 (trunk)
can be played as OPL can also be dumped.
- Removed the opl_enable cvar, since OPL playback is now selectable as just
another MIDI device.
- Added support for DRO playback and dual-chip RAW playback.
- Removed MUS support from OPLMUSSong, since using the OPLMIDIDevice with
MUSSong2 works just as well. There are still lots of leftover bits in
the class that should probably be removed at some point, too.
- Added dual-chip dumping support for the RAW format.
- Added DosBox Raw OPL (.DRO) dumping support. For whatever reason,
in_adlib calculates the song length for this format wrong, even though
the exact length is stored right in the header. (But in_adlib seems buggy
in general; too bad it's the only Windows version of Adplug that seems to
exist.)
- Rewrote the OPL dumper to work with MIDI as well as MUS.
SVN r872 (trunk)
set to NULL before performing the delete. Otherwise, in some abnormal
situations, it could happen that the destroyed screen object is still
being accessed.
- Fixed: V_Shutdown didn't set OF_YesReallyDelete before deleting screen.
SVN r870 (trunk)
command actually existed.
- Fixed: My $Limit fix from yesterday didn't work because NearLimit was
an unsigned byte and the comparisons with -1 didn't work. Made it a
signed word instead.
- Made sfxinfo_t::Link an unsigned int because it limited the amount of
usable sounds to 65535.
SVN r869 (trunk)
Missimp.mid sounds a lot better now, though still a little off.
- Fixed: MIDI files that had ticks with nothing but meta-events did not play
properly. (fixes sonic3_finalboss.mid)
SVN r868 (trunk)
- Added a SFX_TRANSFERAMBUSHFLAG for A_SpawnItemEx.
- Added "Shaded" as a valid parameter for DECORATE's RenderStyle.
- Added Karate Chris's patch for a MAPINFO option making Strife conversations
not halt the game.
- Extended the $limit fix that $alias and $random definitions can have their
own $limit now.
- Fixed: When resolving a linked sound the limit of the current sound was
ignored and the one of the referenced sound being used. This was particularly
noticable when using the chaingun in a group of Zombiemen.
- Added a namespc parameter to FWadCollection::CheckNumForFullName which is
used when a normal lump name has to be looked up and changed all
CheckNumForFullName/CheckNumForName combinations in the source to use
the extended version of CheckNumForFullName only to have consistent
behavior for lump name lookup.
SVN r865 (trunk)
advanced sound options menu. Removed opl_enable from the menu.
- Added OPL synth as MIDI device -3. Since this is based on the MUS player
code, it only supports those events and controllers supported by MUS.
Some of Duke's MIDIs sound awful, but I think that may be more because
it's using different instruments... There's a thread in the MIDI streamer
class that could be taken out for Linux, since it doesn't need to deal
with the Windows Multimedia API, but for now, this is still Windows-only.
SVN r864 (trunk)
floats, so I can write its output directly to the stream buffer. In
addition, this lets me bring the OPL volume level much closer to the
standard MIDI volume.
SVN r863 (trunk)
into a general MIDI player.
- Fixed: Passing false for a stream callback did not stop the stream.
- Removed opl_frequency, since the only time the emulation sounds good is
when it plays at the exact frequency of a real chip.
- Music no longer plays at all when snd_musicvolume is 0.
- Bumped up snd_sfxvolume and snd_musicvolume default values.
SVN r862 (trunk)
that the drivers will treat a BackBufferCount of 0 as a request for
double buffering.
- Fixed: Unsetting a cvar did not remove it from the list of tab
completions.
- Added "" as a synonym for "nullimage" in SBARINFO.
- Fixed: MAKESAVESIG's stringifier in version.h did not work as expected.
It stringified the passed macro name, not the value of the macro.
- Moved DCajunMaster off the DObject hierarchy.
- Changed DCajunMaster::getspawned into a TArray of FStrings. It was
mysteriously being left pointing to uninitialized memory during the
final GC at exit and crashing.
- Fixed: The code that removed hexdd.wad from the list of IWADs when
hexen.wad was not present did not work.
SVN r861 (trunk)
from doing prebuffering of the song. This was causing the Linux version to
hang while waiting for input from the pipe, since Timidity hadn't been
started yet. I tried using a select call in the FillStream() method, but it
always seems to return the pipe as having nothing available. Unfortunately,
the game still falls all over itself if Timidity isn't available. Instead
of execvp failing nicely, X errors kill the game. I don't know why it's
doing that. My advice for Linux music: Skip Timidity++ and get a DLS patch
set (/WINDOWS/system32/drivers/gm.dls is probably the most common by far)
and set the snd_midipatchset cvar to point to it. It's faster and also
sounds a whole lot better than the crappy freepats Ubuntu wants to install
with Timidity++.
- GCC fixes.
SVN r858 (trunk)
the song's relative volume takes effect.
- Removed the arbitrary 1024 bytes limit when the file being played is a MIDI
file. I had a D_DM2TTL that's only 990 bytes.
- Restructured I_RegisterSong so that $mididevice works again and also supports
selecting FMOD.
SVN r857 (trunk)
- Removed movie volume from the sound menu and renamed some of the other
options to give the MIDI device name more room to display itself.
- Moved the midi device selection into the main sound menu.
- Added FMOD as MIDI device -1, to replace the MIDI mapper. This is still the
default device. By default, it uses exactly the same DLS instruments as the
Microsoft GS Wavetable Synth. If you have another set DLS level 1 patch set
you want to use, set the snd_midipatchfile cvar to specify where it should
load the instruments from.
- Changed the ProduceMIDI function to store its output into a TArray<BYTE>.
An overloaded version wraps around it to continue to supply file-writing
support for external Timidity++ usage.
- Added an FMOD credits banner to comply with their non-commercial license.
- Reimplemented the snd_buffersize cvar for the FMOD Ex sound system. Rather
than a time in ms, this is now the length in samples of the DSP buffer.
Also added the snd_buffercount cvar to offer complete control over the
call to FMOD::System::setDSPBufferSize(). Note that with any snd_samplerate
below about 44kHz, you will need to set snd_buffersize to avoid long
latencies.
- Reimplemented the snd_output cvar for the FMOD Ex sound system.
- Changed snd_samplerate default to 0. This now means to use the default
sample rate.
- Made snd_output, snd_output_format, snd_speakermode, snd_resampler, and
snd_hrtf available through the menu.
- Split the HRTF effect selection into its own cvar: snd_hrtf.
- Removed 96000 Hz option from the menu. It's still available through the
cvar, if desired.
- Fixed: If Windows sound init failed, retry with DirectSound. (Apparently,
WASAPI doesn't work with more than two speakers and PCM-Float output at the
same time.)
- Fixed: Area sounds only played from the front speakers once you got within
the 2D panning area.
SVN r854 (trunk)
from a higher limit.
- Fixed: $limit should not apply to sounds played from the menu.
- Fixed: The SNDSEQ parser tried to set bDoorSound before actually creating
the sound sequence data.
SVN r852 (trunk)
- Added a debuganimated CCMD that can be used to output some information
if a WAD shows broken animations.
- Fixed: The handling for enum values in Xlat was incorrect. The rule with
value assignment must set the counter one higher than the current value.
- Fixed: The definition of enums in the Xlat grammar was right-recursive
which could create stack overflows in the parser. Made it left-recursive as
recommended in Lemon's docs.
SVN r850 (trunk)
xlat_parser.y because both files had the same time stamp after an update,
and Lemon only rewrites the header file if it's changed.
- Added $volume SNDINFO command. This is multiplied with the volume the sound
is played at to arrive at the final volume (before distance attenuation).
- Added the CHAN_AREA flag to disable 3D panning within the min distance of a
sound. Sector sound sequences (except doors) use this flag.
- Added the CHAN_LOOP flag to replace the S_Looped* sound functions.
- Restored the sound limiting.
SVN r849 (trunk)
of status bar face graphics belonging to skins.
SBARINFO update #15
- Fixed: Monospacing fonts wasn't quite correct.
- Fixed: The new mug shot code forgot to use the first arg of drawmugshot (the
one that picks the default sprite prefix).
- Added: lowerHealthCap variable to SBarInfo, which is set to true by default.
- Added: ininventory event to SBarInfo to detect if one or two items are in (or
not in) the player's inventory.
- Added: The ability to print global vars using drawnumber. I need someone to
test it though.
- Added: aspectratio command to detect what the user's aspect ratio is.
- Added: missing spacing argument to drawstring.
- Changed the sbarinfo display routine for drawnumber to not use cmd.value to
store what it is about to display. Now it uses a new variable.
- More conversions from DrawImage to screen->DrawTexture. I think only the
inventory bar drawing functions have to be changed now.
SVN r846 (trunk)
the rest of the game.
- Fixed: The specialaction list was not copied properly when transferred
from the defaultinfo.
- Fixed: The defaultinfo for MAPINFO wasn't cleared fully after MAPINFO
parsing was completed.
- Made Doom-format linedef translators a map property so that it's easier
to define replacements or extensions.
SVN r843 (trunk)
contain enough music to fill the initial output buffers.
- Removed the read barrier around ADehackedPickup::RealPickup. If the real
pickup is picked up, it may very well destroy itself before the dehacked
wrapper's stubs that use it are called.
- Reverted revision 840. For a file we don't want end users to be touching,
making DEHSUPP plain text sends out mixed messages: "Don't mess with this.
Oh, by the way, it's plain text now to make it easier for you to edit."
Is there some reason other than a desire to do away with binary lumps to
make the distributed lump text?
- Added a new speakermode for Stereo + HRTF: "Headphones". This is the only
way to get the HRTF low pass filter effect now.
- Fixed: No more than one sector could make noise at once.
- Trying out sound without varying priorities again.
- Fixed: Need to use setSpeakerMix to let 2D sounds (aka streamed music) use
their full volume range.
SVN r842 (trunk)
the DEHSUPP compiler is gone now. Unlike XLATCC I'm using FScanner though.
A fully featured parser seems like overkill for this simple text file.
SVN r840 (trunk)
- Added 'allowprotection' keyword to terrain definitions to allow damaging
flats that don't damage players with a radiation suit.
- Fixed: SNDINFO rolloff setting for Strife was missing.
SVN r839 (trunk)
will behave as before, setting it to 1 will create exactly one lighting
and setting it to 2 will terminate lightning for the current level
completely. And it will also work on maps that don't have lightning set
in MAPINFO now.
SVN r837 (trunk)
from a savegame.
- Fixed: side_t::StopInterpolation called setinterpolation instead of
stopinterpolation. Also moved the clearinterpolation call in
P_SetupLevel after the P_FreeLevelData to make absolutely sure that
nothing in there can leave an interpolator behind by accident.
- Applied Linux fixes by Jim.
SBARINFO update by Blzut3:
- Fixed: the playerclass command needed a null pointer check to prevent
crashing on respawn.
- Fixed: Mug Shot states were not reset on respawn.
- Removed keepoffsets flag since apparently it was keeping the offsets by
default. The means that the only thing not affected by the offsets was using
nullimage as a background. Since I wasn't able to get a result I liked I'm
going to say that if you want a black background with high res positioning
you will have to create your own bar image. Maybe I'll fix it some other
time.
- Added: monospacefonts variable which allows for all of the fonts to be
monospaced by a specified character (from their fontset of corse).
- Made SBarInfo recognize the bar names for the Strife popups but they don't
do anything beyond that. The names are: popuplog, popupkeys, and popupstatus.
- Started converting the drawing routine to be more flexable towards high
resolution status bars. (Only did one call so far.)
SVN r835 (trunk)
subject to channel overriding.
- Re-added priority selection based on sound usage.
- Reduced the number of virtual channels to match the number of real
channels.
- Added customizable rolloff, including Doom's standard linear gain rolloff.
SNDINFO commands are:
$rolloff <sound> <min distance> <max distance> -- linear gain (like Doom)
$rolloff <sound> linear <min distance> <max distance> -- linear volume
$rolloff <sound> log <min distance> <rolloff factor> -- logarithmic
$rolloff <sound> custom <min distance> <max distance> -- use SNDCURVE lump
Anything closer than min distance is full volume and anything further than
max distance is inaudible. Logarithmic rolloff does not have a maximum
distance; it has a scalar that controls how quickly the volume drops off
instead.
SVN r834 (trunk)
Since it uses fixed point parameters it can only be used in scripts though.
- Added flags parameters to all wall scroller specials that didn't use
all 5 args.
- Separated scrolling of the 3 different texture parts of a sidedef.
While doing this I did some more restructuring of the sidedef structure
and changed it so that all state changes to sidedefs that affect rendering
have to be made with access functions. This is not of much use to the
software renderer but it allows far easier caching of rendering data
for OpenGL because the only place I need to check is in the access functions.
SVN r832 (trunk)
- Fixed: Heretic linetype translations included the wrong file.
- Removed all 2D sound positioning code from s_sound.cpp. Everything uses
FMOD's 3D engine now.
- Removed all the channel selection code from s_sound.cpp. FMOD has code to
handle this sort of thing, so let's use it.
- Replaced S_StopSoundID() with S_CheckSingular(). There is no longer a limit
on the number of copies of a particular sound that can be playing at once,
aside from Strife's special singular sounds. (Sorry, Heretic and Hexen.)
Consequently, the SNDINFO $limit command is now ignored.
- Removed ATTN_SURROUND, since FMOD Ex doesn't exactly support it, and it
only worked as intended on stereo speakers anyway.
- Cleaned out ancient crud from i_sound.cpp.
SVN r826 (trunk)
- Changed savegame versioning so that the written version is never lower
than the minmum one reported as compatible.
- Added mirrored movement modes for linked sectors.
- Added Eternity-style initialization for linked sectors as a new subtype
of Static_Init.
- Added linked sectors. The control sector determines how they move but if
any one of the linked sectors is blocked, movement for all linked sectors
will be affected. This will allow lifts consisting out of more than one
sector without the risk of breaking them if only one of the sectors is
blocked.
- Fixed: A_Mushroom created an actor on the stack.
SVN r825 (trunk)
- deleted src/xlat/xlat_parser.c from the repository. Its content depend on the directory
directory structure it is generated in and it gets recreated each time the project is
compiled (why?) so it'd be changed with each SVN commit. VC++ doesn't seem to mind if
it can't be found so I think it's better this way.
SVN r822 (trunk)
- Added a cheap pitch shifting for underwater environments that should be fairly
close to Duke's. It sounds okay for some sounds, but others like the BFG, where
the timing of the sound actually matters, don't sound good. I shall have to
replace it with a real pitch shifter DSP unit.
SVN r819 (trunk)
which crushing mode is used: 0 uses the game's default for compatibility,
1 uses Doom's mode (crushers continue to move while damaging any actors ) and
2 uses Hexen's mode (crushers stay at blocking actor's top until they die).
Since Generic_Crusher already used all 5 args I created a second version for
Hexen crushing mode.
- Added PICKUP flag to DECORATE.
SVN r817 (trunk)
- Fixed: ACS SetMugShotState needs to check the StatusBar pointer for the
proper object type.
- Move SBarInfo loading code in d_main.cpp into a static method of DSBarInfo.
- Removed dobject.err from the repository. It only contained a list of compiler
errors for some very old version of dobject.cpp.
- Fixed: A_JumpIfCloser was missing a z-check.
- Added Blzut3's SBARINFO update #13:
- Split sbarinfo.cpp into two files sbarinfo_display.cpp and sbarinfo_parser.cpp
- Rewrote the mug shot system for SBarInfo to allow for scripting and custom
states for different means of death.
- SBarInfo now loads all SBarInfo lumps instead of just the last one. Clashing
status bar definitions will now be cleared before the bar is read.
- Fixed: When using transparency with bars the new drawing method (bg over fg)
didn't work. In the case that the border value is set to 0 it will revert to
the old method (fg over bg).
- Fixed: drawbar lost any high res information it was given.
- Added: ACS command SetMugShotState(str state) which sets the mug shot state
for the activating player.
- Added: keepoffsets flag to drawbar. When set the offsets in the fg image will
also be applied when displaying the bar.
SVN r812 (trunk)
to be able to save the 3dMidtex attachment info.
- Fixed: The TArray serializer needs to be declared as a friend of TArray
in order to be able to access its fields.
- Since there are no backwards compatibility issues due to savegame version
bumping I closed all gaps in the level flag set.
- Bumped min. Savegame version and Netgame version for 3dMidtex related
changes.
- Changed Jump and Crouch DMFlags into 3-way switches:
0: map default, 1: off, 2: on. Since I needed new bits the rest of
the DMFlag bit values had to be changed as a result.
- fixed: PTR_SlideTraverse didn't check ML_BLOCKMONSTERS for sliding
actors without MF3_NOBLOCKMONST.
- Added MAPINFO commands 'checkswitchrange' and 'nocheckswitchrange'
that can enable or disable switch range checking globally per map.
- Changed ML_3DMIDTEX to force ML_CHECKSWITCHRANGE.
- Added a ML_CHECKSWITCHRANGE flag which allows checking whether the
player can actually reach the switch he wants to use.
- Made DActiveButton::EWhere global so that I can use it outside thr
DActiveButton class.
March 17, 2008 (Changes by Graf Zahl)
- Changed P_LineOpening to pass its result in a struct instead of global
variables.
- Added Eternity's 3DMIDTEX feature (no Eternity code used though.)
It should be feature complete with the exception of the ML_BLOCKMONSTERS
flag handling. That particular part of Eternity's implementation is
sub-optimal because it hijacks an existing flag and doesn't seem to make
much sense to me. Maybe I'll implement it as a separate flag later.
SVN r810 (trunk)
list, it should just be ignored during the propagation stage.
- After sleeping on it and realizing what was really going in, I generalized
the inventory fix from the 13th: The actor is flagged by Destroy(), then it
is later inserted into the thinker list by DThinker::SerializeAll(). So
rather than unlinking the skipped player from their inventory, just make
sure any flagged thinkers aren't inserted into a list.
- Fixed: FCanvasTextureInfo::Viewpoint needed a read barrier, and the whole
list should serve as a root.
- Reimplemented SPC playback as a custom codec for FMOD.
- Removed spc_frequency, because snes_spc only supports the SPC's native
frequency of 32000 Hz.
SVN r806 (trunk)
- implemented Vavoom's vertex height things (1504, 1505) that can explicitly
define slopes for triangular sectors. The height is specified as the thing's
z-coordinate.
SVN r804 (trunk)
copies of the players stored in the archive would be destroyed and break
apart the STAT_INVENTORY thinker list. Now they aren't destroyed while
loading the archive but are unlinked from the inventory list instead, so
the garbage collector will get them later.
- Changed pointer substitution to return the number of pointers changed.
SVN r803 (trunk)
way wasn't playing well with the write barriers.
- Fixed: DFrameBuffer::WriteSavePic needs to fix the canvas in place while
using it.
- Fixed: The sound system was updated every frame, which is a complete waste
of time. Doing it only once each tic is quite sufficient, since nothing
really moves between tics, even if the display makes it look otherwise.
SVN r799 (trunk)
spc_amp from a x.4 fixed point number to a normal float.
- Switched SPC playback from the external SNESAPU.DLL to Blargg's LGPL
snes_spc library. I've compiled it with the fast DSP rather than the
highly accurate one, since I didn't notice a meaningful difference between
the two in my limited testing. In short: SPC playback is now built in to
ZDoom. You don't need to download anything extra to make it work, and it
also works on Linux as well as Windows (though building with Linux is
currently untested).
- Fixed: Stereo separation was calculated very wrongly when in 2D sound mode.
SVN r794 (trunk)
that explicitly for 2D sounds in 3D mode.
- Fixed: I had forgotten to actually set the head relative flag for 2D sounds
played in 3D.
- Fixed: Reverb was applied to digital music in software 3D mode.
SVN r793 (trunk)
for FMOD Ex while at the same time removing support for FMOD 3. Be sure to update
your SDKs. GCC users, be sure to do a "make cleandep && make clean" before
building, or you will likely get inexplicable errors.
- Fixed: If you wanted to make cleandep with MinGW, you had to specifically
specify Makefile.mingw as the makefile to use.
- Added a normalizer to the OPL synth. It helped bring up the volume a little,
but not nearly as much as I would have liked.
- Removed MIDI Mapper references. It doesn't work with the stream API, and
it doesn't really exist on NT kernels, either.
- Reworked music volume: Except for MIDI, all music volume is controlled
through GSnd and not at the individual song level.
- Removed the mididevice global variable.
- Removed snd_midivolume. Now that all music uses a linear volume scale,
there's no need for two separate music volume controls.
- Increased snd_samplerate default up to 48000.
- Added snd_format, defaulting to "PCM-16".
- Added snd_speakermode, defaulting to "Auto".
- Replaced snd_fpu with snd_resampler, defaulting to "Linear".
- Bumped the snd_channels default up from a pitiful 12 to 32.
- Changed snd_3d default to true. The new cvar snd_hw3d determines if
hardware 3D support is used and default to false.
- Removed the libFLAC source, since FMOD Ex has native FLAC support.
- Removed the altsound code, since it was terribly gimped in comparison to
the FMOD code. It's original purpose was to have been as a springboard for
writing a non-FMOD sound system for Unix-y systems, but that never
happened.
- Finished preliminary FMOD Ex support.
SVN r789 (trunk)
it seems to have a working volume control.
- Renamed music_midi_stream.cpp to music_midi_base.cpp.
- Moved the WinMM MIDI code into a new container class.
SVN r787 (trunk)
class so they all the low-level details of MIDI streaming are kept in
one place.
- Converted the SMF MIDI playback to use the same MIDI streams as MUS
playback.
- Moved MUS playback back into its own thread so that it can continue
uninterrupted if the main thread is too busy to service it in a timely
manner.
- Fixed: The MEVT_* values are not defined shifted into their spot for a
MIDIEVENT, so I need to do it myself.
- Fixed: Pausing a MUS and the changing snd_midivolume caused the paused
notes to become audible.
SVN r784 (trunk)
of ZDoom, except now the entire song isn't prebuffered in large chunks, so
I can insert MIDI events into the playback with fairly low latency. This
should offer more precise timing than the combination of low-level MIDI and
WaitForSingleObject timeouts.
SVN r783 (trunk)
high to pass through two-sided lines, but not ones that were too low.
- Fixed: SBARINFO couldn't detect the extreme death damage type for the
player face animation.
SVN r782 (trunk)
it is 1-based.
- added MF5_DONTRIP flag.
- added CheckActorFloorTexture, CheckActorCeilingTexture and
GetActorLightLevel ACS functions.
- added IF_ADDITIVETIME flag to create powerups that add their duration
to the one of the currently active item of the same type.
- fixed: bouncecount wasn't decreased when bouncing on walls.
- Added MF5_ALWAYSRESPAWN and MF5_NEVERRESPAWN flags that selectively
enable or disable monster respawning regardless of skill setting.
- Prettified deprecated flag handling.
SVN r780 (trunk)
to stop the old music so the new one always starts at the beginning.
- Fixed:: AActor::master was not serialized.
- Fixed: Sound targets pointing to dead players should be cleared before
respawning the player.
- Fixed: When the DONTMOVE flag is set A_Chase must not call P_NewChaseDir.
- Changed PowerupGiver initialization so that the actual powerup class is looked
up during postprocessing.
- Gave Strife's instant death sector type its own damage type.
SVN r778 (trunk)
drawing function. The most improvement came from being able to turn some
constant variables into immediate values with self-modifying code, but I
also managed to reorder it to make it a little faster. It's about 9% faster
than VC++'s code and 19% faster than GCC's code. That's not a huge
improvement (for VC++), but at least it's measurable.
- Removed the solid fill "optimization" from rt_shaded4cols(), because in my
testing, it didn't help any and in fact, hurt just a little bit.
- In the name of simplification, all the rt_tlate* drawers were changed to do
the translation in one step and the drawing in another. This lets me call
the untranslated drawer to do the real drawing instead of mostly duplicating
them. Performance wise, there is practically no difference from before.
SVN r771 (trunk)
FreshThinkers lists. These thinkers would still be saved in the savegame if
there were other references to them, but they would not go in any thinker
lists when loading the savegame. An easy way to exercise this bug is to
give yourself something new with the console and then save the game right
away without closing the console by using the "save" command. The item
would be stored in the savegame thanks to its presence in the Inventory
list, but it wouldn't be in a thinker list when the game was reloaded
because it was still in the FreshThinkers list when the game was saved.
SVN r763 (trunk)
- Fixed two problems with printfs from the net controller stuff: one of them
is totally valid, and the other is GCC not being as nice as VC++.
- Fixed: The case for defining SAVESIG when SVN_REVISION_NUMBER == 0 did not
work for GCC (and presumably VC++, though I never ran into that case with
it) because it tried to stringify something that wasn't a macro argument.
SVN r762 (trunk)
* When the drawbar code was optimized border was accidently used as how many
pixels to reserve from the background instead of the foreground. I've
reversed how the code works (bg over fg instead of fg over bg).
* Added armorclass to drawnumber.
* Added an interpolateArmor variable which acts just like interpolateHealth
except the effect is applied to armor.
* Added armor flag to drawgem since we can interpolate armor now.
* Added a reverse flag to drawgem.
* Fixed drawgem didn't allow for '|' to separate the flags.
- Fixed: Menu texts for skill definitions unconditionally interpreted
the given text as an index into the string table.
SVN r752 (trunk)
- Fixed: The MusicVolumes list was allocated with M_Malloc but freed with
delete.
- Fixed: demobuffer was inconsistantly handled with new[]/delete[] and
malloc/free.
- Added used memory tracking to M_Malloc() and M_Realloc(). This
necessitated the addition of an M_Free() call to track frees.
- Removed M_Calloc since it was only used in one place, and can just as well
be done with an M_Malloc/memset pair.
- Bumped DEMOGAMEVERSION for the new net controller codes.
SVN r751 (trunk)
- The net arbitrator can add or remove players to an access list so they
can or cannot control game settings:
* net_addcontroller <player number> - Adds a player to the control list. Only net arbitrators have access to this command.
* net_removecontroller <player number> - Removes a player from the control list. Only net arbitrators have access to this command.
* net_listcontrollers - Lists the players who are able to control the game settings.
- Fixed: The 'Printf'' occurrences in the 'addplayerclass' console command were all missing a '\n' at the end.
- Enhanced the 'playerinfo' console command so more information about each setting is shown.
SVN r750 (trunk)
- Disabled console alpha when the console is fullscreen.
- Re-enabled maybedrawnow for the software renderer. This should be replaced
with a different progress bar implementation at some point that can work
with hardware graphics.
SVN r747 (trunk)
frame to avoid the remote possibility that it could change during the middle
of drawing the frame and cause strange things to happen.
- Renamed test2d to vid_hw2d.
SVN r744 (trunk)
to a map they've previously been to. This is analagous to enter scripts, but
whereas enter scripts execute only the first time a player enters a map,
return scripts execute all but the first time.
- Improved map scrolling when rotation is on and follow mode is off.
SVN r742 (trunk)
function in an easy-to-understand manner.
- Fixed: D_AddWildFile() blindly assumed that all matches were files.
- Added back the dead player check to CheckIfExitIsGood(), but now it
applies only if the next map is part of the same hub. Otherwise, you can
still exit the map while dead.
- Removed the SpawnedPuff global variable and made it a return value from
P_LineAttack().
- Fixed: P_SpawnPuff() played sounds for temporary puffs.
SVN r739 (trunk)
* SBarInfo will also accept a '|' between flags for those who are really
bothered by the indefinite "arguments" in the middle of the statement.
* Added: completeBorder. When set to true SBarInfo will draw the border where
the status bar normally goes.
* Fixed: I forgot to accept TK_None on "base" and "statusbar".
* Fixed: "base" was apparently broken when the SBarInfo init code was moved to
d_main.cpp. Also, if "base Strife" was used then it would not use the
default log message of "find help".
SVN r736 (trunk)
as the empty string. Since that was the player class, this meant that any
games with more than one class would pick a random class in multiplayer.
- Fixed: FCanvasTexture::RenderView() should not have color 0 in its output.
SVN r735 (trunk)
- G_DoSaveGame() now receives the filename and description from its arguments
rather than global variables, so autosaves and manual saves can be done
in close proximity to each other without overwriting the parameters for
one of them.
- Fixed potential buffer overrun in G_SaveGame() and added a check so that
you can't interfere with saves that are still pending.
- Fixed: P_LineAttack() creates temporary puffs to get damage types, but this
had the side effect of creating particles for the puff.
- Fixed: The Heretic status bar tried to use the graphic "SELECTBOX" for the
inventory selector. The correct name is "SELECTBO".
- Fixed: Using allowrespawn for a single-player map would fire off enter
scripts instead of respawn script because the player wasn't assigned the
state PST_REBORN.
- Fixed: P_CheckMissileSpawn() now passes the BlockingMobj to
P_ExplodeMissile() so that it can select the appropriate death state.
- Added the manifest to MinGW-compiled builds of updaterevision so you can
build under Vista with MinGW without needing administrative privileges.
(But I still want to know why Vista thinks it needs elevated privileges
without a manifest telling it otherwise.)
- Using four 0xFF bytes for the final note of an IMF song should signal the
end of the song.
SVN r733 (trunk)
- Sbarinfo optimization: Creating and destroying bar textures every frame is
a relatively expensive operation. We can skip the custom texture entirely
and just draw the bars directly to the screen, using the clipping parameters
for DrawTexture(). This also means bars are no longer limited to the game
palette, and the bar itself has the same resolution as the screen.
SVN r731 (trunk)
it was previously declared unrecommended and deprecated.
- Added Blzut3's sbarinfo update #10:
* Fixed: drawmugshot now adjust to the player's max health like it should.
* drawgem can now accept negative paddings.
* Added: You can now specify a border on drawbar which will reserve x
amount of pixels on each side of the fg image.
* Added: weaponammo command which allows for determining what kind of ammo
the current weapon uses.
* Added: Drawkeybar to SBarInfo
SVN r730 (trunk)
- reverted removal of AddPatch call in crosshair initialization.
- Modified makewad.c so that it doesn't write file names with '[]^' to the dependency file. Apparenly make
can't handle these names and an incomplete list is still better than something that doesn't work at all.
SVN r719 (trunk)
code left in that file.
- Cleaned up r_data.cpp.
- Fixed: FTextureManager::FindTexture should not print error messages if it
doesn't find the texture.
- Added Karate Chris's patch for fixing Strife quit messages.
SVN r718 (trunk)
- Got rid of R_InitPatches because the new texture init code needs to preload
everything to work correctly.
- Rewrote texture manager initialization to order textures primarily by WAD
rather than by type. This way later textures will always override earlier
ones. The only exception is that TEX_MiscPatch are only used as a fallback
if nothing else can be found.
- Optimized the tryany case of FTextureManager::CheckForTexture. It is not
necessary to scan the hash chain twice. The required information can be
retrieved during the first pass as easily and even offers a little more
control.
- Made FFont destructor virtual.
- Added 'Ice' translation to DECORATE.
(Caution: Not fully tested yet!)
SVN r715 (trunk)
the exact same values as previous ZDoom versions
- Added a DECORATE 'stencilcolor' property so that the stencil render style
can be used.
- Added some NULL pointer checks to the font loading code.
SVN r713 (trunk)
error handling.
- Fixed: dehsupp/scanner.re defined "}" as the token RPAREN. dehsupp/parse.y
also defined action_list_def as needing a RBARCE. I'm surprised it worked
at all before. I guess Lemon really was too accepting.
- Changed the way that xlatcc handles include statements so that I don't need
to modify the logic of lempar.c. I also discovered that the grammar was
improperly defined and only accepted the first statement. It worked before
because Lemon used to accept multiple times before reaching the EOF token.
I have also verified that it is still generating the proper lumps.
- Removed some unused wadsrc files from the repository.
- Fixed my re2c upgrade.
- Updated lemon.c to v1.53.
SVN r711 (trunk)
- Added .txt files to the list of types (wad, zip, and pk3) that can be
loaded without listing them after -file.
- Fonts that are created by the ACS setfont command to wrap a texture now
support animated textures.
- FON2 fonts can now use their full palette for CR_UNTRANSLATED when drawn
with the hardware 2D path instead of being restricted to the game palette.
- Fixed: Toggling vid_vsync would reset the displayed fullscreen gamma to 1
on a Radeon 9000.
- Added back the off-by-one palette handling, but in a much more limited
scope than before. The skipped entry is assumed to always be at 248, and
it is assumed that all Shader Model 1.4 cards suffer from this. That's
because all SM1.4 cards are based on variants of the ATI R200 core, and the
RV250 in a Radeon 9000 craps up like this. I see no reason to assume that
other flavors of the R200 are any different. (Interesting note: With the
Radeon 9000, D3DTADDRESS_CLAMP is an invalid address mode when using the
debug Direct3D 9 runtime, but it works perfectly fine with the retail
Direct3D 9 runtime.) (Insight: The R200 probably uses bytes for all its
math inside pixel shaders. That would explain perfectly why I can't use
constants greater than 1 with PS1.4 and why it can't do an exact mapping to
every entry in the color palette.
- Fixed: The software shaded drawer did not work for 2D, because its selected
"color"map was replaced with the identitymap before being used.
- Fixed: I cannot use Printf to output messages before the framebuffer was
completely setup, meaning that Shader Model 1.4 cards could not change
resolution.
- I have decided to let remap palettes specify variable alpha values for
their colors. D3DFB no longer forces them to 255.
- Updated re2c to version 0.12.3.
- Fixed: A_Wander used threshold as a timer, when it should have used
reactiontime.
- Fixed: A_CustomRailgun would not fire at all for actors without a target
when the aim parameter was disabled.
- Made the warp command work in multiplayer, again courtesy of Karate Chris.
- Fixed: Trying to spawn a bot while not in a game made for a crashing time.
(Patch courtesy of Karate Chris.)
- Removed some floating point math from hu_scores.cpp that somebody's GCC
gave warnings for (not mine, though).
- Fixed: The SBarInfo drawbar command crashed if the sprite image was
unavailable.
- Fixed: FString::operator=(const char *) did not release its old buffer when
being assigned to the null string.
- The scanner no longer has an upper limit on the length of strings it
accepts, though short strings will be faster than long ones.
- Moved all the text scanning functions into a class. Mainly, this means that
multiple script scanner states can be stored without being forced to do so
recursively. I think I might be taking advantage of that in the near
future. Possibly. Maybe.
- Removed some potential buffer overflows from the decal parser.
- Applied Blzut3's SBARINFO update #9:
* Fixed: When using even length values in drawnumber it would cap to a 98
value instead of a 99 as intended.
* The SBarInfo parser can now accept negatives for coordinates. This
doesn't allow much right now, but later I plan to add better fullscreen
hud support in which the negatives will be more useful. This also cleans
up the source a bit since all calls for (x, y) coordinates are with the
function getCoordinates().
- Added support for stencilling actors.
- Added support for non-black colors specified with DTA_ColorOverlay to the
software renderer.
- Fixed: The inverse, gold, red, and green fixed colormaps each allocated
space for 32 different colormaps, even though each only used the first one.
- Added two new blending flags to make reverse subtract blending more useful:
STYLEF_InvertSource and STYLEF_InvertOverlay. These invert the color that
gets blended with the background, since that seems like a good idea for
reverse subtraction. They also work with the other two blending operations.
- Added subtract and reverse subtract blending operations to the renderer.
Since the ERenderStyle enumeration was getting rather unwieldy, I converted
it into a new FRenderStyle structure that lets each parameter of the
blending equation be set separately. This simplified the set up for the
blend quite a bit, and it means a number of new combinations are available
by setting the parameters properly.
SVN r710 (trunk)
* Fixed: Drawbar had a few memory leaks.
- Added another temporary cvar called pc to play with the multipiler used by D3DFB::SetPaletteTexture().
SVN r704 (trunk)
truncate the coordinates to integers before sending them to the hardware.
Otherwise, there can be one pixel gaps compared to the software renderer,
because the hardware is rounding to nearest but the software renderer is
simply truncating the fractional part of the coordinate. This is the real
cause of the gap above the status bar at 1152x864 (and another gap to the
left of the status bar at 800x500).
- Fixed: When D3DFB::DrawTextureV had to clip a tile, it adjusted the
texture coordinates erroneously, still using the old calculations from
before texture packing was implemented.
SVN r695 (trunk)
- Fixed: After loading a savegame, G_UnSnapshotLevel() destroyed the
unmorphed versions of players because it thought they were extras.
SVN r694 (trunk)
will also double as the pistol's icon in the AltHUD.
- Added a generic log display that can show Strife's log messages in all games
regardless of the current game, active status bar and HUD mode.
- Added GZDoom's alt HUD.
SVN r693 (trunk)
of the frame buffer so I can get rid of the last remaining renderer check
outside the display code in GZDoom.
- made V_SetResolution a virtual function in IVideo. It's probably not a perfect
solution but at least it allows overriding it (which I need in GZDoom.)
Note: There's a lot of redundancy between hardware.cpp/h in the SDL and Win32
folders so some cleaning up might be a good idea.
SVN r692 (trunk)
bar was hidden.
- Fixed: If you died in co-op and somebody else ended the map before you
respawned, you would start the next map with only default inventory, no
matter what dmflags was set to.
SVN r691 (trunk)
reference out of the function code.
- Fixed: The BrainExplosions should not perform any collision detection. To
achieve this their Damage value must be set to 0 when being spawned.
- Added a safety check to savegame versioning so that an invalid revision
(reported as 0) will be handled without breaking savegame compatibility.
SVN r689 (trunk)
* Fixed: A tutti-frutti like effect would occur if transparent images were used
in bars.
* Fixed: drawswitchableimage didn't count having 0 of an item as not having
the said item.
* Added alwaysshowcounter flag to both drawinventorybar and
drawselectedinventory.
* Added armoricon image type to drawimage.
* Added low-on secondary coloring and high-on coloring to drawnumber.
SVN r688 (trunk)
can share the same hardware texture. This greatly reduces the number of
DrawPrimitive calls that need to be made when drawing text (or any 2D
graphics in general), so now hardware text is much faster than software text
all around. (As an example, one scenario went from 315 fps to over 1635 fps
for hardware, compared to 540 fps for software.)
SVN r687 (trunk)
- Modified M_DrawFrame() and R_DrawTopBorder() so that they call FlatFill() to
draw the edges of the frames. This at least seems a bit faster for hardware
2D.
- Implemented FlatFill() for D3DFB. It seems to be exactly as fast as the
default implementation that just calls DrawTexture() to tile the pieces onto
the screen, so I'm not sure it was worth the bother.
SVN r686 (trunk)
vertex buffer, made line batching automatic, and added an index buffer for
use when batching quads. The index buffer actually offered more of a
performance boost than simply batching the quads alone did.
SVN r685 (trunk)
were not informed about which team they ended up joining.
- Added Skulltag's DF2_SAME_SPAWN_SPOT flags.
- Fixed: DF2_YES_DEGENERATION was pretty much guaranteed to go out of sync
because it used gametic for timing.
- Added DoubleAmmoFactor as a skill property for the DF2_YES_DOUBLEAMMO flag.
- Renumbered the dmflags2 entries to match Skulltag's again.
- Added Karate Chris's infinite ammo patch.
SVN r683 (trunk)
should bounce off of. Since the order lines in a blockmap cell are checked
for collision is essentially undefined, there could be another line closer to
the actor that it should bounce off of instead.
SVN r678 (trunk)
- Bumped the maximum resolution up to 2560x1600.
- Fixed: DCanvas::DrawTexture() only expanded virtual screen sizes for widescreen
resolutions but left 5:4 modes alone. This fix neccessitated the addition of
DTA_Bottom320x200 for the status bar to use so that it could be flush with the
bottom of the screen rather than sitting slightly above it.
- Fixed: FConfigFile::ReadConfig()'s definition of whitespace was too broad.
- Fixed: Defining custom translation ranges in descending order and/or with gaps
made for crashes.
SVN r676 (trunk)
- Fixed: Playerclass still didn't work due to comparing of improper numbers.
- Fixed: The arrows on drawinventorybar had a hard coded location instead of
relative to the specified coordinates.
- Added noarrows flag to drawinventorybar to remove the blue arrows drawn when
there are more items to the left or right of the viewable bar.
- Added forcescaled flag to the statusbar command. This is ignored on the
inventory and inventoryfullscreen types.
- Added obituary fix for Strife peasants by Karate Chris.
- Added fix for loading during demo playback by Karate Chris.
SVN r672 (trunk)
players are on teams.
- Set TEAM_None back to 255. Since a player's team has already been accessible
through ACS, needlessly redefining this is a bad thing to do, since it can
break existing maps. 255 different teams should still be more than enough.
- Fixed: At certain resolutions, there was a one pixel row between the status
bar and the rest of the screen, thanks to rounding error.
- Added automatic batching of quads to D3DFB. Screens with a lot of text are
ever-so-slightly faster now, though still only about half the speed of
sofware-only text. I suppose the only way to see a marked improvement is
going to be by stuffing multiple glyphs in a single texture.
- Fixed: Crosshairgrow's animation was not framerate-independent.
SVN r668 (trunk)
an arbitrarily defined value. This reduces the amount of relevant values
that have to be defined in version.h to 1 (the minimum compatible savegame
version) instead of previously 3.
SVN r666 (trunk)
local variable just before returning. Then I made some more changes so that
it can be a properly functioning texture. After doing that, I decided to
rewrite the texture generation to be easier for me to read and hopefully
faster, since this thing is getting generated every frame. (Please don't
hurt me if I got it wrong. I'm basing this on the description in the wiki,
since I couldn't wrap my head around what the code was doing by looking
at it.) Then I realized that there's really no reason to have more than four
of these ever, and they can be statically generated, so I simplified it some
more.
- Added Blzut3's latest SBARINFO patch:
* Fixed a massive memory leak in SBARINFO. The leak also lead to progressive
CPU usage.
* Fixed: Playerclass didn't work in SBARINFO.
* Fixed: Artiflash was improperly initialized causing it not to display the
first time.
* Changed the variable SBarInfoScript to be a pointer to prevent more memory
leaks.
SVN r665 (trunk)
R_InitPatches. This isn't needed anymore because all these are loaded through
an intermission script.
- Fixed: A_SpawnDebris read the third and fourth arguments from the first one's
address.
SVN r664 (trunk)
and into the vertex data.
- Added functions for doing line drawing with Direct3D, including a new pair
of functions to do batched line drawing so that the map can actually be
drawn faster in hardware than in software (instead of an order of magnitude
slower).
SVN r663 (trunk)
shader seems to be producing crappy output, so it's disabled for now.
Specifically, it produces distorted output at regular intervals for
textures that aren't power-of-2-sized, and it's still doing visible
filtering when the texture is rendered at its original size, so
obviously it's not doing something right.
- Fixed the use of power-of-2-sized native textures for smaller game
textures again.
- Fixed: D3DFB did not restore all the state it needed to after resetting
the device.
- Fixed: R_DrawTopBorder() must clip itself around the 3D view, since it's
now drawn later.
- With full software rendering, palette flashes once again effect the whole
screen.
Changes I neglected to put in the previous commit log:
- Moved the view border drawing into the 2D mode part. When using Begin2D()
now, the only part of the software buffer that gets updated to the screen
is the part with the actual 3D scene and only if you tell it to.
- Fixed a D3D memory leak on every frame in windowed mode and the same thing
for the screen wipes. Note to self: If it's an interface, be sure to
Release it, because it will be AddRef'ed before being returned to you.
- Moved the BlendView() call out of FBaseStatusBar::Draw() so that it can be
applied before copying the 3D scene to the screen underneath the 2D parts.
- Restored the console's darkening level to its old table-based amount.
- Fixed D3DFB::SetColorOverlay()'s incorrect calculations.
- Fixed the D3D screen wipes for letterboxed modes.
SVN r662 (trunk)
since I couldn't think of any reason why it should be grabbed at any other
time. (This only applies to windowed mode, where it makes sense to let the
OS have control of the pointer.)
SVN r661 (trunk)
a long-abandoned experiment to write directly to video memory instead of
to a temporary buffer in system meroy.
- Added Direct3D versions of the melt and burn screenwipes.
- Fixed the strip sizes for the melt screenwipe to match what Doom would have
produced on a 320x200 screen, rather than producing more, thinner strips
for wider screens.
SVN r659 (trunk)
8 characters which contain path separators.
- Fixed: Hires texture replacement must replace all matching textures, not
just the first one found. This is particularly important for icons based
on sprites.
- added a con_alpha CVAR to set the console's translucency.
- Added MartinHowe's submission for A_CustomBulletAttack aimfacing parameter.
- Added MartinHowe's submission for A_PlaySoundEx attenuation parameter.
- Fixed: Bots shouldn't target friendly monsters.
- Fixed a typo in sbarinfo.cpp (noatribox instead of noartibox.)
SVN r654 (trunk)
allocated. (I wonder if D3D actually handles this automatically when you use
D3DPOOL_MANAGED, because I'm pretty sure my laptops's x300 doesn't support
non-power-of-2 texture sizes, yet it worked just fine before.)
- Fixed vertical positioning of 2D elements in letterboxed modes.
SVN r653 (trunk)
very bright title pics it became quite hard to read the console's contents.
- Fixed: PROP_Translation needed to be changed for the new value format.
- Added GZDoom's MAPINFO fog parameters as no op dummies so I can use
WADs that contain them without constantly having to edit the MAPINFO.
It also allows using them to optimize hardware fog for WADs that should
run with ZDoom as well.
SVN r649 (trunk)
drawn to a texture, then that texture is copied to the real back buffer
using a gamma-correcting pixel shader. In fullscreen mode, SetGammaRamp
is used.
- Fixed flashing of vid_fps display when fps > 1000.
- Fixed loading of RGB textures for native 2D mode.
- Changed the first rotozoomer's data because it just became too obvious when
the backdrop is drawn with a full 256 distinct colors available.
- Set the player backdrop to update no more frequently than 35 FPS, so opening
the player setup menu before starting a game won't produce a very fast
moving backdrop.
- Changed the player backdrop into a texture so that it can be drawn like
anything else.
SVN r648 (trunk)
- Moved the common code of ACS and DECORATE translation generation into the
FRemapTable class.
- Fixed: The DECORATE translation code was not changed for the new data structures.
- Expanded range of ACS and DECORATE translations to 65535.
- Fixed: R_CopyTranslation was not altered for the new functionality.
I removed the function and replaced the one use with a simple assignment.
SVN r644 (trunk)
palettes smaller than 256 entries with the shader I wrote for it. Is there
a list of gotchas like this listed some where? I'd really like to see it.
Well, when compiled with SM2.0, the PalTex shader seems to be every-so-
slightly faster on my GF7950GT than the SM1.4 version, so I guess it's a
minor win for cards that support it.
- Fixed: ST_Endoom() failed to free the bitmap it used.
- Added the DTA_ColorOverlay attribute to blend a color with the texture
being drawn. For software, this (currently) only works with black. For
hardware, it works with any color. The motiviation for this was so I could
rewrite the status bar calls that passed DIM_MAP to DTA_Translation to
draw darker icons into something that didn't require making a whole new
remap table.
- After having an "OMG! How could I have been so stupid?" moment, I have
removed the off-by-one check from D3DFB. I had thought the off-by-one error
was caused by rounding errors by the shader hardware. Not so. Rather, I
wasn't sampling what I thought I was sampling. A texture that uses palette
index 255 passes the value 1.0 to the shader. The shader needs to adjust the
range of its palette indexes, or it will end up trying to read color 256
from the palette texture when it should be reading color 255. Doh!
- The TranslationToTable() function has been added to map from translation
numbers used by actors to the tables those numbers represent. This function
performs validation for the input and returns NULL if the input value
is invalid.
- Major changes to the way translation tables work: No longer are they each a
256-byte array. Instead, the FRemapTable structure is used to represent each
one. It includes a remap array for the software renderer, a palette array
for a hardware renderer, and a native texture pointer for D3DFB. The
translationtables array itself is now an array of TArrays that point to the
real tables. The DTA_Translation attribute must also be passed a pointer
to a FRemapTable, not a byte array as previously.
- Modified DFrameBuffer::DrawRateStuff() so that it can do its thing properly
for D3DFB's 2D mode. Before, any fullscreen graphics (like help images)
covered it up.
SVN r640 (trunk)
actor's sector in the game engine code with it. This way there's a clear
distinction between renderer-specific and game-specific calls.
SVN r638 (trunk)
- moved the AM line drawer into DCanvas as a virtual function. While testing
this code I discovered that the antialias precalculation was never used
except for the very first frame of AM drawing. However, since I couldn't
detect even a marginal performance improvement using this code on 2 computers
I just disabled it completely because it severely complicates a more generic
implementation. I also disabled am_ovtrans in the process because I couldn't
see any positive effects of using this cvar. All it does is adding some
ugly distortion to the lines it affects without any apparent benefits.
* Added fix by Karate Chris containing:
- Added a 'No team changing' DMFlag2 which prevents players from changing teams
unless they are not on a team.
- Added a 'No respawn' DMFlag2 which prevents a player from respawning after
they have died.
- Added a 'Keep frags gained' DMFlag2 which allows you to choose whether you
want to reset the frags of each player next level or not.
- Added a small visual enhancement to the cooperative scoreboard to show
if a player has died.
- Fixed: If the 'teamplay' console variable was set to 'true' in a cooperative
game, the scoreboard would show team play related items as opposed to
cooperative items.
- Fixed: The 'bot_observer' console variable should not work in network games.
- Fixed: Bots made intermission skip really fast.
SVN r634 (trunk)
- Fixed: ASkyViewpoint::Destroy was missing the super call.
- Added SnowKate709's A_LookEx update.
- Moved M_DrawPlayerBackdrop into DCanvas as a virtual function. Since this
directly accesses the frame buffer it must be overridable for renderers
that work differently.
SVN r632 (trunk)
* Added drawshader to draw Heretic style transparency gradients.
* Added artiflash flag to drawselectedinventory.
* Fixed: Drawgem used the wrong operator when determining the chain size.
* Fixed: ZDoom would crash if an undefined font was used.
* I also started cleaning up the source a little. I have been informed that
when checking for flags the "== flagname" is redundant.
- Added indexfont anf hudfont from GZDoom to zdoom.pk3 so that they are always
available when defining custom status bars.
SVN r629 (trunk)
passing renderer specific data to the function. Also added DTA_Font so
that the renderer can fetch font translations from the proper font.
DIM_MAP/ConShade had to be made a regular translation table to make it
work.
- Added Karate Chris's fix for scoreboard displaying team play related data
in non teamplay games.
- Fixed: The team selection menu didn't work.
- Fixed: UpdateTeam passed an FString to Printf.
SVN r623 (trunk)
character arrays and never freed them. Those have been replaced with
uses of FString. (One of these was even an instance of a member variable
being set to point at a stack variable.)
SVN r622 (trunk)
- Added a new color parameter to DCanvas::Clear() that specifies the
ARGB value of the color. This is used if the old color parameter,
which specifies a palette entry, is -1.
SVN r617 (trunk)
if present.
- Modified GZDoom's true color texture copy functions and added them
to generate 32 bit D3D textures. Paletted TGAs and PCXs are also handled
this way but I don't think these 2 formats are worth some more special
handling.
(Question: Is it worth it to implement special handling for paletted PNGs
so that they are used as 8 bit textures internally?)
SVN r608 (trunk)
both dest and src. Also changed this function so that it is owned by the
destination canvas of the operation which is necessary if it needs to
be overridden by subclasses.
SVN r607 (trunk)
They are not actually drawn with it yet, nor is it complete, but it's
something to start with.
- Split up DCanvas::DrawTexture() into more pieces to make it easier to
virtualize.
- Removed support for non-32-bit palette textures from D3DFB. What kind of
card supports pixel shaders but not 32-bit textures?
SVN r605 (trunk)
- Fixed: At resolutions taller than 600 pixels or so, tall sky textures were
drawn a row too low. This was quite visible on Hexen MAP06.
- Fixed: P_CheckSlopeWalk() must return false if floorsector != sector, or
the actor will be yanked down to the floorsector by P_TryMove().
- Fixed: ClearActorInventory, GiveActorInventory, and TakeActorInventory
only affected the first actor with the given TID.
- Fixed: The color boxes for the colorpicker menu items were drawn a little
too low.
SVN r603 (trunk)
private slots if the one currently used is a player range.
- Fixed: Changing the fraglimit during the middle of a game would not trigger
a level change if somebody was already over the new limit.
SVN r599 (trunk)
- Fixed: When changing your name from the menu, you got an extra " appended
to your name if it ended with a backslash.
- Added escape sequences for user info strings, so now they can contain
embedded backslashes.
- Fixed an array-out-of-bounds access when drawing the player setup menu with
an invalid team number.
SVN r598 (trunk)
rather than overriding the dmflags values, actually overwrote the dmflags
values, so they would continue to be in effect on later maps that didn't
explicitly specify them.
SVN r595 (trunk)
- Updated project files for nasm 2.0, which is now named nasm.exe for the
Windows version, rather than nasmw.exe. Also fixed the annoying new warnings
it generated.
SVN r593 (trunk)
crouching motion.
- Fixed: The keypress for nightmare mode verification appeared in the console
if the fullscreen console was open while using the menu.
- Added support for scaling down large console fonts in the customize
controls menu.
- Fixed: Joining a negative team was possible.
SVN r590 (trunk)
of MustConfirm: It looked for TK_String when it should have used TK_StringConst.
- Fixed: When travelling to a new non-hub map, any items being carried with
amounts of 0 would be upped to 1.
SVN r589 (trunk)
receives the input focus. When the pane is closed, the focus doesn't
return to any window, so even though the window is still active, it no
longer has the focus and does not receive input events.
- Fixed: The network synch timer was still left running after the game
started. (Windows only)
- Fixed: When a player leaves the game at the exact moment they are being
damaged, the game could crash because their actor still had a valid player
pointer, but the player's mo pointer had been NULLed.
SVN r588 (trunk)
EffectTics (now + 1), because I wasn't convinced of the correctness of
using level.time.
- Fixed: SC_CheckNumber() considered the empty string "" as the number 0.
SVN r586 (trunk)
their seekingness. The only sane way to deal with this seemed to be to
sync the freeze changes with the timer check in A_Tracer(), so that's what
I did: Freeze mode only changes every four tics now.
SVN r583 (trunk)
IWAD. They are:
* [Doom1.Autoload]
* [Doom2.Autoload]
* [Plutonia.Autoload]
* [TNT.Autoload]
* [HexenDK.Autoload]
These are loaded after the more general game-specific [Doom.Autoload] and
[Hexen.Autoload] sections if those are present.
- Changed the banner texts for the Final Doom IWADs to identify them as Final
Doom rather than as DOOM 2. I know this differs from the original behavior,
but they're marketed as Final Doom, not Doom 2.
SVN r582 (trunk)
installed. If so, it checks your SteamApps directory for any IWADs you may
have purchased through Steam and adds any it finds to the list of available
IWADs you can play. This means that if you bought your id games through
Steam, you can just extract ZDoom anywhere you like and run it without doing
any additional setup.
SVN r581 (trunk)
if the first spawned one died and executed some code in its death state.
- Added Karate Chris's submission for 'allowrespawn' MAPINFO option.
- Added Karate Chris's submission for customizable skill confirmation text.
- Fixed: Doom's statusbar only checked for primary attacks, not secondary ones when
setting Doomguy's face. (Thanks to Karate Chris for the fix.)
- added Skulltag's FORCEYBILLBOARD and FORCEXYBILLBOARD flags to the DECORATE parser.
Even though the software renderer has no use for them it is necessary to support them
so that mods can use these flags without becoming incompatible with ZDoom.
SVN r576 (trunk)
installation, not the bundled copies which might not match what is installed.
- Upgraded bundled FLAC from version 1.1.2 to version 1.2.1.
SVN r575 (trunk)
use the multi-purpose special2 as counter for strafing so I added a new variable
for this purpose.
- forgot to save p_lnspec.cpp before last commut.
SVN r574 (trunk)
though.
- Fixed: Picking up a backpack incorrectly set the maximum amount for any ammo
type that didn't have a BackpackMaxAmount to 0.
SVN r569 (trunk)
resulting in missile attacks not working.
- Fixed: Hitscan attacks used the puff's position to calculate the trajectory for
weapon kickback.
SVN r568 (trunk)
- Fixed: The FMOD stream player must specify whether it wants to play the
sound looped or not when playback is started, not when the stream is created.
- Fixed: A_Saw didn't use the puff's damage type.
- Fixed: The AxeBlood's death state was using the wrong sprite frame.
- Fixed: The Mancubus had an attack sound defined even though it shouldn't.
SVN r565 (trunk)
in a hub but by a level flag instead.
- Fixed: Floor and ceiling huggers must set themselves to floor and ceiling each
time they move.
- Added a LEVEL_NOMONSTERS flag so that G_ChangeLevel doesn't have to mess with
the dmflags CVAR to start the level without monsters.
SVN r563 (trunk)
or scripts. ColorSetter (#9038) sets the sector's color and FadeSetter (#9039)
sets the fog color.
- added new flags MF5_ALWAYSFAST and MF5_NEVERFAST. These flags unconditionally
enable or disable fast movement logic, regardless of skill settings.
- added an abstraction layer for skill related settings. This is a preparation
for implementing custom skill definitions but right now all it does is
returning the original values but keeping the related information all in one
place
SVN r557 (trunk)
- Fixed: Right after teleporting P_SlideMove could cause player movement.
Added a check for reactiontime to prevent that.
- Fixed: PainChances and Damagefactors were never freed.
- Added option to A_Chase that prevents the monster from moving.
- Fixed: The stained glass shards were missing the HEXENBOUNCE flag.
- Added some NULL pointer checks to AActor::GiveAmmo.
- Fixed: The FSwordMissile was missing the special damage handling that
reduces damage when hitting a player.
SVN r555 (trunk)
weapon didn't change back when the powerup expired.
- Fixed: The powered up version of Heretic's Gauntlets missed the proper
state assignments for Ready, Lower and Raise.
- Fixed: The Strife player was missing its pain state.
- Fixed: Revenant missiles couldn't home in on targets with a height lower than
40.
- Fixed: The code which checked for hitscan traces hitting actors from above
and below must test whether the calculated hit position is actually inside
the actor being checked. If it crosses the top/bottom plane outside the
bounding box there can't be a hit.
- Changed: State labels in code pointer calls must now be enclosed in quotation marks.
This was done to ensure compatibility with parsers that will parse these as
identifier-aware script code later.
SVN r554 (trunk)
- Fixed: The shotgun had spawn ID 21 instead of 27.
- Fixed: All 3 states in the DoomUnusedStates actor need to end with a 'stop'.
- Fixed: The DECORATE TakeInventory functions didn't check the IF_KEEPDEPLETED
flag.
- Fixed: ClearInventory should leave ammo in the inventory because it might be
referenced by undroppable weapons.
- Fixed: Several functions in a_artifacts.cpp were missing a check for a valid
owner.
- Fixed: sc_man counted lines wrong when ungetting strings but getting tokens
next.
SVN r552 (trunk)
I forgot to change the call that draws the automap marker numbers.
- Fixed: The chaingun-flash-checking code always checked the first player,
not the calling one.
- Fixed: Hitscan traces didn't hit actors when entering from above or below
SVN r551 (trunk)
from the wrong variable in a few places resulting in incorrect calculations.
- Fixed: MP3/OGG music always looped because the looping flag was always
set when FMOD was called to play it.
- Removed upper limit of 1 for an actor's gravity factor.
- Fixed: A_VileTarget spawned the fire at coordinate (target->x, target->x)
instead of (target->x, target->y). (Old vanilla bug.)
SVN r550 (trunk)
behind because it couldn't delete them.
- added a $MidiDevice option to SNDINFO which can either set the preferred
MIDI device for a song to Timidity or Windows' standard MIDI device.
The reason for this: About 80% of my MIDI music collection sounds better
with Timidity and the other 20% with Windows' standard synth and I'd like
to be able to use each with the one that sounds better. For MUS files you
can also force the use of OPL playback.
- added telefrag option to A_SpawnItemEx.
SVN r545 (trunk)
but caused problems when used with the secret exit. Rewrote the code to
set the next map at the beginning and removed all subsequent parts that
tried to resolve it from the original data again.
SVN r544 (trunk)
- fixed: The brown Chaos Serpent in Hexen had an incorrect sprite for its
ice death sequence set.
- fixed: Ammo upon game start does not get multiplied when on easy skill.
Implementing this as an inventory flag IF_IGNORESKILL also allows to create
ammo/weapon/backpack types that don't multiply the ammo given when on this
skill.
- moved Doom exit sounds into SNDINFO as $random definitions.
- Fixed: Dying Lost Souls could be reset to their see state if they slammed into
something.
SVN r540 (trunk)
- Fixed: DECORATE color translations with explicit colors didn't work because the
code treated byte values as fixed point.
- Fixed: LEVEL_NOALLIES must clear MF_FRIENDLY off any spawned actor except players.
Otherwise it doesn't work properly.
- Fixed: Entering a backslash in the player's name box caused a crash because
the code analyzing the string was missing a NULL pointer check.
- Fixed: Thing_Hate and Teleport_ZombieChanger unconditionally made state jumps,
even for dead monsters.
- Fixed: The palette flash for item pickup was not reset upon a player's death.
- Fixed: P_DamageMobj tried to get damage multiplier information from the
damage inflictor, not the attacker.
- Fixed: PowerTimeFreezer::DoEffect did not call its superclass method.
- fixed: When morphed monsters died they tried to set MF3_STAYMORPHED for the
attacker, not themselves. This caused a crash when they were killed by a crusher.
SVN r539 (trunk)
no longer gets in the way of the main parser.
- Changed A_MissileAttack, A_MeleeAttack and A_ComboAttack so that they use
metadata. Now all the hack code associated with these functions can be removed.
SVN r538 (trunk)
with my changed code.
- Cleaned up DECORATE parser a little - moved the old style parsing code into its
own file and rearranged a few things.
- Made ProcessStates non-static so that it doesn't need to be passed as an argument
to all functions in the DECORATE parser.
- Moved DECORATE parser files into their own subdirectory.
- Optimization: SC_GetToken no longer sets sc_name for identifiers. In most cases
this creates needless overhead by adding a potentially unneeded name to the name
table and looking up the name. In almost all cases where a name is needed it's as
easy to assign sc_String to the name variable.
- Added enum definitions to DECORATE.
SVN r537 (trunk)
as a counter by the Hexen fighter's fist weapon.
- Fixed: The Wraithwerge's spirits shouldn't attack friends.
- Fixed: The Heresiarch's balls must not adjust their z-position after the
Heresiarch dies.
- Added damage type specific pain chances and an MF5_NOPAIN flag that can be used
to suppress entering the pain state altogether.
- Changed font initialization so that you can define replacements for the default
fonts in FONTDEFS.
- Removed the 'add a bot' menu option since bots are beyond repair and therefore
mostly useless.
- Fixed: Hitscan attacks must always spawn a puff so that it and its properties
can be used as damage inflictor.
SVN r534 (trunk)
powerup.
- Changed: Weapons are no longer checked for the EXTREMEDEATH and NOEXTREMEDEATH flags.
For all damage related actions it will always be the projectile (or puff for hitscan
attacks) that is treated as the damage inflictor.
- Fixed: Hexen's fourth weapons made extreme death depend on the weapon the player
is holding, not the projectile that did the kill. The WIF_EXTREME_DEATH flag
no longer exists as a result.
- Expanded PowerSpeed so that subclasses can be derived that alter the speed factor.
- Added an MF5_USESPECIAL flag that allows using things to execute their specials.
- added MF4_FORCERADIUSDMG flag so that exploding items can be created which
are able to hurt boss monsters.
- moved ML_BLOCK_PLAYERS to the value 0x4000 to bring it in line with Skulltag's
implementation.
SVN r530 (trunk)
- Fixed: Resurrecting a player must restore all flags words, not just the first one.
- Fixed: APowerWeaponLevel2::EndEffect must check PendingWeapon for WP_NOCHANGE.
- added Skulltag's high jump rune as a powerup
- Added Skulltag's Drain and Regeneration runes as powerups and used specific player
sounds for their sound effects instead of using misc/i_pkup.
(If I ever decide to implement runes it will be in a way that can use the regular
powerups instead of having to define specific classes for them.)
- Added Skulltag's PowerQuadDamage and PowerQuarterDamage as more customizable
PowerDamage and PowerProtection. These new powerups allow free customization of
the damage modification per damage type by inheriting from these classes and
setting specific values. Such derived damage/protection powerups will be considered
as separate powers so that for example a QuadDamage and a DoubleDamage item can be
stacked which would result in 8x damage.
- merged player_t::cheats and player_t::Powers into one variable.
SVN r529 (trunk)
Zip entries.
- Fixed: Some of Doom's weapon obituaries didn't have the $-prefix that indicates a
reference to the string table.
- Fixed: The check for a valid weapon's spawn state for weapon dropping was incorrect.
SVN r523 (trunk)
I got rid of the old tx and ty CVARs because they made the texture scaling
much more complicated than it was actually needed (and besides, they were completely
useless except for testing purposes anyway.)
SVN r522 (trunk)
to specific damage types.
- Changed Dehacked parser to use the DECORATE symbol tables for code pointers
instead of creating its own ones.
- Removed the HandleNoSector hack and changed A_Look so that it uses the sector's
sound target for actors with MF_NOSECTOR regardless of compatibility settings.
- Moved initialization of weapon slots after the actor initialization.
With default weapons exported to DECORATE it can't be done earlier.
- Converted Doom weapons to DECORATE.
- Changed backpack definition so that Doom's backpack is no longer the base
class that implements its functionality. Now there is an abstract base class
all backpack-like items derive from. Also moved the actual definition of Doom's
backpack to DECORATE.
SVN r519 (trunk)
like doors. This flag is on by default for any monster which was the
previous behavior.
- Optimized the DECORATE flag parser so it can more efficiently handle
the deprecated flags. As a side effect of this optimization the deprecated
flags became usable in A_ChangeFlag again.
- Changed LONGMELEERANGE flag into a MeleeThreshold property.
- Changed SHORTMISSILERANGE flag into a MaxTargetRange property.
- Added Thing_Stop action special.
SVN r517 (trunk)
NetDone.
- moved the DIM_MAP define into v_palette.h so that it can be accessed
from outside the status bar code.
- Fixed: The check for non-swimmable water in UpdateWaterLevel checked for
SECF_UNDERWATER instead of SECF_UNDERWATERMASK.
SVN r514 (trunk)
TAutoGrowArray. A map can handle a wide range of key values better than
an array.
- Added a templated associative array class, TMap, that uses Lua's "chained
scatter table with Brent's variation" algorithm. I had considered using
hash_map until I discovered that it's not standard STL, and there are two
major but incompatible implementations of it. So I rolled my own, and Lua
seemed like a good place to go to for an efficient algorithm, since it
makes heavy use of tables.
SVN r513 (trunk)
so that I can create the ACS function Thing_Damage2. It's exactly the same as
Thing_Damage, except the damage type is specified by name. When I did this,
I noticed that it didn't do anything useful for a TID of 0, so I made it
affect the activator in that case.
- Added a new SetActorState ACS function:
int SetActorState (int tid, str statename, optional bool exact);
If tid is 0, it affects the script activator, otherwise it affects all the
matching actors. Statename is the name of the state you want to put the
actor in. The final parameter, exact, specifies whether or not partial
state name matches are accepted. If you don't specify it or set it to
false, if you try to do something like:
SetActorState (0, "Foo.Bar");
And the actor has a Foo state but no Foo.Bar state, it will enter the Foo
state. If you set exact to true:
SetActorState (0, "Foo.Bar", true);
Then the actor must have a Foo.Bar state, or it will not change state at
all, even if it has a Foo state.
The return value for this function is the number of actors that successfully
changed state. Note that you should refrain from using this function to
enter special states such as Death, or unpredictable results could occur.
SVN r505 (trunk)
P_(Aim)LineAttack().
- Added an AttackZOffset to PlayerPawn. This is the offset from the
center of the player at which their attacks are fired and scales
according to their crouched height.
- Changed the version of P_SpawnPlayerMissile() that takes coordinates
to use that location as an offset from the standard attack location
rather than as an explicit attack location.
SVN r498 (trunk)
player's inventory even when they have been used up. If the item also
has an inventory bar icon, it will be drawn darkened when it is
depleted.
SVN r497 (trunk)
- The net start pane is now given focus when it is created, so it can
receive keyboard input.
- Added playback of the "WeaponPickup" sound when a Hexen net game starts.
- Separated the different startup screens into classes for better
modularization (which I should have done in the first place). (Sorry,
have not done it for Linux yet, so that won't compile as-is.)
SVN r496 (trunk)
of scrunching the startup screen up to make room for it.
- Added the red net notches for Hexen's startup screen.
- Added hprintf and status simulation for Heretic's startup screen.
SVN r495 (trunk)
was open, the game was frozen before its initial setup tick until the
console was closed. The most obvious result of this is that your view was
stuck on the floor until the console closed.
- Fixed: Pressing ESC while editing your player name completely cleared the
menus instead of simply canceling the name change.
- Fixed: The status bar still showed the rampage face if you held the fire
button down while frozen.
SVN r493 (trunk)
are left-associative, so you can use them like you would with an ostream
and append to a string in a single expression without any overhead from
allocating temporary strings as would happen if you used the + operator.
In other words, instead of this:
string += "Some string " + "that is assembled" + " in parts";
You can do this and be more efficient while still being just as readable:
string << "Some string " << "that is assembled" << " in parts";
- Changed PCD_PRINTBIND to include the command in its output if it isn't
bound.
- Fixed: ACS_ExecuteWithResultValue could not be used inside a script because
DLevelScript::RunScript() was not reentrant, thanks to having a global stack.
The stack should be local to each instance of RunScript.
- Fixed: rt_draw4cols() could get stuck in rare situations where it thinks it
should be drawing something but doesn't. Since long-term I plan to just
replace all the masked drawing the variants of maskwallscan, I'm not going
to try and find the real cause and fix it there. Instead, it just detects
the situation and bails out when it finds it.
SVN r492 (trunk)
- Added APROP_Friendly actor property for ACS.
- Added a new flag, MF2_DONTREFLECT that prevents missiles from being reflected.
- Fixed: ALoreShot::DoSpecialDamage must check whether the shooter is still
present. If it had been removed before the projectile hits its target
a crash could occur.
- Fixed: GetPlayerInfo was missing breaks and always returned 0 as a result.
- Added Grubber's submission for printing key bindings in ACS.
SVN r491 (trunk)
when a player is going through a screen wipe and act like a pause, so the
game doesn't run several tics afterward to catch up with it.
SVN r485 (trunk)
were running when the teleported, they would still be running afterward
even though they weren't moving anywhere. Normally, P_XYMovement() does
this when they stop due to friction.
- Fixed: AActor::TakeSpecialDamage() completely bypassed the standard rules
for target switching on actors with MF5_NODAMAGE set.
- Changed the return values of the ACS spawn, spawnspot, and spawnspotfacing
commands to be the total count of things spawned, rather than a pretty
much useless reference to the actor spawned at the last map spot.
- Fixed: DLevelScript::DoSpawn() takes a byte angle, but DoSpawnSpotFacing()
passed it a full-length angle.
- Fixed: When MF_SKULLFLY is removed because an actor slams into something,
it was set to a see or spawn state, resetting its tic count and bypassing
the effectiveness of the MF2_DORMANT flag. While I was at it, I decided
dormant skulls shouldn't do slamming damage, either.
- Fixed: P_Thing_Spawn() returned success only if all thing instances were
successfully spawned. As long as at least one thing was spawned, it should
be considered a success.
- Fixed: Flipped single rotation sprites were only flipped every other 22.5
degree interval.
SVN r484 (trunk)
samples, a problem for the alternate sound renderer if it happened to be
playing any sounds at the time, since it would try to keep on playing them.
SVN r483 (trunk)
position when not playing in fullscreen mode.
- Changed the upper-left window positioning that was always used in debug
builds into a command line option (-0), so debug and release builds behave
the same.
SVN r482 (trunk)
in DEarthQuake::StaticGetQuakeIntensity. The reason for this: Quakes were
never supposed to be additive. Many maps, including Hexen's own have placed
quake spots so that they cover a larger area but the areas covered by the
single spots overlap. On such maps the view will shake like crazy and
render the map nearly unplayable.
SVN r480 (trunk)
from the renderer in case the camera changed position or direction since
the last time it was looked through. Otherwise, the renderer will
interpolate from its previous view for one frame when it is switched to.
- Fixed non-POD parameter passing for GCC introduced in the previous commit.
SVN r476 (trunk)
- Added more player water sounds:
*dive - Played when your head goes below water.
*surface - Played when your head goes back above water.
*gasp - Played when you were drowning and get your air back.
If your head surfaces and you were drowning, only *gasp plays, not both.
- Added damage-specific player death sounds, in the same fashion as the
damage-specific player pain sounds. It looks for a sound with a name like
"*death-damagetype" first and then "*death" if the first sound didn't exist.
- Removed the constraint that player sounds must be reserved before they can
be assigned. Hence, the $playerreserve command has been eliminated, because
it is no longer needed and it was never accessible from user wads, so I
don't need to worry about breaking anything by removing it.
SVN r474 (trunk)
.rtext files in the assembly object files. Now I can avoid doing this at
runtime, which means that ZDoom is now UPX-compatible if anyone wants to
pack it.
You will need to do a rebuild or manually delete the old assembly .obj files
for the first build from this revision to succeed, since there are no
changes to the assembly files themselves, and the build process will not be
able to automatically detect that they need to be rebuilt.
SVN r473 (trunk)
when a == 0x80000000, because the result of abs will still be negative as
long as we use signed math.
- Fixed: SafeDivScale31 performed DivScale32 instead.
- Fixed: R_DrawSpanP_ASM had a short jump into a different section.
SVN r472 (trunk)
is unable to synthesize one.
- Converted xlatcc to use lemon during its build process. Now you don't need
bison to rebuild everything anymore.
SVN r470 (trunk)
- Removed the constraint that all $playerreserve SNDINFO commands must come
before the other $player commands.
- Fixed: TArray::Reserve did not construct its newly allocated entries.
- Changed the damage type for drowning from 'Water' to 'Drowning'.
SVN r466 (trunk)
contains a NULL point, so the GetMem() method should fake it by
returning NULL when the string is empty. Reverted p_xlat.cpp to its
old revision.
SVN r465 (trunk)
P_TranslateLinedefs.
- Fixed: ShowErrorPane can be called before ST_NetDone is valid so it has to
check whether it is NULL.
- Fixed: The Megasphere had an incorrect pickup sound.
- Fixed: The new video initialization code could set the screen's Font pointer
to NULL, causing a crash with levels that start in a secret sector.
SVN r464 (trunk)
const char * with a string inside its buffer, it released the buffer
before copying the string.
- Added a new FString constructor that creates the string from a lump.
- Fixed: G_DoReborn() calls G_InitNew() with mapname set to level.mapname.
G_InitNew() then copies it onto level.mapname, which is undefined
behavior (although it does work as we want it to).
- Modified FMemLump to store its data using FString. That class provides
a convenient method of storing reference counted data, so now FMemLump
doesn't need to muck about sneakily using const_casts and possibly
tricking its users into thinking that an old one is still valid after
being assigned to a new one.
- Fixed: The IMGZ, PNG, PCX, and JPEG loaders assumed the files were
large enough for their headers without actually checking.
SVN r463 (trunk)
were applied even when the status bar wasn't drawn. (In other words, even
in situations where a real palette blend wouldn't have happened.)
SVN r462 (trunk)
- Fixed: AddLine() could corrupt memory if the length of the text being
added was longer than the console buffer.
- Fixed: FTexture::GetScaled(Left|Top)Offset returned the Width and Height
instead when the scale values were 0.
- Removed the unnecessary "mov ecx,c" from mscinlines.h:Scale().
SVN r461 (trunk)
DCanvas::DrawTexture() to calculate off the actual bottom of the image
instead of the height, improving precision. Now the scaled status bar is
flush with the bottom of the screen at 1280x1024, for instance.
SVN r458 (trunk)
Normally Direct3D sets the FPU to single precision. We don't want that,
since it can mean going out of sync with machines that are using the
standard precision. Additionally, the nodebuilder requires the extra
precision that single precision lacks.
SVN r455 (trunk)
3 new code pointers without general use it was necessary to handle
GiveDefaultInventory consistently for all players without the need to
subclass this function.
- Added a Player.RunHealth property to expose the StrifePlayer's behavior of
not being able to run when its health is below 10.
- Changed APlayerPawn::GiveDefaultInventory so that it always adds a HexenArmor
and a BasicArmor item to the inventory. If these items are not the first ones
added to the inventory anything else that might absorb damage is not guaranteed
to work consistently because their function depends on the order in the inventory.
- Changed handling of APowerup's DoEffect so that it is called from the owner's
Tick function, not the item's. This is so that the order of execution is
determined by the order in the inventory. When done in the item's Tick function
order depends on the global thinker table which can cause problems with the
order in which conflicting powerups apply their effect. Now it is guaranteed
that the item that was added to the inventory first applies its effect last.
- Fixed: Added checks for Speed==0 to A_Tracer and A_Tracer2 because this could
cause a divide by zero.
- Fixed: P_MoveThing must also set the moved actor's previous position to
prevent interpolation of the move.
- Fixed: APowerInvisibility and its subclasses need to constantly update
the owner's translucency information in case of interference between different
subclasses. Also changed Hexen's Cleric's invulnerability mode to disable
the translucency effect if an invisibility powerup is active.
SVN r448 (trunk)
- Fixed: The PlayerSpeedTrail must copy the player's scaling information
(from Skulltag)
- Added r_maxparticles CVAR from Skulltag.
- Changed PCX loader so that it always loads the last 768 bytes of 8 bit graphics as a palette
SVN r447 (trunk)
MAPINFO keyword 'bordertexture' and are settable per map.
- Fixed: When used in DECORATE A_Explode must use A_ExplodeParms.
- Added custom label support to A_Chase. To enable resurrection from the
customizable version I also moved all A_VileChase stuff into p_enemy.cpp.
SVN r437 (trunk)
- Fixed: The screen wipe must be disabled for Heretic's underwater ending. If
not, the wipe will try to mix pictures with different palettes.
SVN r435 (trunk)
both named item.
- Switched ddraw.dll to be delay loaded. With D3D9 now being the default
display code, this avoids wasting time loading DDraw if it isn't needed.
- Fixed: The Win32 I_FatalError() did not set alreadyThrown, so it could get
stuck in an endless fatal error loop.
SVN r433 (trunk)
- Added more resolution options when playing windowed under SDL.
- Changed SDL mouse handling to be basically identical to the (non-DirectInput)
Win32 code. The mouse is polled periodically and constantly warped to the
center of the window. Despite what the SDL docs specify, SDL_WM_GrabInput()
is apparently no longer a reliable means of obtaining continuous relative
mouse motion events.
- Fixed: The non-Windows implementation of I_FindClose() did not check for -1
handles.
SVN r432 (trunk)
wadsrc/Makefile, nor did it use the makefile for cleaning.
- Added ST_NetMessage() for mixing miscellaneous messages with the network
startup meter, since they get mixed in the same space on the Linux terminal
and must be handled properly to avoid looking bad.
SVN r429 (trunk)
- Renamed the new armor properties to use the same names as Skulltag to avoid
confusion. They still don't need a separate base class as in Skulltag though.
- Added Skulltag-type armor bonus that increases the max amount that can be given
by other armor items.
- Separated all armor related code from a_pickups.cpp into a_armor.cpp.
SVN r427 (trunk)
because S_GetSoundPlayingInfo cannot properly resolve player and random sounds.
- Fixed: S_IsActorPlayingSomething has to resolve aliases and player sounds.
- Took S_ParseSndSeq call out of S_Init. This doesn't work when parsing SNDINFO
in D_DoomMain.
- Moved SNDINFO reading back to its old place after MAPINFO. This is necessary
for Hexen's music definitions.
SVN r425 (trunk)