mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-14 00:21:34 +00:00
19dad144e1
use it now. - Fixed sc_man_scanner.re for negative numbers in C mode. SVN r201 (trunk)
13335 lines
694 KiB
Text
13335 lines
694 KiB
Text
June 20, 2006
|
||
- Added grubber's thingdef_exp.cpp. I might not use it later, but I can still
|
||
use it now.
|
||
- Unlimited the monster pain sounds in Hexen after I played as the Cleric a
|
||
while and killed several centaurs with the flechette.
|
||
- Fixed: Moving to an old level in a hub caused the old player's inventory to
|
||
spawn owned by the current player (but still hanging off the old player), so
|
||
the game would hang when trying to delete it.
|
||
- Modified re2c so that it doesn't add a date to the file it generates. Thus,
|
||
if it regenerates a file during a full rebuild, SVN won't see it as a change.
|
||
Also updated it to 0.10.5.
|
||
- Fixed: SC_GetString() did not properly terminate sc_String when the last
|
||
token in the file had no white space after it. Since I could not actually
|
||
find the problem (it works fine in debug mode and I saw no logic errors),
|
||
I decided to take this opportunity to reimplement it using an re2c-generated
|
||
scanner. Now it's 1.6x faster than before and correctness is easier to
|
||
verify.
|
||
|
||
June 19, 2006
|
||
- Fixed: FMODSoundRenderer::Shutdown() also needs to reset NumChannels.
|
||
- Added back the Manifest to zdoom.rc for non-VC8 Windows compilers.
|
||
- Fixed MinGW compilation again. Now it uses the same method as Makefile.linux
|
||
to find all the source files so that it doesn't need to be manually updated
|
||
each time source files are added or removed.
|
||
- Added the SVN revision number to the version string. A new tool is used to
|
||
obtain this information from the svnversion command and write it into a
|
||
header file. If you don't have the svn command line tools installed or didn't
|
||
check it out from the repository, you can still build. I added some rules for
|
||
this to Makefile.linux, and I assume they work because they do for
|
||
Makefile.mingw.
|
||
- Fixed: MIDISong2 did not delete MusHeader in its destructor.
|
||
|
||
June 19, 2006 (Changes by Graf Zahl)
|
||
- Removed the unused sfx_ variables for the chainsaw sounds.
|
||
- Fixed map name checks in idclev, hxvisit, for +map and the titlemap.
|
||
- Changed handling of Zips so that the patches/, graphics/, sounds/ and
|
||
music/ subdirectories no longer are placed in the global namespace. Instead
|
||
new namespaces are defined. These namespaces aren't merged, however and
|
||
searching in them either returns a lump inside it or one from the global
|
||
namespace when it doesn't come from a Zip file. Proper order of files is
|
||
still observed though. As a result proper use of the directories inside Zips
|
||
is strictly enforced now so that for example anything used as a patch must be
|
||
in the patches/ directory and won't be found anywhere else.
|
||
|
||
June 18, 2006 (Changes by Graf Zahl)
|
||
- Added another set of ACS inventory functions which take a tid for the actor
|
||
and aren't limited to the script's activator.
|
||
- Added GetSectorLightLevel(tag), GetActorCeilingZ(tid) and
|
||
SetActorPosition(tid, x, y, z, fog) ACS functions.
|
||
- Fixed: First initialization of camera textures should not mark the rendered
|
||
lines as mapped.
|
||
|
||
June 17, 2006
|
||
- Finally implemented code to keep some or all of your inventory intact when
|
||
respawning in coop. Now the new inventory code should finally be complete. :-)
|
||
- Fixed: PROP_Inventory_PickupMessage was improperly defined for non-VC++
|
||
compilation.
|
||
|
||
June 17, 2006 (Changes by Graf Zahl)
|
||
- Converted a_doomhealth.cpp to DECORATE.
|
||
- Added a PickupMessage property to the internal actor parser, replaced
|
||
most of the virtual PickupMessages with it and placed the code that
|
||
reads the metadata into AInventory::PickupMessage. Now the
|
||
PickupMessage method is truly virtual and I can do:
|
||
Added a Health.LowMessage property to define double message items like
|
||
Doom's medikit in DECORATE.
|
||
- Since defining Mana3 as an ammo type and then overriding the TryPickup
|
||
method means that this item defeats all ammo checks in the game it might
|
||
as well be defined as a CustomInventory item. At least this fixes the
|
||
amount given in easy and very hard skills.
|
||
- Converted all ammo items to DECORATE.
|
||
- Changed internal property setting of ammo types and sister weapons
|
||
to use fuglyname as for DECORATE definitions. This allows to export
|
||
the ammo definitions into DECORATE definitions without doing it for
|
||
the weapons themselves.
|
||
- Replaced obituary methods with actor properties.
|
||
- Fixed: The secret map check didn't work for maps inside Zips.
|
||
|
||
June 14, 2006
|
||
- Fixed loading of Build/Blood maps.
|
||
- FWadLump::Read() now handles Blood decryption directly.
|
||
- Fixed: A fatal error thrown during map loading after the sectors have been
|
||
counted but before they are allocated crashed in PointerSubstitution().
|
||
- Removed my "backwards compatibility fix" for APROP_Speed. It turns out that
|
||
in all the public versions where monster speed is not fixed point, you
|
||
couldn't modify the monster's speed due to a bug in P_Move() anyway. So
|
||
there's nothing to be backward compatible with.
|
||
|
||
June 14, 2006 (Changes by Graf Zahl)
|
||
- Fixed: Saving on maps that don't contain a MAPINFO definition didn't work.
|
||
- Fixed: The Zip loader loaded all WADs inside a Zip into the lump directory.
|
||
This is only supposed to be done for WADs in the root directory.
|
||
|
||
June 12-14, 2006 (Changes by Graf Zahl)
|
||
- Complete restructuring of the map loading code. Previously the only way
|
||
to put maps into Zips was to load them as embedded WADs which caused
|
||
some problems, most importantly that the map's file name was irrelevant
|
||
and the internal map label was used instead. With the new code there
|
||
is now a properly defined way to add maps to Zips:
|
||
* Maps are placed in a subdirectory called 'maps'.
|
||
* Maps are stored as WADs that contain all map related lumps.
|
||
* The first lump in the map's WAD directory must be the map label.
|
||
* All lumps not belonging to the first map are ignored.
|
||
* The map's file name determines the name the map is identified with.
|
||
For maps stored this way the internal map label is ignored so with this
|
||
method renaming maps is as easy as renaming a file and it is no longer
|
||
necessary to manipulate the map label.
|
||
With the new code it is also possible to load external maps without
|
||
adding them to the WAD list. Type 'open mapfile.wad' in the console
|
||
to start such a map.
|
||
The new code also performs stricter lump name checks to prevent accidental
|
||
loading of non-map data.
|
||
|
||
June 13, 2006
|
||
- Moved level scroller information out of G_InitLevelLocals() and into
|
||
P_FreeLevelData() so that it also gets performed at shutdown.
|
||
- Fixed: In the past, ZDoom worked like Doom and used integral values for
|
||
monster speeds. Now it uses fixed point so that an actor's speed property
|
||
can always be considered is always fixed point. So DoSetActorProperty()
|
||
should scale very slow speeds, just like dehacked's PatchThing() has done
|
||
for some time now.
|
||
|
||
June 11, 2006 (Changes by Graf Zahl)
|
||
- Changed UpgradeStamina to use AInventory's Amount and MaxAmount to
|
||
control the amount of upgrade and the maximum that can be reached.
|
||
|
||
June 10, 2006 (Changes by Graf Zahl)
|
||
- Fixed: The skin loader assumed that all skin textures are in Doom patch
|
||
format. Now it calls FTexture::CreateTexture to do proper checks.
|
||
- Removed the PickupSound method from FakeInventory and changed it so that
|
||
it uses AInventory::PickupSound to store its custom pickup sound.
|
||
- Removed the PickupMessage method from FakeInventory. This can be handled
|
||
by the standard pickup message code now that it uses the meta data for the
|
||
message.
|
||
- Fixed: The maximum indices for StrifeTypes were inconsistent. Now the
|
||
allowed range is 0-1000 in all situations.
|
||
- Fixed: Setting a local SNDINFO for a map deleted all skin based sounds.
|
||
- Added a crouchsprite property to the skin info.
|
||
- Fixed: Crouching sprites must be checked each frame, not just each tic.
|
||
- Added an srand call to D_DoomMain in order to randomize the values returned
|
||
by rand which is being used to shuffle the playlist.
|
||
|
||
June 10, 2006
|
||
- Fixed: Information added with addkeysection and addmenukey was never freed.
|
||
- Fixed: A classic decorate FakeInventory's PickupText was never freed.
|
||
- Fixed: Colored lights were never freed.
|
||
- Fixed: When a dehacked patch was applied, the dehacked StateMap was never
|
||
freed.
|
||
- Removed termdone checks around atterm(S_ClearSoundData) and
|
||
atterm(S_Shutdown) because atterm() already checks for duplicates.
|
||
- Fixed: S_ClearSoundData() should unload all sounds before it clears S_sfx.
|
||
- Fixed: AltSoundRenderer::LoadSound() didn't check if the sound had already
|
||
been loaded and lost the old sound data if it had been.
|
||
- Fixed: FinishDehPatch() needlessly duplicated the new DehackedPickup's name.
|
||
- Fixed: PatchStrings() allocated a private string and never freed it.
|
||
|
||
June 8, 2006 (Changes by Graf Zahl)
|
||
- Changed music name handling in MAPINFO so that music can be specified by
|
||
full path of a file in a Zip.
|
||
- Fixed: intermusic in MAPINFO was limited to WAD lumps and couldn't handle
|
||
external data.
|
||
|
||
June 8, 2006
|
||
- Fixed: Trying to play a 0-length song from a wad inside a zip caused a crash.
|
||
|
||
June 7, 2006 (Changes by Graf Zahl)
|
||
- Fixed: A_CustomPunch didn't use the range parameter correctly.
|
||
|
||
June 6, 2006
|
||
- Integrated recent ZDBSP improvements into the internal nodebuilder:
|
||
- ClassifyLine now chooses either SSE2 or regular x87 math depending on whether
|
||
or not SSE2 is available at runtime. Since most of the time is spent in
|
||
ClassifyLine, using SSE2 in just this one function helps the most.
|
||
- Nodebuilding is a little faster if we inline PointOnSide.
|
||
- Changed FEventTree into a regular binary tree, since there just aren't enough
|
||
nodes inserted into it to make a red-black tree worthwhile.
|
||
- Added more checks at the start of ClassifyLine so that it has a better chance
|
||
of avoiding the more complicated checking, and it seems to have paid off with
|
||
a reasonably modest performance boost.
|
||
- Added a "vertex map" for ZDBSP's vertex selection. (Think BLOCKMAP for
|
||
vertices instead of lines.) On large maps, this can result in a very
|
||
significant speed up. (In one particular map, ZDBSP had previously
|
||
spent 40% of its time just scanning through all the vertices in the
|
||
map. Now the time it spends finding vertices is immeasurable.) On small maps,
|
||
this won't make much of a difference, because the number of vertices to search
|
||
was so small to begin with.
|
||
|
||
June 3, 2006 (Changes by Graf Zahl)
|
||
- Added a StartConversation special that allows automatic activation of Strife
|
||
dialogs.
|
||
- Added Thing_Raise special that allows Arch-Vile like resurrections from scripts
|
||
or DECORATE states.
|
||
- Added a RadiusDamageFactor property for actors. This replaces the hard coded
|
||
factor of 0.25 for Hexen's players.
|
||
- Added new SpawnProjectile function to ACS. It's the same as Thing_Projectile2
|
||
but the projectile is specified by name, not spawn ID.
|
||
- Added MAPINFO option to set the compatibility flags. If this is done these
|
||
explicit settings will take precedence over the compatflags CVAR.
|
||
|
||
May 31, 2006
|
||
- Merged in recent ZDBSP fixes:
|
||
- Added code to explicitly handle outputting overlapping segs when
|
||
building GL nodes with ZDBSP, removing the check that discarded
|
||
them early on.
|
||
- AddIntersection() should convert to doubles before subtracting the vertex
|
||
from the node, not after, to avoid integer overflow. (See cah.wad, MAP12
|
||
and MAP13.) A simpler dot product will also suffice for distance calculation.
|
||
- Splitters that come too close to a vertex should be avoided. (See cata.wad.)
|
||
- Red-Black Tree implementation was broken and colored every node red.
|
||
- Moved most of the code for outputting degenerate GL subsectors into another
|
||
function.
|
||
|
||
May 31, 2006 (Changes by Graf Zahl)
|
||
- Fixed: Ammo items dropped by monsters that have a default amount of 1 didn't
|
||
contain any ammo at all.
|
||
- Fixed: PClass::FreeIndices was declared as TArray<size_t> in the header but
|
||
as TArray<unsigned int> in the cpp file.
|
||
|
||
May 28, 2006 (Changes by Graf Zahl)
|
||
- Fixed: PowerFrighteners must check Owner for NULL in InitEffect and EndEffect.
|
||
|
||
May 28, 2006
|
||
- Fixed: When building GL nodes for Deathkings MAP42, one polyobject had one
|
||
of its segs thrown away, so the map could not start. This was because the
|
||
nodebuilder assumed all subsectors would be 2D and could not handle the
|
||
case where a degenerate 1D subsector is created. In this case, that happens
|
||
because that map has three polyobjects in the middle of the void, so the only
|
||
way to assign them to a subsector is to use a 1D subsector.
|
||
|
||
May 28, 2006 (Changes by Graf Zahl)
|
||
- Fixed: Monsters couldn't hurt other monsters of the same species if they
|
||
were supposed to hate them.
|
||
- Since I was editing the file anyway I added checks for Heretic's and Strife's
|
||
damaging floor types to DCajunMaster::IsDangerous.
|
||
- Added a NULL pointer check to DCajunMaster::TurnToAng because a crash log
|
||
indicated that this can happen.
|
||
- Fixed: Strife's energy pod contains 20 units when dropped by monsters.
|
||
To achieve this I added an Ammo.DropAmount property because there are
|
||
no other means to control this from inside a conversation script.
|
||
|
||
May 27, 2006 (Changes by Graf Zahl)
|
||
- Fixed: FString::FormatHelper must not alter the null string.
|
||
- Fixed: FString::FormatHelper should use ReallocBuffer instead of directly
|
||
calling Realloc. This caused crashes with the ACS print function.
|
||
- Fixed: The dummy player spawned in G_FinishTravel must not start any ENTER
|
||
scripts.
|
||
|
||
May 26, 2006
|
||
- Changed makewad's zip routines so that it simply stores files that cannot be
|
||
compressed smaller instead of using deflate anyway. Saves 133 bytes currently.
|
||
|
||
May 26, 2006 (Changes by Graf Zahl)
|
||
- Fixed: CallStateChain relied on CallingState being preserved across the
|
||
call of the state's action function. This is not the case when a missile
|
||
is being spawned and exploded right away.
|
||
|
||
May 25, 2006
|
||
- Fixed: The C code in AltSoundRenderer::CopyAndClip() did not shift the sample
|
||
data enough (2 bits instead of 8), so it was super loud and aliased.
|
||
- Fixes for GCC 4.1: Several type-punned pointer warnings, but more
|
||
importantly, declaring a friend function inside a class body is no longer
|
||
enough to declare that function globally; you must declare it again outside
|
||
the class.
|
||
- Upgraded FArchive::SerializePointer so that it can store 32-bit indices.
|
||
- ACS printing pcodes now build their string in an FSttring instead of a fixed
|
||
sized buffer on the stack.
|
||
|
||
May 24, 2006
|
||
- Modified ccdv-win32 to show "Generating X" messages when running lemon and
|
||
re2c instead of "Linking X".
|
||
- Updated lemon and re2c to the latest versions and ported dehsupp to use them
|
||
for code generation. (Xlatcc is next.)
|
||
- Added function level linking for Makefile.mingw.
|
||
- Disabled RTTI generation and enabled function-level linking in the VC 2005
|
||
zdoom project.
|
||
- Fixed: TAG_MORE now uses __va_copy to copy the taglist when building with
|
||
GCC, so that should let it build under x86-64 and any other GCC targets.
|
||
|
||
May 24, 2006 (Changes by Graf Zahl)
|
||
- Fixed: A_SpawnItem performed an integer multiplication with fixed point
|
||
values to calculate the spawn position.
|
||
- Fixed: A_SpawnItem tried to set the spawned actor's angle before checking
|
||
the validity of the returned pointer.
|
||
|
||
May 23, 2006
|
||
- Added missing linker dependencies for Visual C++ 2005 Express Edition and
|
||
fixed building of the assembly files when the source is located in a path
|
||
with spaces.
|
||
|
||
May 22, 2006
|
||
- Fixed: The new sound pausing on menu open interrupted Strife conversations.
|
||
- Did some very preliminary support for x64 compiling.
|
||
- Now I see why makewad is using the __fastcall calling convention by default:
|
||
Because the release zlib is built with it as well.
|
||
- Fixed: Conversion from 'const char *' to 'char *' in DEM_SAVEGAME case in
|
||
Net_DoCommand().
|
||
- Updated the project files for Visual C++ 2005.
|
||
- Fixed: The new Thing_ChangeTID check would infinite loop if an actor
|
||
scheduled for destruction was encountered.
|
||
|
||
May 22, 2006 (Changes by Graf Zahl)
|
||
- Fixed: Thing_ChangeTid must check whether the actor whose tid is about to
|
||
be changed is scheduled for destruction.
|
||
- Fixed: G_FinishTravel added the player to the hash chain twice.
|
||
- Fixed: The animations for Doom's E3 intermission used incorrect patch names.
|
||
- Added a check for MF_NOLIFTDROP to PIT_CeilingRaise because the overlapping
|
||
bridges in 007LTSD got moved by this function.
|
||
|
||
May 21, 2006
|
||
- Fixed GCC 4 warnings in FNodeBuilder::CreateSubsectorsForReal().
|
||
- Changed f_finale.cpp/atkstates[] into a static variable, since its
|
||
anonymous type prevents it from being accessed from other files anyway.
|
||
- Fixed: The behavior of the eventtail advancement in d_net.cpp/CheckAbort()
|
||
was compiler-dependant.
|
||
- Fixed warnings GCC 4 threw up while compiling re2c and lemon.
|
||
- Removed __cdecl from makewad.c again. This is already defined as a builtin
|
||
for MinGW, and redefining it produces a warning. (Why is main explicitly
|
||
declared __cdecl anyway?)
|
||
- Fixed building ccdv-win32 with GCC 4. GCC 4 creates a memcpy call, which
|
||
won't work because it doesn't get linked with the standard C library.
|
||
|
||
May 20, 2006
|
||
- Fixed default.cbd and Makefile.mingw for current code state.
|
||
- New: Pausing the game (through any means, not just the pause key) now pauses
|
||
sound effects as well as music. "PauseMusicInMenus" has been added as a
|
||
MAPINFO flag to also pause the music when a menu or the console are open.
|
||
|
||
May 20, 2006 (Changes by Graf Zahl)
|
||
- Fixed: The automap code had the check for rotation reversed.
|
||
- Changed type PClass::FreeIndices to TArray<unsigned int> because that's
|
||
the type of the indices.
|
||
- Fixed: makewad.c needs __cdecl for non-Windows builds.
|
||
- Fixed: FinishThingdef didn't check whether the WeaponClass pointer in
|
||
AWeaponPiece was a valid name.
|
||
|
||
May 19, 2006
|
||
- Fixed: FloorAndCeiling_Raise/Lower did not work with slopes because they
|
||
used ZatPointDist instead of PointToDist to calculate the destination
|
||
distance for the plane equation.
|
||
- Fixed: Sky scroll positions could "jump" once they wrapped past position
|
||
32767. An fmod now keeps them within range of the sky textures' real widths.
|
||
|
||
May 19, 2006 (Changes by Graf Zahl)
|
||
- Increased the StrifeTypes array to 999 entries so that custom WADs have
|
||
more flexibility when defining dialogs.
|
||
|
||
May 18, 2006
|
||
- Added a check against rw_havelow in the "sky hack" part of R_NewWall().
|
||
This prevents the front ceiling from being moved up if there has been no
|
||
texture defined to draw on the wall. This makes various parts of The
|
||
Darkest Hour render properly again while still allowing the crosses in
|
||
heroes2.wad and lamasery.wad to render correctly.
|
||
- Added a NULL sector check to P_CheckFakeFloorTrigger() because there was
|
||
a crash report indicating that an actor being pushed up by a moving floor
|
||
had a NULL sector. Since this field should be valid for every actor, the
|
||
debug build gets an assert here, and the release build just returns without
|
||
doing anything.
|
||
- Fixed: Camera textures were not rendered properly when the underlying
|
||
canvas's pitch and width were different (which, really, only happens if
|
||
you use ridiculously large camera textures).
|
||
- Fixed: FCanvasTextureInfo's were never freed.
|
||
- Fixed: MAPINFO special action structures were not freed.
|
||
- Fixed: FSingleLumpFont::LoadFON2() never freed its widths2 array.
|
||
|
||
May 17, 2006 (Changes by Graf Zahl)
|
||
- Fixed: In case the path to strife1.wad didn't contain any '/' an
|
||
incorrect path was created for voices.wad.
|
||
- Fixed: The code building the path for Strife's voices.wad called the
|
||
wrong FString constructor.
|
||
- Fixed: LS_Thing_SetGoal set MF5_CHASEGOAL in flags, not flags5.
|
||
|
||
May 17, 2006
|
||
- Fixed: M_NotifyNewSave() needlessly created a copy of the filename.
|
||
- Fixed: Any touching_sectorlists for actors unlinked in G_StartTravel() were
|
||
lost forever.
|
||
- Fixed: DLightningThinker::Serialize() did not delete the old
|
||
LightningLightLevels array when loading from an archive.
|
||
- Fixed: Although I moved the correct polyobject freeing code into
|
||
P_FreeLevelData(), I left the old wrong code there too, which just deleted
|
||
the array without deleting anything hanging off of it.
|
||
- Texture animation improvements:
|
||
* Animations are now millisecond-accurate, so delays in ANIMDEFS can have
|
||
fractional parts.
|
||
* Cleaned up the animation code and moved it into r_anim.cpp.
|
||
* Blood's oscillating texture animations are now available for use by actual
|
||
supported games by adding the word "oscillate" after a "range" definition
|
||
in ANIMDEFS.
|
||
* Not exactly texture animation, but it's handled in the same function as
|
||
texture animations: Scrolling skies also have millisecond precision.
|
||
|
||
May 16, 2006
|
||
- Implemented Quasar's suggestion to use line flag 2048 as a "reserved" flag
|
||
that, if set, clears all the non-original-Doom flags on a line. This is
|
||
only for Doom format maps when playing Doom.
|
||
- Added support for automatically loading ACS objects (even for Doom-format
|
||
maps). To use it, compile the ACS files as ordinary libraries placed
|
||
between A_START/A_END markers. Then outside the markers, create a lump
|
||
called LOADACS. This is just a plain text lump that lists all the libraries
|
||
you want to autoload with every map. You can do this with as many libraries
|
||
as you want, and LOADACS lumps are also cummulative.
|
||
- Fixed: ApplyActorDefault() must ensure that dataint is non-negative before
|
||
calculating a non-NULL state. When compiling with Visual C++, states are
|
||
stored in the defaults list as byte values, but when compiling with GCC,
|
||
they are passed as 32-bit arguments to the function directly. So in VC++,
|
||
using ~0 to specify a NULL state appears as 255, but in GCC, it appears as
|
||
-1.
|
||
|
||
May 16, 2006 (Changes by Graf Zahl)
|
||
- Added a missing NULL pointer check to APlayerPawn::Tick.
|
||
- Fixed: The falling scream should not be played when the player is under
|
||
water.
|
||
|
||
May 15, 2006
|
||
- Fixed: CopyPlayer() in p_saveg.cpp should use normal assignment, not
|
||
memcpy to copy the player structures.
|
||
- Fixed compilation with MinGW again and removed most of the new warnings.
|
||
- Changed the memory management for FString. Instead of using a garbage
|
||
collected heap, it now uses normal heap calls and reference counting to
|
||
implement lazy copying. You may now use bitwise operators to move
|
||
(but not copy!) FStrings around in memory. This means that the
|
||
CopyForTArray template function is gone, since TArrays can now freely
|
||
move their contents around without bothering with their specifics.
|
||
|
||
There is one important caveat, however. It is not acceptable to blindly 0
|
||
an FString's contents. This necessitated the creation of a proper
|
||
constructor for player_s so that it can be reset without using memset. I
|
||
did a quick scan of all memsets in the source and didn't see anything else
|
||
with a similar problem, but it's possible I missed something.
|
||
- Fixed: Build tiles were never deallocated.
|
||
- Fixed: Using Build's palette.dat only got half the palette right.
|
||
|
||
May 14, 2006 (Changes by Graf Zahl)
|
||
- Added a show_obituaries option to disable obituaries without disabling
|
||
other more important message types which have lower priority for some
|
||
reason.
|
||
- Added a menu option for show_messages after accidentally switching it
|
||
off far too often and wondering why no messages appear.
|
||
- Added crouching DoomPlayer sprites submitted by Enjay.
|
||
- Fixed DF_NO_CROUCH was not checked.
|
||
- Fixed: The intermission script parser had some of its cases in the
|
||
keyword parser incorrectly sorted.
|
||
- Fixed: atterm was still defined to take a STACK_ARGS function argument.
|
||
- Added an AltFlash state for weapons.
|
||
- Turned FloatSpeed into an actor property and changed the value to 5
|
||
for all floating Strife actors, as a comment in the source indicated.
|
||
- Added GZDoom's code for Vavoom slope things because I wanted to test
|
||
something with a map from Silent Steel.
|
||
- Added nocrouch and allowcrouch MAPINFO commands and a DF_NO_CROUCH
|
||
dmflag.
|
||
- Added GZDoom's crouching code after cleaning it up so that adding
|
||
crouching sprites will be easier.
|
||
|
||
May 13, 2006 (Changes by Graf Zahl)
|
||
- Fixed: P_StartScript was missing a NULL pointer check for the error
|
||
message. When trying to puke a script outside a map it crashed.
|
||
- Fixed: The random number generator for large numbers must mask out the
|
||
sign bit before performing a modulo.
|
||
- Now that the conversation states are pointers there is no need to make
|
||
AActor::ConversationAnimation virtual. No class overrides this method
|
||
anymore.
|
||
- Replaced AMacil1::TakeSpecialDamage with MF5_NODAMAGE.
|
||
- Fixed: AMacil2::TakeSpecialDamage and AOracle::TakeSpecialDamage didn't
|
||
check whether inflictor was NULL and crashed when used with 'kill monsters'.
|
||
- Fixed: Some Strife decorations didn't loop their animation
|
||
- Changed: The decision whether blood splatter sprites are spawned is no
|
||
longer determined by game. Instead there's a new flag, MF5_BLOODSPLATTER
|
||
which is deciding what to do. To keep backwards compatibility this flag
|
||
is unset for projectiles in Doom and Strife and set for them in Heretic
|
||
and Hexen. The same applies to DECORATE but of course the flag can be
|
||
manipulated here.
|
||
- BLODxx sprites are now globally renamed to BLUDxx when not playing Doom.
|
||
This allows using the same states in every game, including the
|
||
Raven-specific blood actors.
|
||
- Gave the bullet puff and the axe blood masses of 5 so that the make small
|
||
splashes.
|
||
- Added A_Light(value) code pointer for DECORATE to generalize the weapon
|
||
light effect.
|
||
- Added 'noskillmenu' option to MAPINFO episode definitions. This is for
|
||
WADs that want to implement a skill selection level.
|
||
- Added APROP_ChaseGoal and APROP_Frightened actor properties for ACS.
|
||
- Added MF5_CHASEGOAL flag that makes monsters to go after their goal even
|
||
if they have a valid target.
|
||
- Fixed some issues with the changes to P_NewChaseDir I made to include
|
||
MBF's dropoff logic.
|
||
- Added a PowerFrightener powerup class. It seemed like such a waste to
|
||
have this cool feature but no means to use it in a decent fashion.
|
||
- Fixed: S_Init and S_ParseSndInfo should call atterm only once but not
|
||
each time they are called.
|
||
|
||
May 11, 2006
|
||
- Merged a lot of these static destructor-only structs into regular
|
||
functions added to the exit chain with atterm so that they can be called
|
||
in a deterministic order and not whatever order the linker decides to put
|
||
them in.
|
||
- Fixed: DCajunMaster did not free its getspawned.
|
||
- Fixed: P_FreeLevelData() did not free ACS scripts.
|
||
- Fixed: Level snapshots were not freed at exit.
|
||
- Fixed: The save/load menu list was not freed at exit.
|
||
- Fixed: FCompressedMemFile needs a destructor to free the m_ImplodedBuffer.
|
||
- Fixed: G_DoLoadGame() did not free the engine string.
|
||
- Fixed: M_ReadSaveStrings() did not free the engine string.
|
||
- Fixed: Processing DEM_SAVEGAME did not free the pathname string.
|
||
- Added a check for truncated flats to FFlatTexture::MakeTexture() because
|
||
Heretic's F_SKY1 is only four bytes long.
|
||
- Added a dump of the offending state to the "Cannot find state..." diagnostic.
|
||
- Fixed: FCompressedFile did not initialize m_Mode in its default constructor.
|
||
- Fixed: Heretic and Hexen status bars did not initialize ArtiRefresh.
|
||
- Fixed: PNGHandle destructor should use delete[] to free TextChunks.
|
||
|
||
May 11, 2006 (Changes by Graf Zahl)
|
||
- Converted the stealth monsters to DECORATE.
|
||
- Added string replacement option to obituary strings.
|
||
- Changed lock and pickup message handling so that it is either a real
|
||
string or a LANGUAGE identifier. The only reason I did the mixed format
|
||
in the first place were Hexen's lock messages but they have been
|
||
replaced by unique strings in the mean time so the feature isn't needed
|
||
any more.
|
||
- Added a flags parameter to TranslucentLine.
|
||
- Extended the second arg of Line_SetIdentification to set not only
|
||
ML_ZONEBOUNDARY but all 8 bits of the third byte in the flag word.
|
||
This allows a relatively simple means of setting all the new flags
|
||
directly.
|
||
- Moved ML_ZONEBOUNDARY to doomdata.h so that it is in the same place as the
|
||
other line flags.
|
||
- Fixed: Strife's teleport swirl didn't loop its animation.
|
||
- Fixed: Strife's rat is not supposed to be shootable.
|
||
- Fixed: Strife's MiniMissile pickup amount was still incorrect.
|
||
- Moved Strife's random dialogs into the string table. Now it should also be
|
||
possible to define dialogs for other actors as well.
|
||
|
||
May 10, 2006
|
||
- Fixed: When revisiting a map in a hub, the player could spawn at the wrong
|
||
height if the floor had moved while they were there before. This was because
|
||
the player was spawned on the original copy of the map before the changes to
|
||
it were dearchived, so they didn't know about the new floor height.
|
||
- Fixed: Calling BaseFileSearch() and letting it fill in the file's extension
|
||
didn't work because the space for the path was deallocated before it
|
||
returned.
|
||
- Guess we're not leak-free yet. Try travelling around in a hub and see that
|
||
it leaks. I don't have time to track it down right now.
|
||
- Yay! We now seem to be free of memory leaks! The next step will be to
|
||
merge a lot of these static destructor-only structs into regular
|
||
functions added to the exit chain with atterm so that they can be called
|
||
in a deterministic order and not whatever order the linker decides to put
|
||
them in. (Interestingly, the amount of memory used when repeatedly
|
||
executing the same map command at the console varies up and down, but it
|
||
now stays relatively stable rather than increasing unbounded.)
|
||
- Fixed: The list of resolutions in the video modes menu was not freed
|
||
at exit.
|
||
- Fixed: mus_playing.name was not freed at exit.
|
||
- Fixed: SN_StopAllSequences() should be called at the start of
|
||
P_FreeLevelData(), not just before the call to P_SetupLevel() in
|
||
G_DoLoadLevel(), so it can run even at exit. And C_FullConsole() can
|
||
call P_FreeLevelData() to free more memory too.
|
||
- Fixed: StatusBar was not freed at exit.
|
||
- Fixed: spritesorter was not freed at exit.
|
||
- Fixed: Bad things happened if FString's data pool was destroyed before
|
||
all C_RemoveTabCommand() calls were made.
|
||
- Added an overload for FArchive << FString.
|
||
- Fixed: The players' log text was not freed at exit.
|
||
- Fixed: Bot information was not freed at exit.
|
||
- Fixed: doomcom was not freed at exit. But since it's always created,
|
||
there's no reason why it needs to be allocated from the heap. My guess
|
||
is that in the DOS days, the external packet driver was responsible for
|
||
allocating doomcom and passed its location with the -net parameter.
|
||
- Fixed: FBlockNodes were not freed at exit.
|
||
- Fixed: Openings were not freed at exit.
|
||
- Fixed: Drawsegs were not freed at exit.
|
||
- Fixed: Vissprites were not freed at exit.
|
||
- Fixed: Console command history was not freed at exit.
|
||
- Fixed: Visplanes were not freed at exit.
|
||
- Fixed: Call P_FreeLevelData() at exit.
|
||
- Fixed: Channel, SoundCurve, and PlayList in s_sound.cpp were not freed at
|
||
exit.
|
||
- Fixed: Sound sequences were not freed at exit.
|
||
- Fixed: DSeqNode::Serialize() did not resize the m_SequenceChoices array
|
||
when loading.
|
||
- Fixed mvlineasm1 and mvlineasm4 so that they can be used with textures
|
||
taller than 256 pixels. There was a very slight performance hit for this,
|
||
but I was able to tweak mvlineasm4 to make it approximately as fast as
|
||
before. Interestingly, maskwallscan manages to be nearly as fast as
|
||
wallscan despite having to check every pixel for transparency. I'm
|
||
tempted to dump all the old masked rendering code and use
|
||
(trans)maskwallscan for everything for the sake of simplicity: Only
|
||
two functions to maintain for each render style, and much less
|
||
complicated supporting code. Currently, I need five different functions
|
||
for each rendering style: One traditional column-at-a-time style like
|
||
Doom did it originally, two for rt_draw4cols, and two for transmaskwallscan.
|
||
(Right now, I have cheated, and just done the ones that can be used
|
||
by walls for transmaskwallscan, so the actual number of different functions
|
||
isn't quite so high.) For small textures, such as font characters and
|
||
far-away sprites, I'm sure maskwallscan is faster than the current code.
|
||
For large textures, it's probably still competitive even if it isn't faster.
|
||
But considering how similar wallscan and maskwallscan perform, the
|
||
difference is probably pretty minimal, and maskwallscan still might come
|
||
out ahead due to its simpler overhead.
|
||
|
||
May 10, 2006 (Changes by Graf Zahl)
|
||
- Fixed: PClass::CreateNew didn't check whether the class had valid
|
||
defaults and tried to copy data from a NULL pointer.
|
||
- Fixed: FireThing and BrassTorch were misspelled in hexendecorations.txt
|
||
- Changed A_ChangeFlag so that it doesn't need to alter the flag
|
||
string. With strings being passed as names this is unsafe.
|
||
- Removed unused parameter types from the function parameter parser for
|
||
DECORATE.
|
||
- Changed: All actor name parameters in DECORATE are now passed as
|
||
FNames, not as strings.
|
||
- Fixed: The MAPINFO parser stored the RedirectType as a type pointer.
|
||
But at this point DECORATE hasn't been read yet so this was limited to
|
||
the internal classes.
|
||
- Fixed: TXT_NEED_IDCARD wasn't terminated with a ';'.
|
||
- Fixed: Strife's DeadRebel was missing its DoomEdNum.
|
||
- With names as type identifiers it is no longer necessary to remap
|
||
the monster types to internal constants in A_BossDeath.
|
||
- Fixed: A_BossDeath got the string from a name - just to get a name from
|
||
the string. Using the name directly is sufficient.
|
||
|
||
May 9, 2006
|
||
- Redid ClearLcoks() fix that I accidentally removed.
|
||
- Added a new setting for am_rotate: 2 will enable rotation only for the
|
||
overlay map while leaving the regular map unrotated.
|
||
- Added a new setting for am_overlay: 2 will disable the normal automap and
|
||
show only the overlayed version.
|
||
- Fixed?: WallSpriteColumn apparently needs to set dc_texturefrac. At least
|
||
Valgrind seems to say so.
|
||
- Fixed: The FWadCollection destructor needs to use free to free the LumpInfo
|
||
and Wads arrays.
|
||
- Fixed: The ColorMapKiller needs to use the delete[] form of delete.
|
||
- Fixed: FConfigFile::ClearCurrentSection() should be calling the delete[] form
|
||
of delete to free the entry.
|
||
- Fixed: FPatchTexture::MakeTexture() does not need to blindly recreate the
|
||
Spans if they already exist.
|
||
- Fixed: The FMultiPatchTexture destructor did not call its Unload() method.
|
||
- Restored the original padding calculation to FMultiPatchTexture::MakeTexture().
|
||
I believe the Valgrind errors were caused by accessing off the end of the
|
||
screen buffer, not from accessing off the end of a texture.
|
||
- Backported the classnames-are-names changes from the FP code.
|
||
- Backported the improved hierarchical dumpclasses command from the FP code.
|
||
- Updated Jim's Makefile.linux.
|
||
- Added support for wrapping midtextures vertically.
|
||
- Since zdoom.wad is now zdoom.pk3, the default mapinfos can use full pathnames.
|
||
So now they do.
|
||
- Fixed: The DSimpleCanvas constructor used a pitch too narrow on screens wider
|
||
than 640 pixels when using a non-AMD processor and the processor's L1 cache
|
||
line size could not be determined. I think this should fix the issue of
|
||
weirdly rendered 8 pixel wide borders on the left and right of the screen that
|
||
some people experienced.
|
||
- Fixed: The secnodes were never freed.
|
||
|
||
May 9, 2006 (Changes by Graf Zahl)
|
||
- Fixed a few Strife ammo amount values.
|
||
- Fixed the ClearLocks function so it doesn't crash when called before the
|
||
ActorInfos have been created.
|
||
- Fixed: The FSpecialFont constructor created the name string twice.
|
||
- Fixed: The animated door parser was still leaking memory when it encountered
|
||
an invalid animation due to missing textures.
|
||
- Fixed: The music volume list wasn't freed.
|
||
- Fixed: The image for WADs that were loaded from inside Zips was never freed.
|
||
- Changed FDoorAnimation deletion so that the array takes care of it. The
|
||
original destructor approach would have necessitated a lot more supporting
|
||
code to work as intended.
|
||
- Fixed: Skin definitions were never freed.
|
||
- Fixed: Names in terrain definitions were never freed. Replacing them with
|
||
FNames would have been a good idea anyway.
|
||
- Fixed: The lock definitions were never freed.
|
||
- Fixed: FDoorAnimation was missing a destructor.
|
||
- Fixed: animation and switch definitions were never freed.
|
||
- Replaced all other places where FindType was used with FNames with
|
||
IFindType.
|
||
- Fixed: If you want to use a name as the missile parameter for the basic
|
||
attack functions the type search in DoAttack must be case insensitive.
|
||
- Fixed: APowerup::DoEffect must do more thorough checks before resetting
|
||
the fixed colormap.
|
||
|
||
May 8, 2006
|
||
- Fixed: The names in the Depths array in m_options.cpp were never freed.
|
||
- Fixed: FDoomEdMap needed a destructor.
|
||
- Fixed: Decal animators were never freed.
|
||
- Fixed: Colormaps were never freed.
|
||
- Fixed: Memory allocated in R_InitTranslationTables() was never freed.
|
||
- Fixed: R_InitParticles() allocated way more memory than it needed to. (And the
|
||
particle memory was never freed, either.)
|
||
- Fixed: FMetaTable::FreeMeta() should use delete[] to free string metadata.
|
||
- Fixed: FConfigFile::ClearCurrentSection() must cast the entry to a char *
|
||
before deleting it, because that's the way it was allocated.
|
||
- Fixed definitions of DeadZombieMan and DeadShotgunGuy in doom/deadthings.txt.
|
||
Skip_super resets the dropitem list, so having it after "DropItem None" is
|
||
pointless.
|
||
- Fixed: Decorate DropItem information was never freed.
|
||
- Fixed: FinishStates() allocated even 0-entry state arrays.
|
||
- Fixed: Default actor instances were never freed.
|
||
- Fixed: FRandomSoundList never freed its sound list.
|
||
- Fixed: Level and cluster strings read from MAPINFO were never freed.
|
||
- Fixed: Episode names were never freed.
|
||
- Fixed: InverseColormap and GoldColormap were never freed. Since they're always
|
||
allocated, they can just be arrays rather than pointers.
|
||
- Fixed: FFont destructor never freed any of the character data or the font's name.
|
||
- Fixed: Fonts were not freed at exit.
|
||
- Fixed: FStringTable::LoadLanguage() did not call SC_Close().
|
||
- Fixed: When using the -iwad parameter, IdentifyVersion() did not release the
|
||
buffer it created to hold the parameter's path.
|
||
- Blends created with the ACS fade commands now degrade to transparent overlays
|
||
when the menu is visible, so they can no longer obscure the menu.
|
||
|
||
May 7, 2006 (Changes by Graf Zahl)
|
||
- Added a misc/secret sound definition for Heretic.
|
||
- Fixed: Powered up weapons were not properly deselected when the level ended
|
||
and their ready state was different from the main weapon's.
|
||
- Made some improvements to A_CountdownArg.
|
||
- Removed the 'Yes', 'No' and 'Greetings' state assignment commands. They haven't
|
||
been documented and thus haven't been used at all so far. Therefore they don't
|
||
need to be handled considering that they will go away anyway.
|
||
- Changed the DECORATE state parser so that Stop can also be specified right after
|
||
a label, in addition to goto.
|
||
|
||
May 6, 2006
|
||
- The game is now free of leaks up to the point just after the wads are loaded.
|
||
- Fixed: Although TypeInfos are now deleted at exit, their FlatPointers or ActorInfo
|
||
data was not freed. I chose not to use a destructor to handle this, because then it
|
||
would no longer be a POD type that can be statically initialized.
|
||
- Fixed: Aliases were not deleted at exit.
|
||
- Fixed: FWadCollection did not free its hash tables, lump info, full names, or the
|
||
list of open files when destroyed.
|
||
- Updated Italian strings that someone kindly e-mailed to me.
|
||
- The CRT no longer detects any memory leaks when I run to the IWAD picker and quit.
|
||
- Fixed: The memory used to hold the path to zdoom.wad/.pk3 was not freed if
|
||
the IWAD picker was cancelled.
|
||
- Fixed: Some implementations of cvar->GetGenericRep (CVAR_String) returned a
|
||
statically allocated string and others returned a dynamically allocated string.
|
||
To be consistant, they should all be static.
|
||
- Fixed: DObject also has three static TArrays that should not be explicitly
|
||
initialized: Objects, FreeIndices, and ToDestroy.
|
||
- Added a new do-nothing constructor for TArray that can be used for BSS objects
|
||
that are manipulated before startup. Specifically, this was added because
|
||
C_AddTabCommand() is called before main, but the TabCommands constructor is
|
||
called after the array already has over 100 entries in it, orphaning everything
|
||
that was already inserted. And since the code is much nicer-looking now, I didn't
|
||
want to revert to the old non-TArray version.
|
||
|
||
This could also have been used to fix FName, but I consider the current
|
||
implementation to be better than the old one, so I'm leaving it as-is.
|
||
|
||
May 6, 2006 (Changes by Graf Zahl)
|
||
- Converted a_zombie.cpp and most of a_strifestuff.cpp to DECORATE.
|
||
- Converted a_strifekeys.cpp to DECORATE and moved the pickup messages to the
|
||
string table.
|
||
- Removed the WIF_HITS_GHOSTS weapon flag and replaced it with MF2_THRUGHOST.
|
||
There is no need to keep two flags around with virtually the same meaning.
|
||
- Changed the ShadowArmor to use the VISIBILITYPULSE flag to change its translucency.
|
||
It looks much better now than the cheap code pointer based blinking it used before.
|
||
- Converted most of a_strifeitems.cpp to DECORATE and moved the pickup messages
|
||
to the string table.
|
||
- Converted a_strifearmor.cpp to DECORATE and moved the pickup messages to the
|
||
string table.
|
||
- Moved the messages for killing spectres to the string table.
|
||
- Converted the quest items to DECORATE. Also changed A_GiveQuestItem to get
|
||
the messages it prints from the string table instead of the quest item's tag
|
||
string.
|
||
|
||
May 5, 2006 (Changes by Graf Zahl)
|
||
- Removed the hopelessly outdated thingdef_doc.txt file from the repository.
|
||
- Converted a_peasant.cpp and a_ratbuddy.cpp to DECORATE.
|
||
- Fixed: C_DoKey didn't treat an empty string as 'no binding' when checking for
|
||
valid double bindings.
|
||
- Converted a_merchants.cpp to DECORATE.
|
||
- Added MF5_NODAMAGE flag to generalize the behavior of Strife's merchants which
|
||
can be shot but take no damage from getting hurt.
|
||
- Converted a_beggars.cpp to DECORATE.
|
||
- Added an Inventory.GiveQuest property. This makes it possible to define all of
|
||
Strife's original items that also give a quest item in DECORATE but it is also
|
||
useful to define items like the ones in Day of the Acolyte without ugly workarounds.
|
||
- Added a Tag property and Strife teaser conversation IDs to DECORATE so now it is
|
||
possible to define many of Strife's items.
|
||
- Added a FastSpeed property to DECORATE so that projectiles can finally be
|
||
assigned a higher speed for fast mode.
|
||
- Added a ACS_LockedExecuteDoor special. It is basically the same as the existing
|
||
ACS_LockedExecute but it uses the 'door' message instead of 'remote'. This
|
||
cannot be integrated into ACS_LockedExecute because all its arguments are already
|
||
in use.
|
||
- Added a fully customizable A_CustomMeleeAttack function for DECORATE.
|
||
|
||
May 5, 2006
|
||
- Fixed: Scanned IWAD paths were not freed if you exited without selecting one.
|
||
- Fixed: Dynamically allocated cvars were not freed on exit.
|
||
- Fixed: FConfigFile's destructor did not free space used for Values.
|
||
- Added "DropItem None" as a way for inherited actors to avoid dropping items if
|
||
their superclass normally does. This is only needed if somebody dehacks
|
||
DeadZombieMan or DeadShotgunGuy.
|
||
- Moved Doom's dead body actors into DECORATE so that I can finish and verify the
|
||
implementation of "States { StateLabel: goto SomeOtherLabel }" constructs. The
|
||
alternate method of overriding inherited states is now deprecated, since it's
|
||
incompatible with the coming custom state labels.
|
||
- Changed TAG_MORE to pass a va_list pointer instead of a va_list because it's a
|
||
non-POD type when targeting several non-ix86 targets with GCC. Hopefully this works.
|
||
(Guess it didn't. Boohoo.)
|
||
|
||
May 4, 2006
|
||
- Rewrote FName to use only POD types for its static data so that it can be used
|
||
without any explicit constructors being called.
|
||
- Fixed: ZTwinedTorchUnlit, ZWallTorchUnlit, ZFireBullUnlit, and ZCauldronUnlit
|
||
were missing game filters.
|
||
|
||
May 4, 2006 (Changes by Graf Zahl)
|
||
- Added Poisondamage property for DECORATE. I first did this for one of the first
|
||
DECORATE updates but the code seems to have gotten lost.
|
||
- Converted A_Puzzleitems.cpp and parts of A_HexenSpecialdecs.cpp to DECORATE.
|
||
- Converted A_Hexendecorations.cpp to DECORATE.
|
||
- Changed the lower decal spawning code to transfer the main decal's color if
|
||
the lower decal's default color is the same as the main decal's.
|
||
- Changed the decal stretcher back to use the specified size parameters as a
|
||
scaling factor and not a destination size because this is more consistent with
|
||
the rest of the decal code. Also adjusted the blood smear definition in DECALDEF
|
||
and the description in the Wiki for this.
|
||
- Added Jim's most recent fixes.
|
||
|
||
May 3, 2006
|
||
- Fixed: Conversion of c_bind.cpp to FString was incomplete.
|
||
- Fixed some functions that were declared as taking size_t's but defined as taking
|
||
unsigned ints.
|
||
- Added a dummy object to delete sound environments on exit.
|
||
- Fixed: FWarpTexture did not delete its Spans when destroyed.
|
||
- Changed wadclusterinfos and wadlevelinfos arrays into TArrays.
|
||
- Added the TypeInfo::AutoTypeInfoPtr for TypeInfo::m_RuntimeActors so they can
|
||
be automatically deleted.
|
||
- Changed TypeInfo::m_Types into a TArray so it will be automatically deleted
|
||
on exit.
|
||
- Fixed: TArray::Resize() did not deconstruct entries when shrinking the array.
|
||
- Changed TArray::Push() so that it calls Grow() instead of duplicating the growth
|
||
calculations itself.
|
||
- Calling TArray::Grow() for a small amount when the array is short should grow it
|
||
a bit more than it was doing.
|
||
- Removed generational garbage collection from the string pool because it didn't
|
||
actually work.
|
||
- Turned the list of TabCommands into a TArray because I saw lots of console
|
||
commands in the memory leak report at exit. Then I realized those were actually
|
||
key bindings, so I changed the Bindings and DoubleBindings arrays into FString
|
||
arrays.
|
||
- Fixed: FStringCVar was missing a destructor.
|
||
- Added TArray::Insert().
|
||
- Fixed: TArray::Delete() used memmove().
|
||
- Renamed Malloc(), Realloc(), and Calloc() to M_Malloc(), M_Realloc(), and
|
||
M_Calloc() so that the debug versions can be defined as macros.
|
||
- Enabled the CRT's memory leak detection in WinMain().
|
||
- Moved contents of PO_DeInit() into P_FreeLevelData().
|
||
- Removed "PolyBlockMap = NULL;" from P_SetupLevel(), because the P_FreeLevelData()
|
||
call it makes next does the exact same thing, but also freeing it if needed.
|
||
- Fixed: Unneeded memcpy in UnpackUserCmd() when ucmd and basis are the same
|
||
- Removed -bpal parameter. Blood's blood.pal is loaded from blood.rff, and
|
||
its tiles are loaded from the same directory.
|
||
- RFF files now load their entire directories into the lumplist.
|
||
- Added char * and const char * type coversions for FString, so FStrings can be
|
||
freely passed to functions expecting C strings. (Except varargs functions,
|
||
which still require manually fetching the C string out of it.)
|
||
- Renamed the name class to FName.
|
||
- Renamed the string class to FString to emphasize that it is not std::string.
|
||
|
||
May 3, 2006 (Changes by Graf Zahl)
|
||
- Converted A_Speedboots.cpp, A_HexenArmor.cpp and A_Hexenkeys.cpp to DECORATE
|
||
- Fixed a few memory allocation issues pointed out by Jim's Valgrind dump.
|
||
- Removed doom.x, heretic.x and strife.x from the SVN repository. These
|
||
are generated files.
|
||
- Fixed: A_PainDie has to check whether a valid target exists before
|
||
calling IsFriend.
|
||
- Fixed: FDecalLib::FindAnimator needs a signed counter to work properly.
|
||
|
||
May 1, 2006 (Changes by Graf Zahl)
|
||
- Added support for game specific pickup messages, if only to be able
|
||
to define Raven's invulnerability item in DECORATE.
|
||
- Removed A_TreeDeath because it is no longer used.
|
||
- Fixed: When picking up a PowerupGiver for an active powerup the
|
||
blend color and the duration were transferred to a temorary item
|
||
and never took effect. They have to be trnasferred to the newly created
|
||
powerup item before trying to give it to the player, not afterward.
|
||
- Made the colormap of the InvulnerabilitySphere item specific.
|
||
The base power class still needs to have its color adjusted
|
||
per game though and since Raven's invulnerability item is used in both
|
||
Hexen and Heretic it can't define its own colormap/blend.
|
||
- Separated the invulnerability colormaps from the game being played
|
||
and made them item specific. They can also be specified as regular
|
||
blend colors in DECORATE now.
|
||
- Converted a_hereticarmor.cpp and most of a_doomartifacts.cpp,
|
||
a_hereticartifacts.cpp and a_heretickeys.cpp to DECORATE.
|
||
- Changed the Soulsphere to be a real health item with the Dehacked
|
||
modifications made in d_dehacked.cpp as for most other items which
|
||
need to be adjusted.
|
||
- Added IF_BIGPOWERUP flag to AInventory to expose the RESPAWN_SUPER
|
||
dmflag to DECORATE. Also removed the now obsolete ShouldRespawn methods
|
||
from AInvulnerabilitySphere and ABlurSphere.
|
||
- Converted a_splashes.cpp to DECORATE.
|
||
- Converted most of a_debris.cpp to DECORATE.
|
||
|
||
May 1, 2006
|
||
- Made loading of Build's palette.dat automatic if it's found inside a loaded
|
||
group file, but the -bpal parameter remains for now.
|
||
- Made loading of Build art tiles automatic if they are found inside a group
|
||
file. Removed the corresponding command-line parameter.
|
||
- Added support for Ken Silverman's group files.
|
||
|
||
April 30, 2006 (Changes by Graf Zahl)
|
||
- Removed the DCorpseQueue class. It was no longer used and since
|
||
the savegames it might have been used in have become incompatible
|
||
a long time ago there is no reason to keep it around anymore.
|
||
- Fixed: level.maptime must be set to 0 every time a level is loaded.
|
||
- Converted a_doomarmor.cpp and a_doomkeys.cpp to DECORATE.
|
||
- Replaced all need key messages that weren't already in LANGUAGE with
|
||
a LANGUAGE identifier. Also made the messages for Hexen's keys unique
|
||
strings instead of constructing them at run time.
|
||
- Added: Pickup messages can now handle embedded localized strings - like
|
||
the need key messages
|
||
- Converted a_hereticdecorations.cpp as well.
|
||
- Time to put the capabilities of Zip files to good use:
|
||
Converted a_doomdecorations.cpp into a DECORATE lump to test my changes.
|
||
(The EXE got 24 kb shorter by that - much more than I expected...)
|
||
- Added a 'game' property to DECORATE so that game specific IDs can be
|
||
defined.
|
||
- Added an #include directive to the DECORATE parser.
|
||
- Also removed ABreakableDecoration. Using AActor and the metadata
|
||
for the death and burn height gives the same results with less code.
|
||
- Removed the ADecoration class. It just inherited from AActor without
|
||
adding any functionality of its own.
|
||
- Added functions to sc_man to save and restore the full script state.
|
||
This allows recursive use of the script parser.
|
||
- Changed SC_Open to check for full names in a ZIP first.
|
||
- Fixed: Ammo2 no longer gets displayed when it is identical to Ammo1.
|
||
- Re-enabled the death camera due to public demand but made it switchable
|
||
by a CVAR.
|
||
|
||
April 29, 2006 (Changes by Graf Zahl)
|
||
- ZDoom now loads zdoom.pk3 instead of zdoom.wad.
|
||
- Fixed: StreamSong::SetVolume should check the m_stream pointer. This can
|
||
happen when a TimiditySong doesn't use FMOD and outputs the sound itself.
|
||
- Fixed: 'use' sector actions were using the incorrect sector on several
|
||
occasions.
|
||
- Added a wi_noautostartmap CVAR and a noautostartmap intermission option
|
||
that force the user to manually end the 'entering level' page.
|
||
|
||
April 23, 2006 (Changes by Graf Zahl)
|
||
- Added a clipmidtextures level flag which exposes the ML_CLIP_MIDTEX
|
||
feature globally per level. Also moved the setting of this flag for Strife
|
||
into MAPINFO.
|
||
- Added MBF's logic to move monsters away from a dropoff but changed it
|
||
so that it doesn't require a general change in the movement code.
|
||
- Added: The Trace function needs a compatibility option to exclude
|
||
two-sided lines with both sides in the same sector from being checked.
|
||
Originally this wasn't done and some WADs (e.g. Alien Vendetta MAP15)
|
||
need the original behavior to work.
|
||
|
||
April 22, 2006 (Changes by Graf Zahl)
|
||
- Removed ABossEye::Serialize because it didn't do anything.
|
||
- Fixed the issues with .96x's railgun code and added it to the current
|
||
version.
|
||
- Fixed: Setting of the friendly Minotaur's angle was inconsistent and
|
||
could cause it to move backwards in a f<>w situation.
|
||
- Fixed: The minotaur did checks for type by checking for the MF_FRIENDLY
|
||
flag, not by checking for the actor class. That made it impossible to
|
||
spawn friendly 'normal' minotaurs.
|
||
- Moved a few virtual methods which are only applicable to the friendly
|
||
minotaur to AMinotaurFriend.
|
||
- Fixed: The friendly minotaur checked the master's health instead of
|
||
the target's when deciding whether to switch targets. Replaced with
|
||
MF4_NOTARGETSWITCH.
|
||
- Fixed: maybedrawnow must not draw the console unless the background
|
||
texture has been set up.
|
||
- Fixed: V_InitCustomFonts initialized lastlump to -1 instead of 0.
|
||
- Fixed: CreateTexture never checked whether it could read from the
|
||
texture lump. Since the minimum valid length is 13 bytes for a
|
||
1x1 pixel patch everything below that will now return with an error.
|
||
- Fixed a few occurences of mismatched free's for new'd memory.
|
||
|
||
April 21, 2006 (Changes by Graf Zahl)
|
||
- Fixed: To prevent the pointer cleanup code from crashing numsectors has
|
||
to be set to 0 when the sectors array is deleted.
|
||
- Added Zloba's fix for Linux's I_FindFirst.
|
||
|
||
April 20, 2006 (Changes by Graf Zahl)
|
||
- Fixed: Doom's status bar assumed that STBAR was always in Doom patch format.
|
||
- Added MF3_DONTSPLASH to the newly created sound sequence things.
|
||
- Fixed: makewad.c used C++ syntax.
|
||
- Fixed: Strife's ending check included destroying the computer - an event
|
||
that happens before the branch in the story.
|
||
- Fixed: The overloaded FRandom::Random2 function with mask parameter didn't
|
||
use its parameter.
|
||
- Added Jim's latest makefile.linux
|
||
|
||
April 20, 2006
|
||
- Fixed: Crash when opening the player setup menu when you're so dead that
|
||
your head has popped off your body.
|
||
- Fixed: When item respawning is on and you play on skill 1 or 5, picking
|
||
up ammo would permanently double the amount of ammo received from that
|
||
item the next time it gets picked up.
|
||
- Added a check to PlayerIsGone() for players who have already had their
|
||
actors destroyed before calling it.
|
||
- Fixed: G_CheckDemoStatus() only restored your name, autoaim, and color
|
||
settings after playing back a demo.
|
||
- Added DEM_SPRAY net command so that sprayed decals work in multiplayer
|
||
and demos.
|
||
- Changed DEM_GIVECHEAT to use a word for specifying the item quantity.
|
||
This is useful mainly for giving yourself more than 255 health at a time.
|
||
- Fixed: DEM_SUMMONFRIEND was not handled by Net_SkipCommand().
|
||
- Fixed compilation with mingw again.
|
||
- Added multiple-choice sound sequences. These overcome one of the major
|
||
deficiences of the Hexen-inherited SNDSEQ system while still being Hexen
|
||
compatible: Custom door sounds can now use different opening and closing
|
||
sequences, for both normal and blazing speeds.
|
||
- Moved the TArray serializer into farchive.h so that tarray.h doesn't need
|
||
farchive.h at all because GCC was much pickier than VC. Because of this,
|
||
I don't need the FArchive change I made yesterday that hid FArchive's
|
||
TArray uses behind pointers.
|
||
- Added a countof macro to doomtype.h. See the1's blog to find out why
|
||
it's implemented the way it is.
|
||
<http://blogs.msdn.com/the1/articles/210011.aspx>
|
||
- Added a new method to FRandom for getting random numbers larger than 255,
|
||
which lets me:
|
||
- Fixed: SNDSEQ delayrand commands could delay for no more than 255 tics.
|
||
- Fixed: If you're going to have sector_t.SoundTarget, then they need to
|
||
be included in the pointer cleanup scans.
|
||
|
||
April 19, 2006
|
||
- Added a serializer for TArray. This required I make a couple changes to
|
||
FArchive in order to avoid circular references between farchive.h and
|
||
tarray.h.
|
||
- Ported back newer name code from 2.1.
|
||
- Fixed: Using -warp with only one parameter in Doom and Heretic to
|
||
select a map on episode 1 no longer worked.
|
||
- New: Loading a multiplayer save now restores the players based on
|
||
their names rather than on their connection order. Using connection
|
||
order was sensible when -net was the only way to start a network game,
|
||
but with -host/-join, it's not so nice. Also, if there aren't enough
|
||
players in the save, then the extra players will be spawned normally,
|
||
so you can continue a saved game with more players than you started it
|
||
with.
|
||
- Added some new SNDSEQ commands to make it possible to define Heretic's
|
||
ambient sounds in SNDSEQ: volumerel, volumerand, slot, randomsequence,
|
||
delayonce, and restart. With these, it is basically possible to obsolete
|
||
all of the $ambient SNDINFO commands.
|
||
- Fixed: Sound sequences would only execute one command each time they were
|
||
ticked.
|
||
- Fixed: No bounds checking was done on the volume sound sequences played at.
|
||
- Fixed: The tic parameter to playloop was useless and caused it to
|
||
act like a redundant playrepeat. I have removed all the logic that
|
||
caused playloop to play repeating sounds, and now it acts like an
|
||
infinite sequence of play/delay commands until the sequence is
|
||
stopped.
|
||
- Fixed: Sound sequences were ticked every frame, not every tic, so all
|
||
the delay commands were timed incorrectly and varied depending on your
|
||
framerate. Since this is useful for restarting looping sounds that got
|
||
cut off, I have not changed this. Instead, the delay commands now
|
||
record the tic when execution should resume, not the number of tics
|
||
left to delay.
|
||
|
||
April 19, 2006 (Changes by Graf Zahl)
|
||
- Fixed: Hexen's ammo display in the status bar cannot be refreshed
|
||
partially because the background patch has to be drawn always to
|
||
overwrite the old display.
|
||
- Fixed: Giving a health item to a non-player caused a crash.
|
||
- Added a compatibility option to limit deh.MaxHealth to the health bonus.
|
||
Originally this value wasn't used for health packs. Doing this was a bug
|
||
in Boom but since there's quite a few maps out there which require
|
||
Boom's altered behavior it has to be compatibility optioned.
|
||
- Fixed: The health bonus's max health must be defined by deh.MaxHealth,
|
||
not deh.MaxSoulsphere. To achieve this deh.MaxHealth's handling had to
|
||
be altered because it has to default to 100.
|
||
- Fixed: ZDBSP created incorrect side references with compressed sidedefs
|
||
and both sidedefs of a linedef being the same. This only affects the
|
||
external tool because the internal node builder is run after uncompressing
|
||
the sidedefs.
|
||
- Added Jim's latest makefile.linux.
|
||
- Added a consistency check to the PNAMES loader because one crash log
|
||
indicated that it crashed due to a corrupt PNAMES lump.
|
||
- Brought back the sector based sound target handling as a compatibility
|
||
option. This radical change just broke far too many maps that depend
|
||
on the original behavior. Strife's special AI functions are excluded
|
||
though because they work better with the new method.
|
||
- Fixed: Hexen had no default sound sequence for doors and passed a NULL
|
||
pointer to SN_StartSequence in DoorSound.
|
||
|
||
April 18, 2006 (Changes by Graf Zahl)
|
||
- Fixed A_CHolyAttack used linetarget to set the spirits' target actor.
|
||
But it assumed that this variable was still valid from shooting the
|
||
weapon. Not only is that not guaranteed. When used by the ClericBoss
|
||
it is an unwanted effect because the linetarget is most likely the
|
||
last thing the player fired at which normally is the ClericBoss itself.
|
||
A_CHolyAttack now sets tracer to the intended target instead of
|
||
relying on linetarget being preserved.
|
||
- Fixed: Strife's grenades only bounce twice off the floor. They also
|
||
bounce off all actors and immediately explode when hitting liquids.
|
||
- Fixed: Strife's flame thrower gives 100 ammo as a pickup item but only
|
||
40 when given in a dialog.
|
||
- Moved the sky change script starts for the Programmer into MAPINFO as
|
||
special death actions.
|
||
- Changed the sky in MAP09 of Strife to the blue sky to make it more
|
||
consistent. Now the sky change occurs when the player wakes up after
|
||
fighting the programmer.
|
||
|
||
April 18, 2006
|
||
- Fixed: FBaseStatusBar::DrBNumber() should behave like Doom's
|
||
STlib_drawNum(), and FDoomStatusBarTexture::DrawToBar() should add
|
||
the textures left offset to the x coordinate before drawing.
|
||
These fix Twice Risen's status bar.
|
||
- Changed: VPrintf now uses string.VFormat(), instead of vsprintf().
|
||
|
||
April 17, 2006 (Changes by Graf Zahl)
|
||
- Fixed: The Oracle Pass is an item, not a key. Strictly speaking the
|
||
same applies to the Prison pass but having that as a key masks
|
||
some bad design in Strife so it is better to leave it a key.
|
||
- Fixed: The spectral lightning spot used a weird combination of flags
|
||
that made it act quite unexpectedly. After removing all flags except
|
||
MF_NOBLOCKMAP it seems to do what it is supposed to do. I also had
|
||
to add a new flag, MF5_NODROPOFF to prevent the spot from moving over
|
||
tall ledges.
|
||
- Fixed: When giving an autoactivatable item to the player a copy is
|
||
created to allow respawning. But when the item had been successully
|
||
used the original was destroyed, not the copy.
|
||
- Fixed: dssiglup was misspelled as dssglup in SNDINFO so the Sigil's
|
||
charging sound never played.
|
||
- Fixed: The sigil doesn't use the generic weapon pickup sound. It should
|
||
use weapons/sigilcharge.
|
||
- Fixed: P_Move never checked whether a monster has the MF2_PUSHWALL flag.
|
||
As a result everything using A_Chase was able to activate pushable
|
||
walls and not just the monsters which are allowed to activate them.
|
||
- Fixed: P_Move must split the move if the step size is larger than the
|
||
radius.
|
||
- Fixed: tmfloorpic was set in P_LineOpening. But this is not guaranteed
|
||
to set the correct picture because the end result depends on the line
|
||
ordering and not the sector heights. It must be set in PIT_CheckLine.
|
||
- Fixed: Due to the previously missing ceilingsector variable bouncing
|
||
missiles could use the incorrect sector when hitting an edge between
|
||
ceilings of different height.
|
||
- Fixed: Missiles exploding on the edge of a ceiling neighboring to a
|
||
sky vanished instead of exploding if the missile's center was in the
|
||
sky sector. To do this I added ceilingsector and ceilingpic variables
|
||
to AActor, similar to the already existing floorsector and floorpic.
|
||
- Fixed: ZDoom now looks for ZDoom.wad in the program directory first.
|
||
|
||
April 16, 2006
|
||
- Fixed: After respawning in a singleplayer demo, demo playback went out
|
||
of sync becase the RNG seed was being altered during recording but not
|
||
during playback. This was caused by an inappropriate fix for a similar
|
||
problem: -record calls G_InitNew() before it actually starts recording
|
||
the demo, but -playdemo calls G_InitNew() after it starts playback. So
|
||
the rngseed stored in the demo was already altered. The correct thing
|
||
to do is not to prevent the rngseed from changing during playback but
|
||
to move the call to G_InitNew() after the call to G_BeginRecording().
|
||
- Fixed: After respawning in a demo, demo playback was prematurely
|
||
terminated.
|
||
|
||
April 16, 2006 (Changes by Graf Zahl)
|
||
- Increased the limit for the sound DoorCloseLight in Hexen to 4 because
|
||
it got cut off in the polyobject crusher in MAP01.
|
||
- Fixed: A player that has no body (as in the head popped off in Heretic
|
||
and Hexen) must not be resurrected.
|
||
- Fixed: Repeatable switches that are being activated while the switch
|
||
animation was still running didn't react properly.
|
||
- Fixed: Not all paths in P_LoadSegs freed the vertchanged array.
|
||
- Fixed: With infinitely tall actors on P_CheckPosition must not
|
||
check for stepping on things.
|
||
- Fixed: R_FakeFlat used the control sector's floor light level for
|
||
ceilings of deep water areas.
|
||
- Fixed: Dormant floating monsters still adjusted their height to their
|
||
target.
|
||
- Fixed: Invisible special things should never create terrain splashes.
|
||
- Changed: The Demon no longer reduces the actual state durations for
|
||
fast mode. Now this is done by AActor::SetState and controlled by
|
||
actor flags.
|
||
- Fixed: Friendly monsters are now completely excluded fron being counted
|
||
as kills.
|
||
|
||
April 15, 2006 (Changes by Graf Zahl)
|
||
- Changed -warp for ExMy to use atoi to parse the parameters. This is
|
||
more robust than reading the characters directly.
|
||
- Expanded thing and line args to 32 bit.
|
||
- Extended Makewad so it can write Zip files in addition to WAD files.
|
||
|
||
April 14, 2006 (Changes by Graf Zahl)
|
||
- Moved SC_CheckFloat into sc_man.cpp.
|
||
- Fixed several issues with the DECORATE parser:
|
||
* Floating point parameters couldn't be parsed correctly
|
||
* Some code pointers used parameters incorrectly.
|
||
* Parameters with default value 1 didn't work as expected
|
||
- Added GZDoom's HI_START/HI_END lump namespace. Even though it doesn't do
|
||
anything (yet) suppporting it allows to make WADs that use hires texture
|
||
replacements but are able to run with ZDoom as well.
|
||
- Added GZDoom's Zip-support but changed it so that lumps are sorted
|
||
alphabetically.
|
||
- Added the missing file 'flac/private/float.h' to the repository.
|
||
- Added: For Zip-support the sound code has to be able to load music data
|
||
from memory, not just from files.
|
||
- Re-added I_SetMusicVolume to optionally reduce the music volume in Strife
|
||
conversations.
|
||
- Fixed: The total game time must not be restored when loading a snapshot
|
||
during a hub transition.
|
||
|
||
April 13, 2006
|
||
- Fix farchive.cpp swappers for GCC again. Now that they use entirely integer
|
||
math, they should work with all GCC versions.
|
||
- Update FLAC readers to #define FLAC__NO_DLL to match the new FLAC builds.
|
||
|
||
April 13, 2006 (Changes by Graf Zahl)
|
||
- Made weapons/bowhit unlimited. With a limit of 2 it won't be played
|
||
consistently.
|
||
- Fixed: 'Give' worked for dead players.
|
||
- Added checks for sectors without lines to all Find* functions in p_sector.cpp
|
||
- Fixed: Dehacked patches weren't loaded when not playing Doom.
|
||
- Fixed: Thing_Remove must not remove living players from the map.
|
||
- Fixed: Using $MAP in SNDINFO overrode music definitions in MAPINFO. This
|
||
made it impossible to define music in MAPINFO for Hexen.
|
||
- Fixed: Resurrecting a morphed player must first restore the unmorphed
|
||
version.
|
||
- Fixed: Resurrect must set the player's weapon to a valid state.
|
||
- Fixed: The decal stretcher is supposed to stretch the decal to a specifiable
|
||
size but it used that size as a scaling factor instead. The old code allowed
|
||
a maximum scaling factor of 4 which masked this bug to a large extent but
|
||
with the increased precision the blood smears were stretched to abnormal
|
||
proportions.
|
||
- Fixed: A non-spectral attack set any spectral target to its missile state.
|
||
This is not supposed to happen.
|
||
- Fixed: The Prison Key was misspelled in the pickup message.
|
||
- Added missing lock messages for Strife.
|
||
- Fixed some ammo pickup values for Strife.
|
||
- Added the missing messages when killing a spectre in Strife.
|
||
- Fixed: DImpactDecal's default constructor called ChangeStatNum which caused
|
||
a crash. Now it calls DBaseDecal's constructor that allows changing the
|
||
statnum.
|
||
- Added additive translucency to the Ironlich's projectiles.
|
||
- Added a check for AInventory to PickConversationReply before giving an item
|
||
to the player. This could crash if non-inventory items were given.
|
||
- Added a few console commands useful for map testing:
|
||
* 'monster' lists all monsters and their position.
|
||
* 'items' does the same for items.
|
||
* 'changesky' changes the sky texture. Useful for trying out different skies.
|
||
* 'linetarget' prints some information about the monster the player is aiming
|
||
at.
|
||
|
||
April 12, 2006
|
||
- Fixed: Using printinv before starting a game crashed.
|
||
- Fixed: DMover::MovePlane() would not stop moving the plane when it exactly
|
||
reached its target height unless it was a floor moving down.
|
||
- Fixed: Actors that can't attack should not be valid haters for Thing_Hate.
|
||
- Fixed: AArtiBlastRadius::BlastActor() should not set MF2_SLIDE for missiles.
|
||
- Fixed: sdl/i_input.cpp should check !iscntrl() before generating EV_GUI_Char
|
||
messages.
|
||
- Added Jim's Makefile.linux.
|
||
- Changed: Decal scales now use full precision fixed point numbers.
|
||
- Changed: Keeping impact decals in their own statlist is enough to keep track
|
||
of them for when one needs to be destroyed. There's no need to maintain a
|
||
separate list for them.
|
||
- Fixed: Decal actors did not spread their decals across neighboring walls.
|
||
- Fixed: Decal groups did not initialize their IDs and could not be reliably
|
||
used with the decal actor.
|
||
- Fixed: Decals on moving polyobjects were not interpolated. R_RenderDecal()
|
||
now uses the decal's LeftDistance to calculate its visible location, so it
|
||
always stays in sync with the wall's vertices. This also lets me dump some
|
||
code from the polyobjects that maintained the decals' (x, y) coordinates.
|
||
Also, the decals' x and y information is redundant and can be removed.
|
||
Doing this revealed a bug with slider decals and horizontal sliding:
|
||
That is, it didn't work at all. I have opted to simply remove the horizontal
|
||
sliding support so that I don't have to worry about what happens when a
|
||
decal slides across the edge of a wall.
|
||
- Fixed: DBaseDecal::LeftDistance was calculated as a 30.2 fixed point number.
|
||
It should be 2.30 fixed point.
|
||
|
||
April 12, 2006 (Changes by Graf Zahl)
|
||
- Fixed: SAVEVER was still 231 although MINSAVEVER was 232.
|
||
- Fixed: Decal spreading used an incorrect z-coordinate. It has to use
|
||
the one originally passed to DImpactDecal::StaticCreate.
|
||
|
||
April 11, 2006
|
||
- Fixed: GCC misoptimized the SWAP macros in farchive.cpp.
|
||
- Fixed: Compiling with mingw once again works.
|
||
- Fixed: ACS improperly calculated the address of local variables when
|
||
returning from one function to another function when the function that
|
||
was called was used as part of an expression.
|
||
- Fixed: Using Thing_Hate with arg0 (hater) set to 0 from an open script
|
||
could crash.
|
||
- Fixed: Some items along ledges in Hexen's MAP32 (Orchard of Lamentations)
|
||
appeared at the bottom of the ledge (and consequently inside it) instead
|
||
of on top of it because the items were placed directly on the lines.
|
||
AActor::LinkToWorldForMapThing() needs to use the original R_PointOnLineSide()
|
||
code to handle situations like this. Previously, it just used the original
|
||
code for straight horizontal/vertical lines and used the new code for
|
||
diagonal lines.
|
||
- Fixed: FWadCollection::MergeLumps() used in incorrect realloc.
|
||
- Fixed: FPlayList::NextLine() did not properly handle blank lines in the
|
||
playlist.
|
||
- Changed: Decals now use lightweight thinkers instead of actors. (76 bytes
|
||
versus 396, so you save 320k if you have 1024 decals present.)
|
||
- Fixed: Wads added with pullin were loaded immediately after the IWAD.
|
||
Exec files are now processed immediately before -file but after autoloading
|
||
wads in D_DoomMain().
|
||
- Fixed: sdl/i_system.h unconditionally defined SHARE_DIR, preventing
|
||
redefinition from the command line.
|
||
- Fixed: The standard way to include SDL.h is <SDL.h>, not <SDL/SDL.h>.
|
||
- Fixed: Returned FActiveInterpolation::HashKey()'s return type to size_t,
|
||
avoiding a pointer truncation warning.
|
||
|
||
April 11, 2006 (Changes by Graf Zahl)
|
||
- Fixed: Strife's dialogs don't give weapons to the player he already has.
|
||
- Fixed: The INDIANA cheat in Hexen gives 25 of each item, not just 1.
|
||
- Fixed: The stair builder's compatibility mode must do a linear search
|
||
for sectors. Searching the hash chain doesn't work here.
|
||
- Fixed: Any monster with a TakeSpecialDamage method should call the
|
||
super class's method instead of simply returning the damage amount.
|
||
- Fixed: Hexen's mash monsters cannot be frozen. No matter how you kill
|
||
them they just vanish. This means they need the NOICEDEATH flag.
|
||
- Fixed: Morphing a monster must also copy its translucency settings.
|
||
- Fixed: The first Macil must react to weapon fire, even though he
|
||
doesn't get hurt by it.
|
||
- Fixed: Anything with a raise state needs the MF_CORPSE flag when dying
|
||
because otherwise it can't be revived.
|
||
- Fixed: Player names in Heretic, Hexen nand Strife could only be 13
|
||
characters because the input routine did an unnecessary font size check.
|
||
- Added: After saving the game the savegame should be checked
|
||
and in case of an error an appropriate message be output.
|
||
- Fixed: The pig player had an initial health of 100, not 30.
|
||
- Fixed: Morphing a player removes the armor after transferring the
|
||
inventory to the morphed version - but it tried to remove it from the
|
||
unmorphed player instead.
|
||
- Fixed: Heretic uses Backspace to activate the Tome of Power by default.
|
||
- Fixed: 'Use all' should not try to use puzzle items.
|
||
- Made FileReader's methods virtual. Right now this isn't important
|
||
but when ZIP support will be added it is needed. Also added a
|
||
MemoryReader class that derives from FileReader.
|
||
- Added a pointer check to DI_Acquire and DI_Unacquire. GZDoom definitely
|
||
had problems with that so it might be a good idea to always check these
|
||
pointers.
|
||
- Added an engine signature to the savegame. The inability to distinguish
|
||
between ZDoom and GZDoom savegames constantly forced me to use some ugly
|
||
tricks which broke the versioning system. This may also be useful for
|
||
other derivates that have to save additional data in a savegame.
|
||
- Due to the savegame version bump I removed all compatibility code.
|
||
- I had to bump the minimum savegame version because I got some strange
|
||
effects with old savegames. On the positive side, this allows me to
|
||
do a few more radical changes to the savegame code. ;)
|
||
- Fixed: CanvasTextures weren't saved in a savegame.
|
||
- Fixed: Multiple warp commands for the same texture were cumulative.
|
||
- Changed FPatchTexture::MakeTexture and FIMGZTexture::MakeTexture so they
|
||
don't re-initialize the texture's size information repeatedly. This can
|
||
cause problems if code was added that manipulates these values after loading
|
||
the textures.
|
||
- Changed FPatchTexture::GetDimensions to use ReopenLumpNum instead of
|
||
OpenLumpNum. Once ZIP handling is added the current code won't work anymore
|
||
without adding a highly expensive copy operator to FWadLump.
|
||
- Added Transfer_WallLight special. This is similar to Transfer_Floor/Ceilinglight
|
||
but affects walls instead.
|
||
- Fixed: P_TestActivateLine must check whether a valid actor is trying
|
||
to activate the line.
|
||
- Added a check for MF2_NOTELEPORT to the special activation check for
|
||
Booms generic triggers. This excludes most items from activating these
|
||
lines that are not supposed to do that.
|
||
- Added a sv_dropstyle CVAR so that the way items are dropped is no longer
|
||
dependent on the game being played.
|
||
- Added MF4_FRIGHTENED flag from .96x.
|
||
- Added a CVAR that disables the automap background graphic in Heretic
|
||
and Hexen.
|
||
- Added more color options to the automap, including the option to show
|
||
secrets.
|
||
- Added menu option for the monster movement interpolation CVAR.
|
||
- Fixed: Strife's grenades don't make bouncing sounds.
|
||
- Fixed: Strife's grenades lose 50% of their momentum when bouncing,
|
||
not 30% like in Hexen.
|
||
- Fixed: HexenHack must be reset for each MAPINFO lump being parsed.
|
||
- Turned monster falling damage into a level flag so that it can be
|
||
used in all games, not just Hexen.
|
||
- Added the map's lump name to the savegame information. This is useful
|
||
for those who remember maps by their lump name and not the description.
|
||
- Added a total game time counter and made the total time display on
|
||
the intermission screen operrable. Also added an optional total time
|
||
display for the automap.
|
||
- Added support for full hub intermission statistics. To make this work
|
||
properly level.time is now being reset after changing hubs.
|
||
- Added GZDoom's local SNDINFO/SNDSEQ code. This was supposed to be in
|
||
.96x but that was cancelled before I had the chance.
|
||
- Made DCanvas::FlatFill virtual so it can be overridden by other
|
||
types of canvases (e.g. OpenGL.)
|
||
- Fixed: CR_UNTRANSLATED was uninitialized for FON2 fonts
|
||
- Fixed: Hexen uses a view height of 48, not 41.
|
||
- Changed: Multiplayer weapons will be spawned in coop games now
|
||
unless the player explicitly disables this. There are many WADs
|
||
out there that need the additional weapons in coop games.
|
||
- Added code that remaps MF_NOSECTOR to RF_INVISIBLE for all items
|
||
touched by Dehacked and for ABossEye. MF_NOSECTOR makes any
|
||
item completely deaf so it is very dangerous to use with monsters
|
||
or other things that depend on their sound target.
|
||
- Fixed: The Dehacked code cleared one of the translation flags.
|
||
- Fixed: The dehacked parser must set EnglishStrings to NULL after
|
||
freeing the memory.
|
||
- Copied a fix for restoring the weapon slots from 2.1.0.
|
||
- Fixed: APathFollower::Interpolate needs some NULL pointer checks.
|
||
- Added MF2_NOTELEPORT to ABlood and AIceChunk. Teleporting blood can
|
||
seriously mess up one-time teleporters - plus it looks just weird.
|
||
- Fixed: It was possible to use things through closed walls when the wall
|
||
was further away than 64 map units.
|
||
- Added a check for MF3_BLOODLESSIMPACT to P_LineAttack so that bloodless
|
||
hitscan attacks can be created.
|
||
- Added a check to P_CheckSlopeWalk that prevents sliding when hanging over
|
||
a sloped dropoff.
|
||
- Fixed: The line id hash chains used signed shorts to link their elements.
|
||
This completely broke line manipulation for linedef indices >= 32768.
|
||
- Fixed: Changed PL_SKYFLAT from 0x8000 to 0x10000 because otherwise it
|
||
doesn't work with linedef indices >= 32768. Also expanded sector_t::sky
|
||
from WORD to int to make this work.
|
||
- Added the flag parser fix from GZDoom. It was still incorrect.
|
||
- Added an escape flag to sc_man. This was necessary to parse the frame names
|
||
correctly which can contain backslashes so they must be excluded from
|
||
converting \" to ".
|
||
- Fixed: The 'ELVIS' cheat code wasn't terminated with 255.
|
||
- Fixed: When an object without any death state dies it has to be destroyed.
|
||
- Added 'nofog' parameter to Thing_Move
|
||
- Added a check for Teleport_ZombieChanger to P_TranslateTeleportThings.
|
||
- Fixed: Dumpmap crashed when the loaded map has GL nodes because it tried
|
||
to access the linedef of a miniseg. Needless to say, the BSP that is
|
||
written in this case is completely broken but at least it doesn't crash
|
||
anymore.
|
||
- Fixed: z-momentum application in P_ZMovement was incompatible with
|
||
the original method. Unless MF2_FLOATBOB is set it must be done before
|
||
applying gravity to momz.
|
||
- Fixed: AActor::Massacre caused an infinite loop when it wasn't able to
|
||
hurt the actor.
|
||
- Fixed: Due to movement interpolation the viewsector could be incorrect
|
||
if the actual camera's position and the interpolated position were not
|
||
in the same sector.
|
||
- Fixed: Assigning an empty string to a 'string' object NULLed
|
||
the Chars pointer. This cannot be done because it makes the
|
||
string object invalid.
|
||
- Fixed: Default intermission handling for E1-E3 should only happen when
|
||
playing Doom 1 and Heretic.
|
||
- Fixed: 'Give all' cheat must not try to give an item of type 'All'.
|
||
- Fixed: In rare circumstances DBoundingBox::AddToBox could produce
|
||
incorrect results.
|
||
- Fixed: The node builder still used NO_INDEX for initializing non-existent
|
||
sidedefs.
|
||
- Added MaxStepHeight and MaxDropoffHeight actor properties to DECORATE.
|
||
- Added new code pointers from GZDoom: A_FireAssaultGun, A_FadeIn and
|
||
the target inventory functions. Also added changes to several other
|
||
code pointers.
|
||
- Fixed: The FlameThrowerParts were missing the IF_INVBAR flag.
|
||
- Added a third parameter to A_BFGSpray to customize the amount of damage.
|
||
- Added A_DualPainAttack code pointer submitted by Justin for GZDoom.
|
||
- Fixed: AFatShot must have a height of 8, not 32.
|
||
- Fixed: AFighterPLayer::DoHealingRadius initialized the armor item
|
||
incorrectly so it was ineffective.
|
||
- Fixed: Strife's Brass Key needs a DoomEdNum of 39.
|
||
- Removed all the obsolete code and variables from the keys. With the
|
||
LOCKDEFS lump the original key numbers were deleted anyway and the
|
||
NeedKey messages are taken from the lump now.
|
||
|
||
April 10, 2006 (Changes by Graf Zahl)
|
||
- Fixed: The Teleporter Beacon was missing the pickup message.
|
||
- Made the IronLich's projectiles bright. Using them in non-bright state
|
||
in dark sectors looks truly odd.
|
||
- Fixed: Using bot_observer cleared the FRIENDLY flag off the player.
|
||
- Fixed: Changed some decals from DecalScorch to DecalScorchLower.
|
||
- Fixed: Added the missing intermission lumps and LOCKDEFS to zdoom.wad
|
||
- Changed the damage formula for Strife's dagger. This change has already
|
||
been added to the 2.1.0 source but not to the current version.
|
||
- Added a call to P_HitFriend to A_SentinelRefire to prevent it from shooting
|
||
at friends.
|
||
- Fixed: The Inquisitor's grenades should not teleport.
|
||
- Fixed: The Inquisitor isn't supposed to be thrust by damage so its mass
|
||
has to be increased.
|
||
- Fixed: Strife's Inquisitor can be hurt by radius damage as long as this
|
||
damage comes from a non-Inquisitor.
|
||
- Fixed: AArtiDarkServant::Use must always report successful use of the item.
|
||
This function cannot fail. It either spawns a Minotaur or a new artifact
|
||
but never nothing at all.
|
||
- Fixed: Hexen's temp flames have two spawn IDs each. Since ZDoom doesn't
|
||
support multiple spawn IDs per item I added copies of these objects
|
||
to assign the second set od IDs.
|
||
- Fixed: Hexen's wall torch was missing the MF4_FIXMAPTHINGPOS flag.
|
||
- Fixed: A_CStaffCheckBlink must call A_WeaponReady because otherwise the
|
||
weapon bobbing becomes slightly erratic.
|
||
- Fixed: AGoldWandPuff2 had incorrect values set for flags2.
|
||
- Clamped the vertical speed of Heretic's Mace's balls. When shot at a high
|
||
vertical angle their movement becomes erratic.
|
||
- Fixed: Doom's corpses must clear the MF3_ISMONSTER flag inherited from
|
||
their monster parents.
|
||
|
||
April 9, 2006
|
||
- Fixed: The strupr() implementation in w_wad.cpp relied on compiler-dependant
|
||
behavior.
|
||
- Fixed fix: ParseActorProperties() still wasn't sending + or - to
|
||
ActorFlagSetOrReset().
|
||
- Fixed: [GZ] An item without use state won't be removed when being picked up.
|
||
The call to GoAwayAndDie is missing.
|
||
- Fixed: [GZ] A_GiveInventory sets the amount to give to a value passed to
|
||
this function. This is ok for everything except Health items. They should
|
||
give their original amount multiplied with the passed parameter.
|
||
|
||
April 3, 2006
|
||
- Fixed: Potential buffer overrun when launching timidity.
|
||
|
||
March 13, 2006
|
||
- Fixed: ActorFlagSetOrReset() wasn't receiving the + or - character from
|
||
ParseActorProperties().
|
||
- Fixed: The decorate FindFlag() function returned flags from ActorFlags
|
||
instead of the passed flags set.
|
||
- Fixed: The CHT_CHAINSAW, CHT_POWER, CHT_HEALTH, and CHT_RESSURECT needed
|
||
NULL player->mo checks.
|
||
- Fixed: The "give all" command didn't give the backpack in Doom, and it
|
||
must give the backpack before giving ammo.
|
||
- Fixed: P_SetPsprite() must not call the action function if the player is
|
||
not attached to an actor. This can happen, for instance, if the level is
|
||
destroyed while the player is holding a powered-up Phoenix Rod. As part
|
||
of its EndPowerup() function, it sets the psprite to the regular version,
|
||
but the player actor has already been destroyed.
|
||
- Fixed: FinishThingdef() needs to check for valid names, because weapons
|
||
could have inherited valid pointers from their superclass.
|
||
- Fixed: fuglyname didn't work.
|
||
- Fixed: Redefining $ambient sounds leaked memory.
|
||
- Added Jim's crashcatcher.c fix for better shell support.
|
||
- VC7.1 seems to have no trouble distinguishing between passing a (const
|
||
TypeInfo *) reference to operator<< and the generic, templated (object *)
|
||
version, so a few places that can benefit from it now use it. I believe
|
||
VC6 had problems with this, which is why I didn't do it all along. The
|
||
function's implementation was also moved out of dobject.cpp and into
|
||
farchive.cpp.
|
||
- Fixed: UnpackPixels() unpacked all chunks in a byte, which is wrong for the
|
||
last byte in a row if the image width is not an even multiple of the number
|
||
pixels per byte.
|
||
- Fixed: P_TranslateLineDef() should only clear monster activation for secret
|
||
useable lines, not crossable lines.
|
||
- Fixed: Some leftover P_IsHostile() calls still needed to be rewritten.
|
||
- Fixed: AWeaponHolder::Serialize() wrote the class type in all circumstances.
|
||
|
||
March 12, 2006
|
||
- Fixed: A_SpawnItem() should use CopyFriendliness().
|
||
- Fixed: AExplosiveBarrel should have MF2_MCROSS set.
|
||
- Fixed: Passing 0 numrays to A_BFGSpray should default to 40.
|
||
- Fixed: New A_JumpIfCloser() function.
|
||
- Future-proofing: thingdef.cpp/FindState() allows the 2.1 names for
|
||
SwitchingDecorations.
|
||
- Fixed: ASwitchingDecoration declared itself as deriving from AActor instead of
|
||
ASwitchableDecoration.
|
||
|
||
March 9, 2006
|
||
- Fixed: AWeaponHolder::Serialize() did not call its supermethod.
|
||
|
||
March 1, 2006
|
||
- Rewrote MusicVolumes handling so it's a list and not an array.
|
||
- Removed I_SetMusicVolume(). It isn't used.
|
||
- Moved P_IsFriend(), P_IsHostile(), and P_GetSpecies() into AActor.
|
||
|
||
February 18, 2006
|
||
- Various fixes for compilation with GCC/Linux.
|
||
- Various fixes from Graf Zahl: Wrong blood color with P_BloodSplatter2() and
|
||
P_RipperBlood(). Wrong MF3_BLOODLESSIMPACT check in PIT_CheckThing().
|
||
P_BloodSplatter() used R_PointToAngle(). A_CPosRefire() did not check for
|
||
hitting a friend. A_CentaurDefend() did not clear the reflective flag.
|
||
DHUDMessage::ResetText() did not check for con_scaletext==2. Wrong Raven
|
||
scroller speeds for COMPATF_RAVENSCROLL off. P_Init() should call
|
||
P_InitKeyMessages(). Missing decorate decal code from decallib.cpp. New
|
||
FFontChar1 code only made it into 2.1.0 and not 2.0.x. Missing copy
|
||
constructor for FMusicVolume.
|
||
- Fixed: ACustomInventory::TryPickup() failed to call the superclass
|
||
implementation of the function.
|
||
- Fixed: Friendly pain elementals killed by a player shot friendly lost souls
|
||
that attacked the player. Now those lost souls aren't friendly.
|
||
|
||
February 6, 2006
|
||
- Fixed: Except for A_Explode512, all of Strife's A_Explode functions also call
|
||
P_RecursiveSound.
|
||
- SpectralLightningSpot's RenderStyle is now STYLE_Translucent. It isn't really
|
||
part of the lightning itself, so it should probably not be additive.
|
||
- Fixed: Macil2 and the Oracle are invulnerable to the first stage Sigil, and
|
||
the first Macil should be completely unkillable.
|
||
- Fixed: The FlameThrowerParts' spawn state was unset, and it used a generic
|
||
pickup message.
|
||
- Fixed: Strife step heights vary depending on the type of actor: If it bleeds
|
||
it can go up 16 unit steps, if it's a missile it can go up 4 unit steps, and
|
||
everything else can go up 24 unit steps. And everything can stand over a 32
|
||
unit dropoff. MaxStepHeight and MaxDropOffHeight are now actor properties.
|
||
- Fixed: Strife floating monsters are not blocked by monster blocking lines, so
|
||
they all need to have MF3_NOBLOCKMONST set.
|
||
- Fixed: APowerCoupling::Die() should destroy the unbroken coupling.
|
||
- Fixed: AActor::TakeSpecialDamage() should allow damage if the actor has
|
||
no death state at all. (Taken from GZDoom)
|
||
- Fixed: Killing something that drops an alarm with the second-stage mauler
|
||
would not show the alarm text if it was directly hit by the main torpedo.
|
||
Added a third argument to P_SpawnSubMissile() that indicates what the
|
||
new missile's "target" should be, so if the missile dies right away, it
|
||
has the correct target information.
|
||
- Fixed: Added Graf Zahl's fix for manually closing animated doors with
|
||
something inside them.
|
||
- Fixed: The A key should be bound to +jump by default in Strife.
|
||
- Fixed: F_BunnyScroll() should fill the widescreen border with black, not
|
||
the FinaleFlat.
|
||
- Fixed: Strife linetype 52 can be used to advance to the next map by setting
|
||
its tag to 0. It should also be flagged repeatable.
|
||
- Fixed: A_Look2() is supposed to randomly choose self->SpawnState + 3 if
|
||
MF4_STANDSTILL is unset, not + 4.
|
||
- A_AcolyteDie() now resets the acolyte's RenderStyle to turn off any shadow
|
||
effects they may have.
|
||
|
||
January 24, 2006 -- First changes of 2006! 1.5 months later! :(
|
||
- Added a new level.maptime variable that keeps track of the time you've been
|
||
on a single level and is unaffected by hubs.
|
||
- Fixed: ASoulsphere::Use() could reduce your health.
|
||
- Fixed: cht_Suicide() did not clear the MF2_INVULNERABLE flag.
|
||
- Increased the sidedef limit to 2^32-1.
|
||
- Fixed: Stacked sectors inside a skybox would be drawn from the player's
|
||
origin instead of the skybox's origin, which would easily lead to infinite
|
||
recursion because the engine would try to render the skybox again instead
|
||
of the other side of the stack. In order to avoid any other infinite
|
||
recursion problems, the maximum number of skybox visplanes per scene has now
|
||
been capped at 100.
|
||
- Changed the inventory flag IF_CHEATNOTWEAPON to the weapon flag
|
||
WIF_CHEATNOTWEAPON.
|
||
|
||
December 11, 2005
|
||
- Started integrating changes from 96x into 2.0.99.
|
||
|
||
December 10, 2005
|
||
- Fixed: GetFinaleText() did not null-terminate the string it retrieved.
|
||
- Fixed: When changing levels, sky1pos and sky2pos were not reset to 0.
|
||
- Removed the check for 26,26 at offset 33 in SPC files because somebody found
|
||
a file that had them as 0,0 instead, and some players played it fine.
|
||
- Fixed: Before resorting to "Person", the dialogue code should use the actor's
|
||
tag name as a default name.
|
||
- Increased the Entity's alpha value to 50% to make it more visible.
|
||
- Fixed: F_StartSlideshow() needs to reset any blending.
|
||
- When a Macil speech ends, the level's original music is now restored.
|
||
- Fixed: The music for Strife's slideshows is D_DARK and not D_SLIDE. Go figure.
|
||
|
||
December 4, 2005
|
||
- Removed the ancient and unused Fixed(Mul|Div)_(ASM|C) functions.
|
||
- Discovered the GCC outputs nice code for MulScale and friends, so I removed
|
||
the assembly for those routines in gccinlines.h. Alas, the same cannot be said
|
||
of DivScale's variants.
|
||
- Removed the assembly code for BigShort and BigLong and replaced it with
|
||
compiler intrinsics provided by VC++.
|
||
|
||
December 1, 2005
|
||
- Backported miscellaneous sc_man.cpp fixes from 2.1.0.
|
||
- Fixed: P_BobWeapon() checked flags instead of WeaponFlags for WIF_DONTBOB.
|
||
- R_ProjectSprite() now checks for NULL things passed to it.
|
||
- Fixed: The game crashed if a slope thing of type 9500 or 9501 was placed
|
||
directly on its target line. Now you get a warning in the console instead.
|
||
- Returned Berserk's behavior to giving you 100 health instead of 100% health.
|
||
- Changed: When no screenshot_dir is specified, the game now tries to save
|
||
screenshots to the program directory instead of the current directory. If
|
||
you really want screenshots to be saved to the current directory, you can
|
||
do so by setting screenshot_dir to "."
|
||
- Fixed: StringFormat::VWorker cleared the zero flag for numbers. (I know I
|
||
tested this, so I'm not sure when it went wrong.)
|
||
- Fixed: The game did not check if actors had pain states before putting them
|
||
in their pain states.
|
||
- Fixed: The shazam cheat could not deactivate the Tome of Power, nor did it
|
||
display any text informing you of its action.
|
||
- Added additional decals from Graf Zahl's DECALDEF.
|
||
- Updated the obituaries in english-us.txt for Heretic to reflect the published
|
||
names of various Heretic monsters.
|
||
- Fixed: There is no reason why the Heretic and Hexen status bars should clamp
|
||
the displayed health to a maximum of 100.
|
||
- Fixed: P_PlayerInSpecialSector() duplicated the damage done by
|
||
P_PlayerOnSpecialFlat().
|
||
- Fixed: The actor serializer was off by one when checking the number of
|
||
conversation nodes in a script.
|
||
- Fixed: In Strife dialogues, yes texts are printed even when it jumps
|
||
immediately to another dialogue node. I think this is bad design, and the
|
||
yes text should be part of the normal dialogue, but the person in the
|
||
east room of MAP27 abuses this, so I need to support it too. This also means
|
||
the notify text is no longer hidden when the menu is up. (Maybe they
|
||
mistakenly made it jump, and you were really supposed to try talking to him
|
||
again when he tells you the master doesn't like visitors.)
|
||
- Fixed: Anybody in Strife who does not have their name provided in their
|
||
dialogue script should use the default name "Person".
|
||
- Fixed: P_RecursiveSound() did not consider closed split doors as closed.
|
||
- Fixed: MummyFX1 and Whirlwind should have the MF2_SEEKERMISSILE flag set.
|
||
- Fixed: A_VileChase() did not clear the MF3_CRASHED flag.
|
||
- Fixed: P_SpawnPlayer() should always attach the StatusBar if the
|
||
consoleplayer is spawning.
|
||
- Fixed: HateTarget did not take damage due to its lack of a death state.
|
||
- Fixed: CheckInventory(), TakeInventory(), and GiveInventory need NULL type
|
||
checks.
|
||
- Fixed: SC_GetString() did not understand escaped quote characters in strings.
|
||
- Fixed: There were synchronization issues while drawing the console. Calls to
|
||
DrawTexture() can trigger input events to be processed, which can cause the
|
||
contents of the console to change WHILE THE CONSOLE IS BEING DRAWN. So now
|
||
any changes that would alter the contents of the console text buffer are
|
||
deferred until after the buffer is drawn, and a copy of the command line is
|
||
drawn instead of the real command line.
|
||
|
||
November 22, 2005
|
||
- Fixed: Dssswtchx and dspistol are obviously wrong choices for Strife menu
|
||
sounds. I don't think it uses anything for those sounds, but I picked analogs
|
||
for them anyway.
|
||
- Fixed: Merchants ignored attacks from "silent" weapons.
|
||
- Fixed: Strife humans did not play their "yeargh!" sound for their zap deaths.
|
||
- Added a new Travelled() method for inventory items. This is called each time
|
||
an item travels to a new map and gives it a chance to perform any needed
|
||
reinitialization. Specficially, PowerTargeter needs it to set the player's
|
||
psprites again.
|
||
- Fixed: Dropping coins should do so in increments of 50 if you have enough, not
|
||
increments of 1.
|
||
- Added IF_UNDROPPABLE to HealthTraining and GunTraining. Because HealthTraining
|
||
also gives GunTraining when picked up, you could cheat by dropping the
|
||
HealthTraining item and picking it up to get as many GunTraining upgrades as
|
||
you wanted. GunTraining doesn't really need to be undroppable; the flag is just
|
||
there for it for the sake of symmetry.
|
||
- Fixed: It looks like just about everything in Strife should have MF2_FLOORCLIP
|
||
set. Strife probably applied floorclip to everything without MF_NOGRAVITY set.
|
||
- Fixed: The perfectly vertical missile movement fix was backwards with regards
|
||
to damage values.
|
||
- Fixed: AddCommandString() scanned past terminating '\0's in unclosed
|
||
strings while searching for semicolons that break commands. Thus, if the
|
||
previous command added had a semicolon in just the right place, it could
|
||
try to add it again.
|
||
- Fixed: The fly cheat did not check to make sure you had a body.
|
||
|
||
November 18, 2005
|
||
- Fixed: You could create a chain reaction where merchants would continually
|
||
enter their pain state because there was a delay between the time when they
|
||
alerted and the time they alerted others.
|
||
- Fixed: If the Inquisitor died while flying, it would continue to play the
|
||
flying sound.
|
||
- Fixed: The LEGO cheat didn't check if the Sigil was successfully added and
|
||
would set the player to the NULL weapon if it wasn't (which happens with
|
||
the shareware).
|
||
- Fixed: Macil was alerted by water splashing.
|
||
- Reworded some of the compatibility options menu items so they fit on
|
||
the screen when playing Strife.
|
||
- Fixed: The Oracle's Death checked the wrong quest item to determine if
|
||
you had already killed Macil.
|
||
|
||
November 17, 2005
|
||
- Fixed: Various Strife actors had MF_COUNTKILL that didn't need it:
|
||
Beggar, KneelingGuy, Macil1, RatBuddy, and AcolyteToBe.
|
||
- Fixed: PowerMask and PowerShadow both need the IF_HUBPOWER flag.
|
||
- Fixed: The Strife quest log should be initialized with the text "Find
|
||
help".
|
||
|
||
November 14, 2005
|
||
- Fixed: ClientObituary() crashed if the killing player didn't have a
|
||
weapon.
|
||
- Fixed: The Touch functions assumed the toucher was a valid player and
|
||
crashed if it wasn't.
|
||
- Fixed: APlayerPawn::Die() assumed the actor was always associated with
|
||
a player and crashed if it wasn't and you had weapon dropping turned on.
|
||
- Fixed: There were two pfile variables defined in R_InitTextures().
|
||
|
||
November 13, 2005
|
||
- Fixed: The user-configurable BOOM startup strings were always printed,
|
||
even if they were empty.
|
||
|
||
November 8, 2005
|
||
- Fixed: APowerStrength::GetBlend()'s equation did not match Doom's.
|
||
- Fixed: If you have weapon sprites in a wad and try to use a frame from
|
||
that sprite that does not exist, the game accesses might crash. Fixing
|
||
this involves two things: Make the range checks in R_DrawPSprite()
|
||
unconditional, so they exist in both debug and release builds. Also add
|
||
a check for the Null texture to catch "holes" in the available frames.
|
||
- Fixed: Setmodeneeded is always true before starting a game, because it
|
||
only gets cleared when the StatusBar is around. The most obvious
|
||
manifestation of this problem is that you cannot move left and right
|
||
in the video modes menu before starting a game.
|
||
- Fixed: The "give all" cheat did not give a backpack, and the non-console
|
||
equivalents always gave you a backpack, even if you weren't playing Doom.
|
||
- Fixed: The "give armor" cheat gave you armor with a SavePercent of .5 in
|
||
Heretic. This would be correct for the others games, but not for Heretic,
|
||
where .5 is what the lesser armor provides.
|
||
|
||
November 7, 2005
|
||
- New: Games saved for different PWADs but the same IWAD now show up in
|
||
orange on the save/load menu.
|
||
- Fixed: R_RenderViewToCanvas() did nothing if viewactive was false. Thus,
|
||
savegame screenshots would be garbage if you saved while looking at the
|
||
automap.
|
||
- To avoid potential conflicts with the Windows headers, the LONG and SHORT
|
||
routines were renamed to LittleLong and LittleShort. BELONG and BESHORT
|
||
were also renamed to BigLong and BigShort to match.
|
||
- Fixed: S_ChangeMusic() had a cast from 'const char *' to 'char *' that was
|
||
missed by VC++ 7.1 and GCC, but not the latest VC++ 2005 beta.
|
||
- Fixed: Although bit 27 of the actor's flag is now used for something
|
||
different than in Doom, it's okay to specify it by number in a Dehacked
|
||
patch, because it's used to set the color translation. When the translation
|
||
is set, it will be 0'ed then.
|
||
- Fixed: FActorInfo::ApplyDefaults() should initialize datastr to NULL.
|
||
- Fixed: TArray::Delete's parameter should be unsigned.
|
||
- Fixed: The fix for rotating polyobjects broke polyobject doors.
|
||
- Fixed: Using the IDBEHOLDS cheat did not give you full health.
|
||
- Backported the fix for scrolling Heretic/Hexen/Strife specials from 2.1.0.
|
||
- Increased KneelingGuy's height to 17 so that you cannot step on top of the
|
||
projector without jumping.
|
||
- Added a confirmation screen for the menu choices that reset your options.
|
||
- Added a new automap menu underneath the display options menu. Moved all the
|
||
automap options into it and added a few new ones.
|
||
|
||
November 2, 2005
|
||
- Fixed: WIF_NOAUTOFIRE did not actually do anything.
|
||
- Added zloba's save/load console commands.
|
||
- Adjusted Static_Init:Init_Color so that you don't have to specify both
|
||
fog and color with it.
|
||
- Fixed: A_GenWizard() and A_SpawnBishop() did not decrement total_monsters if
|
||
the monster spawned inside something and needed to be destroyed.
|
||
- Fixed: Hexen monsters also move faster in nightmare mode.
|
||
- Added a map color customization menu.
|
||
- Renamed the "Standard map colors" option to "Use traditional Doom map colors".
|
||
- Fixed: Switching the MIDI device after a one-shot song had finished would
|
||
try to restart the song.
|
||
- Removed the BufferReturnEvent from music_midi_stream.cpp, since it was
|
||
unused.
|
||
|
||
October 26, 2005
|
||
- Merged in Chris's Linux patch.
|
||
- Fixed: Redefining a decal that had already been assigned to an actor would
|
||
not update the actor's reference to the decal.
|
||
- Fixed: CheckForPushSpecial() could pass a NULL actor to P_ActivateLine() if
|
||
a missile did not have an "owner."
|
||
- Fixed: snd_reset assumed GSnd was valid, but it wouldn't be if you passed
|
||
-nosound on the command line.
|
||
- Fixed: When a doll-spawned minotaur in Hexen died, it checked to see if any
|
||
other minotaur were still up for that player. It assumed there were no free-
|
||
standing minotaurs and crashed if there were.
|
||
|
||
October 24, 2005
|
||
- Added armor->BecomeItem() calls to ABasicArmorPickup::Use() and
|
||
ABasicArmorBonus::Use(). AActor::AddInventory() no longer calls BecomeItem()
|
||
itself.
|
||
|
||
October 22, 2005
|
||
- Fixed: FloorAndCeiling_LowerRaise would move one or the other but not both.
|
||
- Fixed: PIT_RadiusAttack() calculated negative distances for things exploding
|
||
directly above other things.
|
||
- Fixed: Ripper missiles ignored MF3_BLOODLESSIMPACT and always sprayed blood
|
||
onto the walls.
|
||
- Fixed: Firing a missile into a wall while standing right next to the wall
|
||
would not cause any specials to activate on that wall.
|
||
|
||
October 18, 2005
|
||
- Changed: DThinker::DestroyThinkersInList() performed a pointer cleanup after
|
||
destroying each and every thinker. The better thing to do is clean up in the
|
||
functions that call it: DestroyAllThinkers() and DestroyMostThinkers().
|
||
|
||
October 17, 2005
|
||
- Fixed: BloodySkull and IceChunkHead are supposed to subclass PlayerChunk, not
|
||
PlayerPawn.
|
||
- Fixed: Behaviors for Generic_Floor change types 2 and 3 were swapped.
|
||
- Fixed: Non-320x200 INTERPICs once again display properly.
|
||
- Changed drawing operations in F_BunnyScroller() so that non-320x200 background
|
||
images should work.
|
||
- Fixed: The m_Dist member of DPolyAction was declared signed when it should have
|
||
been unsigned.
|
||
- Fixed: SetScriptState() in p_acs.cpp did not check to make sure the ACS thinker
|
||
actually existed.
|
||
- Fixed: Crashing when travelling between maps in a hub. For some reason the list
|
||
of pointers for AActor used 12-byte-wide pointers-to-members. Every other class
|
||
(including those that derive from AActor) use 4-byte-wide values. This left
|
||
DObject::PointerSubstitution() and DObject::DestroyScan() able to identify only
|
||
the first pointer declared in AActor. Rather than try to figure out why
|
||
pointers-to-members of AActor are weird, I decided to revert to my original
|
||
implementation: An array of offsets into the class. GCC complained about this,
|
||
which is why I switched to a pointers-to-members implementation. But I found a
|
||
way to make GCC compile it without warning, so yay!
|
||
|
||
And since I was working with this code anyway, I decided to make a change that-
|
||
is hopefully a speed optimization. Rather than walking up the chain of TypeInfos
|
||
every time an object's pointers need to be checked, I now do this once and build
|
||
an array of every pointer in a class instance (as opposed to just those pointers
|
||
defined for that class and not any of its superclasses). This should mean fewer
|
||
scattered memory accesses and hence, better cache utilization.
|
||
|
||
(Question: Why did this problem show up in 2.0.97 and not 2.0.96? The only
|
||
relevant change to the code was a macro to make the array const for VC++ but not
|
||
for GCC, because some GCC optimizations tried to write to it at runtime despite
|
||
its constness.)
|
||
|
||
September 26, 2005
|
||
- Released this old code as 2.0.97.
|
||
- Backported the text-based LANGUAGE and IMF code from 2.1.0.
|
||
- Updated to zlib 1.2.3.
|
||
|
||
February 21, 2005
|
||
- Provided alternate versions of the TArray-related friend template functions for
|
||
the string and name classes. I have no idea which compiler is right, but VC++ is
|
||
certainly nicer about it.
|
||
|
||
February 19, 2005
|
||
- Fixed: In C mode, SC_GetString() would not consider '-' to be a token.
|
||
- Added a global name table.
|
||
|
||
February 18, 2005
|
||
- Added lots of explicit casts and changed some types to turn off 64-bit compatibility
|
||
warnings.
|
||
- Added a string class I've been playing with for a while now and made some
|
||
adjustments to TArray so that it can work with non-basic types.
|
||
|
||
February 11, 2005
|
||
- Removed the MOD_FIRE hack in PIT_RadiusAttack and replaced it with a new thrustless
|
||
flag to P_RadiusAttack.
|
||
- Removed the multiplayer check from AInventory::ShouldRespawn(). Now the dmflag is
|
||
always respected, even without alwaysapplydmflags.
|
||
- Added a check for a NULL StatusBar to PlayerIsGone() in d_net.cpp.
|
||
- Fixed: ADehackedPickup::TryPickup() set the MF_DROPPED flag. This flag is now set
|
||
by default, so it should clear it instead. This kept hacked weapons from staying
|
||
and respawning, because the RealPickup it tests against was always flagged as
|
||
dropped.
|
||
- Fixed: The MagePlayer used A_Scream instead of A_PlayerScream when he died.
|
||
- Fixed: The Heresiarch spawned new balls above its head after it killed its target
|
||
and re-entered its SpawnState.
|
||
- Fixed: Using chasecam while spying on another player would not show that player.
|
||
- Rewrote the spy code to not need displayplayer.
|
||
- Switched to the combination of DirectDrawCreate/QueryInterface to obtain an
|
||
IDirectDraw2 interface. That should be slightly more compatible, since
|
||
DirectDrawCreate can create an IDirectDraw interface even if it isn't properly
|
||
registered.
|
||
|
||
February 10, 2005
|
||
- Fixed: The screen fading ACS commands did not work when viewing through a camera
|
||
because FBaseStatusBar::BlendView() did not think there was a player to get those
|
||
values from. Now, the blend comes from either the player viewing from or the
|
||
console player if the current view is not from a player.
|
||
- Fixed: Returning to a previously visited level in a hub with fewer players than you
|
||
had when you left the level would result in "zombie" bodies from the former players.
|
||
The fix is in G_UnSnapshotLevel(): After restoring the level, any actors that point
|
||
to a player who is no longer in the game are destroyed.
|
||
- Fixed: P_ExplodeMissile() should zero the projectile's speed before putting it into
|
||
its DeathState, not after. Strife's flamethrower needs it like this, and I'm not
|
||
sure when or why it was moved to happen after the state change.
|
||
- Fixed: R_DrawSkyBoxes() needs to save and restore viewx and viewy as well as viewz
|
||
for drawing masked items.
|
||
- Fixed: P_MorphPlayer() did not properly transfer ownership of inventory items, so
|
||
when it destroyed the player's armor, it also unlinked anything after the armor in
|
||
the player's inventory.
|
||
- Fixed: The Hexen players should call A_FireScream() on the first frame of their
|
||
fire death, not the first shared frame of their fire death.
|
||
- Attached obituaries to the projectiles used by Doom's projectile weapons, so they
|
||
can have obituaries again. This is just something I put off finishing when I changed
|
||
from a means-of-death system to a damage type system.
|
||
- Fixed: Pain Elementals did not transfer their friendly flag to the Lost Souls
|
||
they spawn. And since I've got the same code doing this sort of thing in several
|
||
places, I replaced them all with a call to the new method AActor::CopyFriendliness.
|
||
- Fixed: Bots are idiots after co-op level changes because the CajunMaster forgets
|
||
about them and so doesn't tell them to do anything different from what they were
|
||
when the level change happened.
|
||
- Fixed: G_FinishTravel() needs to retrieve the next player before changing the
|
||
current one's statnum.
|
||
- Made some fixes to SDLVideo's Lock() and and Update() synchronization.
|
||
- Fixed: DSimpleCanvas::Lock() and ::Unlock() did not properly use the lock count.
|
||
- Fixed: In Strife, the fastCrushAndRaise ceilings (line types 6 and 77) are twice
|
||
as fast as their Doom counterparts.
|
||
- Fixed: Strife auto-uses the best ammo first, not the worst. I got confused because
|
||
in Strife ARM1 is the best armor, but in Doom it's ARM2 that is best.
|
||
- Fixed: Strife does not double ammo at it's highest skill level.
|
||
- New: Using Degnin Ore will drop it, similar to the Teleporter Beacon.
|
||
- Fixed: In nightmare skill, every actor is spawned with a reactiontime of 0. This
|
||
make's Strife's HE Grenades explode immediately, because they use their reactiontime
|
||
as a countdown timer. The solution: Only set the reactiontime to 0 for monsters.
|
||
(Strife may not do this at all. I'm not sure.)
|
||
|
||
February 9, 2005
|
||
- New feature: Missiles with negative damage now give you health.
|
||
- Changed P_GiveBody so that it works with any actor, not just players.
|
||
- Fixed: Picking up a BasicArmorPickup without any existing BasicArmor gave you
|
||
a new BasicArmor without calling BecomeItem to unlink it from the world. Since
|
||
there are probably other areas where this happens, and it's kind of easy to forget
|
||
- Added a division-by-0 check to the very end of P_HitSlideLine for the very rare
|
||
cases when inter3 ends up being 0.
|
||
- Clamped the upmove speed in P_PlayerThink() to avoid super fast speeds from
|
||
joystick users.
|
||
- Fixed: A_SorcererRaise() did not transfer friendliness info to the new D'Sparil.
|
||
- Added: Trying to use actors that have the UsePuzzleItem special now works just
|
||
like trying to use a wall with the same special: You use the item if you have it,
|
||
and you say "hmm" if you don't.
|
||
- Fixed: APuzzleItem::Use() should not remove the item from the inventory but let
|
||
the caller do it instead.
|
||
- Fixed: P_TranslateLineDef() should clear the ML_MONSTERSCANACTIVATE flag on lines
|
||
with ML_SECRET set. Otherwise, monsters can open otherwise secret doors in Doom
|
||
format maps.
|
||
- Renamed the Porkalator's missile sprite from EGGM to PRKM, so it doesn't have the
|
||
same name as the Morph Ovum's missile.
|
||
- Fixed: The warp cheat was always applied to the local player and not the player who
|
||
used it.
|
||
- TypeInfo::CreateDerivedClass() now initializes OwnedStates and NumOwnedStates for
|
||
actors.
|
||
- Fixed: PrepWall and PrepLWall clamped the final texture column so that it was not
|
||
visible unless it was fully visible.
|
||
- Fixed writing of RDosPlay raw songs. It was a very very very stupid mistake: I had
|
||
the order of the register and data bytes reversed. Now it works fine, and since it
|
||
took me a while to figure out the problem, ZDoom can now play raw OPL songs.
|
||
|
||
February 7, 2005
|
||
- Added the writeopl command to write a song in RDosPlay raw OPL format. It's usage is:
|
||
writeopl [songname] <filename>
|
||
If the currently playing song is a MUS song being played through the OPL emulation,
|
||
then you just need to specify the filename. Otherwise, you need to provide the
|
||
songname (such as D_E1M1) as well. Unfortunately, the result is unplayable with
|
||
AdPlug, so I must be doing something wrong.
|
||
|
||
February 4, 2005
|
||
- Merged in Graf Zahl's Caverns of Darkness patch.
|
||
- Fixed: Using the screenshot command to specify a filename without any extension
|
||
automatically adds the extension.
|
||
|
||
February 3, 2005
|
||
- Played around with polymost some more. The good: Wall projection is now totally
|
||
independant of the non-polymost code, so walls don't get clipped to what would have
|
||
been the screen boundaries without true look up/down. With the filled polygon mode,
|
||
it looks awesome. The bad: I'm getting precision problems when clipping the left
|
||
side of walls to SCISDIST. This problem is not present when clipping the right side,
|
||
and it's not present in jfDuke, so what am I doing wrong? Setting SCISDIST to a large
|
||
value like 128 makes the problem disappear, but that's much too large. Someday, when
|
||
it can handle doing a second pass to draw behind you, SCISDIST needs to be as small as
|
||
possible to avoid a visible gap between the front and back views.
|
||
|
||
February 2, 2005
|
||
- Added a damagetype parameter to AActor::TakeSpecialDamage(). The default implementation
|
||
of this function now uses it to reject damage if the actor doesn't have a matching
|
||
death state. (Meaning, you can leave an actor without a normal death state, and it will
|
||
only take damage from special attacks.) Since this negates the need for A_TreeDeath,
|
||
that function is gone.
|
||
- Fixed: The adjustment for negative y-offset, non-power-of-2-height textures is
|
||
now only done for textures aligned at the top and not the bottom.
|
||
- Fixed: APowerFlight::DrawPowerup() did not check if SPFLY0 actually existed before
|
||
using it.
|
||
- Fixed: P_SpeekerMissile() did not check for zero-speed actors, so you could get a
|
||
division by zero error if it needed to move vertically.
|
||
|
||
January 30, 2005
|
||
- Threw together a quicx mock-up of a polymost-based renderer. It is essentially
|
||
just the standard software renderer with some parts commented out and the clipping
|
||
done with polymost instead of a few one-dimensional arrays. The display itself is
|
||
just the standard view with the polymost view overlayed in wireframe.
|
||
|
||
January 29, 2005
|
||
- Fixed: BOOM-style carrying floors that use speeds values less than STOPSPEED
|
||
no longer change the actor's momx and momy but are passed as extra parameters
|
||
to P_XYMovement(). Faster speeds still change momx and momy, so conveyor belts
|
||
can fling objects off of them.
|
||
- Fixed: Items in inventory would "scroll" on scrolling floors.
|
||
- Fixed: Every place that copies the friendly flag from one actor to another also
|
||
needs to copy the FriendPlayer.
|
||
- Fixed: In A_Chase(), a friend's selection of target based on who last hurt the
|
||
player did not take into consideration that a friend may have accidentally hurt
|
||
the player.
|
||
- Fixed: P_NightmareRespawn() did not copy a monster's custom translation to
|
||
its new body.
|
||
- Fixed: FMODStreamCapsule::Play() did not record the channel the stream was
|
||
playing on, so you could not change its volume during playback.
|
||
- Added the sucktime mapinfo option. This is the time, in hours, that the
|
||
player must play before the intermission tells them their time sucks. If this
|
||
is 0, then they cannot suck. If they do suck, their time is still shown
|
||
(unlike Doom) in the normal spot, with the suck above it. I had to shift the
|
||
positions of the time displays in the Doom intermission a little so that there
|
||
was room for the hour field. This is also retrievable with the GetLevelInfo()
|
||
command by passing LEVELINFO_SUCK_TIME.
|
||
- Fixed: Using the suicide cheat on the "end of game hell hack" on E1M8 would
|
||
infinitely loop because that sector type actually prevents you from dying,
|
||
but the cheat code was waiting for you to die.
|
||
|
||
January 27, 2005
|
||
- Added mouse handling to the testpolymost screen so that I can actually drive
|
||
it. That let me find a few more bugs in my port of the code that needed to be
|
||
fixed.
|
||
|
||
January 26, 2005
|
||
- Changed the Puffy actor (used by Heretic's weredragon/beast's fireball trail)
|
||
to do 0 damage. Similarly, A_LastZap() now sets the projectile it spawns to
|
||
do 0 damage so it can be once again like Hexen.
|
||
- Fixed: Picking up an ammo item for the first time with more than the max
|
||
amount for that ammo type would let you get more than the max.
|
||
- Fixed: Specifying a defaultmap in MAPINFO disabled lax monster activation
|
||
checking instead of deducing it from the game's Hexen/not-Hexen status.
|
||
- Fixed: Mirrors were accumulated to the WallMirrors list while viewing the
|
||
automap, so after you turned the map off, a few thousand mirrors could be
|
||
processed, resulting in a noticable delay before the view became visible.
|
||
- Added support for using the Teleport_NewMap class of specials with title maps
|
||
so that you can use more than one map as a title map. Using the gametype()
|
||
ACS function will return GAME_TITLE_MAP if the map is being used for a title
|
||
display instead of regular play.
|
||
- Added a fourth parameter to ThrustThing to accept a TID of something to
|
||
thrust.
|
||
- Fixed: Deactivating an actor mover without activating it first reset its
|
||
target's flags to 0.
|
||
- Fixed: Picking up two or more berserk packs only gave the red tinting for
|
||
the first one.
|
||
- Fixed: Monsters following a path entered their see state whenever they
|
||
reached a patrol point. I don't know what I was thinking when I did that.
|
||
- Fixed: Since pre-2.0.90 demos no longer play back, they should be rejected
|
||
without even trying to play them. Similarly, new demos need to be
|
||
recorded indicating they won't play back with earlier game versions.
|
||
Unfortunately, I didn't bump the demo version between 2.0.63a and 2.0.90, so
|
||
anything pre-2.0.97 won't play with 2.0.97, even though there's probably
|
||
no changes that would cause desynching between 96 and 97. Oh well.
|
||
- Fixed FBaseStatusBar::DrBNumber(Outer) to work when some of the big number
|
||
graphics are missing.
|
||
|
||
January 15, 2005
|
||
- Fixed: ACS cos and sin were using signed shifts when calculating the fineangle.
|
||
|
||
January 13, 2005
|
||
- Fixed: Instead of assigning the empty sound a basepriority of -1000,
|
||
S_StartSound() should not even attempt to play it.
|
||
- Fixed: FCanvasTextureInfo::Add() did not change the FOV when reassigning an
|
||
existing camera->texture mapping.
|
||
- Fixed: SetCameraToTexture did not check if the texture name actually existed as
|
||
a texture. It just assumed it did.
|
||
|
||
January 10, 2005
|
||
- Fixed: P_MorphPlayer() needs to set the player's momx and momy to 0, because
|
||
morphing doesn't maintain the player's momentum.
|
||
- Fixed: The Cyberdemon, SpiderMastermind, AlienSpectre*, Crusader, and
|
||
Programmer need MF3_DONTMORPH set. Otherwise, morphing them and killing them
|
||
before they unmorph will skip any of their special death actions. Technically,
|
||
the Inquisitor doesn't need it set, but he's a boss monster, so it seems best
|
||
if he can't be morphed. (For that matter, should any of the mechanical monsters
|
||
in Strife be morphable, since they're not organic?)
|
||
- Redid: Invnext and invprev wrap around the inventory list.
|
||
- Unmorphing a player now removes the weapon(s) they received in their morphed
|
||
form.
|
||
- Redid the dehsupp fix from March 22, 2002.
|
||
|
||
January 8, 2005
|
||
- Fixed: Dead players could still be morphed, at least with the morphme cheat.
|
||
I'm not sure if morph projectiles did it or not, but now they definitely don't.
|
||
- Added a call to SN_StopAllSequences() inside S_StopAllChannels(). This
|
||
prevents moving sector sounds from playing during the finale (and any other
|
||
time when sound effects were supposed to have been stopped).
|
||
- Fixed: R_DetailDouble() must not do anything when viewactive is false.
|
||
|
||
January 7, 2005
|
||
- Ported the polymost visualization code from Ken's prototype so that I can
|
||
verify the correctness of my C++ port. Which was not quite correct. :-(
|
||
|
||
January 5, 2005
|
||
- Fixed: R_SetupBuffer() calculated ylookup for the height of the screen, and
|
||
not the height of the render target. This meant using camera textures taller
|
||
than the screen would probably crash. But wait! There's more! new_visplane
|
||
must also allocate top and bottom arrays wide enough for any view, not just
|
||
the screen. So I decided to just make it allocate enough for MAXWIDTH.
|
||
- Removed some possible unused variable warnings spewed by GCC.
|
||
- Fixed: The parser for DEM_SUMMON(FRIEND) tested if type was NULL when it
|
||
should have tested typeinfo instead.
|
||
- Changed the actor defaults for GCC to use a function to initialize the
|
||
default actors instead of an initializer list. With newer GCC versions, I
|
||
can no longer count on variables being emitted in the same order they are
|
||
defined, so using an initializer list is impossible. This looks like it adds
|
||
~300k to the executable, which I suppose isn't too bad.
|
||
|
||
January 4, 2005
|
||
- Changed the object pointer offset lists to not be const when compiling with
|
||
GCC. Some versions and options cause GCC to try to initialize them at
|
||
run-time, even though they are read-only and therefor protected from
|
||
writing.
|
||
- Added Makefiles for building with MinGW. Since Chris did the hard part by
|
||
posting a Makefile for the main exe on the forum, I only needed to make
|
||
Makefiles for the auxilliary projects. And then I spent some time porting
|
||
ccdv to Win32, so the make output will look pretty.
|
||
|
||
January 3, 2005
|
||
- Fixed: The self-modifying code in tmap3.nas was still in the .data section
|
||
instead of .rtext, so it couldn't be used with data-execution prevention
|
||
enabled.
|
||
|
||
January 1, 2005
|
||
- Fixed: ParseDecorate() needlessly allocated new TypeInfo objects.
|
||
- Fixed: The status bar constructor did not initialize CPlayer. Thus, when
|
||
the Doom status bar's AttachToPlayer method was called it would not do
|
||
the proper face initialization if the status bar was freed and then
|
||
reallocated in the exact same spot. This bug didn't show up in the debug
|
||
build, because the debug CRT automatically fills newly freed and allocated
|
||
memory.
|
||
- Fixed: P_SpawnMapThing() does not need a special check for the Lost Soul.
|
||
|
||
December 24, 2004
|
||
- New: Instead of using a static image as a title, you can now use a map.
|
||
Just create it as normal, being sure to do something interesting with
|
||
scripting, and rename it TITLEMAP. It will load just like a normal map,
|
||
but it will behave like a title picture.
|
||
- Fixed: The intermission did not compensate for non-4:3 aspect ratios.
|
||
- Fixed status bar border for widescreen ratios other than 16:9.
|
||
- Corrected clean scaling calculations for widescreens.
|
||
- Changed: Giving a BasicArmorBonus now also multiplies the original amount
|
||
by the specified amount instead of just using the specified amount.
|
||
- Fixed: When P_SpawnPlayer() transfers a voodoo doll's inventory to the new
|
||
player, it also needs to transfer the InventoryID property so that items
|
||
picked up later won't receive the same ID as an item they already have.
|
||
- Fixed: ArtiPoisonBag::BeginPlay() did not call the superclass's version of
|
||
the function.
|
||
- Changed A_FireScreamReplace to A_FireScream. Now it plays the sound itself.
|
||
On a related note, moved A_ClericBurnScream to the start of the ClericBoss's
|
||
flaming death and changed the old instance back to A_Scream.
|
||
- Fixed: Forgot to delete some old code in AActor::Tick().
|
||
- Fixed: The second sidedef-only constructor for DScroller did not set up an
|
||
interpolation.
|
||
- Fixed: R_DrawSkyBoxes() initialized the clipping drawseg's siz values to
|
||
1<<31, which is actually INT_MIN, not INT_MAX!
|
||
- Fixed: Some properties were not properly transferred when unmorphing an
|
||
actor.
|
||
- Fixed: You got HOM around the status bar in widescreen mode if you didn't
|
||
scale the status bar.
|
||
- Fixed: You could use the down arrow key to select blank entries on the last
|
||
line in the video mode menu if that line was not full.
|
||
- Fixed: The backpack handled pickups for everything after you got one.
|
||
|
||
December 23, 2004
|
||
- Made the bottom of the viewborder visible when the status bar doesn't cover
|
||
the full width of the screen and no border would normally be visible.
|
||
- Added SetAmmoCapacity (str typename, int maxamount) and
|
||
GetAmmoCapacity (str typename) ACS commands. Also added the ACS log command.
|
||
It is exactly like printbold, except it prints directly to the console instead
|
||
of the middle of the screen. BTW, ACS has static local variables ala C now.
|
||
They are exactly the same as map variables, except they can only be used in
|
||
the script or function that defines them.
|
||
- Fixed some fullscreen pages to work properly with non-4:3 aspect displays.
|
||
- Fixed DCanvas::DrawTexture() so that all virtual sizes (not just 320x200wide)
|
||
work with non-4:3 aspect screens. (So long as the virtual size is 4:3.)
|
||
|
||
December 22, 2004
|
||
- Fixed: The backpack was not added to the player's inventory, although there
|
||
was code present to handle removing it from the inventory.
|
||
- Loading a BEHAVIOR without any scripts but with other content crashed.
|
||
- More revelations with the sprite splitting experiment: Drawsegs are not
|
||
always created when you might think they are. Probably the biggest problem
|
||
is when you look at a line straight-on, so you see the sectors on each side
|
||
of it but not the line itself. I conceded defeat and stuck an #if 0 around
|
||
the related code. If I or someone else want to revisit it later, it's still
|
||
there but inactive. I don't think it's worth the effort to make it work
|
||
properly. A z-buffer would be much easier, more reliable, and possibly even
|
||
quicker when there are a lot of two-sided lines in view. So the solution
|
||
seems obvious: Use hardware acceleration and let it worry about sprite
|
||
clipping. Or stick with the way things are and ignore it. :-) (Community
|
||
Chest 2, MAP15, building number 4 makes a great test-case for this, BTW.)
|
||
|
||
December 21, 2004
|
||
- Messed around with splitting sprites along drawsegs some more. This is far
|
||
from being as straight forward as I had thought. One unexpected problem I
|
||
realized: Most (if not all) of the sprites that stand on the ground are
|
||
actually sunk into the ground, but splitting sprites is not a win unless you
|
||
clip them to the floor and ceiling. So I tried bumping the sprites up so that
|
||
they are aligned with the bottoms of their actor so I could clip them to the
|
||
floor. Now it looks much better. When it works. Unfortunately, there are
|
||
lots of cases that still don't work properly.
|
||
|
||
December 20, 2004
|
||
- Added some code to split sprites along drawsegs.
|
||
- Changed the sprite-in-front of drawseg calculations. Now it compares inverse
|
||
Z values in screen space.
|
||
- Fixed: The MinotaurFriend targetted friendlies other than itself.
|
||
- Fixed: An actor's floorpic was not serialized by name.
|
||
- Fixed: Each piece of Hexen armor only gave you one AC.
|
||
- Fixed: Morphing a monster didn't copy the original monster's friendliness and
|
||
TID hating to the morphed version.
|
||
|
||
December 18, 2004
|
||
- Fixed: Slideshows in Strife are supposed to change the music to D_SLIDE.
|
||
- Fixed: Merchants played their greeting animation in place of their "yes"
|
||
animation. (Or rather, the greeting was played immediately after starting the
|
||
"yes" one, so you only saw the greeting.)
|
||
- Fixed: The Strife health bar texture assumed that the vial level would always
|
||
be non-negative. It can go negative if the player dies then cheats to give
|
||
themself health, but not enough for their real health to go positive.
|
||
- Fixed: Creating a fade-in-out hudmessage with a fadetime of 0 crashed, because
|
||
it assumed the fade-in time would always be positive.
|
||
- Fixed: Instead of calling G_StartTravel(), idclev should set the player's
|
||
health to 0, so the player will do a complete spawn on the new level.
|
||
- Fixed: DrBNumberOuter(Font) and DrINumberOuter drew the shadow from one digit
|
||
on top of the next digit.
|
||
- Fixed: The Doom HUD drew the selected inventory item on top of the secondary
|
||
ammo if both were present.
|
||
- Moved the DrawPowerups() call out of FBaseStatusBar::Draw() and into
|
||
DrawTopStuff(), so the Doom HUD key display won't cover them up
|
||
- Fixed: If you started flying and then pressed the land key, you wouldn't be
|
||
able to fly again until the Wings of Wrath wore off. This was done by changing
|
||
several checks for a player with MF2_FLY into checks for a player with
|
||
MF_NOGRAVITY. MF2_FLY just indicates that the player is using the Wings;
|
||
for the player to fly, MF_NOGRAVITY must also be set. If MF_NOGRAVITY is not
|
||
set, but MF2_FLY is, then the pressing +moveup/down reactivates fly mode.
|
||
- Changed the receipt of BasicArmorPickup so that the SaveAmount is multiplied
|
||
by the given amount (via the give cheat or ACS giveinventory) in order to make
|
||
it compatible again with earlier versions of ZDoom.
|
||
- Fixed: Picking up an armor bonus after using up your armor left you with
|
||
useless armor until you picked up a full-fledged armor item.
|
||
- Fixed: Even though voodoo dolls couldn't pick up items, they could still touch
|
||
them without pretending to be a real player and mess things up in the player's
|
||
inventory.
|
||
- Fixed: Strife's alien spectres did not execute specials attached to them upon
|
||
death, because they have MF_SPECIAL set.
|
||
- Changed the inventory left/light gems (that indicate if you have more items in
|
||
that direction) to blink with gametic instead of level.time, so now they can
|
||
blink while the game is paused.
|
||
- Fixed: You could use items while the game was paused.
|
||
- I just noticed the fighter's fist doesn't meet the edge of the screen when you
|
||
swing it. What's a good, clean way to handle this situation?
|
||
- Brought over the startup log viewer I had added for my Duke port. Unlike my
|
||
Duke port, however, this window is normally hidden and only shows itself when
|
||
a fatal error occurs. Now if something goes wrong during the startup
|
||
sequence, you can review the console log to try and figure out why. I tried
|
||
making it show up at startup as a sort of revival of the way the startup
|
||
process worked once upon a time in DOS land, but too much of the code now
|
||
requires the video to be one of the first things initialized and it just isn't
|
||
practical to rearrange things to make it init later.
|
||
|
||
December 16, 2004
|
||
- New: ZDoom.wad is now managed along with the source code.
|
||
|
||
December 15, 2004
|
||
- Added support for letterboxing, so people without widescreen displays can still
|
||
use widescreen modes without running in a window. Note that if the video card
|
||
enumerates any widescreen displays, then the game will assume they are displayed
|
||
as widescreen, even if they really aren't. Letterbox modes are automatically
|
||
generated from the existing 4:3 modes, but if an existing resolution already has
|
||
the same size, then that resolution won't be available in letterbox form. The
|
||
video modes menu displays LB next to any modes that are letterboxed, so you can
|
||
tell them apart without trying each one.
|
||
- Corrected widescreen displays for non-90 degree FOVs.
|
||
|
||
December 14, 2004
|
||
- Added support for 16:10 and (if vid_tft is true) 5:4 displays. Also rearranged
|
||
the video modes menu, removing the depth choice and replacing it with an aspect
|
||
ratio choice.
|
||
|
||
December 13, 2004
|
||
- Rewrote the interpolators to use a hash table instead of a linear array, for
|
||
improved insertion and deletion performance.
|
||
- Added interpolation for scrolling floors, ceilings, and walls. Floors especially
|
||
need it, because the lack of interpolation really sticks out when you're being
|
||
carried along by a floor that only moves at 35 FPS.
|
||
- Resolutions are now sorted, and you can pick widescreen resolutions if you play
|
||
in a window even if your don't have any fullscreen widescreen modes. (Yep, 16:9
|
||
modes are now supported.)
|
||
|
||
December 11, 2004
|
||
- Decided it's time to bring the goodness of Polymost to ZDoom. Stage 1 complete:
|
||
Convert the clipper to a stand-alone C++ class. Stage 2 to be completed some
|
||
time in the indeterminate future. There's really other things that I should be
|
||
doing right now, ne?
|
||
|
||
December 9, 2004
|
||
- Fixed: APlayerPawn::BestWeapon() did not know about the Tome of Power, so
|
||
when you ran out of sufficient ammo for your tome'd weapon, it could select
|
||
the untome'd version of that weapon, which would turn into the tome'd version
|
||
when it was raised, so you would be stuck in a cycle until the tome ran out or
|
||
you picked a different weapon manually.
|
||
- Fixed AMinotaur::Die() should have used a thinker iterator instead of an
|
||
actor iterator to look for minotaurs that are still alive.
|
||
- Added Graf's deltaviewheight fix for climbing stairs made of actors.
|
||
- Fixed up the pickup ammo amount for the BFG. (Was 100, should be 40.)
|
||
- Merged in Jim's ACS character array printing support.
|
||
|
||
December 6, 2004
|
||
- Fixed: Fog boundaries flashed with gunfire. That's wrong because foggy
|
||
sectors don't flash.
|
||
- Fixed: Masked textures in a skybox would determine their height from the
|
||
viewz used for the last skybox drawn instead of the viewz for the skybox they
|
||
belong to.
|
||
- Fixed: "*fistgrunt" was undefined, so A_FPunchAttack() was unable to play it.
|
||
- Fixed: Hexen players did not play their burn death sounds. Neither did the
|
||
cleric boss.
|
||
- Fixed: Thingcount should not count items in somebody's inventory.
|
||
- Fixed: AInventory::BecomeItem() did not remove the item's TID, so it could
|
||
still be manipulated by scripts even after being picked up.
|
||
- Fixed: CheckBossDeath() should consider frozen corpses as not dead, because
|
||
A_BossDeath() is not called until the corpse shatters.
|
||
- Changed APlayerPawn::Die() to use P_DropItem() to spawn a new weapon when
|
||
weapondrop is turned on instead of dropping the player's actual weapon.
|
||
- Fixed: P_DropItem() needs to clear the MF_NOGRAVITY flag because some Hexen
|
||
items have it set.
|
||
- Fixed: ArtiTeleport::Use() called P_UndoPlayerMorph with its player instead of
|
||
its owner's player.
|
||
|
||
December 4, 2004
|
||
- Updated the libraries and moved them out of src and into the base directory.
|
||
Now zlib is at version 1.2.2, libFLAC is version 1.1.1, and src contains only
|
||
the ZDoom-specific files.
|
||
- Updated to zlib 1.2.2.
|
||
|
||
December 3, 2004
|
||
- Fixed: 256 entries per column is not enough for dc_tspans. Each column should
|
||
have MAXHEIGHT entries available, because a column that alternates drawn/not-
|
||
drawn pixels each row will need one entry per row.
|
||
|
||
December 2, 2004
|
||
- Fixed playback of SPCs when spc_8bit is true. SNESAPU renders them unsigned,
|
||
but we need them to be signed. Also fixed: Altering spc_stereo and spc_8bit
|
||
while a SPC was playing could crash.
|
||
- Added new stuff to the alternate sound renderer: MMX CopyAndClip routine,
|
||
interpolated mixers, FLAC sample loading, streams, and slightly tighter
|
||
inner. So now it's a bit more of a realistic alternative to FMOD. All it
|
||
really lacks is MP3, Vorbis, and MOD support. The snd_interpolate cvar can
|
||
even select between linear (1) and quadratic (2) interpolation, so it can
|
||
sound better than FMOD, which only does linear interpolation.
|
||
|
||
I'd like to compare the performance of the new code with FMOD, but
|
||
unfortunately, I can't seem to figure out a good way to calculate % CPU used
|
||
by the mixer. My attempts lead to numbers that fluctuate quite a lot for
|
||
relative constant environments. At least it ought to be attractive to the
|
||
Linux folks if it gets modified to support SDL as well as DirectSound, even
|
||
if I have no idea how well it performs.
|
||
|
||
December 1, 2004
|
||
- Reorganized the sound interface code to make it easier to target multiple
|
||
sound renderers.
|
||
|
||
November 29, 2004
|
||
- Added the CTRL-X keypress for clearing the current console command line.
|
||
- Changed tab completion to be more Bash-like: When there is more than one
|
||
possible completion, and they all have a common prefix longer than what
|
||
has been typed so far, the full prefix will be filled in for you. (e.g.
|
||
Typing "sn[TAB]" will append "d_" for you because every command that
|
||
starts with "sn" also starts with "snd_".) Note that this only works if
|
||
you have the completion list turned on (con_notablist is false).
|
||
- Fixed: Only the first berserk pack you picked up would give you health.
|
||
- Fixed: Soul sphere played the wrong pickup sound.
|
||
|
||
November 25, 2004
|
||
- Added render-to-texture support to the engine. Using it requires you do two
|
||
things:
|
||
(1) Define a texture that can be drawn into. You do this with a line in
|
||
ANIMDEFS:
|
||
|
||
cameratexture <texture name> <width> <heigth> [fit <width> <height>]
|
||
|
||
e.g.
|
||
|
||
cameratexture CAMTEX1 64 64
|
||
Creates a texture called CAMTEX1.
|
||
|
||
cameratexture CAMTEX2 100 50 fit 80 50
|
||
Creates a texture called CAMTEX2. Its actual dimensions are 100x50,
|
||
but it will be scaled to fit into an area 80x50 units large.
|
||
|
||
cameratexture STARTAN2 64 64
|
||
Replaces the existing texture STARTAN2 with a new one that can be
|
||
rendered into. Since no fit size was provided, this new texture will
|
||
be sized to occupy the same space as the old STARTAN2 texture, which
|
||
is 128x128.
|
||
|
||
cameratexture STARTAN2 64 64 fit 64 64
|
||
Replaces the existing texture STARTAN2, but leaves the texture
|
||
unscaled by specifying a fit size that matches the real size.
|
||
|
||
Square textures use less memory than non-square textures. However, if
|
||
you want to use a camera that can see the texture it renders into, you
|
||
should use a non-square texture.
|
||
|
||
(2) Use ACS to identify which camera renders to the texture:
|
||
|
||
SetCameraToTexture (<camera tid>, <texture name>, <FOV>);
|
||
|
||
e.g.
|
||
|
||
SetCameraToTexture (100, "CAMTEX1", 90);
|
||
|
||
November 24, 2004
|
||
- Expanded the definition of local for such things as "localambientsound" so
|
||
that players will still hear the sound if they are looking through a camera.
|
||
- Added the summonfriend command.
|
||
- Made P_RandomChaseDir() truely random. The only real randomness it had before
|
||
was in deciding whether monsters preferred to go east or southeast.
|
||
|
||
November 20, 2004
|
||
- Fixed: AInventory::BecomeItem() must remove the actor from all the touching
|
||
sector lists. Otherwise, you can get crashes if a floor or ceiling in a
|
||
sector touching the item moves later.
|
||
- Fixed: Patrols only went to the first goal and then got stuck.
|
||
- Fixed: Recurssion when an unloading script tries to change to a different
|
||
map. The map change is already under way, so the script cannot start another
|
||
map change.
|
||
- Moved BasicArmor's PostBeginPlay icon fixing into Tick, so it can cope with
|
||
the "give armor" cheat removing the icon when the player already has armor.
|
||
|
||
November 18, 2004
|
||
- New ACS stuff:
|
||
bool playeringame (int playernumber);
|
||
Returns true if the player [0..7] is in the game and false if not.
|
||
|
||
bool playerisbot (int playernumber);
|
||
Returns true if the player [0..7] is a bot and false if not.
|
||
|
||
script <x> unloading
|
||
{
|
||
...
|
||
}
|
||
Executed by the level just before it unloads because the players are
|
||
about to move to another one. Everything up until the first latent
|
||
function will have a chance to execute. If the script needs to wait,
|
||
it will continue execution when the players return to the map. Since
|
||
this type of script is executed with the equivalent of ACS_Execute
|
||
and not ACS_ExecuteAlways, it can block itself from executing the
|
||
next time the level is unloaded if it hasn't finished with its
|
||
business yet.
|
||
|
||
script <x> (int playernumber) disconnect
|
||
{
|
||
...
|
||
}
|
||
This type of script is executed when a player disconnects in a
|
||
multiplayer game (including bots). THIS SCRIPT IS EXECUTED BY THE
|
||
WORLD, NOT BY THE PLAYER WHO LEFT. By the time the script is run,
|
||
the player is already gone, so you can't do anything to that player.
|
||
The number of the player who left is passed as the only argument to
|
||
this script.
|
||
- Selecting a conversation choice that stays at the same dialogue node no
|
||
longer moves the current selection.
|
||
- Added a gold display when talking to merchants.
|
||
- Fixed: Poison bolts shouldn't kill merchants.
|
||
- Fixed: An ActorMover didn't prevent the renderer from interpolating the
|
||
actor when it was moved onto the path to start off.
|
||
- Fixed: AInterpolationPoint::ScanForLoop() got stuck if the path looped, but
|
||
the initial point wasn't part of the loop.
|
||
- Fixed: Giving an interpolation point the ambush flag in an editor would
|
||
cause it to not join a path.
|
||
- Added Graf Zahl's fix for shootable walls with invalid sector tags that
|
||
some wads use to make things you can break. Also added a parameter to the
|
||
GlassBreak special that you can set to 1 if you don't want it to throw out
|
||
any shards.
|
||
- Fixed: MF3_NOTARGET should only be respected my monsters of the same
|
||
friendliness.
|
||
- Fixed: D'Sparil and the Heresiarch always summoned hostile helpers even if
|
||
they were friendly.
|
||
- Fixed: DCajunMaster::ThinkForMove() needed more NULL checks for the
|
||
player's ready weapon.
|
||
- Fixed: When using the Tome of Power, only the first weapon in a slot could
|
||
be selected with the slot command, because FWeaponSlot::PickWeapon() didn't
|
||
consider the powered-up version as a match for the current weapon.
|
||
- Fixed: If a player is telefragged and drops a weapon (or anything else), it
|
||
can mess up the floor/ceiling determination in P_TeleportMove() thanks to
|
||
the heavy reliance on global variables in the physics code. Those make it
|
||
very much non-reentrant.
|
||
- Fixed: Monsters did not activate player-cross lines when strict checking
|
||
was turned off.
|
||
- Fixed divide by 0 in the Hexen status bar's DrawKeyBar() method when the
|
||
armor slot increments are 0.
|
||
- Changed the ACS random command so you can specify the max and min as either
|
||
parameter. This fixes a divide by 0 when the maximum is one less than the
|
||
minimum (because now the maximum cannot be less than the minimum).
|
||
- Fixed PROP_FLY with SetPlayerProperty.
|
||
- Removed MF_NOBLOCKMAP from IceChunk, IceChunkHead, the Heretic imp chunks,
|
||
Meat, and Junk.
|
||
- Removed LEVELINFO_START_TIME, since it's useless outside of timedemo.
|
||
- Fixed log HUD messages (and print statements) were logged to the console but
|
||
not to the log file.
|
||
- Fixed scrolling bounds when automap rotation is on and follow is off. Issues
|
||
remaining: The grid in rotation mode only works well if follow is on, and
|
||
rotation is relative to the player rather than the center of the screen. I'm
|
||
tempted to just rewrite the whole map package to be more rotation friendly
|
||
(and be more modular so there could be multiple instances on the HUD, as was
|
||
requested a couple of times in the past).
|
||
|
||
November 17, 2004
|
||
- Corrected movement of the automap background when map rotate and follow are
|
||
turned on.
|
||
|
||
November 16, 2004
|
||
- Separated the drawing of HUD messages from the main status bar pass. Now HUD
|
||
messages that are meant to be drawn on top of the status bar are drawn on top
|
||
of the status bar.
|
||
|
||
November 13, 2004
|
||
- Fixed: Dehacked's PatchThing() needs to translate the old damage type flags to
|
||
the new damage type value.
|
||
- Changed AActor::Die() so it doesn't reset the target if the source is NULL.
|
||
- Changed A_CustomBulletAttack() and A_BulletAttack() back to getting their damage
|
||
type from the puff, like they (indirectly) did before.
|
||
- Added division/modulus by zero checks to all the PCD_DIV/MOD* p-codes.
|
||
- New SNDINFO command to deal with several Strife sounds: $singular <sound name>.
|
||
Use this, and only one copy of the sound will play *anywhere*. This is different
|
||
from $limit, which is distance based and can stop currently playing sounds. There
|
||
are actually a lot of singular sounds in Strife. I only chose to make a few of
|
||
them singular, in particular the alarm. TBD: Should new singular sounds cut off
|
||
an already playing copy or not play at all?
|
||
- Klaxon tweaks: Now klaxons clear off the LastHeard property using the same
|
||
recursion that sets it (with P_NoiseAlert).
|
||
- Fixed: G_DoReborn() could only fake as players 5-8 when playing Doom or Heretic.
|
||
- Fixed: P_SpawnMapThing() calculated the player number wrong for player starts > 4.
|
||
- Fixed: AWeapon::AttachToOwner() did not call the status bar's
|
||
ReceivedWeapon method.
|
||
- Fixed: Even though I fixed the A_CallSpecial parsing, I broke its handling.
|
||
|
||
November 5, 2004
|
||
- Corrected the pickup sounds for Strife items.
|
||
- Added the MF3_NORADIUSDMG flag to the Inquisitor so he won't kill
|
||
himself so readily.
|
||
- Fixed: Armorer hair color was wrong. (Cyan instead of gray.)
|
||
- Fixed: Starting the game from a fullscreen console with fullscreen false
|
||
prevented anything from being drawn, becaues the primary surface would be
|
||
lost by the time DDrawFB::PaintToWindow() was reached.
|
||
|
||
November 4, 2004
|
||
- Fixed: The C span drawers all drew 64x64 textures in row-major order
|
||
instead of column-major order. (They were correct for other sizes, though.)
|
||
- Changed the Oracle's spectre (#3) to have MF_SPAWNCEILING and not bob in
|
||
its spawn states. Now it behaves more like the Strife original despite
|
||
being defined even less like it.
|
||
- Increased the opacity of alien spectres to 66%.
|
||
- Fixed: A_ExplodeParms() checked against the size of AttackList instead
|
||
of ExplodeList, and it had the distance and damage type parameters to
|
||
P_RadiusAttack() swapped.
|
||
- Fixed player morphing crashing when using the morphme command in a game
|
||
that doesn't normally have morphed players.
|
||
- Made the Strife burning player more correct: You can run around for a bit
|
||
before collapsing, and then you stop flailing your arms around.
|
||
- Fixed: I forgot to change the prototype for the Soulsphere's Use function,
|
||
so it did nothing.
|
||
- Fixed: The AFourthWeaponPiece class destroyed the fourth weapon after giving
|
||
it to you if weapon stay was off.
|
||
- Fixed: Picking up a torch or light amp while invulnerable cancelled out
|
||
the special colormap for the invulnerability effect.
|
||
- Fixed: In Doom, you didn't raise your weapon at the start of a new game if
|
||
you had neverswitchonpickup on.
|
||
- Added the ChangeSky ACS command so that I can remedy another slight Strife
|
||
problem: The sky on all maps should become gloomy after killing the
|
||
Programmer.
|
||
- Fixed: The post-closing Strife slideshow music should be D_FAST, not D_INTRO.
|
||
- Fixed: The opening Strife slideshow is supposed to play D_INTRO, not D_DARKER.
|
||
- Changed Ceiling_LowerAndCrush so that it uses the same speed for down and
|
||
"up", so crushers that stay down can slow down when they hit something. Fixes
|
||
the Templar crushers on Strife MAP12.
|
||
- Fixed: In Strife, crushing ceilings that don't go back up are supposed to
|
||
go to the floor.
|
||
- Fixed: Strife linetype 180 didn't copy the sector properties.
|
||
- Fixed: Strife instant death sectors were not implemented for the player, and
|
||
the damage done by sector type 4 (strobe and hurt) was wrong.
|
||
|
||
November 3, 2004
|
||
- Fixed: Talking to friendly PCs made them hate you.
|
||
- Fixed: When P_SpawnPlayer() moved a voodoo doll's inventory to the new
|
||
player, it didn't fix the items' Owner links.
|
||
- Fixed: AAmmo::HandlePickup() didn't check for a NULL ReadyWeapon when
|
||
picking up ammo that you had previously run out of.
|
||
- Fixed: New check in PlayerLandedOnThing() prevents both *grunt and *land
|
||
from being played if they are defined as the same sound.
|
||
- Fixed: The minimum velocity P_ZMovement() checks against to decide if your
|
||
view should be squatted should not vary with gravity. Same for grunting in
|
||
PlayerLandedOnThing().
|
||
- Fixed: The Archvile and Boss Brain did not transfer their friendliness.
|
||
- Fixed: Animated door Open/CloseSounds were left uninitialized if the
|
||
definition didn't specify them.
|
||
- Fixed: AMageStaffFX2::SpecialMissileHit() did the wrong damage type.
|
||
- Fixed: Forgot to change the prototype for the Megasphere's Use function.
|
||
|
||
November 2, 2004
|
||
- Added HUDMSG_FADEINOUT style HUD messages.
|
||
- Added the GetLevelInfo ACS command, which can be used to collect information
|
||
before jumping to an intermission-style map.
|
||
- Added support for loading 1, 2, and 4 bit PNG images.
|
||
- Merged in Graf Zahl's customizable animated doors submission.
|
||
- Added the sound effect for Strife's mask powerup.
|
||
- Reimplemented water-breathing with the iron feet.
|
||
- Fixed: Closing doors made frozen corpses disappear instead of shatter.
|
||
- Added fire and disintegration deaths for the Strife player.
|
||
- Removed MF2_ICEDAMAGE, MF2_FIREDAMAGE, and GetMod() from AActor in favor of
|
||
a DamageType property.
|
||
- Fixed: Masked textures visible through multiple skyboxes would be rendered
|
||
multiple times.
|
||
- Fixed: Skybox planes were drawn in front of any masked textures behind them.
|
||
- Fixed: Strife's armor is auto-activated when you pick it up only if you don't
|
||
already have some in your inventory.
|
||
- Fixed: The ACS ClearInventory command should leave undroppable items in place,
|
||
but there is a special exception to zero out the armor slots for a HexenArmor
|
||
item, which is almost the same as removing it.
|
||
|
||
November 1, 2004
|
||
- Fixed: ArtiBoostArmor didn't work in Hexen.
|
||
- Fixed: Hexen players need to start with HexenArmor in their inventory, or else
|
||
they won't get their class-specific armor bonuses until they pick up other armor.
|
||
Since each player must start with HexenArmor, that means I can make a fifth slot
|
||
to hold their class armor and get rid of GetAutoArmorSave(), GetArmorMax(),
|
||
and GetArmorIncrement() and make the armor handling somewhat more homogenous.
|
||
- Disabled left-right aiming when autoaim is 0.
|
||
- Added support for the newer version of the Strife Teaser that everybody but
|
||
me seems to have downloaded.
|
||
- Changed rail handling to be closer to Strife's: If you approach the rail from
|
||
the low side, you can jump "into" the railing. This is still better than
|
||
Strife's approach, which lets you jump into rails from either side. It's needed
|
||
to get out of an area on MAP04, and possible others as well. Unfortunately, it's
|
||
really ugly behavior and will probably be reported as a bug by somebody who
|
||
doesn't know why he got stuck in a rail.
|
||
- Fixed: P_ChangeSwitchTexture() did not set a value for *quest if no switch
|
||
textures were found on the sidedef, so you could get random stat increases in
|
||
Strife by breaking two-sided glass lines if only one side of the line had a
|
||
"switch" texture.
|
||
- Improved the wandering behavior of friendly monsters. Now they use the actual
|
||
chase states instead of the look states, so they animate naturally.
|
||
- Fixed: P_RandomChaseDir() thought angles were sorted in the wrong order, so it
|
||
never picked a random chase direction.
|
||
- Fixed: I forgot to flag the DoomPlayer as friendly.
|
||
- Added the friendly flag for use in DECORATE.
|
||
- Fixed: AWeapon::CreateTossable() let you drop sister weapons independantly from
|
||
each other. It should only create a tossable version of the primary weapon and
|
||
make the other one go "poof."
|
||
- Fixed: Shadow Armor used the same invisibility powerup as Doom. It should be
|
||
a separate one, because Strife doesn't have the fuzz effect.
|
||
- Fixed: Strife uses a LINEHEIGHT of 19 for its menus, not 16 like Doom. There are
|
||
also a few other positional differences between the menus.
|
||
- ZDoom now offers the exact same translation tables as Strife, which change the
|
||
colors for more than just the player's suit.
|
||
- Changed P_RadiusAttack() so that anything that does fire damage does not thrust
|
||
the thing it hurts vertically. This fixes the phosphorous grenades' fire.
|
||
- Fixed: The Strife grenades should have MF3_CANBOUNCEWATER set so they can bounce
|
||
off liquid flats. They're not like Heretic bouncers in this respect.
|
||
- Fixed: Strife liquid flats *do* clip sprites ala Heretic/Hexen. I did not
|
||
know that. That means the StickInWater also needs to have MF2_FLOORCLIP set.
|
||
That also explains why WaterfallSplash doesn't show up in Strife.
|
||
- Fixed: StrifePuff should use the same actor-hit animation as StrifeSpark. They
|
||
only differ by their non-actor-hit animations.
|
||
- Fixed: The surgery kit ought to give you full health, not 100 health.
|
||
- Fixed: Flying mini-missiles used the wrong states from StrifePuff.
|
||
- Fixed: G_PlayerReborn() only gives the default inventory to the first copy of a
|
||
player in a level, which means a voodoo doll can get the inventory, while the
|
||
real player gets nothing. P_SpawnPlayer() must check if the player already had
|
||
an actor spawned for it and if so, transfer the old actor's inventory to the new
|
||
actor.
|
||
- Fixed: R_InitFuzzTable() is the wrong place to initialize fuzzviewheight.
|
||
- Fixed: The "give armor" cheat gave you the wrong armor.
|
||
- Fixed: The Dehacked ammo parser didn't calculate new BackpackAmount and
|
||
BackpackMaxAmount values.
|
||
- Fixed: A_CheckReload() still had AltFire and PrimaryFire swapped.
|
||
- Fixed: The NULL weapon check in P_CheckWeaponFire() was in the wrong spot.
|
||
- Fixed: The give cheat gave you X number of item instances instead of just setting
|
||
the item's Amount field. The same goes for ACS's GiveInventory command.
|
||
|
||
October 30, 2004
|
||
- Fixed: G_StartTravel() should only affect living players. Otherwise, the body of a
|
||
dead player will replace the live body that was spawned on the new level and the
|
||
player will stay dead.
|
||
- Fixed: Strife line type 188 needs to be repeatable so you can cross over it without
|
||
QuestItem16 and then cross over it again later with the item for it to have effect.
|
||
This opens the door to the castle.
|
||
|
||
October 29, 2004
|
||
- Fixed: The idclev cheat needs to call G_StartTravel().
|
||
- Added a BackpackAmount and BackpackMaxAmount to the Ammo definition, so the amount of
|
||
ammo received with a backpack can differ from the amount picked up from a base ammo
|
||
item, and so the max amount can be configured too.
|
||
- Fixed: If you already had enough of something a merchant tried to give you, you would
|
||
get both the "enough" response and the affirmative response.
|
||
- Fixed: The Sigil was draining armor and not just health.
|
||
- Fixed: The Oracle's spectre wouldn't immediately chase after you if you killed the
|
||
Oracle with a dagger, and it wouldn't aggressively attack until you attacked it.
|
||
- Fixed: Strife floater blocking lines were not properly translated.
|
||
- AActor::DropInventory() now clears the MF_NOGRAVITY flag, since several Hexen items
|
||
had the flag set.
|
||
- Fixed: Not coop/deathmatch thing flags in BOOM maps did not work. MBF's friendly flag
|
||
wasn't handled either.
|
||
|
||
October 28, 2004
|
||
- Fixed: The player's inventory was wiped out when switching levels in deathmatch. The
|
||
player needs to be reborn every time they are spawned in a deathmatch game so that
|
||
they can get the default inventory.
|
||
- Fixed: P_ThingProjectile() should set the spawned thing's speed only if it is truely
|
||
a missile.
|
||
- Fixed: FindMostRecentWeapon() failed if a tome-ed weapon was ready.
|
||
- Fixed: AInventory::GoAway() returned false for items that should stay.
|
||
- Fixed: The flags for maplinedef2_t were signed. They were correctly unsigned for
|
||
maplinedef_t.
|
||
- Fixed: Ripper didn't set its death state.
|
||
- Fixed: GoldWandPuff2 should inherit from GoldWandFX1, not GoldWandPuff1.
|
||
- Fixed: AWeapon::CheckAmmo() thought you had enough ammo to use a weapon's alternate
|
||
fire mode if it didn't have an alternate fire. Hence, you could e.g. select the poison
|
||
crossbow right after receiving Strife's crossbow, even if you didn't have any poison
|
||
bolts.
|
||
- Fixed: The StrifePuff had the hit actor and hit wall states swapped.
|
||
- Fixed: APigPlayer::ActivateMorphWeapon() didn't check if you already had a snout.
|
||
- Fixed: The +moveup and +movedown keys only worked under water.
|
||
- Fixed: G_FinishTravel() needs to check for NULL duplicate players, which can happen if
|
||
a start spot doesn't exist for the player on the new map.
|
||
- Fixed: Puzzle items did not define their own use sound.
|
||
- Fixed: Most of the Doom powerups were stackable.
|
||
- Fixed: The fuzzy column drawer did not correctly clip the bottom of the posts to the
|
||
screen bottom of y-doubling was turned on.
|
||
- Fixed: The chainsaw's UpSound was mis-spelled as "weapos/sawup".
|
||
- Fixed: FindMostRecentWeapon() called P_SetPsprite to drop the old PendingWeapon.
|
||
But since it was a PendingWeapon, this meant it wasn't actually visible, so doing so
|
||
would change the weapon sprite. Worse, this function is only processed locally, so
|
||
it could mess up multiplayer and demos. Now A_Raise() checks for a pending weapon and
|
||
starts the current one dropping if it finds one.
|
||
- Added a NULL name check to FFont::FindFont() and FWadCollection::CheckNumForName() to
|
||
fix Daedalus crashing immediately. To fix it for real, the FBehavior constructor needs
|
||
to call UnencryptStrings() before calling FindLanguage(). Otherwise, none of the
|
||
strings are available.
|
||
- Fixed: Weapons you dropped magically had ammo, so you could cheat by dropping your
|
||
weapon and then picking it back up to give yourself more ammo.
|
||
- Fixed: DCanvas::DrawTexture() called NetUpdate() when a menu was open. This is bad
|
||
because it can cause menu keypresses to be processed during the menu's drawer
|
||
function. Specifically, the case that brought the badness of this to my attention
|
||
was the Strife conversation menu. If a choice was made while the menu was being drawn,
|
||
it would alter the data used for drawing the menu, and it could crash. This is probably
|
||
also why the screenshot in the load menu would sometimes disappear after selecting a
|
||
game.
|
||
|
||
October 27, 2004
|
||
- Fixed: AM_drawThings() drew bounding boxes in the wrong locations if am_rotate
|
||
was false.
|
||
- Did some miscellaneous GCC 3.4 cleanup.
|
||
- Moved the project files out of the src directory and into the base directory.
|
||
|
||
October 26, 2004
|
||
- Fixed: AHealth should have a default MaxAmount of 0, not 100, so it maxes out at
|
||
whatever the player's current max health is.
|
||
- Fixed: Using Dehacked to make an ammo-less weapon use ammo left the AmmoUse1
|
||
property at 0.
|
||
- Fixed: A_CallSpecial() parsing was broken.
|
||
- Fixed: The peasants are not all the same speed.
|
||
- Fixed: A_AcolyteDie() was incomplete.
|
||
- Fixed: Light green and blue acolytes are supposed to have 60 health, not 70.
|
||
- Fixed: Changing Dehacked MaxArmor did not update ArmorBonus. Changing Dehacked
|
||
MaxSoulsphere did not update HealthBonus.
|
||
|
||
October 25, 2004
|
||
- Fixed: A_KlaxonBlare() used threshold when it should have used reactiontime.
|
||
- Fixed: The KlaxonWarningLight from Strife should not have its initial tic randomized,
|
||
so all the klaxons in a level can stay synchronized.
|
||
- Fixed: A_ItBurnsItBurns() didn't set the death sound to the burning death sound.
|
||
- Fixed: The "peasant/death" sound no longer links to all three death sounds, just the
|
||
first one, because that's the only one Strife actually played.
|
||
- Fixed: AActor::DropInventory() needs to call P_TryMove() on the dropped item, or
|
||
sector information might not be filled out correctly.
|
||
- Fixed: After changing item dropping to start the item out as not-pickup-able,
|
||
A_Beacon() was no longer able to clear the MF_SPECIAL flag, because AInventory::Tick()
|
||
would set it again. A_Beacon() needs to set DropTime to 0 as well.
|
||
- Fixed: The final frame for ExplosiveBarrel2 was fullbright.
|
||
- Fixed: If a powerup was blinking and you used an item to restore it, APowerup::
|
||
HandlePickup() would restore the powerup without actually using the item.
|
||
- Fixed: AInventory::Tick() and AInventory::CreateTossable() now handle solid items
|
||
(specifically, the Degnin ore).
|
||
- Fixed: ASigil::SpecialDropAction() now gives a Sigil piece to every player in the
|
||
game. Previously, it tried giving it only to whoever the Sigil dropper was
|
||
targetting. If the monster was killed quickly enough, it was possible for it to
|
||
be targetting nothing at all. And there was also the possibility for it to be
|
||
targetting a non-player.
|
||
- Added a NULL player check to AWeapon::AttachToOwner().
|
||
- Added IF_ALWAYSPICKUP for auto-activated items that you can have a maximum of 0 of
|
||
(such as the armor bonus), so you can take them off the map even if you don't really
|
||
need them. AHealth::TryPickup() also uses it for the Doom health bonuses.
|
||
- Fixed: Doom HUD crashed when trying to draw an inventory item without a valid icon.
|
||
- Fixed: ArtiBoostArmor tried to give the player BasicArmor instead of a
|
||
BasicArmorBonus when not playing Hexen.
|
||
- Fixed: A_FireCGun() could crash if the weapon's state was before the first
|
||
attack state.
|
||
- Fixed: Monsters always activated player-cross lines.
|
||
- Changed ArtiInvisibility to give you the newly added PowerGhost instead of
|
||
PowerInvisibility. Now you can use both types of invisibility without being
|
||
restricted by whether or not you are playing Heretic.
|
||
- Fixed: I forgot to make PowerupGiver's EffectTics do anything. Also added
|
||
BlendColor to PowerupGiver at Graf's suggestion.
|
||
- Fixed: I forgot to add IF_PICKUPFLASH for the Speed Boots and Tome of Power.
|
||
- Changed P_DamageMobj() so that spectral entities are subject to non-spectral
|
||
damage if the damage amount is one million or more. This lets P_Massacre()
|
||
kill them.
|
||
- Fixed mobj_statenames[] array in thingdef.cpp
|
||
- Fixed: I forgot to add a case for ADEF_MinMissileChance in infodefaults.cpp.
|
||
|
||
October 21, 2004
|
||
- 2.0.91 time, just so people stop posting the same crash log.
|
||
- Added a pickup delay after dropping, but it still seems to be problematic.
|
||
- Fixed: Classic BEHAVIOR lumps weren't having their scripts sorted.
|
||
- Fixed: P_TestActivateLine() always returned false for SPAC_MCROSS lines if the
|
||
ML_MONSTERSCANACTIVATE line was not set.
|
||
- Fixed: A_Wander() now clears the MF4_INCOMBAT flag, so you can talk to peasants
|
||
after fighting in their vicinity. Strife does not clear this flag there, nor do
|
||
I know if it ever cleared it anywhere.
|
||
- Fixed: AInventory::GoAwayAndDie() left the MF_SPECIAL flag set, so it was possible
|
||
for a player to try to pick up the item in the next tic before it destroyed itself.
|
||
- Fixed: AHealthTraining::TryPickup() ignored its superclass's return value.
|
||
- Fixed: Intermission screen tried to show post-E3 maps in Heretic.
|
||
- Fixed: Now that FWadCollection::FindLump() ignores lumps outside the global
|
||
namespace, skins couldn't be loaded.
|
||
- Fixed: PROP_Weapon_YAdjust used an unsigned byte, so negative yadjusts didn't work.
|
||
- Changed the size boxes around actors in map cheat view into a real feature instead
|
||
of something I quickly threw in for debugging. It's now accessed with am_cheat 3
|
||
and works properly with rotating maps.
|
||
- Fixed: FActorInfo::BuildDefaults() checked ADEF_SkipSuper as a byte instead of
|
||
a word.
|
||
- Fixed: The artifact flash was not cleared from the Raven status bars when the
|
||
last item was used.
|
||
- Fixed: A_CustomBulletAttack tried to use A_CustomMissile instead.
|
||
- Fixed: New flag4 names in thingdef.cpp.
|
||
- Fixed: Cyberdemon was MF4_LONGMELEERANGE instead of MF4_MISSILEMORE.
|
||
- Fixed: Fullscreen inventory bar positions were wrong in Doom.
|
||
- Fixed: Hexen armor was quite broken.
|
||
- Fixed: S_StartSound() no longer tries to play sound ids below 0.
|
||
- Fixed: Terrain splash sounds were initialized to -1 instead of 0.
|
||
|
||
October 20, 2004
|
||
- Time to release 2.0.90, I think?
|
||
- Added some Strife keys to the controls menu.
|
||
- Did more work on the Strife status bar. I think it's feature complete now.
|
||
- Finished reimplementing the Heretic status bar.
|
||
- Made cholycount, mstaffcount, and flamecount local to the weapons that use them
|
||
instead of the players who fire them. The rain1 and rain2 members are now stored
|
||
in the shooter's inventory instead, so it should be safe to use the rain with
|
||
monsters.
|
||
|
||
October 19, 2004
|
||
- Added extrapolation for the Strife popscreen scrolling.
|
||
|
||
October 14, 2004
|
||
- Fixed: Using -warp with an ExMy game and only providing the map number only worked
|
||
if -warp wasn't the last parameter on the command line.
|
||
- Updated some powerup-related code for the new inventory system.
|
||
|
||
October 12, 2004
|
||
- Fixed: Quitting a game and returning to the title screen would not zero the
|
||
palette blend.
|
||
- Fixed: Missiles disappearing on horizon lines were still exploded.
|
||
|
||
October 8, 2004
|
||
- Added a scrolling effect for switching between pages in the keys pop screen.
|
||
|
||
October 6, 2004
|
||
- Fixed: Missiles with MF2_BOUNCE2 set did no normal damage.
|
||
- Added particle blood for the Heretic/Hexen blood functions.
|
||
- Added a fix for negative row offsets to non-power of 2 height textures.
|
||
- Continued my R_FakeFlat() fix from yesterday: It didn't copy the control sector's
|
||
lighting either.
|
||
- LEVEL_SWAPSKIES is now ignored if LEVEL_DOUBLESKY is set.
|
||
- Fixed a possible crash in SC_GetString() if whitespace is the last character(s)
|
||
in a script.
|
||
- Fixed the sliding along diagonal walls behavior in P_HitSlideLine() so that it
|
||
uses correct math. (from code submitted on the forum)
|
||
|
||
October 5, 2004
|
||
- Removed MF_NOBLOCKMAP from ColonGibs, SmallBloodPool, BrainStem, and BloodPool. I
|
||
can't see any good reason for them to have this flag set.
|
||
- Fixed: player_s::Serialize() set PendingWeapon to WP_NOCHANGE. I have no idea why.
|
||
- Added a playing of "minotaur/attack3" to A_MinotaurAtk3().
|
||
- Fixed: R_FakeFlat() did not set FakeSide to FAKED_BelowFloor when viewing a
|
||
fake plane with SECF_CLIPFAKEPLANES and SECF_FAKEFLOORONLY set and the fake floor
|
||
was above the real ceiling.
|
||
- Fixed: DArgs::GatherFiles() would hang on files with unexpected extensions.
|
||
- Autostarting games (i.e. co-op) of Hexen now use the map set as the first map,
|
||
so you can play co-op Deathkings without knowing Deathkings starts on MAP41.
|
||
- Added range checks to C_DoKey(), C_ChangeBinding(), and C_GetBinding().
|
||
- Fixed integer overflow in P_SetSlope() for very extreme slopes.
|
||
- Stopped outputting the exception information to the crash log for an
|
||
EXCEPTION_ACCESS_VIOLATION when run under a pre-NT kernel, because those seem to
|
||
fill it with 0xFF instead of anything meaningful.
|
||
|
||
October 4, 2004
|
||
- Fixed: The mace death ball did full damage to teammates.
|
||
- Fixed: The font translation builders counted the transparent color as a visible
|
||
color and erroneously included it in the calculations, making every range lighter
|
||
than they should have been.
|
||
- Fixed: Giving the player a weapon when they were not already using one would not
|
||
bring the weapon up. (Note: Not bringing the new weapon up if the player is
|
||
already using a weapon is normal behavior.)
|
||
- Fixed: PickNextWeapon() and PickPrevWeapon() crashed when the player had no
|
||
ready weapon.
|
||
- Changed MakeKey to return a value of 0xFFFFFFFF for NULL strings.
|
||
- Changed the centerview command to send a DEM_CENTERVIEW event instead of using the
|
||
ticcmd_t structure to do it. Now it works while the game is paused.
|
||
- Changed particle visibility calculations so they use r_SpriteVisibility instead of
|
||
a separate variable pre-multiplied by 2. So now there is no r_ParticleVisibility
|
||
to overflow.
|
||
- Removed the 3-digit restriction on large fullscreen HUD numbers.
|
||
- Fixed: G_LoadGame() did not check for a NULL name.
|
||
- Added the -nojoy command line parameter to disable the enumeration of joysticks,
|
||
effectively disabling joysticks regardless of the use_joystick cvar.
|
||
- Reduced the maximum FOV from 175 to 170.
|
||
- New: With the (non-overlayed) automap on, a cut-down rendering process is performed
|
||
so that the automap can update while you move around.
|
||
- Fixed the switch and animation parsers so they can use overridden textures.
|
||
- Changed the warp command so that it gets sent across the loopback device.
|
||
- Changed the default item respawning behavior so that the dmflag is observed in all
|
||
multiplayer games, not just deathmatch.
|
||
- Fixed: Thing_Projectile did not set the projectile's speed.
|
||
- Fixed: The banishment device did not work on non-monsters. Normally, that's okay,
|
||
but it didn't work on players either.
|
||
- Fixed: Ambient sounds in Doom-format maps could prevent players from spawning.
|
||
- Fixed: The scripted version of Scroll_Texture_Both now checks to make sure the
|
||
specified line side is valid.
|
||
- After P_SetupLevel() calls P_LoadThings(), it now sets the healths of the players
|
||
to match their actors, in case their voodoo dolls were were fragged during the
|
||
spawn process. (Plutonia MAP06)
|
||
- FindShortestTextureAround() and FindShortestUpperAround() now return the height of
|
||
the null texture if none of the sector's side have a corresponding texture.
|
||
- Changed the minotaur drops so that (1) Minotaur always drops and (2) MinotaurFriend
|
||
never drops.
|
||
- Added a dummy actor with doomednum 32000, so Doom Builder's camera won't show up
|
||
in maps.
|
||
- Added a minimum screen size of 320x200 to the Win32Video mode enumerator.
|
||
|
||
September 29, 2004
|
||
- Removed the bStaticName texture flag.
|
||
- Added support for autoactivating items with a MaxAmount of 0. This lets me use the
|
||
same armor classes for Strife (which can stack armor) and Doom/Heretic (which cannot
|
||
stack).
|
||
|
||
September 28, 2004
|
||
- Merged in my the old Linux changes I made just after releasing 2.0.63.
|
||
|
||
September 7, 2004
|
||
- Stopped "*** SOUND DEBUG INFO ***"'s flashing.
|
||
- Changed the default resolution from 320x200 to 640x480.
|
||
- Added some sound precaching now. Sounds that are stored in an Actor's members
|
||
are now loaded at level load time, and those that aren't are unloaded. Is this
|
||
enough or should I also scan scripts for strings that could be sounds?
|
||
- Fixed a bug I added when I fixed the palette scrambling just after switching to
|
||
fullscreen mode. The WM_PALETTECHANGED message could be received during a drawing
|
||
operation, but it was still handled immediately anyway. So after doing that, the
|
||
screen would no longer be locked, and drawing operations would be referencing a
|
||
NULL pointer. Now the reosurce freeing and restoring waits until the next Lock call.
|
||
|
||
August 31, 2004
|
||
- Fixed: The vampiric mode of the serpent staff brought you down to 100 health if you
|
||
were over it.
|
||
|
||
August 25, 2004
|
||
- Fixed: PIT_CeilingRaise would move overlapping things that did not have MF2_PASSMOBJ
|
||
set.
|
||
- Fixed: Selecting an episode not present in the shareware Heretic told you you needed
|
||
to buy Doom.
|
||
- Fixed: PTR_UseTraverse didn't consider ML_BLOCKEVERYTHING lines to be blocking.
|
||
- Fixed: PTR_AimTraverse didn't consider ML_BLOCKEVERYTHING lines to be blocking.
|
||
- Fixed: After pressing +use to load a save game after you die, +use would still be
|
||
down after the load finished, and you could open doors immediately. Nasty if there
|
||
was some mean thing behind the door all set to kill you.
|
||
- Fixed: Sector special transferring moving floors also copied a sector's secret flag.
|
||
- Changed the player setup menu to use the arrow cursor instead of the skull cursor.
|
||
- Changed FWarpTexture::MakeTexture() to allocate a temporary buffer instead of using
|
||
a fixed sized 256-byte one.
|
||
- Changed sprite flipping so it flips the sprite's left offset too.
|
||
- Fixed: You could use items on the intermission screens between levels.
|
||
- Changed the ACS thingsound command to use CHAN_AUTO like the other ACS functions.
|
||
- Fixed: Flying things could get stuck inside rising floors.
|
||
|
||
August 14, 2004
|
||
- Fixed sign problms with door light tags.
|
||
- Fixed: PIT_CheckOnmobjZ()'s "under thing" check used < instead of <=. This
|
||
is why falling stacks of monsters would get stuck and be unable to move.
|
||
|
||
August 10, 2004
|
||
- Added support for drawing masked and translucent flats that are part of
|
||
a stack. The amount of translucency is controlled by the first argument
|
||
of the 9077 and 9078 things. At the moment, this is only for unsloped flats.
|
||
|
||
July 29, 2004
|
||
- Added checks in AAmbientSound::(De)Activate so that you can't activate it
|
||
when it's already activated or deactivate it when it's already deactivated.
|
||
- Fixed: addmenukey did not ensure that the ControlsMenu.items pointed to the
|
||
first entry of CustomControlsItems, so if you added too many controls and the
|
||
array needed to resize, the ControlsMenu would no longer point to valid data.
|
||
- Did some fullscreen palette work now that I somehow ended up with a program
|
||
that _always_ blows up my palette within a second of switching to fullscreen
|
||
mode. Now when the game receives WM_PALETTECHANGED messages from other windows
|
||
while it's fullscreen, it immediately queues up a palette update event to
|
||
undo what the other window did. Other programs shouldn't be messing with
|
||
the palette when they don't even have the focus, but this obviously doesn't
|
||
stop them from doing it anyway. :-( Hopefully, this makes vid_palettehack
|
||
obsolete. Also added vid_showpalette cvar to draw the palette to the screen
|
||
for debugging purposes. Thanks to that, I can see that the first and last 10
|
||
colors are being kept at the standard system palette colors after some other
|
||
program alters the palette in fullscreen mode, and no amount of
|
||
IDirectDrawPalette::SetEntries() calls will change them. I need to release
|
||
and recreate my surfaces and palette, or I won't be able to touch them.
|
||
- Added separate rgamma, ggamma, and bgamma cvars to control the gamma of
|
||
individual color components in fullscreen mode. These are multiplied to
|
||
with the gamma cvar, so that cvar still controls the overall gamma. I need
|
||
this because my monitor is extra green, and the drivers don't gamma adjust
|
||
paletted displays for me.
|
||
|
||
July 28, 2004
|
||
- Stopped using FSOUND_Sample_Upload for everything. It seems to be even more
|
||
broken with the latest FMOD.
|
||
|
||
July 26, 2004
|
||
- Added a NULL pointer check to the main P_TraceBleed function that takes a
|
||
target, because D-ONAHD can cause this to happen some times when the imps
|
||
shoot their BFGs in A_BFGSpray. So linetarget also gets copied to a local
|
||
variable before being used in A_BFGSpray, since P_DamageMobj apparently can
|
||
change it.
|
||
- Updated the FakePickup and DehackedPickup classes so that they work with the
|
||
new inventory system.
|
||
- Added coop starts 5-8 for Strife because they're on the Bishop's Tower map
|
||
for some reason.
|
||
- Finally added the special deathmatch logic for the enemy-finding used by
|
||
rebels spawned from a teleporter beacon.
|
||
|
||
July 22, 2004
|
||
- Fixed the default Heretic MAPINFO: The episode 5 maps are supposed to play the
|
||
music from episode 2 (not 1), and the episode 6 maps didn't have any music at
|
||
all.
|
||
- Fixed: The Heretic ambient sounds were off by one.
|
||
- Changed the default for opl_freqeuncy to 49716, since that's the rate the
|
||
chip actually played at in SoundBlaster/AdLib cards, and the emulator performs
|
||
very poorly when it needs to downsample. Also added new OPL frequencies to
|
||
choose from in the menu.
|
||
- Fixed: OPLmusicBlock::ServiceStream could crash on non-looping songs, because
|
||
the return value FALSE was never passed along to tell FMOD to stop the stream.
|
||
|
||
July 19, 2004
|
||
- Changed DDrawFB::LockSurf so that a result of DDERR_UNSUPPORTEDMODE when
|
||
trying to recreate a surface is non-fatal. The game should now be able to
|
||
survive a screen saver and power suspend.
|
||
- Reimplemented the key display on Doom's status bar.
|
||
|
||
July 16, 2004
|
||
- Reimplemented the Hexen status bar's key bar. Also improved the status bar so
|
||
that it can show ammo from other games.
|
||
- Fixed the ammo and key displays for Heretic's status bar. Plus, now Heretic's
|
||
status bar will properly update when you lose a key, which it didn't before.
|
||
- Reimplemented the invulnerability powerup.
|
||
|
||
July 15, 2004
|
||
- Fixed: Morphing a monster and then using the kill monsters cheat would crash
|
||
because the original unmorphed version would be destroyed, then when the
|
||
morphed one died, it tried to destroy the original again, because the
|
||
pointer hadn't been set NULL yet. Since the actual crash is from unlinking the
|
||
actor twice, AActor::Destroy() now sets MF_NOSECTOR and MF_NOBLOCKMAP after
|
||
unlinking an actor.
|
||
- Fixed: Trying to use "-" as a sky with MBF's 271/272 linetypes crashed. Now
|
||
it ignores the control line and just draws a normal sky.
|
||
- Fixed: G_DoReborn() needs to do a complete new game, not just a reload of the
|
||
current map, if the player is dead and wants to respawn without a most recent
|
||
save.
|
||
- Changed FWadCollection::FindLump() so that it only returns lumps that are in
|
||
the global namespace. Now it won't return lumps that got moved into a skin
|
||
namespace. On a related note, FWadCollection::SkinHack() now prints a warning
|
||
when it thinks it finds a skin wad with maps in it.
|
||
- Fixed: The "you are here" marks on Heretic's inter-level maps were no longer
|
||
drawn.
|
||
- Updated to FMOD 3.73.
|
||
|
||
July 14, 2004
|
||
- Moved the full-screen HUD coordinate logic out of FBaseStatusBar and into
|
||
DCanvas::DrawTexture. This is so that powerups can draw their status icons
|
||
themselves without needing to hook into the status bar.
|
||
- Reimplemented the Tome of Power.
|
||
- Removed DCanvas::DrawPageBlock().
|
||
|
||
July 13, 2004
|
||
- Fixed positioning of ML_DONTPEGBOTTOM for lower textures. Putting a sky
|
||
ceiling on both sides of the line always makes unpegged positioning
|
||
relative to the back sector's ceiling, not just when the back ceiling is
|
||
above the front ceiling.
|
||
- Fixed: Saving a game would momentarily stop floatbobbers from bobbing.
|
||
Since actors have a FloatBobPhase member, their height doesn't need to be
|
||
adjusted when serializing them. (However, since the adjustment just gets
|
||
undone, I'm not sure why it was a problem.)
|
||
- Fixed 16-rotation sprites so that the rotation boundaries are where you would
|
||
expect them to be.
|
||
- Re-Fixed: CT_Drawer could try drawing the scoreboard when deathmatch is
|
||
true, but you hadn't started a game yet.
|
||
- Added the inverse video flash when firing the Sigil.
|
||
- I don't know why the Oracle's spectre is able to teleport across its
|
||
monster blocking lines, so I've given it the MF3_NOBLOCKMONST flag.
|
||
- Translucency of things in Strife has been corrected. Strife uses 25%/75%
|
||
translucency. Walls are 75% and it's flipped to 25% for sprites. However,
|
||
the spectres are really hard to see, so I've given them 33% translucency.
|
||
- Added genuine Strife falling damage. It is extremely unforgiving, so you'd
|
||
better try not to fall too far while playing Strife.
|
||
- Added the yellow and red colors for the Strife health bar when your health
|
||
drops to 20 and 10 respectively.
|
||
|
||
July 12, 2004
|
||
- Finished a play through of Strife, from beginning to end. (Woohoo! It works!)
|
||
Now to finish the things that aren't quite right...
|
||
- Miscellanoues Strife bug fixing.
|
||
|
||
July 10, 2004
|
||
- The eight SPAC type has now been assigned: SPAC_PTOUCH, for when projectiles
|
||
either impact or cross a line. Strife line type 182 needs this.
|
||
|
||
July 9, 2004
|
||
- Miscellaneous Strife fixing.
|
||
- Better support for not having a ready weapon at all.
|
||
- Changed the Sigil to use the normal weapon sprite instead of the flash
|
||
sprite to show how many pieces you have.
|
||
|
||
July 8, 2004
|
||
- Fixed: Interpolations were not cleared when loading a brand-new level.
|
||
- Added support for snesapu.dll 2.0, which happened to be as simple as
|
||
changing the version check, since none of the changes from 1.01 affect
|
||
the functions I use.
|
||
|
||
July 7, 2004
|
||
- "Fixed:" Missiles that moved perfectly vertical would do no damage. Now
|
||
missiles without any x/y velocity are given a very small x/y velocity so
|
||
that they are not quite moving vertical.
|
||
- Added the GetSigilPieces() ACS command, which returns the number of Sigil
|
||
pieces the activator has obtained.
|
||
- Added a third parameter to Teleport_NewMap that, when set to TRUE, will
|
||
cause the player to keep their current facing when they move to the new map.
|
||
- Added the Hexen intermission text between hubs that I had forgotten about.
|
||
- Added map redirects, so if a player is carrying a particular item, they go
|
||
to a different map instead. (Used for Strife maps 3 and 7.)
|
||
|
||
July 6, 2004
|
||
- Added support for the teaser version of Strife. It seems to be based on an
|
||
older version of Strife than the one that was released to retail, so the
|
||
mobjinfo list is different, the dialogues are slightly different, and some
|
||
items have different names. The Teaser is fully playable.
|
||
|
||
June 30, 2004
|
||
- Added Strife's fire and disruptor deaths.
|
||
- Corrected the missile attack chances for the Strife monsters.
|
||
|
||
June 26, 2004
|
||
- Added Strife's breaking glass.
|
||
|
||
June 25, 2004
|
||
- Added a fix for Strife's LASERB01 texture. The Doom renderer ignored patch
|
||
y offsets on masked mid-textures, so it got drawn as if the beam was at the
|
||
top of the texture instead of the bottom. The "fix" is to adjust the rowoffset
|
||
of the sides that it appears on.
|
||
|
||
June 24, 2004
|
||
- Made some corrections to the Strife blood and bullet puffs.
|
||
- Removed the global variable PuffType. It's now a parameter to those
|
||
functions that use it. HitPuffType is also gone, because giving a puff a
|
||
CrashState can make the same distinction.
|
||
- Added Strife's scanner.
|
||
- Added Strife's targeter, although it's kind of a useless item when the
|
||
player can just go to the options menu and turn on a crosshair.
|
||
|
||
June 23, 2004
|
||
- Added th IF_INVBAR flag so that only selected items show up on the inventory
|
||
bar.
|
||
|
||
June 21, 2004
|
||
- Removed the soundtarget sector property and made it an actor property. Now
|
||
newly spawned actors won't wake up if you happened to make noise near their
|
||
spawn point earlier.
|
||
|
||
June 20, 2004
|
||
- Fixed: A_FreezeDeathChunks could divide by zero for very small actors.
|
||
- Fixed: The EndPic "map" in mapinfo didn't work. It always tried to show the
|
||
graphic "endseq" instead of what was specified in MAPINFO.
|
||
|
||
June 19, 2004
|
||
- Finished adding all of Strife's slideshows.
|
||
|
||
June 18, 2004
|
||
- Removed F_DrawPatchCol, since DrawTexture can do its own clipping.
|
||
|
||
June 15, 2004
|
||
- Added the Sigil, except for the inverse colors when shooting it. Does anyone
|
||
else think its fourth mode really weak compared to the third and fifth?
|
||
|
||
June 10, 2004
|
||
- Moved the chicken speed mods out of P_MovePlayer and into
|
||
AChickenPlayer::TweakSpeeds.
|
||
- Added a check for NULL cameras to the very end of CT_Drawer() where it checks
|
||
to see if the scoreboard should be shown.
|
||
- Fixed: Trying to activate some manual types of specials would activate every
|
||
tag 0 sector in the map if the back sector was already moving.
|
||
- Added support for paths with . in them to DArgs::GatherFiles when it checks
|
||
if a file was specified with an extension or not.
|
||
- Added support for \ as a path seperator in DefaultExtension on Win32.
|
||
- Added the vid_displaybits cvar to control how many bits per pixel the
|
||
fullscreen display gets created with. The game is still rendered in 8-bit,
|
||
but this is for the benefit of cards that don't support that or work better
|
||
with non-8-bit displays.
|
||
- The vid_attachedsurfaces cvar is now ignored unless you are running NT 4.
|
||
|
||
June 9, 2004
|
||
- Fixed: FDynamicColormap::BuildLights() did not check for a NULL Maps pointer.
|
||
- Fixed: Masked textures and sprites were not drawn correctly inside nested
|
||
skyboxes because they would be drawn in the front skybox before drawing the
|
||
second skybox, so the second skybox would cover up the ones in the first
|
||
skybox.
|
||
|
||
June 2, 2004
|
||
- Removed all the other network commands related to managing weapon slots.
|
||
Determination of which weapon to switch to is now done entirely on the
|
||
local machine and sent using DEM_INVUSE, so the slots don't need to be
|
||
replicated to the other players.
|
||
|
||
May 28, 2004
|
||
- Removed DEM_WEAPSEL as part of the inventory rewrite. DEM_INVUSE works
|
||
instead. This also means the weapon console command is no more.
|
||
|
||
May 18, 2004
|
||
- Added division/modulus by zero checks to the ACS VM.
|
||
- Implemented the ACS_ExecuteWithResult special so the Strife specials
|
||
implemented in ACS can function correctly.
|
||
|
||
May 17, 2004
|
||
- Removed the TeleportSide global variable and made it a line special parameter,
|
||
which it should have been from the very beginning.
|
||
- Increased the limit for local script variables from 20 to 65535.
|
||
|
||
May 11, 2004
|
||
- Added Strife's delayed damage sectors.
|
||
- M_ActivateMenuInput now resets the state of the game buttons, so +use will
|
||
work right away after talking to somebody.
|
||
- Added another validity check to FPatchTexture::MakeTexture to make sure the
|
||
column doesn't go past the end of the patch when fed bad data.
|
||
- Added Strife's merchant conversation animations.
|
||
|
||
May 7, 2004
|
||
- Added Strife's animated doors.
|
||
|
||
May 6, 2004
|
||
- Added support for clipping midtextures on all lines, because I think Strife
|
||
looks better that way. (Even though it looks like Strife does not do this.)
|
||
- Added Strife's railing and floater-blocking line flags.
|
||
- Add Strife's status bar popup screens.
|
||
|
||
May 5, 2004
|
||
- Moved artifacts to the new inventory system.
|
||
|
||
May 1, 2004
|
||
- Fixed: Build palette loading was unreliable after adding desaturation support
|
||
to Sector_SetColor.
|
||
|
||
April 30, 2004
|
||
- Did some work on Strife's status bar.
|
||
|
||
April 25, 2004
|
||
- Added Strife's title sequence.
|
||
|
||
April 21, 2004
|
||
- Added Degnin Ore.
|
||
|
||
April 20, 2004
|
||
- Added lots of Strife line specials, ~30 done entirely through ACS.
|
||
- New ACS p-codes:
|
||
PCD_CASEGOTOSORTED: Faster replacement for PCD_CASEGOTO.
|
||
PCD_LSPEC5RESULT: Same as PCD_LSPEC5, but the result of the special's
|
||
execution is left on the stack.
|
||
- New ACS internal functions:
|
||
int GetLineRowOffset ();
|
||
Returns the front side's rowoffset for the activating line.
|
||
|
||
fixed GetActorFloorZ (int tid);
|
||
Returns the highest floor point underneath the actor.
|
||
|
||
int GetActorAngle (int tid);
|
||
Returns the actor's angle. 65536 is 360 degrees.
|
||
|
||
fixed GetSectorFloorZ (int tag, int x, int y);
|
||
Returns the sector height (fixed point) at coordinates (x, y).
|
||
(x, y) are not fixed-point, so you should specify (32, 16)
|
||
instead of (32.0, 16.0).
|
||
|
||
fixed GetSectorCeilingZ (int tag, int x, int y);
|
||
Same as GetSectorFloorZ, except for ceilings.
|
||
|
||
void SetResultValue (int value);
|
||
Set's a script's "result value." Needs to be used before any
|
||
functions that make the script wait. ACS_ExecuteResult and
|
||
ACS_LockedExecuteResult will return this value.
|
||
|
||
April 12, 2004
|
||
- Changed the respawnmonsters flag into an int that holds the respawn
|
||
interval, since Strife respawns at 16 second intervals, and Doom uses
|
||
12 second intervals.
|
||
|
||
April 11, 2004
|
||
- Added Strife's Templar.
|
||
|
||
April 10, 2004
|
||
- Added Strife's Loremaster and Stalker.
|
||
|
||
April 9, 2004
|
||
- Added Strife's ceiling turret and fixed the alarm klaxon.
|
||
- Added the Strife quest items.
|
||
|
||
April 8, 2004
|
||
- Converted keys to the new inventory system and added Strife's.
|
||
|
||
April 7, 2004
|
||
- Added Strife door sounds.
|
||
|
||
April 6, 2004
|
||
- Added Macil.
|
||
|
||
April 2, 2004
|
||
- Converted the Heretic and Hexen artifacts to the new inventory system.
|
||
|
||
March 31, 2004
|
||
- Converted Doom's powerups to the new inventory system.
|
||
|
||
March 30, 2004
|
||
- Converted armor and health to the new inventory system.
|
||
|
||
March 26, 2004
|
||
- Fixed: The mauler's secondary fire had the wrong states.
|
||
- Started transitioning over to the Unreal-like inventory system, starting
|
||
with the easiest first: Puzzle items (since they basically just sit in your
|
||
inventory until used), then ammo and the backpack.
|
||
- Made the dialogues prettier with shadow boxes behind the text.
|
||
|
||
March 23, 2004
|
||
- More dialogue work: Now you can pick responses to the things NPCs tell you
|
||
and drive the conversations along further. You can also get items from the
|
||
responses. However, item checks aren't in yet, so no item-specific dialogue
|
||
branches work.
|
||
- P_NoiseAlert now sets a new object flag, OF_IsSoundTarget, so that
|
||
soundtarget clearing will work with non-players.
|
||
- Changed P_NoiseAlert( self, self->target ) in A_AlertMonsters() to
|
||
P_NoiseAlert( self->target, self ), so monsters will target the player
|
||
who shot the projectile instead of the projectile itself.
|
||
|
||
March 22, 2004
|
||
- Started work on the Strife conversation system. You can now +use things and
|
||
they will say something to you, but you can't do any sort of conversing yet.
|
||
Plus, Strife monsters now drop stuff when they die.
|
||
- Added autoloading of voices.wad when playing Strife.
|
||
|
||
March 17, 2004
|
||
- Changed COMPATF_NOTOSSDROPS behavior so that the items spawn at the monster's
|
||
feet instead of on the floor.
|
||
- Changed the maximum thrust in P_DamageMobj() to 10*FRACUNIT. (Previously, it
|
||
was only clamped to this if it was so large that it went negative.)
|
||
- Added AmmoPics for the Strife ammo types.
|
||
- Fixed: The phosphorus grenades used the HE grenades pickup message.
|
||
- Added some code from P_SpawnProjectile to P_Thing_Projectile so that it can
|
||
support floor/ceiling huggers.
|
||
|
||
March 13, 2004
|
||
- Fixed: ARealGib's PROP_SpawnState was accidentally deleted.
|
||
- Fixed: P_Thing_Projectile always returned false when spawning non-missiles,
|
||
and when spawning missiles, only returned the status of the last missile.
|
||
- Fixed: P_SpawnPlayerMissile used the original angle instead of the aimed
|
||
angle to rotate the projectile in the X-Y plane.
|
||
- Fixed: AHolySpirit::SpecialBlastHandling() compared "< BLAST_FULLSTRENGTH"
|
||
instead of "== BLAST_FULLSTRENGTH".
|
||
- Changed the parser for SS_CMD_VOLUME in s_sndseq.cpp to use a floating point
|
||
division instead of an integer division. (Whoops!)
|
||
- Fixed: Pressing backspace on a file in the save game menu and then answering
|
||
"no" when asked if you really want to delete the file would mess up the
|
||
savegame menu.
|
||
- Removed the WeaponNames array from p_acs.cpp, because wpnlev1info provides
|
||
the same information.
|
||
|
||
March 8, 2004
|
||
- Removed WIF_FIREDAMAGE, as it was unused.
|
||
- Changed AWeapon::OldStyleID() so that it is no longer virtual. Instead, it
|
||
searches the wpnlev1info array to find the info that points to that class.
|
||
- Replaced A_CallSpecial and A_Script keywords in the thingdef parser with
|
||
support for using specials by name. (e.g. Instead of using
|
||
A_CallSpecial (80,...) or A_Script (...) you use ACS_ExecuteAlways (...)
|
||
instead.
|
||
- Changed SC_ScriptError to be varargs, so passing parameters for the format
|
||
string is more straight-forward.
|
||
|
||
March 3, 2004
|
||
- Eliminated the CustomActor class by moving some of its data into class
|
||
metadata and the rest of it into function parameters. Now custom actors
|
||
can properly derive from built-in classes.
|
||
- Replaced A_Explode in thingdef.cpp with A_ExplodeParms, so the explosion
|
||
parameters can be a property of the state instead of a property of the
|
||
actor.
|
||
- Renamed __BIG_ENDIAN__ to WORDS_BIGENDIAN to match autoconf's name for the
|
||
#define.
|
||
|
||
March 2, 2004
|
||
- Added metadata support for TypeInfo, so classes can carry metadata around
|
||
with them. This is intended to allow actors in DECORATE to properly derive
|
||
from built-in actors. Whenever a scripting language for DECORATE gets
|
||
implemented so that everything can be defined there instead of in C++, the
|
||
metadata should no longer be needed.
|
||
|
||
February 10, 2004
|
||
- Upgraded to zlib 1.2.1.
|
||
- Merged in Graf Zahl's additions to thingdef.cpp.
|
||
- Fixed: Heretic wind specials would effect you while you were underwater.
|
||
Also turned off the Heretic wind for noclipping things.
|
||
- Added a check for empty subsectors to P_LoadSubsectors.
|
||
|
||
February 6, 2004
|
||
- Fixed: DObject::IsKindOf used StaticClass instead of GetClass.
|
||
- Added Graf Zahl's thingdef.cpp implementation and modified it to work with
|
||
a more C-like mode in sc_man.
|
||
- Fixed: P_CheckFakeFloorTriggers could crash if the action caused the player
|
||
to teleport to a new sector without any sector actions.
|
||
- Fixed the Hexen armor depletion so that it doesn't overflow on very large
|
||
damage amounts.
|
||
- Fixed: An extremely dead imp that crashes before executing A_ImpXDeath2 would
|
||
get stuck floating in the air.
|
||
- Changed menuactive into an enum and merged WaitingForKey into it. Now closing
|
||
the menu automatically disables the menu's key waiting mode. Also fixed,
|
||
C_ToggleConsole so that the console can never be dropped down while the menu
|
||
is open. Before, it was possible to do this by pressing Esc and ` during the
|
||
same tic.
|
||
|
||
February 5, 2004
|
||
- Altered the BOOM pusher/puller/current effects to apply to anything with
|
||
MF2_WINDTHRUST and removed the restriction that it doesn't apply to things
|
||
with MF_NOGRAVITY. To make it work, I also had to remove MF_NOBLOCKMAP from
|
||
all the wind-thrustable Heretic/Hexen projectiles.
|
||
- Fixed: Using the spray command with a non-existant decal crashed.
|
||
|
||
February 3, 2004
|
||
- Removed r_experimental.
|
||
|
||
January 29, 2004
|
||
- Added the -oldsprites command line argument to rename sprites in all
|
||
wads instead of just sprites in the IWAD.
|
||
- Changed Heretic's knight sounds to be prefaced by hknight/ instead of
|
||
knight/.
|
||
- Changed the Strife weapon names for the ACS inventory commands to match
|
||
their actor names.
|
||
- Added Hexen's water drip (spawnnum 95). Changed the Hexen WATR->UWAT
|
||
renaming to WATR->HWAT.
|
||
- Added a note to the map command that suggests you use changemap instead
|
||
while playing a network game.
|
||
- Fixed: Chat mode could not be used outside of an actual level.
|
||
- Fixed: The automap still tried to draw teleporters with custom colors even
|
||
when am_usecustomcolors was false.
|
||
- Fixed the Hexen armor saves so that it doesn't overflow on very large damage
|
||
amounts.
|
||
- Put back the AKey::TryPickup restriction on picking up more than one key of
|
||
the same type, but now it's restricted to multiplayer games only. Single
|
||
player will still be able to pick up more than one.
|
||
|
||
January 26, 2004
|
||
- Fixed: FLOATRANDZ overflowed when the space between ceiling and floor was
|
||
more than 297 units.
|
||
|
||
January 22, 2004
|
||
- Fixed: side_s::GetLightLevel() got the light of "sidedef" instead of "this".
|
||
- 2.0.61
|
||
- Optimized R_PrecacheLevel() so that it does not unload graphics that are
|
||
definitely used on the level.
|
||
- Optimized the primary loop in P_GroupLines() so that it is much faster on
|
||
large maps. It was previously O(m*n); now it is O(m+n), and Vrack 3 loads
|
||
in well under a second.
|
||
- Changed the Heretic's imp's sounds to use the himp/ prefix instead of imp/.
|
||
|
||
January 21, 2004
|
||
- Fixed: The Heresiarch's spell balls above his head did not update their
|
||
sector information as they rotated. Neither did his shield balls.
|
||
- Fixed silent teleporter orientation in EV_Teleport().
|
||
- Fixed calls to P_Teleport() in a_korax.cpp and a_teleportother.cpp that used
|
||
weird parameters.
|
||
- Changed FDecalLib::GetDecalByName() so that it does not call GetDecal() on
|
||
the decal it finds, so it can be used to get decal groups.
|
||
- Fixed: Saving a game on one version of a map, then adding a BEHAVIOR to it,
|
||
then reloading would not fully invalidate the player when starting a new
|
||
game after the resulting error message. (G_NewInit now initializes players
|
||
to PST_DEAD).
|
||
- Added a screenshot_dir cvar to allow automatically-named screenshots to be
|
||
saved somewhere other than the current directory.
|
||
- Fixed: M_ScreenShot left the display locked if it could not open the file to
|
||
write to.
|
||
- Added decals for the marine hitscan weapons. (I think it's funny that the
|
||
term "hitscan" has come to be used to describe Doom's instant-hit weapons
|
||
even though it comes from Build. :-)
|
||
|
||
January 17, 2004
|
||
- Fixed: PIT_CheckOnmobjZ would not let things stand on corpses.
|
||
- Fixed a bug in A_MinotaurLook where I forgot to convert a special1 reference
|
||
to a tracer reference.
|
||
- Fixed: Obituaries were shown when voodoo dolls died.
|
||
- Fixed: Light_Fade and Light_Glow divided by zero when using zero as the
|
||
tics argument.
|
||
- Fixed: Killing a PlayerPawn that isn't attached to a player crashed.
|
||
- Fixed: Summoning before starting a game crashed.
|
||
- Fixed: Block everything lines did not block railguns.
|
||
|
||
January 13, 2004
|
||
- Fixed: +moveup and +movedown did not work with the fly cheat.
|
||
- Fixed: The Sentinel was missing the MF_DROPOFF flag. Also reduced its
|
||
"bouncing" when it was in a float. I still wasn't satisfied with that, so
|
||
I took its MF_FLOAT bit away.
|
||
- Fixed: The Strife flamethrower's refire state wasn't using frame B.
|
||
- Fixed: Acolytes only used frames A and B in their chase states because I
|
||
forgot to change them when copying and pasting.
|
||
- Removed the nightmare warning when starting a bloodbath game in Strife.
|
||
- Fixed: Nightmare skill ignored the starting map defined with episodedef.
|
||
- Changed sv_fastweapon 2 handling so that it only applies to weapon
|
||
psprites and not flash psprites.
|
||
- Changed Thing_Activate/Deactivate so they can be used to prevent frozen
|
||
corpses from shattering automatically after a delay. (They can still be
|
||
shattered by shooting them or pushing them off a ledge, however.)
|
||
|
||
January 12, 2004
|
||
- Changed AKey::TryPickup so that it doesn't fail if the player already has a
|
||
key of the same type.
|
||
- Fixed: The TranslucentLine special could not used in a script if a line was
|
||
used to activate the script.
|
||
- Changed the damage amount for automatic death from 10 thousand to 1 million,
|
||
for people who like really strong monstres.
|
||
|
||
January 8, 2004
|
||
- Added some more player properties that let you add and remove player powers
|
||
through ACS.
|
||
- Renamed pw_shield and pw_health2 to pw_unused1 and pw_unused2 because Heretic
|
||
never used them. For the sake of savegame compatibility, they have not been
|
||
removed.
|
||
- Changed the dragon skin bracers so that when they're used outside of Hexen,
|
||
they add 50 points of armor. Also changed the armor bonus so that if you have
|
||
more than 200 armor points, picking one up won't drop you down to 200.
|
||
- Added the WIF_AMMO_OPTIONAL flag so that the fighter's hammer and axe can be
|
||
specified as using ammo so that they show up in Doom's fullscreen HUD.
|
||
- Changed masked texture drawing so that Y offsets behave like any other walls:
|
||
by texel unless the texture requests otherwise.
|
||
- Changed APuzzleItem::ActivateArti() so that it always plays *puzzfail if the
|
||
puzzle item could not be used.
|
||
- Fixed: Splashing on a fake floor with SECF_CLIPFAKEPLANES set would use the
|
||
main sector's floor terrain instead of the control sector's floor terrain.
|
||
- Moved even more functionality out of A_WeaponReady so that weapon ready
|
||
animations can use delays longer than one tic and still fire well.
|
||
- Fixed my September 25, 2003 "fix" of the massacre code so that it doesn't
|
||
make already dead bodies shootable.
|
||
- Changed P_SightCheckLine() so that it also uses the absence of ML_TWOSIDED as
|
||
an indicator to stop the search, as it did a long time ago.
|
||
- Fixed: A_M_Refire did not terminate the attack if the marine had no missile
|
||
attack and the target had moved out of range.
|
||
- Fixed: DTA_VirtualHeight scaled the texture's y location by the display's
|
||
width instead of its height.
|
||
- Added sprite renaming so that unique actors can use unique sprites. Only
|
||
sprites in the main IWAD are renamed, so if you want to supply a new sprite
|
||
in a PWAD, you need to use the sprite's new name instead of its old name.
|
||
Sprites are renamed as follows:
|
||
heretic.wad: HEAD -> LICH
|
||
|
||
hexen.wad: ARM1 -> AR_1
|
||
ARM2 -> AR_2
|
||
ARM3 -> AR_3
|
||
ARM4 -> AR_4
|
||
BARL -> ZBAR
|
||
CAND -> BCAN
|
||
GIBS -> POL5 (this makes it the same as Doom's gib sprite)
|
||
ROCK -> ROKK
|
||
SUIT -> ZSUI
|
||
TRE1 -> ZTRE
|
||
TRE2 -> TRES
|
||
WATR -> UWAT (unused, but Strife also has a WATR)
|
||
|
||
strife1.wad: ARM1 -> ARM3
|
||
ARM2 -> ARM4
|
||
BAR1 -> BARC
|
||
BARL -> BBAR
|
||
BLST -> MAUL
|
||
CNDL -> KNDL
|
||
LOGG -> LOGW
|
||
MISL -> SMIS
|
||
PMAP -> SMAP
|
||
POT1 -> MPOT
|
||
SHRD -> SHAR
|
||
SHT2 -> MPUF
|
||
SPID -> STLK
|
||
TLMP -> TECH
|
||
TRE1 -> TRET
|
||
TRCH -> TRHL
|
||
VASE -> VAZE
|
||
- Fixed: The Doom Allmap powerup played the normal item pickup sound instead of
|
||
the powerup pickup sound.
|
||
- Fixed: Fog boundaries were still drawn when using a fixed colormap.
|
||
|
||
January 6, 2004
|
||
- Fixed: R_InitTextures() did not ensure that the final TEXTURE1/TEXTURE2 lumps
|
||
had not already been read, so it could end up loading them with the wrong
|
||
PNAMES. The easiest example of this bug is to start the game with:
|
||
-iwad doom2 -file doom doom2
|
||
- Fixed: You could take Heretic keys but you couldn't check them with ACS. Also
|
||
added support for doing both with Hexen keys, since it was missing.
|
||
- Added some checks to A_SpawnFly to appease anybody who tries to break things
|
||
by using dehacked patches where they don't belong.
|
||
- Fixed: If you used spynext/spyprev to look through another player's eyes and
|
||
that player quit, the game would crash because it will still try to draw
|
||
through that player's eyes.
|
||
- Added a DEM_SINFCHANGEDXOR message for flag cvars that alter server settings
|
||
(i.e. all of them). The reason for this is because if you exec a script that
|
||
alters multiple flags, only the last change would take effect, because they
|
||
don't get processed until after the script finishes execution.
|
||
- Fixed: G_AddViewPitch() adjusted LocalViewPitch even when the dmflag
|
||
DF_NO_FREELOOK was set.
|
||
- Fixed: PIT_StompThing was missing the MF2_TELESTOMP check for Heretic/Hexen.
|
||
- Fixed: Starting a game with the dmflag DF_NO_FOV set would set everybody's
|
||
view to an FOV of 0 because the dmflags callback gets called before the
|
||
arbitrator's DesiredFOV is initialized.
|
||
|
||
January 2, 2004
|
||
- Changed P_FinishLoadingLineDefs so that it rounds the wall length to the
|
||
nearest integer when determining TexelLength instead of always round down.
|
||
- Fixed: Using an empty string with HUDMSG_TYPEON caused a crash.
|
||
- Fixed: A buried wraith could enter its pain state while rising from the
|
||
ground and not properly finish raising, so it's bottom portion would remain
|
||
clipped for the rest of its existance.
|
||
- Fixed: Using a switch to start a script on another map would not make the
|
||
switch switch.
|
||
- Fixed: Sliding along the backside of a blocking two-sided line was bad.
|
||
- Fixed: The second sky on a map defaulted to -NOFLAT- instead of the same
|
||
texture as the first sky.
|
||
- Moved the key blocks from Heretic's fullscreen HUD so that they don't overlap
|
||
the health vial.
|
||
|
||
December 13, 2003
|
||
- Added another case to ScanForFlatHack to fix darkhour.wad: F_START - flats -
|
||
FF_END - more flats - F_END. I'm surprised it worked before, but it did, so
|
||
I'm inclined to again make it work unmodified, even if the wad _is_ wrong.
|
||
|
||
December 12, 2003
|
||
- Added a hack check for Doom 1's BIGDOOR7 texture, which y offsets its patches
|
||
at -4. (Doom clamped all negative patch y offsets to 0, which is why it shows
|
||
up okay in Doom.)
|
||
- Added a fix to the blockmap tracers where all the blocks along the trace are
|
||
crossed on their corners.
|
||
- Fixed a potential crash in FBaseStatusBar::DrawMessages() when a HUD message
|
||
removes itself as part of its drawing process.
|
||
- Fixed: A few of the Strife weapons were erroneously defined with WIF_NOALERT.
|
||
- Fixed: Sky textures defaulted to 0 if a map had a MAPINFO that did not
|
||
specify the sky. Now they default to -NOFLAT- so you don't have to worry
|
||
about division by zero in R_DrawSkyStriped if the map tries to show a sky.
|
||
- Fixed: The floorLowerAndChange type for EV_DoFloor modified sec instead of
|
||
a temporary, which could cause crashes at worst and odd behavior at best
|
||
because sec is used again to determine whether a floor moved instantly.
|
||
- Changed a DivScale19 in R_RenderMaskedSegRange into a SafeDivScale19.
|
||
- Fixed: Trying to use the mdk command before starting a game caused a crash.
|
||
- Fixed: CreateFrameBuffer would not properly retry.
|
||
- Changed the maybedrawnow recursion inhibitter to use the current state
|
||
of the screen object instead of a local static variable.
|
||
|
||
December 8, 2003
|
||
- Fixed: If a wad had TEXTURE1 and TEXTURE2 lumps, then any duplicates in
|
||
TEXTURE2 took precedence over TEXTURE1. It is supposed to be the other way
|
||
around, with TEXTURE1 taking precedence over TEXTURE2.
|
||
- Prefixed the names of the Strife grenade launcher actors with "Strife".
|
||
- Fixed: DDoor did not serialize m_LightTag.
|
||
- Fixed the P_TranslateTeleportThings rewrite so that it sets the Teleport
|
||
special's TID to 1 instead of the tag.
|
||
- Added a check for MNTRZ0 to AT_GAME_SET(Minotaur).
|
||
- Fixed: The chaingun flash only showed frame one and not both frames one and
|
||
zero.
|
||
|
||
December 6, 2003
|
||
- Rewrote P_TranslateTeleportThings() so that it only assigns TIDs to things
|
||
in sectors with tag 0.
|
||
- Fixed: Teleporters by TID didn't work.
|
||
- Fixed: P_SpawnMissileXYZ spawned floor/ceiling huggers as if they could move
|
||
with a vertical component to their velocity. They can't, so it could result
|
||
in very slow moving projectiles when aiming at something nearby in the X/Y
|
||
plane but far away on the Z axis, because most of the projectile's speed would
|
||
try to go on the Z axis.
|
||
- Changed the Minotaur state fixup to be based on the presence of MNTRZ1
|
||
instead of the game type.
|
||
|
||
December 5, 2003
|
||
- Fixed: When I went back to the blockmap-based sight code, I forgot to bring
|
||
over the enhancements for block-everything lines I had made for the BSP-
|
||
based sight code.
|
||
- Added a second argument to Teleport and a third argument to Teleport_NoFog
|
||
specials. This is a sector tag to filter the teleport dests with. Only
|
||
dests in a sector with a matching tag will be selected if the tag parameter
|
||
is non-zero. If tid is zero and tag is non-zero, then the old (and slow)
|
||
teleport dest based on sector tag is used so that Mordeth's trick can work.
|
||
- Added support for the BOOM local door light effect by adding an additional
|
||
parameter to all the Door_* specials to serve as the lighttag parameter.
|
||
The first argument still determines the door to open, so unlike BOOM, you
|
||
can use the effect with remote doors if you like. In the case of the
|
||
Generic_Door special, OR the type (the third argument) with 128, and the
|
||
first argument will be used as the lighttag parameter instead of the tag
|
||
parameter.
|
||
- Fixed two bugs with using the ACS setfont call to create fonts from images:
|
||
GlobalKerning was left uninitialized, and they weren't added to the global
|
||
font list, so they were recreated every time they were setfont'ed.
|
||
|
||
December 4, 2003
|
||
- Fixed: Voodoo dolls would also trigger the teleport zoom.
|
||
- Added 2048x2048 as the maximum size for a patch as a simple sanity check.
|
||
- Added a fix to the console's maybedrawnow() function to prevent recursive
|
||
calls to it.
|
||
|
||
December 3, 2003
|
||
- Fixed: The transfer lights specials are supposed to copy the source sector's
|
||
light level instead of propagating along changes from other transfer lights
|
||
specials.
|
||
- Added an armor display to Heretic's fullscreen HUD to match Doom's.
|
||
- Added a check for a NULL spot to Earthquake::Tick() so that if somebody
|
||
removes an earthquake's spot before the quake is over, it won't crash.
|
||
- Fixed: The Boom use-through flag was only being translated to SPAC_USETHROUGH
|
||
for lines with generalized line types and not for lines with normal line types.
|
||
- Fixed: P_ActivateLine() did not consider SPAC_USETHROUGH lines when deciding
|
||
if it should flip a switch texture.
|
||
- Fixed: In EV_DoCeiling(), ceilLowerToNearest made the ceiling go up instead
|
||
of down.
|
||
- Fixed: PIT_AddThingIntercepts() did not add anything the trace started in,
|
||
because none of the thing's sides faced the start of the trace.
|
||
- Added a check to A_FireCGun() to try to catch Dehacked patches that do
|
||
naughty things to the chaingun's flash states.
|
||
- Fixed: The bNoDecals property was not copied to every texture in an
|
||
animation range.
|
||
- Added the "range" keyword to ANIMDEFS so that it can be a true replacement
|
||
for ANIMATED.
|
||
- Fixed: Crushers in Hexen made monsters disappear instead of turning them into
|
||
piles of giblets.
|
||
- Changed P_SpawnPlayer() so that it doesn't telefrag *everything* inside the
|
||
player. Only monsters and other players will be telefragged now.
|
||
- Fixed: Hurting a voodoo doll and then dying from something else didn't
|
||
completely kill you.
|
||
- Fixed: mouse_sensitivity was no longer affecting mouselooking.
|
||
|
||
November 26, 2003
|
||
- Fixed: Ceiling type ceilRaiseToLowest (used exclusively by Ceiling_Generic)
|
||
set the direction to -1 instead of 1.
|
||
- Fixed: P_TranslateLineDef() ignored the BOOM passthrough flag due to
|
||
bad ordering.
|
||
- Fixed: A_WeaponReady did not center the sprites in case they had been
|
||
repositioned earlier. (Only really an issue with Hexen.)
|
||
- Fixed kerning support in V_BreakLines.
|
||
|
||
November 24, 2003
|
||
- Moved the +mlook and +strafe button handling for joysticks into
|
||
DI_JoyCheck().
|
||
- Changed bots.cfg loading so that it is relative to progdir instead of the
|
||
current directory.
|
||
- Removed support for loading zdoom.ini from the user's profile directory
|
||
under Windows.
|
||
- Added Strife's acolytes.
|
||
- Added Strife's rebel(s).
|
||
- Added Strife's beggar(s).
|
||
- Added Strife's zombie spawner.
|
||
- Fixed: No map names were shown for custom maps in the intermissions.
|
||
- Added simple default kerning for fonts so that DBIGFONT can use it to
|
||
overlap the edges of two adjoining character cells. It does not support
|
||
per-character kerning pairs and probably never will.
|
||
- Added error checks to invnext, invprev, and useflechette so that they won't
|
||
crash if you try to use them before starting a game.
|
||
- Fixed: Picking up a DECORATE item would clear its special, so you wouldn't
|
||
be able to pick it up again if it respawned.
|
||
- Added translucency to lots of Heretic and Hexen actors.
|
||
- In PIT_CheckThing(), any checks against a bridge will treat the moving
|
||
actor as if it has MF2_PASSMOBJ set, even if it doesn't. This lets scrolling
|
||
floors carry scenery items underneath a bridge without causing the chaos
|
||
that removing MF2_PASSMOBJ globally would cause.
|
||
- Removed the dead player check from CheckIfExitIsGood() so that dead
|
||
players can exit a level, as they could in Doom.
|
||
- Added god mode and invulnerability as things that can replenish your air
|
||
supply, so you won't die almost immediately if you spend your time
|
||
underwater with them on and then they go away before you surface.
|
||
- Added checks to D_PostEvent so that it won't turn the players head when
|
||
the game is effectively paused.
|
||
- Added a new player flag, CF_WEAPONREADY, so that weapons which don't use
|
||
A_WeaponReady (like the fighter's axe) can still bob.
|
||
- Fixed: The savegame version number for 2.0.54/2.0.55 didn't get bumped
|
||
up. So the .55 update really only helps people who want to load pre-.52
|
||
savegames. :-(
|
||
|
||
November 23, 2003
|
||
- Oops. Quick update from 2.0.54 to 2.0.55 to let old savegames load again.
|
||
Hopefully nobody downloaded 2.0.54 in the hour it was available.
|
||
- The sector an actor resides in now gets stored in savegames, because
|
||
different rules are applied for things spawned at level start than for
|
||
things spawned afterward.
|
||
- Added calls to SetWindowLongPtr to take away the window's border in
|
||
fullscreen mode and put it back in windowed mode.
|
||
- Fixed FBaseStatusBar::RepositionCoords() so that LilWhiteMouse's Chosen
|
||
ammo icons appear on the fullscreen HUD again.
|
||
|
||
November 21, 2003
|
||
- Added Strife's "Becoming Acolyte".
|
||
- Added Strife's zombie.
|
||
- Added Strife's grenade launchers.
|
||
|
||
November 20, 2003
|
||
- Added Strife's merchants.
|
||
- Added a check for a NULL texture to the player setup drawer, even though
|
||
that should never happen.
|
||
- Fixed: GiveInventory would not let you have more than one puzzle item of a
|
||
certain kind because I thought Hexen restricted you that way.
|
||
- Fixed: Starting a non-deathmatch game, changing the deathmatch cvar to true,
|
||
and then starting a new game would still show the ARMS graphic on the
|
||
status bar because the status bar graphic was not reloaded.
|
||
- Changed the fast floor dropping behavior so that Hexen format maps use the
|
||
Hexen behavior and Doom format maps use the Doom behavior.
|
||
|
||
November 19, 2003
|
||
- Added Strife's peasants.
|
||
- Added the Strife translation tables.
|
||
- Changed dehacked parsing so that the "Far attack frame" for players cannot
|
||
be changed. Fixes insaned1.deh and insaned2.deh that come with insane.wad.
|
||
- Fixed: The intermission screen did not lookup level names.
|
||
- Added a check for a NULL target to A_FiredAttack.
|
||
- Fixed: Enter, respawn, and death scripts were run with the equivalent of
|
||
ACS_Execute instead of ACS_ExecuteAlways, preventing them from executing
|
||
for more than one player at once. This especially defeats the purpose of
|
||
enter scripts, because those are always run at the same time for each
|
||
player when the level starts, so only the first player would actually
|
||
run any enter scripts.
|
||
- Fixed: The read-modify-write map array ops in p_acs.cpp took the array
|
||
index from the world var store instead of the map var store.
|
||
|
||
November 18, 2003
|
||
- Added Strife's Sentinel.
|
||
- Adjusted P_SpawnMissileXYZ so that if a missile would normally shoot over
|
||
the player's head, it will be aimed slightly lower.
|
||
- Added the first half of Strife's Bishop.
|
||
- Added Strife's Crusader (minus its special death action).
|
||
|
||
November 17, 2003
|
||
- Added a check for bad sidedefs to P_SaveLineSpecial.
|
||
|
||
November 15, 2003
|
||
- Added Strife's high-explosive and white phosphorous grenades (but not the
|
||
grenade launchers).
|
||
- Fixed: AActor defined both reactiontime and ReactionTime.
|
||
- Moved weapon bobbing out of A_WeaponReady so that weapons can bob every
|
||
tic even if A_WeaponReady isn't called every tic. (Such was the case with
|
||
the mauler, and it looked really bad seeing it move jerkily only every six
|
||
or seven tics.)
|
||
- Added Strife's mauler, minus the disintegration.
|
||
- Added a few of Strife's cheat codes.
|
||
|
||
November 14, 2003
|
||
- Added the Light_Stop line special to stop a currently running light effect.
|
||
- Changed the Door_Raise speed checks for monsters in P_TestActivateLine()
|
||
so that they are consistant for cross, use, and push lines.
|
||
- Changed text lookups for map names and intermission text so that they
|
||
happen each time they are needed and not just when the MAPINFO is parsed.
|
||
- Added a check for the null texture to R_RenderBoundWallSprite.
|
||
- Added a check for non-positive-sized patches, so if one tries to load,
|
||
it gets replaced by the new -BADPATCH graphic I just added to zdoom.wad.
|
||
- Added support for flechette inventory graphics named ARTIPSB1, ARTIPSB2,
|
||
and ARTIPSB3 that can be used in place of ARTIPSBG to differentiate
|
||
between the different forms of the flechette when a script gives the
|
||
player specific ones.
|
||
- Cluster infos now get created the first time they are referenced by a
|
||
map. Without this, all Hexen maps were implicitly on the same hub (the
|
||
"default" one), because Hexen didn't use clusterdef MAPINFO entries.
|
||
- Brought back the blockmap-based P_CheckSight and fixed the iterator in
|
||
it and its equivalent in p_maputl.cpp so that it properly handles the
|
||
case where a trace crosses the corner of a block.
|
||
|
||
November 12, 2003
|
||
- Added Strife's flame thrower.
|
||
- Added Strife's mini-missile launcher.
|
||
- Added Strife's assault gun.
|
||
- Added Strife's electric and poison crossbows. However, the poison bolt
|
||
does not have any of its special properties implemented, so it currently
|
||
acts like a super high damage projectile.
|
||
- Added all the Strife ammo pickups.
|
||
- Added Strife's scrolling sector type.
|
||
- Added the Strife weapon preferences to the WeaponPrefs array.
|
||
- Added placeholder weapon and ammo slots for the Strife weapons so that
|
||
when/if I add more, I won't need to update the player_t serializer again
|
||
to maintain compatibility with old save games.
|
||
- Added StepHeight to gameinfo_t to indicate the maximum height step a
|
||
player can walk up. This is 24 in every game except Strife, which has it
|
||
lower at 16.
|
||
|
||
November 10, 2003
|
||
- Fixed: ANIMDEFS animations animated every frame in the animation instead
|
||
of just the base texture.
|
||
- Fixed: Texture animations defined in ANIMATED did not animate each frame
|
||
in the sequence properly.
|
||
|
||
November 2, 2003
|
||
- Stopped using validcount to keep track of which Actors have already been
|
||
checked by P_BlockThingsIterator. P_CheckSight and P_TraceBleed can both
|
||
make validcount go up, so it is totally useless for P_RadiusAttack, which
|
||
wound up doing damage to a thing for each block it touched that was in the
|
||
blast area.
|
||
- Added DTA_ClipTop, DTA_ClipLeft, and DTA_ClipRight so that FlatFill can now
|
||
use DrawTexture and draw the textures right-side-up again.
|
||
- Renamed negonearray to zeroarray to better reflect its contents.
|
||
- Changed PTR_TraceIterator() so that it will look at a line's flags and if
|
||
it doesn't have ML_TWOSIDED set, then it will pretend it doesn't have a
|
||
back side, even if it does.
|
||
- Fixed: BFG Marines could crash with a stack overflow during their refire
|
||
pause because A_M_BFGSound() switches the marine back to its chase state,
|
||
which tries to switch it back to its attack state. The solution: Make sure
|
||
the marine's MF_JUSTATTACKED bit is set as long as its special1 is non-zero.
|
||
Then A_Chase won't try to attack.
|
||
- Reduced the player's missile range from 20480 to 8192, because Doom's trace
|
||
code is too inaccurate for long traces.
|
||
|
||
November 1, 2003
|
||
- Removed the missile attack from the chainsaw marine.
|
||
- Fixed: The cast finale ignored the player's gender setting because it didn't
|
||
actually play the player's death sound from the player.
|
||
- Fixed: The Heretic episode 2 ending restored the palette in PLAYPAL instead
|
||
of the one computed from PLAYPAL at the start of the game.
|
||
- Removed gamma stuff from FPalette, since Win32Video is responsible for
|
||
handling gamma.
|
||
- Changed P_DoCrunch() so that it copies the render style from the crushed
|
||
thing to the gib actor.
|
||
- Changed PIT_FloorDrop() so that only Hexen will let things fall with gravity
|
||
when a floor quickly drops. The other games will yank them down.
|
||
- Changed missile attacks so that monsters behind block everything lines will
|
||
try to shoot through the lines if they are set for impact activation and
|
||
run a script. The assumption is that the script will remove the blocking
|
||
flag so they can shoot past the line on their next attack.
|
||
- Changed back to the BSP-based sight checking for better accuracy.
|
||
- Changed the automap so that it uses 12 bits of fractional precision instead
|
||
of 16 in order to display maps that are relatively close to the limits of
|
||
the possible map extents.
|
||
- Changed the STCFN121 hack so that instead of discarding STCFN121 if it's
|
||
in the IWAD, it will discard it if STCFN120 and STCFN 122 are not present.
|
||
This should accomodate wads that provide their own fonts and copied it as
|
||
an I instead of a y, and also wads that provide a real set of lower-case
|
||
characters.
|
||
- Changed the sector soundorg calculation so that it can't overflow.
|
||
|
||
October 31, 2003
|
||
- Added Strife's Reaver. Aside from it's unknown flag, it should be fully
|
||
functional.
|
||
- Added Strife's dagger-wielding fist. It has a chance of doing 0 damage,
|
||
which seems odd.
|
||
- Extended P_SpawnPuff() so that you can give a puff a crash state, and then
|
||
it will use that state if something was hit.
|
||
- Added a simple status bar for strife.
|
||
|
||
October 30, 2003
|
||
- Moved SKYFLATNAME into the gameinfo structure.
|
||
- Added a bunch more Strife things.
|
||
- Restricted the use of SPAC_OTHERCROSS to just the BOOM generalized line type
|
||
containers, since those are the only specials it's needed for.
|
||
- Fixed: Each level's intermission name was always drawn as text, even if
|
||
it had a graphic that was supposed to be displayed instead.
|
||
- Rewrote the flat hack used to make the flats in Gothic DM 2 load and
|
||
verified that it once again works.
|
||
|
||
October 29, 2003
|
||
- Added a few Strife things.
|
||
- Fixed another Doom bug/oversimplification: PIT_AddThingIntercepts() checked
|
||
the trace against a line running through the middle of the thing. Now it
|
||
checks against the thing's actual bounding box, so chainsawing big things
|
||
like the Spider Mastermind is much easier now. This also means
|
||
P_LineAttack() doesn't need to position puffs/bullet splats closer along the
|
||
trace since the hit location won't be inside the thing anymore.
|
||
- Changed blockmap thing linking so that things link to every block they touch
|
||
and not just the block at their center, fixing an old Doom bug.
|
||
- Changed the summon command so that it spawns things in front of you based on
|
||
their radius rather than a fixed 64 units away.
|
||
- Fixed: The joystick read rate was determined by the framerate instead of
|
||
being a constant 35 Hz.
|
||
|
||
October 28, 2003
|
||
- Changed: Decals are not allowed on warping textures by default. You can allow
|
||
them by appending "allowdecals" to the warp statement in ANIMDEFS. (e.g.
|
||
"warp texture foofoo allowdecals")
|
||
- Fixed: Bots whose teams were defined by name instead of numbers would always
|
||
be on the red team (team 0).
|
||
- Fixed: Puzzle items need to stick around in multiplayer games.
|
||
- Fixed: Saving in multiplayer games would try to save to the same full path
|
||
on all machines, even if the different machines had ZDoom installed in
|
||
different directories. The only one who was guaranteed to be able to save
|
||
because of this was the person who used the save command.
|
||
- Fixed: Poison damage in multiplayer games did not respect the teamdamage
|
||
setting.
|
||
- Added a minimum size limit of 1024 bytes for MOD/stream songs to work around
|
||
a bug in the current version of FMOD 3.70.
|
||
- Fixed: Sprites with weird rotation flipping (e.g. the Hell Knight) did not
|
||
display properly.
|
||
- Fixed: Even things that are not monsters could activate monster-allowed
|
||
lines in BOOM (and presumably DOOM).
|
||
- Fixed: Compat_useblocking also needs to block non-use lines with specials,
|
||
not just use lines.
|
||
- Fixed: Assigning a special to a line that would normally block the use of
|
||
lines behind it would enable those lines to be used.
|
||
- Fixed: If a texture had the bNoRemap0 flag set and it was part of an
|
||
animation sequence, the flag would not be propagated to the other
|
||
textures in the sequence.
|
||
- Added a check for a NULL SaveComment in the for loop that draws the comment
|
||
on the save/load menus.
|
||
- Fixed: Hexen does not always pass the three ACS script arguments as the
|
||
first three variables as a script. Instead, it looks at the number of
|
||
used arguments and only copies the arguments that are used, initializing
|
||
the rest to 0.
|
||
- Fixed the COLORMAP fixer so that it works correctly for palettes where
|
||
an exact match for color 0 does not exist.
|
||
- Added a check for empty VERTEXES lumps to the map loader.
|
||
|
||
October 27, 2003
|
||
- Fixed: You could not override the levelnums of the IWAD maps with levelnums
|
||
pointing to differently named maps because levelnums were search first to
|
||
last, and there was no check done to make sure that previous matching
|
||
levelnums were removed.
|
||
- Moved the R_Init() call before DecalLibray.ReadAllDecals() so that decals
|
||
can use any textures (including the plasma ball sprite).
|
||
- Fixed Heretic intermission problems: The maps were not shown because the
|
||
cluster numbers changed when I moved its MAPINFO into zdoom.wad, and the
|
||
"Now entering:" and "Finished" texts were incorrectly centered.
|
||
|
||
October 25, 2003
|
||
- Increased MAX_ACS_TRANSLATIONS to 255.
|
||
- Added APROP_Invulnerable.
|
||
- Changed savegames so that they store textures by name and usetype instead of
|
||
by index. Also removed support for loading save games created with ZDoom
|
||
versions earlier than 2.0.43 just for the purpose of removing obsolete code.
|
||
- Fixed: Unscaled skies taller than 128 were positioned incorrectly.
|
||
- Fixed: Redefining a clusterinfo with MAPINFO would not zero out the old
|
||
clusterinfo.
|
||
- Fixed: When a palette had no duplicate entries, it used the blue and green
|
||
parts of color 255 to pick a replacement for color 0.
|
||
|
||
October 24, 2003
|
||
- Added MF4_ACTLIKEBRIDGE flag.
|
||
- Fixed: Inventory items would fall through invisible bridges.
|
||
- Changed the P_TeleportMove() call in P_SpawnPlayer() so that it uses ONFLOORZ
|
||
instead of mobj->z, which fixes some stuckiness that can occur with start
|
||
spots that are too near a wall.
|
||
|
||
October 23, 2003
|
||
- Fixed: Overlapping bridge things would stand on each other.
|
||
- Changed TX_START/TX_END loading to load textures from first to last instead
|
||
of last to first, so ANIMDEFS animations that use them will behave as
|
||
expected.
|
||
- Fixed: m_filter did not average the mouse input. It just cut it in half.
|
||
- Fixed: Mouse pitch only changed in increments of 16.
|
||
- Fixed: ZDoom set the display mode twice at startup: Once at the very
|
||
beginning and again right after its initialization finished.
|
||
- Fixed: AImpactDecal::StaticCreate() checked the texture on a wall using
|
||
translation, so it would stick decals on animated textures unless the
|
||
first frame was showing.
|
||
- FMOD_File_SetCallbacks() does not seem to work with FMOD 3.70. Fortunately,
|
||
FMOD 3.70 also makes it obsolete for my purposes, so I can work around it.
|
||
(Okay, so it was fixed again in a later FMOD 3.70. But I already removed
|
||
the use of FMOD file callbacks, so I won't undo my changes now.)
|
||
|
||
October 22, 2003
|
||
- Rewrote my TAG_MORE handling to use va_list and make GCC happy.
|
||
- Fixed the default Heretic/Hexen automap wall colors so that they look
|
||
good on the parchment background.
|
||
- Fixed: FindShortestTextureAround() and FindShortestUpperAround() returned
|
||
their results as ints (without a fractional part) instead of fixed_ts.
|
||
- Changed the mapthing position fixing so that it only applies to those things
|
||
that request it (specifically, Heretic's WallTorch).
|
||
- Moved all the default MAPINFO out of the executable and into zdoom.wad.
|
||
As a side effect, Dehacked patches can no longer change the music played
|
||
on a map. (Do any patches actually do this?)
|
||
- Converted all the decals in zdoom.wad into PNGs. I was considering doing
|
||
the same for the crosshairs, but XHAIRB2 was the only one that got smaller
|
||
from the conversion from IMGZ to PNG.
|
||
|
||
October 20, 2003
|
||
- Added the CreateTexture() method to the texture manager. It checks the
|
||
contents of a lump to determine what type of image it contains, creates a
|
||
texture of the appropriate type, and adds it to the database. Everything
|
||
that was previously hard-coded to use patches now uses this instead. The
|
||
primary reason for this: PNG texture support. Just make sure your PNGs are
|
||
paletted. They do not need to have the exact same palette as the one
|
||
inside PLAYPAL, since they will be remapped to fit the game palette. ZDoom
|
||
also supports two proprietary PNG chunks:
|
||
grAb (8 bytes):
|
||
SIGNED DWORD x
|
||
SIGNED DWORD y
|
||
grAb stores the offset information and works just like the
|
||
equivalent information in a patch. The name is taken from the
|
||
ILBM GRAB chunk, which does the same thing for ILBMs.
|
||
alPh (0 bytes)
|
||
alPh is valid for grayscale images only (colortype 0). Its presence
|
||
signifies that the image data is really an alpha channel and contains
|
||
no color information. This is used by all of the decals in zdoom.wad.
|
||
- Added the m_filter cvar (false by default) to smooth out mouse movement for
|
||
those unfortunate enough to be stuck with a mouse sampling rate of just 40 Hz.
|
||
|
||
October 18, 2003
|
||
- Added super-preliminary support for playing Strife as an IWAD.
|
||
- Added fading "Read This!" screens.
|
||
- Morphed players are now allowed to predict their positions.
|
||
- Revisited the local player turning from October 10. My original
|
||
implementation had the players transmit the direction they wanted to face.
|
||
Unfortunately, this messes up the gauntlets and chainsaw, so I have reworked
|
||
it so that the players again send deltas. Any amount that accumulates between
|
||
packet sends is added to the player's local view angles. When they get sent,
|
||
they are zeroed.
|
||
|
||
October 17, 2003
|
||
- Fixed: GetLightLevel() used some globals instead of this to get the sidedef.
|
||
|
||
October 16, 2003
|
||
- Fixed: Using a cycling alias to rapidly change the player's color would
|
||
animate the player's status bar face at each color change.
|
||
|
||
October 15, 2003
|
||
- Updated to FMOD 3.70.
|
||
- Did more cleanup for GCC. Its "variable might be used uninitialized"
|
||
warnings are very annoying. Oh well.
|
||
- Did some cleanup so that Visual C++ 6 will compile without warnings. Alas,
|
||
it has some really weird errors where it complains about not being able
|
||
to #include .h files that are excluded inside an #ifdef block. They do not
|
||
effect the compilation any and seem to be generated before cl is even run;
|
||
it just looks untidy. Trivia, since I now have the opportunity to check:
|
||
When built with exactly the same settings, compared to the VC6 version, the
|
||
VC7 version is ~100k smaller, marginally faster, and takes slightly less
|
||
time to build from scratch.
|
||
- Added the MAPTEXF_WORLDPANNING flag to indicate that a maptexture wants to
|
||
be panned by world units instead of texels, so you can create high-res
|
||
drop-in replacements for existing textures.
|
||
- Fixed: The grid was not drawn properly on a rotated automap because the
|
||
x or y coordinates of the gridlines were not reset after being rotated. It
|
||
still looks bad if you turn off follow mode, but I'd rather not worry about
|
||
that.
|
||
- Fixed: Movement prediction did not preserve the ordering of blockmap links,
|
||
so the local player would always be the first entry in his blockmap cell.
|
||
The effects of this were first noticed as Pain Elementals reliably causing
|
||
the game go out of sync eventually. I imagine it probably caused desyncs in
|
||
other cases, too.
|
||
|
||
October 14, 2003
|
||
- Fixed: You could push actors with the MF2_PUSHABLE flag while doing movement
|
||
prediction, which would almost invariably make network games go out of sync.
|
||
- Uncommented the check that excluded the loading of STCFN121 only if it was
|
||
in the main IWAD. Note to anybody modding ZDoom who loads a resource wad
|
||
before the IWAD: This check in the FFont constructor assumes the IWAD is
|
||
at position 1. You will need to change this for your mod.
|
||
- Fixed: Pig players could still change back to their original weapons.
|
||
- Replaced the use A_BeakReady with A_WeaponReady. A_BeakReady was basically
|
||
just a stripped-down version of A_WeaponReady, so A_WeaponReady works just
|
||
as well.
|
||
- Added the ActivateMorphWeapon method to APlayerPawn as a replacement for
|
||
P_ActivateMorphWeapon().
|
||
|
||
October 13, 2003
|
||
- Improved the error-checking in FPatchTexture::MakeTexture() so that it will
|
||
detect overlapping spans.
|
||
- Fixed: Scaled, lower unpegged masked textures were positioned incorrectly
|
||
vertically.
|
||
- Fixed vertical positioning of scaled sky textures.
|
||
- Made MF_COUNTITEM actors dynamically counted like MF_COUNTKILL actors.
|
||
- Fixed: Morphed players returned to their player skin unless playing Hexen.
|
||
- Fixed: The chicken and pig players did not have MF3_NOBLOCKMONST set.
|
||
- Moved P_MorphPlayerThink() into an overridable method of PlayerPawn.
|
||
- Fixed: Colored sectors changed the color of the crosshair.
|
||
|
||
October 11, 2003
|
||
- Dropped MISSILERANGE back to its original value (2048 units) and added a new
|
||
PLAYERMISSILERANGE for player weapons, which is still at 20480 units.
|
||
|
||
October 10, 2003
|
||
- Fixed: Using the last inventory item in a Doom game would not redraw the
|
||
Doom guy's face on the status bar until the next time it animated.
|
||
- Fixed: The view was interpolated when switching in and out of chasecam mode.
|
||
- Changed player turning to be local. Also changed the mouse reading so that
|
||
it happens every frame instead of every tic. Together, these two changes
|
||
keep the mouse feeling responsive even when the framerate drops below 35 FPS.
|
||
It also helps a lot when playing with vsync enabled.
|
||
- Modified the interpolation system so that it knows what it is interpolation
|
||
(beyond being just a generic fixed_t *). Now it can be stored in save games.
|
||
- Fixed: Ceiling_CrushAndRaise and similar specials that passed a 0 height
|
||
to EV_DoCeiling/EV_DoFloor did not interpolate.
|
||
- Fixed: Thing_Projectile2 did not pop its parameters off the stack.
|
||
- Modified tab completion slightly. Pressing tab once now displays a list
|
||
of possible completions. Pressing tab multiple times will continue to
|
||
function as it did before.
|
||
- Added the fading notify text I had written for my Duke port.
|
||
|
||
October 8, 2003
|
||
- Changed titlepic and conback drawing to always be unmasked, because
|
||
2nd_enc.wad's TITLEPIC has holes in it.
|
||
- Stripped out a bunch of obsolete code from v_draw.cpp.
|
||
- Moved the state of the automap cheat into the am_cheat cvar.
|
||
- Changed P_TestActivateLine() so that monsters cannot activate Door_Raise
|
||
lines with speeds of 64 or above, in order to mimic Doom.
|
||
- Fixed: Vertical view doubling crashed.
|
||
- Made the secret wall color on the automap configurable through the
|
||
am_secretwallcolor cvar.
|
||
- Added a ga_togglemap gameaction, because the new parchment can cause
|
||
commands to dispatch while the background is drawing. If one of those
|
||
is togglemap and it gets handled right away, the mapback texture gets
|
||
unloaded, and AM_clearFB will crash.
|
||
- Added the parchment background used by the Heretic and Hexen automaps.
|
||
- Added some support for console fonts that don't use 8x8 character cells.
|
||
- Fixed: A_WraithMissile was missing a NULL target check.
|
||
- Fixed: The player did not make any noise during the cast finale.
|
||
- Added the player's attack sound to the finale.
|
||
- Added a check to the cast finale for monsters that have been dehacked to
|
||
have no attack states so that they won't crash the finale.
|
||
|
||
October 7, 2003
|
||
- Added DoomBounce, HereticBounce, and HexenBounce as valid properties for
|
||
DECORATE projectiles.
|
||
- Fixed: Monster telefrags still reported that the monster had killed the
|
||
player normally. (Note: The only time a monster will normally be able to
|
||
telefrag a player is on Doom2 MAP30, although this can be changed with
|
||
MAPINFO.)
|
||
- Made AM_changeWindowLoc scale the window movement so the automap will scroll
|
||
at the same rate no matter what resolution you play at.
|
||
- Fixed: Reopening a door while it was closing would not play the opening
|
||
sound.
|
||
- Fixed: You could still (de)activate dead monsters. Activating a dead monster
|
||
would make it disappear, because dead monsters usually have their next frame
|
||
set to NULL.
|
||
- Fixed an off-by-one error for the vertical positioning of the elements on
|
||
the Hexen status bar.
|
||
|
||
October 3, 2003
|
||
- Fixed: Missing TAG_DONE is WI_slamBackground().
|
||
- Fixed: ZDoom no longer tries to read non-V3.0 Dehacked patch files. Earlier
|
||
ones are apparently all binary, which has never been supported and could
|
||
make it crash.
|
||
|
||
October 1, 2003
|
||
- Added support for specifying animated texture sequences in ANIMDEFS by name
|
||
instead of by number. i.e. Instead of:
|
||
texture x_water1
|
||
pic 1 rand 5 12
|
||
pic 2 rand 5 12
|
||
pic 3 rand 5 12
|
||
pic 4 rand 5 12
|
||
|
||
You can write:
|
||
texture x_water1
|
||
pic x_water1 rand 5 12
|
||
pic x_water2 rand 5 12
|
||
pic x_water3 rand 5 12
|
||
pic x_water4 rand 5 12
|
||
- Added a check for the front sky layers of parallax skies so that the front
|
||
texture does not have color 0 remapped, because it really does use color 0
|
||
as transparent. (Note that since color 0 is now the transparent color for
|
||
everything, you can use normal transparent regions for front sky textures.)
|
||
|
||
September 27, 2003
|
||
- Changed the transparent color index from 255 back to 0. 0 is more convenient
|
||
because:
|
||
1) Images that are used as alpha masks (primarily decals) already
|
||
use color 0 as transparent, so they no longer need special processing.
|
||
2) PNG images need 255 fewer bytes to mark color 0 as transparent than they
|
||
need to mark color 255 as transparent. But this won't really be important
|
||
until I add support for PNG images (which will probably happen, but who
|
||
knows when).
|
||
The only reason I switched to 255 was because that was what BUILD used, so by
|
||
using the same transparent index, I could memory map its tiles read-only and
|
||
use them directly.
|
||
|
||
September 26, 2003
|
||
- Fixed: If a switch defined in a SWITCHES lump used the same "on" and "off"
|
||
graphics, the game would crash. Now it gets skipped, because it's not really
|
||
a switch if it doesn't change its image.
|
||
|
||
September 25, 2003
|
||
- Fixed: Using the MDK cheat always flung the dead things at you. Related, the
|
||
maximum thrust to have something fall forward on death is now 10 units/tic.
|
||
- Fixed: ClearInventory always crashed because using GiveInventory to give a
|
||
weapon afterward would not bring the weapon up, so the player's ready weapon
|
||
would be left as something that doesn't exist.
|
||
- Fixed: The overlayed automap showed statistics when not viewing through a
|
||
player's eyes.
|
||
- Increased MISSILERANGE to 20480 (was 2048).
|
||
- Changed the massacre code so that it sets the shootable bit for any monsters
|
||
that have it cleared (such as Serpents, usually), so they die too.
|
||
- Fixed: Masked midtextures beneath a fake floor (or above a fake ceiling)
|
||
only inheritted their light level and not their light color from the control
|
||
sector.
|
||
- Added code so that when a map thing is spawned directly on a line, it will
|
||
be moved 1/4 unit in toward the middle of the subsector so that it will be
|
||
clipped reliably by the renderer. See the torch right in front of the player
|
||
at the start of Heretic E1M1 for an example of this bad practice.
|
||
- Changed: MF2_FLOATBOB actors no longer splash on liquids.
|
||
- Fixed: P_AimLineAttack() clamped the player's vrange to 1 degree maximum
|
||
instead of 1 degree minimum, so it would not aim past any two-sided lines
|
||
if you were using 0 autoaim because the toppitch and bottompitch would be
|
||
the same before even entering PTR_AimTraverse. This was the cause of
|
||
chainsaw not always pulling you in and melee weapons sometimes missing
|
||
monsters that were clearly in range.
|
||
- Fixed: P_SpawnPuff() used linetarget instead of its hitthing parameter
|
||
to determine if it should play the puff's SeeSound or AttackSound.
|
||
- Improved(?) the Bloodscourge so that its initial target search only looks
|
||
in front of the player.
|
||
- Fixed: MStaffSpawn used linetarget, but P_AimLineAttack was never called
|
||
to set it.
|
||
- Fixed: P_CheckMissileSpawn would destroy ripping missiles if they spawned
|
||
inside something.
|
||
- Fixed: Dark servants could not be morphed in Hexen.
|
||
- Fixed: MageWandSmoke was not translucent.
|
||
- Combined all the WeaponPrefs list for each game into a single list.
|
||
- Added text skipping for the Hexen chess ending.
|
||
- Fixed: The chessboard finale drawer looked at userinfo.PlayerClass instead
|
||
of CurrentPlayerClass to decide which chess piece to draw, so random players
|
||
would always appear as the fighter.
|
||
- Fixed: When V_BreakLines() inserted newlines for word wraps, the default
|
||
text color was restored for the new lines. Now it adds color escape
|
||
sequences after any soft line breaks, but it leaves hard line breaks alone.
|
||
- Added support for marking scripts that are "safe for multiplayer". To do
|
||
this, add net after the script header but before the script body. e.g.:
|
||
script 1 (void) net { ... }
|
||
script 1 open net { ... }
|
||
script 1 enter net { ... }
|
||
etc.
|
||
- Added the sethudsize ACS command. It takes three parameters:
|
||
sethudsize (width, height, statusbar). The width and height is the size
|
||
of the screen that hudmessage thinks it's drawing on. If this is different
|
||
from the real screen size, the hudmessage will be scaled to make it fit.
|
||
If statusbar is 1, then the height parameter covers the status bar and you
|
||
can draw on top of the status bar. If it is 0, then the hud message will
|
||
be stretched differently depending on whether the status bar is visible or
|
||
not, because the height available to draw in is shorter when the status bar
|
||
is visible. (However, a value of 0 will still let you draw on the status
|
||
bar if the hud message extends below the height you specified.)
|
||
|
||
After using sethudsize, hudmessage coordinates also behave differently.
|
||
You now need to specify actual pixel coordinates and not numbers in the
|
||
[0.0, 1.0] range. However, they are still fixed point, so you need to keep
|
||
the decimal point. e.g. If you used SetHudSize (320, 200, 1); and want to
|
||
draw a hudmessage at the center of the screen, you should pass it the
|
||
coordinates (160.0, 100.0) and not (0.5, 0.5).
|
||
|
||
The fractional part of the coordinates effect what part of the hud message
|
||
you are positioning:
|
||
For x: .0 = positions center of box
|
||
.1 = positions left edge of box
|
||
.2 = positions right edge of box
|
||
.4 = centers text inside box
|
||
.4 can also be added to either .1 or .2 to get .5 or .6
|
||
|
||
For y: .0 = positions center of box
|
||
.1 = positions top edge of box
|
||
.2 = positions bottom edge of box
|
||
|
||
e.g. If you used SetHudSize (320, 200, 1);, then the coordinates (160.1, 100.1)
|
||
will position the upper-left corner of the hud message. The coordinates
|
||
(160.2, 100.2) will position its lower-right corner instead.
|
||
|
||
To make hudmessage behave as normal, use SetHudSize (0, 0, 0);.
|
||
|
||
In summary, use sethudsize for hud messages that are really graphics, and don't
|
||
use it for text (unless you want your text to appear the same size at all
|
||
resolutions, such as a title with a special font or something).
|
||
|
||
- Added the getcvar ACS command. It returns the value of a cvar as an int,
|
||
so scripts can alter their behavior based on cvars.
|
||
- Added the strlen ACS command. It behaves just like its C counterpart.
|
||
- Added support for loading compressed GL nodes when regular nodes are
|
||
unavailable.
|
||
- Fixed: You could pick up items above your head because P_CheckPosition()
|
||
added an extra 24 units of height to detect when you might step up inside
|
||
another actor. It still does, but now PIT_CheckThing() takes this into
|
||
consideration before touching it.
|
||
|
||
September 24, 2003
|
||
- Fixed a crash bug in A_SorcOffense2: It did not check for a NULL target.
|
||
- Added support for compressed nodes. Not only do they take up less space
|
||
on disk than regular nodes, but the also remove the limits on number of
|
||
segs, subsectors, and nodes that normal nodes have. They also store the
|
||
extra vertices as 16.16 fixed point numbers like GL nodes, so split segs
|
||
can have fractional end points.
|
||
|
||
September 23, 2003
|
||
- Finished switching from memory-mapped I/O to normal file I/O. Partly, this
|
||
was done for portability, because some systems don't support MMIO, but
|
||
mostly it was done because the in-memory format of textures no longer
|
||
matches their on-disk format, so I can't use the wads themselves as a
|
||
texture cache anymore. Since I can't do that anymore, there's not much
|
||
reason to dedicate any address space to them.
|
||
|
||
September 13, 2003
|
||
- Added r_skyboxes cvar so that skyboxes can be turned off.
|
||
- Fixed: Using noinventorybar in MAPINFO still showed the selected artifact
|
||
in the Doom status bar.
|
||
- Note to self: I am no longer using Whole Program Optimization because:
|
||
1. It makes the executable around 200k bigger right now.
|
||
2. Its performance improvements are debatable. In fact, ZDBSP is about
|
||
half a second slower on a big map when using it.
|
||
3. It makes the linking stage of a release build take a lot longer
|
||
(which would be worth it if it actually helped, but I haven't seen it).
|
||
- Changed the PNG reader so that it caches all basic chunk information in
|
||
memory the first time the file is scanned so that chunk searches can be
|
||
much quicker. This means that when you have a lot of .zds files, the save
|
||
and load menus should hopefully appear faster the first time you use them.
|
||
In the process of implementing this, I discovered a glaring bug:
|
||
G_DoLoadGame() never closed the file after loading all the data from it.
|
||
- Added a check to disallow predefined 2D images as textures on walls, floors,
|
||
and ceilings at map load time. I purposefully left this check out of ACS
|
||
because they *can* be useful, so it's nice to have some way to use them.
|
||
- Added TX_START/TX_END markers for new graphics. They can override existing
|
||
wall textures and flats.
|
||
|
||
September 9, 2003
|
||
- Fixed: STFBANY was not added to the texture manager, so multiplayer Doom
|
||
games crashed when the status bar tried to draw it.
|
||
- Fixed: Options menu titles were drawn using SmallFont instead of BigFont.
|
||
|
||
September 6, 2003
|
||
- Fixed: Trying to delay for 0 tics in a script would delay for 4294967296
|
||
tics instead.
|
||
|
||
September 2, 2003
|
||
- Fixed relative lighting was never applied to masked midtextures because I
|
||
had the check contingent upon the absence of a sector colormap. But every
|
||
sector always has a colormap; I should have been checking for a black
|
||
fade instead.
|
||
|
||
August 28, 2003
|
||
- Fixed: Spawning an item with ACS that was Dehacked would not transfer the
|
||
special or TID from the original item to the dehacked item.
|
||
- Fixed: AnimType was left uninitialized when parsing ANIMDEFS.
|
||
|
||
August 14, 2003
|
||
- Fog boundaries alone are no longer sufficient to clip a sprite.
|
||
|
||
August 13, 2003
|
||
- Fixed mirror flipping in R_ProjectSprite(). I was treating tx as if it were
|
||
in screen coordinates, but it's not. This was generally unnoticable because
|
||
tx has 16 fractional bits, so subtracting it from viewwidth was vear near
|
||
subtracting it from 0.
|
||
- Changed sprite clipping by slopes to be more like sprite clipping by unsloped
|
||
floors and ceilings.
|
||
- Removed the check for MF_SOLID in P_TestMobjZ(). Nonsolid things should
|
||
still be blocked by invisible bridges. (So no more corpses will fall through
|
||
invisible bridges.)
|
||
- Added the ability for monsters to walk on invisible bridges. Note that the
|
||
bridge's top must be below or at the monster's height. Bridges that require
|
||
even a slight step up will still be impassible to monsters. (For now. Maybe
|
||
some time in the future I will change that. Maybe.)
|
||
- Fixed: R_ProjectParticle() could project 0-width particles. This could cause
|
||
a single column of a fog boundary behind the particle to be drawn more than
|
||
once.
|
||
- Fixed a bug in R_RenderMaskedSegRange() that caused one-pixel wide ranges
|
||
to not be drawn when using r_columnmethod 1.
|
||
- Added support for extended ID666 amplification tags in SPC files. Doing so,
|
||
I discovered one change from snesapu 0.95 to 0.98: SetDSPAmp's scale has
|
||
12 more fractional bits in 0.98 than it did in the earlier versions.
|
||
- Updated SPC support for snesapu.dll version 1.01, meaning that I allowed for
|
||
a higher minimum version returned by SNESAPUInfo. Nothing else needed to
|
||
change, so I'm not sure why the minimum version got bumped. I did need to
|
||
change the mixer parameter of SetAPUOpt from 0 to -1, but 0 was also defined
|
||
as no mixer in snesapu 0.95, so I'm not sure why it worked with the older
|
||
DLL.
|
||
- Added a check for textures that try to reference a patch not in the PNAMES
|
||
lump.
|
||
|
||
August 11, 2003
|
||
- Removed the +1 from the damage calculations in PIT_RadiusAttack(). I'm not
|
||
sure what that was doing there.
|
||
- Changed the VirtualProtect() call that makes the self-modifying code
|
||
writable from PAGE_EXECUTE_WRITECOPY to PAGE_EXECUTE_READWRITE after
|
||
Timmie found out Win9x doesn't know what PAGE_EXECUTE_WRITECOPY is.
|
||
|
||
August 5, 2003
|
||
- Changed the ignoreInvisibility parameter of P_CheckSight() to a flags
|
||
parameter so that I can pass another flag (2) to indicate that the sight
|
||
check should see past "block everything" lines (the former default). By
|
||
default, sight checks no longer see past "block everything" lines, so
|
||
monsters will not be able to melee attack you through them, and explosions
|
||
will not be able to do splash damage through them.
|
||
- Fixed: Hitscan weapons always triggered the front side of an impact line,
|
||
even when they struck the back side.
|
||
- Added a fifth argument to Sector_SetColor to control how much the
|
||
palette should be desaturated. 0=leave it alone, and 255=shades of
|
||
gray. The palette is desaturated before it gets colored. The test color
|
||
console command can also take this parameter now.
|
||
- Added a new polyobject start spot (#9303) that causes the polyobject to
|
||
deal damage whenever it touches a player.
|
||
- Changed sprite loading so that you can have sprites with gaps in their
|
||
defined frame ranges again. (e.g. create frames A-D and H-N but not E-G)
|
||
- Fixed: Minisegs were messing up the polyobject seg detection code when
|
||
GL nodes were used.
|
||
- Fixed: Fullbright sprites would be drawn fullbright in levels with their
|
||
own fadtable (IOW, every foggy Hexen map) because g_level.cpp never made
|
||
a note for the renderer to look at discover that the level used a custom
|
||
fadetable.
|
||
- Added separate floor and ceiling skyboxes. Set the sky picker's second
|
||
argument according to what you want to set: 0=floor and ceiling,
|
||
1=ceiling only, or 2=floor only.
|
||
- Fixed: Undefined sky textures are once again replaced by the default
|
||
texture instead of the empty texture.
|
||
- Fixed: Shooting a railgun while standing on a ledge could make you fall
|
||
through the ledge because the railgun invisible moves you to the hit
|
||
point in case it needs to make a water splash, then moves you back to
|
||
your start spot. However, when it moved you back, it did not restore
|
||
some important variables like floorz.
|
||
- Changed the weaponless marines so that their spawn state does not cycle
|
||
between frames A and B. This holds even if you give them a weapon later
|
||
in a script, but it does not hold for marines that spawn with a weapon,
|
||
even if you take the weapon from them later.
|
||
- Fixed: The Heresiarch's orbiting balls did not have their floorz updated
|
||
when the Heresiarch's changed, so if the Heresiarch's head went below its
|
||
original floor height, its balls would rapidly jump between its head height
|
||
and the old floor height. Since it seemed relevant, I also did the same
|
||
for ceilingz. I also did it for the SorcFX2 effect (invulnerability
|
||
indicator).
|
||
- Added support for nested skyboxes. Now you can have one skybox look into
|
||
another skybox. The changes required were surprisingly minor.
|
||
|
||
August 2, 2003
|
||
- Fixed: Returning from one function to another function failed to take into
|
||
account the presence of the calling function's return info when it restored
|
||
its local variable pointer.
|
||
|
||
July 31, 2003
|
||
- Fixed a crash when using path followers with incomplete paths.
|
||
|
||
July 30, 2003
|
||
- Added CheckModified() method to FTexture for the benefit of ZDoomGL.
|
||
- Added nonexistant texture check to the warping texture setup.
|
||
|
||
July 28, 2003
|
||
- Removed the ScaleCopy canvas from FBaseStatusBar, because everything is now
|
||
drawn to the screen directly even when the status bar is scaled.
|
||
- Changed the pitch calculations in the DSimpleCanvas constructor to provide
|
||
better wall drawing performance at all resolutions.
|
||
- Corrected ::ST_Y calculation so that a scaled status bar does not have its
|
||
topmost line overwritten by the view window at certain resolutions.
|
||
|
||
July 25, 2003
|
||
- Added DTA_WindowLeft and DTA_WindowRight tags for DCanvas::DrawTexture
|
||
to restrict the portion of the source texture that gets drawn to the
|
||
screen. Changed doom_sbar.cpp to use these, keeping in mind that they don't
|
||
clip the vertical range of the texture.
|
||
- Improved the behavior of R_DrawMaskedColumn(Horiz) so that when using
|
||
non-integral scaling and drawing adjacent columns that end at different y
|
||
locations, the shorter column lines up better with the longer one.
|
||
- Fixed: R_SetSpanSize_ASM had the x and y sizes swapped when called in a
|
||
release build but not a debug build. To fix, I just removed its __regargs
|
||
entry point.
|
||
|
||
July 20, 2003
|
||
- Disabled interpolation for sliding polyobjects that complete their movement
|
||
in fewer than three tics. (The moving crate effect in Massmouth 2 this fixes
|
||
needs two tics to reloop the crate.)
|
||
- Turned off interpolation of instant movement floors and ceilings so as not
|
||
to ruin the fake moving sector effect used in a few wads.
|
||
- Added a call to R_SetupBuffer() at the end of R_RenderViewToCanvas so that
|
||
the ylookup table will be correct if the game was saved while watching the
|
||
automap.
|
||
- Fixed: Every two-sided line was storing midtexture information even if it
|
||
didn't have a midtexture.
|
||
- Changed ylookup into an array of ints instead of BYTE*s so that I can still
|
||
use the common column drawers for everything even when the viewwindow does
|
||
not start at (0,0). If you were using "dc_ylookup[y]" before, now you need to
|
||
use "dc_ylookup[y] + dc_destorg" to get the same value.
|
||
- Fixed: Skybox ceilings could sometimes be left undrawn if they were in the
|
||
same sector as a skybox floor because I was missing a check for plane height
|
||
in R_FindPlane. This only applies to skyboxes; the check was present for
|
||
normal skies.
|
||
|
||
July 19, 2003
|
||
- Fixed spacing of the characters on the finale text.
|
||
- Fixed clipping of scaled sprites in deep water.
|
||
|
||
July 18, 2003
|
||
- Fixed: remove was uninitialized in ParseEpisodeInfo().
|
||
|
||
July 17, 2003
|
||
- Moved the P_LoadBlockmap() call so that it occurs after the nodes are
|
||
processed, so if a node build is necessitated, the blockmap gets rebuilt too.
|
||
- Fixed detection of empty rejects.
|
||
- Stopped loading REJECTs that are too small. They're probably caused by an
|
||
outdated node build, so there contents are invalid and using them it is wrong.
|
||
- Added more checks for seg validity in P_LoadSegs().
|
||
|
||
July 2, 2003
|
||
- Removed the FROMCEILINGZ128 #define in p_local.h. I'm not sure what that was.
|
||
- Added support for properly tiling wall textures whose widths are not a power
|
||
of 2.
|
||
- Fixed: Heretic and Hexen status bars' artifact flash effect was tied to the
|
||
framerate instead of the ticrate.
|
||
- Changed the IMGZ loader so that it maps color 0 to 255 and color 255 to 254.
|
||
- Changed the cast finale so that it draws "our hero" using the player's suit
|
||
color instead of the default green.
|
||
- Changed the BOSSBACK drawing so you can make it some size other than 320x200
|
||
if you want.
|
||
- Moved StringWidth() out of DCanvas and into FFont, where it really belongs.
|
||
|
||
July 1, 2003
|
||
- Changed FPatchTexture::MakeTexture() so if it is loading a patch used by a
|
||
decal it remaps color 255 to 254 rather than to whatever is the closest
|
||
matching color in the palette. This is because decals are usually shade
|
||
maps rather than paletted graphics, so changing color 255 to something
|
||
in the middle of the palette looks bad. I also changed it so that it
|
||
contstructs spans from the existing column data instead of rescanning the
|
||
image for the transparent color, so it should be slightly faster, although
|
||
it probably doesn't matter, since each patch will only be loaded at most
|
||
once per level.
|
||
- Added a fix for sprites that have some, but not all, of their frames
|
||
defined. I found this one when I tried to play Doom Raider. Ironically,
|
||
it worked in 2.0.47 because I had a bug in the code that detected
|
||
undefined frames. To fix, any undefined frames are made into copies of
|
||
the first defined frame.
|
||
|
||
June 30, 2003
|
||
- Added a check to P_TestActivateLine() so that doors faster than 32 cannot
|
||
be opened by monsters.
|
||
- Fixed: If only the right-most texture column of a wall is visible, the
|
||
left-most texture column would be drawn instead.
|
||
- Added the ability for the SetFont ACS command to load normal pictures as
|
||
fonts. When used this way, it creates a new font with only the letter A
|
||
defined, and the letter A is drawn as whatever the picture is. This
|
||
effectively allows you to use HudMessage like a HudPic command. The
|
||
drawback to this method is that you cannot use any color translations, as
|
||
you can with real fonts.
|
||
|
||
June 28, 2003
|
||
- Removed i_remapkeypad cvar. The keypad is now always considered separate
|
||
from the main keyboard. This was really just something I had left over from
|
||
the very early days of ZDoom before it even had Quake-style keybinding.
|
||
- Added prioritization of HUD messages. Lower-numbered IDs are drawn in front
|
||
of higher-numbered IDs. An ID of -1 is identical to 0, except it gets drawn
|
||
behind everything else.
|
||
- Made the puke console command work across the network.
|
||
- Fixed a crash bug in the node builder when the back side of a line
|
||
shares endpoints with another seg, but the front side does not.
|
||
- Reimplemented texture warping for the new texture system. You should
|
||
even be able to warp sprites if you make their widths and heights
|
||
powers of 2, but I did not bother creating any such sprites to test
|
||
with.
|
||
- Added another BOOM fix I just now became aware of: Donuts in Doom would start
|
||
even if the pool sector was already moving.
|
||
|
||
June 26, 2003
|
||
- Removed all the masked block functions, since they are no longer used.
|
||
- Changed fonts into collections of textures.
|
||
- Extended my CPUID code to gather more information.
|
||
- Spent enough time with a P4 to find out which of the vlinetallasm4
|
||
routines works best with it. Answer: They are about the same, and both
|
||
are about 20% slower than the Athlon version running on an Athlon.
|
||
|
||
June 25, 2003
|
||
- Moved all the self-modifying code out of the .data section and into the
|
||
.rtext section. Unfortunately, NASM does not support creating writeable
|
||
code sections (even though the object file format does support this), so
|
||
I create them as regular read-only code sections in NASM and then modify
|
||
them to be writeable using VirtualProtect() at run-time.
|
||
- Tried unrolling vlinetallasm4 to see if I could eek out some more
|
||
performance from it. Unfortunately, it was slower at first and about the
|
||
same at best, so I decided not to keep the unrolled version.
|
||
|
||
June 23, 2003
|
||
- Tried writing an optimized version of DFrameBuffer::CopyFromBuff() using
|
||
prefetchnta and movntq, but it performed just as well as memcpy. Probably
|
||
because video memory is much slower than system memory, so you don't really
|
||
notice any of the inefficiencies of the rep movsd instruction that memcpy
|
||
uses.
|
||
- Modified vlinetallasm4 slightly so that it executes in about 65%-81% of the
|
||
time it used to take on my Athlon XP (depending on resolution) by reordering
|
||
the instructions for parallelism. Note that this is the exact same
|
||
optimization I tried earlier that reduced performance on a Pentium III-M.
|
||
Also, the old version of the function still uses fewer cycles on a P3 than
|
||
the new version uses on an Athlon XP. (7 cycles/pixel compared to 4.8
|
||
cycles/pixel at 800x600). I am curious which version a Pentium 4 likes more.
|
||
I will keep them both around and only select the new version for people with
|
||
AMD processors belonging to family 6 or higher. The K6 might also like the
|
||
Athlon version, but I don't have a K6 to test with, so I will leave it as
|
||
it is now.
|
||
|
||
June 21, 2003
|
||
- Modified R_DrawColumnP_ASM() so that it has an alternate version of the
|
||
inner loop without any writes to ch and hence, no partial register stalls.
|
||
- Removed the R_StretchColumn() function.
|
||
- Consolidated all the different patch drawing functions from DCanvas into a
|
||
single DrawTexture() function. Amiga-style tag lists are used to pass it
|
||
optional parameters to produce the same results as the old functions.
|
||
|
||
June 20, 2003
|
||
- Changed FImageCollection so that it is nothing more than an array of
|
||
texture indices.
|
||
|
||
June 19, 2003
|
||
- Finished moving everything to the new texture system. There is still a
|
||
little work yet to do, but at least the only place where patches are used
|
||
any more is in the texture loaders.
|
||
|
||
June 13, 2003
|
||
- BTW, with the new texture system, you don't need to have every single texture
|
||
defined in a single TEXTURE1 or TEXTURE2 lump. You do need to restrict
|
||
yourself to just one TEXTURE1 and/or TEXTURE2 lump per wad, but they don't
|
||
need to contain definitions for all the textures from the IWAD, since each
|
||
wad's texture definitions are loaded separately.
|
||
- Fixed decals for the new texture system.
|
||
- Added support for the rotation information Blood added to the art files.
|
||
|
||
June 12, 2003
|
||
- Changed screenshot capturing slightly so that it does not need to redraw the
|
||
screen, so now it can capture the framerate in the corner.
|
||
- Added support for animating Build tiles.
|
||
- Added a new thing to use for spawning sprites in Build maps.
|
||
- Got sprites working with the new texture system.
|
||
|
||
June 11, 2003
|
||
- Fixed X-Y scale of Build maps. I had it twice as big as it should have been.
|
||
- Fixed the assembly slope drawer to work with non-square textures.
|
||
|
||
June 10, 2003
|
||
- After putting it off for far too long, I finally started working on a unified
|
||
texture system that will let me treat sprites, flats, and wall textures all
|
||
the same. Sprites are not done yet, but now Build maps can be viewed with
|
||
the correct floors and ceilings. One consequence of this change is that flats
|
||
are now stored in column-major format instead of row-major format, so I had
|
||
to changed the span drawers to account for this.
|
||
- Added a new MAPINFO flag: NoInventoryBar - prevents the inventory bar from
|
||
ever appearing in a Doom map. Also changed the Doom inventory bar so that it
|
||
won't be drawn if you have no inventory items, even if you press the inventory
|
||
selection keys.
|
||
- Changed PTR_UseTraverse() to continue traversal when a backward-facing line
|
||
is encountered.
|
||
|
||
June 9, 2003
|
||
- Fixed: Batman Doom no longer crashes during the cast finale.
|
||
- Made the texture error checking slightly more lax. It seems there is some tool
|
||
that likes to write to unused areas of the texture directory meaninglessly.
|
||
- Fixed a prediction bug caused by moving between sectors with different friction
|
||
levels. P_GetFriction() is sensitive to the ordering of the touching_sectorlist,
|
||
so I need to preserve this ordering before and after prediction.
|
||
|
||
June 7, 2003
|
||
- Changed my transparent color from 0 to 255. An analysis of the original Doom,
|
||
Heretic, and Hexen graphics revealed that this color was never used. It was
|
||
probably going to be the transparent color before the Doom engine switched to
|
||
using spans. But the real reason for the switch is because 255 is the color
|
||
the Build engine uses for transparency, so I can draw its sprites without
|
||
doing anything special.
|
||
|
||
June 6, 2003
|
||
- Made a slight fix to the frame interpolation: The time when the game tic is
|
||
run is the base time I need to use for interpolation. Otherwise, the display
|
||
could glitch if a tic passes between the time the gametic is run and the time
|
||
it is displayed.
|
||
- Added a workaround for NT 4: Somebody goofed, and the default registry entry
|
||
for CLSID_DirectInput under NT 4 has the wrong GUID. Two of the hexits are
|
||
swapped so that it is stored in the registry as
|
||
{25E609E0-B259-11CF-BFC7-444535540000} instead of as
|
||
{25E609E0-B259-11CF-BFC7-444553540000}. You can fix this by running
|
||
"regsvr32 dinput.dll" from a command prompt, or you can bypass it by loading
|
||
dinput.dll and using DirectInputCreate to obtain an interface. Since I can't
|
||
expect everybody running NT 4 to run regsvr32, I have to do the latter. :-(
|
||
- Fixed: Killing a morphed monster left an inert copy of the original monster
|
||
around, so scripts that depended on being able to use thingcount() to determine
|
||
when all the monsters of a certain type are dead would fail.
|
||
- Changed the Pig's and Chicken's MF_COUNTKILL bit to MF3_ISMONSTER, so morphing
|
||
a monster does not add to the total number of monsters on the level.
|
||
- Fixed: FDoomStatusBar::DrawToSBar could create a partially transparent status
|
||
bar because it left color 0 alone. I use color 0 as a transparent color for
|
||
image blocks like this. (Though the status bar doesn't really need to be
|
||
drawn with transparent parts, it was convenient to do it that way.)
|
||
- Changed the tid and TIDtoHate members of AActor from unsigned to signed, so
|
||
that you can use negative tags with your teleporters.
|
||
|
||
June 2, 2003
|
||
- Fixed: Absolute lighting on walls was very dark. I don't think I have this
|
||
feature accessable through Doom/Hexen maps, so you only notice it if you
|
||
try to load a BUILD map.
|
||
- Added some command-line parameters to help make BUILD maps look better:
|
||
-art Specifies the directory with the TILESxxx.ART files.
|
||
-bpal Specifies the palette.dat file.
|
||
So if I want to look at the Blood maps, I can do this:
|
||
zdoom -art d:\games\blood -bpal d:\games\blood\palette.dat -file d:\games\blood\*.map
|
||
(assuming that I have already extracted all the maps from the RFF file).
|
||
Unfortunately, the tiles only show up on walls. I need to create a unified
|
||
texture system so that wall textures and flats can be used identically.
|
||
- Fixed: Bots would only move on the arbitrator's computer in a net game.
|
||
- Fixed: If foggy and non-foggy areas were visible simultaneously, gun
|
||
flashes would sometimes light the foggy area.
|
||
- Fixed: R_ResetViewInterpolation did not actually work.
|
||
- Fixed: Line-to-line teleporters did net reset the view interpolation.
|
||
- Fixed: The super-fast projectiles in Heretic and Hexen with custom Tickers
|
||
did not update their previous positions, so they could not be interpolated
|
||
correctly by the renderer.
|
||
|
||
May 31, 2003
|
||
- Added support for loading Blood maps. They are no more playable than
|
||
normal BUILD maps, but since I can already load Blood sounds and BUILD maps,
|
||
it seemed like the thing to do.
|
||
- Fixed: Loading BUILD maps was broken because they did not initialize
|
||
sectors' ZoneNumber.
|
||
- Changed the default for vid_vsync from true to false, because with the
|
||
unlimited framerate, no vsync actually produces better control.
|
||
|
||
May 30, 2003
|
||
- Added interpolation for moving polyobjects.
|
||
- Optimized SpawnPolyobj() and IterFindPolySegs() so that they are loads
|
||
faster.
|
||
|
||
May 29, 2003
|
||
- Fixed Dehacked support for patches that swap sprite names instead of
|
||
changing them to something completely new.
|
||
- Fixed the new net code to recover properly in situations where there is
|
||
high packet loss. Except for one instance: If a player quits with -netmode
|
||
1, and the packet with that quit notification gets dropped, it never gets
|
||
sent again, so any players left will hang waiting for tic updates for a
|
||
player who is no longer there.
|
||
- Rewrote D_ArbitrateNetStart() so that all data passes through the host.
|
||
This should allow computers on separate networks to play together as long
|
||
as they can all talk to the host and you use -netmode 1.
|
||
- Bumped BACKUPTICS up from 12 to 36.
|
||
- Finally finished decoupling -dup from the game ticker. Getting it to work
|
||
without consistancy failures was a lot more work than I expected.
|
||
Fortunately, I think it was worth it. I can notice little difference now
|
||
between -dup 5 and no -dup (aka -dup 1). Before, doing that would take
|
||
your framerate down to 7 FPS, rendering the game practically unplayable.
|
||
|
||
May 28, 2003
|
||
- Started decoupling -dup from the framerate.
|
||
- Fixed an obscure crash bug caused by drawing past the bottom of composite
|
||
textures whose heights are not powers of 2. If the composite texture was
|
||
constructed at the end of a page of memory, the game could read into the
|
||
next page, which is bad if the next page is not mapped in.
|
||
|
||
May 27, 2003
|
||
- Framerates above 35 FPS should now be done. Whether or not it's good in a
|
||
net game, I'm not sure, since they require rather precise timing to play
|
||
smoothly.
|
||
- Added interpolation for every actor in the game, after I watched a rocket
|
||
flying and it was obvious that its position was updating less often than
|
||
the view.
|
||
- Added functions from BUILD for interpolating floor and ceiling movement.
|
||
- Added some view interpolation to allow frame rates above 35 FPS. It looks
|
||
very nice (and playing at 35 FPS now looks very bad), _except_ it sometimes
|
||
misses a tic so you get an annoying hiccup that is worse than just keeping
|
||
things locked at 35 FPS. This is despite my sprinkling NetUpdate calls to
|
||
some of the most frequently used rendering functions. [edit: It seems the
|
||
hiccups were because I had a background program running; even at idle
|
||
priority, it still stole a little time away from ZDoom every now and then.]
|
||
|
||
May 23, 2003
|
||
- Got a crash in R_SetWindow() when it was setting the value of the r_viewsize
|
||
cvar. After recompiling with the _CRTDBG_CHECK_ALWAYS_DF flag, I could not
|
||
reproduce it to find out why it happened. Poo.
|
||
- Added player movement prediction to make network games feel more responsive
|
||
when gametic is lagging behind maketic. You can turn it off by setting
|
||
cl_noprediction to true.
|
||
- Fixed: Using -extratic with the packet server crashed because it tried
|
||
to send tic -1, which doesn't exist. I don't know why it didn't cause
|
||
problems with the regular peer mode.
|
||
- Stopped using all named RNGs to check game consistancy. I have too many
|
||
named ones that aren't all used in the gameplay loop. Now I just pick a
|
||
few key RNGs and use those.
|
||
- Added another byte to the packets sent from the master to the slaves that
|
||
contains the master's maketic. This is so that the slaves speed up or
|
||
slow down to match the master instead of each other.
|
||
|
||
May 22, 2003
|
||
- Corrected my misunderstanding of how the frameskip array is used in
|
||
d_net.cpp.
|
||
- I found out how to make three player games perform fine on XP: Set the
|
||
processor scheduling back from "Background services" to "Programs".
|
||
Here's a link to an article that explains the values for the
|
||
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\PriorityControl\
|
||
Win32PrioritySeparation key that this setting changes:
|
||
<http://www.mcpmag.com/columns/article.asp?EditorialsID=405>. I think
|
||
it's probably more the short time slices than anything else that makes
|
||
it perform well. Why had I changed it from "Programs" in the first place?
|
||
Because I was having trouble with background console programs sucking
|
||
up all the CPU time, so I wanted to give everything equal time slices.
|
||
I now have the registry key set to 0x20, which is short, fixed time slices.
|
||
Not quite the same as the "Programs" setting. - Using the release build
|
||
instead of the debug build obviously helps performance, too.
|
||
|
||
May 21, 2003
|
||
- Tried playing a multiplayer game on two machines for the first time in
|
||
ages, and it went out of sync very quickly. It turns out that my laptop
|
||
had genblockmap false, and my desktop had genblockmap true. Since this
|
||
obviously makes it go out of sync, I'll have to make it a server var.
|
||
Gennodes will need the same treatment, since it also implies genblockmap
|
||
even if genblockmap is false. For ZDoomGL, however... I suppose I'll need
|
||
to disable the blockmap regeneration if the nodes are only being built
|
||
to get GL information.
|
||
- Wrote some code to let the net arbitrator function as a packet server. It
|
||
makes everybody jerky, but that might just be because I'm running two
|
||
clients on XP, and XP seems to do much worse at dividing processor time
|
||
up equally between processes than NT 4. A two player game on one machine
|
||
runs fine after a second or two, but three players is crap.
|
||
[Okay, tried it on three separate machines, and it wasn't jerky, so that's
|
||
a relief. Gametic was lagging behind maketic by 4 on the host, however, so
|
||
it wasn't quite as responsive as I would have liked. That's opposite what
|
||
I would have expected, since the host gets the ticcmds from the other
|
||
players first. Maybe I need to investigate the code where it "speeds up
|
||
time" some more. Or maybe I need to have the master send as many tics as
|
||
it has for the other machines instead of the lowest common number of tics;
|
||
e.g. If it has 1 tic from one machine and 2 tics from another, it should
|
||
send all of them to a third machine instead of just 1 tic each from the
|
||
first two machines. For comparison, a 2 player game (which is effectively
|
||
always peer-to-peer even with packet server turned on), had gametic lag
|
||
behind maketic by 2.]
|
||
- Removed the names from these RNGs: pr_chainwiggle, pr_afx, pr_decal, and
|
||
pr_decalchoice. I don't know why it happens, but they can sometimes
|
||
disagree with each other in a network game, particularly pr_decal. Since
|
||
they don't have any real impact on game sync, removing their names keeps
|
||
them from affecting the sync check, but it also means they won't be
|
||
remembered across save games.
|
||
- Added DEM_EMPTYUSERCMD so that if a player's input doesn't change from one
|
||
tic to the next, I can save one byte in the network packet. That makes the
|
||
minimum packet size for one tic 5 bytes: 2 for the header, 2 for
|
||
consistancy, and 1 for the tic itself. I'd call that a big improvement over
|
||
the previous minimum size of 14 bytes (8 header, 2 to hold the list of
|
||
players in that packet, 2 for consistancy, and 2 for the tic).
|
||
- Fixed: Damaging a monster would not reset its threshold value, so it would
|
||
be more willing to switch targets than it should have been.
|
||
- Changed AActor::StaticSpawn() to not initialize the LastLook member for
|
||
non-monsters. This caused the game to go out of sync when non-essential
|
||
actors were spawned on one machine and not another (e.g. decals and bot
|
||
aiming helpers).
|
||
|
||
May 20, 2003
|
||
- Beefed up the consistancy checking so that it now considers more than just
|
||
the players' X positions.
|
||
|
||
May 19, 2003
|
||
- Optimized the size of the network packets some. The minimum header size is
|
||
now 2 bytes instead of 10. Note that I removed the checksum from the header.
|
||
The network transport should already be doing error checking and not provide
|
||
us with any corrupt packets. In the highly unlikely event that somebody ports
|
||
this back to DOS, they'll need to add a checksum in there. Also made some
|
||
corrections to the packets that get sent around before the game begins.
|
||
|
||
May 16, 2003
|
||
- Made active powerup colors customizable via dehacked misc section.
|
||
- Changed the netbuffer checksum to use CRC32 (which gets used like a CRC28
|
||
because the top 4 bits are chopped off to make room for some command bits).
|
||
I could probably get rid of the checksum entirely, since UDP packets
|
||
already include their own checksum field.
|
||
- Fixed: When one player in a network game unexpectedly quit, everybody else
|
||
would bomb out with ECONNRESET. Now the i_net.cpp code pretends that those
|
||
players sent out NCMD_EXIT packets. Why a connectionless protocol like UDP
|
||
would return a connection-oriented error code, I do not know.
|
||
- Starting a network game with the -join parameter before the host started
|
||
would fail with ECONNRESET. This is no longer an error, so you don't
|
||
need to start the host first anymore.
|
||
- Added MF2_NOTELEPORT to TeleportFog.
|
||
|
||
May 5, 2003
|
||
- Fixed: P_Move() used the actor's default speed instead of the actor's
|
||
speed.
|
||
|
||
May 2, 2003
|
||
- Added mousewheel support to the console.
|
||
|
||
April 26, 2003
|
||
- Uploaded 2.0.47.
|
||
- Added support for custom episode definitions (for all games, not just
|
||
those that are already divided into episodes).
|
||
- Fixed: Doom Shareware does not have an ENDPIC graphic, so don't try to
|
||
show it.
|
||
- Added a visible inventory bar for Doom.
|
||
|
||
April 25, 2003
|
||
- Added APROP_Ambush for Set/GetActorProperty.
|
||
- Added myasctime() function, which is equivalent to
|
||
asctime(localtime(&time(NULL))), except it doesn't crash when the current
|
||
time is before Jan 1, 1970 (which makes localtime return NULL).
|
||
|
||
April 20, 2003
|
||
- Added a NULL file check to M_NotifyNewSave(). I was sent a crash report
|
||
where this appears to have been the cause.
|
||
- Fixed: Using teleporters with actor hits ceiling/floor triggers was
|
||
problematic because the actor would still be clipped to its new ceiling
|
||
or floor even if the teleport made it unnecessary
|
||
- Finished Thing_ProjectileIntercept so that it works in three dimensions.
|
||
Big thanks to all those on the notgod phorum who helped me with the math.
|
||
|
||
April 16, 2003
|
||
- Extended my speedup trick for 1024x768 so that it also gets used for
|
||
2048x1536 and 512x384. I can now play the beginning of MAP01 in 2048x1536
|
||
at ~28 fps instead of 14 fps. 512x384 is so small that it doesn't really
|
||
matter, but I think it is a few tenths of a millisecond faster now. What
|
||
I think is going on: If the screen's pitch is a power of 2, then drawing
|
||
columns (which Doom does a lot of in its renderer unless you're looking at
|
||
the floor) will flush the cache lines a bunch and bring performance
|
||
plummetting, as it has to transfer much more data to and from main memory.
|
||
By making the pitch slightly larger so that it isn't a power of 2, the
|
||
cache gets utilized better, so performance goes up.
|
||
- Started adding Thing_ProjectileIntercept special (175). It is identical to
|
||
Thing_ProjectileAimed, except it leads the target.
|
||
- Fixed: Activating SoundEnvironment actors did not work, because I forgot
|
||
to include the AActor * parameter in the prototypes.
|
||
|
||
April 14, 2003
|
||
- Uploaded 2.0.46.
|
||
- Added support for adding new projectiles to DECORATE.
|
||
- Changed the summon cheat so that it can be used to shoot projectiles
|
||
and not just spawn them in place.
|
||
- Made the Lost Souls spawned by Pain Elementals inherit the Pain
|
||
Elementals' hate information.
|
||
- Fixed the poison dart's poison application.
|
||
- Added a NULL-actor check to P_DisconnectEffect(), because I received a
|
||
crash log where it was called with a NULL actor.
|
||
|
||
April 12, 2003
|
||
- Fixed: The calulation of secplane_t::ic was different in p_setup.cpp's
|
||
slope spawners than it was in secplane_t's serializer, so if a demo was
|
||
made on a level with slopes, and the game was saved during the course of
|
||
the demo, the demo would desync if the player went on a slope after the
|
||
save.
|
||
- Fixed: If a DirectInput 8 interface could not be obtained, the game would
|
||
hang while trying to read mouse input using the DirectInput 3 interface.
|
||
This is because DI8 has a DIDEVICEOBJECTDATA structure that is 4 bytes
|
||
larger than DI3's. Unfortunately, IDirectInputDevice::GetDeviceData() does
|
||
not do anything useful when passed a structure larger than it recognizes.
|
||
It leaves the buffer alone, does not touch *pdwInOut, and returns DI_OK,
|
||
which is quite misleading. I had to step into DirectInput before I
|
||
realized what was going on, although I could have also discovered it by
|
||
browsing dinput.h more thoroughly.
|
||
|
||
April 11, 2003
|
||
- Moved joystick reading out of I_GetEvent() and into I_StartFrame(). That's
|
||
where it was in the original DOS Doom, because reading a traditional
|
||
gameport can be an expensive operation (though I think USB is much faster).
|
||
|
||
April 9, 2003
|
||
- note to self: Remove BOOGA s
|
||
- Fixed: Thing_Projectile2 wasn't shifting the zspeed over.
|
||
- Fixed: The slopes created with P_SetSlope() had their orientations inverted.
|
||
- Time to upload 2.0.45.
|
||
- Made "cyborg" a synonym for the "other" gender, for compatibility reasons.
|
||
- Fixed: Forget "== 0" after stricmp (Line1, "No Ice Death").
|
||
|
||
April 8, 2003
|
||
- Uploaded 2.0.44.
|
||
- Changed A_FreezeDeathChunks() to not use S_FREETARGMOBJ. It just destroys
|
||
the actor instead. I should probably get rid of S_FREETARGMOBJ globally,
|
||
since it isn't really needed with my stale pointer cleanup code.
|
||
- Fixed lockups caused by changing the TID of an actor stored in another
|
||
actor's LastLook member because of Thing_Hate.
|
||
- Made MF4_NOICEDEATH accessible through Dehacked as "No Ice Death".
|
||
- Added "No Autofreeze" as a misc Dehacked setting.
|
||
- Fixed the "Entering Unnamed" text that could be seen when finishing a game.
|
||
- Fixed: Frozen things could not be shattered with radius damage, because the
|
||
thrust they got after the damage would reset their tic counters to 3 seconds.
|
||
- New: The marines now start with the same sprite scaling as the player, and
|
||
AScriptedMarine::SetSprite() now copies the scaling of the actor it's taking
|
||
the new sprite from.
|
||
- Added some code to check for fake floor/ceiling sector actions when an actor
|
||
moves up or down because of moving floors and ceilings.
|
||
- Fixed: SetActorProperty for APROP_Health assumed you were working with
|
||
players after I added the player fix for it.
|
||
- Fixed: The plasma ball still had MF2_ICEDAMAGE from my testing.
|
||
- Fixed: Gender selection in the menu was broken because I had changed to
|
||
"cyborg" to "other" in m_menu.cpp but not in d_netinfo.cpp. Justification:
|
||
You can have male and female cyborgs, so cyborg isn't a proper gender.
|
||
- Some files were missing from the VC6 and Dev-C++ projects, so fixed that.
|
||
|
||
April 7, 2003
|
||
- Uploaded 2.0.43.
|
||
- Fixed incorrect end-of-LevelInfos detection. Interestingly, it only crashed
|
||
when compiled with GCC.
|
||
- Updated the crash logger to display the exception information for an
|
||
access violation.
|
||
- Added Thing_Projectile2 ACS command. It's mostly a clone of the
|
||
Thing_Projectile and Thing_ProjectileGravity specials, but it lets you give
|
||
the projectile a TID.
|
||
- Added a newtid parameter to the Thing_ProjectileAimed special.
|
||
- Fixed flat warping so that it does not crash with flats smaller than 64x64.
|
||
- Fixed: The secondary frost shards shed by the mage's primary frost missile
|
||
could damage the player who shot them.
|
||
- Made the randomization of the starting tic count for missiles an actor flag.
|
||
This is so that Heretic and Hexen missiles can be better used in a Doom game.
|
||
|
||
April 6, 2003
|
||
- Added a check for NULL players to DCajunMaster::WhatToGet() because I got
|
||
a bug report where that happened.
|
||
- Fixed: MF3_NOTARGET only worked if the attackers's TID was non-0 or you used
|
||
Thing_Hate on the target.
|
||
- Fixed: The Heretic staff was able to damage ghost enemies, which it
|
||
isn't supposed to be able to do.
|
||
- Fixed: In their charge attack, Minotaurs could only do damage to other
|
||
monsters and not to players.
|
||
|
||
April 5, 2003
|
||
- Created a minimal FLAC distribution with just the parts ZDoom needs to
|
||
compile, so the lazy people who want to build don't need to grab the
|
||
library themselves.
|
||
- Changed A_FreezeDeathChunks() so that it spawns more ice chunks for large
|
||
things than it does for small things.
|
||
- Added a generic ice death, so things can turn to ice and shatter without
|
||
having a specific ice death. Now you can use bex to create a Doom missile
|
||
that does ice damage and watch Hexen's cool ice death.
|
||
- Fixed: Radius damage did more thrust as your distance from the bomb
|
||
source increased.
|
||
|
||
April 2, 2003
|
||
- Changed ripper projectiles to do damage per-tic and not per-step. This is
|
||
more intuitive and also makes for better Heretic/Hexen compatibility,
|
||
since those games don't adjust the step count with projectile size (unless
|
||
the radius > 15, but none of their ripping projectiles are that big).
|
||
- Fixed some weirdness that can happen when the listener is positioned
|
||
directly on a sound source in 3D sound mode by moving the listener
|
||
back slightly from its true location. It was especially pronounced with
|
||
the nForce but can also be heard with the Audigy depending on the
|
||
environment settings.
|
||
- Fixed: Sector sounds always played at Z coordinate 0, so they weren't
|
||
always audible when using 3D sound.
|
||
- Added all the EAX presets from UT2003 and verified that the SNDEAX parser
|
||
actually works. Also tweaked the EAX editor a bit.
|
||
|
||
April 1, 2003
|
||
- Updated to FMOD 3.62.
|
||
- Fixed: Loading more than one dehacked patch (through some means other
|
||
than an include statement) that altered state information would not work
|
||
because only the first one would be able to find the correct locations
|
||
of the original numbered states.
|
||
|
||
March 31, 2003
|
||
- Fixed: PCD_PRINTNAME with input values 1 through 8 did not work properly.
|
||
|
||
March 29, 2003
|
||
- Added support for normal, buring, and frozen deaths to decorations. Still
|
||
need to test these.
|
||
- Changed P_SeekerMissile() to aim at the center of targets when seeking
|
||
vertically, rather than at the targets' feet.
|
||
- Fixed: MF_ICECORPSE was not being set when things froze to death.
|
||
- Changed DCanvas::TextSWrapper() so that it can draw characters that are
|
||
clipped, since that was fixed in the underlying block drawers a long
|
||
time ago.
|
||
- Fixed: V_BreakLines() crashed if it encountered a character wider than the
|
||
width of the box used to break the text in.
|
||
|
||
March 27, 2003
|
||
- Added support for playing SLIGE-generated maps without running them through
|
||
a node builder first.
|
||
|
||
March 26, 2003
|
||
- Added support for FLAC music and sounds. See <http://flac.sourceforge.net>
|
||
for more information about what FLAC is. Since it's a lossless codec, I
|
||
don't really want to see people using it for music, but the option is
|
||
there none-the-less. All the sounds in zdoom.wad (sans DSEMPTY) have now
|
||
been compressed using FLAC.
|
||
- Added a fix for fonts that contain color 255 in their glyphs. LWM had some
|
||
fonts like this, and it counts as a bug in imagetool (which I have now
|
||
fixed).
|
||
|
||
March 22, 2003
|
||
- Made more flags available to decorations.
|
||
|
||
March 21, 2003
|
||
- Added Alt-Enter as a hotkey for toggling between fullscreen and windowed
|
||
modes, as is customary for Windows programs. Also discovered that I can't
|
||
seem to run fullscreen through the debugger anymore without the game
|
||
window minimizing. [Must have been something screwy going on then; I can
|
||
run it fullscreen under the debugger now.]
|
||
- Revamped the joystick menu to support axis mapping and multiple controllers.
|
||
Under Windows versions that send DBT_DEVNODES_CHANGED broadcasts, it even
|
||
updates itself automatically when you attach/detach USB controllers.
|
||
- Changed MF2_REFLECTIVE behavior so that missiles also get reflected
|
||
vertically.
|
||
- Changed all the weapon state functions' prototyes from (player_t*, pspdef_t*)
|
||
to (AActor*, pspdef_t*). Now they have the same first parameter as the
|
||
standard state functions, so bex/dehacked patches should be able to use the
|
||
standard code pointers with players, so long as they don't need a target
|
||
or something similar that player's don't maintain. It also means that weapon
|
||
functions that do very generic things like just playing a sound should work
|
||
with non-weapons.
|
||
- Changed AActor::UpdateWaterLevel to accurately reflect when a player's eyes
|
||
are underwater.
|
||
- Made setslot usable from KEYCONF lumps.
|
||
|
||
March 19, 2003
|
||
- Updated the joystick code to use DirectInput instead of the old multimedia
|
||
system.
|
||
- Removed dxcrap.cpp. I am linking with dinput(8).lib again.
|
||
- Fixed: If Trace() did not hit a wall in a sector with a fake floor before
|
||
the trace ran out, it would not set CrossedWater even if the trace crossed
|
||
below the fake floor.
|
||
- Altered P_LineAttack() so that it doesn't spawn bullet puffs on lines
|
||
using the Line_Horizon special.
|
||
|
||
March 17, 2003
|
||
- Added a check for a NULL lastenemy in A_LightningClip() because Mike B. had
|
||
a crash where this was NULL.
|
||
- Gave the fist and chainsaw AmmoUse values of 1, so dehacked patches that make
|
||
them ammo-using will use ammo without needing to specify a new AmmoUse.
|
||
- Added new sound sequences for the Heretic doors, because they don't have the
|
||
same sound usage as Doom's.
|
||
- Fixed: The powered-up phoenix rod would use ammo when a Tome of Power ran out
|
||
and infinite ammo was enabled.
|
||
- Added SpawnPoint initialization to AActor::StaticSpawn(), so things that get
|
||
spawned during the game can respawn someplace other than (0,0).
|
||
- Changed projectile impact lines so that the projectile's owner activates the
|
||
script instead of the projectile itself. Projectile cross lines will still be
|
||
activated by the projectile.
|
||
- Fixed: The window drew over the video window when WM_PAINT was received while
|
||
playing a movie in windowed mode.
|
||
- Fixed: Closing the window while a movie was playing would close the window
|
||
without quitting the game.
|
||
- Fixed: Fake inventory items cleared their special after being picked up.
|
||
- Added support for setting the player's speed using SetActorProperty()
|
||
and APROP_Speed. This speed gets multiplied to the player's normal
|
||
speed.
|
||
- Changed A_BrainSpit() so that it does not rely on a pointer to the
|
||
DBrainState in the BrainEye that calls it. This allows it to be used
|
||
by actors other than the eye, which is necessary because of Dehacked.
|
||
|
||
March 13, 2003
|
||
- Fixed: Loading a FON2 font without a space or N character would read
|
||
(essentially) undefined memory when calculating the width to use for the
|
||
space character.
|
||
|
||
March 11, 2003
|
||
- Removed the old midiStream-based code.
|
||
- Wrote a SNDEAX lump parser.
|
||
- Fixed: Aliases defined in KEYCONF lumps were still saved to the ini. They
|
||
could also override aliases stored in the ini. Now, if an alias is defined
|
||
in a KEYCONF, it will not be saved to the ini, and if there is an alias with
|
||
the same name already defined in the ini, the original alias will be kept in
|
||
the ini when you quit.
|
||
|
||
March 10, 2003
|
||
- Fixed: Defining an animation for a non-existant texture could stomp on memory.
|
||
- Added support for different sound zones with individual EAX settings. To assign
|
||
sectors to different zones, you either make them physically unconnected or you
|
||
use a Line_SetIdentification with the second parameter set to 1.
|
||
- Fixed: Changed FindLevelByWarpTrans() search order to return later warptrans
|
||
matches in favor of earlier ones, so you can start Hexen DK with the menu
|
||
again.
|
||
- Fixed: AZShrub2::GetExplodeParms() and AZXmasTree::GetExplodeParms() were
|
||
mis-named and had the wrong prototypes, so they were never called.
|
||
- Added a hack when playing Hexen so that the BLANK texture is permanently mapped
|
||
to the empty texture. The standard Hexen maps use it as an empty texture,
|
||
even though it isn't really empty.
|
||
|
||
March 8, 2003
|
||
- Changed sprite initialization so that TNT1 is always the first sprite. This
|
||
is what I wanted a long time ago, and I think it used to be like this but
|
||
got changed when I rearranged the sprite table initialization.
|
||
- Changed the TID target search so that it looks for actors in the same block
|
||
before it searches the actor chains. Helm's Deep's AI seems a bit quicker once
|
||
things get going now, but there are still bits of architecture (lots of masked
|
||
mid textures) that are going to slow it down, and it's still slow at the
|
||
beginning and when the second wave starts moving.
|
||
|
||
February 24, 2003
|
||
- Decided to take up the challenge and figure out how to load Strife textures.
|
||
It looks like they just removed some unused fields from the texture
|
||
directory. Now you can actually load strife1.wad and look at the maps, but
|
||
there are still plenty of oportunities to make it crash if you try to use
|
||
it as an iwad.
|
||
- Added a check for negative texture patchcounts to R_InitTextures(), just
|
||
for the people who try to use -iwad strife1.wad.
|
||
- Fixed: The game would hang when trying to overwrite an read-only savegame
|
||
for the same reason it used to hang when playing back a save operation
|
||
recorded in a demo: The save itself was cancelled, but the request to save
|
||
was not cancelled, so it would endlessly try to save the game.
|
||
- Fixed: P_BounceWall() would bounce every bounce type off of walls, but it
|
||
shouldn't have done anything for MT2_HERETICBOUNCE.
|
||
|
||
February 18, 2003
|
||
- Changed: P_RadiusAttack no longer tries to apply damage when distance is 0.
|
||
|
||
February 15, 2003
|
||
- Changed P_SetSlope() to scale by ANGLE_90 instead of ANGLE_180. Silly me;
|
||
Scale() works with signed ints, but ANGLE_180 is to big for that, so it
|
||
could overflow.
|
||
|
||
Feburary 13, 2003
|
||
- Changed: When locating a map by its warptrans number fails, it can now try
|
||
to locate it by map number instead. Apparently, an old version of the Hexen
|
||
demo did not have warptrans.
|
||
|
||
February 12, 2003
|
||
- 2.0.42 time.
|
||
- Fixed: If weapon drop was on and a player respawned before their body went
|
||
nonblocking, they wouldn't actually drop a weapon.
|
||
- Dehacked compatibility fix: MF3_ISMONSTER now copies the state of
|
||
MF_COUNTKILL for any actors that get patched.
|
||
- BOOM compatibility fix: Lines with a type of 0 still need their ID set to
|
||
their tag. P:AR's rotating light on E1M1 requires this for the teleport line
|
||
its voodoo doll uses.
|
||
- Added code to set the MIDI output device's volume to full for devices that
|
||
support it. That makes the full range of volumes available without having
|
||
to set the volume with the Windows mixer.
|
||
- Fixed: The GiveInventory command would give one inventory item if the amount
|
||
was 0.
|
||
- Fixed: Inventory items that were not present in a savegame were not reset to
|
||
0 when the savegame was loaded.
|
||
|
||
February 10, 2003
|
||
- Added wildcard support to the cmdlist and cvarlist commands, so you can look
|
||
at just a subset of the lists.
|
||
- Fixed: The total monster count reset when loading saved games so that it would
|
||
no longer include monsters that spawned after the start of the level.
|
||
- Uploaded 2.0.41.
|
||
- Fixed: When a MIDI or MUS song stopped because it reached the end of the song
|
||
(if it was nonlooping), the midiOut device would not be released.
|
||
- Removed the DirectMusic MIDI option because it wasn't working, and Timidity++
|
||
is a better sounding solution if you can't do hardware wavetable MIDI.
|
||
- Fixed: ProduceMIDI() crashed because it had the wrong header check.
|
||
- Fixed looping problems with the new MUS player because I accidentally moved
|
||
some code in the wrong place. The new MUS and MIDI players also had semi-
|
||
random default channel volumes for the same reason.
|
||
|
||
February 8, 2003
|
||
- Uploaded 2.0.40.
|
||
- Added support for Apogee's EMIDI controllers.
|
||
|
||
February 7, 2003
|
||
- Wrote new MUS and MIDI player routines that do not use MIDI streams. Instead,
|
||
they use a time critical thread and midiOutShortMsg to send MIDI messages to
|
||
the playback device. I have not tried this with a lesser OS like Win98, so I
|
||
hope it works okay there. I want to remove the old player code so I that I
|
||
just have one method to use for playing MIDI data. This approach offers two
|
||
advantages over the stream method as it was employed: 1) Minimal setup time,
|
||
so music changes can happen faster. 2) Volume support for everything that
|
||
supports channel volume controllers, which is everything I tried. I think I
|
||
might also add support for the Apogee Sound System's EMIDI files just because
|
||
I have some docs for it.
|
||
|
||
February 6, 2003
|
||
- Added mouse and joystick option menus. Also added an option not to
|
||
prescale the mouse movements. I've done this all along because it
|
||
feels like the vertical sensitivity is much higher than the horizontal
|
||
sensitivity, so the prescaling compensates for that perceived difference.
|
||
But it could be the reason some people gripe that "ZDoom's mouse feels
|
||
different from Doom's! It sux0rz delux0rz!" So now they can turn it off
|
||
with a single switch instead of messing with the various mouse sensitivities
|
||
to decompensate.
|
||
- Fixed: The game did not give up the mouse if use_mouse was false.
|
||
- Changed the default ID for lines without a Line_SetIdentification or
|
||
similar special to -1 instead of 0. This is so that you can use
|
||
Line_SetIdentification to give a line ID 0 and still tell it apart
|
||
from all the other lines on the map without IDs. This emulates standard
|
||
Hexen behavior and also fixes a bug on caldera.wad, MAP10 where almost
|
||
every line on the map would get set to a switch texture right after
|
||
you entered it.
|
||
- Added support for Hexen's warptrans mapinfo command. I see now that it
|
||
gets used to determine which map you start on for a new game.
|
||
- Changed MAPINFO parsing so that maps named ExMy will automatically get
|
||
their levelnum set to xy unless you specify something different. MAPxx
|
||
maps were already getting this treatment.
|
||
- Added a syntax error message if you don't specify a valid keyword for a
|
||
block in ANIMDEFS.
|
||
- Added a non-player check to the A_DoomSkinCheck and A_HereticSkinCheck
|
||
functions. I guess if somebody uses Dehacked to assign the player death
|
||
states to something else, they could get called by something that isn't
|
||
a player.
|
||
|
||
February 5, 2003
|
||
- Changed A_KeenDie() to search among whatever called it and not exclusively
|
||
among Keens.
|
||
|
||
February 4, 2003
|
||
- I can now build a fully working version of ZDoom with MinGW. Perheps now it
|
||
is time for me to turn my attention back to Linux.
|
||
|
||
February 3, 2003
|
||
- Fixed a stupid bug I added to the tl_tab calculations in fmopl.cpp.
|
||
- Fixed: Monsters that hated both players and monsters would crash if there
|
||
was more than one player in the game.
|
||
- It's 2003 now, isn't it?
|
||
|
||
February 2, 2003
|
||
- Uploaded 39.cab.
|
||
- Fixed: Dormant actors still bled.
|
||
- Added a PatrolSpecial actor (doomednum 9047). It works like
|
||
InterpolationSpecial, but for PatrolPoints instead of InterpolationPoints:
|
||
When a monster reaches a PatrolPoint, it will execute the specials of any
|
||
PatrolSpecials with the same TID as that PatrolPoint.
|
||
- Added a new ACS command: SetMarineSprite (tid, "otherClass"); You give it
|
||
TID of the marine(s) to change and the name of an actor class to get the
|
||
sprite from.
|
||
|
||
February 1, 2003
|
||
- Fixed a Heretic/Hexen bug: Actors with a crash state would not crash if
|
||
they died on the ground.
|
||
- Changed I_InitInput to request a DirectInput 3 interface instead of
|
||
whatever the header specifies. It should work with NT 4 again, now.
|
||
- Added checks to the marines' attacks to prevent crashes if their targets
|
||
unexpectedly disappear.
|
||
- Fixed: Monsters could start targetting themselves if they blew up a
|
||
nearby barrel (or pod).
|
||
- Changed A_VileAttack() so that the Archvile can't hurt itself with its
|
||
own fire.
|
||
- Fixed: In Hexen you can queue scripts for maps on other hubs. They don't
|
||
get cleared along with the world variables, as I had mistakenly believed.
|
||
|
||
January 31, 2003
|
||
- Removed the need to press D to set the default resolution at the video
|
||
modes menu. This seemed to be a common point of confusion (despite having
|
||
the directions right there in the menu), but more importantly it makes the
|
||
menu fit on one screen when using 9 pixels per row of text instead of 8.
|
||
Heretic and Hexen both look better with 9 pixels of room rather than 8.
|
||
- Fixed: Scrolling up past the top of the menu was hard-coded to assume
|
||
the Doom font when finding the bottom of a menu, so it didn't work
|
||
correctly for Heretic or Hexen.
|
||
- Fixed: When pressing up arrow to scroll the top of a menu, its scrollpos
|
||
could get set to -1.
|
||
- Removed the limit on the number of frames that can assigned to an
|
||
animation sequence with ANIMDEFS.
|
||
|
||
January 30, 2003
|
||
- Fixed: The old Thing_Hate behavior no longer worked.
|
||
- Added the Thing_ChangeTID(oldtid, newtid) special to change the TID of
|
||
anything with oldtid to newtid. If oldtid is zero, then whatever activates
|
||
it gets its TID changed to newtid.
|
||
- Added the ActivatorTID() ACS command to retrieve the TID of the actor
|
||
that activated a script.
|
||
- Added the PlayerNumber() ACS command for finding out which player is
|
||
executing a script. Returns 0-7 for an actual player and -1 for
|
||
anything else.
|
||
- At GooberMan's request, added bool as a synonym for int to ACC.
|
||
- Added support for a KEYCONF lump. This is a limited console script that
|
||
can only execute the commands alias, defaultbind, addkeysection,
|
||
addmenukey, weaponsection, and addslotdefault. Now a wad with custom
|
||
key and weapon bindings doesn't need a separate .cfg file to operate.
|
||
- Added weaponsection console command for specifying that the weapon slot
|
||
assignments go to some ini section other than the default.
|
||
- Fixed: Processing an ACS object's MINI chunk initialized one map variable
|
||
too many.
|
||
- Fixed: Map variables that were not stored in a savegame were not
|
||
zero'd when the game was loaded.
|
||
- Changed: Include directives in Dehacked patches will now look for the
|
||
specified file in the same directory as the patch they are used from
|
||
before they look in the current directory.
|
||
|
||
January 29, 2003
|
||
- Changed: Just loading a game is no longer enough to assign a quicksave
|
||
slot. You need to either save a game or quickload first.
|
||
- New: The pullin command now looks for wads in the same directory as the
|
||
script that executed it before it looks for them in the current directory.
|
||
- Fixed: Switch definitions in ANIMDEFS with an on state that ends on the same
|
||
texture it began on would crash instead of properly detecting the error
|
||
and quitting with a useful error message.
|
||
- Changed: Voodoo dolls no longer affect a player's deltaviewheight.
|
||
- Changed: Voodoo dolls can now be pushed around by damage even when the
|
||
player is invulnerable.
|
||
- Fixed a bug in P_DamageMobj() I introduced after some reformatting that
|
||
prevented voodoo dolls from being pushed around.
|
||
- Changed the final output of the OPL2 synth to look like this:
|
||
final_output = (chip_output * 1.5) - 18000
|
||
This is because most of the instruments the Doom games use create
|
||
waveforms that are primarily located in the upper half of the wave.
|
||
(Because, of the four basic waveforms of the OPL2, all but one of them
|
||
only use the upper half of a sine wave.)
|
||
- Fixed the assembly part of OPLmusicBlock::ServiceStream() to work with
|
||
odd-sized buffers.
|
||
- Fixed: When the player does not have the invisibility power active, the
|
||
weapon would always be drawn with STYLE_Normal instead of whatever style
|
||
the player had.
|
||
- Added the cleric and mage Icon of the Defender behavior.
|
||
|
||
January 27, 2003
|
||
- Fixed the finetuning of double-voice OPL2 instruments, so now the Heretic
|
||
musics don't sound like crap.
|
||
- Changed the OPL2 emulator to write data to the output buffer a voice at a
|
||
time instead of a sample at a time. The speedup isn't as great as I would
|
||
have liked, but it does let me avoid doing work for voices that aren't
|
||
playing anything, and it should make it easier to optimize in the future.
|
||
- Just a note: I think the OPL2 outputs samples at ~49716 Hz.
|
||
- Removed the x2 amplification from fmopl2.c's output, because some of the
|
||
Heretic songs made it overflow. Looking at sampled output however, it seems
|
||
most of the data is going only into the positive half of the wave, so perhaps
|
||
I could subtract some constant from the data and keep the amplification.
|
||
- Reduced the length of the OPL stream so that it gets filled fourteen times
|
||
each second, so that it interrupts the main thread more consistantly and
|
||
has less of an impact on the game's "smoothness".
|
||
|
||
January 25, 2003
|
||
- Changed the frequency calculations in the OPL2 player to match DMX's (or
|
||
so I think).
|
||
- Fixed an amplitude problem with the OPL2 synth I inadvertantly introduced
|
||
while trying to optimize it.
|
||
|
||
January 24, 2003
|
||
- Uploaded 38.cab.
|
||
- Added a fix to prevent you from becoming a zombie player when there are
|
||
voodoo dolls on a level, and each accumulates enough damage to kill you,
|
||
but none of the dolls receives enough damage individually to die.
|
||
- Changed monster patrols so that when a monster reaches the end of a path,
|
||
it looks in the same direction as the final patrol point.
|
||
- Fixed: PIT_RadiusAttack() ignored MF2_NODMGTHRUST, so Hexen's poison cloud
|
||
would push things away from it. I also used this to determine if that
|
||
function will spray blood splats, but perhaps a poison damage flag would
|
||
be better?
|
||
- Added the ACS commands SetPlayerProperty and GetPlayerProperty.
|
||
- Added different versions of the scripted marine that each use a different
|
||
weapon. There's also an ACS command to let you change their weapons at
|
||
any time.
|
||
|
||
January 23, 2003
|
||
- Added some more Thing_Hate types that can be used to make monsters that hunt
|
||
both monsters and players or to ignore players that attack them.
|
||
- Made Bishops spawned by Heresiarchs and Wizards spawned by D'Sparil inherit
|
||
their masters' hate preferences.
|
||
- Made Heresiarchs and Bishops ignore each other. I didn't check if this was
|
||
original Hexen behavior or not, but it seems stupid for a Heresiarch to kill
|
||
a Bishop it just summoned simply because the Bishop happened to hit it.
|
||
- Added a new invisible thing (#9076) that you can make monsters attack using
|
||
Thing_Hate. It's probably best to place this next to something solid, since
|
||
it blocks projectiles (including the player's) and affects the player's aim.
|
||
The angle you give it determines how much health it has, 1 degree is 10 hit
|
||
points, 2 degrees is 20 hit points, etc. Give it an angle of 0, and it never
|
||
dies. The angle field is used for this instead of one of the argument fields
|
||
so that it can still execute a death special.
|
||
- Fixed: P_NightmareRespawn() assigned the old body's spawn parameters to the
|
||
teleport flash instead of to the new body, so when the new body respawned,
|
||
it would respawn at (0,0) instead of its original location. Also set the
|
||
respawn chance back to ~1.6% instead of the 100% I had been using earlier
|
||
for testing.
|
||
|
||
January 22, 2003
|
||
- Uploaded 37.cab.
|
||
- Played with A_Chase() a bit more so that monsters that hate monster groups
|
||
will look for closer monsters on their way to a monster they can't see.
|
||
|
||
January 21, 2003
|
||
- Improved Thing_Hate with a third parameter. Now we have Thing_Hate (tid1,
|
||
tid2, type). If type is 0, it behaves just like before: Everything with tid1
|
||
chases after the first thing with tid2 and then promptly forgets their hate
|
||
once that thing dies. Set it to 1, and it's much like normal except instead
|
||
of looking for players everything with tid1 looks for something with tid2.
|
||
And if type is 2, it's just like type 1, except the monsters with tid1 don't
|
||
actually need to see any monsters with tid2 before they start chasing after
|
||
them, so it's somewhat closer to type 0 than type 1 is.
|
||
- Changed Hexen player jumping velocities from 9 to 9.75 because they weren't
|
||
jumping as high as they should have been, even though 9 is the value Hexen
|
||
uses. The 9.75 was arrived at by playing Hexen.exe, standing next to a wall
|
||
to see how far up the texture the player gets when he jumps, and then
|
||
tweaking until ZDoom was approximately the same. It is enough, at least, to
|
||
make the clock gear in hexdd MAP57 accessible without the Wings of Wrath.
|
||
|
||
January 20, 2003
|
||
- Fixed: Dormant monsters should not enter their SeeState when Thing_Hate is
|
||
used on them.
|
||
- Fixed: In Hexen, the Wings of Wrath do not expire at all in single player
|
||
games. I had erroneously believed that landing on the ground would
|
||
temporarily halt their timer until you started flying again (which is
|
||
incorrect).
|
||
- Fixed: At the easiest difficulty, P_DamageMobj halves damage. If the damage
|
||
was one, it would become zero. Now if the damage is one, it stays one.
|
||
|
||
January 18, 2003
|
||
- Added a PointerSubstitution() method to DObject to replace all pointers
|
||
to one object with pointers to another object. This is so that when
|
||
something morhps or unmorphs, enemies targetting that actor will be
|
||
targetting the correct actor instead of the stale one.
|
||
- Added: In Heretic, killing a player as a chicken turns you into a
|
||
"super chicken." ZDoom was missing this.
|
||
- Removed the redundant P_HealRadius() function.
|
||
- Fixed: Palette remapping isn't enough to make Doom skins work with Heretic
|
||
because the two games also use different death animations.
|
||
- Fixed: The Icon of the Defender gave the name of the Ring of Invincibility
|
||
when it was picked up.
|
||
- Fixed: The warp console command crashed if you didn't specify enough
|
||
parameters.
|
||
- Added means-of-death as a third parameter to Thing_Damage.
|
||
- Fixed: Items that had been dehacked would not have their MF_DROPPED bit set.
|
||
- Added a ShouldStay() method to ADehackedPickup() so that it can get
|
||
rerouted to the real pickup.
|
||
- Fixed: Single player demos played back with different RNG seeds than they
|
||
were recorded with.
|
||
|
||
January 16, 2003
|
||
- Fixed assignment of partner segs in FNodeBuilder::FixSplitSharers().
|
||
|
||
January 14, 2003
|
||
- Added NULL-actor checks to P_CheckSight().
|
||
|
||
January 13, 2003
|
||
- Fixed: Advancing to a new level would subtract the number of live monsters
|
||
on the old level from the total number of monsters on the new level.
|
||
- Fixed: The game tried to play the hall music when doing non-Hexen endings.
|
||
- Added world and global arrays for ACS. They are somewhat different from
|
||
map arrays: They are one-dimensional and you don't specify a size when
|
||
you declare them. Instead, they grow as-needed during normal use.
|
||
- Removed sp from DLevelScript, because the stack pointer is always 0 when
|
||
RunScript() returns.
|
||
- Fixed: PCD_INCMAPARRAY and PCD_DECMAPARRAY used the wrong stack value for
|
||
the array index.
|
||
|
||
January 11, 2003
|
||
- Assigned spawnid 154 to the Baron's fireball (to be added as T_BARONBALL
|
||
to zdefs.acs).
|
||
|
||
January 10, 2003
|
||
- Changed sectorsound to use CHAN_AUTO instead of CHAN_BODY. Otherwise, not
|
||
all the Hexen "puzzle" switches sound right.
|
||
- Fixed: The STREAM_ENUM macro in a_artifacts.h used call-by-value instead of
|
||
call-by-reference, so artifact types could be written to an archive, but
|
||
they couldn't be read back from it.
|
||
- Removed inventorySlotNum, as it was unused.
|
||
- Fixed: Reading strings with FArchive would never return NULL, and it left
|
||
copies of all the strings read behind in memory.
|
||
- Fixed: When sprites were renumbered in a recompile, the sprite scanner in
|
||
FArchive would find matching-named skin sprites instead of the real sprites.
|
||
- Added a "vapor" SaveVersion 205. This is a version 204 save written by
|
||
versions 2.0.33-2.0.36 because arti_pork was added in 2.0.33 and I did not
|
||
bump the version. There will be no savegames that are actually written as
|
||
version 205, because I changed the way artifacts are saved so I won't have
|
||
to worry about this particular problem again in the future.
|
||
- Uploaded 36.cab.
|
||
- Added a new player property for ACS (PROP_TOTALLYFROZEN #4). When active, it
|
||
won't let the player do anything but press +use, which is what PROP_FROZEN
|
||
was really supposed to be.
|
||
- Added MF_NOLIFTDROP flag for no-gravity things that should not move down
|
||
with lifts if they are standing on the lift. This is only used with the
|
||
various bridge actors because various ZDoom maps break if they move with the
|
||
lift, and the Hexen bridge has visual glitches if it moves so I doubt
|
||
anybody used this Hexen behavior.
|
||
- Got rid of the orbit table for Hexen's bridge balls. Now they move every tic
|
||
instead of every fifth tic and use the finecosine/finesine tables directly.
|
||
- Fixed: When a monster was spawned through a script but there was no room
|
||
for it, it would still count toward the total monsters on the level.
|
||
- Fixed: P_Thing_Spawn() set MF2_PASSMOBJ for flags instead of flags2, so it
|
||
was really setting MF_NOCLIP, and the P_TestMobjLocation() check would
|
||
always succeed.
|
||
|
||
January 9, 2003
|
||
- Added a new player property for ACS (PROP_FLY #3).
|
||
- Added a level flag to set monster death special behavior to the Hexen mode:
|
||
The things that die activate the specials; not the things that kill them.
|
||
You can use MAPINFO to turn this off in Hexen and turn it on in Heretic/Doom.
|
||
- Fixed: The Heresiarch used its death inflictor instead of itself as the
|
||
activator of its death script.
|
||
- Fixed: DLevelScript did not have its activator member recorded in its list
|
||
of object pointers.
|
||
- Fixed: Saving a game in a demo would cause the program to hang when that
|
||
point was reached in the demo.
|
||
- Made the game recover from failures during dearchiving thinkers so that
|
||
you can actually do more stuff without it crashing. Just needed to add
|
||
a try/catch block so that it can undo what was done before it failed.
|
||
- Added the -savedir option to specify where savegames are stored.
|
||
- Fixed a bug in PIT_FindFloorCeiling(): It used tmthing even though
|
||
P_FindFloorCeiling() didn't set it.
|
||
|
||
January 8, 2003
|
||
- Fixed: The hexen main menu showed the spinning skulls from Heretic instead
|
||
of the fire bulls.
|
||
|
||
January 7, 2003
|
||
- Uploaded 35.cab.
|
||
- Fixed the node builder to successfully create GL nodes with >64k segs.
|
||
- And now the node builder is fixed point again. (Undo is nice.) Making it
|
||
exclusively floating point made vrack2big3's BSP take 10 seconds longer to
|
||
build. Since the goal was to avoid the cost of int-to-float conversions
|
||
every time PointOnSide was called, I'd say it backfired miserably. With just
|
||
the change to PointOnSide, it's only about 1 second slower than 2.0.34.
|
||
- Okay, the node builder now uses floating point for all its calculations.
|
||
- Changed FNodeBuilder::PointOnSide() to use floating point to avoid overflow.
|
||
Methinks I should just change the node builder to use floating point
|
||
exclusively. Then it won't have to do int-to-float calculations repeatedly.
|
||
- Changed A_Tracer() to set the puff type before it calls A_SpawnPuff().
|
||
- Fixed: P_RecursiveSound crashed if it encountered a line that was marked
|
||
two-sided but lacked a second side.
|
||
- Fixed: The cursor in the Advanced Sound Options menu started one line too
|
||
high.
|
||
- Added Hexen support to giveinventory/takeinventory/checkinventory and made
|
||
them work with cross-game items.
|
||
- Fixed: Clock gear 3's inventory image was misspelled as ARLTIGER3.
|
||
|
||
January 4, 2003
|
||
- Fixed: findFreeChannel() in mlopl.cpp would try very high channels instead
|
||
of the correct ones and access undefined memory.
|
||
- Fixed: The Thing_Spawn special would fail to spawn things without
|
||
MF2_PASSMOBJ set if there was something already occuping their x,y space,
|
||
whatever that thing's z coordinate. This was problematic with the Hexen
|
||
bridges.
|
||
- Fixed: DDrawFB::PaintToWindow() can get called during the render process
|
||
when a WM_PAINT message is received. If the framebuffer was already locked,
|
||
this would overwrite the buffer pointer and pitch with those of the
|
||
physical screen. This is not normally a problem, but one way to get a
|
||
repeatable crash was to turn on any of the pixel doubling modes and switch
|
||
from fullscreen to windowed. Simple fix: PaintToWindow() does nothing if
|
||
the screen has a non-zero LockCount, and Update() zeros LockCount before
|
||
it calls PaintToWindow().
|
||
|
||
January 3, 2003
|
||
- Uploaded 34.cab.
|
||
- Added a parameter to AActor::LinkToWorld() to tell it to use the original
|
||
incorrect point-on-line side calculations of the Doom engine. This is just
|
||
so that the map spots in the emerald key room of Hexen MAP01 will spawn in
|
||
their intended sector and not the sector that is technically correct.
|
||
- Added a new compatibility option: compat_usewallblocking. Now I see that
|
||
there are wads that used non-use lines to block the player from activating
|
||
a use line.
|
||
- Changed AActor::StaticSpawn() again. When spawning map things, the floor
|
||
and ceiling z's are taken from the actor's center point. When spawning
|
||
things during gameplay, the true z's are found instead. So P:AR's player
|
||
starts are still working, non-players placed in the map will be able to
|
||
get stuck in the floor of a neighboring sector, and anything spawned
|
||
during the game with ACS (or otherwise) will have the "correct" behavior
|
||
and know what their true floor and ceiling z range is. TBD: Should this
|
||
be players-only? Decided: Yes, otherwise bullet puffs will appear on
|
||
window sills instead of the actual spot where the bullet hit.
|
||
- Changed P_FindFloorCeiling() to use different global variables than
|
||
P_CheckPosition(), because it can be called within P_CheckPosition().
|
||
Doom has too many global variables for its physics code.
|
||
|
||
January 2, 2003
|
||
- Uploaded 33.cab.
|
||
- Fixed A_RestoreSpecialPosition() for MF2_FLOATBOB actors.
|
||
- Fixed: Made the porkalator and morph ovum separate artifacts.
|
||
- Fixed: In Heretic and Hexen, MF2_FLOATBOB objects are always positioned
|
||
relative to the floor. In ZDoom, they bob around a central z height, so
|
||
they need to have gravity applied to them in order to best approximate
|
||
the orginal behavior.
|
||
- Created a new function (P_FindFloorCeiling) to find the floor and ceiling
|
||
for newly-spawned things. P_CheckPosition() has side effects, so I can't
|
||
use it. This is also used by P_TeleportMove() now.
|
||
- Uploaded 32.cab.
|
||
- Fixed: EV_DoCeiling() only set the crush value for the moving ceiling if it
|
||
had a crushing type, so BOOM generalized ceilings could not do crushing
|
||
damage.
|
||
- More GCC 3.2 cleanup. Everything compiles now--except for zdoom.rc. Windres
|
||
can't handle it so I had to settle with a precompiled version.
|
||
- Split off the system-specific code from w_wad.cpp into i_wad.cpp.
|
||
- Changed AActor::StaticSpawn() so that it uses P_CheckPosition() to get the
|
||
real floorz and ceilingz to use in case the actor overlaps a line.
|
||
- Gave the fatso's fireball spawnid 153. In zdefs.acs, T_CACODEMONSHOT was
|
||
incorrectly named T_MANCUBUSSHOT.
|
||
- Created one-parameter version of the W_MapLump functions that return pointers
|
||
to const data so that the compiler can be issue warnings if they get assigned
|
||
to non-const pointers.
|
||
- Added MF2_PUSHWALL to all the Heretic monsters.
|
||
- Put back MF2_PASSMOBJ because of the unexpected consequence removing it had:
|
||
Overlapping things would push each other to the ceiling. This was most
|
||
visible with the invisible bridges, which people have commonly overlapped.
|
||
I have taken a different approach to the situation that caused me to remove
|
||
it: Now you can't push anything without MF2_PASSMOBJ while riding a lift.
|
||
|
||
January 1, 2003
|
||
- Uploaded 30.cab. I hope I didn't break anything I haven't already caught by
|
||
getting rid of the zone heap and switching to memory-mapped files.
|
||
- Made more input cvars global config (such as m_pitch and m_yaw).
|
||
- Changed the sound rolloff factors for Heretic and Hexen.
|
||
- Fixed: Unlike Doom and Heretic, Hexen crushers do not continue to move if
|
||
there is something being crushed underneath them. Instead, they wait for the
|
||
thing underneath to either die or move out of the way. The crushing pillars
|
||
you find the first time you visit Hexen MAP03 do not actually kill you if
|
||
they don't wait for you to die before fully closing.
|
||
- Added support for "fake" lumps so that the music system can continue to play
|
||
on-disk music files without having to include them on the command line with
|
||
-file. These "fake" lumps are automatically unmapped when they are done being
|
||
used so that their memory can be decommitted, but their file handles remain
|
||
open because I don't want to deal with also removing lumps at runtime.
|
||
|
||
December 31, 2002
|
||
- Changed FRandom::StaticClearRandom() so that different seeds produce more
|
||
disparate results in the different RNGs.
|
||
- Fixed: FRandom::StaticClearRandom() was not being called after rngseed was
|
||
set at game startup.
|
||
- Changed the wad loader to use memory mapped files, so now I have better
|
||
caching than what the zone heap could hope for, since the VM system does all
|
||
the work for me.
|
||
- Added a fixup in R_InitTextures() for the Doom E1 sky, which has its patch's
|
||
y origin at -8 instead of 0.
|
||
- Added the F_EndFinale() function to clean up after the finale is over, since
|
||
I can't let the zone heap do it automatically anymore.
|
||
|
||
December 30, 2002
|
||
- Removed the zone heap. Everything is done using new/delete and malloc/free
|
||
now, so you don't have to worry about specifying a heap large enough.
|
||
- Fixed: The [.NetServerInfo] ini sections were still read in single player
|
||
games.
|
||
- Fixed: The player class filter in P_SpawnMapThing() used SinglePlayerClass[]
|
||
instead of player_t::CurrentPlayerClass.
|
||
- Put the FMUSIC loader back the way it was so that MODs in WADs work again.
|
||
- Changed EV_Teleport() so that if it can't find any teleport destinations,
|
||
it looks for a matching map spot instead. This fixes the southern teleporter
|
||
in Hexen MAP10.
|
||
- Added MF3_DONTMORPH to the Hexen boss monsters.
|
||
- Removed MF2_PASSMOBJ flag and made it standard behavior for all actors
|
||
because of a test map I received: If an actor with MF2_PASSMOBJ rides up
|
||
a lift underneath a non-MF2_PASSMOBJ actor, the top actor would fall inside
|
||
of the bottom one once the lift stops.
|
||
|
||
December 28, 2002
|
||
- Changed the nodebuilder timer to use I_MSTime() instead of clock/unclock,
|
||
because very large maps can make it exceed the 32-bit resolution of
|
||
the clock/unclock macros.
|
||
- Uploaded 29.cab.
|
||
- Moved the R_ClearParticles() call out of G_InitNew() and into P_SetupLevel().
|
||
- Experimented with the 3D sound parameters to find a rolloff factor that
|
||
best approximates the software sound.
|
||
- Updated to FMOD 3.61.
|
||
- Fixed: S_UpdateSounds() still multiplied the SoundCurve volume by 2, so
|
||
things decayed twice as quickly as they should have. I would like to get
|
||
rid of the SoundCurve use, but I'm not sure how Raven modelled the curve
|
||
for Heretic and Hexen.
|
||
|
||
December 27, 2002
|
||
- Fixed: The FireDemon could not be perceived to move except when strafing
|
||
because it still used PROP_SpeedLong instead of PROP_SpeedFixed. Because
|
||
this was the only place where PROP_SpeedLong was used, I got rid of it.
|
||
|
||
December 26, 2002
|
||
- Changed the internal subsector_t struct to use 32 bits to keep track of
|
||
segs instead of 16, and fixed the node builder up so that it works with
|
||
>64k segs.
|
||
- Changed the internal node_t struct to allow for more than 32768 subsectors
|
||
and nodes.
|
||
- Fixed: The fighter played PlayerFighterGrunt instead of FighterGrunt on his
|
||
third punch because I didn't realize the two sounds had different names.
|
||
- Changed PIT_FloorDrop() to more accurately reflect Hexen's behavior. Things
|
||
under gravity move down with the floor if the floor moves fewer than 9 units
|
||
in one tic (not 24), and no-gravity things always move down with the floor
|
||
(no matter how fast it drops) if they were standing on it.
|
||
- Changed forwardmove and sidemove scaling calculations in P_MovePlayer()
|
||
so that they won't overflow.
|
||
- Changed server vars so that only compatflags and forcewater are archived.
|
||
|
||
December 24, 2002
|
||
- Fixed: Autosave still worked when the player was dead.
|
||
- Fixed: The Quietus pieces had the wrong spawnids, so they were overriding
|
||
the stained glass shards. I'm not sure why they had the wrong numbers.
|
||
- Fixed: AZWingedStatueNoSkull and AZGemPedestal had their see and melee
|
||
states swapped, so they wouldn't change their appearance when activated.
|
||
- Uploaded 28.cab.
|
||
- Fixed: When "Monsters Ignore Each Other" was set, monsters could not be
|
||
hurt by ACS-spawned projectiles.
|
||
- Fixed: Underwater reverb did not work on Audigies anymore because FMOD was
|
||
only reporting them as supporting EAX3 reverb and not also EAX2 reverb.
|
||
- Fixed: Empty console command lines are not added to the history list.
|
||
- Added a new ini section so that select ServerInfo cvars can be remembered
|
||
across games. There is a different one for single player games and for net
|
||
games, and the net game version is only saved on the machine that acts as
|
||
host.
|
||
- Added useflechette command, which acts like "use ArtiPoisonBag1,2,or3"
|
||
depending on the player that uses it.
|
||
- Moved the default +showscores key in Hexen to Scroll Lock, because \ is
|
||
already used by "use ArtiHealth".
|
||
- Added the Hexen default keys for quick-use of inventory items.
|
||
- Added addslotdefault command to only put a weapon in a slot if it isn't
|
||
already assigned to a slot.
|
||
- Changed P_FindNamedInventory() to use the same names as the actors that
|
||
represent the inventory items, for consistancy.
|
||
- Gave the pod and explosive barrel MF3_DONTGIB flags so that if
|
||
- Changed the setslot and addslot commands so that you cannot have more than
|
||
one copy of a weapon in a single slot.
|
||
|
||
December 23, 2002
|
||
- Did some cleanup for GCC 3.2.
|
||
- Added a fix for wads that have things like FF_END immediately followed by
|
||
F_END.
|
||
|
||
December 22, 2002
|
||
- Fixed: ThrustFloorUp and ThrustFloorDown did not have spawnids, nor did they
|
||
override Activate() and Deactivate().
|
||
- Fixed: P_LoadBuildMap() read numsectors out of the Build map before checking
|
||
to make sure there was actually enough data for numsectors to be present.
|
||
|
||
December 21, 2002
|
||
- Changed pointer tracking in pointy classes to use pointers to members instead
|
||
of offsetof, as per GCC 3.2's suggestion.
|
||
|
||
December 20, 2002
|
||
- Turned the vertex and linedef indices in the map data structures into
|
||
unsigned words. Everything compiled without warning, so maybe big level
|
||
support really is that easy.
|
||
- Fixed: Maps with >32k unpacked sidedefs could not be loaded because
|
||
sidei_t::a.map in p_setup.cpp was still signed.
|
||
- Changed: REJECT lumps with 0 length won't even be loaded now. And REJECTs
|
||
that have some length but are nothing but 0s will be freed.
|
||
- Fixed: The sprintf in the first case of D_WriteUserInfoStrings() had an
|
||
extra comma, so it would crash, making demo recording impossible.
|
||
- Fixed: DArgs::CheckValue() did not check to ensure that value is valid.
|
||
(That is, that it does not begin with + or -).
|
||
- Fixed: Trying to add more bots than there are starts in a coop game would
|
||
leave the extra bots as "active", so you could not spawn them even after
|
||
removing the existing bots.
|
||
- Fixed: Players could not choose their weapons if they loaded a savegame
|
||
before starting a new game because weapon assignments were only transmitted
|
||
at the start of a new game.
|
||
- Added separate translation tables for the player corpses so that when a
|
||
player dies and comes back with a sprite that uses a different palette
|
||
translation range (i.e. a mage dies and is reincarnated as a fighter),
|
||
the corpse will retain the translation the player had at death. This also
|
||
means you can't change the color of your corpses anymore.
|
||
|
||
December 19, 2002
|
||
- Uploaded 27.cab.
|
||
- Fixed: The internal node builder was not setting bPolySeg, so segs would
|
||
be randomly marked as belonging to polyobjects if you used the internal
|
||
node builder.
|
||
- Uploaded 26.cab.
|
||
- Fixed: TELEFOGHEIGHT was not being used everywhere it needed to be.
|
||
- Changed: P_DropItem() uses the standard Doom drop for items that don't
|
||
have gravity (such as the Mage's lightning weapon).
|
||
- Changed: Dying puts you into chasecam mode.
|
||
- Fixed: The fighter's axe and hammer could not be picked up for mana by the
|
||
other classes.
|
||
- Moved the assignment to waitingforspawn inside SpawnBot() past the checks
|
||
to see if any bots are left to spawn.
|
||
|
||
December 18, 2002
|
||
- Fixed the "give armor" cheat for Hexen.
|
||
- Added artifacts and puzzlepieces as categories for the give cheat.
|
||
- Replaced Killough's blockmap builder with the one I had written for ZDBSP.
|
||
The MBF one was found to be incorrect near vertex 0 of Doom's E3M6. There
|
||
are probably other problem spots, but that's the one that was first
|
||
noticed.
|
||
- Fixed: Hexen_sbar.cpp had WPIECEM1 misspelled as WPEICEM1, so the top
|
||
part of the Bloodscourge would not appear in the status bar until you had
|
||
the complete weapon, which causes a different graphic to be drawn.
|
||
- Fixed the elusive hub crashing bug introduced by my November 26 but/hub
|
||
"fix". Parsing of NEW_PLR_OBJ and NEW_PLR_CLS_OBJ when m_HubTravel is
|
||
true would wait until the object had been parsed before mapping it to
|
||
an index. It needs to be mapped immediately after being created so that
|
||
any references to it in its stored data will actually refer to it and
|
||
not the next object in line.
|
||
- Fixed P_SetSectorFriction() so that using a friction amount of 100
|
||
calculates the standard movefactor 2048 instead of 255.
|
||
- Changed Sector_SetFriction so that when it's used from a script, it will
|
||
clear and set the sector's friction flag as needed.
|
||
- Fixed: The fighter's axe and hammer would still use mana when infinite
|
||
ammo was turned on.
|
||
- Fixed: P_SpawnPlayerMissile spawned missiles with a facing direction
|
||
slightly to the right of their real direction when there were no monsters
|
||
for it to autoaim at. Among other things, this made the frost cone fire
|
||
right of center.
|
||
- Fixed: Picking up a flechette would only give you the fighter's variety
|
||
because I forgot to uncomment some code after adding the other two player
|
||
classes.
|
||
|
||
December 13, 2002
|
||
- Uploaded 25.cab.
|
||
- Added a hack for 256-tall textures with patches that mark their post
|
||
lengths as 0. This lets pleiades.wad and its skies work.
|
||
- Multiplied the output of the OPL chips by two so that they aren't so
|
||
quiet.
|
||
- Gave opl_onechip a callback so that changes to it can take effect
|
||
immediately.
|
||
- Fixed: findFreeChannel() in mlopl.cpp could crash when going from two
|
||
chips to one, because it did not reset the value of last.
|
||
|
||
December 12, 2002
|
||
- Fixed an original Hexen bug: EV_RotatePoly() set the first polyobject's
|
||
special data to a rotator, then it created a new rotator and assigned it
|
||
to the mirror polyobject's specialdata, and then it also assigned the
|
||
second rotator to the first polyobject. This left the first rotator
|
||
forgotten, and if a player got in the way of one of the polyobjects so
|
||
the other one destroyed the rotator, it could crash.
|
||
- Uploaded 24.cab. Why cab? Because LZX compression is better than ZIP, and
|
||
I'm stuck uploading files with a 56k modem. That's why. The source code
|
||
archive alone is almost 700k smaller as a cab than as a zip. That's at
|
||
least four or five fewer minutes that I need to wait uploading it.
|
||
- Fixed: Bloodscourge projectiles would not pass through non-boss monsters
|
||
because AMageStaffFX2::SpecialMissileHit() was incomplete. It is a much
|
||
more dangerous weapon now.
|
||
- Fixed: ACircleFlame needed a GetExplodeParms() member function so that it
|
||
would do the correct damage and not harm the player.
|
||
- Uploaded 23.cab.
|
||
- Fixed: Dehacked weapon patches did not set the new FWeaponInfo::givingammo
|
||
field.
|
||
|
||
December 10, 2002
|
||
- Uploaded 22.cab.
|
||
- Fixed: If you had a bot with you in a co-op game and you switched levels,
|
||
the bot would come with you as normal, and it would also spawn a new copy
|
||
of itself later, so you would now have two bots instead of one.
|
||
- Moved the player name display for spying up slightly so that it isn't
|
||
obscured by the Hexen status bar.
|
||
- Added support for terrain-defined friction, so the Hexen ice flat can
|
||
behave like ice.
|
||
- Fixed: Weapon pieces were not behaving like weapons with sv_weaponstay on.
|
||
- Fixed: The spinning invulnerability and maulator icons that appear at the
|
||
top of the screen when they are active were not right-aligned.
|
||
- Fixed: The maulator artifact had the wrong status bar image.
|
||
- Fixed: Using Dragon Skin Bracers to get more than 100% armor would mess
|
||
up the armor display in Hexen's automap status bar.
|
||
- Now I know why I didn't direct hudmessage and print commands to the
|
||
screen of spying players. Changed it back to the way it used to be, so
|
||
it doesn't pay attention to the player's camera when deciding whether it
|
||
should take effect or not. One solution for this would be to have
|
||
separate status bars for each player and just route the messages to the
|
||
appropriate status bars. Probably too much effort at this point.
|
||
- Fixed: The player faces showed up on the scoreboard even when not playing
|
||
Hexen.
|
||
- Fixed: The extralight from your gunshots would be used if you weren't
|
||
looking through the eyes of a player.
|
||
- Uploaded 21.cab.
|
||
- Fixed an accidental problem when travelling between levels because
|
||
I mis-blocked some code in WI_End().
|
||
- Fixed: Using a flat as an intermission background instead of a full
|
||
graphic would not print any text.
|
||
- Fixed: FWeaponSlots::StreamInSlots() only cleared the even slots,
|
||
so weapnext/weapprev failed, and weapon selection in odd slots would
|
||
work wrong.
|
||
|
||
December 9, 2002
|
||
- Fixed: Dormant monsters would respawn when monster respawning is
|
||
enabled, losing their dormant state and any specials they were given.
|
||
- You can spy through your teammates' eyes in deathmatch now, and you
|
||
can also see them on the automap.
|
||
- Added face icons to the Hexen scoreboard.
|
||
- Gave the bots some minor knowledge of Hexen weapons.
|
||
- Fixed: The fighter would not get any mana when he picked up his axe
|
||
or hammer.
|
||
- Added the Hexen finale and intermission screens.
|
||
|
||
December 6, 2002
|
||
- Removed M_PBOX from zdoom.wad. M_DrawFrame() draws the box around the
|
||
player in the menu now, since it works with all games and not just Doom.
|
||
- Added some more choices to the sound options menu.
|
||
- Added support for setting player sounds by their real names in skins
|
||
(i.e. *xdeath instead of pspdiehi), and added a few more sound mappings
|
||
for the Legacy names.
|
||
- Added simple palette remapping for skins so that Doom skins can be used
|
||
while playing Heretic.
|
||
|
||
December 2, 2002
|
||
- Added software OPL2-synthesis for MUS music in order to mimic "the
|
||
good old days." I haven't had a soundcard with an OPL chip in six years,
|
||
so I don't know how accurate the sound is, but I think it's reasonable.
|
||
Pity it takes around 10% of the CPU time on my Athlon XP 1600 (at 44.1 KHz).
|
||
The MUS player part of it comes from Vladimir Arnost's MUS Lib, and the
|
||
OPL2 part of it is from MAME.
|
||
|
||
November 28, 2002
|
||
- Fixed the player setup menu to work with scaled sprites, and added an
|
||
option to skins so you can set the scale for more than just the base
|
||
sprite.
|
||
- Gave each player their own set of weapon slots, so custom slots can be
|
||
used in net games and demo playback.
|
||
- Added player translations for Hexen.
|
||
- Added player class filtering for the Hexen fourth weapon pieces.
|
||
|
||
November 26, 2002
|
||
- Added player class filtering for the Hexen weapons.
|
||
- Added the "Healing Radius" artifact.
|
||
- Fixed a hub travel bug when playing with bots. If there were more bots
|
||
in the level being travelled to than the one travelling from, the load
|
||
would fail.
|
||
- Fixed: ASorcBall::Serialize() did not call its super method.
|
||
- Fixed a hub travel bug introduced by the version tracking code:
|
||
SaveVersion would not be set before a game was actually saved or loaded,
|
||
so snapshots would not load back properly until that happened. Another
|
||
related problem is that somebody could load an old savegame with
|
||
multiple snapshots and then save it again without revisiting all the
|
||
snapshots. Thus, a savegame could have snapshots created with different
|
||
versions of the game, so each snapshot needs to carry version information
|
||
around with it.
|
||
|
||
November 25, 2002
|
||
- Changed the ACS print and hudmessage commands so that if a projectile
|
||
activates a script, they will print to the screen of whoever fired the
|
||
projectile instead of failing because the projectiles don't have a screen.
|
||
Also changed them so that they show up for anybody spying on the person
|
||
who activated the script.
|
||
- Added the pig.
|
||
- Disabled skins in Hexen, and changed the player setup menu to show class
|
||
instead of skin when playing Hexen.
|
||
- Added "random" as a choice in the Hexen class/new-game menu.
|
||
- Fixed: p_GiveArmor() gave the negative value of the desired armor, which is
|
||
effectively the same as always giving blue armor.
|
||
- Fixed the weapon slots so that they can accurately determine if a weapon
|
||
using both types of mana can be selected.
|
||
|
||
November 23, 2002
|
||
- Put Hexen's new game menus in place, although you still can't select a
|
||
player class.
|
||
- Disabled blood splats for players using the god mode cheat.
|
||
- Added palette flashes for Hexen's poison and ice damage and the Wraithverge
|
||
and Bloodscourge.
|
||
- Added the Bloodscourge and Wraithverge.
|
||
- Changed sound loading to use the heap instead of zone memory, so large sounds
|
||
can be used (although it's probably a bad idea nonetheless). Also added a
|
||
fallback mechanism so that sounds that are too big for hardware buffers will
|
||
be created in software instead.
|
||
- Fixed the Doom status bar so that removing a key from the player's inventory
|
||
will remove the key from the status bar without having to manually hide the
|
||
status bar first.
|
||
- Added FloorClip as a property for use with DECORATE.
|
||
|
||
November 22, 2002
|
||
- Added WAVE loading to the alternate mixer.
|
||
|
||
November 21, 2002
|
||
- Added an alternate sound mixer that bypasses FMOD and and does all the sound
|
||
mixing itself, feeding it to a DirectSound buffer directly. This is not
|
||
meant to be a complete replacement for FMOD, so it's pretty basic. It's not
|
||
even particularly optimized. I only wrote it in the hope that it alleviates
|
||
the BSODs a very few people got without -nosound.
|
||
|
||
November 19, 2002
|
||
- Changed ThrustThing to mimic the original P_XYMovement() MAXMOVE clamping.
|
||
Setting the third parameter 1 will let you use any thrust you want.
|
||
- Put back the maxmove restriction for underwater actors, but it should
|
||
probably be handled differently.
|
||
- Fixed: Respawning in single player would execute respawn scripts instead of
|
||
enter scripts, and travelling to a new map without being dead would not
|
||
execute respawn or enter scripts.
|
||
- Fixed: Only the first entry in each DECORATE lump would be processed.
|
||
- Fixed P_XYMovement() so that startx, starty, onestepx, and onestepy are
|
||
properly recalculated after sliding along a wall. This seems to have fixed
|
||
the ability to go through walls at corners when moving very quickly. I hope
|
||
there aren't any other bugs lurking in there.
|
||
- Fixed recording of compressed demos: The demobodyspot and democompspot
|
||
pointers were not being moved when demobuffer would get realloced, so
|
||
replacing the BODY chunk with compressed data would stomp on invalid memory.
|
||
- Fixed: P_SlideMove()'s stairstep case still used mo->momx instead of tryx.
|
||
- Fixed G_QueueBody() and the pointer cleanup in dobject.cpp so that it
|
||
doesn't try to destroy bodies that were already destroyed outside of
|
||
that function (such as by a crusher squishing the body).
|
||
|
||
November 15, 2002
|
||
- Added the Quietus.
|
||
|
||
November 13, 2002
|
||
- Hexen has a status bar now.
|
||
|
||
November 9, 2002
|
||
- Changed CheckIfExitIsGood() so that dead players cannot exit a level.
|
||
- Fixed: The ThrustThing special is supposed to add to the actor's velocity,
|
||
not set it.
|
||
|
||
November 8, 2002
|
||
- Imported the node builder fix that splits segs collinear with a splitter
|
||
with any events they cross. This is only necessary for bad maps that have
|
||
overlapping linedefs.
|
||
- Changed dehacked text replacement so that if a pickup sprite's name is
|
||
changed, the identification map used by DehackedPickup is also updated.
|
||
This lets you pick up Strain's shotgun, plasma rifle, and BFG replacements.
|
||
- Changed bot_observer mode so that it does not set the player's MF_SHADOW
|
||
bit.
|
||
- Changed P_LookForPlayer() so that it does not "find" players without the
|
||
MF_SHOOTABLE bit set.
|
||
- Added floorclip adjustments for sectors that have their floorpics changed
|
||
or move their floors.
|
||
- Fixed floorclipping so that it chops off the same amount of space for all
|
||
vertical sprite scales (as opposed to chopping off x rows from the bottom
|
||
of the source sprite).
|
||
|
||
November 6, 2002
|
||
- Removed the menu title graphics from zdoom.wad because they can just be
|
||
drawn using BigFont.
|
||
- Moved "Player Setup" into the options menu and removed the last vestiges
|
||
of the old fire effect for that menu.
|
||
- Extralights don't work with the release build. Oh well.
|
||
- #if-ed out the decal-out-of-range code again, because I think it should
|
||
finally be fixed thanks to the recent changes to PrepWall.
|
||
- Made some changes to allow for loading earlier format savegames. Right now,
|
||
that means ZDOOMSAVE200 games can still be loaded. Earlier versions won't be
|
||
supported.
|
||
- Added Dehacked Gravity and LowGravity code pointers.
|
||
- Made demo_compress a global config cvar.
|
||
- Changed the ini's location to be "$PROGDIR/zdoom-$USERNAME.ini" because
|
||
some people have multiple copies of ZDoom installed in different directories
|
||
for different IWADs, and they might want to use different configs with them.
|
||
- Fixed sector triangle finding for area-less sectors.
|
||
|
||
November 4, 2002
|
||
- Added more correctness checks to PrepWall() and PrepLWall() to check for
|
||
out-of-bounds texture columns. The very-near-a-decal-crashing problem should
|
||
be solved now.
|
||
|
||
November 2, 2002
|
||
- Restored the menu_gameplay command I had accidentally removed.
|
||
|
||
October 31, 2002
|
||
- Added a check to A_Lower() to ensure that the pendingweapon is not
|
||
wp_nochange.
|
||
- Fixed: The ACS SetWeapon command checked if there was enough weapon to use
|
||
the current weapon, not the one being switched to.
|
||
- Fixed: The FFont* serializer could only use already loaded fonts. It could
|
||
not load any new ones, so some FFont pointers could be initialized to NULL
|
||
after reloading a savegame from a previous session.
|
||
|
||
October 30, 2002
|
||
- Merged the separate floorcolormap and ceilingcolormap sector members back
|
||
into a single ColorMap member.
|
||
- "3D lights" can color floors and ceilings now.
|
||
|
||
October 29, 2002
|
||
- Decided to do something fun, so I added support for rendering "3D lights"
|
||
on walls.
|
||
- Changed HealThing special so that it does nothing if the actor's health
|
||
is already above the specified maximum.
|
||
- Fixed: The eyes crossing fake floor/ceiling special actions were only
|
||
checked when moving vertically. They also need to be implemented for
|
||
horizontal movement in case the fake floor/ceiling is sloped.
|
||
|
||
October 23, 2002
|
||
- Fixed: The MF3_GHOST flag was not cleared when the invisibility
|
||
artifact wore off.
|
||
|
||
October 21, 2002
|
||
- Added Ceiling_Waggle as special 38.
|
||
- Added a check for a 0 maxmove to P_XYMovement() because P_DoCrunch() sets
|
||
the gib's radius to 0.
|
||
|
||
October 15, 2002
|
||
- Restored the old x2 calculation in R_ProjectSprite and changed the
|
||
iscale calculation so that it is based on the x1, x2 values instead of
|
||
the inverse of xscale.
|
||
|
||
October 14, 2002
|
||
- Reenabled the error check in WallSpriteColumn() because it seems it can
|
||
still happen. Now it has a bunch more debug spew and exits with
|
||
I_FatalError().
|
||
- Changed the x2 calculation in R_ProjectSprite() because the old method
|
||
could cause a sprite to be drawn one pixel too wide under rare
|
||
circumstances.
|
||
- Fixed: R_ProjectSprite() did not add one to thing->xscale.
|
||
- Added a check to the node builder for maps without any lines so that
|
||
it can exit gracefully instead of crashing.
|
||
- Made Sector_SetFriction work from inside scripts.
|
||
- Changed Floor_RaiseByValueTxTy so that if it isn't activated by a line,
|
||
the target's sector type is set to 0, and its floor is left alone. This
|
||
should be much better than crashing.
|
||
|
||
October 12, 2002
|
||
- Imported all the changes from the standalone node builder to increase
|
||
accuracy and add support for GL nodes.
|
||
|
||
October 10, 2002
|
||
- Fixed the ordering of the WTSRegisterSessionNotification call so that it
|
||
(again) occurs after the window is created, so the message loop can
|
||
actually receive the messages.
|
||
- Replaced the %p and %I64x format specifiers I was using in i_crash.cpp to
|
||
equivalent %x replacements, because the Windows 9x version of wsprintf
|
||
does not understand them.
|
||
- Made MinotaurSpecial, DSparilSpecial, IronlichSpecial, and
|
||
SpecialAction_KillMonsters accessable through MAPINFO.
|
||
- Changed message handling in P_CheckKeys() so that the correct Heretic key
|
||
messages will show up even if you don't flag the keys as "either will do"--
|
||
a rather pointless thing for Heretic since it only has three unique keys.
|
||
|
||
October 1, 2002
|
||
- Fixed a bug in P_XYMovement() that could cause you to move exponentially
|
||
faster when running on a slope along a wall.
|
||
|
||
September 30, 2002
|
||
- Fixed the Doom status bar so that the ouch face will show up when it was
|
||
intended to.
|
||
|
||
September 27, 2002
|
||
- Removed Infight from DehInfo so that monster infighting can be completely
|
||
controlled by the cvar.
|
||
|
||
September 26, 2002
|
||
- Fixed FDoomEdMap so that it works with negative thing numbers without
|
||
crashing.
|
||
- Fixed dehacked text substitution trying to compare against a null music name
|
||
in the predefined mapinfos.
|
||
- Fixed "Monster Ignore Each Other" infighting mode so that player projectiles
|
||
can damage monsters.
|
||
- Changed P_SlideMove so that it can use the smaller steps from
|
||
P_XYMovement, so if something is moving very fast and slides along the wall,
|
||
it shouldn't be able to pass right through small obstacles next to the wall.
|
||
- Fixed: If a move was split into multiple steps and you went through a
|
||
teleporter, the remainder of the move would still be executed from your
|
||
original position, rendering the teleport useless.
|
||
|
||
September 21, 2002
|
||
- Played around with a 140 Hz TICRATE for a while. The high framerate was
|
||
nice, but there are too many places that implicitly depend on a 35 Hz TICRATE
|
||
(physics in particular) for me to try and truly fix the game for variable
|
||
TICRATEs before a final release.
|
||
- Removed the unused P_CalcSwing() function and its related global variables.
|
||
|
||
September 18, 2002
|
||
- Fixed the use of seg grouping in the node builder so it actually works as
|
||
intended. The mechanism GroupSegPlanes() uses to group segs was also
|
||
changed before I discovered the real problem with it: SelectSplitter()
|
||
was using r = pseg->planenum & 7; instead of r = 1 << (pseg->planenum & 7);
|
||
The new grouping scheme may not have been necessary, but it should be
|
||
faster at least.
|
||
|
||
September 17, 2002
|
||
- Removed playernumber from DCajunMaster. The only time it was used for
|
||
something non-local was in the ThinkForMove method, but its use there
|
||
was inconsistant with its other uses. Apparently, ThinkForMove expected it
|
||
to be the maximum player number plus one, but SpawnBot stored the most
|
||
recently spawned bot there instead. This could crash ThinkForMove if
|
||
the most recent bot spawned was player 0. Replacing its use in ThinkForMove
|
||
with MAXPLAYERS seems acceptable.
|
||
|
||
September 14, 2002
|
||
- Added optional logging of ACS hud messages.
|
||
- Upped the number of local script variables to 20 to match ACC 1.25.
|
||
|
||
September 12, 2002
|
||
- Changed ACS function importing so that imported functions cannot be
|
||
"chained" from one library to the next.
|
||
- Added code to properly tag string arrays.
|
||
- Fixed a hang that could occur when importing ACS arrays.
|
||
- Added a little more information to the crash report.
|
||
- Changed WndProc so that it only resets the language if the WM_SETTINGCHANGE
|
||
message was sent as the result of a locale change.
|
||
- Figured out how to make the crash collector work with secondary threads:
|
||
Using an UnhandledExceptionFilter, the information for that thread is
|
||
collected, the thread is put to sleep, and an APC is queued on the primary
|
||
thread. Once the APC executes, it raises a software exception that gets
|
||
caught by the outer-most __try block, and the primary thread shuts down
|
||
and shows the crash dialog. I think it would be better if I could raise
|
||
exceptions in any thread I wanted, but this will suffice. As long as
|
||
I_GetEvent() is called often enough to put the thread in an alertable state
|
||
using SleepEx, the APC should be able to execute without much delay.
|
||
|
||
September 11, 2002
|
||
- Finished the crash information collection code.
|
||
|
||
September 9, 2002
|
||
- Changed "give armor" cheat to give armor equivalent to blue armor, even when
|
||
Dehacked is used to modify the blue AC.
|
||
|
||
September 7, 2002
|
||
- Fixed: Imported libraries had their source libraries recorded wrong.
|
||
|
||
September 5, 2002
|
||
- Fixed hud messages so that they restore the screen's previous font instead
|
||
of always assuming the previous font was "SmallFont".
|
||
- Changed the node builder so that segs with the same front and back sector
|
||
can be a part of a subsector with segs from a different sector. Although the
|
||
result is not a proper subsector, it is okay because such segs can only add
|
||
masked mid textures to the scene, and those use the seg (not the subsector) to
|
||
find out which sector they belong to. This fixes the area by the fence in
|
||
tqtrust MAP04 when the internal node builder is used.
|
||
- Changed PTR_SlideTraverse so that blocking two-sided lines are treated like
|
||
one-sided lines.
|
||
- Fixed the nodebuilder so it works again without crashing.
|
||
- Fixed: ExtractFileBase did not understand files with a drive specifier but
|
||
no path. i.e. It would consider the base file name for d:myfile.foo as
|
||
d:myfile and not myfile.
|
||
|
||
September 3, 2002
|
||
- Changed the "This map has errors that must be fixed" message to be more
|
||
specific about what exactly needs to be fixed.
|
||
- Made MDK work only in non-deathmatch games, even if sv_cheats is true.
|
||
- Added the following contributions from Stevie-O:
|
||
+ Fixed: AImpactDecal::CloneSelf() would cause ImpactCount accounting to mess
|
||
up if the clone had to be destroyed because it hit the sv_maxdecals limit.
|
||
+ Fixed: Using MDK cheat would print blank lines to the console.
|
||
+ Fixed: Respawning monsters could spawn inside other things because
|
||
P_NightmareRespawn() was not changed to account for thing-over-thing.
|
||
+ Fixed: Telefragged players would still show the FX_RESPAWNINVUL effect if
|
||
it was active when they died.
|
||
+ When bot_observer is true, players can no longer fire their weapons.
|
||
+ Added sv_fastweapons cvar.
|
||
|
||
September 2, 2002
|
||
- Fixed: New-style behavior lumps without any scripts would crash the game.
|
||
|
||
August 31, 2002
|
||
- Made R_InitTextures more forgiving of errors.
|
||
- Changed DrawWrapper to clip columns to the patch's height. This "fixes"
|
||
malgnant.wad's corrupt titlepic that crashed the game.
|
||
|
||
August 26, 2002
|
||
- Added a workaround to the DObject::DestroyScan()s because the bglobal object
|
||
is not showing up in the Objects list.
|
||
- Added whereisini command to make finding the .ini easier for users.
|
||
- Removed MBF torque simulation. It made the corpses fall off the bridge
|
||
at the beginning of the Hexen MAP40, and it was also responsible for the
|
||
"boogying" chaingunners in the last room of Doom2 MAP22. I haven't checked
|
||
MBF to see if they do it in MAP22 there too, but I thought it best just
|
||
to remove it, since it was causing so many reports of anomalies--enough
|
||
reports that I probably copied something wrong. Okay, checking MAP22 with
|
||
PrBoom, the chaingunners do slide perpetually but nowhere near as bad as
|
||
they were doing with ZDoom before.
|
||
- Fixed: After drawing the underwater scene after Heretic E2M8, the normal
|
||
game palette was not being restored.
|
||
- Changed ASoundWaterfall's gametype from Raven to just Heretic. Although it
|
||
exists in Hexen, it cannot be spawned in a map because of conflicting
|
||
doomednums.
|
||
- Removed Linux -cdrom support because it's not needed.
|
||
- Used the new run-time subclassing abilities to add support for pickup items
|
||
that are identified by sprite instead of by class. For it to work, a
|
||
dehacked patch needs to modify an actor (in any way) with the pickup flag.
|
||
Any pickup items touched like this will cause a new class to be derived
|
||
from DehackedPickup. This class will clone the defaults of the original
|
||
actor, and the original actor will be modified so that it does nothing
|
||
but spawn the clone. DehackedPickup implements the functionality to spawn
|
||
a copy of the desired item just long enough to pick it up.
|
||
- Changed DDrawFB::LockSurf so that it retries the resource creation
|
||
multiple times if the error DDERR_UNSUPPORTEDMODE is returned (presumably
|
||
because the NT Security dialog was opened and then closed).
|
||
- Added a check for players without bodies to R_SetupFrame(). This should
|
||
never happen during normal play, but a dehacked patch could cause it to
|
||
happen.
|
||
|
||
August 23, 2002
|
||
- Added a console warning when multiple actors try to map to the same
|
||
doomednum.
|
||
- Removed Printf_Bold. Use Printf with a level of PRINT_BOLD instead. The
|
||
result is exactly the same.
|
||
- Fixed a demo sync bug. When the user alt-tabs away, the game is paused,
|
||
but the demo continues playing anyway. The fix is to change G_Ticker() so
|
||
that if the game is paused, and the demo didn't do it, don't fetch more
|
||
tic commands from the demo until the game becomes unpaused. Unfortunately,
|
||
hitting a breakpoint in debug mode will still mess up demo playback, so
|
||
I avoid pausing the game at all when the window is deactivated and a
|
||
demo is playing if _DEBUG is defined.
|
||
- Fixed: When a multi-step move is blocked in P_XYMovement, the move needs
|
||
to actually stop right away. This seems to be what caused wallrunning: In
|
||
the first step, the player hit the wall, so his movement got clipped to it.
|
||
In the next step, the player would continue in his original direction and
|
||
travel further along the wall. Since I know what causes wall running now,
|
||
I added the compat_wallrun cvar to enable it as desired.
|
||
- Reduced maxmove in P_XYMovement from (mo->radius*2 - FRACUNIT) to just
|
||
mo->radius. This brings back wallrunning (unexpected), but I'm hoping it
|
||
stops things shooting through walls when they're very fast. The original
|
||
maxmove I chose seems quite high. I don't know why I did that.
|
||
- Changed Megasphere back to being pickup-able even when you're already full
|
||
on health and armor.
|
||
- Fixed: Automap powerup did nothing.
|
||
|
||
August 22, 2002
|
||
- Fixed: Heretic's gauntlets are supposed to have their kickback set to 0 so
|
||
that they don't push monsters away.
|
||
- Updated the source for FMOD 3.60: Changed FSOUND_Sample_SetLoopMode to
|
||
FSOUND_Sample_SetMode and removed A3D support.
|
||
- Gave PTR_BounceTraverse() knowledge of ML_BLOCKEVERYTHING lines.
|
||
- Moved the check for MF2_BOUNCETYPE to the beginning of P_BounceWall().
|
||
- Added support for custom inventory classes. These are actors that behave
|
||
like an inventory item and execute their special when touched, but they
|
||
don't actually go in the inventory.
|
||
- Added a new field to DObject to record the object's real type. Now derived
|
||
types created at runtime can be detected. I am now one step closer to having
|
||
the scripting language in place. :-)
|
||
|
||
August 20, 2002
|
||
- Added support for custom decorative classes through the use of a
|
||
DECORATE lump. Currently, all objects generated like this are
|
||
recognized as being type Decoration instead of their real type.
|
||
This isn't really a problem, but I would like to figure out a way
|
||
to easily support objects that are identified as being of a
|
||
run-time-created type.
|
||
|
||
August 19, 2002
|
||
- Fixed: DumpHash would count all the aliases and commands, not just
|
||
the ones it counted.
|
||
|
||
August 16, 2002
|
||
- Added some new initialization code that was missing for old Hexen
|
||
behaviors.
|
||
- Fixed: World and global variables were not stored in save games.
|
||
- Changed sidedef indices to be unsigned, so now you can have up to
|
||
65535 of them in a level.
|
||
|
||
August 14, 2002
|
||
- Added support for 8 mouse buttons using DirectInput and at least 5
|
||
mouse buttons using standard Windows messages. I extrapolated from
|
||
Microsoft's docs for WM_XBUTTONDOWN/UP, so it will probably work with
|
||
up to 8 buttons if Microsoft ever releases a mouse with more buttons.
|
||
|
||
August 12, 2002
|
||
- Finished adding support for ACS libraries. Now I just need to test it
|
||
some more.
|
||
- Fixed: ACS arrays were not serialized.
|
||
|
||
August 3, 2002
|
||
- Added compressed demo support.
|
||
- Fixed: PCD_ASSIGNMAPARRAY accessed ACS_WorldVars instead of level.vars,
|
||
so storing to arrays was unpredictable unless you never touched any world
|
||
vars. In that case, it would always store to the first array declared.
|
||
|
||
July 31, 2002
|
||
- Fixed some stuff with local doors already performing a ceiling action.
|
||
In particular, if the ceiling was moving but not as a door, it's thinker
|
||
would be replaced with a door thinker instead of being left alone.
|
||
- Wallrunning seems to be gone. I don't know when it disappeared. I
|
||
certainly set out trying to fix it.
|
||
- Fixed: The stairstep case for stepping along the x-axis in P_SlideMove()
|
||
was the subject of some incomplete copy-and-paste, which is probably why
|
||
it was so easy to get stuck on diagonal walls.
|
||
|
||
July 30, 2002
|
||
- Added a third parameter to the TranslucentLine special to select the
|
||
translucency type. Currently it can be 0 for normal translucency or 1 for
|
||
additive translucency. Also updated the translators to handle Legacy's
|
||
284, 285, and 287 types.
|
||
- Made textures with patchless columns work.
|
||
|
||
July 29, 2002
|
||
- Finally did the math for the conversion of the SSG's vertical spread from
|
||
slope to pitch and discovered that I had it slightly too small.
|
||
- Added COMPATF_SILENTPICKUP flag to play item pickup sounds locally only.
|
||
- Moved NO_PASSMOBJ flag from dmflags to compatflags.
|
||
- Moved sv_ihatesounds into compatflags as COMPATF_MAGICSILENCE.
|
||
- Removed SNDCURVE from zdoom.wad. Playing Doom will now generate a sound
|
||
curve compatible with the Doom's original distance attenuation.
|
||
|
||
July 22, 2002
|
||
- Started work on an output class that using IDirect3D8 instead of
|
||
IDirectDraw2, but then I found out IDirect3D8 can't do paletted output.
|
||
I was hoping to get descent blitter support out of it, but if I have to
|
||
translate the image every frame, it might not be worth it. I could try
|
||
getting tricky with the hardware gamma ramp so that I need only copy
|
||
pixels out to the back buffer without doing any format conversion, but I
|
||
don't know if it's worth it.
|
||
|
||
July 17, 2002
|
||
- Fixed session notification mysteriously crashing the game with a release
|
||
build. Because the default calling convention for the release build is
|
||
set to __fastcall, I need to explicitly specify that the functions I
|
||
retrieved using GetProcAddress are __stdcall. (But that doesn't explain
|
||
why they worked with the debug build.)
|
||
|
||
July 11, 2002
|
||
- Fixed some bugs when I_MovieDisableSound() is called when there are
|
||
repeating sounds playing.
|
||
- Added some support for XP's session locking and fast user switching. Now
|
||
you can use either, and the window will be able to properly restore itself,
|
||
and it shuts down the sound when the session is locked. For some reason,
|
||
I cannot get MIDIs to play in my other account. I would blame stupid
|
||
Audigy bugs, but it doesn't work with Microsoft's GS synth either.
|
||
|
||
July 9, 2002
|
||
- Changed the behavior of MF_SPECIAL actors so that non-inventory actors
|
||
will execute their specials when touched.
|
||
|
||
July 2, 2002
|
||
- Changed sector_t::FindShortestTextureAround and ::FindShortestUpperAround
|
||
to not consider texture 0 for height determinations, so now they can return
|
||
lengths greater than 64 if any lines around the sector have an untextured
|
||
side. The compat_shortTex cvar can be used to get the original Doom
|
||
behavior back. These functions now know about scaled textures and always
|
||
return the result in world units.
|
||
|
||
June 25, 2002
|
||
- Made the C versions of the plane drawers work with non-64x64 flats.
|
||
- Added automatic scaling of 128x128 and 256x256 flats so that they get
|
||
treated as if they were only 64x64 world units in size. Also added support
|
||
for 8x8, 16x16, and 32x32 flats, which are not automatically scaled larger
|
||
to fit a 64x64 cell.
|
||
|
||
June 19, 2002
|
||
- Added support for 128x128 and 256x256 flats on slopes.
|
||
|
||
June 14, 2002
|
||
- Added support for 128x128 and 256x256 flats on normal planes.
|
||
|
||
June 13, 2002
|
||
- Fixed: When a player spawned, the local player's view would be reset to
|
||
whoever they spied through last.
|
||
- Fixed positioning of scaled pegged upper textures. I was not compensating
|
||
for the texture's scale.
|
||
- Fixed: Demo sequence would loop to DEMO2 instead of DEMO1.
|
||
- Fixed handling of PNG tEXt chunks. I misread the specs, thinking that the
|
||
keyword always occupied 80 bytes, but that's just the maximum size for the
|
||
keyword. It can be smaller and does not get padded with zeros.
|
||
|
||
June 12, 2002
|
||
- Fixed: When missiles destroyed themselves right away in their death state,
|
||
the game would crash if it tried to move them again (because their movement
|
||
was divided into multiple steps).
|
||
|
||
June 11, 2002
|
||
- Fixed: BestColor_MMX set ebx before saving it, and it did it after ecx
|
||
had already been shifted. I don't know why it worked at all.
|
||
- Changed the project settings to statically link to the CRT under VC7
|
||
because I don't want to redistribute MSVCR70.dll.
|
||
- Experimented with separating the various games into libraries but stopped
|
||
when I found out that I had no easy way to bring all the actor definitions
|
||
into the executable that I wanted.
|
||
- Removed lots of warnings when VC7 is set to look for 64-bit portability
|
||
complications.
|
||
- Added MF_COUNTKILL to ALostSoul and changed the monster counting to
|
||
happen in AActor::StaticSpawn instead of at map load time.
|
||
- Fixed stylization of console backgrounds that are derived from title pics
|
||
that are not 320x200.
|
||
- Added named thread support to the FHelperThread class.
|
||
- Moved zdoom.ini to the CSIDL_APPDATA directory so different users can have
|
||
different zdoom.ini files.
|
||
- Added -cdrom support under Linux courtesy of Hirogen2.
|
||
- Added the work-around to allow FBaseCVar::ToInt() to compile with GCC 2.95.
|
||
- Added XP visual styles support for the dialogs.
|
||
- Added more OS names to I_DetectOS().
|
||
- Removed PROP_STATE_BASE because I could not get it to compile with VC7.
|
||
All state sharing must now be done using inheritance.
|
||
- Changed the ALavaSomke definition to set the default alpha using an
|
||
AT_GAME_SET function. Aside from causing VC7 to gobble up all available
|
||
memory and crash horribly, using the PROP_Alpha macro in this situation is
|
||
incorrect because it depends on information that is not available at compile
|
||
time.
|
||
|
||
May 6, 2002
|
||
- Fixed spawn(spot) so that they only set MF_DROPPED for items and not
|
||
everything.
|
||
- Changed R_DrawColumnInCache() so that it correctly draws patches with
|
||
a negative originy.
|
||
- Added Thing_Hate special.
|
||
- Added a name string ("Unnamed") to the default level info so that using
|
||
changemap to switch between maps without an associated level info does
|
||
not crash (although it does prevent saving on those levels).
|
||
- Fixed the stringlist utility to sort string names case-insensitively
|
||
because the game uses a case-insensitive search to find them.
|
||
- Initialized air_finished in P_SpawnPlayer so that if you spawn underwater
|
||
after drowning in a multiplayer game, you won't start drowning immediately.
|
||
- Fixed: AArtiEgg and AGibs did not have spawn states so they could not be
|
||
placed on a map.
|
||
- Fixed: Say(_team) did not check that they were called with any parameters.
|
||
|
||
April 27, 2002
|
||
- Added more error checks when loading the BSP tree.
|
||
|
||
April 18, 2002
|
||
- Removed the bot things list because it couldn't handle items that had been
|
||
removed from the level.
|
||
- Changed movie playback to only exit when escape is pressed. Also disabled
|
||
Alt-Tabbing away from fullscreen movies so that I don't have to worry
|
||
about the messed-up state that can put things in.
|
||
- Fixed: When a movie was not found, I_PlayMovie could try to restore video
|
||
resources it never released because runningFull was not initialized right
|
||
away.
|
||
- Added a new Thing_ProjectileAimed special (178).
|
||
- Added MF2_SEEKERMISSILE to the RevenantTracer.
|
||
- Added slopes and aligned flats to the BUILD loader.
|
||
- Changed P_GivePower() to not check if the player already has the power
|
||
when playing Doom.
|
||
- Added pattern matching for the -file parameter.
|
||
|
||
April 17, 2002
|
||
- Added a loader for BUILD maps. It's not very useful since the Doom engine is
|
||
so much more limited than BUILD, but it's fun to be able to load them anyway.
|
||
- Added a NoAlert flag for splashes that you don't want monsters to hear.
|
||
- Removed the option of specifying multiple footstep sounds for terrain
|
||
because the $random SNDINFO command can do the job better. (And no, footsteps
|
||
are still not implemented.)
|
||
- Made splash sounds work even without a corresponding splash actor.
|
||
- Removed the MF3_VERYFAST flag. Any missiles with a speed of 100 or more will
|
||
automatically be offset closer to the originator than a normal missile.
|
||
|
||
April 16, 2002
|
||
- Changed P_XYMovement() to take smaller steps when moving faster than is good
|
||
for the actor's size.
|
||
|
||
April 15, 2002
|
||
- Changed floor bounces so that they properly reflect off of slopes.
|
||
- Added the CVAR_NOSAVE flag so that I can use it with sv_gravity and
|
||
sv_aircontrol to avoid archiving them with a savegame. If I do save them,
|
||
then reading them back will override the real settings for those variables
|
||
that are stored in the level structure.
|
||
- Added the Thing_Damage special (119). It's similar to DamageThing, except it
|
||
hurts things by TID instead of whoever activated it.
|
||
- Removed the LEVEL_NOSOUNDCLIPPING flag. When sounds are at maximum distance,
|
||
they are very quiet and hard to hear so it didn't seem worthwhile to keep
|
||
the code around for this.
|
||
|
||
April 9, 2002
|
||
- Fixed: Particles were not drawn in the color of their containing sectors
|
||
when using light amp goggles.
|
||
- Added code to make the pain elemental move down if it's too close to the
|
||
ceiling to successfully launch a lost soul.
|
||
|
||
April 6, 2002
|
||
- Fixed: P_TestMobjLocation() should test the central z of an actor with
|
||
float bob, not its current z.
|
||
- Fixed: Only the colormap stored in the wad was created with new. The rest
|
||
were still on the zone heap. There's also no reason why they need to be
|
||
aligned to 256 byte boundaries.
|
||
|
||
April 5, 2002
|
||
- Added SPC music support using snesapu.dll.
|
||
|
||
April 4, 2002
|
||
- Changed text scaling at 800x600 and similar resolutions to keep everything
|
||
square.
|
||
- Added two rotozoomers on top of the plasma to make it look more interesting.
|
||
- Fixed: Colors set with setcolor now carry over to new maps.
|
||
- Removed the sv_friction cvar because it was never used.
|
||
- Added a few substitutions for chat messages. Set chat_substitution to true,
|
||
and $health, $weapon, $armor, $ammo, and $ammocount will be replaced by
|
||
appropriate strings.
|
||
- Added /me support for chat messages.
|
||
- Changed the setweapon ACS command to disallow switching to a weapon the
|
||
player does not have enough ammo for.
|
||
- Changed S_ChangeMusic() so that an empty string will also stop the currently
|
||
playing music.
|
||
- Changed the announcements for player team and name to be shown only if the
|
||
new values are different from the old ones.
|
||
|
||
April 2, 2002
|
||
- Added another bounce flag so that the bounce type can be selected by actor
|
||
instead of by game.
|
||
- Fixed the [*.Autoload] ini sections so that they work with wildcards for
|
||
files that are not in the current directory.
|
||
- Replaced the fire in the player setup menu with a plasma.
|
||
- Moved thinkers off of the zone heap.
|
||
|
||
April 1, 2002
|
||
- Changed R_FreeTags to move the rover back to the beginning of the zone.
|
||
- Moved sprite frames off of the zone heap because they constituted a lot
|
||
of small locked blocks. Did the same for texture column directories,
|
||
colormaps, switches, terrain types, skins, sound sequences, msecnodes,
|
||
and SNDCURVE. The only things left on the heap now that are unpurgable
|
||
are the level data.
|
||
- Added a calling history to the zone heap when compiled with _DEBUG so I
|
||
can see where all the zone memory is going.
|
||
- Changed Z_Malloc so that it only throws away purgable blocks if doing so
|
||
will result in a block large enough for the requested allocation.
|
||
|
||
March 28, 2002
|
||
- Added an extra max parameter to HealThing. 0 will uses the creature's
|
||
spawn health as max. 1 will use the max soulsphere health as max. Anything
|
||
above that will be used as an absolute maximum.
|
||
|
||
March 25, 2002
|
||
- Made sky textures that are scaled vertically draw properly.
|
||
- Made the sky textures scalable horizontally.
|
||
- Verified that the PNG loader really can handle the different filters.
|
||
- Made the weapon slots configurable.
|
||
- Commented out the code that prevents people from using dehacked with
|
||
Heretic and Hexen.
|
||
- Changed the decision of whether or not to spawn puffs when a line attack
|
||
strikes an actor into an actor property.
|
||
- Added code to set PuffType for all the bullet attacks in Doom.
|
||
- Changed P_CheckMissileSpawn to not decrement the missile's first tics if
|
||
the tics are less than one. Now the Centaur Leader can shoot his missile
|
||
when spawned in Doom.
|
||
- Added the projectiles Hexen only spawns from scripts.
|
||
- Fixed: $pitchshift could not be used before defining a sound, so none
|
||
of the Hexen sounds that don't want to be shifted stayed unshifted.
|
||
- Fixed: ZXmasTree, ZBell, and ZSuitOfArmor had undefined mass.
|
||
- Fixed: ZPoisonShroom had undefined health and mass, and it didn't spawn
|
||
a poison cloud on death.
|
||
- Fixed: The Heretic snake did not have an attack sound.
|
||
|
||
March 23, 2002
|
||
- Fixed: PCD_SETTHINGSPECIAL fell through to PCD_THINGSOUND.
|
||
|
||
March 22, 2002
|
||
- Fixed: When the minotaur stops charging, he now properly turns off his
|
||
invulnerability.
|
||
- Fixed: The dehsupp utility was case-sensitive when adding names but not
|
||
when using them, so bex patches could not specify the NOGRAVITY flag by name
|
||
because it has the same name as the NoGravity function, and both versions
|
||
of the name were stored in the dehsupp lump.
|
||
- Using a dehacked patch to set the initial bullets to 0 will now cause the
|
||
player to start with their fist raised instead of the pistol.
|
||
- Changed the error message for switches with invalid second texture names
|
||
to a warning.
|
||
- Fixed: The fighter boss's extreme death crashed the game because it used
|
||
A_SkullPop, which assumed that the actor's player member was non-NULL.
|
||
- Gave the bots some knowledge of Heretic weapons so they don't slow things
|
||
down so bad in that game.
|
||
|
||
March 21, 2002
|
||
- Added a teamplay scoreboard.
|
||
- Added: Bots now join a random team if they aren't specifically assigned a
|
||
team in bots.cfg.
|
||
- Added: When teamplay is true, players (finally) use their team colors.
|
||
- Added a sector action that gets triggered when an actor hits the sector's
|
||
fake floor. (doomednum 9989)
|
||
- Added another flash state to the pistol so that if people want to use a
|
||
patch to make it behave like a railgun or plasma rifle (and keep the flash
|
||
states), it will work without crashing.
|
||
- Fixed: A_FireCGun() assumed that flash states were present. This is not
|
||
normally a problem, but dehacked patches can make this precondition false.
|
||
- Fixed: Ambient sounds saved their NextCheck time in gametics, so you
|
||
wouldn't be able to hear them after a load until the game had been running
|
||
at least as long as it had been running when you saved.
|
||
- Added support for encrypting ACS strings, and added the ACS_ExecuteWait
|
||
shortcut to ACC. ACS_ExecuteWait(x, ...) is equivalent to ACS_Execute(x,...);
|
||
ScriptWait(x); It uses the existing p-codes instead of introducing more of
|
||
its own. Think of it as syntactic sugar.
|
||
|
||
March 20, 2002
|
||
- Added code to the node builder to group segs by their line equations so that
|
||
when there are several segs that would create the same partition line, only
|
||
one of them needs to be checked to see if it is a good splitter.
|
||
|
||
March 19, 2002
|
||
- Changed polyobj container detection in the node builder to work the same
|
||
way it does in the game: A polyobject's subsector is determined by its
|
||
center after it gets translated to its start spot--not by the start spot
|
||
itself. One case where this distinction is important is the polyobject north
|
||
of the dining room in Hexen MAP33; its start spot is in a sector different
|
||
from where it appears.
|
||
|
||
March 18, 2002
|
||
- Fixed: When I inlined the point-on-line-side functions, I messed up and
|
||
counted being right on the line as being behind it, when it should count
|
||
as being in front of the line.
|
||
- Changed polyobject container detection to just mark the segs that form
|
||
a loop around the polyobject spawn spot instead of all the segs in the
|
||
sector. This helps keep the BSP from getting too deep around containers
|
||
in nonconvex sectors and is also necessary for Hexen, MAP39 to build
|
||
correctly.
|
||
- Improved the polyobject container splitting avoidance so that splitters
|
||
colinear with the segs of the container are valid.
|
||
|
||
March 16, 2002
|
||
- Added code to the node builder to detect sectors polyobjects appear
|
||
within and try hard to avoid using splitters that touch their segs.
|
||
- Improved the node builder so that it can split up convex areas with
|
||
segs from different sectors so that each subsector only references
|
||
one sector.
|
||
- Added support for loading maps without nodes or a reject matrix.
|
||
- Tweaked the heuristic used by the node builder to give more weight to
|
||
splitters that split few lines.
|
||
|
||
March 15, 2002
|
||
- Fixed the console ticker so the node builder can use it.
|
||
- Changed subsector_t's firstline and numlines members to be unsigned,
|
||
doubling the maximum number of segs a map can have. The built-in node
|
||
builder doesn't try very hard to minimize splits.
|
||
- Added an internal node builder so that if any 0-length lines are removed,
|
||
the nodes will still be valid. This may or may not actually be necessary
|
||
depending on the node builder originally used; it's just to be safe. I
|
||
make no attempt to fix convex areas belonging to more than one sector, so
|
||
it's still a good idea to fix the map and use a better node builder. At
|
||
least this one seems pretty fast: I can rebuild Vrack2's nodes in just a
|
||
few seconds using a debug build.
|
||
|
||
March 14, 2002
|
||
- Lines of 0 length are now removed entirely from the map. Massmouth had
|
||
invalid front sector references only on its 0-length lines, so removing
|
||
them conveniantly lets it run again despite the beefed-up error checking.
|
||
- Removed the angle member from seg_t because it isn't really needed.
|
||
- Undid Killough's relayout of R_PointToAngle2 so that I can actually read it
|
||
and do some optimization. Its compiled size is now 256 bytes less than
|
||
before.
|
||
|
||
March 11, 2002
|
||
- Added the mage's first weapon.
|
||
- Changed A_SpawnFly to play "brain/spawn" instead of "misc/teleport".
|
||
Changed the spawn cube explosion sound to "brain/cubeboom".
|
||
- Changed $ambient point attenuation parsing to use IsFloat() to check if
|
||
the attenuation is present.
|
||
- Changed SNDINFO parsing so that non-male players can use random sounds.
|
||
- Did some space tuning to R_RenderBoundWallSprite() and R_DrawVisSprite().
|
||
- Fixed R_ProjectSprite() to calculate the correct left and right edges for
|
||
horizontally scaled sprites.
|
||
- Changed the sound limit for Heretic's horn rod.
|
||
- Added LEVEL_SPECKILLMONSTERS to the definitions for Heretic's ExM8, where
|
||
x >= 2, so killing the boss monsters will kill the rest of the levels'
|
||
monsters, as it should.
|
||
- Fixed: The minotaur would stay invulnerable if his charge was interrupted
|
||
before his one-second charge time was up (i.e. he hit something or went into
|
||
his pain state).
|
||
|
||
March 10, 2002
|
||
- Fixed: If you visited Doom E2M9, saved, and then reloaded after quitting and
|
||
restarting, the game would crash at the intermission because it would try
|
||
to draw the Fortress of Mystery without loading its graphic first. This
|
||
would also happen if you started with -warp 2 9.
|
||
|
||
March 9, 2002
|
||
- Added the cleric's first three weapons and the mage's second and third
|
||
weapons.
|
||
|
||
March 8, 2002
|
||
- Added the fighter's axe and hammer.
|
||
- Added Hexen's cleric and mage bosses and Korax.
|
||
- Fixed: PTR_AimTraverse crashed when non-players aimed at ghosts.
|
||
|
||
March 7, 2002
|
||
- Added Hexen's puzzle items, boots of speed, krater of might, and fighter
|
||
boss.
|
||
|
||
March 6, 2002
|
||
- Added Hexen's armor, bat spawner, and teleport other and dark servant
|
||
artifacts.
|
||
|
||
March 5, 2002
|
||
- Added Hexen's wraiths, fog patches, flames, disc of repulsion, and dragon.
|
||
- Changed EttinMace, CentaurShield, and CentaurSword to use a crash state
|
||
instead of A_CheckFloor. Now I can get rid of A_CheckFloor.
|
||
|
||
March 4, 2002
|
||
- Fixed: SendWeaponSlot and SendWeaponChoice need to be initialized to 255 at
|
||
compile time. If they're left at 0, then weapon switch commands will be
|
||
generated for the very first tic run if the level has not been loaded yet.
|
||
This happens when playing demos from the command line, because they tic
|
||
before loading anything (including themselves).
|
||
- Changed the health bonus's spawn id to 152 so that it isn't the same as the
|
||
scripted marine's.
|
||
- Fixed: GetWordSpace in d_dehacked.cpp only allocated half as much memory
|
||
as was needed. (But since x86 processors are fine with unaligned accesses,
|
||
I don't really need to allocate memory. Ah well.)
|
||
|
||
March 2, 2002
|
||
- Fixed TossChunks() to toss the demons' chunks out in the correct directions.
|
||
- Finished migrating the code to the new RNG system. In the process, I
|
||
discovered that constructors for static objects local to a function will
|
||
not be called until the first time the function containing it is called.
|
||
So all FRandom objects need to have global scope or else loading a savegame
|
||
won't find any RNGs that haven't been used yet.
|
||
|
||
February 28, 2002
|
||
- Changed the random number generator system to use objects to represent
|
||
different generators instead of array indices. Why? Because it makes
|
||
adding new RNGs quicker--I just create a new FRandom object, and nothing
|
||
else that uses random numbers needs to be recompiled.
|
||
|
||
February 27, 2002
|
||
- Changed the PNG reader and writer to use zlib streams directly without
|
||
wrapper functions in order to use less memory. As part of this, I was
|
||
able to test the case where a PNG has multiple IDATs to ensure that it
|
||
gets read correctly, and ZDoom might now write a PNG with multiple IDATs.
|
||
- Fixed problems with the impact decal serializing: 1) The list of impact
|
||
decals was messed up when loading a game. 2) Too many impact decals would
|
||
cause a stack overflow because each impact decal would cause the next
|
||
decal to write itself out before it finished writing itself, because it
|
||
had to follow the list maintained in the tracer field.
|
||
- Extended the changemap command so that it can take an optional position
|
||
number for maps that have multiple player starts.
|
||
|
||
February 26, 2002
|
||
- Fixed saving games without savepics. (Technically, because PNG is now used
|
||
to store savegames, setting storesavepic to false will still leave an image
|
||
in the savegame, because we need to create a valid PNG--but the image is
|
||
only a 1x1 black grayscale pixel, so it adds just a few bytes to the file.
|
||
- Made savepics slightly taller to 162 pixels so that they look right when
|
||
viewed with square pixels and no stretching.
|
||
- Fixed CRC calculations for extra PNG chunks so IE can be used to look at
|
||
savegames, and there shouldn't be any problems loading them into image
|
||
editors.
|
||
- Changed sprite serialization to save the sprite names instead of indices
|
||
so that simply adding more sprites won't break savegames.
|
||
|
||
February 22, 2002
|
||
- Renamed snd_dolby cvar to snd_matrix.
|
||
- Made a few more general-purpose action functions accessible through BEX.
|
||
- Changed particles' right and bottom edges back to being inclusive instead
|
||
of exclusive.
|
||
- Fixed: Shadowed masked blocks that were clipped drew the shadow on top of
|
||
the regular image. The window when the clipping versions of the routine
|
||
were used was also slightly smaller than needed.
|
||
- Fixed: Network games didn't work because the game forgot it was running a
|
||
network game before it even loaded the map.
|
||
- Fixed the spawn and spawnspot ACS commands.
|
||
|
||
February 20, 2002
|
||
- Changed the savegame format to use PNG as a container. The use of chunks
|
||
for different types of data helps reduce the need for introducing a new
|
||
savegame version every time I change some little thing in what the
|
||
savegames store, but the primary purpose for the switch is so that you
|
||
can load the savegame into a paint program and see the savepic without
|
||
having to do any extra work (except possibly changing the file extension
|
||
to .png). It also gives launcher writers a public standard to use for
|
||
loading the savegame pictures if they want to do so.
|
||
- Added the png_gamma cvar to control the gamma saved to PNG
|
||
screenshots. Setting it to 0 will use the same gamma as the screen.
|
||
|
||
February 19, 2002
|
||
- Added support for writing PNG screenshots. PCX is still available as an
|
||
option because it takes longer to create a PNG even at minimum compression.
|
||
|
||
February 18, 2002
|
||
- Changed LeftOffset and TopOffset in FTileSizes to signed words so that
|
||
they can handle negative offsets (like they're supposed to).
|
||
|
||
February 16, 2002
|
||
- Changed actors' active sounds so that they only play if the actor is not
|
||
already playing something on its voice channel.
|
||
- Removed the MF3_SEEISALSOACTIVE flag. Random sounds do the job better.
|
||
- P_SpawnPlayer() now clears spreecount, multicount, and listkilltime.
|
||
- Fixed: Spying through a bots eyes and then removing the bot would crash.
|
||
- Added \movebob\.25 as a default for bots.
|
||
- Fixed: P_SpawnPlayer() could not use the Hexen player 5-8 starts.
|
||
- Fixed: The view could still bob when you were dead if stillbob was non-0.
|
||
- Fixed an NT 4.0 waveout heap corruption bug that appeared with FMOD 3.5.
|
||
I don't know if it's FMOD's fault, NT's fault, or the Audigy's drivers
|
||
fault, but I have to initialize FMOD with FSOUND_OUTPUT_DSOUND before
|
||
using FSOUND_OUTPUT_WINMM, or a heap used by the sound card's drivers
|
||
will be corrupted when FSOUND_Close() is called.
|
||
- Updated the reverb code for FMOD 3.5.
|
||
|
||
February 14, 2002
|
||
- Added the friendly minotaur for Hexen.
|
||
- Added Hexen's flechette.
|
||
- Changed the Heresiarch's bishops so that they will automatically target
|
||
whatever the Heresiarch is targetting.
|
||
|
||
February 13, 2002
|
||
- Added Hexen's keys.
|
||
- Changed P_BounceWall to take advantage of the BlockingLine global and use
|
||
that as the line to bounce off of, if non-NULL.
|
||
- Added support for loading hexdd.wad as an IWAD, which really just means that
|
||
hexen.wad is automatically loaded before it.
|
||
|
||
February 12, 2002
|
||
- Added Hexen's Heresiarch (Sorcerer).
|
||
- Fixed: Decals on an upper side used the lower texture to determine if decals
|
||
are allowed and vice versa.
|
||
|
||
February 11, 2002
|
||
- The player_s struct now serializes the camera. Before, it always set it to
|
||
mo when loading. I'm not sure why I did that, because it meant you lost your
|
||
camera view when loading a game saved from a different camera.
|
||
- Fixed: SetWeapon only worked if passed the name of a Doom weapon. Anything
|
||
else would make it crash.
|
||
- Changed HealThing so that it can max out at 200 for players.
|
||
- Added error checks for loading maps that don't have their BSP built.
|
||
- Added back "Health" as an item for checkinventory and "Armor" for
|
||
checkinventory, takeinventory, and giveinventory.
|
||
- Fixed: The status bar face background was not translated to the player's
|
||
current color. If you were playing a botmatch, the colored background would
|
||
also not appear until you changed your color or respawned.
|
||
- Fixed: Loading a game before starting one would reset the skill to 0.
|
||
- Removed mouse grabbing from the Win32 I_InitInput. That happens later
|
||
when the in_input cvar's callback is executed. This solves the problem of
|
||
the mouse still being grabbed when startup fails.
|
||
- Changed startup handling so that if the game gets into its loop in the
|
||
GS_STARTUP state, it will switch to GS_FULLCONSOLE so that the console will
|
||
be useable. This can happen, for instance, if you specify an invalid file
|
||
for -loadgame.
|
||
- Changed -loadgame to automatically append .zds to the specified file if it
|
||
isn't already present.
|
||
- Fixed: DamageThing(0) did nothing instead of killing the activator.
|
||
- Fixed a potential crash when an alias causes itself to be removed as part of
|
||
its execution.
|
||
- Fixed: Thanks to some left-over code when I changed the realiasing of
|
||
existing aliases, the alias would be realiased, deleted, and then recreated.
|
||
It should have just been realiased and not deleted.
|
||
- Fixed: Respawning after getting your head blown off (in Heretic or Hexen)
|
||
would crash multiplayer games and could occasionally crash single player
|
||
games as well. Those games set special2 to 666 when the player pressed
|
||
space to respawn, and the severed head used this as a signal to remove
|
||
itself. Because ZDoom cleans up stale pointers, this would leave the player
|
||
without a valid camera for at least one frame before the player actually
|
||
respawned, and the game would crash when it tried to draw the view. Now the
|
||
severed heads wait until their player field becomes NULL before they destroy
|
||
themselves.
|
||
- Fixed: BloodySkull and IceChunkHead would appear using the player's sprites
|
||
because they were attached to players and inherited the skin. The fix is to
|
||
add a dummy first state with a different sprite so that SetState will use
|
||
the correct sprite.
|
||
- Added snd_fpumixer cvar.
|
||
|
||
February 8, 2002
|
||
- Added a new line to the miscellaneous dehacked section: "Monsters Ignore
|
||
Each Other" will cause monsters never to target other monsters.
|
||
|
||
February 7, 2002
|
||
- Fixed: deh.MaxHealth was unused.
|
||
- Fixed: Operator<< for podoortype_t was call-by-value instead of call-by-
|
||
reference, so polyobject doors could not be loaded properly.
|
||
- Changed sound code again so that unpositioned sounds do not call
|
||
S_StopSoundID.
|
||
- Added A_SetFloorClip and A_UnSetFloorClip action functions for use by the
|
||
cacodemon when it dies/resurrects.
|
||
- Added MF2_FLOORCLIP to the HellKnight.
|
||
- Moved the P_RunEffects() call so that it can be frozen in freeze mode.
|
||
- Added some new SNDINFO commands. $limit controls how many copies of a sound
|
||
S_StopSoundID will allow. $pitchshiftrange controls how much a sound's
|
||
pitch can change when using pitched sounds. And $pitchshift allows control
|
||
of pitch shifting for a single sound.
|
||
|
||
February 5, 2002
|
||
- Did away with the longest-playing change to S_StopSoundID because it made
|
||
looping sounds of the same type near each other fight for precedence, and
|
||
the result sounded horrible. Now I use distance to limit the set of sounds
|
||
considered for stopping. Only sounds within 256 units of the new sound will
|
||
possibly be stopped by this function. Also removed sound tags because they
|
||
served the same purpose as the distance comparison.
|
||
- Added $playercompat SNDINFO command to create special aliases from the old
|
||
SNDINFO player sounds to the new ones. These are special in that after they
|
||
get created, any attempts to modify them will modify there target instead.
|
||
- Added the addrocketexplosion cvar. If true, then rockets use additive
|
||
translucency when the explode. Otherwise, they use normal translucency. This
|
||
can still be overridden with a Dehacked patch.
|
||
|
||
February 4, 2002
|
||
- Realized that because I now project particles as their subsectors are
|
||
entered, I have enough information to clip the particles when they are
|
||
projected. By changing my code to take advantage of this, I can avoid
|
||
running through all the drawsegs for each particle on-screen. When there are
|
||
many drawsegs and particles on-screen at once, the improvement is quite
|
||
impressive--far better than I expected.
|
||
|
||
February 2, 2002
|
||
- Added MF2_FLOORCLIP to many of the Doom monsters so that they can have their
|
||
feet cut off when standing in shallow water, provided that the appropriate
|
||
terrain definitions exist.
|
||
- Put back the limit of two identical sounds playing at once from Heretic and
|
||
Hexen in order to prevent the SSG from making super loud splashes that drown
|
||
out everything else. Tweaked S_StopSoundID so that it will use oldest time
|
||
for selecting a sound to stop if it can't find any with lower priority.
|
||
- Set all the puffs except BeakPuff back to their default masses.
|
||
- Changed splashes so that if a fake flat has a terrain with a splash, you can
|
||
shoot or drop below it and leave a splash.
|
||
- Fixed anomalies with the way the railgun made splashes.
|
||
- Added code to group particles into subsectors so that I can subject them to
|
||
the same fake floor clipping as normal sprites. I also found a problem with
|
||
lighting of particles in fake sectors and fixed it.
|
||
|
||
January 31, 2002
|
||
- Fixed: Fog boundaries could be erroneously drawn in underwater areas because
|
||
R_FakeFlat did not change the fake sector's colormap when calculating the
|
||
back side of a line.
|
||
- Fixed: Using -skill at the command line always set skill to 0.
|
||
- Added a check for freeze mode around P_ThinkParticles and the various
|
||
decal animator tickers.
|
||
- Fixed .cfg file parsing so that if comments appear on the same line as a
|
||
command, the command will still be executed.
|
||
- Fixed ParseCommandLine to work with unterminated quotes.
|
||
- Added "proper" support for tall textures by introducing a different patch
|
||
format that uses words instead of bytes to store column lengths and offsets.
|
||
All tall and multipatch textures get converted to this format at runtime, so
|
||
tall textures work equally well on one-sided and two-sided lines, and I
|
||
don't have to worry about sliding windows while generating the composite
|
||
textures.
|
||
|
||
January 30, 2002
|
||
- Fixed: Addkeysection did not load bindings from the ini.
|
||
- Fixed: Quicksave did not quicksave.
|
||
- Fixed: Savegames could be listed in the menu twice, once with the full path
|
||
and again with just the file name.
|
||
- Fixed: Suiciding and giving stuff to a player without an actor crashed.
|
||
- Fixed: Loading savegames was broken.
|
||
|
||
January 28, 2002
|
||
- Fixed: Using allowdecals in ANIMDEFS was broken.
|
||
- Added more ways to create slopes, all of which are thing-based:
|
||
|
||
Things 9500 and 9501: The first argument to these things is a line id.
|
||
For each matching line, the sector on the same side of the line
|
||
has its floor or ceiling sloped so that it passes through this thing.
|
||
The thing does not necessarily need to be in the sector(s) being
|
||
sloped. 9500 slopes the floor, and 9501 slopes the ceiling.
|
||
Things 9502 and 9503: Set the plane equation for the sector they are in
|
||
directly. The first argument determines how far it tilts from
|
||
horizontal and is measured in degrees. 90 degrees is perfectly
|
||
horizontal. Values close to 90 have less slope than values further
|
||
from 90. The thing's angle is used to determine what direction the
|
||
slope faces. The floor or ceiling will be adjusted so that it passes
|
||
through this thing. 9502 slopes the floor, and 9503 slopes the
|
||
ceiling.
|
||
Things 9510 and 9511: The first argument to these is a sector tag. The
|
||
plane equation from the first sector with a matching tag will be
|
||
copied to the sector that this thing is in. 9510 copies the floor
|
||
plane, and 9511 copies the ceiling plane.
|
||
|
||
Things 9500-9503 are processed after slopes created with linedef specials,
|
||
so they can be used to further adjust the resultant slope. Things 9510
|
||
and 9511 are processed after all other slopes are set up, so they override
|
||
any slopes that might have been created in their sectors already.
|
||
|
||
January 26, 2002
|
||
- Assigned spawn numbers to most of the Heretic actors and added one for
|
||
Doom's health bonus.
|
||
- Added ChangeSkill special (#179).
|
||
- Changed A_FireRailgun to use the ammouse field to determine how much ammo
|
||
to eat up.
|
||
- Added a minammo member to FWeaponInfo and made it dehacked-settable.
|
||
- Fixed: Savegames went in the current directory instead of the program
|
||
directory.
|
||
- Fixed: Aliases could not realias themselves reliably.
|
||
- Fixed: Particle drawing was erratic in sectors with fake floors.
|
||
- Improved detection of windows into below-deep-floor areas to have fewer
|
||
false positives with complex geometry. It works for all the test cases I
|
||
have now, so hopefully all the false positives have been eliminated.
|
||
|
||
January 25, 2002
|
||
- Because I can't figure out what's going wrong with the blitter, when loading
|
||
an ini from a previous ZDoom version, vid_noblitter will now be reset to
|
||
true, because I'm not sure it's benefiting anyone.
|
||
- Removed DFrameBuffer::PartialUpdate.
|
||
- Added more debugging spew and tried different blit techniques, and blits
|
||
still take too long. They're supposed to be asynchronous, but my timings
|
||
indicate otherwise--the blit times are proportional to the size of the
|
||
blit, BltFast almost never returned DDBLT_WASSTILLDRAWING when I removed the
|
||
_WAIT flag, and a 1600x1200 blit takes ~15 ms to complete (memcpy only needs
|
||
~4 ms to do the same thing). It seems like it's not using DMA at all but
|
||
some lame software emulation instead, so I tried obtaining an
|
||
IDirectDrawSurface2 interface and PageLocking the blitter surface, but it
|
||
made no difference. Why did it work before but it doesn't now?
|
||
- Removed the unlock/lock around D_NetUpdate when rendering. This is only
|
||
needed when a video memory surface is locked under Win9x. Since my
|
||
experiment with writing directly to video memory is gone, this never
|
||
happens.
|
||
- Fixed: Alt-tabbing away and back when using the blitter would fail to
|
||
restore the lost surfaces, because system memory surfaces don't normally
|
||
get lost from such a situation, so the LockSurf call would return ok, and
|
||
the BltFast in Update would fail later.
|
||
|
||
January 24, 2002
|
||
- Added heapsize cvar so you don't need to use -heapsize if you always want
|
||
to use a heap other than 8 megabytes. Moved Z_Init to happen after loading
|
||
the config file so that the cvar is available when it gets called.
|
||
- Lines with sky on the front and back are no longer considered fog
|
||
boundaries. As long as fog does not effect the sky, it looks bad to be
|
||
drawing the boundaries of different fogs in outdoor areas.
|
||
- Fixed: R_ProjectParticle() did not set vis->cx, so R_DrawSprite() was
|
||
unable to properly determine if a drawseg was in front of a particle or
|
||
not.
|
||
- Added a #wadauthor switch to ACC to cause it to create dummy scripts for
|
||
all the real scripts in the map so WadAuthor's error checking will know
|
||
about them. I had to change my ACSe detection to no longer look for scripts
|
||
that appear to have 0 scripts and strings. Since the standard ACC will
|
||
never generate object files with the ACSe tag, this should be safe.
|
||
- I think I must have messed up the blitter code somewhere, because now it
|
||
slows down the machine it used to speed up. I don't see anything wrong
|
||
though! Changed the default for vid_noblitter to true until I can figure
|
||
out what's going on.
|
||
- Added vid_vsync cvar to control whether or not vsync is used when flipping
|
||
the display. Since the framerate gets clamped well below the refresh rate,
|
||
turning off vsync is probably useless.
|
||
|
||
January 23, 2002
|
||
- Fixed: Deleting the most recently saved game and then dying would crash
|
||
because the game would try to load that game and fail because it no longer
|
||
exists.
|
||
- Added disableautosave cvar to control when autosaves happen. At 0, autosaves
|
||
always happen. At 1, they only happen when an autosave special is activated.
|
||
At 2, they never happen. Also disabled autosaving when starting a new game.
|
||
Autosaves now happen only when advancing to a new map.
|
||
- Fixed: Exiting a level in Heretic crashed.
|
||
- Fixed: FSOUND_OUTPUT_WINMM was always used if snd_output was not set to
|
||
dsound. Also added "directsound" as a synonym for "dsound" when used with
|
||
this cvar.
|
||
|
||
January 22, 2002
|
||
- Changed the in-game priority class to normal so ZDoom won't give itself
|
||
a high priority when running.
|
||
- Added "Ammo use" field for dehacked weapon modifications.
|
||
- Fixed palette translation through Dehacked again. While I was at it, I
|
||
decided to remove translation control from the actor's flags member
|
||
entirely and just rely on the Translation member.
|
||
- Fixed: Bouncing a missile off a floor/ceiling near a wall could crash if
|
||
no missiles had already bounced off a wall.
|
||
- Fixed: PIT_RadiusAttack() only pushed things in directions with positive
|
||
x and y.
|
||
- Gave names to the anonymous structs in p_setup.cpp/sidei_t so that it
|
||
compiles with GCC 2.95.3.
|
||
- Rearranged FBaseCVar::ToInt() to try and compile it with GCC 2.95.3.
|
||
|
||
January 20, 2002
|
||
- Fixed: Picking items up when item respawn is enabled would mess up collision
|
||
detection because the items would move themselves back to their original
|
||
positions, and the collision detection code is not reentrant. They now
|
||
relocate themselves as the result of a state change later on.
|
||
- Made some changes to the renderer to support drawing textures with different
|
||
scales on the same wall and to also support obtaining textures scaling from
|
||
some of the previously unused bytes in the maptexture_t structs stored in
|
||
the wad.
|
||
|
||
January 19, 2002
|
||
- Added support for DeePsea's tall patches.
|
||
- Fixed: Sky textures wider than 1024 could not scroll properly because the
|
||
sky position was always clamped past 255.
|
||
|
||
January 17, 2002
|
||
- Added a new player property: PROP_INSTANTWEAPONSWITCH (2). When set, the
|
||
player can switch weapons instantly without lowering and raising them.
|
||
|
||
January 16, 2002
|
||
- Fixed: Autoaim could mess up. Same reason as PTR_SightTraverse below.
|
||
- Changed giveinventory when giving a weapon so that the weapon will not be
|
||
brought up automatically if the player did not have it already. If this is
|
||
desired, it can be simulated with setweapon.
|
||
- Disabled drawing of the crosshair when the camera is not a player.
|
||
- Fixed a problem under NT4 when using waveout for sound effects and playing
|
||
MIDI music: A memory block would be modified after being freed. The fix is
|
||
a 50 ms delay between stopping the song and shutting down the sound.
|
||
- Added "waveout" as a synonym for "winmm" for the snd_output cvar.
|
||
- Added CheckWeapon and SetWeapon ACS commands.
|
||
- Added support for a -1 translation in Thing_SetTranslation to set the
|
||
target's translation to that of the activator's.
|
||
|
||
January 14, 2002
|
||
- Fixed a bug in PTR_SightTraverse() that could cause it to think something
|
||
was visible when it really wasn't.
|
||
- Fixed: Masked mid textures in foggy areas could be drawn with the wrong
|
||
light level, because they checked the foggy flag to determine if they were
|
||
in a foggy area. This flag is not set when drawing masked mid textures.
|
||
- Added a tx cvar to test different horizontal wall texture scales.
|
||
- Fixed some errors GCC found and added GetFlashedPalette() to SDLVideo
|
||
so that ZDoom compiles under Linux again.
|
||
|
||
January 12, 2002
|
||
- Added a ty cvar to test different vertical wall texture scales.
|
||
|
||
January 10, 2002
|
||
- Added a vid_noblitter cvar to force memcpy to be used for copying from
|
||
system to video memory, even when the blitter is available to do the job.
|
||
On my P3-866 with a GeForce2 Go, the blitter is about twice as fast as
|
||
memcpy. On my Athlon XP 1600+ with GeForce2 MX, memcpy is about three
|
||
times faster than the blitter. I need more data before I can decide what
|
||
a reasonable default for different systems is, but right now it defaults
|
||
to false.
|
||
- Fixed: The blitter surfaces would only flip when logging was enabled
|
||
because I had the Flip call enclosed inside a LOG1 macro.
|
||
- Fixed the case where the video driver reported it could blit from system
|
||
to video memory, but the blitter surfaces could not be allocated. When this
|
||
happened, the screen would not update.
|
||
|
||
January 9, 2002
|
||
- Changed P_CheckSlopeWalk() to return false if the actor's floorsector is
|
||
different from the actor's sector. It seems to fix the problem with the
|
||
"push pad". The whole Doom collision detection/movement code is a mess and
|
||
deserves to be rewritten from the ground up.
|
||
- Changed sky texture positioning to match older versions. It should be based
|
||
on the height of the screen, not the height of the texture.
|
||
- Commented out a check at the beginning of wallscan(), because sky boxes can
|
||
make the check invalid.
|
||
|
||
January 8, 2002
|
||
- By default, animated textures will no longer have decals drawn on top of
|
||
them. This can be changed by adding "allowdecals" to the animation sequence
|
||
in ANIMDEFS.
|
||
- Moved the SpawnableThings/DoomEdMap initialization out of
|
||
FActorInfo::StaticGameSet() into ::StaticSetActorNums() so that Dehacked
|
||
patches that change doomednums will work as expected.
|
||
|
||
January 7, 2002
|
||
- Added an error message for switches that have more than one sound for their
|
||
on or off states.
|
||
- Fixed: Creating a switch with a valid start texture but an invalid second
|
||
texture would crash when you tried to use the switch. Now you get an error
|
||
when the ANIMDEFS is parsed.
|
||
|
||
January 5, 2002
|
||
- Wrote some code for Convert24(). Since my video card does not support 24-bit
|
||
displays, I had to test it using a 32-bit display instead, but it seems to
|
||
be working.
|
||
- Removed the special case for writing to 8-bit windowed displays in
|
||
win32video.cpp.
|
||
- Added turnspeeds command to adjust the keyboard turning rate.
|
||
- Added sin, cos, and vectorangle ACS functions. They use 16-bit angles. 0 is
|
||
0 degrees, and 65536 would be 360 degrees if it didn't wrap to 0.
|
||
|
||
January 4, 2002
|
||
- Fixed: CheckIWAD() would consider as valid any files that were present in
|
||
the search, even if they weren't IWADs. Hence, something like
|
||
"zdoom -iwad zdoom.exe" would be accepted and cause a crash.
|
||
|
||
January 3, 2002
|
||
- Got rid of the divide in P_AdjustLine when it calculated the slopetype for
|
||
diagonal lines. Because only the sign of the result is significant, a
|
||
simple xor is enough. Did the same for UpdateSegBBox.
|
||
- Turned R_PointOnSide into a simple inlining of DivScale32. Multiplies are
|
||
cheaper than mispredicted branches, so I took out the special cases for
|
||
perfectly horizontal and vertical lines. Also made similar changes to
|
||
P_PointOnLineSide and P_PointOnDivlineSide, which are exactly the same
|
||
thing, except they use different line representations. Also inlined
|
||
P_MakeDivline, because it's so simple.
|
||
|
||
January 2, 2002
|
||
- Moved cl_bobscale and cl_stillbob into userinfo (and renamed them to
|
||
movebob and stillbob). There are sector actions that depend on the player's
|
||
eye height, so these values need to be sent across the network.
|
||
- Optimized R_DrawFogBoundary() by drawing horizontal spans instead of
|
||
vertical strips.
|
||
|
||
December 24, 2001
|
||
- Added a check for sectors without any lines in p_setup.cpp. If any are
|
||
found, their tags are set to 0 so that they cannot be used by most specials.
|
||
|
||
December 22, 2001
|
||
- Fixed: If you saved over a savegame from a different ZDoom version, the menu
|
||
would still list it as being from a different version until you quit and
|
||
restarted the game.
|
||
- Added the CreateTranslation ACS command and Thing_SetTranslation special to
|
||
allow changing the translation used by any actor.
|
||
- Added a ScriptedMarine actor. It looks just like the player but wears indigo
|
||
and acts like a monster (except its attacks don't actually do anything).
|
||
Doomednum 9100, spawnable #151.
|
||
|
||
December 21, 2001
|
||
- Added function and array support to ZDoom's ACS VM.
|
||
|
||
December 18, 2001
|
||
- Fixed: Player corpses would revert to the default skin if the player
|
||
respawned before their death animation finished.
|
||
- Changed the Doom weapons so that they use the ammouse member of FWeaponInfo.
|
||
This way, when a deh patch sets a weapon to no ammo, I can set its ammouse to
|
||
0, and nothing will change when the weapon is fired..
|
||
- Changed video code so that if the blitter is not being used to copy the
|
||
frame from system memory, all the drawing will still happen in system memory
|
||
because the processor has faster access to it than video memory.
|
||
- Changed video code so that it works with drivers that do not support
|
||
FLIP_NOVSYNC.
|
||
|
||
December 16, 2001
|
||
- Changed the SSG flash to not last longer than the associated weapon frame.
|
||
|
||
December 8, 2001
|
||
- Fixed: CheckIfExitIsGood() always returned false if self was NULL. This
|
||
meant open scripts could not change the level.
|
||
- Fixed: Exit_Normal and Exit_Secret specials ignored their position
|
||
arguments and always used position 0.
|
||
|
||
December 7, 2001
|
||
- Changed PIT_RadiusAttack() to be closer to the original behavior. Doom does
|
||
radius damage in a square pattern, not a circle. Oops!
|
||
|
||
November 23, 2001
|
||
- Changed translationtables into an array of translation tables and fixed a
|
||
bug with the serialization of decals with custom translations in the
|
||
process.
|
||
- Added the CreateTranslation command to ACC.
|
||
- Redesigned the layout of ACSe/ACSE files so that they can be included with
|
||
editors other than ZETH. The new format looks like a normal ACS\0 file with
|
||
some junk in the string area but no actual scripts or strings. The old
|
||
ACSe/ACSE format is still supported for people who took the time to compile
|
||
the ACC 1.16 source I had posted.
|
||
|
||
November 22, 2001
|
||
- Changed the translation member of AActor to an index into the
|
||
translationtables array.
|
||
- Added the Thing_SpawnFacing special. It works like Thing_Spawn(NoFog)
|
||
except the angle of the new actor is taken from the spot where it spawns at.
|
||
- Corrected the xspeed and yspeed arrays in p_enemy.cpp so that they better
|
||
reflect diagonal movement at the correct speed of 1.
|
||
|
||
November 20, 2001
|
||
- More tool work: Added IMGZ, FON1, and FON2 loading support and ILBM, PCX,
|
||
and BMP writing support to imagetool. It loads FON1 and FON2 as images, not
|
||
fonts, so converting to/from FON1 and FON2 requires extra work on the user's
|
||
part. However, it does make it possible to obtain an editable image for
|
||
the font that can be used to create another font of the same type. It also
|
||
makes imagetool usable as a general-purpose image conversion program, which
|
||
is fitting considering that it was spawned from an ILBM to PCX converter I
|
||
had written earlier.
|
||
|
||
November 19, 2001
|
||
- Changed FFont to construct a font whose glyphs are all the same height so
|
||
that I don't need to keep track of the height and y-offset of individual
|
||
characters.
|
||
- Fixed the FONTA63 character in zdoom.wad to be a proper copy of the
|
||
underscore character for Heretic/Hexen.
|
||
- Fixed: The Beak's weapon infos did not have their type member filled in.
|
||
|
||
November 15, 2001
|
||
- Changed fog boundary handling so that black fog is treated like diminishing
|
||
light rather than fog, so it will not appear on a boundary.
|
||
- Fixed: The Fortress of Mystery appeared on the intermission map when
|
||
entering E2M8 instead of E2M9. It will also stay on the map after you
|
||
finish it now.
|
||
- Fixed: When using the changemap command to switch episodes in Doom 1, only
|
||
the episode just finished would be shown during the intermission.
|
||
- Renamed CONCHARS to CONFONT.
|
||
- Merged all of the FONTB?? graphics in zdoom.wad into a single DBIGFONT
|
||
lump, partly to save space but mostly because I wanted an example font to
|
||
include with imagetool when I distribute it.
|
||
- After inspiration struck, I added some code to make fog boundaries look
|
||
better: At a two-sided line where the front fog is different from the back
|
||
fog, draw a solid-colored window of varying translucency in the color of
|
||
the front fog color. This is effectively what creating a new colormap for
|
||
each fog color already does for sprites and one-sided lines.
|
||
|
||
November 13, 2001
|
||
- Added FON2 creation support to imagetool. Like FON1, this is a font format,
|
||
but this one supports characters of varying widths and a custom palette.
|
||
|
||
November 12, 2001
|
||
- Tool work: Added pcx, bmp, and patch loading support to imagetool.
|
||
- Fixed: Screen shots did not capture the palette blend.
|
||
- Added the ability for HUD messages to resize themselves when the screen
|
||
size changes.
|
||
- Removed precachefonts command from ACC, as I decided it was not needed.
|
||
|
||
November 10, 2001
|
||
- Implemented the setfont command.
|
||
- Fixed: HUD messages were not saved with save games.
|
||
- Added decal teleporting support to TeleportInSector so that decals can move
|
||
between the different shafts of a fake 3D elevator. Then I commented it out
|
||
because doing it right is too hard.
|
||
|
||
November 9, 2001
|
||
- Added the ACS functions setfloortrigger, setceilingtrigger, getactorx,
|
||
getactory, and getactorz. The first two are to make convincing fake 3D
|
||
lifts possible. The last three are there because they have been requested
|
||
a lot.
|
||
|
||
November 8, 2001
|
||
- Fixed: Elevators did not set floordata or ceilingdata, so you could not
|
||
tagwait on them.
|
||
- Improved sprite clipping by fake flats further. Now you can look into an
|
||
underwater area through a window, and the sprites in it will still show
|
||
when your view is above water.
|
||
|
||
November 7, 2001
|
||
- Fixed: Autosaves do not become the default quicksave if the player has not
|
||
saved a game manually yet.
|
||
- FMOD 3.33 also has some division by zero issues, so now I'm back to using
|
||
FMOD 3.40--but this one was updated with some more checks that seem to be
|
||
keeping the division errors away. Unfortunately, the updated FMOD 3.40
|
||
isn't available for Linux yet.
|
||
- Fixed: G_InitNew() was calling StaticGameSet(), but that only needs to be
|
||
called during startup. Calling it again later can cause some Dehacked
|
||
changes to be undone.
|
||
- Fixed: Swimming into a one-sided line while in water would try to jump you
|
||
out of the water. Since there's nothing on the other side of the line,
|
||
that's rather pointless.
|
||
- Made R_DrawSkyBoxes() set the camera properly.
|
||
- Changed most instances of camera->Sector in the renderer with viewsector
|
||
so that deep water clipping can behave as expected when using a chase
|
||
camera that moves out of the same sector as the camera.
|
||
- Improved clipping of sprites by sloped fake floors. To be completely
|
||
correct, the clip line should be sloped with the floor, but it's still
|
||
horizontal because I am feeling lazy right now. At least things don't
|
||
appear and disappear as you move around underneath a sloped fake floor.
|
||
- Added a sound to A_HeadAttack() so that the Cacodemon can be given a melee
|
||
sound through SNDINFO.
|
||
- Changed A_CPosAttack() to use self->AttackSound instead of hard-coding it
|
||
to "chainguy/attack". Now the WolfSS can have a different attack sound.
|
||
- Fixed: secplane_t::FlipVert() was wrong. It needs to negate everything, not
|
||
just c and d. This prevented sloped fake floors and ceilings from
|
||
displaying properly.
|
||
|
||
November 6, 2001
|
||
- Added things 9983 and 9982 to perform actions when going below and above
|
||
fake ceilings.
|
||
- Added some more Transfer_Heights modifiers: 16 causes the control sector
|
||
to have no effect at all on the target sector. With this modifier, it is
|
||
used solely for triggering sector actions. 32 causes the control sector to
|
||
not effect the lighting in the target sector.
|
||
- Added two new sector actions: SecActEyesDive (9993) and SecActEyesSurface
|
||
(9992). When used in conjunction with TeleportGroup, these can produce the
|
||
Duke3D silent teleport to and from underwater sectors effect.
|
||
- Changed TeleportGroup so that if group_tid is 0, it treats the activator
|
||
as the group.
|
||
|
||
November 3, 2001
|
||
- Made some changes to P_ExplodeMissile() so that missiles exploding on a
|
||
corner are more likely to leave behind decals.
|
||
- Added the cvars cl_bobscale and cl_stillbob to control the amount of view
|
||
bob when moving and standing still, respectively.
|
||
|
||
November 2, 2001
|
||
- Improved the accuracy of EV_SilentLineTeleport(). The original function was
|
||
written as if the actor was always exactly on the line, so it calculated a
|
||
destination position directly on the line and fudged with it to get the
|
||
player on the correct side. It's better to find the closest point on the
|
||
source line and the corresponding point on the destination line and then
|
||
offset off of the destination line so that the actor is in the same
|
||
relative position as it is to the source line. This eliminates the need for
|
||
fudging, and I can't get stuck in the wall when teleporting in a sample
|
||
level anymore.
|
||
- Why does the Doom map format have to store sectors only implicitly? Because
|
||
of this, people can create maps with oodles of unclosed sectors. I've
|
||
already had to modify my P_Trace() function because of this. Now I found
|
||
out that they can cause problems if I don't always divide front space in
|
||
R_RenderBSPNode(): I made it conditional because I assumed it was
|
||
unconditional because of precision problems with using polar coordinates to
|
||
perform the transformations. When sectors are well formed (and most are),
|
||
having the check causes no visible problems. But when sectors are badly
|
||
formed, it is possible that sprites in the sectors will not be drawn because
|
||
the sectors do not actually get visited, even though the space they occupy
|
||
is drawn.
|
||
- Changed the Doom fullscreen HUD so that health and armor counts are drawn
|
||
at a location based on the actual font height.
|
||
- Fixed: DCanvas::DrawShadowedMaskedBlock and ::ScaleShadowedMaskedBlock did
|
||
not check to make sure the shadow was drawn inside the screen. Now they do,
|
||
and if the shadow lies partially off the surface, the image and shadow get
|
||
drawn in two passes instead of one.
|
||
|
||
October 31, 2001
|
||
- Fixed: The bloodbath announcer was not entirely silent in single player
|
||
games.
|
||
- Fixed AImpactDecal::SpreadLeft() and SpreadRight() so that they can spread
|
||
across adjacent loops without getting stuck in an infinite loop.
|
||
- Fixed: Corpses can fall to the bottom of deep water now.
|
||
- Fixed a bug in P_Trace() when the trace is on the floor or ceiling and it
|
||
hits a two sided line that blocks it.
|
||
- New: Instant hit weapons can make splashes in liquids, even deep ones.
|
||
The size of the splash is determined by the weapon's puff's mass, so I set
|
||
several of the puff actors to have masses of 5 so their trails only leave
|
||
small splashes instead of big ones.
|
||
- Renamed DThinker::RunThink() to Tick().
|
||
|
||
October 30, 2001
|
||
- Finally added a playmovie command to ACS.
|
||
- Fixed: FDecalLibrary::GetDecalByNum() would only find the decal if it was
|
||
on the right-most branch of the tree.
|
||
- Changed the subsector pointer in AActor to a sector pointer. The only place
|
||
where it wasn't used to get the actor's containing sector was an early-out
|
||
in P_CheckSight(). Since the sight checking in ZDoom uses the blockmap
|
||
instead of the BSP, I doubt it provided much benefit, especially since it
|
||
was rarely taken.
|
||
|
||
October 29, 2001
|
||
- Put back some code that lets you see underwater areas through windows. It
|
||
is not perfect and cannot be used at the same time that you can see the
|
||
abovewater area of any deep sectors.
|
||
- Fixed: The back side of a mirror could clip sprites in front of it because
|
||
the determination of which side of a line a sprite is on was being done in
|
||
world space. The solution is to use camera space for the determination
|
||
instead. Since I was already calculating all the necessary values, the
|
||
solution mostly involved extending vissprite_t and drawseg_t to hold the
|
||
extra information.
|
||
- Fixed: Sectors set to drop their ceilings after 30 seconds would not go
|
||
back to their original height if they were blocked while closing.
|
||
- Added the con_ctrl_d cvar so that I can set it to "quit" and press Ctrl-D
|
||
at an empty console prompt to quit the game.
|
||
- Added the exit command as a synonym for quit.
|
||
- Added the defaultbind command.
|
||
|
||
October 27, 2001
|
||
- Made a slight optimization for sprite drawing by moving the floorclip
|
||
clipping out of R_DrawMaskedColumn and into R_DrawSprite.
|
||
- Fixed: Spawning objects in a swimmable water area would create a splash on
|
||
the water surface.
|
||
- Fixed: Passing +map at startup just prints a warning to the console instead
|
||
of quitting altogether if the map could not be found.
|
||
- Added new options to Transfer_Heights: By setting the second argument to 2,
|
||
only the deep water effect will be created. By setting it to 4, the fake
|
||
floor and/or ceiling will only show if it is "inside" the sector, but only
|
||
if the real sector's and the control sector's corresponding planes are not
|
||
sloped. This also effects the texturing in that the control sector's
|
||
textures are used for both the top and bottom of the surface they correspond
|
||
to, and the sector being faked keeps its textures for its normal range.
|
||
Set the first argument to 8, and it will be made into water even without a
|
||
WaterZone actor in the control sector. These can be added together to
|
||
combine effects. So Transfer_Heights (tag, 12) should produce an effect
|
||
similar to Doom Legacy's 280 linetype.
|
||
- Added the test and eval console commands. Test is like if/then/else, and
|
||
eval evaluates an expression, possibly storing the result in a variable.
|
||
This should take care of all the major functionality the console was
|
||
missing before.
|
||
|
||
October 26, 2001
|
||
- Made the atexit cvar a command that registers different commands to
|
||
execute when the game quits.
|
||
- Cfg files listed at the start of the command line now get executed as if
|
||
they had appeared after +exec. (i.e. "zdoom foo.cfg" works just like
|
||
"zdoom +exec foo.cfg")
|
||
- Added the pullin command so that .cfg scripts loaded at startup can cause
|
||
one or more wads to be loaded. (They "pull in" the wads they need.)
|
||
- Changed the exec command so that it can execute more than one file.
|
||
- Added the addkeysection and addmenukey commands for people writing console
|
||
scripts.
|
||
|
||
October 25, 2001
|
||
- Added ACS commands fadeto, faderange, and cancelfade to do some palette
|
||
blending stuff under scripted control.
|
||
- Added BloodSplash, BloodSplashBase, SlimeSplash, and SlimeChunk classes
|
||
for anyone who wants to use them in a TERRAIN lump.
|
||
- Added the atexit cvar. It gets executed like an alias when the game quits.
|
||
- Added archivecvar command to force user-defined cvars to save themselves
|
||
in the config file.
|
||
- Added snd_waterreverb cvar to disable the use of underwater reverb.
|
||
- Added support for specials with variable argument counts to ACC so that
|
||
specials which have had parameters added (such as Thing_Spawn) can still
|
||
be used without the extra parameter.
|
||
- Added TeleportOther (76) and TeleportGroup (77) specials.
|
||
- Added autosave capabilities. Up to four autosaves are kept at a time,
|
||
and they get created whenever a player enters a map. The level designer
|
||
can also place them at strategic locations in the level using special
|
||
15 or linetypes 348/349.
|
||
|
||
October 24, 2001
|
||
- Fixed: The level name shown on the automap included the hours of the
|
||
current time if the map was in a hub.
|
||
- Added Line_Horizon to DOOMX/HERETICX as linetype 337.
|
||
- Added am_showitems cvar to show the item count on the automap.
|
||
- Added pattern matching support to D_AddConfigWads().
|
||
- Fixed: Variable substitution only worked for the last argument of a
|
||
command line.
|
||
- Removed FCommandLine::AllButFirstArg(). It did not handle variable
|
||
substitution, and since you can escape quotes inside strings, it's not
|
||
really neccessary, either.
|
||
- Added a generator line for the Spider Mastermind to DECALDEF.
|
||
- Added some division-by-zero checks to the projection calculations in
|
||
R_AddLine(), R_CheckBBox(), and R_RenderBoundWallSprite().
|
||
|
||
October 23, 2001
|
||
- Added Scale and Decal properties to Dehacked thing sections. Added Decal
|
||
property to Dehacked weapon sections.
|
||
- Changed the scalars in DECALDEF to be 1-based instead of 64-based. This
|
||
lets me silently expand its range in the future without breaking existing
|
||
decal definitions.
|
||
- Fixed: fixedlightlev was being applied to skies. It looks weird to see a
|
||
torch lighting up the entire sky, so skies should ignore the setting of
|
||
fixedlightlev.
|
||
- Fixed the scaled status bar. I was simply forgetting to add the image
|
||
offsets in FBaseStatusBar::DrawImage() before calling CopyToScreen().
|
||
- Added code to let decals move with sliding and rotating polyobjects.
|
||
- Fixed: The wait console command waited one tic too few.
|
||
- Fixed a resizing problem with playing movies windowed.
|
||
- I think checkinventory, giveinventory, and takeinventory are fully working
|
||
now.
|
||
- Made checkinventory not crash in open scripts.
|
||
- Made AInventory::TryPickup() public so that I can use it with
|
||
giveinventory and avoid printing a message about the pickup.
|
||
- Passing an amount of 0 to takeinventory now removes all of that item
|
||
from the player's inventory.
|
||
- Made TakeInventory work in open scripts.
|
||
- Removed the Health option from GiveInventory.
|
||
- Changed DamageThing so that negative damages cause it to act like
|
||
HealThing.
|
||
- Added OldStyleID() methods to AFist, APistol, AStaff, and AGoldWand.
|
||
|
||
October 22, 2001
|
||
- Made clearinventory work in open scripts.
|
||
- Made ambientsound use CHAN_AUTO instead of CHAN_BODY, so you can have
|
||
multiple overlapping ambientsounds.
|
||
- Fixed: Setplayerproperty was using the set property as the who property.
|
||
- Fixed: Closing the console when the overlay automap is active and the view
|
||
window does not cover the width of the screen would not redraw the border.
|
||
- Fixed: The overlay automap did not center itself inside the view window.
|
||
- Fixed: When neverswitchonpickup was changed during a game, it would always
|
||
become false in the playerinfo struct.
|
||
- Made the rocket explosion style modifiable through dehacked in the misc
|
||
section. Use the keys "Rocket Explosion Style" and "Rocket Explosion Alpha"
|
||
to change it.
|
||
- Changed the sky drawer so that it properly tiles skies of any height and
|
||
not just those that are a power of 2.
|
||
- Changed R_InitSkyMap() so that tall skies will always be aligned at the
|
||
top of the screen when looking all the way up. Now 240-tall skies will
|
||
actually be useful, since so many people seem to think skies need to be
|
||
that tall to be considered "tall" even though anything taller than 128
|
||
pixels is "tall".
|
||
- Fixed: Files specified at the start of the command line were treated as
|
||
if they were listed after a -bot parameter.
|
||
- Modified DArgs::GatherFiles() so that it can handle files listed after
|
||
multiple instances of the same parameter (e.g. "-file 1.wad -file 2.wad")
|
||
- Changed ConsiderPatches() so that it tries appending both .deh and .bex to
|
||
files listed after both -deh and -bex parameters, which means the two
|
||
parameters now behave identically and are just synonyms for each other.
|
||
- Made a fix to BaseFileSearch() when it retries with an extension.
|
||
|
||
October 20, 2001
|
||
- Added range checks to R_SetVisibility to prevent visual glitches caused by
|
||
too high visibility/fov combinations.
|
||
- Made r_visibility unchangeable in netgames.
|
||
- Made FOV changes get sent through the net interface, so they can be
|
||
recorded in demos, and also so that they can be restricted with the new
|
||
sv_nofov cvar.
|
||
- Fixed: Bool cvars (such as sv_nomonsters) would change their associated
|
||
serverinfo var without going through the network.
|
||
- Fixed: The Doom status bar would not update the arms/frags area when the
|
||
deathmatch cvar is changed during the game.
|
||
- Fixed: Player corpses could still make the grunt sound when they hit the
|
||
ground.
|
||
- Fixed: StreamSong would always play at full volume until snd_musicvolume
|
||
changed because it kept its own internal copy of the volume that was not
|
||
updated with the actual volume until the cvar was changed.
|
||
- Made crushing ceilings call PlayCeilingSound() again, but only if the
|
||
ceiling is not playing a looping sound. This fixes the almost silent crusher
|
||
in Doom2 MAP04 that had become totally silent.
|
||
- Fixed: The weapon sprite did not flash when invisibility was about to run
|
||
out.
|
||
- Made DECALDEF generators support using "None" to remove decals from actors.
|
||
- Added fullbright flag to the BFG lightning and plasma scorch decals.
|
||
- Fixed: Ambient things could not be spawned silent, because they start
|
||
themselves with PostBeginPlay, which gets called after Deactivate
|
||
when their dormant bit is set. So they would stop themselves and then
|
||
immediately start again. Using BeginPlay fixes this, since it gets
|
||
called before the dormant Deactivate.
|
||
- Fixed: S_RelinkSound() should not be able to move repeating sounds to
|
||
positioned sounds. This fixes removing continuous ambient sound things
|
||
from not stopping the sound immediately.
|
||
- Fixed: Deactivating a continuous ambient sound thing would not stop the
|
||
sound until it was either overridden by more important sounds or disappeared
|
||
out of range.
|
||
- Fixed: The bex include directive ignored the file name if it appeared in
|
||
files that mark line endings with CR/LF instead of just LF. (AFAIK, that's
|
||
all bex files that exist.) For files that just use LF, it would try to
|
||
include the file but crash.
|
||
- Win32Video::EnumDDModesCB() now rejects modes whose widths are not
|
||
multiples of 8, because there are various places in the source that assume
|
||
this to be true, and I have no alternative code (or desire to write such
|
||
code) to handle cases when this is not true. I don't know of any standard
|
||
modes that would be rejected by this, but it's better to be safe than sorry.
|
||
- Fixed: Viewwindows with widths that are not divisible by 16 could crash
|
||
when doubling pixels horizontally, because the MMX routines write to
|
||
quadwords at a time. Now the non-MMX code is always used in such cases,
|
||
since they are rare (only when the window is the full width of the screen
|
||
and the screen width is not a multiple of 16).
|
||
- Removed vid_bufferarea and related code to switch between buffered and
|
||
unbuffered display based on translucent areas visible in the last frame.
|
||
- Fixed: Savegames did not remember which levels had been marked visited for
|
||
the Doom 1 intermission screen.
|
||
- Fixed: Actors' alphacolor was not serialized.
|
||
- Fixed vid_setmode not always resizing the window to a reasonable size under
|
||
Win ME because the OS sends out WM_GETMINMAXINFO before performing the
|
||
resize with SetWindowPos().
|
||
|
||
October 19, 2001
|
||
- Added the ability for DDrawFB to draw to a system memory surface and then
|
||
blit it to the primary surface. This can greatly improve performance, both
|
||
because the video card can write to its own memory faster than the CPU, but
|
||
also because the next frame can start rendering in a separate surface while
|
||
the blit is underway. The net result is that drawing to system memory is
|
||
only a little slower than drawing directly to video memory (if at all), and
|
||
there is really no reason for me to support writing directly to the primary
|
||
surface any more. I can even run 1400x1050 at 35 fps, though it is somewhat
|
||
jumpy, and it does get slower if the scene is too complicated. But just
|
||
being able to run it full speed at all at that high a resolution rocks! Even
|
||
a 300 MHz P2 can run the standard levels at a full 35 fps at 800x600, which
|
||
it couldn't before.
|
||
|
||
October 18, 2001
|
||
- Need to fix windowed 256 color updating for systems that cannot lock the
|
||
primary surface. (result is DDERR_CANTLOCKSURFACE when you try)
|
||
- Added a performance counter for blitting the frame buffer to the screen and
|
||
discovered that it is a real performance sink. When no pixel format
|
||
conversion is involved, it should be no slower than wall drawing, right? Well,
|
||
it's about twice as slow.
|
||
- Improved performance at 1024x768 by using a pitch larger than the width for
|
||
the underlying SimpleCanvas at that resolution (so that successive pixels
|
||
drawn in columns are not exactly 1k apart and can make better use of the
|
||
cache). The result is that wall pixels take about 5.4 cycles to draw, which
|
||
is in line with what the other resolutions manage.
|
||
|
||
October 17, 2001
|
||
- Did some performance tests at different resolutions and discovered something
|
||
very weird: up to and including 800x600, wall drawing ranges between 4.5 and
|
||
5.2 cycles/pixel. But at 1024x768, it jumps up to a whopping 18 cycles per
|
||
pixel. Even stranger, 1280x1024 only uses 7 cycles/pixel, and 1400x1050 takes
|
||
just 5.5 cycles/pixel. (These numbers include all overhead such as traversing
|
||
the BSP and creating visplanes, not just the time actually spent stuffing
|
||
pixels to the framebufer.)
|
||
- Changed the mode iterator to allow resolutions taller than 1024 pixels,
|
||
since there is nowhere in the source that this restriction exists. (There
|
||
is a limit of 1200 pixels tall, but this is easily changed with a #define.)
|
||
- Massaged the assembly output of vlinec4 to produce vlinetallasm4. This
|
||
new function is about 7% faster than provlineasm4 and is not limited to
|
||
256 pixel tall columns, so I stopped using provlineasm4. I don't know
|
||
how it compares to vlineasm4 on a Pentium, but my guess is that vlineasm4
|
||
is faster on such a machine. It's probably worth also noting that contrary
|
||
to my initial belief, self-modifying code was essential to getting this
|
||
function to perform well. Also, I did not even bother trying to optimize
|
||
it for a Pentium, just Pentium Pro and above. Moving things around to help
|
||
pairing on a Pentium actually reduced performance on this P3-M.
|
||
|
||
October 15, 2001
|
||
- Wrote C versions of vlineasm1 and vlineasm4. On a P3, vlinec4 performs
|
||
about half way between vlineasm4 and provlineasm4. P2 performance is
|
||
probably similar.
|
||
- Got rid of all the 2-column drawers. Whatever performance improvements
|
||
they might have been able to offer was negated by the complexity of the
|
||
code neccessary to use them. This let me greatly clean up rt_draw4cols()
|
||
and actually make it readable.
|
||
|
||
October 12, 2001
|
||
- Fixed: I_InitMusic() was not called if -nosound or -nosfx was passed.
|
||
- Changed visplanes so that the bottom array stores the pixels just below
|
||
the plane--a simple semantic change that lends itself to a few more
|
||
optimization chances elsewhere in the engine, since it unifies the way
|
||
top and bottom arrays are handled everywhere.
|
||
- Enhanced wallscan so that it can get a texture column using any function.
|
||
This lets me use it for layered skies.
|
||
|
||
October 10, 2001
|
||
- Drawing of a single sky layer now uses wallscan.
|
||
- Removed the use of dc_mask from all of the non-wallscan column drawers,
|
||
since they are only used for masked columns, which never repeat and hence
|
||
never need masking.
|
||
- Tried out the new code on a P2-300. It is also slightly faster. Drawing a
|
||
wall covering the entire screen is about 10ms faster at 800x600 on it. This
|
||
made me decide to do away with BlastColumn, R_RenderSegLoop1, and
|
||
R_RenderSegLoop2. There is just one R_RenderSegLoop now, using vlineasm4.
|
||
|
||
October 9, 2001
|
||
- Added Build's vlineasm4 and associated code to speed up wall drawing.
|
||
Surprisingly, it only offers a marginal improvement on this P3-866 equipped
|
||
notebook: The higher resolutions are only a few FPS faster than
|
||
r_columnmethod 1. When I get a new monitor, I will have to try it out with
|
||
my main system, since it still has a P2-350. I think the biggest benefit
|
||
should be for people with Pentium-class or less processors.
|
||
Since it is faster, I'll keep it. I also improved it so that it works with
|
||
textures taller than 256 pixels (or should, I haven't tested).
|
||
|
||
October 4, 2001
|
||
- Fixed fullscreen video playback so that it does not minimize the game
|
||
window immediately after the video is stopped.
|
||
- Improved dragging the ZDoom window around by making the window procedure
|
||
pay attention to WM_PAINT messages and redraw the screen as needed. Making
|
||
WM_SIZE invalidate the client rect also lets it redraw as the window is
|
||
shrinking.
|
||
|
||
October 3, 2001
|
||
- Fixed DDrawFB::CreateSurfacesComplex() so that it can retry without
|
||
requesting video memory. This lets it work with Mode X, so presumably it
|
||
will also let it work with old video cards that lack proper DirectDraw
|
||
support.
|
||
- Commented out the GammaControl stuff in win32video.cpp. Too many people
|
||
complained about not being able to compile it (get a newer DX SDK!), and
|
||
it does not provide me much benefit when working with paletted displays
|
||
anyway. Nor was it ever actually implemented.
|
||
|
||
October 2, 2001
|
||
- Fixed: DROPPED bit was defined twice in DEHSUPP.
|
||
- Updated my source files with the new BSD-ish license.
|
||
- Renamed p_spark.cpp to g_shared/a_spark.cpp.
|
||
- Removed d_items.cpp and d_items.h. They have been obsolete ever since I
|
||
changed the give command to accept class names.
|
||
- Changed the randomized sound names in DEHSUPP from their individual names
|
||
to their new base name. (i.e. grunt/sight1, 2, and 3 all become grunt/sight)
|
||
- Fixed a typo in DEHSUPP: gatso/death should have been fatso/death.
|
||
|
||
October 1, 2001
|
||
- Added a playmovie command to play a file using DirectShow. Currently, it
|
||
works best with windowed mode.
|
||
|
||
September 27, 2001
|
||
- Added Line_Horizon special to extend a sector's floor and ceiling to
|
||
infinity--should be useful for skyboxes. It is not meant for use with
|
||
slopes, so don't do that.
|
||
- Fixed: ceilingclip/floorclip generation in R_DrawSkyBoxes was wrong for
|
||
unused portions of the sky box's visplane (when pl->top[x] == 0xffff).
|
||
This could cause problems when taking the snapshot for savegames.
|
||
- Fixed: Quicksaving would continue to ask for a save slot until a normal
|
||
save had been done.
|
||
- Fixed: Bad decal texture coordinates could crash the game. These were
|
||
generated when the camera gets extremely close to a decal, so I chose to
|
||
use the same tactic I used with masked mid textures and not render them
|
||
at all if they get too close. I think the only time something like this
|
||
becomes a real issue is when somebody is noclipping around the level.
|
||
|
||
September 26, 2001
|
||
- Fixed P_LoopSides() to not trash memory when loading a map with a
|
||
single-sided line that does not attach to anything at its right end. (E1M3
|
||
is one such map.)
|
||
- Fixed decals not drawing their full height except when they were on upper
|
||
textures; BlastColumn was storing wallbottom wrong.
|
||
- Fixed inconsistant usage of ceilingclip. It is supposed to store the top
|
||
good y, but some places still treated it as the y just above the first good
|
||
y, as it was in the original renderer.
|
||
- Fixed the GCC version of qinterpolatedown16short(). It wrote 2 more
|
||
entries than it was supposed to and could start writing one entry before
|
||
it was supposed to.
|
||
- Previous log entries were accidentally lost when I was improving the
|
||
todos/fromdos scripts. Now only the files that have changed get copied
|
||
across, and I can avoid rebuilding every source file each time I transfer
|
||
the code between partitions. Under Linux, this is a big deal, because GCC
|
||
is so slow.
|
||
|
||
September 17, 2001
|
||
- Added cl_missiledecals cvar to turn off decals left behind by missile
|
||
explosions.
|
||
- Added cl_bloodsplats cvar to turn off blood splats while leaving other
|
||
decals alone.
|
||
- Added -timerdelay parameter to specify how fast the game timer tics (in
|
||
milliseconds). This is just here so that when I occasionally get demos
|
||
illustrating problems, I can easily fast forward through them.
|
||
- Made A3D the default for snd_3d again, because A3D has one more hardware
|
||
channel than DirectSound on my Vortex2 and because it seems to work
|
||
better than DirectSound.
|
||
- Changed I_StartSound3D() so that it starts sounds on a specific channel
|
||
instead of using FSOUND_FREE, because it loses sounds with DirectSound
|
||
if I let FMOD pick a channel. Oddly, FSOUND_FREE with A3D works fine.
|
||
[Nevermind, that doesn't work with DirectSound, either. It seemed to be
|
||
working the first time I tried it, but when I tried again later, it
|
||
was not working anymore.] [Another footnote: A3D seems to position the
|
||
sounds wrong that DirectSound does not play. What's going on?]
|
||
- Let I_SetChannels() change the number of channels available so that all
|
||
the available hardware channels can be used if using 3D audio.
|
||
- Made CPU speed detection more accurate.
|
||
- Added underwater reverb for hardware 3D sound.
|
||
- Updated sound code for FMOD 3.4.
|
||
- Fixed timer resolution checking in WinMain--my parentheses were misplaced.
|
||
- Put SectorSilencer back at doomednum 9082. I don't know why I had changed
|
||
it to 9002.
|
||
|
||
September 15, 2001
|
||
- Fixed: Monsters that reached the end of a patrol path did not have their
|
||
reactiontime reset, so they would wait a very long time before attacking.
|
||
- Fixed: STYLE_Shaded ignored special colormaps like invulnerability.
|
||
- Added support for autoloading wads through the config file. Create a
|
||
section called [Game.Autoload] and place "Path=<file>" beneath it for each
|
||
file to be automatically loaded. They are loaded after the files in the
|
||
skins directory and before any files on the command line. Game can be
|
||
Global to load the files for any game. Global files are added before game-
|
||
specific files.
|
||
- Fixed StreamSong when using 3D sound: The stream was not created with
|
||
FSOUND_2D, so it was being positioned in the world.
|
||
|
||
September 14, 2001
|
||
- Made the ACS spawn and spawnspot commands automatically prepend A to their
|
||
type names. They remain untested, however.
|
||
- Added decals for all remaining Doom things. Heretic is next.
|
||
- Fixed pitch calculation in P_TraceBleed() when a missile's velocity is used
|
||
to determine pitch.
|
||
|
||
September 12, 2001
|
||
- Added decal stretchers, sliders, combiners, and colorchangers. Also added
|
||
a few more decals.
|
||
|
||
September 11, 2001
|
||
- Fixed FDecalLib::GetDecalByNum() and ::GetDecalByName() so that they do not
|
||
crash if the decal is not found.
|
||
- Tried putting back in the BSP-based sight checking code that was in the
|
||
Linux Doom 1.10 source, and the result was quite surprising. Using the BSP
|
||
to check sight was actually slower than using the blockmap, sometimes
|
||
significantly so--Vrack 2 spent between 4 and 6 times as much time checking
|
||
site using the BSP as it did without. In the best case, the BSP routines
|
||
were about as fast as the blockmap ones, so I took the BSP routines back
|
||
out, because they offer no benefit over the Hexen code I had been using for
|
||
some time now.
|
||
- Fixed: Maps with starts for players 5-8 would trample over memory
|
||
when saving the starts for those players.
|
||
- Added blood splats for instant hit weapons.
|
||
|
||
September 10, 2001
|
||
- Made alpha affect STYLE_Shade.
|
||
- Fixed: rt_shaded4cols sometimes drew texels too dark because it
|
||
calculated the value of fill wrong.
|
||
- Fixed: Decals that used picnums (i.e. all of them) could not be flipped
|
||
horizontally.
|
||
- Stopped using actors' memory locations as their phase shift for float
|
||
bob motion. This works fine for single player, but in multiplayer,
|
||
there's no way to ensure that the same actor will have the same phase
|
||
on different machines. Now I use the random number generator instead.
|
||
|
||
September 8, 2001
|
||
- Added decal faders so that decals that are likely to bog things down
|
||
(such as the plasma rifle's) can disappear sooner than if they wait for
|
||
cl_maxdecals to be hit and get cycled out. [Edit: I only use these for
|
||
special effect decals right now.]
|
||
- Added the ability for missiles to leave behind decals on walls.
|
||
- Fixed a sub-pixel alignment problem for vertically flipped sprites.
|
||
- Fixed: Adding bots and then changing the map could crash because the bot's
|
||
"player" was still carrying around the actor from the previous level.
|
||
- Bumped the barrel respawn time back up to 1050 tics--forgot I had dropped
|
||
it down to 50 for testing.
|
||
- Added support for loading sounds from RFF files so that I can have the
|
||
Bloodbath announcer.
|
||
|
||
September 7, 2001
|
||
- Fixed: Dehacked patches that set weapons to ammo type 5 (what was once
|
||
am_noammo) would use am_crossbow, because that is type 5 now.
|
||
|
||
September 5, 2001
|
||
- Fixed: Trying to alias a command through the .ini file would crash
|
||
because the game would actually try to do it instead of giving a warning.
|
||
|
||
September 4, 2001
|
||
- Added the falling splat sound to A_PlayerScream().
|
||
- Changed skin semantics in AActor::SetState() again so that players can
|
||
actually burn because the burn states use the FDTH sprite instead of
|
||
the normal player sprite. Now, if the actor is not a player, or the
|
||
player does not have a skin, or the state's sprite is not the same as
|
||
the sprite the player was spawned with, the state's sprite will be
|
||
used. Otherwise, the skin's sprite will be used.
|
||
- Fixed burning and icy deaths to not crash.
|
||
- Fixed a stack overflow in Heretic/Hexen that could happen after death
|
||
because A_Chase and A_Look would repeatedly cause the other function
|
||
to execute, ad nauseum.
|
||
- Added Hexen's Ice Guy/Ice Golem.
|
||
- The SkyboxViewPoint's angle is now used to adjust the yaw when drawing
|
||
a skybox. This means you can rotate a skybox by rotating its viewpoint
|
||
(which is courrently only possible with an actor mover and several
|
||
overlapping interpolation points).
|
||
- Added simple Dolby Pro Logic surround support to s_sound.cpp using code
|
||
from a post on the message board.
|
||
|
||
September 3, 2001
|
||
- Fixed: The alias command will no longer try to set or remove aliases for
|
||
normal console commands.
|
||
- Fixed an error in C_RemoveTabCommand() that moved one extra name down
|
||
at the end of the array.
|
||
- Added Hexen's Serpent/Water Lurker, Centaur, Demons, and mana.
|
||
|
||
September 1, 2001
|
||
- Reintroduced MF_CRASHED, this time as MF3_CRASHED, so that I don't need a
|
||
special case to crash FireDemons that die on the floor.
|
||
- Added Hexen's FireDemon/Fire Gargoyle/Imp, just because it's been so long
|
||
since I added anything from Hexen.
|
||
|
||
August 29, 2001
|
||
- Changed ADecal::StickToWall() to add decals to the end of the list so that
|
||
new decals get drawn on top of old ones.
|
||
- Fixed: Actors with STYLE_None were still being projected to the screen,
|
||
needlessly wasting time.
|
||
|
||
August 28, 2001
|
||
- Fixed: Quicksaving into an existing slot would rename the quicksave to the
|
||
name of whatever was saved most recently instead of keeping the name
|
||
of the quicksave slot unchanged.
|
||
- Fixed: PWADs that replaced sprite frames that originally only had a rotation
|
||
0 with multiple rotations would only show the first rotation.
|
||
- Fixed: When the light to dark part of R_CalcTiltedLighting() clamped the
|
||
end of the range, it set lightfiller to a value calculated with
|
||
(NUMCOLORMAPS-1)<<FRACBITS. FRACBITS should have been COLORMAPSHIFT. The
|
||
result was strange colors at best and crashes at worst.
|
||
- Fixed: Shuffling playlists crashed because I failed to clamp the result
|
||
of rand() to the number of songs in the playlist. Whoops!
|
||
- Changed R_SetupFrame() so that the chasecam will only be used if the
|
||
current camera has an image.
|
||
- Changed Win32 mouse grabbing so that when the mouse becomes ungrabbed,
|
||
it will return to the same place it was at before being grabbed.
|
||
- Changed win32/i_input.cpp so that deactivating the window will pause the
|
||
game if the player is not in a network game.
|
||
- Fixed Thing_Destroy to just hurt things enough to kill them instead of
|
||
giving them 10000 damage like massacre does. (This is the way it is
|
||
supposed to be.) For people who liked the accidental behavior, I added a
|
||
second argument that can be used to enable the massacre-like effect.
|
||
- Fixed some entries to doomxlat.txt: Generalized floors and ceilings
|
||
can be set to allow monster activation now. Changed the delays for
|
||
generalized doors so that they more closely match the actual tic counts
|
||
used by BOOM instead of rounding them to the nearest second.
|
||
- Fixed: Palette flashes were not carried over when creating a new frame
|
||
buffer. Also fixed palette flashes being gamma adjusted multiple times
|
||
whenever the framebuffer resources need to be recreated.
|
||
- Fixed: After adding 16 sprite rotations, the player setup menu showed
|
||
the side view instead of the back view.
|
||
|
||
August 20, 2001
|
||
- Fixed: Sprite frames beyond P were always flipped.
|
||
|
||
August 18, 2001
|
||
- Fixed some sizes in Net_SkipCommand()--should elimate some out of sync
|
||
errors.
|
||
- Reimplemented "give weapons" by having it silently spawn each weapon under
|
||
the player and faking a touch so that the player picks it up. Similarly,
|
||
the give command can now be passed actor names and will function like a
|
||
summon that automatically picks up the item spawned.
|
||
- Changed Win32Video::GoFullscreen() and Win32Video::CreateFrameBuffer() so
|
||
that they try harder to allow the game to continue without putting up an
|
||
error. This is not tested very well, because I never had any problems with
|
||
it. Hopefully it will work as desired.
|
||
- Changed DDrawFB::Update() and DDrawFB::Unlock() so that calling Update() when
|
||
the LockCount is greater than 1 no longer bombs out with an error. Instead,
|
||
it sets a flag that tells Unlock() to call Update() the next time LockCount
|
||
would drop from 1 to 0. This allows Update() to be safely used as an Unlock()
|
||
when the image on screen is desired to be updated but it cannot be
|
||
guaranteed that there is only one lock on the surface.
|
||
- Changed R_SetupFrame() to not use floorz and ceilingz to clip viewz, because
|
||
not everything that can be viewed through sets these. (Specifically, moving
|
||
cameras do not touch them, and there's really no reason to bother setting
|
||
them, because they're more for physics than rendering.
|
||
- New: DDrawFB::LockSurf() is not required to successfully lock the frame
|
||
buffer. This should help computers where Alt-Tab did not work before (though
|
||
I cannot test it myself, because I never had problems with it).
|
||
- Remembered why I didn't use DIK_PAUSE as the pause key. DirectInput support
|
||
for the pause key is not universal, so I have to use the standard Windows
|
||
messages to detect it. Moved KEY_PAUSE back to 255, where I had it before.
|
||
- Fixed: Quickload crashed if a game had not previously been quicksaved in the
|
||
same session.
|
||
|
||
August 16, 2001
|
||
- S_StartSound() keeps track of the sound id passed to it before it
|
||
follows links, so now S_GetSoundPlayingInfo() can use that to determine if
|
||
a sound is playing or not without having to resolve links.
|
||
- Changed GrabMouse_Win32() to restrict the pointer to the window's client
|
||
rect and not the window's entire rect so the user can't accidentally click
|
||
buttons in the window's title bar while moving the mouse rapidly.
|
||
- WndProc() now catches WM_MOVE and WM_SIZE messages to better ease
|
||
transitions to/from fullscreen when not using DirectInput.
|
||
- Fixed: The mouse was not being grabbed if DirectInput was selected with
|
||
in_mouse. I just added "NativeMouse = true;" to the beginning of
|
||
I_InitInput() to force I_CheckNativeMouse() to grab the mouse when it
|
||
gets called.
|
||
- Fixed: A_CorpseExplode used the exploding actor as the base for CorpseBit
|
||
frames and not the CorpseBit itself.
|
||
|
||
August 15, 2001
|
||
- Fixed: The wind sound in Hexen played wrong because it used
|
||
S_GetSoundPlayingInfo(), which has no way of following sound links. And now
|
||
that I have random sounds, I can't think of an easy way to make it work with
|
||
those. Fixed it by adding S_IsActorPlayingSomething() and using that
|
||
instead. Changed a few other places that called S_GetSoundPlayingInfo() to
|
||
match.
|
||
- Fixed: Animating flats with an ANIMDEFS lump was broken.
|
||
- Fixed: The values returned by MakeKey() changed with each rebuild because
|
||
I was using the address of get_crc_table() as the CRC table instead of
|
||
actually calling the function to get the CRC table's location. Now klook and
|
||
mlook hash uniquely without any need for twiddling the return value from
|
||
the CRC routine.
|
||
- Changed falling damage so that it can't kill you if you have god mode on.
|
||
- Added the filterstarts mapinfo flag to enable filtering out player starts
|
||
based on skill/gametype.
|
||
- Fixed: Redefining sounds with a random list (whether it had one before or
|
||
not) would cause problems because I was still sorting the S_rnd array--a
|
||
remnant from the time when random lists were found by using binary search
|
||
on S_rnd instead of by following the sound's link field.
|
||
- Added the sv_ihatesounds cvar for people who think they should be able
|
||
to shut up the BFG by landing on the ground. It forces all sounds to
|
||
use channel 1 instead of their preferred channel.
|
||
- Changed crushing ceilings to not restart their sound sequences each time
|
||
they reach the top or bottom of their path.
|
||
- Added a tag argument to S_StopSoundID() so that it only stops sounds in
|
||
a certain group. For my purposes, a group is currently defined as "any
|
||
sectors with the same tag." Actors do not utilise sound groups.
|
||
- Removed S_CheckSound().
|
||
- Added entries to DOOMX and HERETICX to make mirrors and slopes possible
|
||
without using the Hexen map format. Also added some of EDGE's default
|
||
linetypes for scrolling, translucency, and 2-unit floor raising.
|
||
|
||
August 12, 2001
|
||
- Changed the algorithm in W_LumpNameHash() and MakeKey() to a CRC32
|
||
algorithm because it hashes better. The only problem was that using a CRC,
|
||
klook and mlook both have the same CRC value, so I had to twiddle MakeKey
|
||
a little to give them unique keys.
|
||
|
||
August 11, 2001
|
||
- Added support for sprite frames with 16 rotations ala EDGE. The assignment
|
||
of rotations is the same as for EDGE: 1,9,2,A,3,B,4,C,5,D,6,E,7,F,8,G.
|
||
- Changed the music streamers to use FSOUND_Stream_Play3DAttrib because of a
|
||
report that they were actually being positioned with snd_3d true. I can't
|
||
use snd_3d under NT, where I do most of my development, so I don't know if
|
||
it made a difference or not.
|
||
- Fixed music recognition so that wave files can be played as music.
|
||
- Fudged about with slope handling in AActor::RunThink and P_CheckSlopeWalk
|
||
in an effort to let the player walk on some steep slopes that are not very
|
||
far off the surrounding ground. It is a big hack. I do not like it.
|
||
|
||
August 10, 2001
|
||
- Fixed drawing of rotated, scaled, and sloped flats.
|
||
- Fixed: PCD_PRINTNUMBER did not update the stack pointer.
|
||
|
||
August 8, 2001
|
||
- Fixed drawing of scaled and sloped flats.
|
||
- Restored the default radius and height for AInvisibleBridge, since it can no
|
||
longer inherit them from ABridge (which sets them at game start time).
|
||
|
||
August 4, 2001
|
||
- The alwaysfake modification for R_FakeFlat() did not work as intended, so I
|
||
removed it. The changes Lee Killough made for MBF seem to be good enough.
|
||
- Added new Thing_Destroy semantics: a tid of 0 will kill all monsters in the
|
||
level, just like the massacre cheat.
|
||
- Changed the friendly fire check in P_DamageMobj from (target != source) to
|
||
(target->player != source->player). This is just so that voodoo doll damage
|
||
cannot be reduced by turning on teamplay and changing teamdamage.
|
||
|
||
August 2, 2001
|
||
- Fixed: Items were respawning at the location where they were picked up when
|
||
they should have respawned where the level author placed them on the map.
|
||
- Changed the criteria for executing thing death specials from MF_COUNTKILL to
|
||
!MF_SPECIAL. Now you can give a barrel a special, and it will be executed when
|
||
the barrel is destroyed.
|
||
- Added the print command to print a string from the string table.
|
||
- Added the contributed Italian translation.
|
||
- Fixed: OB_UNDEAD said "revevant" instead of "revenant".
|
||
- Added names for all the new keys I found when looking at the dinput.h from
|
||
the DX8 SDK.
|
||
- Fixed: Bindings for kp= would not save in the ini file properly.
|
||
- Added rebind command to change the binding of the key that activated it.
|
||
This is intended to allow the creation of generic sequential aliases. (That
|
||
is, a series of aliases that do something, then bind a key to the next alias
|
||
in the sequence.) Like this:
|
||
alias dumb1 "echo one; rebind dumb2"
|
||
alias dumb2 "echo two; rebind dumb1"
|
||
|
||
July 26, 2001
|
||
- Fixed the TMulScale<x> definitions for GCC.
|
||
|
||
July 25, 2001
|
||
- In I_InitSound(), A3D is no longer the default if snd_3d is true.
|
||
- Moved s_sfxvolume, s_midivolume, and s_musicvolume into their appropriate
|
||
i_* files and integrated them with the functions they called. Also made
|
||
their ranges uniform at [0.0,1.0].
|
||
|
||
July 23, 2001
|
||
- Added some more checks to p_setup.cpp to catch bad maps. In this
|
||
case, the checks were added for ma_sincity.wad, which has two one-
|
||
sided linedefs that have -1 as their front sector and will crash if
|
||
you look at them.
|
||
|
||
June 8, 2001
|
||
- Fixed: Single files added with -file were recorded with their lump
|
||
names instead of the file names so if they got closed, they could
|
||
not be reopened.
|
||
|
||
June 3, 2001
|
||
- Finished TiMidity++ support for the Win32 version. It has two modes
|
||
of operations: 1) Just play as normal. This only works if the sound
|
||
card can play multiple wave streams at a time. 2) The default, have
|
||
TiMidity output wave data through a pipe and use that to fill an
|
||
FMOD stream. This will work with all sound cards and offers a little
|
||
more control over the output. The only problem I could not figure out
|
||
how to solve was how to make TiMidity quit (safely) when ZDoom wants
|
||
it to without modifying TiMidity. The solution I ended up using was to
|
||
have TiMidity start a thread that waits on a special named event and
|
||
calls exit when the event becomes signalled.
|
||
Ironically, the whole purpose of being able to use TiMidity for music
|
||
was that it could provide better music support under Linux, yet the
|
||
Linux side of things has not even been done yet. When I do write it, it
|
||
should work fine with an unmodified TiMidity.
|
||
|
||
June 1, 2001
|
||
- Put back the "<type> operator *()" members of the different cvar
|
||
classes because VC++ always uses a bitwise copy when passing a class
|
||
to a varargs function EVEN IF THE COPY CONSTRUCTOR IS DEFINED. This
|
||
means that something like printf ("%d", dmflags); will actually copy
|
||
dmflags to the stack instead of just dmflag's value. To make it work
|
||
as expected, you need to use printf ("%d", (int)dmflags);. Since
|
||
printf ("%d", *dmflags); is more compact, I decided operator * is
|
||
useful after all.
|
||
I just hope the timidity cvars are the only ones I used with printf
|
||
style functions. I did not see any others when I scanned the source,
|
||
but that doesn't mean I didn't miss any. :-(
|
||
- Changed the name of the variable passed to cvar callbacks from "var"
|
||
to "self" to make its use more obvious.
|
||
- Changed the "<type> operator *()" of the different cvar types to
|
||
"operator <type> ()" so that fetching a cvar's value looks just like
|
||
fetching any other variable's value.
|
||
|
||
May 30, 2001
|
||
- Added snd_midiprecache cvar so that people without GUSes can turn off
|
||
the precaching.
|
||
- Fixed: snd_surround was ignored.
|
||
- Fixed: snd_reset turned off MIDI.
|
||
- Added assembly routines for the different r_detail settings.
|
||
|
||
May 28, 2001
|
||
- Fixed: LEVEL_SPECOPENDOOR opened the door at a speed of 8*TICRATE instead
|
||
of 8*FRACUNIT, about 1872 times slower than it should have been.
|
||
|
||
May 26, 2001
|
||
- Fixed the positioning of y-doubled view windows and changed the x-doubling
|
||
so that it works with the optimized column drawer and does not need the
|
||
columnofs table.
|
||
- Fixed: M_FindResponseFile had a poor parser that considered lots of things
|
||
to be white space that weren't and did not treat quotes specially. Now it
|
||
uses essentially the same parser as the console.
|
||
- Fixed Heretic/Hexen wind specials so that they can apply even when an
|
||
actor's current velocity is 0.
|
||
- Added MF3_NOBLOCKMONST flag to indicate which things can cross
|
||
ML_BLOCKMONSTERS lines (because this is a better way than writing a
|
||
special case for Heretic's APod).
|
||
- Removed MaxSpecialCross, since it isn't needed anymore.
|
||
|
||
May 25, 2001
|
||
- Fixed: ATreeDestructible's default list was missing the mass property.
|
||
- Added Hexen's falling damage code and made the two types of falling damage
|
||
(ZDoom or Hexen) selectable from the level and dmflags. The dmflags falling
|
||
damage selector can now be used to enable falling damage but not to disable
|
||
it to avoid cheating in levels meant to be played with falling damage.
|
||
- Added a new dmflag (sv_nopassover) to make thing z-checking work as it
|
||
did in Doom (that is, not at all, except for missiles).
|
||
- Fixed: Chat macros did not work because Windows sends WM_SYSCHAR instead of
|
||
WM_CHAR when ALT is held down.
|
||
|
||
May 14, 2001
|
||
- Added decal groups and generators to DECALDEF.
|
||
- Fixed potential crash when defining decals with SpawnIDs.
|
||
|
||
May 3, 2001
|
||
- Added lightning scripts, which get executed whenever lightning strikes in
|
||
a level.
|
||
- Added the OutdoorLightning sector special (197) so that skyboxes can
|
||
flash outdoor (as opposed to indoor) lightning without fancy scripts.
|
||
|
||
May 2, 2001
|
||
- Fixed: When teleporting in a non-hub environment, the level's snapshot
|
||
would stay around if the player had saved while in it. This was especially
|
||
obvious if the player was moving to the same map he just left.
|
||
- Enabled key repeating in the menus.
|
||
- Added Hexen's lightning and fixed a bug in Hexen's code: It is not safe
|
||
to assume that the number of sectors that lightning can apply to will
|
||
remain constant through the level (thanks to ACS).
|
||
|
||
May 1, 20001
|
||
- Fixed: The SkyBox member of sector_t was not serialized.
|
||
|
||
April 26, 2001
|
||
- Fixed: When loading savegames, bobbing actors would have semi-random
|
||
heights because they get loaded in a different memory address than they
|
||
were saved at. The actor's address is used to determine its phase shift
|
||
compared to other bobbing actors, so when the actor was restored there
|
||
was no way to restore the original cycle. The solution is to take out the
|
||
bob offset before saving and add it back in when restoring.
|
||
- Added some DrawChar functions to DCanvas.
|
||
- Fixed DCanvas::StringWidth() for high ASCII characters.
|
||
- Changed the arrangement of codes in ESpecialGUIKeys to document the
|
||
standard ASCII codes in the range [1,31].
|
||
- Changed text color escape character from 0x81 to 0x1c, because 0x81 is a
|
||
printable character (though most Windows fonts seem to leave it undefined).
|
||
- Added support for WM_CHAR messages (they get fired off as EV_GUI_Char), so
|
||
now you can do all the standard Windows text manipulation stuff when typing
|
||
text at the console or elsewhere.
|
||
- Fixed: Decals were being saved to savegames but were not restored properly.
|
||
I think this was also causing crash problems after loading savegames.
|
||
- Changed mouse pointer hiding to change the cursor to an invisible cursor
|
||
instead of changing its visibility. This is to ensure that it works
|
||
correctly all the time instead of just most of the time.
|
||
- Removed testing for WM_ACTIVATE in the window procedure. Looking for
|
||
input focus is what we really want to do where the window's active status
|
||
was being checked.
|
||
- Got rid of I_Pause/ResumeMouse() and let the code in i_input.cpp decide
|
||
whether or not the pointer should be visible.
|
||
|
||
April 25, 2001
|
||
- Changed action command handling so that multiple keys bound to the same
|
||
action can coexist peacefully. That is, if you are pressing two keys bound
|
||
to the same action and release one of them, the action will still persist
|
||
until the second key is also released. This is like Quake.
|
||
- Added a check for key bindings to check if a binding contains the substring
|
||
"bind". Only if it does is the binding copied before being executed.
|
||
Previously, the command was always copied, even if it was unneccessary.
|
||
- Changed C_DoCommand()'s argument to a const char *.
|
||
|
||
April 24, 2001
|
||
- Changed command line handling for console commands so that argv and argc
|
||
are not calculated until the first time they are needed.
|
||
|
||
April 23, 2001
|
||
- Added shuffle parameter to playlist command.
|
||
|
||
April 22, 2001
|
||
- Added playlistprev and playlistnext commands.
|
||
- Pressing F1 at the save/load menu replaces the comment with the actual
|
||
file name of the savegame.
|
||
- Added GK_ entries for the function keys.
|
||
- Fixed: Quicksaving without saving/loading first crashed.
|
||
- Added reverse tab-completion to the console, when pressing Shift-Tab.
|
||
|
||
April 21, 2001
|
||
- Fixed: P_GiveAmmo() did not check userinfo.neverswitch before setting the
|
||
pendingweapon.
|
||
- Got rid of P_GiveWeapon() and moved its functionality into AWeapon::
|
||
TryPickup() and added some more AWeapon member functions just so that
|
||
picking up a weapon with sv_weaponstay true will produce all the standard
|
||
pickup feedback. This breaks the "give weapons" cheat, but you can still
|
||
summon them, so how bad is that really?
|
||
- Changed P_GroupLines() to warn about lines that lack frontsectors instead of
|
||
crashing.
|
||
|
||
April 20, 2001
|
||
- Fixed: In Heretic and Hexen, things are supposed to gib at negative half
|
||
their original health.
|
||
|
||
April 17, 2001
|
||
- Fixed: It was possible to stand at the very edge of a steep slope and not
|
||
fall off of it. It is still possible to "balance" by running away from the
|
||
edge, but I think that will take more time to fix than it's work (especially
|
||
if I really do go ahead and rewrite the level geometry collision detection.)
|
||
- Added in-air friction that depends on aircontrol: The greater aircontrol is,
|
||
the more friction affects things. Only affects players.
|
||
- Made level gravity and aircontrol accessible through MAPINFO as well as ACS.
|
||
- Disabled migration of zdoom.cfg. Perhaps it is better to make a clean break
|
||
from the old format than to try and import it if zdoom.ini is not found.
|
||
- Fixed: When the status bar face graphic changed and the status bar was
|
||
scaled, only the area enclosing the new graphic was updated to the screen.
|
||
It should update the entire face box.
|
||
- Fixed: When a dehacked/bex patch changed a level's name, the change was not
|
||
reflected in the level infos, so it did not actually become visible.
|
||
|
||
April 14, 2001
|
||
- Modified S_LookupPlayerSound() to detect player sounds which were defined
|
||
but did not have any valid lumps and automatically try again using male.
|
||
- Added storesavepic cvar.
|
||
- Added sorting to the savegame menus.
|
||
- Finally tested the savegame menus to make sure that they work with more
|
||
save games than are visible and discovered that they didn't, so I fixed
|
||
them so they do work.
|
||
- DCanvas::StringWidth() now knows about '\n' characters and returns the
|
||
length of the longest line.
|
||
- Changed the savegame menus to display games saved with an incompatible
|
||
ZDoom version so that the user has a more convenient means of deleting them
|
||
than by opening the savegames in a hex editor to find out which version each
|
||
one was saved with.
|
||
- Added "name" support to archives. Basically, names are just managed strings
|
||
that allow duplicates to be stored by index instead of duplicating the
|
||
string.
|
||
|
||
April 13, 2001
|
||
- Fixed: Particles were rendered as if they were being drawn to the main
|
||
frame buffer, even when they weren't.
|
||
- Fixed: After deleting the last save game, the menu would think you still
|
||
had a game selected and crashed if you tried to delete again.
|
||
- Discovered the problem with some of Tei Tenga's cameras: They have invalid
|
||
heights that put them above/below the sector. Copied the viewz clamping
|
||
from P_CalcHeight() into R_SetupFrame() to compensate. I don't know why
|
||
they worked in earlier versions.
|
||
- Moved zvox.wad loading to happen after loading the IWAD. There are certain
|
||
places where the IWAD is assumed to be the second wad loaded.
|
||
|
||
April 12, 2001
|
||
- Added a new game menu for Hexen that explains you cannot start Hexen from
|
||
a menu yet.
|
||
- Made the names stored in DEHSUPP case-insensitive.
|
||
- Fixed: R_RenderViewToCanvas() did not lower the Heretic weapons to the
|
||
bottom of the rendered area.
|
||
- Fixed positioning of the save/load menu titles and the save game cursor
|
||
at high resolutions.
|
||
- Fixed: Many ammo types were derived from AInventory and not AAmmo, so
|
||
they did not play the dedicated ammo-pickup sound.
|
||
- Fixed AAmbientSound::Activate() to check that the ambient sound assigned
|
||
to it actually exists. If not, it destroys itself.
|
||
- Changed doomtype.h to use the ANSI <limits.h> instead of defining its
|
||
own limits.
|
||
|
||
April 10, 2001
|
||
- Fixed: FindNextFileA() returns 0 on failure, which is the opposite of
|
||
_findnext(), and I did not realise that when I changed I_FindNext()
|
||
to use the Win32 API function.
|
||
|
||
April 9, 2001
|
||
- Made some code changes to allow for compilation with GCC again
|
||
(specifically, Cygwin's GCC). Fixed a few latent bugs in the process,
|
||
thanks to GCC's more stringent default warnings.
|
||
- Fixed: FHelperThread must have a virtual destructor, which might
|
||
explain why I was having so much trouble with it before.
|
||
|
||
April 7, 2001
|
||
- Added r_drawtrans cvar to allow disabling the drawing of translucent
|
||
things.
|
||
- Fixed: The stretched Doom status bar would not properly clear away the
|
||
big ammo count when switching to a weapon that does not use ammo.
|
||
- Fixed: At certain screen heights, scaled status bars would not touch the
|
||
bottom of the screen because of inaccuracy in the calculation of ::ST_Y
|
||
in FBaseStatusBar::SetScaled().
|
||
- Added separate pickup sounds for health, armor, and ammo items.
|
||
- Improved sound link resolution in S_StartSound() so that regular sounds
|
||
can alias player sounds.
|
||
- Reimplemented idmypos in a more useful manner.
|
||
|
||
April 3, 2001
|
||
- Fixed: DLevelScript::RunScript() sets TeleportSide according to its
|
||
lineSide property instead of assuming that it is already set correctly.
|
||
- Fixed: ASectorAction::CheckTrigger() should set TeleportSide to 0 so that
|
||
teleports always work.
|
||
|
||
March 29, 2001
|
||
- Added language cvar.
|
||
- Fixed: Float bobbing objects would warp to the floor when on a rising
|
||
platform.
|
||
- Fixed: "Torque" should not be applied to float bob objects. (Hexen MAP11
|
||
is a good example of why not.)
|
||
- Fixed: Spree messages should only be shown in deathmatch.
|
||
- Changed sound effect loading to try the sound as DMX format first instead
|
||
of last. (FMOD was recognizing CHICPK2 in heretic.wad as some compressed
|
||
format.)
|
||
- Made skins work with the new player sound system.
|
||
|
||
March 28, 2001
|
||
- Changed player sounds to exist separately from the main sound list (sort
|
||
of). The generic player sounds (e.g. "*death") now exist as actual sound
|
||
entries, but they only serve as a context for getting an index into a
|
||
separate list of class/gender specific sounds which index back into the
|
||
main sound list and provide the actual sound to play. This also reduces
|
||
the total number of sounds that need to be registered. Several new SNDINFO
|
||
commands were introduced to support this.
|
||
- Fixed: When the tomed phoenix rod ran out of flame, the weapon disappeared.
|
||
- Fixed: Intensity calculations in InitPalette() could overflow and cause
|
||
the invulnerability colormap to be wrong.
|
||
|
||
March 27, 2001
|
||
- Made the Ambients array in s_advsound.cpp a list of pointers to
|
||
AmbientSounds instead of a container of AmbientSounds, since the array is
|
||
usually nowhere near full and just wasting memory.
|
||
|
||
March 26, 2001
|
||
- Fixed: Using sound names in a dehacked Thing section works again.
|
||
- Enhanced the soundlist command to show links and random lists.
|
||
- Added an overloaded Printf() that does not take a print level, but just
|
||
prints at PRINT_HIGH.
|
||
- Added the $random SNDINFO command.
|
||
- Moved the template functions into templates.h and added the BinarySearch
|
||
template function.
|
||
- Fixed: The spectre had sounds defined in SNDINFO, but its defaults didn't
|
||
specify any sounds, so it used the demon's sounds instead.
|
||
- Implemented a suggestion from the message board to A_VileChase so that
|
||
negative speed archviles do not run away from corpses.
|
||
|
||
March 24, 2001
|
||
- Fixed: Monsters following a patrol path would not have their reactiontime
|
||
reset to 0 if they heard a player before seeing her.
|
||
- Fixed: Picking up a thing by walking over it would remove it from the
|
||
blocklist and make it possible to walk into another thing near it, because
|
||
the P_BlockThingsIterator would not find anymore actors in that block for
|
||
that call.
|
||
- Tried making DThinker::Delete() private so as to enforce the "use Destroy
|
||
with thinkers" rule, but it didn't work. If the object's constructor can
|
||
throw an exception, the caller of new needs to be able to call delete in
|
||
order to remove the partially constructed object. However, I did change
|
||
the definition of DECLARE_STATELESS_ACTOR so that all actors have nothrow
|
||
constructors (since they're not allowed to use a constructor), which should
|
||
help reduce the size of a lot of the CreateObject()s.
|
||
- Split the Thinkers list into two in order to guarantee that every thinker
|
||
will have a chance to think during the same tic when it is created.
|
||
- Fixed: A thinker that destroyed itself in PostBeginPlay() would block the
|
||
ticks for all actors after it for that game tic.
|
||
|
||
March 23, 2001
|
||
- Fixed: Float bobbing was not properly centered around the object's "ideal"
|
||
height.
|
||
- Added A_SPosAttackUseAtkSound(). This is the same as A_SPosAttack(), except
|
||
it plays the actor's attack sound instead of being hardcoded to play
|
||
"shotguy/attack". Now changing spider/attack in SNDINFO can have an effect.
|
||
|
||
March 22, 2001
|
||
- Wrote a fully-functional gccinlines.h compatible with GCC 2.95.
|
||
|
||
March 20, 2001
|
||
- Undid: When I made float bobbing work for variable heights, I started
|
||
clamping bobbing objects to the floor/ceiling. Heretic and Hexen do not do
|
||
this, so I stopped clamping them.
|
||
- Fixed: P_BloodSplatter() should only be called for Raven's games, not Doom.
|
||
- Changed sound ID 0 to mean "no sound" instead of -1.
|
||
- Changed actor default sounds from strings to IDs so that I don't have to
|
||
worry about tracking a bunch of pointers when loading/saving games, because
|
||
this information gets saved out now.
|
||
- Fixed: Midtextures on two-sided lines are not drawn if they pass too close
|
||
to the player. What is considered "too close" was determined empirically.
|
||
- Fixed typo: Wizard's spawnhealth should be 180, not 100.
|
||
- Turned off monsters killing other monsters when the player is dead and
|
||
the game is Doom.
|
||
- Added global ACS variables. These are like world variables, except they
|
||
do not get cleared when moving to a new hub.
|
||
- Reduced the ACS stack size from 200 to 64.
|
||
|
||
March 19, 2001
|
||
- Added a list of needed wads to savegames.
|
||
- Moved the SAVESTRINGSIZE definition into version.h so that I can be
|
||
sure all the files that use it use the same value. One file had it
|
||
at 32, and the rest used 24, which was causing crashes when switching
|
||
levels after saving a game.
|
||
- Fixed a Doom bug: If a boss eye tried to shoot a cube at a boss target
|
||
with the same y-coordinate as itself, the game would crash with a divide
|
||
by 0 because only the difference in y-coordinates was used to determine
|
||
how long it would take for the cube to reach the target.
|
||
|
||
March 17, 2001
|
||
- Rewrote the save and load menus to support the new savegame features and
|
||
to also support far more files than before.
|
||
- Fixed: The patch drawers in v_draw.cpp crashed with patches that had
|
||
useless 0-length posts.
|
||
- Fixed: Sound sequence SS_CMD_END was being generated wrong.
|
||
- Fixed: Sound sequences with no current sound were archived wrong.
|
||
|
||
March 16, 2001
|
||
- Added screenshots to save games, ala all the Build games I've played.
|
||
Also added comments that currently just indicate the time when the game
|
||
was saved.
|
||
- Added R_RenderViewToCanvas() and rearranged r_main.cpp a little to
|
||
accomodate it.
|
||
|
||
March 15, 2001
|
||
- Added page up/down support for long options menus (i.e. controls menu).
|
||
- Changed console paging keys: Ctrl-Home and Ctrl-End now move to top/bottom
|
||
of console buffer, and Shift-PageUp and Shift-PageDown move up/down by
|
||
pages.
|
||
- Fixed: Trace() picked PT_ADDTHINGS based on ActorMask instead of actorMask.
|
||
The most obvious consequence of this was that hitscan weapons worked
|
||
sporadicly with the chasecam on.
|
||
- Fixed: Backpack was only giving one of each ammo type instead of one clip
|
||
of each ammo type.
|
||
|
||
March 14, 2001
|
||
- Added MBF "torque" to fix "The items that the monsters drop when they die
|
||
sometimes float in the air (happens very often when the monsters die in
|
||
stairs)." Although it does fix this, I think it looks goofy to see ammo
|
||
clips go careening down the stairs at the beginning of MAP01. The better
|
||
solution to this particular situation would probably be to adjust the
|
||
pickupable items' radii to accurately reflect their physical sizes, but
|
||
I fear that might make them harder to grab. Maybe if they were noclip?
|
||
- Fixed dumpmapthings command.
|
||
- Space tuning: Shrank FState from 28 to 16 bytes.
|
||
- Fixed spree and multikill messages to correctly display the killer.
|
||
- Fixed DPusher::ChangeValues() to properly convert from byte angles to
|
||
fineangles.
|
||
- Added PROP_STATE_BASE to AMaceFX3's defaults, so that it gets the right
|
||
death state.
|
||
|
||
March 11, 2001
|
||
- Changed bex string section handling to simulate old death messages
|
||
(without %o and %k).
|
||
- Added support for international characters to the FFont class and also
|
||
added some corresponding characters to zdoom.wad.
|
||
- Changed Heretic/Hexen font loading to use name plates like Doom fonts
|
||
instead of FONTA/FONTB markers, because templates allow for gaps in the
|
||
character set.
|
||
- Tweaked string loading so that variant-neutral strings are loaded before
|
||
loading strings from any variant of the specified language.
|
||
- Toned down the alpha on BFG and plasma projectiles.
|
||
- Changed rocket explosions back to STYLE_Translucent.
|
||
- Fixed ADEF_SkipSuper handling, though I wonder if it wouldn't be better
|
||
to rework the situations that use it, so it isn't needed at all.
|
||
- Fixed: Music for Doom 1 was wrong.
|
||
- Fixed: The cast finale was messed up.
|
||
- Fixed: The new actor members were not being serialized.
|
||
- Fixed: None of the new actor fields were being serialized.
|
||
- Fixed: The FState * serializer did not use TAutoSegIterator.
|
||
- Fixed: Dehacked monsters could be really slow, because monsters speeds
|
||
are now fixed point but weren't before.
|
||
- Fixed: M_QuitDOOM() was not getting DOSY through GStrings.
|
||
- Fixed: Stringlist did not write out enough information in the name table,
|
||
so FStringTable could not figure out which index belonged to which name.
|
||
- Fixed: String names were not loaded before using a bex string section.
|
||
|
||
March 9, 2001
|
||
- Added PCD_SETTHINGSPECIAL and its analagous Skull Tag special,
|
||
Thing_SetSpecial.
|
||
- Added obituary messages for the Heretic monsters.
|
||
- Added %o and %k substitutions for obituaries, ala Unreal.
|
||
- Fixed: Player obituaries were not being displayed unless it was a player
|
||
who did the killing.
|
||
- Extended SexMessage() to handle %o and %k.
|
||
- Fixed: tmfloorsector was being calculated wrong, which could cause
|
||
problems moving around in slopy areas.
|
||
- Replaced all the DivScale30() calls in WallMost() to SafeDivScale30().
|
||
|
||
March 8, 2001
|
||
- Wrote support for the string tables into the game, which shrank it 28k
|
||
(but only because the text data got moved into the wad).
|
||
|
||
March 7, 2001
|
||
- Wrote a tool to compile localized string tables.
|
||
|
||
March 5, 2001
|
||
- Fixed: PTR_TraceIterator expected to be able to cross closed sectors. That
|
||
is, when it stepped across a two-sided line, it assumed that the next line
|
||
in sequence would belong to the sector it had stepped into.
|
||
- Fixed: P_SightTraverseIntercepts() needs to set up openbottom and opentop
|
||
before calling PTR_SightTraverse so that the results of P_CheckSight()
|
||
are always defined.
|
||
- Fixed: Using include in bex patches caused the DehSupp data to be freed
|
||
prematurely.
|
||
- Got the code to fully compile again with default lists. The executable is
|
||
only 104k smaller than before (I had hoped for something more dramatic),
|
||
but at least now it only takes one minute to link the release build.
|
||
|
||
February 28, 2001
|
||
- Changed the console command implementation so that new commands do not
|
||
require subclasses (and all the function overhead that goes with them).
|
||
- Finished building default lists for every actor.
|
||
|
||
February 27, 2001
|
||
- Began the tedious process of converting to actor default lists.
|
||
- Simplified the IMPLEMENT_CLASS macros to not require the parent type
|
||
because that information can be derived thanks to the DECLARE_CLASS macros.
|
||
- Removed the distinction between serializable and non-serializable DObjects
|
||
so only objects that do some specific serialization actually need
|
||
Serialize() methods.
|
||
- Fixed: Teleport_EndGame works again.
|
||
- Added WALLF_NOAUTODECALS flag to sidedefs, so certain lines will not
|
||
get impact decals (bullet holes) on them, specifically: scrolling walls.
|
||
- Increased the precision of P_InterceptVectors so that it can handle longer
|
||
lines.
|
||
|
||
February 26, 2001
|
||
- Added limitpainelemental cvar to control whether or not Pain Elementals
|
||
will limit their attacks based on the number of Lost Souls in the level.
|
||
|
||
Feburary 24, 2001
|
||
- Fixed some class serializers that did not call their superfunction.
|
||
|
||
February 23, 2001
|
||
- Changed P_DropItem() so that negative special values will not be stored in
|
||
the item's health field. This is primarily to support exoteric DeHackEd
|
||
patches, as it doesn't matter under normal circumstances.
|
||
|
||
February 22, 2001
|
||
- Removed the ClassInit class, and made TypeInfo constructors register
|
||
themselves, saving around 20k.
|
||
- Fixed: Places that use P_SpawnMissile() and then manipulate the missile
|
||
somehow now check for NULL returns.
|
||
- Fixed: AMovingCamera::Serialize() did not call its superfunction.
|
||
This is an oversight I keep making, so I added some code to DObject and
|
||
FArchive to look for this error.
|
||
|
||
February 20, 2001
|
||
- Fixed: Normal skies did not reflect in mirrors, and sky boxes mostly failed
|
||
to be drawn at all in mirrors.
|
||
|
||
February 19, 2001
|
||
- Added PCD_PUSHBYTES and PCD_PUSHxBYTES p-codes to ACS, since PCD_PUSHBYTE
|
||
was a fairly common sequence.
|
||
|
||
February 17, 2001
|
||
- Made G_DoLoadLevel() remove any existing HUD messages.
|
||
- Made BLOCKMAP lumps optional (sort of--the lump still needs to be there,
|
||
but it can be length 0).
|
||
- Rearranged P_SetupLevel() so that a map's behavior is loaded before
|
||
anything else (in order to make enter scripts work when a map is just
|
||
loaded).
|
||
- Changed I_RegisterSong() to not bother loading a song if -nomusic.
|
||
- Added support for these Skull Tag script types: Death, Enter, and Respawn.
|
||
- Added cl_showsprees and cl_showmultikills cvars.
|
||
- Fixed: A_Look made stealth monsters visible.
|
||
- Fixed: BlurSphere needs to be STYLE_Translucent for the pulse to be
|
||
visible.
|
||
- Fixed: StealthDemon was STYLE_Add instead of STYLE_Translucent.
|
||
- Fixed: Col2RGB8_2 needs to have cover most entries from Col2RGB8, not just
|
||
half of them..
|
||
- Fixed: Net_SkipCommand() was still calculating the length of
|
||
DEM_SINFCHANGED based on the old semantics.
|
||
- Changed startup command processing again. Now, all commands are processed
|
||
at once, but ones considered "not safe" to be executed before everything
|
||
is set up will have their execution delayed.
|
||
|
||
February 15, 2001
|
||
- Changed autoexec.cfg parsing to be similar to command line parsing.
|
||
All sets are run as soon as possible, then other commands are executed
|
||
later after all the subsystems are initialized.
|
||
- Changed BEGIN_CUSTOM_CVAR/END_CUSTOM_CVAR pair to CUSTOM_CVAR.
|
||
- Changed BEGIN_STAT/END_STAT pair to ADD_STAT.
|
||
- Changed BEGIN_COMMAND/END_COMMAND pair to CCMD.
|
||
- Added detection for Windows 2000, so the sound code will default to
|
||
DirectSound under that OS instead of WinMM.
|
||
|
||
February 12, 2001
|
||
- Changed Die for missiles set as shootable so that they explode instead
|
||
of doing a regular death.
|
||
- Changed MF2_FLOATBOB handling to not use health or special1. (So now
|
||
it works with monsters.)
|
||
- Sorted the list of skins for a more user-friendly experience in the
|
||
player setup menu and to make R_FindSkin() faster.
|
||
- Removed all traces of COM_Parse().
|
||
- Added support for ACS scripts that store p-codes and certain other values
|
||
in bytes instead of dwords. This can offer considerable space savings.
|
||
Also tweaked the interpreter to help keep the program counter and stack
|
||
pointer in registers.
|
||
|
||
February 11, 2001
|
||
- Fixed: I_ShutdownMusic() should call S_StopMusic() so that the general
|
||
sound code knows the song no longer exists. Having it free the song itself
|
||
could crash if the game lost and regained focus while quitting.
|
||
|
||
February 8, 2001
|
||
- Added Anubis cheat.
|
||
- Really fixed rotated flats on sloped planes. The previous fix only affected
|
||
floors at certain angles and did nothing for ceilings.
|
||
|
||
February 5, 2001
|
||
- Fixed: FPS meter with vid_fps was always 0.
|
||
- Fixed: Tilted floors/ceilings did not rotate properly.
|
||
- Fixed: Mirrors did not reflect slopes properly.
|
||
- Changed P_ProcessSwitchDef() so that not specifying a game name is the
|
||
same as specifying "any".
|
||
- Fixed: Typo in zdoom.animdefs prevented SW1STRTN/SW2STRTN from switching.
|
||
- Fixed: -iwad did not work with wads that included a path.
|
||
- Tweaked P_TestActivateLine() so that only actual missiles will be promoted
|
||
to activate player cross teleports.
|
||
- Did away with I_SetGUICapture(). It was too prone to error. Now the input
|
||
code checks what kind of events it should generate each time I_StartTic()
|
||
is called.
|
||
- Fixed: "Screenshot" mis-spelled as "screeshot" in controls menu.
|
||
- Fixed: The cursor in the option menus was one pixel too low.
|
||
- Fixed: Standard automap colors were all black if the game was started with
|
||
am_overlay set to true.
|
||
- Fixed a typo in P_CheckKeys() that prevented the yellow skull and cards
|
||
from being equivalent for 3-key doors. While I was at it, I rewrote the
|
||
function, although it's still not what I would consider very readable. :-(
|
||
- Removed cheat-changing Dehacked support.
|
||
- I think I've got the problems with changing a thing's MF_SHADOW bit with
|
||
Dehacked worked out now.
|
||
|
||
February 3, 2001
|
||
- Added "Alpha" and "Render Style" lines to Thing sections of dehacked
|
||
patches.
|
||
- Fixed: Changing a thing's doomednum with dehacked would not update the
|
||
DoomEdMap hash table, so it would have no effect.
|
||
- Fixed: Changing a thing's doomednum also changed its scale.
|
||
- Fixed: Modifying a hanging ceiling thing with dehacked would usually not
|
||
reset the height to its Doom default. (Was using sizeof(OrgHeights)
|
||
instead of NumOrgHeights.)
|
||
- Changed actor's translucency variable to alpha to reflect that it
|
||
controls the alpha value for more than just translucency.
|
||
- Centralized column drawer selection to make adding more render styles
|
||
in the future more convenient. The function is R_SetPatchStyle(). The
|
||
selection of fg2rgb and bg2rgb has also been moved out of the various
|
||
column drawers and into R_SetBlendFunc() so that they can be more
|
||
generalized. What was a translucent column drawer is now blending without
|
||
clamping, and what was an additive column drawer is now blending with
|
||
clamping. Their names have been changed to reflect this.
|
||
- Changed WallMost()'s frac bits back to 30, but now it uses SafeDivScale.
|
||
Now it should never crash there.
|
||
- Fixed: -playdemo did not like to use files in other directories.
|
||
|
||
February 1, 2001
|
||
- Fixed: Particles would not draw properly if a mirror was visible.
|
||
- Fixed: Viewing decals in mirrors could crash because PrepWall() only knew
|
||
about non-mirrored surfaces when it clipped the lwall values.
|
||
- Changed the number of frac bits in WallMost() when clipping a line to 28
|
||
instead of 30 to (better) avoid possible integer overflow.
|
||
- Fixed: Hub travel would hang when visiting a previously visited level.
|
||
- Got rid of linear.nas. It was only there to try and make things better for
|
||
486s, and as I care even less about 486s now, there didn't seem to be much
|
||
point in having it around wasting space in the executable.
|
||
- Removed RF_FORCECENTER renderflag and added a new RenderStyle actor member
|
||
that's used to specify the render style instead of renderflags. Some
|
||
styles are just aliases to other styles based on cvars (r_drawfuzz and
|
||
transsouls), and others are styles that specify drawing. I also added a
|
||
new style: STYLE_Add (additive blending) and made many of the DOOM
|
||
projectiles that I had previously made translucent use it instead.
|
||
|
||
January 30, 2001
|
||
- Fixed xtoviewangle generation in R_InitTextureMapping(). (It was phase
|
||
shifted 90 degrees)
|
||
- Removed R_ScaleFromGlobalAngle(), rw_distance, rw_angle1, and
|
||
rw_normalangle.
|
||
|
||
January 27, 2001
|
||
- Fixed: Things made fuzzy with dehacked appeared no different when
|
||
r_drawfuzz is false, because they also need to have their translucency set.
|
||
- Set the default for vid_bufferarea to 0, because large translucent areas
|
||
suddenly coming into view (such as firing the BFG) can cause a very
|
||
noticeable slowdown. I may take out the support for unbuffered output
|
||
entirely.
|
||
- Fixed: Demons in nightmare mode would end up with 0 tic chase states.
|
||
- Fixed: A_BFGSpray() was using the player's autoaim setting for finding
|
||
things to spray.
|
||
|
||
January 19, 2001
|
||
- Fixed some text prompts (e.g. "Do you want to quit?") so that they properly
|
||
release the input code from GUI mode.
|
||
- Fixed ABossEye::Serialize() and DBrainState::Serialize().
|
||
- Extended Dehacked thing sound replacements so that you can use any sound
|
||
defined in a SNDINFO lump.
|
||
- Fixed Dehacked thing sound replacements -- a 0 sound index means "no sound"
|
||
and should not be treated as an offset into the sound list.
|
||
- Fixed translation table selection in R_ProjectSprite when using flags to
|
||
specify a translation.
|
||
- Fixed HeadsOnAStick to be solid.
|
||
|
||
January 18, 2001
|
||
- Added some invisible bridge things.
|
||
- Fixed the sky around the tunnel in E1M1.
|
||
- Fixed P_DrawSplash2 not centering splashes around their point of origin.
|
||
- Fixed assignment of codepointers in [CODEPTR] sections of bex files.
|
||
|
||
December 24, 2000
|
||
- Added the firstvissprite and firstdrawseg variables so that I can restrict
|
||
the vissprites and drawsegs drawn in skyboxes without changing their base
|
||
pointers, which could move when they get realloced.
|
||
|
||
December 19, 2000
|
||
- Fixed Ceiling_LowerByValue acting like Ceiling_RaiseInstant.
|
||
- Fixed game grabbing the mouse during startup when the IWAD dialog
|
||
is shown.
|
||
- Fixed dmflags not changing in gameplay menu.
|
||
- Fixed standard Doom colors not showing up on automap if the game was
|
||
started with am_usecustomcolors 0.
|
||
- Fixed demons moving very slowly in nightmare mode.
|
||
- Fixed dehacked patches not setting bright frames properly.
|
||
- Fixed dehacked patches that change the player sprite's name.
|
||
- Fixed dehacked patches setting a thing's fuzzy property.
|
||
- Moved lots of supplementary dehacked data into zdoom.wad so that it's
|
||
only in memory when it's needed.
|
||
|
||
December 18, 2000
|
||
- Fixed my sidedefs decompressor so that it works with maps that have
|
||
unused sidedefs. As a consequence of this, the ordering of sidedefs in
|
||
memory may be completely different from their ordering on disk.
|
||
- Fixed P_LoadSectors() to clamp each sector's light to the range [0,255]
|
||
instead of ignoring the high byte stored in the wad.
|
||
- Fixed rendering of shaded decals when the light amp is on.
|
||
- Fixed the generation of the shading tables in R_InitTranslationTables() to
|
||
not create values > 64.
|
||
- Gave spawnids to some things that were missing them.
|
||
- Reduced the default for vid_bufferarea to 6000.
|
||
- Reread the description of the SAL/SAR/SHL/SHR instructions. The OF
|
||
flag is undefined for shifts other than 1--not unchanged. Rewrote
|
||
the stretchers in blocks.nas to correct for this. On my Pentium II,
|
||
the OF flag is left unchanged, so I got the desired result, but
|
||
other processors can change it. :-(
|
||
- Added back triple buffering, because double buffering can be
|
||
(but is not always) significantly slower.
|
||
- Fixed up the sound code for the new FMOD 3.3 API.
|
||
|
||
December 15, 2000
|
||
- Fixed fourth and fifth episodes not appearing in the menu for the
|
||
extended Heretic IWAD.
|
||
- Reorganized DCajunMaster::WhatToGet() so that Reachable() is called
|
||
less often.
|
||
- Fixed multikill messages appearing for everyone and not just whoever
|
||
got it.
|
||
- Divided thinkers into thinking and non-thinking classes. By default,
|
||
a FThinkerIterator will not iterate through non-thinking classes.
|
||
Those must be specified explicitly. Made the decals non-thinking so
|
||
the think code doesn't waste any time on them.
|
||
- Fixed bots not being able to spawn in deathmatch mode if there are
|
||
not enough coop starts.
|
||
- Added support for compressed SIDEDEFS lumps.
|
||
- Made the splash bases MF_NOGRAVITY so that they stay at the surface
|
||
of BOOM deep water instead of sinking into it.
|
||
- Made splashes work as expected in sectors with the BOOM deep water
|
||
effect (and set as a water zone).
|
||
- Fixed positioning of weapon sprite. (Was one pixel too high.)
|
||
- Fixed vertical aiming on railgun being swapped.
|
||
- Fixed SUBCLASS_NS macro in a_doomdecorations.cpp. It was using radius
|
||
as the height.
|
||
|
||
December 14, 2000
|
||
- Fixed lines not being considered for rendering when at least one side
|
||
is sloped but the heights on each side of the line are identical at
|
||
both ends.
|
||
- Fixed physics and rendering of non-horizontal slopes. They were both
|
||
messed up because I had been subtracting b*y in the ZatPoint
|
||
calculations when I should have added it. Clipping the right edge of
|
||
non-horizontal slopes to the screen was also wrong because I was
|
||
subtracting from x instead of y for the y component of the point
|
||
intersecting the screen.
|
||
- Fixed automap being all black when am_usecustomcolors is false.
|
||
- Updated Heretic status bar for unbuffered output.
|
||
- Stopped creating the primary surface as a complex flipping surface so
|
||
that I can set colors 0 and 255 under NT.
|
||
- Made the video code better able to cope with different surface lost
|
||
conditions.
|
||
- Fixed alt-tab killing the program by listening to WM_ACTIVATEAPP and
|
||
forcing buffering (that never gets flushed to the screen) when the app
|
||
goes inactive.
|
||
- Moved the palette change to occur immediately after the page blit.
|
||
- Fixed GUI capture being lost when the demo cycle returns to the title
|
||
screen and the menu is active.
|
||
- Fixed being able to get stuck in the edges of sloped ceilings. In
|
||
PIT_CheckLine(), I was using the actor's current position instead of its
|
||
desired position to calculate the nearest point on the line.
|
||
- Fixed skyboxes so that sprites seen through multiple visplanes are visible
|
||
in all the visplanes and not just the first one.
|
||
- Made a bunch of changes to slope walking to try to make walking along the
|
||
very edge of a slope work better. This included adding a floorsector field
|
||
to AActor that records the sector that the floorz field came from.
|
||
- Changed the nearest point on line calculation in PIT_CheckLine() to use
|
||
floats, because ints aren't large enough for the intermediate calculations.
|
||
- Changed S_StopSoundID() to not stop sounds with the same priority.
|
||
- Fixed normal mace balls so that they fall down after some distance.
|
||
Apparently, in Heretic MF2_LOGRAV has precedence over MF_NOGRAVITY.
|
||
- Fixed sky boxes so they are not lit by extralight.
|
||
|
||
December 13, 2000
|
||
- Fixed image collections not remapping any instances of color 0 in a patch
|
||
to a different color. This was most evident in the multiplayer status bar
|
||
where the background could be seen through the player's eyes and eyebrows.
|
||
- Made normal skies work with animations found in an ANIMDEFS lump.
|
||
- Made screen melts work by forcing them to use buffered output.
|
||
- Reimplemented screenshot command.
|
||
- Changed DCanvas::Dim() to read and write four pixels at a time so that
|
||
the first frame dimmed before buffering is forced only takes about 1/4th
|
||
the time to draw as it would if single pixels were read and written.
|
||
- Made shaded and fuzzy decals count toward transparent area.
|
||
- Fixed not being able to pick up a Megasphere if your armor is already full.
|
||
- Fixed Dehacked patches not being able to clear a frame's fullbright
|
||
property.
|
||
|
||
December 12, 2000
|
||
- Renamed zdoom.cfg to zdoom.ini so that old versions can coexist in the
|
||
same directory as this one with less hassle.
|
||
- Reimplemented decals.
|
||
- Changed the player setup menu to use number instead of named teams.
|
||
- Fixed stack overflow caused by floating point imprecision when setting
|
||
turbo out of range.
|
||
- Fixed DGlow not working properly because lightlevels are now unsigned.
|
||
- Fixed the second DScroller constructor not setting m_vdx and m_vdy.
|
||
- Changed R_SetDefaultColormap() to look in the colormaps namespace before
|
||
looking in the global namespace.
|
||
- Fixed fade MAPINFO command not working.
|
||
- Fixed picking up the green armor showing the generic pickup message.
|
||
- Fixed massacre cheat to not let pain elementals spew out lost souls upon
|
||
their death. This also fixes massacre from crashing if the dead lost soul
|
||
was patched to actually stick around in a map.
|
||
- Separated AGibs into ARealGibs and AGibs. ARealGibs is what gets spawned
|
||
automatically when something gets crushed. AGibs is what gets spawned when
|
||
gibs are explicitly placed on a map.
|
||
- Fixed C_BackupCVars() recording the specific value of a cvar instead of
|
||
making a copy of that value.
|
||
|
||
December 11, 2000
|
||
- Fixed generic ceilings with texture/type changes from using model floor
|
||
sectors instead of model ceiling sectors if they had type raise to highest
|
||
ceiling or type lower to highest ceiling.
|
||
- Fixed elevators.
|
||
|
||
December 9, 2000
|
||
- Made old Doom level translation programmable through the use of simple
|
||
precompiled scripts that the game loads from a wad.
|
||
|
||
December 6, 2000
|
||
- Restored Doom's original 50-element fuzzoffset table and rewrote the
|
||
fuzz drawers to accomodate it while still using as few branches as I
|
||
thought reasonable.
|
||
|
||
December 5, 2000
|
||
- Got the display mostly up and running again without PTC. The new design
|
||
allows for automatic switching between buffered and unbuffered modes
|
||
based on how many transparent pixels were visible in the previous frame,
|
||
similar to Build. Unlike Build, the cutoff is always a specific amount
|
||
of pixels (cvar-controlled) instead of one-eighth the total area of the
|
||
screen.
|
||
|
||
November 28, 2000
|
||
- Removed the use of PTC and returned to my rudimentary DirectDraw support.
|
||
- Got rid of all the funky multiple palette handling stuff in v_palette.cpp.
|
||
Paletted textures haven't been realized yet, and if they ever are, the way
|
||
I had things set up probably isn't the way to utilize them.
|
||
|
||
November 25, 2000
|
||
- Fixed BossTargets automatically destroying themselves.
|
||
- Got rid of the global brain state and moved it into a thinker that gets
|
||
spawned if any BrainEyes are present on the level.
|
||
- Made PIT_RadiusAttack() calculate damage based on distance from the
|
||
thing's bounding cylinder instead of its center point.
|
||
- Made thinkers use Exec-style lists because of their simple insertion and
|
||
deletion code.
|
||
- Made R_TextureNumForName() return 1 instead of 0 for missing textures so
|
||
levels that lack textures are easier to navigate.
|
||
- Changed ADecal's doomednum to 9200 to deconflict with Hexen coop start 5.
|
||
- Created an MMX version of the color picker routine. Building a fade table
|
||
with it is about 15% faster than with the straight C version. Not exactly
|
||
a stunning speed increase, but on slower machines, the speedup should at
|
||
least be slightly noticable.
|
||
|
||
November 24, 2000
|
||
- #ifdef'ed out most of the FColorMatcher class. Too many colors are
|
||
visibly off when building fog with it. :-(
|
||
- Simplified the calculations in DoBlending() and created an MMX version.
|
||
|
||
November 20, 2000
|
||
- Implemented Scroll_Floor and Scroll_Ceiling specials for ACS scripts.
|
||
- Fixed drawing of masked midtextures that are used as special effects (i.e.
|
||
invisible platforms).
|
||
- Updated R_AddLine() to only treat as solid two-sided lines if the upper or
|
||
lower tier (whichever is appropriate) actually has a texture.
|
||
- Made doors close to the current floor height instead of whatever the floor
|
||
was at when the door started lowering.
|
||
- Rearranged P_DoCrunch() somewhat so that non-shootable things do not block
|
||
moving floors/ceilings. (Same behavior as Doom.)
|
||
- Fixed model sector changes in EV_DoFloor() and EV_DoCeiling().
|
||
- Added mdk command to kill whatever the player is aiming at.
|
||
- Added the BOOM fix to getNextSector() so that lines that have the same
|
||
sector on both sides and are also part of the sector will not return
|
||
that sector.
|
||
- Fixed PathFollower not initializing PrevNode and CurrNode when it is
|
||
spawned.
|
||
|
||
November 18, 2000
|
||
- Added per-sidedef lighting control. Also added two new mapinfo fields
|
||
(vertwallshade and horizwallshade) to control the relative light of
|
||
vertical/horizontal walls with the sectors. Evenlighting is now obsolete.
|
||
|
||
November 17, 2000
|
||
- Added a new thing (SectorSilencer) to prevent actors from making noise in
|
||
specific sectors, in case anybody wants to use noisy actors in their
|
||
sky boxes.
|
||
- Fixed skyboxes to draw all visplanes with a skybox and not just the first
|
||
one.
|
||
- Added tilted floor physics. Actors can walk around on floors with slopes
|
||
as large as 45 degrees. For anything steeper than that, they slide down.
|
||
Monsters will treat steep floors like drop offs and avoid getting on them.
|
||
|
||
November 16, 2000
|
||
- Added a bForceSlide parameter to P_XYMovement() to force actors to slide
|
||
against walls when blocked, even if they don't specify MF2_SLIDE. This
|
||
allows for better operation of conveyor belts with corners.
|
||
- Fixed volcano sounds in Heretic.
|
||
- Revised carrying sectors again. Removed sc_carry_players. Each thing
|
||
checks the sectors it is standing on to see if they have any carry
|
||
properties. If they do, it adds those values to its momx and momy.
|
||
Thinkers are still used to set the carry properties, which are reset
|
||
to 0 at the beginning of each tic. In order to make sure all carry
|
||
properties have been set before any actors think, I introduced the
|
||
concept of statnums for DThinkers ala Build. DScrollers have lower statnums
|
||
than actors, so they all get executed before actors.
|
||
All carriers for a single sector are cumulative. If an actor is straddling
|
||
multiple sectors with carry properties, then those properties are averaged.
|
||
(X and Y components are averaged separately.) This should give the best
|
||
compromise between BOOM carry behavior and realistic behavior at sector
|
||
boundaries.
|
||
|
||
November 15, 2000
|
||
- Made A_WaterfallSound() and A_WindSound() play looped sounds.
|
||
- Fixed spelling error in SNDINFO: Heretic's waterfall sound is
|
||
waterfl, not watrfl.
|
||
- Changed P_ActivateLine() to call P_TestActivateLine() and changed
|
||
P_TestActivateLine() to allow missiles to activate regular teleporters.
|
||
This is neccessary for the Mace's Death Ball.
|
||
- Took the momz and tics setting out of P_SpawnPuff(). It is the
|
||
responsibility of the spawned puff to set these things as desired. I had
|
||
meant to do it a long time ago but forgot all about it.
|
||
- Changed deferred scripts to remember the player who triggered them.
|
||
|
||
November 14, 2000
|
||
- Removed the code for F*CVar::GetRealType() from c_cvars.h and moved it
|
||
into c_cvars.cpp. Virtual inline functions are not inlined and cause the
|
||
function to be generated for every source file the class is used in.
|
||
- Fixed bug with Transfer_CeilingLight special. I was or'ing CeilingLight
|
||
with SECF_ABSLIGHTING instead of CeilingFlags.
|
||
|
||
November 11, 2000
|
||
- Slopes don't work in mirrors. :-(
|
||
- Removed the viewangletox table and rewrote R_InitTextureMapping() to
|
||
generate xtoviewangle without it.
|
||
- Added support for per-skybox control of visibility.
|
||
|
||
November 10, 2000
|
||
- Implemented sky boxes. Total time: ~40 minutes. :-) Should probably test
|
||
it some more, though.
|
||
|
||
November 9, 2000
|
||
- Fixed a sprite clipping bug at the right edge of mirrors.
|
||
|
||
November 8, 2000
|
||
- Reimplemented mirrors.
|
||
- Improved positioning of masked mid textures.
|
||
|
||
November 7, 2000
|
||
- Increased the fractional precision of swall calculations.
|
||
- Removed all references to Doom's light tables.
|
||
|
||
November 6, 2000
|
||
- Moved the lighting calculation out of the main loop in R_MapTiltedPlane()
|
||
(and its assembly equivalent) into a separate function, since it can now
|
||
be linearly interpolated. This does away with the use of CMOVs in the
|
||
assembly code, so now I won't need to write a non-CMOV version of it. It's
|
||
also somewhat faster, especially in the non-assembly version.
|
||
|
||
November 3, 2000
|
||
- Tweaked the brown color range for console fonts to actually look brown.
|
||
- Generalized FFont::BuildTranslations() some so it's not so big. Did the
|
||
same for the FConsoleFont version.
|
||
|
||
November 1, 2000
|
||
- Got the tilted plane lighting working without the LUT in 320x200. Also
|
||
removed the divide from the nontilted version.
|
||
|
||
October 31, 2000
|
||
- Got the plane light calculation without using zlight to match the light
|
||
when using zlight (aside from the finer gradiation). Woohoo! Now to get
|
||
rid of the divide...
|
||
- Fixed creation of large (>64k) blockmaps. Also replaced the Boom version
|
||
of P_CreateBlockMap() with the MBF version.
|
||
|
||
October 17, 2000
|
||
- Tried to remove the use of the zlight lookup for plane mapping, but I'm
|
||
having a hard time actually duplicating its results. (Nevermind that I
|
||
should be able to derive the properly formula without difficulty...)
|
||
- Noticed distant sprites were way too jumpy. At first, I thought it was
|
||
because I was only using 8 bits of precision, so I temporarily upped it
|
||
back to 16 bits, and the problem persisted. It was caused by calculating
|
||
1/z in R_ProjectSprite() (as a fixed 16.16) and multiplying by that.
|
||
Dividing by z instead fixed the problem.
|
||
|
||
October 16, 2000
|
||
- I think I have all the sector movers set to properly handle tilty areas.
|
||
- Set P_SpawnDoorCloseIn30() and P_SpawnDoorRaiseIn5Mins() to set the
|
||
thinker's m_BotDist.
|
||
- Upped the fractional bits of precision for view space coordinates to 12.
|
||
This drops the upper FOV limit to ~172.8.
|
||
|
||
October 10, 2000
|
||
- Fixed pillar floors using the ceiling plane for calculations.
|
||
- Changed P_Thing_Spawn() and P_Thing_Projectile() to only set MF_DROPPED
|
||
for special things, so spawned monsters can be crushed to gibs.
|
||
- Added carrymomx, carrymomy, and carrycount members to AActor. DScroller
|
||
now effects these rather than momx and momy. Slow scrollers work now,
|
||
and there's no possibility of drift caused by friction.
|
||
- Changed earthquake behavior to match Hexen's.
|
||
|
||
October 9, 2000
|
||
- Added Unreal teleport zoom effect controlled by the telezoom cvar.
|
||
- Reduced the renderer's precision along the (x,y) plane in view space to
|
||
8 bits of fractional precision in order to accomodate large FOVs.
|
||
|
||
October 7, 2000
|
||
- Fixed lighting to not vary with different FOVs.
|
||
- Changed the initialization of finetangent to not phase shift the table,
|
||
as I did previously for finesine.
|
||
|
||
October 6, 2000
|
||
- Added support for panning, scaling, and rotating of tilted flats.
|
||
|
||
October 5, 2000
|
||
- Added FloorLight and CeilingLight members to sector_t. Changed
|
||
Transfer_FloorLight and Transfer_CeilingLight to use a thinker to copy
|
||
light levels over to these fields.
|
||
- Fixed serialization of sectors: The ceiling's xoffs was stored twice
|
||
instead of storing both xoffs and yoffs.
|
||
|
||
October 4, 2000
|
||
- Added back the "too far off side?" check to R_ProjectSprite(), since
|
||
sprites are now projected into a view space with a constant 90 degree FOV.
|
||
Also added a test for sprites above/below the screen. This test is
|
||
different from Lee Killough's test in Boom, which I never managed to get
|
||
working right with freelook (not that I tried very hard, either...).
|
||
|
||
October 2, 2000
|
||
- Added an optimization to R_AddLine(): 2-sided lines that cannot be seen
|
||
past because their openings are off-screen will be marked as solid.
|
||
- Changed the pointers in drawseg_t to ptrdiff_t so the "fun" stuff in
|
||
R_StoreWallRange for expanding the openings array and adjusting
|
||
pointers is unnecessary.
|
||
- Did the changes I talked about on September 23, except the calculations
|
||
are still associated with R_StoreWallRange() so they don't need to be
|
||
performed if the wall is entirely clipped (but they only get done once
|
||
per wall, no matter how many ranges it gets clipped to).
|
||
|
||
September 27, 2000
|
||
- Moved wall texture calculation (i.e. prepwall) back to floats, just to be
|
||
safe as far as integer overflow goes.
|
||
|
||
September 26, 2000
|
||
- All right, I've caved in. I'm now using some Build code. Build already does
|
||
everything necessary for good quality rendering, and it seems a shame to
|
||
needlessly duplicate all of Ken's work.
|
||
|
||
September 23, 2000
|
||
- After trying to get slopes to look nicer, I have come to the following sad
|
||
conclusion. Clipping walls into pieces and then doing all the drawing
|
||
calculations in R_StoreWallRange() is not the way to go when you have
|
||
slopes, since all fractional precision is lost at the edges of the
|
||
drawsegs, making an accurate calculation of (x,y) for slope calculations
|
||
impossible. So my plan for now is: Move most of the functionality of
|
||
R_StoreWallRange() into R_AddLine(), and leave R_StoreWallRange() around as
|
||
a function that just creates drawsegs and calls the texture mapping
|
||
routines.
|
||
- Made solidsegs a fixed-size array that is big enough. (It was not actually
|
||
growing before, so it might as well have been fixed!)
|
||
|
||
September 21, 2000
|
||
- Fixed C_WriteCVars() so that it doesn't delete the strings it gets
|
||
using GetGenericRep().
|
||
- Reduced the FOV range to [5,175] to combat integer overflow with extreme
|
||
values.
|
||
- Removed excess precision from texturecolumn calculations in BlastColumn,
|
||
since it was overflowing occasionally.
|
||
|
||
September 20, 2000
|
||
- Removed the offset field from r_segs, as it is no longer necessary. (Walls
|
||
are now mapped based on their linedefs, not their individual segs.)
|
||
- Bumped the wall mapper down to only 4 bits of fractional precision. The
|
||
results look just as good as floats, and don't overflow so easily--a wall
|
||
15296 units long didn't overflow. (I didn't check any longer, since walls
|
||
that long are highly unlikely to occur in any Doom map, because the
|
||
original Doom engine would render them with horrible jitter.)
|
||
|
||
In the process, I decided to go the Build route and give walls a texture
|
||
width (the number of texels that fit across the wall). When arbitrarily
|
||
moveable walls are implemented, I think it will be more useful to maintain
|
||
a constant spread of texels across a wall than to maintain a constant
|
||
texel width. Without moveable walls, this approach just makes diagonal
|
||
walls align nicer.
|
||
|
||
September 19, 2000
|
||
- Swapped the meanings of the m and n vectors for the wall texture mapper
|
||
and got the correct vectors to use. Unfortunately, under most
|
||
circumstances, they generate values too big for 16.16 fixed point.
|
||
|
||
September 18, 2000
|
||
- Changed R_RenderBSPNode() to check against the bbox for front nodes as
|
||
well as back. Must remember to be on the lookout for drawing errors this
|
||
might cause, since the old R_CheckBBox() was too inaccurate for this.
|
||
- Tried to change wall texture mapping to use the same "magic" vectors that
|
||
I use for tilted planes, but I don't trust the vectors I derived: The
|
||
u/z vector depended on (x,y), but v/z depended only on x, just the opposite
|
||
of what it should be.
|
||
- About the adjacent wall problem, that was caused by a subsector with a
|
||
single seg viewed almost head-on. Changing R_CheckBBox() to use the same
|
||
transforms as R_AddLine() fixed the problem.
|
||
- Fixed some bad cases for my clipping code in R_AddLine(). Although I had
|
||
already used it in my prototype engine with several Build maps, I found
|
||
problems in Doom2 MAP02 that needed fixing.
|
||
|
||
September 16, 2000
|
||
- Changed wall projection in r_bsp.cpp to use more standard 1/z perspective
|
||
projections instead of polar coordinates and got the desired result: no
|
||
more excessively jiggly walls. Now I need to do it with the wall texture
|
||
mapper, so that wall textures don't jiggle either. One minor problem:
|
||
Adjacent walls can sometimes be one pixel apart. (Why?)
|
||
|
||
September 13, 2000
|
||
- Added the 181 special to slope floors/ceilings at two-sided walls.
|
||
- Fixed sporadic rendering problems with masked mid textures caused by
|
||
not ensuring sprflipvert was false.
|
||
- Added "world" as a valid ambient sound type, for consistancy with the
|
||
other types. Ambient sounds without a type specified still default to
|
||
world.
|
||
- Change P_AimLineAttack() to return a pitch instead of slope. It also
|
||
returns the actor's pitch instead of 0, if nothing to aim at was found.
|
||
Also changed it to be responsible for limiting the player's autoaim,
|
||
since this is a more logical place than in the routines that call it.
|
||
This simplified P_SpawnPlayerMissile() and P_BulletSlope().
|
||
|
||
September 12, 2000
|
||
- Created a generic Trace() function.
|
||
|
||
September 11, 2000
|
||
- Finished the assembly plane drawer. Or, rather, the Pentium Pro and higher
|
||
version, since it uses CMOV instructions.
|
||
- Things to do:
|
||
Create a Pentium version of the plane drawer.
|
||
Create a trace function that knows about planes and replace all the
|
||
redundant code in the different traversal iterators.
|
||
Fix the bots so they understand planes.
|
||
Fix movement code so that planes are treated as planes and not as a
|
||
bunch of discrete steps.
|
||
|
||
September 9, 2000
|
||
- Started work on the assembly plane drawer. It's your standard subdividing
|
||
affine mapper using the overlapped FDIV trick, but with Doom-style lighting.
|
||
It's about four times faster than the previous C version, and at high enough
|
||
resolutions, it's even faster than the wall drawer. But it's not complete:
|
||
It doesn't draw incomplete subspans at the end of a span.
|
||
|
||
September 6, 2000
|
||
- Made some optimizations to the plane renderer. It now runs nearly 13 times
|
||
faster than before (in the debug build). Adding some inline assembly to
|
||
R_MapTiltedPlane() to convert floats to ints (instead of using (int) to
|
||
cast it) sped it up to 20% of its original time. Most of the rest was
|
||
achieved through the standard technique of splitting it up into spans and
|
||
using affine mapping for those spans. Interestingly, in the debug build,
|
||
the span-based approach is only about half the speed of the "perfect"
|
||
implementation and no faster. ("Perfect" is in quotes because there is
|
||
some error built up by using deltas between pixels instead of calculating
|
||
1/z, u/z, and v/z anew each pixel, so it's not really perfect, but it is
|
||
very close.) Hopefully converting this to assembly will give another good
|
||
speed up.
|
||
|
||
September 5, 2000
|
||
- Finished preliminary renderer for planes. They draw properly, but very
|
||
slowly. (With one divide, seven multiplies, and three compiler-generated
|
||
calls to ftol per pixel, that's to be expected.)
|
||
|
||
September 4, 2000
|
||
- Continued work on planes.
|
||
|
||
September 2, 2000
|
||
- Moved R_DoorClosed() into R_AddLine() so it can use the already-calculated
|
||
ceiling/floor heights without making them global variables.
|
||
|
||
September 1, 2000
|
||
- Continued work on planes.
|
||
-Removed tsilheight and bsilheight from drawseg_t, since they're not
|
||
particularly useful when the floor or ceiling isn't at a constant height.
|
||
|
||
August 30, 2000
|
||
- Continued work on planes.
|
||
|
||
August 29, 2000
|
||
- Started work on adding real floor/ceiling planes. (And I do mean planes,
|
||
not just slopes.)
|
||
|
||
August 28, 2000
|
||
- Removed the "too far off the side?" check from R_ProjectSprite(). The fix
|
||
for wide FOVs made sprites disappear when they weren't very far away.
|
||
- Started work on extended skins by writing the spec notes in skins.cpp.
|
||
|
||
August 24, 2000
|
||
- Fixed memory corruption when trying to add more coop bots than there are
|
||
enough single player starts for: DoAddBot needs to check for the start,
|
||
not PlayerThink. Otherwise, when DoAddBot calls G_DoReborn, it thinks
|
||
the player is -1, because it gets the player number from the player start
|
||
for the index passed instead of using the index itself.
|
||
- Tried to prevent drawing areas behind mirrors through a mirror. If no
|
||
segs cross the line defined by the mirror, no walls will be drawn
|
||
through the mirror. However, things can still show up through the mirror.
|
||
Another issue is that gaps can be seen through the junction of two
|
||
adjoining mirrors. I can live with this; A mirror with restrictions is still
|
||
better than no mirror at all, right?
|
||
- Added proper view positioning for mirrors at any angle.
|
||
|
||
August 23, 2000
|
||
- Made mirrors actually flip the view. I still need to handle mirroring
|
||
around arbitrary mirrors instead of just horizontal/vertical ones.
|
||
|
||
August 21, 2000
|
||
- Started working on mirrors by adding semi-portals.
|
||
- Simplified P_InitAnimDefs() by getting rid of the explicit state machine
|
||
and using a separate function to parse flat and texture animations.
|
||
- Fixed sprite clipping for high FOVs.
|
||
- Changed R_DrawPlanes() to calculate texture coordinates relative to the
|
||
middle of the screen instead of the left edge of the screen. Thanks to
|
||
this change, I was able to remove the distscale variable, as it is no
|
||
longer needed. Flats now line up with walls as perfectly as they're going
|
||
to get, given the jiggly nature of wall rendering.
|
||
|
||
August 19, 2000
|
||
- Added support for animating switches and extended the ANIMDEFS lump to
|
||
support defining them. Converted the ANIMATED lump in zdoom.wad to an
|
||
ANIMDEFS lump, and changed the code to support multiple ANIMDEFS lumps.
|
||
|
||
August 15, 2000
|
||
- Added more consistant sorting for sprites in the same (x,y) location: In
|
||
the event of a tie, the sprites' tops are used for sorting. If that is
|
||
insufficient, the sort order is undefined, as before.
|
||
- Removed all references to CALC_TABLES. The game will always generate the
|
||
tables on startup now.
|
||
- Changed finecosine to a class with a single inline operator[] member.
|
||
Now cosine lookups are just as fast as sine lookups, because it's not
|
||
necessary to dereference a pointer.
|
||
- Changed ylookup, columnofs, r_dsclipbot, r_dscliptop, floorclip,
|
||
walltop, wallbottom, negonearray, screenheightarray, xtoviewangle,
|
||
ceilingclip, yslope, and spanend back into fixed-size arrays. Their
|
||
maximum possible values aren't *that* big, and the compiler can generate
|
||
more efficient code when it always knows where the array will be.
|
||
- Another optimization: The renderer no longer draws underneath the console.
|
||
- Thanks to the span renderer's improved accuracy, I have been able to do
|
||
some optimizations to bring R_MapPlane() down to five multiplies per span.
|
||
This is better than the previous eight and also better than the original
|
||
Doom's worst case of six multiplies per span. Doom also used a cache that
|
||
could give it a best case of just three multiplies per span, but I'm not
|
||
sure doing so is really worthwhile.
|
||
|
||
As an added bonus, visplanes with the same orientation will line up with
|
||
each other no matter where they are on screen. Now I just need to fix the
|
||
wall jittering... (That may be too much to ask from the Doom engine.)
|
||
|
||
As part of the optimizations, I:
|
||
- Removed the distscale array and replaced it with a single value.
|
||
- Renamed spanstart to spanend to reflect the fact that it now holds the
|
||
right edges of spans instead of their left edges. Also changed it to an
|
||
array of shorts.
|
||
- Made R_DrawPlanes() responsible for maintaining the texture coordinates.
|
||
Now all R_MapPlane() has to do is scale and pan them.
|
||
- Removed most of my comments from R_DrawPlanes(), since the texture
|
||
coordinates are no longer calculated in a single location.
|
||
|
||
August 14, 2000
|
||
- Added code in w_wad.cpp to limit the number of open wads to some preset
|
||
amount instead of keeping all the wads open at a time, in case the user
|
||
has more wads s/he wants to use than there are file handles available.
|
||
- Figured out the crash from the other day: Decals were only being cached
|
||
if their sizes were unknown; they were not recached if they had been
|
||
flushed.
|
||
|
||
August 12, 2000
|
||
- Added bullet holes. It crashed once in testing when I was foolishly
|
||
running fullscreen, so now I am trying to replicate the problem. The
|
||
error occured in WallSpriteColumn() where it called drawfunc() and was
|
||
an access violation.
|
||
- Implemented RF_FULLBRIGHT for wall sprites.
|
||
- Moved most virtual function bodies that were in header files out of the
|
||
headers so that the compiler wouldn't generate code for them for every
|
||
derived class that didn't supply their own versions.
|
||
- Added FDecalLib and supporting classes.
|
||
|
||
August 10, 2000
|
||
- Removed the MF3_CARRIED flag and replaced it with the carrysec member. The
|
||
intent of MF3_CARRIED was to prevent neighboring sectors from having an
|
||
accelerative effect on actors (an undesirable effect in at least one of
|
||
Heretic's maps), but it also prevented multiple carriers in a single sector
|
||
from having a cumulative effect on the player.
|
||
- Optimized R_DrawSprite() to initialize the sprite clipping arrays to their
|
||
largest possible range instead of initializing them to a special "not
|
||
clipped" value. This saves the time needed to set "not clipped" columns
|
||
to valid values later. It also saves the trouble of making any passes for
|
||
clipping sprites in fake floor/ceiling sectors. Also redid the clipping
|
||
loops so that VC++ produces more optimal code for them.
|
||
- Fixed R_InitTables() to produce an accurate sine table instead of a sine
|
||
table that was slightly off. Also implemented the optimization suggestion
|
||
that was in the code.
|
||
- Moved the << 10 scaling out of R_MapPlane() and into the calculation of
|
||
xscale and yscale in R_DrawPlanes() with the intent to speed up plane
|
||
mapping slightly. As a bonus, adjacent visplanes with the same texture
|
||
now match up far better than before, so it was worth it even if it didn't
|
||
give a huge speedup.
|
||
|
||
August 8, 2000
|
||
- Changed FHelperThread() to use MsgWaitForMultipleObjects() instead of
|
||
MsgWaitForMultipleObjectsEx(), because the latter is not available under
|
||
Windows 95. I also had to change FCDThread to not use QueueUserAPC() to
|
||
handle play finished notifications, since MsgWaitForMultipleObjects() is
|
||
not an alertable function. Fortunately, the reason I used an APC in the
|
||
first place no longer applies, because the CD_WndProc will always be
|
||
called from the helper thread's context, since the window is now being
|
||
created in the thread's context. (See my July 14 log; I don't know why
|
||
it even worked under 98.)
|
||
- Fixed FHelperThread() to call Init() from within the context of the newly-
|
||
created thread, as it should.
|
||
- Eliminated BestColor() from the game and replaced its use with
|
||
ColorMatcher. Then I found a bug in R_BuildPlayerTranslation(): RGB values
|
||
were not clipped to the range [0,255].
|
||
|
||
August 7, 2000
|
||
- Wrote the FColorMatcher class to do color matching much quicker than
|
||
BestColor() with nearly the same quality.
|
||
|
||
August 5, 2000
|
||
- Changed the command parser in c_dispatch.cpp to something simpler, but
|
||
which also allows for using \" inside quoted strings.
|
||
|
||
August 2, 2000
|
||
- Implemented RF_ALPHASHADED for wall sprites.
|
||
|
||
August 1, 2000
|
||
- Implemented RF_REL* flags. They use the texture pegging flags of the linedef
|
||
to keep them in line with the underlying textures if the sector height
|
||
changes.
|
||
|
||
July 29, 2000
|
||
- Implemented RF_CLIPUPPER and RF_CLIPLOWER. RF_CLIPFULL also works for
|
||
one-sided lines, since that was the first case I did when I added the
|
||
bound wall sprites.
|
||
- Added vertical flipping for wall sprites.
|
||
|
||
July 28, 2000
|
||
- Made fullbright a separate field in FState instead of merging it with
|
||
the frame index.
|
||
|
||
July 27, 2000
|
||
- Added these fields to AActor: renderflags, picnum, and alphacolor, although
|
||
they still need to actually be implemented. Also changed the sizes of the
|
||
sprite and frame fields.
|
||
- Started work on wall sprites bound to walls (i.e. decals). Right now, it
|
||
can clip the sprite to one-sided walls.
|
||
- Fixed hotkeys not selecting appropriate item(s) in the menus.
|
||
|
||
July 22, 2000
|
||
- Fixed console drawing extra lines above the top of the screen.
|
||
- Added IWADPaths section to the config file to indicate a default set of
|
||
directories to search for IWADs.
|
||
- Added screenshot_quiet cvar to prevent the screenshot command from
|
||
displaying any messages when a screenshot is captured.
|
||
- Added wait and unset console commands.
|
||
- Changed C_DoKey() to execute a copy of the command bound to a key instead
|
||
of the original, because the key might rebind itself and mess up the
|
||
parser if the original command is executed.
|
||
|
||
July 21, 2000
|
||
- Changed FindSprite() in d_dehacked.cpp to use DWORDs for comparisons.
|
||
- Added Thing_Move and ThrustThingZ specials from Skull Tag. Also added
|
||
Skull Tag's newtid parameter to Thing_Spawn(NoFog).
|
||
- Changed blocked pillars to stay in one place until not blocked, because
|
||
they had stopped doing that, probably because of something I did for
|
||
stacked things on moving sectors.
|
||
|
||
July 20, 2000
|
||
- Removed the use of memmoves in R_ClipWallSegment(). VC++ generates more
|
||
optimal code using for loops, because memmove generated a function call.
|
||
- Fixed R_DrawVisSprite() not always drawing the full width of a sprite when
|
||
using r_columnmethod 1.
|
||
- Added x and y thing scaling factors. Range is 0-255, and 63 is the default.
|
||
Actual scale is (scale+1)/64.
|
||
- Changed R_DrawSprite() to clip sprites against drawsegs based on depth
|
||
and not vertical scale. Also added an extra parameter to
|
||
R_ScaleFromGlobalAngle() that receives the depth of the passed angle.
|
||
- Fixed Heretic's bloody skull transitioning to one of the player's states.
|
||
- Removed MF3_SKINNED flag and added a skin field for every actor.
|
||
- Made -host 1 not start a multiplayer game without starting the network,
|
||
because I currently have no TCP/IP stack installed on my computer.
|
||
- Fixed players being able to gib infinitely under a crusher.
|
||
- Changed crushing ceilings to behave more like Doom again: Things that were
|
||
on the floor stay on the floor, and things above the floor get pushed into
|
||
it.
|
||
- Fixed "jiggly" sprites where each columns' textures were not aligned
|
||
properly. Also fixed a bug in rt_map4cols_asm1() and rt_map4cols_asm2()
|
||
that was less obvious with the jiggly sprites: The right 2 pixels of
|
||
odd-length runs were swapped.
|
||
- Fixed bug in R_DrawColumnHorizP_C(): Mapped one pixel too many.
|
||
- Condensed R_ClipSolidWallSegment() and R_ClipPassWallSegment() into
|
||
R_ClipWallSegment(), since they were nearly identical.
|
||
|
||
July 19, 2000
|
||
- Fixed WritePCXfile(). I was writing two extra header bytes.
|
||
- Added assembly versions of the scaling masked block drawers and made them
|
||
support clipping the block to the screen.
|
||
|
||
July 17, 2000
|
||
- Added assembly versions of the non-scaling masked block drawers and made
|
||
them support clipping the block to the screen.
|
||
|
||
July 15, 2000
|
||
- Slightly optimized parallax sky drawing.
|
||
- Changed the controls menu to only grab the mouse when it's waiting for a
|
||
key to bind to an action.
|
||
- Changed the DirectInput keyboard reader in i_input.cpp to read the entire
|
||
keyboard state and generate events based on the differences between that
|
||
state and the previous one. Reading key transitions with GetDeviceData()
|
||
was more efficient (I assume), but it was too easy for NT to miss
|
||
transitions if CPU time got tight.
|
||
- Added an absolute parameter to I_SetGUICapture to force the setting of
|
||
GUI capturing to a specific setting instead of adjusting a counter. This
|
||
is necessary for proper recovery when catching a recoverable error, and
|
||
GUI capturing was already enabled.
|
||
- Finished CD code (at least I hope I did). Under NT, it can even loop a
|
||
track without bringing the game to a halt. (Yay!) Unfortunately, that
|
||
seems unavoidable under 9x. Oh well.
|
||
|
||
July 14, 2000
|
||
- Under NT, APC calls do not seem to work when there is an outstanding MCI
|
||
notification. Now FHelperThread uses an event to signal the thread to quit.
|
||
- Here's a mean difference between NT and 98 (as far as I can tell): Under
|
||
98, each thread has its own message queue. Under NT, each thread shares
|
||
a single queue for the entire process. Now I use an APC call to restart
|
||
playback, because I don't know what context the WndProc is runnning in.
|
||
(I could check the OS version and work accordingly, but then I'd have two
|
||
methods to do the same thing, and I have no guarantee Microsoft won't
|
||
change things in a future version of Windows.)
|
||
- Changed autoexec handling so now you can run any number console scripts
|
||
automatically.
|
||
- Added a new config file format that can store information for multiple
|
||
games (i.e. Doom, Heretic, and Hexen) and keep the appropriate settings
|
||
separate. This is your basic ini-style file, rather than a list of
|
||
console commands.
|
||
|
||
July 11, 2000
|
||
- Removed an I_PauseMouse() call from Win32Video::SetMode() that was
|
||
preventing the game from grabbing the mouse in windowed mode at startup.
|
||
(Why was that in there?)
|
||
- Implemented localized ACS strings in the game. It's even smart enough to
|
||
detect when the user changes the regional settings!
|
||
|
||
July 8, 2000
|
||
- Created enhanced ACS format (ACSE) and used it to add string localization
|
||
support to the language.
|
||
- Added InterpolationSpecial (#9075) whose special is activated whenever
|
||
a PathFollower reaches an InterpolationPoint with the same special.
|
||
- Fixed stack overflows when all the patrol points in a path are so close
|
||
together that a monster can touch them all at once, by setting
|
||
MF_JUSTATTACKED when the monster reaches one point to force it to move
|
||
when SetState() is called instead of cycling to the next point.
|
||
- Renamed AWayPoint to APatrolPaint.
|
||
|
||
July 5, 2000
|
||
- Moved the StatusBar->Tick() call inside P_Ticker() so that the status bar
|
||
doesn't tick when the game is paused.
|
||
- Reworked the string-building p-codes in p_acs.cpp so that the string gets
|
||
built as each p-code is encountered instead of waiting until the end p-code.
|
||
This is safe because a properly-generated script will never enter a wait
|
||
state between the begin and end p-codes (which I initially thought it
|
||
might).
|
||
- Changed the meaning of some HUD message X coordinates:
|
||
[ 0.0, 1.0]: Position between left and right edge valid box locations
|
||
[-1.0, 0.0): Position between left and right edge of screen
|
||
( 1.0, 2.0]: Same as [0.0,1.0], but center each line inside box
|
||
[-2.0, 1.0): Same as [-1.0,0.0), but center each line inside box
|
||
- Added FHUDMessageTypeOnFadeOut class.
|
||
- Added an id for use with Attach/DetachMessage(). The status bar can now
|
||
keep track of HUD messages for you and automatically deletes an old version
|
||
of a message when a newer one is attached. An id of 0 means not to track
|
||
the message.
|
||
- Added the hudmessage ACS command.
|
||
- Tried improving the accuracy of span drawing by increasing precision (i.e.
|
||
a>>6 is better than (a>>16)<<10), but it didn't seem to do any good. Still,
|
||
as a remnant of that there is now a function FixedMulDiv(a,b,c) that
|
||
calculates the fixed point result of a*b/c. Even if it's not much more
|
||
precise than FixedDiv(FixedMul(a,b),c), it's at least marginally faster,
|
||
since it does no shifts.
|
||
- Changed APathFollower::Activate() to reposition itself to the first node so
|
||
that it doesn't briefly appear at its old location when activated.
|
||
- Changed AInterpolationPoint::PostBeginPlay() to FormChain(). Now it's called
|
||
whenever something that uses the path wants to get on the path. Thus, we can
|
||
be sure that the path is actually completed when the thing wants to get on
|
||
it (at level start), which it wouldn't be if the thing was placed on the map
|
||
before all the points of the path.
|
||
- Simplified AInterpolationPoint::ScanForLoop().
|
||
|
||
July 4, 2000
|
||
- Added sector actions for players landing on floor, hitting ceiling, entering
|
||
a sector, leaving a sector, hitting use inside a sector, or hitting use on
|
||
a sector's wall. The way this is exposed to level designers is the same as
|
||
Skull Tag's 9999 thing (action taken whenever the player is on the floor),
|
||
but is more flexible because it supports multiple activation types and you
|
||
can have multiple actions in a single sector.
|
||
|
||
July 3, 2000
|
||
- Added an effect for respawn protection.
|
||
- Added dmflags2 cvar, and consolidated weapondrop and nobfgaim into it. Also
|
||
implemented Skull Tag's respawn protection and barrel respawning into it.
|
||
- Added the FFlagCVar class. This just maps onto a FIntCVar (i.e. dmflags)
|
||
and allows a more meaningful way for the user to manipulate it than by
|
||
changing bit values directly.
|
||
|
||
June 27, 2000
|
||
- Removed the restriction in ChangeCamera that it can only change the
|
||
player's view to SecurityCameras. Now the proper way to activate a
|
||
moving camera is to use both ChangeCamera and Thing_Activate. ChangeCamera
|
||
sets the player's view to the camera, and Thing_Activate gets it moving.
|
||
- Changed the automap so that changes to the am_*color cvars take effect
|
||
immediately instead of the next time the automap is toggled.
|
||
|
||
June 26, 2000
|
||
- Got rid of cvar_t and switched to a subclassable FBaseCVar class. Now the
|
||
game actively recognizes different cvar types.
|
||
|
||
June 14, 2000
|
||
- The -iwad parameter can now specify a directory, as in BOOM.
|
||
- Changed -warp parameter so that using -warp x with ExMx games will use
|
||
episode 1, map x instead of episode x, map unknown.
|
||
- Added a dialog box to select the IWAD to use if the game finds more than
|
||
one.
|
||
- Switched the compression library from mini-LZO to zlib. Zlib gives better
|
||
compression, but still seems pretty fast (hard to judge on a P2-350 :-).
|
||
More importantly, zlib is not GPL (it has a BSD-style license) and I can't
|
||
have something so relatively minor as a compression library trying to attach
|
||
its license terms to the included Heretic and Hexen source, which are not
|
||
GPL.
|
||
|
||
June 10, 2000
|
||
- Modified FindLevelByNum() to check that a map exists before returning a
|
||
level with that number, because I have Doom 1 and 2 using the same levelnums
|
||
for different maps.
|
||
|
||
June 7, 2000
|
||
- Added MF3_SKINNED flag to prevent sprite changing when calling SetState().
|
||
- Added fallingdamage and nofallingdamage MAPINFO flags.
|
||
- Added support for RIFF CDDA files.
|
||
- Added support for CD tracks as music. The cdtrack and cdid MAPINFO keys can
|
||
be used to select it for a specific map.
|
||
|
||
June 6, 2000
|
||
- Added the CVAR_NOINITCALL flag to allow for cvars with callbacks that
|
||
aren't called automatically during initialization.
|
||
|
||
June 5, 2000
|
||
- Moved all the CD-related MCI calls into a separate thread in an attempt to
|
||
avoid pauses when looping a CD track. A ring buffer is used to send
|
||
commands from the main thread to the helper thread. Unfortunately, the game
|
||
still stalls on MCI_PLAY commands. Apparently, every thread in the process
|
||
calling mciSendCommand() is halted until the play has begun. :-( Even
|
||
though the separate thread turned out to be useless, I'm keeping this
|
||
architecture, because if there is someway to avoid the pause, it probably
|
||
won't be by using the game thread for CD control.
|
||
|
||
June 3, 2000
|
||
- Started work on CD support after (finally) finding information about using
|
||
different CD drives hidden in the Microsoft Knowledgebase.
|
||
- Added Win32 clipboard support (copy & paste) to the console and chat mode.
|
||
|
||
May 29, 2000
|
||
- Implemented some spiffy interpolated path stuff: APathFollower,
|
||
AMovingCamera, and AActorMover.
|
||
- SetPlayerProperty should work in open scripts now. Needed to make sure it
|
||
was non-NULL.
|
||
|
||
May 24, 2000
|
||
- Did a release build under Win98, and it took ~4.25 minutes to link--about
|
||
twice as long as NT. Ack!
|
||
- Fixed improperly freeing a MUSSong after playing a MIDI. I guess
|
||
redefined virtual member functions for subclasses don't work in a
|
||
superclass's destructor. (Which makes sense, since the subclass's stuff
|
||
is already gone by the time any classes it's derived from destruct.) So
|
||
I replaced MIDISong::IsMUS() with a variable MUSSong::m_IsMUS.
|
||
|
||
May 2, 2000
|
||
- Seem to have fixed 3D sound crashes; listener position and velocity were
|
||
being calculated using FLOAT2FIXED instead of FIXED2FLOAT, so they were
|
||
very big and apparently overflowed the drivers. Unfortunately, the sounds
|
||
are really noisy.
|
||
|
||
April 28, 2000
|
||
- Revised the event system by creating a generic EV_GUI_Event type in
|
||
anticipation of creating at least a minimal windowing system. The console
|
||
now uses this system for input, which will hopefully resolve certain
|
||
console key down misses under NT. (Running 98 right now, so can't check.)
|
||
|
||
April 27, 2000
|
||
- Tried to add 3D sound support. Gave up after several nasty crashes that
|
||
left me with no clue what I was doing wrong.
|
||
|
||
April 13, 2000
|
||
- Fixed P_DamageMobj not pushing things if the source was a player.
|
||
|
||
April 11, 2000
|
||
- Increased map and world variable counts to the amounts Ty Halderman raised
|
||
them to in acc.
|
||
- Implemented clearinventory, checkinventory, giveinventory, and takeinventory
|
||
ACS functions. Still need to test them.
|
||
- Added support for playing a specific order of a MOD and changing the song
|
||
from ACS.
|
||
|
||
April 10, 2000
|
||
- Skins with sounds that precede the S_SKIN identifier now work. A side-effect
|
||
of this is that skin wads can no longer replace non-skin resources. (This is
|
||
intentional.)
|
||
- Added the sc_carry_players type to DScroller, which only carries players
|
||
(hence the name), to match Heretic and Hexen.
|
||
- Added an MF3_CARRIED flag to keep track of which actors have been pushed
|
||
by a DScroller, so that adjacent small sectors with the same scrolliness
|
||
do not have cumulative effects on a thing.
|
||
- Changed I_StartSound to let FMOD pick a free channel at the suggestion
|
||
someone e-mailed to me. It still seems to work for me, and hopefully it
|
||
will work for everyone else now, too.
|
||
|
||
April 4, 2000
|
||
- Why did I decide to use the MFC names for the macros RUNTIME_TYPE and
|
||
RUNTIME_CLASS? It's confusing. _TYPE: Return the TypeInfo for an existing
|
||
instance of an object. _CLASS: Return the TypeInfo for a class.
|
||
- Fixed running with -nosfx crashing the game when trying to play a MOD/MP3.
|
||
|
||
April 3, 2000
|
||
- Change P_Move() again so that monsters stepping down steps move down
|
||
immediately instead of falling under gravity because it looks better.
|
||
- Changed FMOD initialization sequence to be more tolerant of failure.
|
||
- Added checks for self->target to the A_FatAttack? routines.
|
||
|
||
March 29, 2000
|
||
- Fixed dehacked patches changing "BFG Cells/Shot".
|
||
- Fixed PickPrevWeapon to properly wrap from low to slot 0 to 9.
|
||
|
||
March 28, 2000
|
||
- Added the ACS internal functions spawn and spawnspot. Also added support
|
||
internal functions with optional parameters to acc.
|
||
- Fixed console not maintaining correct text color when splitting lines.
|
||
|
||
March 27, 2000
|
||
- Fixed ACS sound commands only supporting volumes 0 and 127 (was not
|
||
converting to float when dividing).
|
||
- Changed the status bar number drawers to round down to the closest "good"
|
||
number if the space allocated for the number's display is too small.
|
||
- Changed friendly fire so that it is a scaler like UT, and not a simple
|
||
on-off dmflag. Of course, this means it's a cvar now.
|
||
- Changed teamplay so you can still hurt yourself even if you can't hurt your
|
||
teammates. You can also telefrag teammates now in those instances where you
|
||
happen to respawn where a teammate is standing.
|
||
- Added MF3_NOTARGET flag so that Heretic bosses can be ignored if they happen
|
||
to hurt something, but Doom bosses are not.
|
||
- Added a playerinfo command to peek at the userinfo for any player in
|
||
the game.
|
||
- Fixed D_ReadUserInfoStrings() ignoring the last value in a compacted
|
||
userinfo list, causing neverswitchonpickup to not be replicated during
|
||
netgame startup.
|
||
|
||
March 25, 2000
|
||
- Skins with no frames get removed from the list.
|
||
- Duplicate skins get renamed to avoid conflicts.
|
||
|
||
March 24, 2000
|
||
- Fixed crash when running with +set developer 1.
|
||
- Fixed savegame slots drawn too high in the Doom menus. (I unwittingly
|
||
raised them at some point.)
|
||
- Turend off auto-monster respawning on skill 4 when not playing Doom.
|
||
- Fixed locked, repeatable, local doors being translated with their tags
|
||
intact (should be 0).
|
||
- Disabled highlighting of teleport lines if their activation type is
|
||
monster cross.
|
||
- Added support for Doom maps that use teleport dests in sectors with 0 tags.
|
||
- Fixed Heretic stair speeds (was 1/4 too slow, because they were going at
|
||
Doom speed).
|
||
- Fixed cursor drawn in wrong column on video modes menu. (184 is not the
|
||
same as 104.)
|
||
|
||
March 13, 2000
|
||
- Linking the release build now takes 2:35. :-(
|
||
- Added some more debug output to i_sound.cpp.
|
||
- Added a hack to PIT_RadiusAttack() to make the Romero head easier to hit.
|
||
- Fixed rippers doing no damage because P_CreateSecNodList() altered tmthing.
|
||
- Fixed the holdatkstate used by the powered-up phoenix rod.
|
||
- Fixed "bouncing" problems when standing still on the waggly muck in
|
||
Hexen map08.
|
||
- Discovered only players were having their z velocity reset to 0 when they
|
||
hit the floor. Fixed. Now I don't need the MF_CRASHED flag I added earlier.
|
||
- Made demon scroller more efficient.
|
||
- Fixed bunny scroller showing end screen for first 230 tics.
|
||
- Changed quit message for non-Doom games.
|
||
|
||
March 8, 2000
|
||
- Fixed New Game menu not displaying properly with Ultimate Doom.
|
||
- Made FImageCollection::Uninit() more complete to avoid potential problems
|
||
when turning off the crosshair.
|
||
|
||
March 6, 2000
|
||
- Stepping out of a floorclipping sector now adjusts the player's viewheight.
|
||
- Added the Hexen decorations.
|
||
|
||
March 5, 2000
|
||
- Tweaked P_CheckPosition() some more.
|
||
- Changed DThinker::DestroyAllThinkers() to call EndFrame() after each
|
||
thinker gets destroyed.
|
||
|
||
March 2, 2000
|
||
- Fixed console not showing top line of its buffer.
|
||
- Made some DeHackEd compatibility fixes.
|
||
- Fixed stealth Hell Knight having same doomednum as stealth Baron.
|
||
- Changed sound code to not override sounds with the same priority. Fixes
|
||
continuous ambient sounds fighting for the same channel in low channel
|
||
environments. (e.g. only one sfx channel)
|
||
- Fixed the monster morphers to transfer tids and specials to the morphed
|
||
monsters.
|
||
- Fixed ambient sounds replaying too soon (i.e. one tic after they start).
|
||
- Changed DoLoad in i_sound.cpp to use FSOUND_Sample_Upload instead of
|
||
FSOUND_Sample_Lock. Hopefully will fix sound problems on some cards.
|
||
- Fixed PatchAmmo() not checking to make sure a weapon is present before
|
||
checking its ammo member.
|
||
|
||
March 1, 2000
|
||
- Added dummy entries for the splash sounds to the Doom section of zdoom.wad's
|
||
SNDINFO to avoid warnings when starting Doom.
|
||
- Set BaronOfHell to proper mass.
|
||
- Modified DObject::DestroyScan (both versions) to scan each sector's
|
||
soundtarget field if a destroyed object is a PlayerPawn and clear
|
||
matching fields.
|
||
- Made jumping velocity a PlayerPawn property
|
||
- Set MF3_DONTSPLASH for chicken feathers.
|
||
- Fixed Heretic secret level exits.
|
||
- Fixed imps/lost souls slamming into things and crashing because they
|
||
ended up calling P_CheckPosition recursively.
|
||
- Fixed crashing when trying to scroll past the top of options menus that
|
||
fit entirely on the screen.
|
||
- Added Hexen cheats. (Note that not all Heretic and Hexen cheats are
|
||
implemented, because I didn't feel it was worth reimplementing their
|
||
behavior--such as Heretic's gimme or Hexen's version of the same).
|
||
|
||
February 29, 2000
|
||
- Redid cheat parser and added Heretic cheats.
|
||
- Added heretic.wad, heretic1.wad, and hexen.wad to the list of iwads
|
||
searched for.
|
||
- Fixed to properly detect and use shareware heretic1.wad.
|
||
- Fixed morphed player making normal player pain sounds.
|
||
- Fixed P_MorphPlayer not setting camera and morphTics.
|
||
- Fixed activated monsters not triggering SPAC_MCROSS lines, because
|
||
AActor::Activate was clearing everything in flags2. (Used ! instead of ~).
|
||
- Fixed mapthings being spawned with wrong angles due to round-off error.
|
||
- FWeaponSlot::AddWeapon no longer adds a single weapon to a slot more than
|
||
once. Fixes nextweap not working with fast monsters. They were added once
|
||
at init time, and again when fast monsters were set.
|
||
- Added LeavingIntermission state for intermission to avoid trying to draw
|
||
after the graphics have been freed.
|
||
- Loaded BigFont for Doom game.
|
||
|
||
February 27, 2000
|
||
- Implemented infinite ammo option for Heretic weapons.
|
||
- Set particle fountain heights back to 0 (missed them during conversion).
|
||
- Added option to flip player view in player setup menu between front
|
||
and back.
|
||
- Fixed stepping onto a thing and getting stuck inside another thing
|
||
above you.
|
||
- Fixed crash when starting with -loadgame.
|
||
- Fixed moving into walls when on top of things (such as when killing
|
||
something next to a wall with gauntlets and being pulled forward on top
|
||
of the dead thing before it clears MF_SOLID).
|
||
- Fixed text aligned improperly at high resolutions on the intermission's
|
||
"now entering" screen.
|
||
- Fixed missiles climbing up steps before exploding (very noticeable with
|
||
mace balls.)
|
||
- Gave AMaceFX1 MF_DROPOFF. (It was missing it.)
|
||
- Fixed P_HitFloor to return true/false based on the floor's liquid status.
|
||
- Fixed Heretic weapons drawn too high at high resolutions with st_scale 0.
|
||
- Fixed mummies not attacking you. Forgot to uncomment some stuff I had
|
||
commented out for checking the collision detection.
|
||
|
||
February 25, 2000
|
||
- Did a release build and timed it as ~70 seconds spent linking.
|
||
- Disabled messagemode when confirmation messages are up.
|
||
- Switched to the console font to display key names in the controls menu,
|
||
because the Raven fonts don't have enough characters for all the keys.
|
||
|
||
February 24, 2000
|
||
- Gave the Heretic imp chunks masses of 5 so they make small splashes.
|
||
- Made the color for locked doors default to green.
|
||
- Added more items to the controls menu and made it scrollable.
|
||
- Doom, Heretic, and Hexen now use separate config files.
|
||
|
||
February 23, 2000
|
||
- Added support for a TERRAIN lump.
|
||
|
||
February 22, 2000
|
||
- Added translations for Heretic's skullrod rain, lifegem, and player cape.
|
||
|
||
February 21, 2000
|
||
- Tried making the chasecam use the player's viewheight to smoothly move
|
||
itself up when the player stepped up, but it looked odd to see the player
|
||
jump up while the camera moved smoothly, so I took it out.
|
||
- Wrote 4 different iterators for P_ChangeSector that should be able to
|
||
properly handle moving things standing on top of other things. Such
|
||
situations were completely ignored before.
|
||
- Removed limit on intercepts.
|
||
|
||
February 20, 2000
|
||
- Fixed setting skill from menu when fullscreen console is active.
|
||
|
||
February 18, 2000
|
||
- Fixed annoying screen "jiggling" when jumping up onto ledges.
|
||
- Fixed Plat_DownByValue handling.
|
||
- Fixed a lockup problem in situations where stairs are triggered and then
|
||
retriggered, but from the opposite end.
|
||
|
||
February 15, 2000
|
||
- Fixed the display of the player's name on spynext/prev.
|
||
- Added the FHUDMessage class and change C_MidPrint to use it. This class
|
||
can be used to display text at any location on-screen and is patterned
|
||
after Half-Life's text messages. Additional effects besides plain on and
|
||
off are accomplished by subclassing it.
|
||
- Reimplemented Doom's status bar.
|
||
- Fixed instances when bots were not respawning themselves.
|
||
- Fixed bodyque so that it is actually used again.
|
||
- Fixed an (obscure?) error when a thinker destroys the next thinker
|
||
scheduled for thinking while it thinks. The problem can be reproduced
|
||
with the following steps using a deathmatch map with only one start, one
|
||
player, and weapondrop on: 1. You spawn. 2. You spawn a bot without moving.
|
||
3. The bot telefrags you. 4. You drop a clip, then the bot picks it up
|
||
when it moves and destroys it. 5. Because DThinker::RunThinkers() had cached
|
||
the next thinker, it doesn't know the clip was destroyed and tries to make
|
||
it think. The clip thinks, and relinks itself into the world, and causes a
|
||
whole bunch of problems.
|
||
|
||
February 14, 2000
|
||
- Tried separating the different game directories into static libraries to
|
||
see if that would reduce the link time. It didn't seem to have made
|
||
much of a difference, and some classes weren't being linked into the
|
||
executable, so I went back to linking everything together into a single
|
||
executable without any intermediate libraries. The different game
|
||
directories stayed, though, since I like the organization.
|
||
|
||
February 13, 2000
|
||
- Made the Heretic and Hexen scrollers accurately mimic their counterparts
|
||
from those games.
|
||
- Added more endgame types, including a customizable picture viewer.
|
||
|
||
February 12, 2000
|
||
- Also in the way of movement code, I fixed a problem that caused the
|
||
player's view to jump drastically when jumping onto another thing,
|
||
because I was using the player's z in two places where it should have
|
||
been the other thing's z.
|
||
- After much juggling, I believe I finally have the movement code fixed so
|
||
that floating monsters won't float themselves into other monsters. Testing
|
||
was done in Heretic E1M1 by summoning a bunch of mummies and wizards.
|
||
I also cleaned up P_FakeZMovement() so that it's much leaner. I was able
|
||
to find the following causes of the problem: 1. When monsters went up
|
||
steps, they didn't check to make sure there was nothing in the way above
|
||
them. 2. When P_CheckOnmobj() found a monster's move to be blocked, the
|
||
monster could still float down inside the head of it's blocker, causing
|
||
the blocking monster to get stuck until it floated up again.
|
||
|
||
February 9, 2000
|
||
- Added fixeddiv, fixedmul, setgravity, and setaircontrol commands to acs.
|
||
- Added floorclipping from Hexen/Heretic.
|
||
- Moved the turn180 code over to P_PlayerThink.
|
||
|
||
February 2, 2000
|
||
- Got ZDoom to link against ELK and run. While trying to get a setup that
|
||
worked properly with the Scheme reset procedure, I accidentally got a
|
||
setup where Scheme code was calling the main loop every tic. The result
|
||
was that it had to garbage collect a lot. And then I realized that
|
||
Scheme is not the way to go for implementing a real-time game scripting
|
||
language. If the GC has to work a lot when we only call a single
|
||
procedure 35 times a second, think how horrible it would be if 100
|
||
different procedures were called that often (for 100 different actors).
|
||
Ugh. I think I'll do something with ACS instead.
|
||
|
||
February 1, 2000
|
||
- Got ELK (Extension Language Kit) to compile into a usable library. The
|
||
idea was to use it as a simple way for the end user to create new action
|
||
functions for actors.
|
||
|
||
January 1, 2000
|
||
- Fixed P_FakeZMovement so it knows about underwater movement.
|
||
- Added a workaround for the imps continuosly performing their crashstate.
|
||
When P_ZMovement sets the crashstate, it also sets a MF_CRASHED flag, so
|
||
it knows not to do it again. I can't see why Heretic doesn't exhibit
|
||
the same problem. :-(
|
||
|
||
December 30, 1999
|
||
- Changed the changemap command to return harmlessly if called without an
|
||
instigator.
|
||
- Tried adding the Heretic Imp, and it worked, kind of; the imps continuosly
|
||
spew chunks of flesh when they hit the ground after death.
|
||
|
||
December 29, 1999
|
||
- Changed mobjinfo handling so they get set by a class' SetDefaults() method.
|
||
This means that every actor needs to have its own class, but they get more
|
||
control over their defaults depending on the game mode, and it also
|
||
condenses code some, because they only need to list the values different
|
||
from the actor defaults.
|
||
|
||
December 17, 1999
|
||
- Added the dumpmapthings command.
|
||
- Removed the testgibs cvar.
|
||
- Added angle and speed parameters to security cameras, so now they can turn
|
||
like Duke's. Also add pitch parameter.
|
||
- Made ambient sounds recognize activate and deactivate.
|
||
- In DCajunMaster::FakeFire(), the maximum distance a bot will trace is now
|
||
SAFE_SELF_MISDIST. Since they will fire if the trace would have hit
|
||
something past this, there's no sense in wasting time going further if the
|
||
trace hasn't hit anything by the time it gets that far away.
|
||
|
||
December 16, 1999
|
||
- Set the default for fullscreen under Win32 back to 1. Not sure why I had
|
||
it at 0.
|
||
- Made mobjinfos dynamic so they don't need to be in one monolithic info.cpp.
|
||
Now they can be in the file with their related code, and subclassing AActor
|
||
is useful.
|
||
|
||
December 12, 1999
|
||
- Changed DPolyAction::m_Dist to be signed. I'm not sure why I changed it
|
||
to unsigned, because there are lots of places where it gets checked if
|
||
it's less than zero.
|
||
- Added sorting of the cvars that get sent during netgame arbitration. In
|
||
the old system, they were sent out in whatever order they were registered,
|
||
which was compiler-dependant. This worked fine when playing against a copy
|
||
built with the same compiler, but broke when trying to play a version
|
||
built with a different compiler. Thus, Windows, Linux, and OSF/1 versions
|
||
could not play each other.
|
||
|
||
December 11, 1999
|
||
- Made some changes to get the code to compile and run without
|
||
unaligned accesses on Alpha processors. ZDoom will now compile and run
|
||
under OSF/1. It appears to play ordinary Doom levels properly. Levels
|
||
with Hexen features will crash it, and savegames seem to have problems,
|
||
too. (Some of which, I think, is attributable to using LZO for
|
||
compression. It apparently isn't 64-bit friendly.)
|
||
|
||
November 30, 1999
|
||
- Made the Scroll_Texture_Both and TranslucentLine specials dynamic.
|
||
That is, they can be used from inside the game after the level is
|
||
loaded.
|
||
|
||
November 26, 1999
|
||
- Added the hud_scale cvar to control scaling of the fullscreen hud.
|
||
- Removed targettic from AActor, because it's no longer meaningful (and
|
||
hasn't been for quite a while). Replaced it with dummies in the
|
||
AActor serializer so that savegame compatibility can be retained.
|
||
- Fixed a next thinker determination problem in DThinker::RunThinkers().
|
||
A thinker can destroy itself during its RunThink(), so the next thinker
|
||
to run needs to be determined before we run the current thinker, not
|
||
after.
|
||
- Added calls to I_FinishUpdateNoBlit() and I_BeginUpdate() at
|
||
strategic locations in R_RenderPlayerView().
|
||
|
||
November 25, 1999
|
||
- Removed the outer layer of compression from savegames. Since all
|
||
the snapshots in the savegame are already compressed, compressing
|
||
them again will do little good.
|
||
- Fixed archiving of defered ACS scripts. There were actually two
|
||
problems here. One, if there were any, it would get stuck in an
|
||
infinite loop. Two, they were being saved in a format different
|
||
from what they were being loaded as.
|
||
- Fixed the operation of FLZOMemFile's serializer so that it restores
|
||
to the state it was archived in (e.g. an imploded file stored in
|
||
m_ImplodedBuffer, as opposed to an uncompressed file stored in
|
||
m_BUffer).
|
||
|
||
November 24, 1999
|
||
- Fixed BOOM generalized locked doors so that the open/close type will
|
||
actually close.
|
||
|
||
November 23, 1999
|
||
- Machines that use -join will now select their port automatically.
|
||
- Here's another problem the bots helped me catch: DThinker::
|
||
DestroyAllThinkers() was still deleting each thinker. The correct
|
||
approach now is to call Destroy() on each thinker, and then call
|
||
DObject::EndFrame() to perform the actual deletion.
|
||
- Those bots are great for stress testing. Thanks to them, I was able to
|
||
find and correct a problem with my Destroy() implementation: DThinker
|
||
also needs to implement Destroy() to get the object out of the thinker
|
||
list. Otherwise, you can do things like destroy an actor, then have
|
||
the thinking code move it before it gets removed from the thinker list,
|
||
which leaves the block and/or sector pointers messed up and causes all
|
||
sorts of odd and nasty behavior.
|
||
|
||
October 27, 1999
|
||
- Added my own fixes for -host and -join to handle aborts better.
|
||
- Tweaked underwater friction in P_GetFriction().
|
||
- Added Jeffrey Cuenco's fixes for the -host and -join parameters.
|
||
|
||
October 26, 1999
|
||
- Added a check in A_Scream() to make sure the actor has a death sound.
|
||
- Fixed demo sync problems caused by playing demos back with a cl_pufftype
|
||
different from what they were recorded with. I have no idea why it should
|
||
make a difference, since the puffs are supposed to be inert, but spawning
|
||
them and keeping them hidden when cl_pufftype is 1 fixes the problem.
|
||
- Implemented stale pointer cleaning. If you want to remove an object now,
|
||
call its Destroy() method instead of deleting it. The object will be
|
||
placed in a queue. At the end of the frame, all objects will be scanned
|
||
for references to objects in the queue, and any references that are found
|
||
will be NULLed. Then the objects will be deleted.
|
||
|
||
Any objects that have (DObject *) (or some subclass of DObject) members
|
||
need to be implemented with the IMPLEMENT_POINTY_SERIAL or
|
||
IMPLEMENT_POINTY_CLASS macros. See the implementation of AActor in
|
||
p_mobj.cpp for an example of their use.
|
||
|
||
September 15, 1999
|
||
- Fixed a nasty bug when saving big games. FArchive used pointers into the
|
||
m_ObjectMap array when mapping objects to indices. Now it uses indices
|
||
all the way through so that they will still remain valid if m_ObjectMap
|
||
has to grow.
|
||
- Reduced the rate at which arbitration packets are sent out to 4 times per
|
||
second. Combined with their reduced size, this will hopefully solve
|
||
problems I understand some people were having using 1.18 with DoomServ.
|
||
(Based on the assumption that their problems were caused by the lack of
|
||
bandwidth offered by modems.)
|
||
- Reduced the size of netgame arbitration packets by removing the names of
|
||
the cvars the values represent. When playing with the same copy of the
|
||
executable, these are implicit in the order in which the values appear in
|
||
the stream, so storing the name of the key is essentially redundant.
|
||
- Pulled out the original 1.18a source and fixed loading of savegames before
|
||
a new game is begun. The problem was in DCajunMaster::RemoveAllBots(),
|
||
where the consoleplayer's camera is restored to the console player if
|
||
viewing a bot. Before the game begins, the camera field is NULL. Also
|
||
changed caught recoverable errors so that bots are removed and level
|
||
snapshots are deleted.
|
||
|
||
September 12, 1999
|
||
- Made actor movement floating-point based. I had already done the fp time
|
||
system (to an extent) before I had to pull out the 1.18 source and fix
|
||
bugs. Gravity seems to be inversely proportional to the ticrate. Can't
|
||
figure out why.
|
||
|
||
Okay, I was stupid. I accidentally erased the version of the log file that
|
||
contained my changes from 1.18 to 1.18a.
|
||
|
||
September 5, 1999
|
||
- The +moveup and +movedown commands finally do something.
|
||
- Added a fly cheat.
|
||
- Changed the handling of action commands so that they increment and
|
||
decrement numbers in an array instead of setting and clearing bits in an
|
||
int.
|
||
- Fixed R_AlignFlat(). Apparently, I broke it sometime (or it never worked
|
||
properly in the first place). Also made it simpler.
|
||
|
||
September 3, 1999
|
||
- Added localambientsound and activatorsound ACS commands.
|
||
- Fixed the DLevelScript constructor to place new scripts in the array of
|
||
RunningScripts (if not ACS_ExecuteAlways).
|
||
|
||
September 2, 1999
|
||
- Replaced the error abort in FArchive.cpp when an attempt is made to store
|
||
a DObject, with a NULL object save instead. There are conditions that will
|
||
come up during regular gameplay that will result in dangling pointers.
|
||
Example: A lost soul attacks a monster. The attacked monster then sets its
|
||
target field to the lost soul. Something kills the lost soul, and it
|
||
destroys itself. The other monster is now left with a pointer to nowhere.
|
||
The only reasonable solution to this problem I can think of is to collect
|
||
a list of all objects that want to destroy themselves. At the end of each
|
||
tic, they get destroyed, *and* all thinkers are searched for pointers to
|
||
those object. If any pointers are found, they get NULLed.
|
||
|
||
September 1, 1999
|
||
- Significantly cleaned up G_ParseMapInfo(). It's easier to follow what it's
|
||
doing, and now it's smart enough to give you an error message if you make
|
||
a mistake in your MAPINFO lump instead of hanging.
|
||
- Added a flat warping effect similar to Quake's liquid textures.
|
||
|
||
August 31, 1999
|
||
- Added swimmable water. The forcewater cvar can be used to make all BOOM
|
||
deep water swimmable.
|
||
- C_MidPrint() now adds messages to the console as well as the middle of
|
||
the screen.
|
||
- Fixed the "you need a key" messages to only appear for the player who
|
||
tries to activate the locked door.
|
||
- Restored the code for storing server cvars in savegames.
|
||
|
||
August 30, 1999
|
||
- Made items respawn the default for -deathmatch.
|
||
- After creating some huge log files, I believe I finally fixed the demo
|
||
and network sync with bots. The bots use P_CheckPosition() to determine
|
||
if a spot is free. This function can also causes items to be picked up.
|
||
Thus, on the arbitrator's machine, bots pick up items before they do
|
||
on the other machines, and they can also pick up items that they decide
|
||
not to touch (and so don't pick them up on other machines). To fix, I
|
||
made a wrapper for the bots that turns off their MF_PICKUP flag before
|
||
performing the check and then sets it back after the check is made.
|
||
- Fixed the loading of the "straight-ahead" status bar graphics for skins.
|
||
The corresponding patches weren't being moved into the skin's namespace.
|
||
|
||
August 28, 1999
|
||
- Fixed the bot's FakeFire() so that it doesn't do damage to anything
|
||
that it might hit, by adding another thing instead of using MT_HEADSHOT.
|
||
- Another cause of the sync problem is in P_CheckSight(). If a monster
|
||
is invisible, a random number is used to determine if the thing
|
||
should be reported as not visible.
|
||
- Found part of the problem with bot sync: P_SpawnPlayerMissile() used
|
||
a special routine when a bot wanted to fire. The routine aimed at
|
||
whatever the bot's enemy was set at. Only on the arbitrary (and not
|
||
during demo playback), can enemy ever be non-NULL. Changed this to
|
||
just disable autoaim for bots. Should be effectively the same.
|
||
- Changed P_SpawnPlayerMissile() so that if a player has autoaim set to
|
||
0, it doesn't try adjusting the angle left and right.
|
||
- Fixed projectile velocities by using vector math. Doom calculated the
|
||
velocity on a 2D plane, then added in the vertical component.
|
||
- Fixed the bot's vertical aiming.
|
||
- Rewrote the parts of the Cajun that used degrees to use binary angles
|
||
instead.
|
||
- Changed the Cajun's TurnToAng() function to let it turn both left and
|
||
right, depending on which results in a shorter distance.
|
||
|
||
August 27, 1999
|
||
- Added the Cajun 0.97 code. Needs work yet: Bot looks up/down too far,
|
||
always turns right, demos don't stay in sync, and networking with bots
|
||
probably doesn't work either.
|
||
|
||
August 14, 1999
|
||
- Cleaned out a lot of the no longer relevant docs from the docs dir that
|
||
came from the Linux source.
|
||
- Changed IdentifyVersion() so that it can look for an IWAD in one of four
|
||
directories: current, program, $DOOMWADDIR, and $HOME. (The same search
|
||
order used by BOOM.)
|
||
|
||
August 13, 1999
|
||
- Fixed the DLevelScript constructor. (Using local vars with the same names
|
||
as member vars still isn't a good thing. :-)
|
||
|
||
August 12, 1999
|
||
- Made the vertical calculations in the renderer subpixel-accurate. This
|
||
negates some of the work I did on the 10th. A pity. Something also needs to
|
||
be done about the walls--they are horribly jittery.
|
||
- Moved the calculation of the initial texture coordinate out of the column
|
||
drawers and into their callers. Besides making the column drawers simpler,
|
||
it also allows for some optimizations of masked texture/sprite rendering,
|
||
where the initial coordinate is almost always 0.
|
||
- Added variable field of view. Use the fov command to change it.
|
||
|
||
August 11, 1999
|
||
- When using -nosound, MIDAS's dsmClearBufferFloat() sometimes tries to free
|
||
memory that isn't allocated (apparently already freed). To compensate, I
|
||
avoid initializing MIDAS when -nosound or -nosfx is specified instead of
|
||
setting MIDAS's nosound option.
|
||
- Found that when a stat display is active when the game is quit, a pure
|
||
virtual function call was being made. Unfortunately, when I tried to track
|
||
it down, the problem stopped.
|
||
- Optimized away two multiplies I had added to R_MapPlane() earlier. Oddly,
|
||
performance seems unaffected.
|
||
|
||
August 10, 1999
|
||
- Did some performance tuning for the yslope movement loop in
|
||
R_SetupFrame(). memmove() is not an intrinsic function, so I wrote some
|
||
loops that VC++ optimizes nicely. (Other optimizing compilers should be
|
||
able to do the job just as well.) I also split up the loop that calculates
|
||
the yslope values into three cases so that the body of the loop can be as
|
||
simple as possible.
|
||
It probably wasn't worth the effort...
|
||
- Changed P_SpawnPlayer to set player_t::attacker to NULL so that invalid
|
||
attackers aren't carried over across levels, which can cause the problems
|
||
if you try to save your game before being attacked on the new level.
|
||
- Finished reimplementing hub travel. The new code in FArchive worked
|
||
properly on the first try. (Yay!)
|
||
|
||
August 7, 1999
|
||
- Added some code to FArchive that distinguishes player-controlled actors
|
||
(but not voodoo dolls) so that the stored actors can be overridden by
|
||
explicitly spawned ones when travelling between levels in a hud. Untested,
|
||
but I think it should work.
|
||
- For curiosity's sake, a did a comparison of savegame sizes with 1.17c and
|
||
test9. The map tested was map29, just after spawning. The 1.17c snapshot
|
||
for the level was 99542 bytes uncompressed (20659 compressed). The test9
|
||
snapshot was 111786 bytes uncompressed (14824 compressed). So the new
|
||
archive format is bigger but compresses better, which I'll consider to be
|
||
a good thing, because snapshots are normally stored in memory in their
|
||
compressed state.
|
||
|
||
August 6, 1999
|
||
- Changed the tag changing behavior of W_CacheLumpNum(). Before, it would
|
||
always change a block's tag. Now, it will only change the tag if the new
|
||
one is less than the previous. This way, a block can be promoted from
|
||
PU_CACHE to PU_STATIC, but not the other way around. This was the cause
|
||
of intermittant bugs that were visible in st_new.cpp. ST_New uses some
|
||
graphics that also serve as sprite graphics. When those sprites are drawn,
|
||
their tags were changed to PU_CACHE, and with enough spawning, their data
|
||
could be overwritten, and st_new would never know.
|
||
|
||
August 5, 1999
|
||
- Changed M_Drawer() to use V_BreakLines() to split lines for prompt
|
||
messages, because it wasn't working right. Also fixed a bug in
|
||
V_BreakLines() so that now it will recognize blank lines.
|
||
- Added nofilecompression cvar to prevent compression of LZO files.
|
||
- Fixed savegames.
|
||
- Made the thinkers the first thing that gets serialized in a level
|
||
snapshot (instead of sectors and walls), because a sector's specialdata
|
||
fields might cause a thinker to be serialized. But when
|
||
DThinker::SerializeAll is called, it destroys all existing thinkers,
|
||
including the ones that were created while reading the sectors. Storing
|
||
the thinkers before anything else avoids this.
|
||
- Moved the serialization of player data into G_SerializeLevel. The bots
|
||
use pointers to some actors in their player_s, so we need to keep the
|
||
player data in the same context as the actors they reference. (i.e. They
|
||
need to go in the level snapshot instead of outside of them as was done
|
||
previously.)
|
||
- Also fixed a bug with FLZOFile::Write. If a large write request was made,
|
||
it would only double the amount of memory to store the file in, which
|
||
might not have been enough. Now it doubles it until the buffer is large
|
||
enough to store the new data.
|
||
- Figured out what was wrong with storing FLZOMemFiles in an archive: I was
|
||
forgetting to add the 8 bytes of header to the size of the block to write
|
||
out.
|
||
|
||
August 4, 1999
|
||
- Hubs somewhat work. Level data is properly stored on exit and loaded when
|
||
reentering the level. I just need to fix the player spawning. Savegames
|
||
are another matter. I seem to be having trouble embedding an FLZOMemFile
|
||
inside an archive. It appears to be getting saved properly, but trying to
|
||
decompress it crashes.
|
||
- Got the FArchive class working. It is now able to write out objects and
|
||
reconstruct them, filling in pointers as appropriate. Cool.
|
||
|
||
August 3, 1999
|
||
- Instead of relying on Z_FreeTags to remove all thinkers when a new level
|
||
is started, I now call DThinker::RemoveAllThinkers, so that any subclasses
|
||
of DThinker that have custom destructors can have them called. Currently,
|
||
the only one with a destructor is DACSThinker, which destroys all the
|
||
active scripts.
|
||
- Created a thinker responsible for running the ACS scripts, because it
|
||
makes serializing them easier.
|
||
- Moved some of the mobj handling functions into the AActor class. Most
|
||
notably, P_SpawnMobj and P_RemoveMobj are gone. Use the new and delete
|
||
operators instead. AActor has a constructor that takes the same parameters
|
||
as P_SpawnMobj, so converting old code to use new is easy enough.
|
||
|
||
August 1, 1999
|
||
- Changed the code in i_music.cpp to use a simple class hierarchy for
|
||
defining music formats and how to play them. This removed some (messy)
|
||
switch statements and the nameless unions (that I guess mingw32 chokes on).
|
||
- Rearranged the atterm functions so that I_ShutdownMusic() is called before
|
||
I_ShutdownSound() to prevent crashes when a MOD is playing at shutdown time.
|
||
|
||
July 31, 1999
|
||
- Removed the lists of active ceilings and plats, mainly because it makes
|
||
the serialization code simpler, but also because the same result can be
|
||
achieved (albeit more slowly) by searching the list of thinkers for each
|
||
instance of DCeiling or DPlat.
|
||
- Made the active buttons (button_t) and earthquakes (quake_t) subclasses of
|
||
DThinker (DActiveButton and DEarthquake, respectively).
|
||
- Created a TThinkerIterator template class to manage iterating through the
|
||
list of active thinkers.
|
||
|
||
July 28, 1999
|
||
- Ever since I added the extra network commands (like say) around a year ago,
|
||
I have been executing them the instant they arrived from the network. I
|
||
have only now figured out that this is wrong. They should be stored and
|
||
only executed when the gametic they arrived with is executed. With commands
|
||
like say, the timing is unimportant. With other commands, like changemap,
|
||
it can be vital that all machines execute the command on the same gametic.
|
||
- Made some changes to the ticcmd building code in d_net.cpp to compensate
|
||
for ticdups greater than 1 by dividing pitch and yaw deltas by the ticdup
|
||
value so that the end result of moving the mouse a certain distance is the
|
||
same as if a ticdup of 1 were used. This is also necessary to make bots
|
||
work with ticdups other than 1.
|
||
- Fixed the crazy bot turning. The cause? I was calculating angle deltas for
|
||
the bots' ticcmds based on their yaw when their think routine was called.
|
||
This is incorrect, because that yaw can incorrectly reflect the state of
|
||
the current gametic, because maketic can be more than 1 tic in advance of
|
||
gametic. The correct way is to take the bot's current yaw, add all the
|
||
deltas that haven't been played yet to it, and using the resulting yaw as
|
||
the base for the current maketic's yaw delta. In some ways, this is exactly
|
||
what you would also do for player prediction.
|
||
|
||
July 26, 1999
|
||
- Removed G_InitPlayer(). It was never used and just called G_PlayerReborn().
|
||
|
||
July 23, 1999
|
||
- Spent too many hours tracking down a circular #include dependancy I had
|
||
inadvertantly created yesterday.
|
||
|
||
July 22, 1999
|
||
- Did some work with the savegame serialization.
|
||
|
||
July 21, 1999
|
||
- Changed P_SpawnMapThing() to silently reject mapthings of type -1.
|
||
- Fixed kill command to restore player's MF_SHOOTABLE flag before doing the
|
||
damage.
|
||
- Changed bot observer mode to use noclip instead of noblockmap. Otherwise,
|
||
the player is unable to ride lifts while observing.
|
||
- The bot code spawns bglobal.body1 and bglobal.body2 actors to help with
|
||
aiming. The original code would carry pointers to these over between
|
||
levels, even though all actors disappear when travelling between levels.
|
||
Not a good thing. Fixed.
|
||
|
||
July 20, 1999
|
||
- Changed the network code so that now bots work in network games. Their
|
||
ticcmds are sent along with the arbitrator's to the other players in the
|
||
game. This way, only one computer is responsible for doing the bot
|
||
thinking. (BOOM's random number generator was extremely useful for this.)
|
||
Unfortunately, the bots seem to have trouble aiming with more than one
|
||
live player and often end up spinning wildly.
|
||
- Made weapondrop a server variable.
|
||
- Fixed bots so that they can be recorded in savegames. There were two things
|
||
preventing it before: 1) The bots ticcmd was being written directly to the
|
||
player structure instead of netcmds, so the demo writer never had a change
|
||
to see the bot's commands. 2) There are several places in the bot code that
|
||
fiddle with the bot's angle directly. The quick (and acceptable) fix was to
|
||
keep the fiddling in, but use the new angle to calculate the bot's ucmd.yaw
|
||
value and set its angle back to what it was before being fiddled.
|
||
- Delayed the call to I_InitMusic() in I_InitSound() until after MIDAS
|
||
is initialized. Also removed the call to I_ShutdownMusic() in I_InitSound(),
|
||
since I_ShutdownMusic() will be called automatically at exit.
|
||
|
||
July 19, 1999
|
||
- Made the network arbitrator changeable, so that if player 1 leaves the game,
|
||
someone will still be able to control things.
|
||
- Moved the call to I_FinishClockCalibration() before D_CheckNetGame().
|
||
|
||
July 17, 1999
|
||
- Changed several references in am_map.cpp from plr to the console player's
|
||
camera. Also added colors for inter- and intra-level teleporters.
|
||
- Changed P_PlayerThink() so that the game doesn't die if you try to add more
|
||
bots than there are coop starts (in a coop game, of course).
|
||
- Fixed removebots command so that if you are looking through a bot's eyes
|
||
when you remove the bots, your vision is restored to your own head.
|
||
|
||
July 16, 1999
|
||
- Fixed the rotation of player arrows in the rotating automap in coop games.
|
||
- Changed wipe_initBurn to allocate FIREHEIGHT+5 rows. Apparently FIREHEIGHT+4
|
||
wasn't enough.
|
||
- Fixed SN_StartSequence so that it doesn't attempt to play nonassigned
|
||
sequences. I had broken it when I separated part of the code into a
|
||
separate TwiddleSeqNum function.
|
||
|
||
July 14, 1999
|
||
- Moved the "VectorCopy (RailEnd, end);" line in P_RailAttack() in front of
|
||
the for loop.
|
||
|
||
July 12, 1999
|
||
- Enclosed the bot thinking code inside if (bglobal.botnum) {} blocks so that
|
||
no bot thinking occurs when there are no bots. Also defaulted bot_calcnodes
|
||
to 0. If a bot is spawned, and there are no nodes loaded, bot_calcnodes
|
||
will automatically be set to 1. Now the bots don't eat up any time if none
|
||
are present in the world.
|
||
- Added a generic FStat class. Different statistics can be measured and
|
||
reported by subclassing it. The console command "stat" provides the
|
||
interface to select which stats to view.
|
||
- You cannot directly call a constructor from inside another constructor to
|
||
help do initialization. Instead, you end up with a temporary object that
|
||
is destroyed immediately when the second constructor finishes. This was
|
||
causing crashes with wall scrollers, because their constructor was calling
|
||
the constructor for more general scrollers.
|
||
|
||
July 11, 1999
|
||
- Changed the bot code so that it doesn't go into multiplayer mode until
|
||
after a bot is spawned, so the game won't be in coop mode when players have
|
||
no intention of playing with bots.
|
||
|
||
July 10, 1999
|
||
- Changed ReplaceString() function to properly handle the case where the
|
||
string being replaced is the same as the new one.
|
||
- Cajun bot now runs under ZDoom, although some things aren't perfect (such
|
||
as skin color).
|
||
|
||
July 9, 1999
|
||
- Received the Cajun bot source. Started moving it to ZDoom.
|
||
|
||
July 7, 1999
|
||
- The sky can now scale horizontally as well as vertically (when using
|
||
r_stretchsky), so its aspect ratio is preserved when stretched.
|
||
- Redid the Wu line drawer to support 64 intensity levels and wrote a version
|
||
that used the translucency tables so that it could look good in overlayed
|
||
mode. Also cleaned up the code to make it more readable (to me anyway) and
|
||
removed the use of short ints.
|
||
|
||
July 6, 1999
|
||
- Restored Cmd_Exec to it's 1.17c version. I'm not sure what I was trying to
|
||
accomplish with the changes I made, but they broke it under certain
|
||
situations.
|
||
|
||
July 5, 1999
|
||
- Added Heretic's anti-aliased Wu line drawer to the automap.
|
||
- Delayed the execution of cvar callbacks until the video subsystem has been
|
||
initialized.
|
||
|
||
July 3, 1999
|
||
- ST_Start() now sets the status bar dimensions.
|
||
- Fixed some of the DCanvas member functions that used width and height as
|
||
parameters. Having two function parameters with the same names as two
|
||
member variables is not a good thing...
|
||
|
||
July 2, 1999
|
||
- Converted screen_t to class DCanvas and moved a bunch of the screen drawing
|
||
functions into it. This let me catch a few instances where the screen
|
||
dimensions were being referenced before they were initialized.
|
||
- Found this code in i_input.cpp under WM_ACTIVATE:
|
||
if (Fullscreen)
|
||
{
|
||
extern int DisplayWidth, DisplayHeight, DisplayBits;
|
||
I_SetMode (DisplayWidth, DisplayHeight, DisplayBits);
|
||
}
|
||
Apparently, I added it when converting the video code to OpenPTC and
|
||
completely forgot about it. I still don't remember adding it. This was
|
||
probably the cause of problems starting up in fullscreen mode with some
|
||
chipsets. (Banshee and Voodoo3 are the two I know about.)
|
||
- Changed refreshDisplay() in i_video.cpp to not do anything during startup.
|
||
- Added a WM_GETMINMAXINFO handler to prevent the user from shrinking the
|
||
window smaller than the surface.
|
||
|
||
July 1, 1999
|
||
- Added default aliases for idclip and idspispopd that point to noclip.
|
||
- Further fleshed out the DConsoleCommand and DConsoleAlias classes. Commands
|
||
and aliases are now hashed in the same array, and aliases get saved to the
|
||
config file again.
|
||
- Changed PIT_ChangeSector() to not call P_DamageMobj() if the crushing damage
|
||
is 0. This is the way it used to be in Doom (so I hear; I don't feel like
|
||
checking), but not in Hexen.
|
||
- Added a check to P_SpawnMapThing() to not bother checking mapthings of
|
||
type 0. Apparently, some maps in Final Doom actually have these.
|
||
- DActor.movecount needs to be signed; there are places in p_enemy.cpp that
|
||
test if it is < 0. I had changed it to unsigned. Making it signed again
|
||
fixed the problem in test1 that made monsters act as if they had "bad
|
||
vision."
|
||
- Changed P_AimLineAttack to calculate the top and bottom slope based on a
|
||
spherical 64 degree vertical field of view instead of just adding some
|
||
values to the center slope. With things that look straight ahead, the
|
||
result is the same as the original Doom. With things that don't, the result
|
||
is more correct than before. Also fixes the BFG problem in test1.
|
||
|
||
June 30, 1999
|
||
- Did some cleanup. Released 118test1.
|
||
|
||
June 29, 1999
|
||
- Made the actor's pitch member variable represent an angle between -ANGLE_90
|
||
and +ANGLE_90 exclusive instead of a screen sliding amount. Now the same
|
||
representation can be used for the current engine and any possible future
|
||
ones that offer true 6 DOF. This also makes the relationship between pitch
|
||
and all the slope values Doom uses for collision detection more apparent--
|
||
just take the tangent of the pitch instead of multiplying it by a magic
|
||
number.
|
||
|
||
June 23, 1999
|
||
- Moved the multiplication by lightscalexmul out of the inner wall
|
||
rendering loop so that it can be stepped instead, saving all the time I
|
||
used to be spending multiplying.
|
||
- Finished converting all cvars to a cvar_t class. Use the macros defined in
|
||
c_cvars.h for declaring them. One (possibly significant for mods) change
|
||
is that callback functions are now always called when a cvar is created.
|
||
If callback depends on something else being initialized to work properly
|
||
(see snd_mididevice in i_music.cpp), either make sure the callback only
|
||
does its thing once the stuff it needs has been initialized, or don't
|
||
create any instances of the cvar until the initialization has finished.
|
||
|
||
June 17, 1999
|
||
- Added flat scaling, manual panning, and rotation.
|
||
- Fixed a problem with PCD_UNARYMINUS. It was popping the result off the
|
||
stack, so any calculations that used it were wrong and could potentially
|
||
crash.
|
||
|
||
June 15, 1999
|
||
- Got the program to compile and link as C++ code. Some structs have been
|
||
transformed into classes, and savegames are disabled until I can get
|
||
serialization to work.
|
||
|
||
June 11, 1999
|
||
- Found an interesting problem with EV_StartLightFlickering. It takes two
|
||
parameters describing the light levels, but they were completely ignored.
|
||
Fixed.
|
||
|
||
June 7, 1999
|
||
- Changed R_FakeFlat to optionally not care about whether or not the camera's
|
||
current sector is also in a sector referenced by a Transfer_Heights special.
|
||
- Changed all numspechit loops in the code to test against (numspechit > 0)
|
||
instead of (numspechit--).
|
||
- Changed Thing_Projectile(Gravity) so that it should work properly with any
|
||
non-missiles.
|
||
- Fixed a bug in P_NightmareRespawn caused by mindlessly cutting-and-pasting
|
||
from P_SpawnMapThing.
|
||
- Found a bug in the translation of BOOM generalized floors/ceilings. One
|
||
of my bit shifts was off by one. Also fixed the code in zwadconv.
|
||
- Changed the boss brain's height back to 16 for compatibility with
|
||
Strain MAP20.
|
||
- A few days ago, I tried sorting the edges of polyobjects at runtime to
|
||
support concave polys at any rotation. It didn't work. I'll probably
|
||
have to use a span buffer.
|
||
- Stuck in my new span drawer. I actually wrote it about two months ago.
|
||
Now it's finally going to be in a release version of ZDoom. It's about
|
||
6 fps (~23%) faster at 1024x768. Also removed ds_colshift (because it is
|
||
no longer used) and the unrolled span drawer in linear.nas.
|
||
- The turbo cvar's callback wasn't being called when it was set. Fixed.
|
||
- This a huge gap between log entries. Sorry, but I've been too lazy to
|
||
write anything here.
|
||
|
||
March 15, 1999
|
||
- Added support for custom ambient sound attenuations. This is an optional
|
||
floating point value that follows the point keyword.
|
||
- For 1.17, I had changed the sound volumes in s_sound.c to floats
|
||
*except* for the ambient sounds which were still being treated as byte
|
||
values between 0-255, so they would always play at full volume. Fixed.
|
||
|
||
March 14, 1999
|
||
- Discovered a savegame bug: An mobj's translation table was being saved
|
||
improperly and could point to invalid memory on reload. Fixed.
|
||
- Added another dmflag, DF_RESPAWN_SUPER, to cause invulnerability and
|
||
invisibility to respawn. No room in menu, so you have to set it by hand.
|
||
- Added an alwaysapplydmflags cvar that can be used to cause dmflags that
|
||
normally only affect deathmatch to apply to single player and coop games
|
||
as well.
|
||
- Changed P_Thing_Spawn() so that it can spawns things anywhere and not
|
||
just at map spots. (Useful for making it look like a monster was carrying
|
||
an item.)
|
||
- Added support for MBF's sky texture transfer linedefs. Also added support
|
||
for Hexen's Sky2 sector special.
|
||
- In r_plane.c, spanstop was never used anywhere. Removed it.
|
||
|
||
March 10, 1999
|
||
- Made the network code "better." htons is used in the appropriate places,
|
||
and the port a packet is sent from is used to determine which node sent
|
||
a packet (so now I can test more than two-player games on my machine).
|
||
- Added an event-driven timer routine. Instead of busy waiting for a new tic,
|
||
I can wait on an event and give other processes some CPU time. This makes
|
||
two-player games on one machine run much more smoothly on Windows 95/98.
|
||
(It was already smooth for the foreground player on NT.)
|
||
|
||
March 8, 1999
|
||
- Fixed a problem with R_DrawPSprite. It was leaving vis->translucency unset,
|
||
which could produce odd results depending on the contents of the stack.
|
||
|
||
March 7, 1999
|
||
- Discovered a big problem with my linked list of ceiling_t's implementation.
|
||
Fixed.
|
||
|
||
March 6, 1999
|
||
- Added two new screen wipes: burn and crossfade.
|
||
- The mid-screen message gets cleared out on level load now.
|
||
- Stopped using the zone heap to store level snapshots.
|
||
- Enhanced the stealth monsters so that they will take advantage of all
|
||
translucency levels available.
|
||
- Fixed the damage for A_MonsterRail. I guess DOOM doesn't copy the damage
|
||
amount out of the mobjinfo when an mobj is spawned.
|
||
- Added a check to the fullscreen HUD to prevent it from going outside the
|
||
array of armor pictures if the AC was above 2.
|
||
- The DeHackEd code was setting the Blue AC for max soulsphere health. Fixed.
|
||
- Tried out Rick Clark's toxplant.wad and discovered a bug with the
|
||
particles: They were colored by whichever sector was drawn last and not
|
||
the sector they were in. Fixed.
|
||
- Pulled the old info.h from the 1.17a source so I could get things in a
|
||
working state to put up a fixed DeHackEd version for the Ground Zero TC.
|
||
|
||
March 4, 1999
|
||
- Word of advice: When you have 2847 states and 399 mobjinfos (from Hexen)
|
||
to reformat, don't try to do it all by hand. I was smart enough to use a
|
||
program to convert all the states into the multigen format, but I thought
|
||
I could handle the mobjs myself. Ha ha ha ha ha ha! After a few hours,
|
||
my arm was aching, and I had only done about one fourth of the mobjinfos.
|
||
Then I wrote a program to convert the ones from Hexen's info.c into
|
||
multigen format, and all I had to do was drag them to the correct place
|
||
with my mouse. Much easier, and much less strenuous. (Also much less
|
||
error-prone.)
|
||
|
||
For comparison, Heretic has 161 mobjinfos and 1205 states.
|
||
Doom 2 has a mere 137 mobjinfos and 967 states.
|
||
|
||
March 3, 1999
|
||
- Had a change of plans about how I want to implement multiple games in a
|
||
single executable. All the data in info.c and info.h will be moved to an
|
||
external data file whose format is based on that used by multigen (the
|
||
tool id used to generate info.c). The list of spawnable things will also
|
||
be moved out of p_things.c and into this file.
|
||
|
||
This means that everything I did in info.h on March 1 was wasted. Oh well.
|
||
|
||
March 1, 1999
|
||
- Pasted labels for the Heretic and Hexen things into info.c. Had to
|
||
shuffle a few of them around:
|
||
|
||
--- Things renamed ---
|
||
MT_MISC* -> MT_DMISC* (if Doom)
|
||
MT_HMISC* (if Heretic)
|
||
MT_XMISC* (if Hexen)
|
||
MT_BARREL -> MT_HBARREL (for Heretic)
|
||
MT_DBARREL (for Doom)
|
||
MT_TFOG -> MT_DTFOG, MT_HTFOG, MT_XTFOG
|
||
created a new MT_TFOG elsewhere. the others should be
|
||
copied on top of it as appropriate.
|
||
MT_HEAD -> renamed Doom's to MT_CACODEMON
|
||
MT_KNIGHT -> renamed Doom's to MT_HELLKNIGHT
|
||
MT_FIREBOMB -> MT_HFIREBOMB, MT_XFIREBOMB
|
||
|
||
--- Things moved into common Heretic/Hexen section ---
|
||
MT_ARTIFLY
|
||
MT_ARTIINVULNERABILITY -> ditto
|
||
MT_ARTIEGG -> ditto
|
||
MT_EGGFX -> ditto
|
||
MT_ARTISUPERHEAL -> ditto
|
||
MT_ARTITELEPORT -> ditto
|
||
MT_SPLASH
|
||
MT_SPLASHBASE
|
||
MT_LAVASPLASH
|
||
MT_LAVASMAKE
|
||
MT_SLUDGECHUNK
|
||
MT_SLUDGESPLASH
|
||
MT_BLOODSPLATTER
|
||
MT_BLOODYSKULL
|
||
MT_MNTRFX1
|
||
MT_MNTRFX2 (deathsound is sfx_phohit in Heretic, no sound in Hexen)
|
||
MT_MNTRFX3
|
||
MT_SOUNDWATERFALL
|
||
|
||
--- Things moved to global section ---
|
||
MT_BLOOD (note that Hexen's blood has mass 5, not 100. was #38)
|
||
MT_TELEPORTMAN (was #41)
|
||
MT_PLAYER (was #0) Hexen's is name differently, so it didn't move.
|
||
|
||
(Hexen things renamed)
|
||
MT_MINOTAUR -> MT_MAULATOR
|
||
MT_SOUNDWIND -> MT_XSOUNDWIND
|
||
|
||
- Added a pulsating effect for the invisibility powerup that slowly
|
||
"pulses" it in and out of visibility, but never going below 25%, so it's
|
||
never totally invisible.
|
||
- Spent a few hours with the DOSDoom translucency code. I think the
|
||
greenness of it is probably more the fault of DOOM's limited palette,
|
||
particularly after comparing the 25% translucency table from before
|
||
with 25% translucency now. Very low levels of translucency with one
|
||
of the colors being dark are still too green, though.
|
||
|
||
February 28, 1999
|
||
- Added DOSDoom 0.65's translucency code. I'm not sure if it was really
|
||
worth it, though. I tried Allegro's RGB table code to speed up the
|
||
generation of the translucency table, but it didn't seem to produce
|
||
very satisfactory results, so I use BestColor to find palette colors
|
||
to use. The results are satisfactory, but they seem a bit too green.
|
||
- Delayed gathering of data on a sprite's patches (width, topoffset, and
|
||
offset) until it is needed (either when the level is precached, or when
|
||
the sprite is first seen). Game startup is a great deal quicker without
|
||
any noticable performance hit elsewhere. Cool.
|
||
|
||
February 27, 1999
|
||
- Note: Hexen's friction is roughly equivalent to a Sector_SetFriction of
|
||
171 (ends up as 0xf909, Hexen uses 0xf900). Player movement thrust should
|
||
be halved at this level. Changed the calculation of sector->movefactor
|
||
accordingly. (With the BOOM code, player thrust was nearly one fourth
|
||
normal with that level of friction.)
|
||
- Discovered that MBF's code to affect monsters with friction doesn't
|
||
work without the change it made to how mobjs are linked into the blockmap.
|
||
|
||
February 24, 1999
|
||
- Stopped using stdio in w_wad.c.
|
||
- Had left some calls to W_Profile in W_InitMultipleFiles(). Removed.
|
||
|
||
February 21, 1999
|
||
- Added support for real looping sounds, because Herian 2 used so many of
|
||
them, and the old method sounded pretty bad with them.
|
||
- Found a problem with sliding polyobj doors: If, when they try to close,
|
||
they can't move anywhere from their open position, they would move
|
||
slightly further open and leave a gap when they managed to close. Fixed.
|
||
- Added support for auto-loading of skins if they're in a skins directory
|
||
in the same directory as the executable.
|
||
- Added support for C-style formatting codes to ACS print statements.
|
||
- Fixed a problem where, when a player turns into a pile of bloody gibs
|
||
(from e.g. a crushing ceiling), they would assume their standing position.
|
||
This is because the gibs are a different sprite, and I wasn't letting
|
||
player mobjs change their sprite.
|
||
- Fixed ceilings so that they stop making noise when they get put in stasis.
|
||
- PIT_ChangeSector() can spawn particle blood now.
|
||
- Fixed R_DrawSplash2() so that it doesn't draw all the particles to the
|
||
left of the impact point.
|
||
- Added an A_MonsterRail function so monsters can shoot a railgun too.
|
||
- Fixed the railgun sound when you're not the one shooting it. My algorithm
|
||
for finding the closest point on the line was wrong and still should
|
||
remnants from when I was calculating the distance from the line.
|
||
- Fixed some player bobbing problems.
|
||
|
||
February 20, 1999
|
||
- Changed sparks to play with static attenuation.
|
||
- Found out why pickup messages would sometimes seemingly print several
|
||
times for a single item. Some maps have several of the same item on top
|
||
of each other so that a player can get more than they would normally
|
||
without even realizing it. I get around this by disallowing two identical
|
||
pickup messages from being printed back-to-back in a single tic.
|
||
- Fixed transsouls. I wasn't calling its callback at initialization, so it
|
||
wouldn't take effect until the next time it was changed at the console.
|
||
- Recompiled PTC with DDFLIP_WAIT enabled. I had accidentally left it off
|
||
from my testing run on January 8.
|
||
- Dug up the DirectDraw code from 1.12 and used it to add DirectDraw support
|
||
back into the game. Now even people who can't get PTC to work should be
|
||
able to use it.
|
||
One interesting thing I noticed is that IDirectDrawSurface's Blt method
|
||
is horribly slow for blitting between system and video memory. I tried it,
|
||
thinking it would be optimized, but it wasn't even close.
|
||
- Added the A_Die, A_Detonate, and A_Mushroom routines from MBF.
|
||
- Removed the screens array and replaced it with a single variable named
|
||
(oddly enough) screen.
|
||
- Added a V_SetBlend() to F_StartFinale() to get rid of any palette flashes
|
||
that might have been on screen (such as after finishing E1M8).
|
||
- Discovered the real reason why the brain shooter wasn't working. DOOM
|
||
doesn't explode noclip missiles when they go above the ceiling or below
|
||
the floor; it just adjusts their positions. Hexen doesn't have that check
|
||
for noclip, so it will explode/remove it. I guess I didn't check MAP30
|
||
after adding Hexen's z-checking.
|
||
|
||
February 19, 1999
|
||
- Finally got around to fixing V_DrawPatchFlipped(). Wow, that was easy. I
|
||
wonder why I was having so much trouble with it the last time I touched it
|
||
many months ago.
|
||
- Changed the item pickup sounds to play with a NULL entity for the local
|
||
player (like before), but still play on CHAN_ITEM for other players.
|
||
- Fixed the problem of monster names not being drawn in the cast finale: I
|
||
was still xoring each character with 0x80 to make it red under the old
|
||
text system.
|
||
- Changed the keyboard code so that the keypad isn't translated into number
|
||
keys in full console mode with the menu active.
|
||
- Fixed the Read This! sequence of menus in Ultimate Doom. When it's
|
||
finished, it's supposed to re-enable the skull and empty the stack.
|
||
- Fixed a problem with raise doors. In Doom, you can close them prematurely
|
||
by activating them again. I had the right idea:
|
||
if (GET_SPAC(line->flags) == SPAC_PUSH)
|
||
but it should have been
|
||
if (GET_SPAC(line->flags) != SPAC_PUSH)
|
||
|
||
February 18, 1999
|
||
- Release 1.17 again, hopefully this time for good.
|
||
- Fixed some problems that were already found with 1.17:
|
||
* The cubes spawned by the boss on DOOM2/MAP30 would be in the ceiling and
|
||
disappear right away. (All I can say is that it worked before; I don't
|
||
know why it stopped.)
|
||
* Because of my quick hack for voodoo doll obituaries, getting killed by
|
||
the world would crash.
|
||
* Open scripts above 255 wouldn't properly restart when the level
|
||
reloaded because the game thought they were still running.
|
||
|
||
February 17, 1999
|
||
- Made a final "final" compile of 1.17.
|
||
- Removed the hack that could transform normal exits into Teleport_NewMaps
|
||
during the level translation process.
|
||
- Realized I had forgotten to do the following, so I did them:
|
||
* Support the MF_TRANSLATION bits for DeHackEd patches that use them.
|
||
* Add a TRANSLUC75 .bex mnemonic for symmetry.
|
||
* Add a defaultmap entry for MAPINFO lumps.
|
||
* Make r_columnmethod 1 the default.
|
||
* Add a neverswitchonpickup cvar.
|
||
* Extralight and fullbright need to be ignored in foggy areas.
|
||
|
||
February 16, 1999
|
||
- Did a final compile for 1.17 under both DOS and Win32. This will be the
|
||
first release where I release versions for both operating systems
|
||
simultaneously. Eventually, I'll have to abandon DOS if I want to keep
|
||
progressing, but for now it's nice to be able to do this.
|
||
- Removed the limit on the number of sound sequences that can be loaded.
|
||
There's still a limit on the number of translation slots, and I think
|
||
it's good to leave it that way.
|
||
- Added a menu stack, so that pressing escape to back out of a menu only
|
||
backs up through the menus the user has visited.
|
||
- Tried adding some code to djgpp/i_video.cpp so that it could write
|
||
directly to VGA memory. Then I found out that regular VGA mode 13h
|
||
doesn't support page flipping, so I took it out.
|
||
|
||
February 14, 1999
|
||
- Added some #ifdef's to i_sound.c so that it works equally well with
|
||
both VC++ and DJGPP.
|
||
- Added support for Hexen's parallax skies. I'm not sure why I thought
|
||
the front one was a normal masked texture. (It uses color 0 to indicate
|
||
transparency instead.) I also removed R_DrawMaskedSky() and added the
|
||
restriction that both sky textures must be the same height.
|
||
|
||
February 13, 1999
|
||
- Tried boomedit.wad, and it turns out I was wrong about ML_PASSUSE. Non-
|
||
use lines could and did eat uses. Changed it so that only SPAC_USE
|
||
does now.
|
||
- Moved the functionality of the ML_PASSUSE flag into a new activation
|
||
type: SPAC_USETHROUGH. The flag was only applicable to use activation
|
||
lines, so it seemed sensely to have it wasting a bit for all other
|
||
types. Now I have a free linedef flag if I need it.
|
||
- Removed the hack to allow players to move if they were currently stuck.
|
||
With it in, polyobjects could push players through walls, which is even
|
||
more undesirable. Since I'm now using MBF's momentum code (which, like
|
||
Doom's but not Boom's, allows players to build up enough momentum to
|
||
escape from walls if they're trivially inside them), I don't really need
|
||
the "fix" anyway.
|
||
- Added a revert argument to the ChangeCamera special that causes the camera
|
||
to move back inside the player's head if he moves.
|
||
- Added a SetPlayerProperty special.
|
||
- Created things for the particle fountains and sparks.
|
||
- Created sound sequences for the appropriate Doom sector movements. I also
|
||
had to expand on the language as defined by Hexen a bit.
|
||
- Replaced my floor waggling code with Hexen's, so now it's right.
|
||
- Added three new level flags:
|
||
* evenlighting
|
||
* noautosequences
|
||
* forcenoskystretch
|
||
- Added a progress indicator for the translucency table building process.
|
||
|
||
February 12, 1999
|
||
- Removed the round-robin assignment of virtual channels in i_sound.c. Since
|
||
we're no longer letting MIDAS pick the sfx channels for us, this is
|
||
pointless (and potentially hazard-prone if many sounds are being played
|
||
very frequently).
|
||
- Added support for sound sequences, so now the polyobjects aren't silent
|
||
when they move.
|
||
|
||
February 11, 1999
|
||
- Added "support" for 0-length sounds. (Meaning they get replaced by dsempty
|
||
instead of crashing when malloc tries to alloc 4 gigs for them.)
|
||
|
||
February 10, 1999
|
||
- Adopted Hexen's script parsing code (sc_man.c). It lends itself toward
|
||
much cleaner script handling code. [no association with ACS]
|
||
|
||
February 7, 1999
|
||
- Incorporated MBF's friction code in place of BOOM's. (Incidentally, I also
|
||
discovered that I had left out some of BOOM's. No matter now.)
|
||
- Added a hack to P_XYMovement() so that players will still be able to move
|
||
if they get stuck inside a line or another thing.
|
||
|
||
February 6, 1999
|
||
- Played some deathmatch with gothicdm2 and noticed two problems:
|
||
* On rare occasions, I would spawn and be stuck.
|
||
* Weapon pickup messages would sometimes print more than once. (Was I
|
||
picking them up more than once when I ran over them? Not sure.)
|
||
* Once when the other player died, he didn't turn into a corpse.
|
||
- Added the ability to activate scripts by picking up items.
|
||
- Changed the polyobject functions called from p_lnspec.c so that they take
|
||
individual paremeters rather than a byte array of args.
|
||
- Demos can now be played from disk without first loading them with the
|
||
-file parameter.
|
||
- The automap will now follow the console player's camera rather than the
|
||
console player himself.
|
||
- Added a notice warning that a demo will go out of sync if it was recorded
|
||
with a different version of the game.
|
||
- Added playdemo and timedemo commands.
|
||
- Added colored text support and different message levels. This was
|
||
planned for several months, and now I've finally written the code for it.
|
||
|
||
February 4, 1999
|
||
- Modified C_AddNotifyString() so that it properly supports lines
|
||
ending with '\r' or '\n' instead of assuming that they all end with
|
||
'\n' and starting each on a new line.
|
||
- Fixed a problem with PTR_CameraTraverse() that could position the
|
||
chasecam inside a two-sided wall.
|
||
- Removed the handling for ANIM_RANDOM from wi_stuff.c since it wasn't
|
||
used anywhere.
|
||
|
||
February 3, 1999
|
||
- Removed the use of screens[1] in wi_stuff.c by allocating a new screen
|
||
just big enough to hold the background image and then blitting that to
|
||
the screen each frame.
|
||
- Changed the demo loop a bit so that it will automatically try to play
|
||
any number of demos beginning with DEMO1 and continuing up in sequence.
|
||
(Of course, since I removed the ability to play old-style demos, it's
|
||
only of use for wads that provide their own demos.)
|
||
- Did a bunch of miscellaneous cleanup from the Hexen source.
|
||
- Fixed player extreme deaths playing "*gibbed" instead of "*xdeath1".
|
||
- When a player leaves a network game, their body is now removed.
|
||
- Removed the check against monsters crossing secret lines. They *can*
|
||
cross secret lines and activate them, they just don't use/push secret
|
||
lines.
|
||
|
||
January 31, 1999
|
||
- Linedef type 134 was being improperly translated to require a blue key.
|
||
It should have been red.
|
||
- Fixed a round-off problem in P_ZMovement() that could cause the player's
|
||
landing sound to play when the player wasn't falling fast enough. For
|
||
some reason, converting the floating point minimum momz to an it was
|
||
subtracting one (even though it was already integral). So, for normal
|
||
gravity, it was comparing the player's z momentum against -524287
|
||
instead of -524288.
|
||
- Fixed a crash bug in M_LoadDefaults() when migrating from a pre-1.14
|
||
config file without any binding for F5.
|
||
|
||
January 30, 1999
|
||
- Added blood, gunshot, and grenade particle effects.
|
||
|
||
January 29, 1999
|
||
- Fixed up the handling of .bex thing mnemonics and added the names for
|
||
the second set of flags (albeit, not many are actually implemented).
|
||
|
||
January 27, 1999
|
||
- Created a new traversal function for the rail gun.
|
||
- Finally figured out why so many lost souls spawned by pain elementals
|
||
were getting stuck. I was spawning two lost souls in the same spot (where
|
||
there should have been only one). Oops.
|
||
- Found a case where the sight-checking code could trace a line that missed
|
||
its ending cell and continue off the edge of the map, thus crashing the
|
||
game. Made some changes to compensate: When the ending column or row is
|
||
reached, mapxstep or mapystep will be set to 0 to prevent it from
|
||
traversing any further in that direction.
|
||
- Using spynext and spyprev now briefly display the name of the player
|
||
you switched to.
|
||
|
||
January 25, 1999
|
||
- Added armor and keys to the fullscreen HUD.
|
||
|
||
January 24, 1999
|
||
- Imported Hexen's z-checking code in place of my own. Hopefully it will
|
||
work better. Also added a few other Hexenism while I was at it, like
|
||
bouncy objects.
|
||
- Sped up wipes on tall screens so they should be about the same speed as
|
||
one 200 pixels tall.
|
||
- Fixed plats so that they properly rebound off the ceiling. I was
|
||
checking if the plat's crush field was non-zero when I should have been
|
||
checking that it wasn't -1.
|
||
- Made some more improvements to D_ErrorLoop().
|
||
- Fixed some problems with the lighting with different r_detail values.
|
||
- columnofs[] was being constructed wrong for horizontally stretched
|
||
detailed modes (too far to the right). Fixed.
|
||
- Added some unrolled drawers based off the Hexen source for 320x200
|
||
and 320x240. I don't expect anything but a 386/486 to benefit from them.
|
||
|
||
January 23, 1999
|
||
- Fixed the light-amp so that it doesn't turn off colored lighting.
|
||
- Added positional sounds. Now that I have them, I also removed the
|
||
temporary switch mobj that was used to provide a place to play the
|
||
switch sounds.
|
||
- During demo playback, the chase command will now let you switch to
|
||
and from the chasecam, so chasedemo isn't really needed unless you want
|
||
to start the demo in chasecam mode.
|
||
- Added the player's score to the fullscreen HUD in deathmatch.
|
||
- Fixed the spynext/spyprev commands so that they properly update the
|
||
status bar when you switch to another player. Also fixed it so the
|
||
camera doesn't stay in a dead player's corpse if you're not watching
|
||
the person who recorded the demo.
|
||
- Fixed the alignment of the scores display at high resolutions and also
|
||
added a level countdown timer if timelimit is in effect (ala Lithium).
|
||
- Removed Hexen's solution for getting the player to produce more than
|
||
one sound and adopted Quake's: each mobj has 8 channels with some of
|
||
them set aside for predefined uses.
|
||
|
||
January 21, 1999
|
||
- Stopped using MIDAS's auto effect channels and started using the ones
|
||
calculated by the game's own sound code. This seems to have fixed all
|
||
the previous problems with sounds cutting out prematurely.
|
||
|
||
January 20, 1999
|
||
- Adjusted the WEAPONTOP #define in p_pspr.c so that the player sprites
|
||
will meet the bottom of the screen at higher resolutions instead of
|
||
leaving a gap.
|
||
|
||
January 17, 1999
|
||
- Added a chasedemo cvar. When it's true, the demo is played back in
|
||
chasecam mode.
|
||
- Fixed a memory leak when the game had to generate a translucency table.
|
||
(out was not being freed.)
|
||
- Stopped using Z_Malloc() for temporary compression buffers and switched
|
||
to the libc functions. (libc has a bigger memory pool.)
|
||
- Fixed problem with skins that used sounds in the IWAD.
|
||
- Fixed a bug that could crash the game if something went amiss during
|
||
the startup process but after setjmp() was called. Now D_ErrorLoop()
|
||
explicitly enters the GS_FULLCONSOLE state before doing anything else.
|
||
|
||
January 16, 1999
|
||
- Added particle fountain effects with the following colors:
|
||
red, green, blue, yellow, purple, black, and white
|
||
- Got rocket trails into a state I think looks nice.
|
||
- Improved the particle system further by making the particle sizes
|
||
adjustable, letting particles fade out over time, and moving all of
|
||
the particle thinking out of the renderer and into the play simulation.
|
||
- Imported some of Hexen's sound code to limit the total number of same
|
||
sounds playing and also to allow players to make more than one noise
|
||
at a time.
|
||
- Fixed the operation of FloorAndCeiling_(Raise/Lower)ByValue. Contrary
|
||
to what the Hexen specs state, they do not multiply their height
|
||
argument by 8.
|
||
|
||
January 14, 1999
|
||
- Switched to the p_sight.c of Hexen. This is benefitial for two reasons:
|
||
1. It knows about polyobjects.
|
||
2. It doesn't traverse the BSP tree. Yes, I know this means it's slower,
|
||
but it also means I can use it with a portal engine, which doesn't
|
||
even have a BSP tree.
|
||
- Moved the locating of the polyobj spots out of PO_Init() and into
|
||
P_SpawnMapThing().
|
||
|
||
January 12, 1999
|
||
- Added the polyobject stuff from Hexen.
|
||
- Copied Hexen's earthquake viewshifting code into R_SetupFrame().
|
||
- Changed P_Thing_Projectile() so that it can play a thing's sight sound
|
||
and sets some other values properly.
|
||
- Added a delay to open and deferred scripts of one second after seeing
|
||
that the Hexen code does it (and it's a good way of avoiding delays in
|
||
open scripts to get past the screen wipe).
|
||
- Fixed a bug in P_StartScript() that would cause it to crash if someone
|
||
tried to start a nonexistant script.
|
||
|
||
January 11, 1999
|
||
- Added an r_drawflat cvar to draw segs as flat colors instead of textures.
|
||
- In R_StoreWallRange(), changed the lighting calculation so that lines will
|
||
have the same amount of light no matter what their orientation if a
|
||
non-black fade is applied to them (otherwise the fog effect looks dumb).
|
||
|
||
January 10, 1999
|
||
- Added a rocket trail using the particle system.
|
||
- Added a particle system.
|
||
- Added support for PWADs like Gothic DM2 that used a hack to get sprites-in-
|
||
a-pwad with regular Doom by making some changes to W_MergeLumps().
|
||
|
||
January 9, 1999
|
||
- Added a progress-meter to the console.
|
||
- Made a fix (submitted by John Cole) to the height-checking code so that if a
|
||
player stands on another player, the player on the bottom doesn't get
|
||
stuck.
|
||
- Changed P_GiveWeapon() to check if there are any graphics for a weapon. If
|
||
there aren't, then it won't give the player the weapon. Also changed "give
|
||
weapons" to call P_GiveWeapon() so that it won't give the player a weapon
|
||
that doesn't exist in the current iwad (like the ssg with doom.wad).
|
||
- Fixed psprites so that the muzzleflash has the same visibility (fuzz) flags
|
||
as the weapon sprite.
|
||
- Added the setting of YourColor when am_usecustomcolors is 0. It should have
|
||
been there a long time ago.
|
||
|
||
January 8, 1999
|
||
- Since the new column rendering code is essentially done (unless I decide
|
||
that it's actually worth the hassle to draw columns in bunches of 8--4 was
|
||
enough bother), I took some timings with the new and old routines. These
|
||
are for looking directly at a wall, the worst-case scenario for the old
|
||
routines. I tried disabling vbl wait, but DirectDraw always seems to do it
|
||
even when I don't tell it to, so the numbers for the low resolutions aren't
|
||
very informative since they cap at the screen's refresh rate. Rates from
|
||
two Build games under similar conditions are also given for comparison.
|
||
This is on my PII-350:
|
||
|
||
mode old new Blood Duke3D
|
||
320x200 70 70 212 324
|
||
320x240 60 60 174 274
|
||
400x300 60 60 120 212
|
||
480x360 60 60 91 147
|
||
512x384 40 60 80 128
|
||
640x400 32 64 60 96
|
||
640x480 27 57 51 83
|
||
800x600 27 42 34 51
|
||
960x720 12 27 24 37
|
||
1024x768 8 21 21 33
|
||
1152x864 9 19 17 23
|
||
1280x1024 6 15 12 17
|
||
|
||
It looks like the new routines are about twice as fast as the old ones. It
|
||
also looks like I can draw walls faster than Blood but not Duke. For
|
||
rendering a real scene that consists of more than just a single wall, ZDoom
|
||
beats them both, since a single wall is the best-case scenario for Build.
|
||
Frame rates in ZDoom seem to be pretty even now, which is nice since the
|
||
old routines were significantly slower at drawing walls than anything else.
|
||
|
||
- Put in a check in R_RenderSegLoop1() and R_RenderSegLoop2() for NULL
|
||
walllights. Right after starting a level, it seems walllights isn't
|
||
getting set properly, but it appears to work fine afterward. Hmm...
|
||
- Got back to school and had a chance to try the new routines on my machine
|
||
and, wow! I can now do a steady 35 fps at 800x600. 960x720 hovers around
|
||
27 fps. 1024x768 is around 20 fps. Not bad.
|
||
|
||
January 6, 1999
|
||
- Wrote a better assembly version of R_DrawColumnHoriz() with no partial
|
||
register stalls and presumably no AGI stalls on regular Pentiums. If it's
|
||
faster than the C code, it's not much faster. (At least it's not
|
||
significantly slower, anyway.)
|
||
|
||
January 5, 1999
|
||
- Tried an assembly version of R_DrawColumnHoriz(). It was actually
|
||
slower than the C code by about 8 fps. Probably because of all the
|
||
partial register stalls. I guess they really can kill performance.
|
||
Stupid Intel processors. :-)
|
||
- Continued work on the optimized column drawers so that they have
|
||
analogues of all the regular column drawers and can also be used to
|
||
draw sprites. On this P-II 300, 720x480 runs at a pretty consistent
|
||
35 fps. 864x480 isn't much worse, either. (Yeah, weird modes, I know.)
|
||
800x600 runs at about 25 fps. Not bad, considering that this is all
|
||
C code.
|
||
- Added R_StretchColumn() and R_DrawTlatedLucentColumn() functions.
|
||
|
||
January 4, 1999
|
||
- Recompiled everything with __fastcall as the default parameter-passing
|
||
convention. Is it better? Not sure, but the exe did shrink by 11k. I
|
||
think the framerate may have risen by 0.5 fps, too.
|
||
|
||
January 3, 1999
|
||
- Added support for using RIFF WAVEs as sound lumps.
|
||
|
||
January 2, 1999
|
||
- Fixed EV_StopPlat() so that it doesn't get stuck looping on the first
|
||
plat because I had forgot to advance scan inside the while loop.
|
||
- Fixed P_LineAttack() so that it can still spawn bullet puffs on the
|
||
floor or ceiling even if the bullet path never hits a line within range.
|
||
|
||
January 1, 1999
|
||
- Worked some more with the cache optimized column drawers. Now they work
|
||
for masked walls and skies as well as solid walls.
|
||
|
||
December 28, 1998
|
||
- Added some C code to do "interleaved column drawing" (the method that
|
||
proved to be the fastest in my test two days ago). Wall drawing is about
|
||
twice as fast at 1024x768. Lower resolutions show less, but still
|
||
measurable, improvement. Hopefully converting it to assembly will
|
||
result in a further speedup.
|
||
- Fixed problem with monsters continuing to attack their target even after
|
||
they had killed it.
|
||
- Adjusted the minimum distance between the chasecam and a wall/floor/
|
||
ceiling.
|
||
|
||
December 27, 1998
|
||
- Added a chasecam. Use the chase command to turn it on and off.
|
||
|
||
December 26, 1998
|
||
- Ran a simple texturing test drawing a 128-pixel tall texture into a
|
||
1024x768 block using several different methods. The methods and
|
||
average times for one pass of each method are:
|
||
> drawing it directly to the buffer: 94.18 ms
|
||
> drawing four columns into a temp array and then merging
|
||
them into the buffer: 24.456 ms
|
||
> interleaving four columns into a temp array and then copying them
|
||
into the buffer as a series of longword writes: 24.338 ms
|
||
> interleaving four columns into a temp array and then colormapping them
|
||
as they get copied to the buffer: 21.71 ms
|
||
|
||
using variations of the fourth method for translated columns:
|
||
> translating during the copy to the buffer: 21.684 ms
|
||
> translation during the mapping to the temp array: 24.29 ms
|
||
|
||
using variations of the third and fourth method for translucent columns:
|
||
> colormapping into the temp array: 31.75 ms
|
||
> colormapping during the copy to the buffer: 30.42 ms
|
||
|
||
using variations of the third and fourth method for translated,
|
||
translucent columns:
|
||
> translating into the temp array: 32.58 ms
|
||
> translating during the copy to the buffer: 31.45 ms
|
||
|
||
These tests give me an idea of what I need to do to improve the game's
|
||
renderer.
|
||
|
||
- Added an extension to normal exit lines during translation so that if a
|
||
map has a MAPINFO entry, then it gets translated to Teleport_NewMap
|
||
instead of Exit_Normal. The levelnum is (tag % 1000) and position is
|
||
(tag / 1000). Thus, you can create hubs with regular Doom maps provided
|
||
that they have MAPINFO entries.
|
||
- The video drivers on this machine at home have a weird bug. Apparently at
|
||
random, when the palette is changed, random colors will have their blue
|
||
values set to the opposite of what they should be. I can't see any way to
|
||
work around it. Ah well. It's not my machine anyway... :-)
|
||
- Fixed togglemap so that it does nothing if the player isn't in a level.
|
||
(Could have crashed if used on the title screen.)
|
||
|
||
December 25, 1998
|
||
- Added Static_Init special (190) to handle BOOM-like control linedefs for
|
||
setting sector properties (at the moment: color, fog, damage, and gravity)
|
||
at level load time.
|
||
|
||
December 24, 1998
|
||
- Fixed a problem in G_CheckSpot() where a corpse would get moved vertically
|
||
to check for collisions in a spawn spot, but then it wouldn't be restored
|
||
to its original height after the check.
|
||
- Fixed a problem I had introduced in P_LookForPlayers(). I had been
|
||
operating under the assumption that whenever it was called, actor->target
|
||
was NULL. Thus, I thought that assigning actor->goal to actor->target was
|
||
safe even if actor->goal was NULL. This isn't the case. In coop, this
|
||
function can be called with a valid actor->target. Setting it to NULL can
|
||
then play havoc with P_NewChaseDir(), which can get called immediately
|
||
afterward in A_Chase(). Now it only sets actor->target to actor->goal if
|
||
actor->target is already NULL.
|
||
|
||
December 22, 1998
|
||
- Fixed the thing spawners so that they don't spawn monsters if the
|
||
nomonsters dmflag is set.
|
||
- Changed the imp fireball to be 75% opaque.
|
||
- Replaced the am_key?color cvars with am_lockedcolor. Finally rewrote the
|
||
code in the automap that uses it, too. (Up until now, it was still using
|
||
the old Doom specials to determine locked doors, even though they all get
|
||
converted into Door_LockedRaise before the automap ever sees the line.
|
||
|
||
December 21, 1998
|
||
- Added ML_BLOCKEVERYTHING linedef flag.
|
||
|
||
December 20, 1998
|
||
- Added support for a ChangeCamera special.
|
||
|
||
December 19, 1998
|
||
- Added a fire effect to the player setup menu (which I had wanted to do
|
||
ever since I saw Unreal).
|
||
|
||
December 15, 1998
|
||
- Went through commands.txt, and documented new commands and cvars (and also
|
||
some that I had missed from 1.14). I still count 4 undocumented commands,
|
||
but I can't figure out what they are even when I compare it with the output
|
||
of the cmdlist command.
|
||
- Fixed problem with V_BreakLines() not properly setting the pixels width
|
||
of lines that were broken.
|
||
- Fixed problem of Plat_UpByValue not going back down.
|
||
|
||
December 13, 1998
|
||
- Fixed problem of lighting in hires modes lightening too quickly.
|
||
- Added outsidefog key to MAPINFO lump parser to set the fog color for
|
||
any sectors with sky ceilings.
|
||
- Removed the translucency on health bonuses.
|
||
- Improved some of the error-handling code in the midi playback routines,
|
||
and the problem seems to have gone away.
|
||
|
||
December 12, 1998
|
||
- Started experiencing a strange midi problem: it works with the debug
|
||
build but not the release.
|
||
- Added soundlist command to display the assignment of sounds.
|
||
- Added dynamic sound linking so that sounds that refer to the same lump
|
||
use the same copy of the sound. Added the soundlinks command to view
|
||
the linking of sounds.
|
||
- Fixed problem of punching someone to death being treated as an
|
||
unknown means of death in the obituaries.
|
||
- Spawning players now telefrag things standing at their spawnpoint, so
|
||
it's no longer possible to get stuck inside another player when
|
||
spawning. Also relaxed the restriction on deathmatch starts so that
|
||
only one is needed to start a game.
|
||
- Added nobfgaim cvar to disable freeaiming of the bfg. (suggested by
|
||
Tony Fabris)
|
||
- Was trying to figure out why weapnext and weapprev only worked for
|
||
player 0 in network games, when they suddenly started working.
|
||
Hopefully it's permanent... [Now that I've thought about it a little
|
||
more, I probably just wasn't getting the mouse captured when I alt-tabbed
|
||
to the other player's window.]
|
||
- Rewrote weapnext and weapprev commands to use the inventory "system."
|
||
- Added a dir command.
|
||
- Added support for the second joystick device because my joystick somehow
|
||
got assigned to it (and made me aware that it exists :-). Also added
|
||
joy_xthreshold, joy_ythreshold, joy_xsensitivity, joy_ysensitivity, and
|
||
joy_speedmultiplier cvars.
|
||
- Added support for double bindings (for double clicking, but it works with
|
||
all keys, not just the mouse buttons) to C_DoKey() and some associated
|
||
console commands.
|
||
- Changed C_DoKey() so that it takes an event as input.
|
||
- Added some code to PTR_ShootTraverse so that bullet puffs can appear on
|
||
floors and ceilings.
|
||
|
||
December 6, 1998
|
||
- Fixed problem of monsters being slow to attack a player if they were
|
||
on a route: Their reactiontime was too high.
|
||
- Added a gender option to the player setup menu.
|
||
- If getsfx() tries to load a sexed sound, and it doesn't exist, it will
|
||
try to load a male version of the sound.
|
||
- Added an empty sound (dsempty).
|
||
- Changed sound handling slightly so that sounds are now loaded when
|
||
they are first used instead of during I_InitSound(). They still stick
|
||
around forever after that.
|
||
- Changed the names of every sound in SNDINFO. It's no longer Hexen-
|
||
compatible, but it should at least be compatible with what I want to
|
||
do eventually. I also redid the way skin sounds are handled to better
|
||
fit my new sound naming conventions: Any gender/skin-specific sounds
|
||
can be used by prefacing them with a '*' and passing a player mobj to
|
||
a sound function. (If a player mobj is not passed, it defaults to male).
|
||
- Fixed the problem of button sounds being played in the wrong place
|
||
when they're deactivated. For some reason, I had this line in
|
||
P_UpdateSpecials():
|
||
S_StartSound ((mobj_t *)&button->soundorg, "Switch1", 78);
|
||
but button->soundorg is an mobj_t *. I'm surprised it didn't crash.
|
||
- Changed P_Thing_Spawn() and P_Thing_Projectile() so that they will only
|
||
spawn things at map spots and not just anything with a matching tid.
|
||
- Fixed P_Thing_Projectile() so that it will still spawn missiles even if
|
||
there is something at their spawn spot.
|
||
|
||
December 4, 1998
|
||
- Was playing a dark level and noticed that the fog isn't "thick"
|
||
enough at higher resolutions: It transitions from darkness to fullbright
|
||
far too quickly.
|
||
- Tweaked the falling damage some more using some code from Q2.
|
||
- Rearranged the startup sequence slightly so that I_Init() gets called
|
||
before I_InitGraphics() (like it was before).
|
||
- Added support for gendered death messages.
|
||
- Rewrote portions of d_dehack.c so that it takes less space when compiled
|
||
and also added .bex support. (Tried it with a few .bex files, but didn't
|
||
do any extensive testing. Assuming it works. :-)
|
||
- Added a check in Printf() to avoid drawing to the console too rapidly
|
||
during startup, because that can slow it down.
|
||
- Changed P_LoadSegs so that it clears a line's ML_TWOSIDED flag if an
|
||
associated sidedef doesn't point to a back sector (otherwise the game
|
||
could crash in p_sight.c when the line came into view).
|
||
- Removed foreign language "support." It's been broken for a while and was
|
||
too hard to add new strings.
|
||
- Moved string names out of d_dehack.c and into dstrings.c (which is where
|
||
they should have been in the first place.)
|
||
|
||
November 30, 1998
|
||
- Had a flash of insight for how I could speed up the rendering of walls. A
|
||
quick test shows that filling the screen with columns of shorts is about
|
||
twice as fast as filling it with columns of bytes. If I draw wall columns
|
||
into memory in consecutive bytes, and then copy them to the screen in
|
||
another pass, I should be able to combine the writing of two or more
|
||
columns together, obtaining a speed boost that should, at the very least,
|
||
let me maintain 35 fps at 800x600 on my machine. I'll have to try it and
|
||
see if it actually works in practice. The overhead of writing the walls
|
||
twice might kill any performance boost this could offer. On 486s and slow
|
||
Pentiums, this will almost certainly be more of a hinderance than a help,
|
||
and it's not needed at low resolutions anyway, so I plan on keeping it
|
||
optional if it turns out to be benefitial.
|
||
|
||
November 29, 1998
|
||
- Tested a theory, and I was right. :-( Drawing vertical columns is
|
||
inherantly slower than drawing horizontal spans, probably because drawing
|
||
them vertically results in a whole lot more cache misses. What I did to
|
||
test it was replace most of D_Display() with a loop that filled the screen
|
||
a solid color. At 800x600, filling the screen by columns was no faster than
|
||
if I textured the walls (23 fps). Filling by rows, I could get 35 fps.
|
||
Apparently, any further optimizations in the renderer will have to focus
|
||
on drawing walls by rows instead of colums.
|
||
|
||
November 28, 1998
|
||
- Did some slight performance tuning in R_RenderSegLoop() by making more
|
||
variables local to only certain blocks in the function. In 800x600,
|
||
looking straight at a wall now gives ~23 fps vs ~20 fps before. (I really
|
||
wasn't expecting such a marked improvement. It might be worthwhile to try
|
||
and tweak this in assembly.)
|
||
- Pulled some blending addition code from the Q2 DLL. I had been trying to
|
||
do the same thing myself, but couldn't quite manage it until I found
|
||
id's code.
|
||
|
||
November 26, 1998
|
||
- Added support for cancelling messagemode by pressing escape.
|
||
- On the automap, a player with invulnerability is drawn with a color
|
||
slightly off from the background rather than being hard-coded to palette
|
||
entry 246 (which is almost black with the normal Doom palette).
|
||
- Finally got around to working out the bugs in teamplay. (Missiles would
|
||
still hurt you even with friendly fire on.)
|
||
- Disabled intermission texts in deathmatch.
|
||
- Pretty sure I got a non-fatal version of I_Error working now. It uses
|
||
setjmp() and longjmp() to do its magic.
|
||
- Removed the check for -statcopy in d_main.c.
|
||
- Removed the system menu from the ZDoom window. Unfortunately, this also
|
||
means it doesn't get a minimize box. Oh well.
|
||
- Removed the restriction on using messagemode only during a netgame.
|
||
- Added mouse wheel support. Under Win95, it ought to work with DirectInput.
|
||
Under NT 4.0 and 98, it should always works.
|
||
|
||
November 23, 1998
|
||
- Changed the startup code so that the graphics mode is initialized as early
|
||
as possible, allowing us to use the in-game console for most startup text.
|
||
- Moved all the functionality of I_StartGraphics() into I_InitGraphics()
|
||
because the game starts up in a fullscreen console now.
|
||
- Added endgame to quit out of a game and drop to the fullscreen console.
|
||
- Removed the ormask parameter from V_PrintStr() and V_PrintStr2(). It was
|
||
almost never used, and in those cases where it was, it was easy enough to
|
||
just or the string beforehand.
|
||
- Adjusted the colors of the CONCHARS lumps and changed a few special
|
||
characters. With the fullscreen console, it was obvious that they were
|
||
all too dark.
|
||
- Added a fullscreen console.
|
||
- Changed handling of WM_DESTROY messages in i_input.c to call exit()
|
||
directly, because the WM_QUIT message didn't seem to be making its way
|
||
into the message stream.
|
||
- Removed some unused #defines from doomdef.h
|
||
- Removed the store demo check from D_ProcessEvents().
|
||
|
||
November 22, 1998
|
||
- Fixed saving of monster goals (was referencing the tracer field instead).
|
||
- Made one-sided lines pushable.
|
||
- Made P_PushSpecialLine aware of the side of the line that was pushed.
|
||
- Moved the execution of deferred scripts out of P_StartOpenScripts so
|
||
that going to a level with a saved snapshot would not terminate the
|
||
script prematurely when the snapshot was loaded.
|
||
|
||
November 21, 1998
|
||
- Teleport_EndGame and Teleport_NewMap no longer execute if crossed
|
||
along a linedef's back side.
|
||
- Discovered I had missed implementing Teleport_EndGame, so I added it.
|
||
- Fixed problem with level snapshots where plats and ceilings that were
|
||
in stasis were saved incorrectly.
|
||
|
||
November 15, 1998
|
||
- Just tried listening to D_RUNNIN after a clean boot, and it didn't work
|
||
the first time. :-( At least it plays properly after I use iwinit now...
|
||
|
||
November 14, 1998
|
||
- Bumped the height of the three small torches up from 34 to 37 units so
|
||
that the player can't jump on top of them.
|
||
- Tweaked the thing auto step up in PIT_CheckThing some more so that it
|
||
will only do the auto step up if you're not in the air. It seemed funny
|
||
to be able to jump on top of most monsters. Never mind. I can't seem to
|
||
get it to work only when I'm not jumping. :-(
|
||
- Added code to mus2strm.c so that it generates a tempo event at the
|
||
beginning of the song. (The tempo used appears to be the default for
|
||
midiStreamOpen, but I felt like being safe anyway.) AddEventToStream() in
|
||
mid2strm.c also keeps track of all instruments used in a song now. This
|
||
way I can get around what appears to be a bug in the GUS PnP drivers
|
||
that would cause it not to play some instruments if they weren't already
|
||
loaded in the card's RAM. Just before I start playing the actual song, I
|
||
play each instrument very briefly and very quietly to get the instruments
|
||
into the card's RAM.
|
||
|
||
November 2, 1998
|
||
- Added snd_mididevice cvar to allow the user to select which MIDI device
|
||
to use and a snd_listmididevices cvar to enumerate the available devices.
|
||
- Added MIDI volume cvar snd_midivolume and a corresponding menu item.
|
||
- Finished mus2strm.c and made a few cleanups to the MIDI streaming code.
|
||
Now I just need to switch to MikMod, and I won't have to use temporary
|
||
files anywhere. (MIDAS can only load MODs from disk and not from memory.)
|
||
|
||
November 1, 1998
|
||
- Started cleaning up qmus2mid.c and transforming it into mus2strm.c.
|
||
|
||
October 31, 1998
|
||
- Took the mid2strm sample from the dx5sdk and used it to redo my MIDI
|
||
support so that I can use the MIDI stream API now, the primary benefit
|
||
being that it lets me set the MIDI volume for just that stream and not the
|
||
entire system.
|
||
- Changed I_DetectOS() so that it doesn't identify Windows 98 as Windows 95.
|
||
|
||
October 24, 1998
|
||
- Discovered the blockmap generation wasn't actually working. Can't figure
|
||
out why, since the same code works just fine in BOOM...
|
||
- Incorporated several of the changes from BOOM 2.02 such as "loose files",
|
||
fire trail elimination, and automatic blockmap generation for large maps.
|
||
|
||
October 17, 1998
|
||
- Implemented the Radius_Quake line special.
|
||
- Removed limit on the size of recordable demos.
|
||
- Changed P_SpawnPlayer() so that it always spawns players on the ground.
|
||
- Created an MT_TELEPORTMAN2 that can be used to teleport things to points
|
||
above the ground and fixed MT_TELEPORTMAN so that it teleports things onto
|
||
the ground.
|
||
- Updated the teleport code so that it finds destinations using P_FindGoal()
|
||
instead of searching through all the active thinkers.
|
||
- Fixed a memory allocation problem with the -iwad parameter.
|
||
|
||
October 16, 1998
|
||
- Rewrote IdentifyVersion() so that it identifies IWADs by their contents
|
||
instead of their names. (except for tnt.wad and plutonia.wad, since I
|
||
don't know of any other way to distinguish them from doom2.wad)
|
||
- Doors that needed yellow skull keys to be opened said they needed yellow
|
||
cards instead. Fixed.
|
||
- Finally added proper support for substituting translucency for the fuzz
|
||
effect. Instead of using a NULL colormap to represent fuzz, it takes
|
||
advantage of the vissprite's flags field and sets MF_SHADOW. Then the
|
||
colormap points to the colormap that would be used if the sprite wasn't
|
||
shadow, so that it can be properly shaded when r_drawfuzz is 0.
|
||
- Got the colormaps code working. I just wasn't allocating enough space for
|
||
the realcolormaps array. Oopsy.
|
||
|
||
October 15, 1998
|
||
- Decided to support changing of colormaps via Boom's 242 linedef after all
|
||
instead of just changing the blend, so I started adding some code to
|
||
support that. Unfortunately, now it doesn't work without any C_START/C_END
|
||
colormaps. :-( Will fix tomorrow.
|
||
|
||
October 14, 1998
|
||
- Added a callback for the splashfactor cvar that prevents it from being
|
||
set to illegal non-positive values and also computes the inverse of the
|
||
cvar for scaling of the thrust felt by things that chew on their own
|
||
missiles. That way, a player will always rocket jump the same height no
|
||
matter what their splashfactor is set to.
|
||
- Fixed a problem with continuous sounds that prevented them from being
|
||
played. When I had consolidated to using a single mobj thinker for all
|
||
sounds instead of splitting them up as I had previously, I was erroneously
|
||
setting the activation time for continuous sounds to 0 because I wanted
|
||
their thinkers to get called right away. But the mobj thinker decrements
|
||
the tic counter and *then* compares it with 0, so it would decrement the
|
||
0, see -1, and then never doing anything with that mobj again.
|
||
|
||
October 10, 1998
|
||
- The button list gets saved in level snapshots now.
|
||
- Added full support for activation types of projectile cross, projectile
|
||
hit, and push. Also added support for a few linedef types to be
|
||
monster-activatable depending on their activation type even if
|
||
ML_MONSTERSCANACTIVATE is not set. (So that, e.g. a monster can still
|
||
open a local door of type Door_Raise without the level designer
|
||
having to do anything special.)
|
||
- Removed the MAXBUTTONS limit and also fixed a problem with the sound
|
||
origin used when activating switches/buttons.
|
||
- Changed the error messages in V_DrawWrapper() and V_DrawSWrapper() to
|
||
use DPrintf() instead of Printf().
|
||
- Fixed problem with invulnerability I introduced yesterday. (Walls were
|
||
still being drawn with the normal colormap.)
|
||
|
||
October 9, 1998
|
||
- Spent about an hour changing the rendering code so that each sector can
|
||
have its own colormap. The light tables are now indices into a colormap
|
||
rather than pointers into one. Spent about half an hour afterward
|
||
figuring out why it seemed to be merging visplanes that were alike in
|
||
everyway except for colormap. All in all, it was easier than I had
|
||
expected. Unfortunately, it's also too slow to build a colormap in the
|
||
middle of gameplay, so I guess an open script will have to be used to
|
||
build any colormaps before the level starts if anyone wants to change a
|
||
sector's color on the fly.
|
||
|
||
Ocober 8, 1998
|
||
- I had earlier changed PIT_RadiusAttack() to do only half damage to targets
|
||
that originated the explosion, so that rocket jumping didn't hurt so much.
|
||
The scale factor has now been moved into the cvar splashfactor and
|
||
defaults to 1.0. The former behavior can be restored by setting it to 0.5.
|
||
|
||
October 5, 1998
|
||
- Spent about 15 minutes writing a routine to build a colormap for non-
|
||
white lights. Tested it using an orange light for the entire level. It
|
||
worked nicely, so now I just need to make it possible to set the light
|
||
color on a sector-by-sector basis.
|
||
- Issue: Teleport destinations need to be flush with the floor instead of
|
||
remembering the position they are spawned at. Discovered this while
|
||
playing MAP20. A teleport destination lowers a great distance the first
|
||
time you land on it. Going on it again will teleport you to its original
|
||
height, and you fall from there. Maybe another type for destinations that
|
||
remember their height, then?
|
||
|
||
October 4, 1998
|
||
- Added say_team and messagemode2 commands and team and teamplay cvars.
|
||
- Externalized the obituary messages and added a "Strings" section to the
|
||
dehacked code. Since I'm pretty sure I'll be switching to scripted code
|
||
ala Quake, this is only temporary (along with everything else dehacked).
|
||
- Added support for showing both skull and card keys in the status bar
|
||
ala Boom.
|
||
- Added Sector_SetDamage and Sector_SetGravity line specials.
|
||
- Added another mobj flag (MF2_NOADJUST) so that you can walk on floating
|
||
bridges without worrying about them getting bumped up above your head.
|
||
- Adjused PIT_CheckThing() so that it allows stepping up on top of things
|
||
if their tops are no more than 24 units above the thing moving.
|
||
|
||
October 3, 1998
|
||
- Added an MT_AMBIENT mobj (doomed #14065). Its first argument determines
|
||
which ambient sound it represents. (And is valid in the range 0-255.) It
|
||
also subsumes the earlier MT_AMBIENT0 - MT_AMBIENT63 mobjs (doomed
|
||
#14001 - 14064), and P_SpawnMapThing translates them into an
|
||
instance of MT_AMBIENT. Also merged the world ambient thinker into the
|
||
mobj thinker so that all ambient sounds are controlled with a single
|
||
thinker function and not two.
|
||
- Removed sounds.h. Everything necessary to use sounds is now found in
|
||
s_sound.h
|
||
- Disabled the recognition of any display modes other than INDEX8 in
|
||
i_video.cpp. I'm no longer sure high/true color is such a good thing.
|
||
Without a major loss of performance, I can't see any way to avoid a
|
||
huge memory loss with more than a few palettes in those modes. :-(
|
||
- Did some work with ARGB8888 modes: I_Blit can now blit from INDEX8 to
|
||
ARGB8888 surfaces. The console font now gets drawn on ARGB8888 surfaces
|
||
(pretty sure it was before, but it stopped working sometime).
|
||
- Fixed the cast drawer so that the names don't get squashed together in
|
||
resolutions at least 640 pixels wide.
|
||
- Fixed bug where pressing a key with a menu active would move the cursor
|
||
to a blank line if it wasn't assigned as a hotkey.
|
||
- Added support for actually seeing skins as well as setting them in the
|
||
player setup menu.
|
||
- Fixed bug with player colors for players 5-8.
|
||
|
||
October 1, 1998
|
||
- Continued work with "skins." Everything works now except actually
|
||
seeing them.
|
||
- Did away with the spriteoffset[], spritewidth[], and spritetopoffset[]
|
||
arrays and moved their contents into the sprite frame structure.
|
||
|
||
September 30, 1998
|
||
- Started work on supporting Doom Legacy "skins." (Personally, I think
|
||
skin is a misnomer, but I'm afraid the term's probably here to stay.)
|
||
- Removed the maskdraw_t structure from r_things.c since it wasn't used
|
||
anywhere. Here it is preserved for history:
|
||
typedef struct {
|
||
int x1, x2;
|
||
int column;
|
||
int topclip, bottomclip;
|
||
} maskdraw_t;
|
||
Wonder what it was for.
|
||
|
||
September 27, 1998
|
||
- Fixed long-standing bug in R_DrawSprite that could cause sprites to be
|
||
drawn through the floor of a cliff if you look down just the right amount
|
||
(when the top edge of the floor is exactly two pixels above the top of
|
||
the screen).
|
||
- Added hacked-in support for colormaps with the Transfer_LightsHeights
|
||
special. ZDoom actually sets the blending through this special instead
|
||
of changing the colormap. To accomodate BOOM levels that use colormaps,
|
||
it will average all the colors in the colormap together and derive a
|
||
blend from that. Alternatively, you set the blend directly by setting
|
||
the appropriate texture name to a hex string of the format AARRGGBB.
|
||
- Fixed barrels (again) so that barrel traps work as expected. Not sure if
|
||
this problem existed in 1.14a or not, but it's gone now.
|
||
- Added ignoreInvisibility parameter to P_CheckSight(), because it is
|
||
occasionally used to determine if there is an unblocked line between two
|
||
things (not if one can see the other).
|
||
- Switched to using a logarithmic scale for pain flashes.
|
||
- Added support for Boom's push/pullers, wind, current, and friction effects.
|
||
|
||
September 26, 1998
|
||
- Saw this at the Team TNT message board:
|
||
|
||
the bug has been found and fixed. What was happening was that the fake
|
||
sector was being passed instead of the real one, and this messed up
|
||
the check for whether a sector had had its sprites added to the view
|
||
already. As a result each sprite generated was being added once per
|
||
subsector rather than just once.
|
||
|
||
So I went looking around in the code some and found this in R_Subsector():
|
||
"R_AddSprites (frontsector)". I replaced frontsector with sub->sector, and
|
||
that seems to have done the trick. A test level I made went from 15 fps to
|
||
35 fps (the max) with this fix.
|
||
|
||
September 23, 1998
|
||
- Using -cdrom creates the directory if it doesn't exist (like it used to).
|
||
- When used with -cdrom, screenshots now get saved to C:\ZDOOMDAT instead of
|
||
the game directory.
|
||
- Put back support for taking screenshots by pressing F1 with -devparm
|
||
active, since some people probably won't read the docs and realize there's
|
||
a screenshot command bound to the "Print Screen" key by default.
|
||
- Added "ticker" cvar to control display of the -devparm ticker at the
|
||
bottom of the display (so that -devparm is now totally useless).
|
||
- Changed the directory for -cdrom from C:\DOOMDATA to C:\ZDOOMDAT and added
|
||
support for using that directory to store zdoom.cfg.
|
||
- Fixed bug that caused using -devparm or -cdrom to crash the game during
|
||
startup. (They referenced the Strings[] table before it was fully
|
||
initialized.)
|
||
|
||
September 19, 1998
|
||
- Turned off screenwiping when moving between levels in a hub (but only if
|
||
the level the player just left has LEVEL_NOINTERMISSION set).
|
||
- Fixed a savegame bug I had added with hubs that caused the game to
|
||
forget the player's state.
|
||
- Added noise cvar to control display of sound debugging info.
|
||
- Added turn180 command to quickly turn the player around.
|
||
- Added support for the ACS thingsound(), sectorsound(), and ambientsound()
|
||
commands.
|
||
- Changed every reference to S_StartSound so that they refer to sounds
|
||
by name rather than id and specify priority information (since it's
|
||
no longer a part of the sfxinfo).
|
||
|
||
September 18, 1998
|
||
- Finished S_ParseSndInfo so that it has no maximum number of sounds it
|
||
can define and works with more than just ambient sounds.
|
||
- Changed w_wad.c back to using the buffered I/O functions again. (I had
|
||
done this a long time ago, but thanks to some mistakes on my part, I
|
||
ended up putting taking it out. Now it's back for good. :-) It doesn't
|
||
seem to have any effect on disk performance, but it will let me use
|
||
MikMod functions to load samples and MODs directly from the wad.
|
||
- Played around with MikMod some. With the assembly mixer, its
|
||
performance seems to be about the same as MIDAS', so I will
|
||
probably switch to it at some point.
|
||
|
||
September 17, 1998
|
||
- Improved support for analog joysticks by using their full range of
|
||
motion instead of treating them like digital devices.
|
||
|
||
September 15, 1998
|
||
- Added support for world vars and controlling scripts on other maps.
|
||
- Added the hub clusterdef flag and supporting code.
|
||
- Figured out what the problem with hub savegames was: Instead
|
||
of writing out a copy of the snapshots for each level with one,
|
||
I wrote out a copy of the current level's snapshot for each
|
||
level with a snapshot. Whoops! Easy fix.
|
||
|
||
September 14, 1998
|
||
- Worked with supporting hubs. For maps that belong to a hub,
|
||
whenever you exit the level, the game makes a mini-savegame
|
||
of the level. When you return, the world state is based on
|
||
the mini-savegame. Theoretically, saving games to disk should
|
||
be as simple as storing each of these "snapshots" along with
|
||
some extra info, but I couldn't get it to work. The current
|
||
level worked, but trying to go to a previously visited level
|
||
after loading the savegame crashed the game.
|
||
|
||
September 13, 1998
|
||
- Redid my ACS code a bit so that scripts are now kept track of
|
||
through a private linked list rather than thinkers. The only
|
||
real advantage this offers is that I have complete control
|
||
over when scripts get executed, so a script that executes a
|
||
scriptwait command will be guaranteed to run in the same tic
|
||
that the script it's waiting on terminates.
|
||
|
||
September 12, 1998
|
||
- Replaced my visplanes code with Lee Killough's hashing method
|
||
and got a noticable performance boost in high visplane areas
|
||
(even those with <128!).
|
||
|
||
September 4, 1998
|
||
- Added weapnext and weapprev commands courtesy of
|
||
Papst Johannes J<>rg IV. [which were later completely
|
||
rewritten by me]
|
||
- Add support for suspending and resuming scripts (easy when
|
||
you know you can only have one copy running at a time).
|
||
- Added checks to ensure that only one instance of a script is
|
||
running at a time (like Hexen).
|
||
|
||
September 3, 1998
|
||
- Took out the stuff for sliding doors. You want it, then
|
||
fake it with a script.
|
||
- Ran around in hexen.wad for a while and fixed a few bugs.
|
||
- Added support for ACS scripts (except for the sound p-codes
|
||
and polywait).
|
||
|
||
September 2, 1998
|
||
- Added support for monsters remembering their previous target
|
||
from BOOM.
|
||
- Made the mobj's targettic a counter that decrements to zero
|
||
instead of a time relative to gametic (so that it works properly
|
||
across savegames).
|
||
- Added more mobj flags bits and consolidated invisible into it.
|
||
- Implemented all the Thing_* line specials.
|
||
- Added support for stairs that reset and/or have delays and the
|
||
sync stair builders.
|
||
|
||
September 1, 1998
|
||
- Fixed problem with several plat types that didn't deactivate
|
||
themselves.
|
||
- Fixed bug that caused Plat_UpWaitDownStay to act like
|
||
Plat_PerpetualRaise.
|
||
- Made NOINTERMISSION levels work by moving the check for it later
|
||
in G_DoCompleted().
|
||
- Added HealThing special to match DamageThing.
|
||
- Added full support for the Teleport_NewMap special. Levelnum is
|
||
actually used for something in the MAPINFO now, too.
|
||
|
||
August 31, 1998
|
||
- Implemented Hexen's thing specials that don't use tids.
|
||
|
||
August 30, 1998
|
||
- Added support for Hexen pillars.
|
||
- Finished ceilings.
|
||
- Finished floors.
|
||
- Added compression of .tch files and significantly rewrote the
|
||
associated part of v_video.c in the process. Not quite the savings
|
||
I would have liked: only about 57%.
|
||
- Tried using the LZ(77?) code from the Doom utilities to compress save
|
||
games, but it was too slow to be practical. I now use minilzo which
|
||
seems to compress about the same but is a *lot* faster. As an example
|
||
of the kind of savings this offers, the size of a savegame on one
|
||
level shrank to 20% of its original size.
|
||
- Used BOOM's code to remove the savegame size limit and fix some other
|
||
savegame bugs.
|
||
- Used Killough's global boss brain state.
|
||
- Tweaked I_FatalError() so that if something really bad happens, you
|
||
shouldn't end up in an infinite recursion sequence because Printf()
|
||
gets called somewhere during the exit sequence.
|
||
- Implemented Floor_Waggle. Unfortunately, it's not the same as Hexen's
|
||
since I couldn't find any decent documentation about it and also had
|
||
a hard time determining just how every different parameter affected it
|
||
by watching it in a test level. It's close, but not the same.
|
||
|
||
August 29, 1998
|
||
- Added support for normal (not sync) Hexen stairs.
|
||
- Added support for Hexen's phased lighting.
|
||
|
||
August 26, 1998
|
||
- Continued on floors.
|
||
|
||
August 25, 1998
|
||
- Started getting moving floors working again.
|
||
|
||
August 21, 1998
|
||
- Got plats working again.
|
||
- Switched to using a linked list to keep track of active ceilings and
|
||
plats. This is similar to the way BOOM does it, except I store the
|
||
list pointers in the active entities themselves rather than seperately.
|
||
|
||
August 20, 1998
|
||
- Fixed a savegame bug I had introduced. They got saved as "version 115"
|
||
instead of zdoomsv?.dsg.
|
||
|
||
August 8, 1998 - August 15, 1998
|
||
- Did some work converting to Hexen-like line specials. Sorry, I was too
|
||
lazy to record the specific changes.
|
||
|
||
August 7, 1998
|
||
- Incorporated BOOM's Pain Elemental Lost Soul shooting fix.
|
||
- Incorporated some of BOOM's changes to p_map.c.
|
||
- Incorporated Killough's changes to p_sight.c.
|
||
|
||
August 6, 1998
|
||
- Added snd_surround cvar to control use of surround sounds. If "0", then
|
||
anything that would otherwise have been played surround is played
|
||
identically from both speakers instead.
|
||
- Added cvar_defflags variable to hold any flags automatically applied to
|
||
new cvars, the intended purpose being to allow all cvars in a config
|
||
file to be flagged as CVAR_ARCHIVE. Useful if one port of ZDoom has cvars
|
||
that another doesn't, but you still want them to share the same config
|
||
file.
|
||
|
||
August 5, 1998
|
||
- Finished keyboard handler and tried to create a mouse handler for the
|
||
DOS port.
|
||
- Switched to using PTC Mode IDs to describe video modes instead of
|
||
bpp since the DOS version of PTC has multiple modes with the same bpp.
|
||
|
||
August 4, 1998
|
||
- Created partial keyboard handler for DOS port.
|
||
|
||
July 28, 1998
|
||
- Fixed use of config files in paths containing spaces. (I had forgotten to
|
||
enclose the pathname in quotes when constructing the exec command string.)
|
||
- Added calls to FixPathSeperator() in a bunch of places where it was needed.
|
||
|
||
July 27, 1998
|
||
- Uploaded a quick fix to 1.14a that lets it load save games again.
|
||
- Renamed the project and workspace to zdoom (rather than doom).
|
||
- Created a version info resource for ZDoom and moved the system-specific
|
||
files into a new win32 directory in the code tree.
|
||
|
||
July 26, 1998
|
||
- Uploaded 1.14a to notgod.com along with a source patch for 1.14->1.14a.
|
||
- If FONTA?? is available, it is now used in deference to STCFN??? (i.e.
|
||
-file heretic)
|
||
- Renamed all the WICHAR?? in zdoom.wad to FONTB?? to match the naming
|
||
convention used by Heretic and Hexen.
|
||
|
||
July 23, 1998
|
||
- I must be an idiot! I took a fix from BOOM for freeing the lnames array too
|
||
soon and stuck it into ZDoom without really thinking about it. In BOOM (and
|
||
DOOM) lnames[] is dynamically allocated. In ZDoom, it's static since it
|
||
only needs to contain two items (the patch of the level just left and the
|
||
patch of the level being entered). Fixed.
|
||
- Using the changemap command no longer says you are leaving the map you're
|
||
entering when no title patch is provided. (Unless they're one and the same.)
|
||
|
||
July 22, 1998
|
||
- Added a z parameter to P_TeleportMove() to properly handle checks in the
|
||
third dimension. Previously, I was checking for this, too, but against the
|
||
thing's original position. Now I check against the desired z location. This
|
||
prevents monsters from teleporting inside of each other.
|
||
|
||
July 19, 1998
|
||
- Improved handling of international keymaps (such as the French one) by
|
||
moving all responsibility for determining the shifted state of keys into
|
||
i_input.c. C_consol.c no longer maintains a ShiftLOT since .data3 of the
|
||
key event will contain a character that is sensitive of the current state
|
||
of modifier keys. (i.e. .data3 contains 'a' when the A key is pressed and
|
||
'A' when SHIFT-A is pressed.)
|
||
- Made some changes to D_DoAdvanceDemo() and G_CheckDemoStatus() so that
|
||
using the player setup menu during demo playback is now safe.
|
||
- Added a check to C_BackupCVars() so that it doesn't back up CVAR_LATCH
|
||
cvars are not saved. This is unnecessary since they don't actually
|
||
change until a new game anyway. The primary advantage of this is that
|
||
starting a new game during demo playback now uses the selected skill
|
||
level (again).
|
||
- Anything spawned by a boss shooter will now always telefrag even if
|
||
LEVEL_MONSTERSTELEFRAG is not set.
|
||
- Modifed PIT_RadiusAttack() (again) so that when a barrel is doing the
|
||
exploding, the original damage code is used.
|
||
- Removed the bitwise and against 0xff for angle in R_DrawSky() and
|
||
R_DrawMaskedSky(). Some skies in various PWADs are wider than this, and
|
||
R_GetColumn() masks it to the proper width for us anyway.
|
||
|
||
July 18, 1998
|
||
- Changed the unknown thing to have no gravity so that it stays at the
|
||
height it was spawned at (useful with Hexen).
|
||
- Discovered the source of a memory leak: When I added the thing_list code
|
||
from BOOM, I left out some from P_UnsetThingPosition(), so
|
||
P_SetThingPosition() was always creating a new thing_list and letting the
|
||
old one waste space. Conveyors even work now! Yay!
|
||
- Removed support for repeating the left and right arrow keys in m_menu.c
|
||
since some people had trouble with it.
|
||
- Changed D_DoServerInfoChange() so that it doesn't print messages in
|
||
single player games.
|
||
|
||
July 16, 1998
|
||
- Added entries for Heretic to SWITCHES and ANIMATED lumps (because I can).
|
||
- Did equivalent things for BOOM SWITCHES lumps.
|
||
- Removed MAXANIMS limit by scanning through the AnimDefs array to find out
|
||
how many entries it contains and then allocating that many anim_t's. Also
|
||
added support for BOOM ANIMATED lumps.
|
||
- Reduced the Revenant's height from 80 back to 56 to fix a problem with a
|
||
trap on DOOM2 MAP27. The new height caused the revenants heads to get
|
||
stuck in the ceiling, so the platforms they were on wouldn't lower. Since
|
||
there are probably other situations like this elsewhere, I went and gave
|
||
all the monsters their original heights back.
|
||
- Fixed a problem with BOOM's openings limit removal. Pointers to openings
|
||
get stored in drawsegs, and the realloc() of the openings didn't bother
|
||
to adjust those pointers. A simple fix in r_segs.c once I figured out what
|
||
the problem was.
|
||
- Incorporated BOOM's Medusa fix.
|
||
|
||
July 15, 1998
|
||
- Added Lee Killough's generalized scrollers from BOOM.
|
||
- Added Rand Phares' thing list stuff from BOOM.
|
||
- Finished support for BOOM's multiple sector thinkers and threw in the
|
||
elevator code in the process (but nothing that calls it).
|
||
|
||
July 14, 1998
|
||
- Started adding support for BOOM's multiple actions per sector.
|
||
- Uploaded the 1.14 binaries and source to notgod.com.
|
||
- Fixed bug that caused the bunny scroller to crash: Using 0 instead of
|
||
&screens[0] in the calls to F_DrawPatchCol().
|
||
- Added support for the ML_PASSUSE flag from BOOM.
|
||
- Decided using a default texture for unknowns was too complicated to bother
|
||
with at this point, so I took it back out. (Left in for flats, though.)
|
||
|
||
July 13, 1998
|
||
- Fixed IDKFA cheat to give the correct amount of armor.
|
||
- Slightly updated and reformated editing.txt and updated it to use
|
||
the new ambient thing numbers.
|
||
- Reformatted and updated zdoom.txt.
|
||
- Created red and blue checkerboards that get substituted for unknown textures
|
||
and flats.
|
||
|
||
July 12, 1998
|
||
- Created a new thing that gets substituted for unknown things in a map and
|
||
things that are known but have no sprite frames (such as Doom II monsters
|
||
using a DOOM I IWAD).
|
||
- Kill and kill monsters commands now get sent over the network.
|
||
- Reformatted commands.txt to make it fit on a 76-column display and hopefully
|
||
be more readable.
|
||
|
||
July 11, 1998
|
||
- Renumbered the ambient things to the range 14001-14064.
|
||
|
||
July 10, 1998
|
||
- Renamed -nosound to -nosfx to be more compatible with most other Dooms.
|
||
- Adjusted the autoaim values used by the player setup menu to not use
|
||
such a large range (0-5000 with big steppings in-between).
|
||
- During another deathmatch session, discovered a problem on MAP03 with
|
||
spawn farthest. No matter what, the dead player would always spawn at
|
||
the spawn spot near the beginning of the level. Realized that deathmatch
|
||
spawn spots weren't recorded as 16.16 fixed point, so I adjusted
|
||
PlayersRangeFromSpot accordingly.
|
||
- Was playing around in a deathmatch a little when I tried the changemap
|
||
command and the game bombed out in Z_Free() because the block being freed
|
||
didn't have a ZONEID. So I added a wrapper around Z_Free() to pass it
|
||
the source file and line number of the caller in case this happens again.
|
||
- Discovered that I had forgotten to add the server var sending/reading
|
||
to the netgame arbitration process, so I added it.
|
||
- Added changemap command which should be able to change the level during
|
||
netgames and demos.
|
||
- Added support for cheat network commands so that they can work in netgames
|
||
and demos (if desired).
|
||
- Added hack to DeHackEd support to use the original Doom thing height's
|
||
if the thing hangs from the ceiling but the patch doesn't set its height.
|
||
|
||
July 9, 1998
|
||
- Improved wi_stuff.c so that it can still draw the level name even if a
|
||
patch hasn't been designed for it.
|
||
|
||
July 8, 1998
|
||
- Fixed aiming. This consisted of two things: First, I needed to change
|
||
the way I generated yslopetab and looked into it so that fullscreen
|
||
windows and non-fullscreen had the same relative range. (Side effect:
|
||
When the status bar is visible, you get a larger freelook range than
|
||
before.) Second, I had to adjust my calculation of view pitch->slope
|
||
from 0.5 to 0.75 times. I arrived at this value by standing on a cliff
|
||
and firing a rocket launcher with different multipliers until I found one
|
||
that looked good.
|
||
- Fixed sky scaling with different r_detail settings.
|
||
- Fixed spacing of the ammo count numbers on the fullscreen HUD.
|
||
- Hacked around in i_video.cpp and PTC's idirectx.cpp a little to support
|
||
Mode X modes under Windows 95.
|
||
- Changed C_Drawer() so that it doesn't call C_EraseLines() if the automap
|
||
is active, since it just creates junk on top of the automap.
|
||
- Changed the notify text drawer to use Doom's standard red text instead
|
||
of white.
|
||
|
||
July 7, 1998
|
||
- Made several changes to the code to make it more portable and removed
|
||
a few unused variables. DJGPP can now compile the machine-independant
|
||
parts with only minimal warnings with -Wall.
|
||
- Thank's to gcc's -Wall, I figured out why togglemessages didn't
|
||
work: I had left out the parentheses in Cmd_ToggleMessages
|
||
when I wanted to call M_ChangeMessages(). Oops.
|
||
- Tried compiling r_draw.c with DJGPP and discovered that it doesn't
|
||
like long file names, so I renamed everything to fit the 8.3 format.
|
||
(Stupid MS-DOS! Grr!)
|
||
- Changed the midprinter to use the hu_font instead of the console font
|
||
since it looks better and also means that the "You need a * key..."
|
||
messages don't need special treatment in the DeHackEd code.
|
||
- Changed C_AddNotifyString() to use V_BreakLines().
|
||
|
||
July 6, 1993
|
||
- Created V_BreakLines() and V_FreeBrokenLines() to handle splitting of
|
||
text into multiple lines. Unlike the code I had in C_AddNotifyString(),
|
||
these will properly break lines at whitespace if possible instead of
|
||
the middle of a word.
|
||
- Stopped using the pitch field of the S_sfx table to store the sounds'
|
||
playback frequencies so that I can handle pitched sounds properly ala
|
||
some magic I found in BOOM.
|
||
|
||
July 3, 1998
|
||
- Went ahead and took some code from BOOM for "kill monsters" command
|
||
since it also kills losts souls spawned by a pain elemntal's death.
|
||
- Used BOOM's P_SetMobjState() since it has nifty state cycle detection.
|
||
- Removed a lot of stuff from cmdlib.c that I didn't actually use. (Kept
|
||
the CRC code around since I *might* use it.)
|
||
- Discovered that taking screenshots directly inside the screenshot command
|
||
was a bad thing because it can be called during the middle of a screen
|
||
draw. Fixed to delay using ga_screenshot.
|
||
- Changed the gamma command into a cvar and removed the code for
|
||
"floaters" from the options menu, since that was all they were used for.
|
||
- Fixed bug in alias code: New aliases would not properly clear the
|
||
next field if they were the first one in a bucket.
|
||
- Aliases now get saved to the config file.
|
||
- Added "Always Mouselook" to the Options menu. I thought it was already
|
||
there, but... It wasn't.
|
||
|
||
July 2, 1998
|
||
- Added autoexec cvar to determine the autoexec file (partially because
|
||
Doom Legacy decided they wanted to use autoexec.cfg--just like they
|
||
used config.cfg).
|
||
- Renamed menu_video to menu_display and added menu_video, menu_player,
|
||
and menu_gameplay commmands.
|
||
- Moved I_WaitVBL() into i_system.c and changed it to make a simple Sleep()
|
||
call because that's what it's really used for.
|
||
- Changed C_DrawNotifyText() to not draw when the menu is up.
|
||
- Added proper support for usejoystick and usemouse cvars in i_input.c
|
||
- Cleaned up the Convert() table in i_input.c by reformatting it.
|
||
|
||
July 1, 1998
|
||
- Tweaked PIT_RadiusAttack() to be more realistic.
|
||
- Fixed PCX writing code so that it properly indicates that the image is in
|
||
color.
|
||
|
||
June 30, 1998
|
||
- Added Gameplay Options menu for setting dmflags.
|
||
|
||
June 29, 1998
|
||
- Documented the map command. (How did I miss this?)
|
||
- Changed the map command so that it doesn't die fatally if the specified lump
|
||
doesn't exist.
|
||
- Borrowed some of NTDOOM's mouse input code (using Win32 functions instead of
|
||
DirectInput), and the mouse seems smoother under NT. Use the in_mouse cvar
|
||
to select which method of input to use.
|
||
- Added I_DetectOS() function and in_mouse cvar.
|
||
|
||
June 27, 1998
|
||
- Added DF_NO_JUMP and DF_NO_FREELOOK dmflags.
|
||
- Made -turbo parameter a normal cvar.
|
||
|
||
June 26, 1998
|
||
- Spent most of the day trying to beat MineSweeper at expert difficulty.
|
||
Sorry. :-)
|
||
|
||
June 25, 1998
|
||
- Implemented fraglimit and timelimit cvars.
|
||
- deathmatch is also a cvar now.
|
||
- Added q2-like dmflags cvar. It adds some new deathmatch options and also
|
||
takes over the duties of the g_falldamage and g_unlimitedammo cvars as well
|
||
as the -fast, -respawn, and -nomonsters.
|
||
- Added one second delay until respawning after death is allowed (so that when
|
||
noexit is active, and you hit an exit switch, you don't instantly respawn).
|
||
|
||
June 24, 1998
|
||
- Changes to serverinfo cvars now get transmitted properly in netgames, and
|
||
only the key player can change them.
|
||
- Finally added cvarlist command and removed the multiple variations of "set".
|
||
- Added support for 8 players. Using more should now be as simple as increasing
|
||
the MAXPLAYERS #define.
|
||
- Created brighter faceback graphics that better represent the player's
|
||
chosen color.
|
||
|
||
June 23, 1998
|
||
- Added spynext and spyprev commands. Spynext is equivalent to pressing F12
|
||
in the original Doom.
|
||
- Added +showscores action. It gets bound to \ by default.
|
||
- Save games now hold copies of every serverinfo cvar and the level locals.
|
||
With Doom 1, they also contain a list of visited levels.
|
||
- The game now keeps a cumulative frag count for each player which is the same
|
||
as what gets displayed on the status bar during a deathmatch.
|
||
- Removed "Next Weapon" from the controls menu. I need to get the inventory
|
||
system working before I can implement it, and I don't feel like doing that
|
||
right now.
|
||
- With a little help from BOOM, sounds in spy mode now center around the
|
||
displayplayer rather than the consoleplayer.
|
||
|
||
June 22, 1998
|
||
- Got dynamic player translation tables up-and-running. Status bar also uses
|
||
the translation table for the faceback instead of different patches. Automap
|
||
now uses the player's chosen color in netgames instead of a fixed array
|
||
of color values.
|
||
- Left and right arrow keys now repeat in the menus (for sliders).
|
||
- Continued work on player setup menu.
|
||
- Fixed C_AddNotifyString() so that it doesn't crash if passed a string with
|
||
a newline in the middle but not at the end of the string.
|
||
- m_menu.c's text input routine now uses the user's preferred keymap.
|
||
|
||
June 20, 1998
|
||
- Continued work on player setup menu.
|
||
- Fixed a bug in V_Clear(): 8-bit modes ignored left parameter.
|
||
- Upped number of savegame slots to 8.
|
||
- Removed all alloca() calls by replacing them with Z_Malloc()/Z_Free() pairs.
|
||
|
||
June 19, 1998
|
||
- Compiled with warning level 4 and caught a few problems and potential
|
||
problems as well as some code that was never executed. (Thanks, Grant.)
|
||
- Fixed uppercopy so that it doesn't always copy 8-chars even if the passed
|
||
string is shorter.
|
||
- Removed <windows.h>, <io.h>, <direct.h>, and <errno.h>
|
||
#includes from d_main.c.
|
||
|
||
June 18, 1998
|
||
- Removed R_OK #define from one of the source files and changed the typedef
|
||
for BOOL in doomtype.h. Also created dxcrap.c which holds some information
|
||
from dinput.lib and dxguid.lib since Microsoft seems to have left most of
|
||
the Watcom DX libraries out of its DX 5 SDK.
|
||
- Started work on player setup menu.
|
||
|
||
June 17, 1998
|
||
- Got GNU diff and patch to compile under Win32. I intend to use them to
|
||
distribute my changes to the PTC source along with the rest of the ZDoom
|
||
source.
|
||
|
||
June 13, 1998
|
||
- Fixed a shutdown bug in the new sound code.
|
||
|
||
June 12, 1998
|
||
- Changed i_sound.c to something inspired by BOOM. It now uses MIDAS's
|
||
auto effect channels instead of a bunch of junk left over from the
|
||
Linux port to determine which channel to play a sound on. As a result,
|
||
it doesn't seem to lose the player's weapon fire anymore. (Yay!)
|
||
Also, the snd_channels cvar is now useful.
|
||
- Made spawning of unknown things in maps a warning instead of an error.
|
||
- Changed R_CheckTextureNumForName() around to use a hash table
|
||
instead of a linear search.
|
||
|
||
June 11, 1998
|
||
- Added support for BOOM's -fastdemo parameter.
|
||
- Made MIDAS initialization failure a non-fatal error.
|
||
- Did a small change to R_InitSpriteDefs() so that it scans the list of
|
||
sprites backwards.
|
||
- Rewrote R_PrecacheLevel() based on BOOM's.
|
||
- Found a better way to trap Alt-Space: I listen for WM_SYSCOMMAND messages
|
||
and filter out any for SC_KEYMENU events.
|
||
|
||
June 10, 1998
|
||
- Removed Martin Howe's sprite rotation fix in R_InstallSpriteLump()
|
||
and replaced it with something from BOOM.
|
||
- Discovered the Win32 function RegisterHotKey() and used it to trap
|
||
Alt-Space so that it doesn't open the window's system menu. Alas,
|
||
it doesn't seem to work with DirectDraw. :-(
|
||
- Added RGB->HSV and HSV->RGB functions to v_palette.c.
|
||
|
||
June 9, 1998
|
||
- Removed WS_POPUP style from the ZDoom window.
|
||
- Integrated the changes in PTC 0.73b with mine, and PTC stopped working
|
||
with DirectX (again). Thankfully, I managed to get it working again.
|
||
(Sometimes I wonder if using PTC is more trouble than it's worth...)
|
||
|
||
June 8, 1998
|
||
- Each machine now broadcasts its userinfo in D_ArbitrateNetStart() ala
|
||
Doom Legacy 1.11.
|
||
- Userinfo settings are now properly set at game startup.
|
||
- Modified D_ArbitrateNetStart() to use the stream reading and writing
|
||
functions for setting and retrieving some game info.
|
||
- Changed the global var startmap to be the actual name of the desired map
|
||
and got rid of startepisode global var.
|
||
- Chat messages now get sent using special "ticcmds" instead of char-by-char
|
||
in a normal ticcmd.
|
||
- Layed the foundation for special network commands besides user movement.
|
||
- Pressing escape in a menu now backs up one menu instead exiting the menu
|
||
system entirely. (And backspace is now used to clear key bindings in the
|
||
configure controls menu.)
|
||
- Menu now displays messages that don't expect any specific input without
|
||
quickly hiding them away.
|
||
- Changed some stuff so that ZDoom doesn't grab the mouse when a menu is
|
||
active and it's running in a window.
|
||
- Added some code so that during a demo, if a key is bound to toggleconsole,
|
||
menu_*, sizeup, or sizedown, it will execute that command instead of
|
||
activate the menu.
|
||
- Removed F1 screenshot hack from m_menu.c. (Use screenshot command.)
|
||
- Removed support for picking menu items with the joystick and mouse.
|
||
- Integrated the changes in PTC 0.73a with my own.
|
||
|
||
June 6, 1998
|
||
- Added -config option in GetConfigPath().
|
||
- Added messagemode and say console commands.
|
||
- Fixed C_AddNotifyString() so that it breaks lines without losing characters.
|
||
- Changed chat code to use whatever the user's selected keymap is instead of
|
||
always Qwerty. Did the same for the console.
|
||
- Made it possible to actually send chat messages.
|
||
- Added check for chat_on to C_DoKey() so that we don't try to do something
|
||
while the player is typing a message.
|
||
- Removed French stuff from hu_stuff.c.
|
||
- Discovered big booboo on my part. Chat hasn't been working since version
|
||
1.11 has it? I was comparing ev->data1 with 't' in hu_stuff.c, but data1
|
||
is a scancode, not ASCII.
|
||
- Removed RCS ID lines from all the source files. I only have RCS on my Amiga,
|
||
and that's not the machine I'm using to develop this.
|
||
|
||
June 5, 1998
|
||
- Created some new pr_* classes for the gib throwing code.
|
||
- Removed RNG shuffling from P_Random() since it was screwing up sync in
|
||
demos and network games.
|
||
|
||
June 4, 1998
|
||
- Made network ticcmd's variable length using the demo packing.
|
||
- Removed reference to turbomesage in G_Ticker().
|
||
- Simplified RefreshPalette() so that generating the invulnerability colormap
|
||
uses fewer multipilies and no divides.
|
||
|
||
June 3, 1998
|
||
- Fixed P_InitSwitchList() so that the retail version is treated like the
|
||
registered version instead of the shareware.
|
||
- Removed Martin Howe's code from w_wad.c and replaced it with a combination
|
||
of code written by me and code from Boom. (Using hash tables speeds up
|
||
level loading a *lot*--far more than I expected!)
|
||
- Added key repeating to the console. (So easy, I should have done it sooner.)
|
||
|
||
June 2, 1998
|
||
- Removed DEVONLY macro and added DPrintf() function.
|
||
|
||
June 1, 1998
|
||
- Fixed a bug in C_InitConsole when it reformats the console buffer. I had
|
||
been using Printf (string); to reformat the text, but if string contained
|
||
any sequences like "%s" I would be in big trouble. So now I use
|
||
Printf ("%s", string);
|
||
- Fixed a problem with the invulnerability color map being wrong. I had
|
||
been subtracting from 4278190080 when I calculated the inverse.
|
||
(Don't know where I got that number from!) Also discovered my other
|
||
stuff wouldn't work, so I just went and switched to fp like dcolors.c uses.
|
||
- Fixed a bug in the DeHackEd text replacement code I had introduced when
|
||
I added support for ambient sounds. It was checking the names of all
|
||
sound effects, but the ambient sounds start out with no names, so I
|
||
ended up dereferencing a null pointer once I reached sfx_ambient0.
|
||
|
||
May 30, 1998
|
||
- Replaced lots of constant 35's with TICRATE (when measuring time).
|
||
- Switched to the BOOM random number generator.
|
||
- Added onfloor parameter to P_SpawnMobj() for when I actually support
|
||
Hexen-style maps (which have a z parameter for Things).
|
||
- Changed to using mapthing2_t's internally instead of mapthing_t's.
|
||
- Created entries for Hexen-style maps in doomdata.c.
|
||
- Added a repeat byte to DEM_USERCMDCLONE to shrink demos even more.
|
||
|
||
May 29, 1998
|
||
- While recording a demo, discovered that I can't telefrag monsters.
|
||
Must investigate.
|
||
- Added DEM_USERCMDCLONE command to indicate that this user command in the
|
||
demo is the same as the previous one. Drastically reduced demo sizes.
|
||
- Scrapped support for my previous ZDEM format completely and adopted
|
||
an IFF FORM instead.
|
||
- Changed all SVC_* labels to DEM_* since they have nothing to do with
|
||
server-to-client communication and everything to do with demos.
|
||
|
||
May 28, 1998
|
||
- Got ZDEM recording and playback working again.
|
||
- Got idea from Boom: Rewrote all occurences of P_Random()-P_Random() that
|
||
I could find so that they don't make assumptions about the order of
|
||
execution. Old demo playback improved noticably (but it still gets out
|
||
of sync easily). Even better, ZDEMs now appear to play back properly in
|
||
both the release and debug builds.
|
||
|
||
May 26, 1998 - May 27, 1998
|
||
- Studied the code generated by the Hexen utility ACC and wrote a utility
|
||
capable of disassembling BEHAVIOR lumps.
|
||
|
||
*******
|
||
|
||
May 25, 1998
|
||
- Released ZDoom 1.13
|
||
- Made gibs toggleable with testgibs cvar.
|
||
- Created zdoom.wcf file.
|
||
- Wrote some more documentation.
|
||
- Finished demo.wad
|
||
- Finished ambient sound support:
|
||
Point random and periodic.
|
||
World (& surround) continuous, random, and periodic.
|
||
Limited SNDINFO lump support.
|
||
- Added the new level flags to the MAPINFO parser.
|
||
|
||
May 23, 1998
|
||
- Continued work on ambient sounds:
|
||
Positional sounds with specific volumes work.
|
||
- Fixed intermission maps for Doom I. (I had broken them when I stopped
|
||
identifying maps by episode and level numbers.)
|
||
- Added some more level flags to generalize behavior that had previously
|
||
been restricted certain levels. Also removed LEVEL_SECRET and didsecret
|
||
references, since I can now mimic them using LEVEL_VISITED.
|
||
|
||
May 22, 1998
|
||
- Started support for ambient sounds:
|
||
Positional, continuous sounds work.
|
||
- Fixed coop intermission stats.
|
||
- Fixed bug in I_FinishUpdate() that could cause it to crash if the
|
||
fps meter was up and it was called in very quick succession.
|
||
- Tried the following to fix the NT mouse bug:
|
||
Read the mouse after reading the keyboard.
|
||
Poll the mouse's position using GetDeviceState().
|
||
Both methods failed to fix the problem. :-(
|
||
- Fixed handling of secret levels in G_WorldDone().
|
||
- Fixed problem with finale writer showing the full text of a message
|
||
during wipes.
|
||
- Fixed display of cluster entry text in G_WorldDone().
|
||
- Discovered that R_DrawMaskedSky() doesn't work for sky textures that
|
||
are actually masked (probably due to the way the composite texture
|
||
generator works, but I could easily be wrong). Will investigate
|
||
further later.
|
||
- Discovered that DITerm() was never being called, so I threw a call to
|
||
it into I_ShutdownGraphics().
|
||
- Failure to specify a next map in the MAPINFO now repeats the current
|
||
map instead of crashing.
|
||
- Added support for maps without music specified in their MAPINFO.
|
||
|
||
May 21, 1998
|
||
- Finished MAPINFO parser, began work on demo (and test) wad.
|
||
|
||
May 20, 1998
|
||
- Started work on a parser for MAPINFO lumps.
|
||
|
||
May 19, 1998
|
||
- Changed ST_doPaletteStuff() to be dynamic and use a larger range of
|
||
blendings.
|
||
- Added W_FindLump() command.
|
||
- Changed W_CacheLumpNum() so that it allocates an extra zero byte after
|
||
the end of the lump.
|
||
- Modified dehacked code to parse the patch file from memory so that
|
||
they can be stored inside a wad file.
|
||
- Added limits command to list the state of all dynamic limits.
|
||
- Added default binding to the SysRq (Print Screen) key: "screenshot".
|
||
- Discovered the pause key wasn't getting bound by default. Fixed.
|
||
- Changed .cfg comments to anything starting with '//' rather than lines
|
||
starting with ';'.
|
||
- Changed the default config file to zdoom.cfg and added the -config
|
||
parameter to choose alternate ones. (Blargh! Doom Legacy decided to
|
||
use config.cfg as it's default config file, when I've been using it
|
||
all along!)
|
||
|
||
May 18, 1998
|
||
- Tried adding support for saving TGA screenshots and discovered that PTC's
|
||
image class doesn't actually do anything for a save.
|
||
- Changed M_ScreenShot() to accept a filename (if desired) and added a
|
||
screenshot console command that can be used to specify one.
|
||
- Changed WritePCXFile to use ARGB values instead of RGB triples so that
|
||
I can pass it the colors array from a palette_t.
|
||
- Bumped the screenshot limit in M_ScreenShot up to 10000 different
|
||
images (properly this time); changed the I_Error to a simple error
|
||
message (no reason to kill the program if you can't take a screenshot);
|
||
and added support for dumping true color files.
|
||
|
||
May 16, 1998
|
||
- Removed the MAXSPECIALCROSS limit.
|
||
- Made palette blending dynamic and added the testblend command to
|
||
make sure that it actually works properly.
|
||
- Moved the gamma correction stuff from v_video.c into v_palette.c.
|
||
- Fixed the color of the red player in the automap.
|
||
- Changed I_SetPalette() to take a pointer to an array of uints instead
|
||
of RGB triples and avoid gamma correction since that should be done
|
||
before the call to I_SetPalette().
|
||
|
||
May 15, 1998
|
||
- Added V_Clear() function to set a rectangle to a solid color.
|
||
- Added dmflags, fraglimit, and timelimit cvars. Alas, they are just
|
||
placeholders for the moment.
|
||
|
||
May 14, 1998
|
||
- Discovered a bug in Doom Legacy's assembly R_DrawColumn while I was
|
||
in the process of rewriting it: They were calculating (centery-dc_yl)
|
||
when it should have been (dc_yl-centery).
|
||
- Rearranged FixedDiv_ASM() to make it pair better on a Pentium and
|
||
aligned the main division code to a 16 byte boundary.
|
||
|
||
May 13, 1998
|
||
- Removed the next and prev links from the definition of a vissprite_t
|
||
since they were used only for the bubble sort.
|
||
- Changed R_SortVisSprites() to use the stdlib qsort() function instead
|
||
of a bubblesort, the end result being that scenes with a lot of sprites
|
||
are a *lot* faster than before. For means of comparison, I played DOOM2
|
||
MAP30 until I got MaxVisSprites up to 1824, and the lowest my framerate
|
||
ever went was 13 fps. That's compared to my earlier run where a mere 992
|
||
sprites slowed me down to about 3 fps.
|
||
- Fixed bug in the C-based R_DrawFuzzColumn?()s: I wasn't properly
|
||
masking fuzzpos when I added 3 to it at the end.
|
||
- Added preliminary C-based ARGB drawers to r_draw.c. They work, but
|
||
slower than I would like.
|
||
- Changed the main column drawers in r_draw.c into pointers that can
|
||
point to different routines depending on the screen depth (and/or
|
||
presence of assembly/MMX routines). This is essentially the route
|
||
DOSDoom takes, except I didn't split r_draw.c into two files.
|
||
|
||
May 12, 1998
|
||
- Fixed the below bug. I now set dc_mask to 0xff at the beginning of
|
||
R_DrawVisSprite() since it wasn't always large enough. A nice side
|
||
benefit of this is that it allows for taller sprites than before.
|
||
(Considering that I added dc_mask a few weeks ago, I'm surprised it
|
||
took me so long to notice this!)
|
||
- Discovered a weird bug. Things were occasionally being drawn with their
|
||
heads being repeated near their feet but still clipping to the original
|
||
shape of the thing. In DPaint, I could do this by drawing the thing once,
|
||
then turning the background into a stencil so I can't draw over it and
|
||
drawing the thing lower but in the same horizontal position.
|
||
|
||
May 11, 1998
|
||
- Started adding gibs (sprite grouping in w_wad.c is always enabled now).
|
||
- Started adding support for RGB modes in various spots.
|
||
- Separated all the V_DrawPatch* functions into various wrappers and
|
||
column drawers. This makes it easy to use the same function for both
|
||
indexed and direct color modes and to add more (which I have done)
|
||
without too much work.
|
||
- Created R_DrawSky() out of first part of R_DrawPlanes() for
|
||
double sky drawing. Created R_DrawMaskedSky() that draws masked
|
||
sky textures (i.e. the front one for a double sky); it can also
|
||
properly tile any height sky but at a performance hit.
|
||
- Moved definition of skyiscale from r_things.c int r_sky.c and split
|
||
it into sky1iscale and sky2iscale. Also created their inverses:
|
||
sky1scale and sky2scale.
|
||
- Added r_stretchsky cvar to stretch the sky if it isn't taller than
|
||
128 pixels.
|
||
- Rewrote DimScreenPLoop() so that it should be slightly faster now.
|
||
Still has lots of AGI stalls, though. :-(
|
||
|
||
May 8, 1998
|
||
- Added detail mode setting to display options menu.
|
||
- Implemented horizontal pixel doubling.
|
||
- Added ds_colshift to go along with ds_colsize.
|
||
- Changed R_ExecuteSetViewSize() so that the view window it creates is
|
||
always a multiple of 16 bytes wide.
|
||
- Moved definition of rowbytes out of tmap.nas and into r_draw.c and
|
||
renamed it dc_pitch. Also created ds_colsize variable. Renamed
|
||
ASM_PatchRowBytes() to ASM_PatchPitch() and created ASM_PatchColSize().
|
||
- Moved the call to I_BeginUpdate() in D_Display() after the call to
|
||
R_ExecuteSetViewSize(). This lets it update the display pitch
|
||
properly based on any changes to detailyshift. Previously, it would
|
||
use the old pitch for one frame before switching over, which is why
|
||
it was crashing yesterday.
|
||
|
||
May 7, 1998
|
||
- Started adding detail modes back in. Got vertical doubling working
|
||
although I ran into a few unexpected problems. Also crashes when I
|
||
switch from doubled to non-doubled. :-(
|
||
- Added fullscreen option to video modes menu.
|
||
- Created a "Video Modes" patch and changed the "Video Options" patch
|
||
to "Display Options."
|
||
|
||
May 6, 1998
|
||
- Fixed the drawing of the faceback on the status bar in network games.
|
||
(I can't believe I messed that up!)
|
||
- Added fragcount to player quit (netgame) messages.
|
||
- Added -noidle parameter to disable lowering of ZDoom's priority to
|
||
the idle class when the window loses the focus (so that running a
|
||
netgame on a single machine doesn't slow down too much because one of
|
||
the sessions only receives processor time during idle moments).
|
||
- Removed the need for the leading . in IP addresses for -net.
|
||
- Added support for different ports per machine in network code.
|
||
- Changed i_net.c so that Win32 platforms now print descriptive errors.
|
||
- Fixed -net parameter so that address list can end at +commands.
|
||
- Added player obituaries.
|
||
|
||
May 5, 1998
|
||
- Adjusted options menu code so that pressing ENTER, T, and D always do
|
||
their special functions when in the video modes menu and not just when
|
||
the current item is of type screenres.
|
||
- Hacked double buffering into PTC's idirectx.cpp. Why? Because it
|
||
improves compatibility with a lot of video cards under NT (like my
|
||
old one) that don't support locking the primary surface directly.
|
||
- Mucked around in PTC's idirectx.cpp for several hours and finally got
|
||
it to work properly in fullscreen. Yay! (I really hope a future release
|
||
has proper support for this built in.)
|
||
|
||
May 4, 1998
|
||
- Changed (PTC's) idirectx.cpp so that it allows Ctrl-Alt-Del in
|
||
exclusive mode.
|
||
- Looked through V_PrintStr2() and finally realized why it was crashing
|
||
on non-MMX machines: I failed to check the status of UseMMX before
|
||
calling EndMMX().
|
||
|
||
May 1, 1998
|
||
- Downloaded PTC 0.72. It still gets slow on the blits, but at least now
|
||
I have the source code for it.
|
||
- Tried using PTC's BitBlt() inside I_Blit() and came across a weird
|
||
problem: The more blits I do, the slower they get. That sucks.
|
||
- Changed the focus-losing and gaining mechanism in i_input.c. Instead
|
||
of sending pause events, it just pauses the sound. Changing fullscreen
|
||
video modes caused the window to lose and regain its focus a bunch, and
|
||
it was messing up the pause sending code, sometimes leaving the game
|
||
paused after a mode change.
|
||
- Changed R_PlaneInitData() so that it allocates the fixed_t arrays
|
||
separately instead of all together.
|
||
- Played Blood for a little bit. That, and a prior suggestion concerning
|
||
rocket jumping made me decide to make a slight tweak to the freelook
|
||
code: You can now look down twice as far as before.
|
||
|
||
April 30, 1998
|
||
- Figured out why PTC clipping windowed modes larger than 512x384:
|
||
They were larger than the initial window size! I work around it
|
||
by resizing the window and then reinitializing PTC.
|
||
- Moved some variable declarations out of i_input.h and into
|
||
i_input.c, eliminating some in the process.
|
||
- Realized that C_AddNotifyString() really *was* perpetuating changes
|
||
to its input string. Now I make a copy of that and work with it to
|
||
save myself some headaches. Plus, the const identifier is now 100%
|
||
correct.
|
||
|
||
April 29, 1998
|
||
- Changed R_DrawColumn_ASM() and R_DrawTranslucentColumn_ASM() so
|
||
that they check the size of the column *before* looking into
|
||
ylookup and columnofs (thus avoiding the occasional page fault).
|
||
- Discovered that R_ExecuteSetViewSize() could be called outside of
|
||
D_Display(). In this case it was in G_DoLoadGame(), and that
|
||
messed things up when I used the -loadgame parameter on the command
|
||
line. Now R_InitBuffer() locks the screen before grabbing the
|
||
buffer pointer and pitch.
|
||
|
||
April 28, 1998
|
||
- Changed cvar() function so that if a cvar of the specified name
|
||
exists, it still changes the cvars flags. (i.e. it gets loaded from
|
||
the config file before this function is called.)
|
||
- Added win_stretchx and win_stretchy cvars to stretch the windowed
|
||
display.
|
||
- Fixed hang at shutdown: wasn't decrementing counter in I_WaitVBL().
|
||
- Received and installed 128 MB of RAM and a 32x CD-ROM drive. :-)
|
||
- Got ZDoom working in a window through PTC. It doesn't do fullscreen
|
||
yet, but that's only because I haven't written any code to handle it
|
||
yet. It also gets into an infinite loop during shutdown. (Should be
|
||
easy to fix.)
|
||
|
||
April 25, 1998
|
||
- Started working on PTC-ized i_video.cpp.
|
||
- Weird palette problem now. When switching modes, ZDoom will only
|
||
very rarely set the palette properly. Me guessing it's a Win95
|
||
problem, since I didn't see this under NT. Shouldn't really matter
|
||
since I'm switching to PTC anyway.
|
||
- Fixed fuzzoffset[] initialization. I was using screen[0]'s pitch
|
||
without first locking it to ensure that the value stored in the
|
||
screen was valid.
|
||
|
||
April 24, 1998
|
||
- Discovered I have a problem adjusting the fuzzoffset[] table
|
||
dynamically. Looks like it still keeps its old values. Will
|
||
investigate further tomorrow.
|
||
- Finished the video modes menu. My options menu code is nowhere near
|
||
as neat as I would have liked. Oh well...
|
||
- Implemented mode testing from the video modes menu. D_ProcessEvents()
|
||
was hacked to make it work. (There might be a better place, but this
|
||
was the first function I saw, and it works.)
|
||
- Figured it out: I wasn't reallocating negonearray when I resized the
|
||
screen. Doh! Moved its initialization from R_InitSprites() into
|
||
R_MultiresInit(). For consistancy, I now allocate screenheightarray
|
||
and xtoviewangle in R_MultiresInit() instead of V_SetResolution(), too.
|
||
- Noticed I seem to have a problem with the playersprites now. Some
|
||
columns aren't getting drawn completely. Which ones and how much is
|
||
missing seems to vary depending on the game state. This is worse the
|
||
wider the sprite is drawn. At 320 wide, I can't detect it, although
|
||
if it covered the entire width of the screen, it would probably pop
|
||
up. Don't know what's going on here, since it worked fine before.
|
||
When did this happen?
|
||
|
||
April 23, 1998
|
||
- Discovered that the boolean being used in i_video.c was only a byte,
|
||
so I looked through the standard header files, and it looks like
|
||
rpcndr.h is the culprit with this line:
|
||
typedef unsigned char boolean;
|
||
Went through all my files where I've defined __BYTEBOOL__ by hand and
|
||
changed all occurances of boolean to BOOL. Then I found out that that
|
||
caused problems with variables that had been declared as boolean in
|
||
header files, so I changed all the remaining instances of boolean to
|
||
BOOL.
|
||
- Started work on the video modes menu.
|
||
|
||
April 22, 1998
|
||
- Discovered I wasn't locking the back buffer in wi_stuff.c when
|
||
I wrote drew the background on it. Fixed.
|
||
- Added code to actual change the screen resolution and discovered I
|
||
wasn't reallocating the VisPlanes' top and bottom arrays, so you
|
||
couldn't switch to a screen larger than what you started with. Fixed.
|
||
|
||
April 21, 1998
|
||
- Started work on dynamic resolution changing. Most of it was already
|
||
done when I added the multires support. Just need to change the size
|
||
of the display surface now; everything else seems to works.
|
||
- Fixed evil bug in V_SetResolution(): I had been allocating
|
||
xtoviewangle[] with one too few angle_t's. Ouch.
|
||
- Fixed a bug in AddToHash() that caused it to "forget" the previous
|
||
contents of a bucket when a new entry was added to the beginning
|
||
of the bucket.
|
||
- Added a callback to the screenblocks cvar, so that ZDoom will sense
|
||
changes to it and adjust the screen as needed.
|
||
- ...I now allocate two screens for the status bar. If it's not scaled
|
||
I continue drawing to the screen as before and pretty much ignore the
|
||
second buffer. However, if the status bar is scaled, then I draw all
|
||
the changes into the second buffer and then blit the entire thing onto
|
||
the screen. It works, but it's also slower.
|
||
- Added support for scaling the status bar (use st_scale cvar). When I
|
||
did this, I noticed that V_DrawPatchStretched() looks horrid when it
|
||
draws multi-post columns, because it doesn't line them up properly.
|
||
Plus, the areas that got updated weren't being drawn in exactly the
|
||
same spot as what appeared on the screen, so...
|
||
- Changed status bar code so that widget coordinates are relative to
|
||
the status bar instead of the screen, which makes the next change
|
||
easier...
|
||
|
||
April 20, 1998
|
||
- Changed the status bar code so that the status bar surface is only as
|
||
wide as the status bar and not the underlying screen.
|
||
- Fixed the wipe: Inside wipe_doMelt(), I had neglected to account for
|
||
the fact that pitch desribed bytes, but d described shorts.
|
||
- Removed the use of DDraw's blitter inside I_Blit() since I was still
|
||
having problems with it. Now I do it myself, and it works.
|
||
- Fixed blitting: needed to make sure both surfaces were unlocked.
|
||
- Got the program running again. Blitting surfaces doesn't work yet. :-(
|
||
Neither do the wipes. (They skip every other line.)
|
||
- Removed the fractional part from the fps display.
|
||
- Got the code to a point where it builds again.
|
||
|
||
April 18, 1998
|
||
- Added new functions and changed some code in i_video.c to handle
|
||
screens as DDraw surfaces.
|
||
- Changed R_VideoErase() to take a rect as a parameter and call V_Blit().
|
||
|
||
April 17, 1998
|
||
- Removed SCREENPITCH, SCREENWIDTH, and SCREENHEIGHT variables from
|
||
doomdef.c. Now I need to remove all references to them.
|
||
- Cleaned up v_video.c somewhat in preparation of integrating PTC with
|
||
the video code: created a screen_t structure; transferred SCREENWIDTH,
|
||
SCREENHEIGHT, and SCREENPITCH into the screen_t; added some SHORT()
|
||
macros where I had omitted them; and fixed some spots where I had
|
||
left SCREENWIDTH intact from the original Linux code when it was really
|
||
referring to screen pitch. Also added a small amount of code to handle
|
||
different bit depths.
|
||
- Moved registration of vid_* commands out of c_commands.c and into
|
||
i_video.c where they belong.
|
||
- Fixed Printf() routine in c_console.c so that it doesn't apply
|
||
printxormask to control characters.
|
||
|
||
April 16, 1998
|
||
- Added code to i_input.c so that it puts the game in the idle priority
|
||
class when the user switches to another window. It also pauses single
|
||
player games now, too.
|
||
- Added some code to scroll the sky lixe Hexen. Still need to make it
|
||
configurable, but at least I know it works.
|
||
- Tried making some taller (good-looking) skies. I sucked at it.
|
||
- Fixed R_DrawFuzzColumn_ASM so that it never draws columns slightly too
|
||
tall. (When drawing the odd pixels before the loop, I had been using
|
||
ebx and bl for two very different tasks. Now I use bh and bl instead.)
|
||
|
||
April 15, 1998
|
||
- Removed tutti-frutti effect for textures 1, 2, 4, 8, 16, 32, and 64
|
||
units tall. Also allow textures taller than 128 units now.
|
||
- Tried holding the sky's vertical position constant when freelooking.
|
||
IMO, it's actually worse than letting it move: You can still see it
|
||
wrapping, and it looks weird, too. I guess I'll just have to draw
|
||
some taller skypics if I want something that really looks nice.
|
||
- Adjusted P_FindFloor() and P_FindCeiling() to check the health of
|
||
corpses intead of their tics to determine if they have been raised.
|
||
- Set the MT_SKULL height back to 56 units from the 30 I had previously
|
||
set it at, since they were occasionally getting stuck in the floor.
|
||
|
||
April 14, 1998
|
||
- Stayed on MAP30 for about 1.5 hours. MaxVisSprites got bumped all
|
||
the way up to 992, and it was slooowwww (except in the corners). Also
|
||
noticed that the plats would sometimes get stuck going up, and I
|
||
shot right through the resurrected corpses. Must fix tomorrow.
|
||
Me go bed now.
|
||
- Adjusted the heights of most things to make them better match
|
||
their image sizes. Some were okay as they were, while others were
|
||
way off.
|
||
- Did a very quick netgame to see how things looked. Some things are
|
||
too short (like the torches) and others are too tall (like the
|
||
barrels).
|
||
- For all intents and purposes, 3D collision detection is now done.
|
||
There is only one potential problem I can foresee: With enough
|
||
vertical velocity, an object could pass right through another
|
||
object in midair. I don't think situations like this will arise very
|
||
often (if at all), so I'm not going to bother rewriting all my new
|
||
code to fix it. At any rate, it's still a lot better than it used
|
||
to be.
|
||
- Added targettic to mobj_t to create a delay before missiles can
|
||
impact the thing that shot them. This fixes the problem of missiles
|
||
exploding in the shooter's face before they get anywhere.
|
||
- Adjusted P_FindFloor() to search neighboring blocks in the blockmap.
|
||
This solved the problem of occasionally falling into things. Did the
|
||
same thing to P_FindCeiling().
|
||
|
||
April 13, 1998
|
||
- Worked on more thorough 3D collision detection code than my
|
||
previous attempt. (At least it doesn't crash now!) FIXME:
|
||
Missiles are often exploding right in front of the shooter's face.
|
||
It's still possible to land inside of monsters sometimes.
|
||
- PIT_RadiusAttack() can now throw things around in three dimensions.
|
||
The only real benefit of this is that it allows for rocket jumping.
|
||
(Which is still pretty cool and well worth the effort of coding it.)
|
||
- Made health bonuses and muzzle flashes translucent.
|
||
- Fixed bug with Arch-Vile resurrecting a 25% or 75% translucent
|
||
monster. Did equivalent thing for exploding missiles.
|
||
- Put idmus cheat and command back.
|
||
- Added CVAR_CALLBACK flag for non-latching cvars.
|
||
- Added map command to the console.
|
||
- Modified G_InitNew() and associated code to use skill cvar.
|
||
- Implemented proper cvar latching.
|
||
- Hooked localization code into g_level.c. This also cleaned up
|
||
the text patching code in d_dehack.c somewhat, since level names
|
||
and cluster messages are no longer special cases.
|
||
|
||
April 12, 1998
|
||
- Multi-language support is pretty much done. A nice benefit of this
|
||
is that it makes DeHackEd text replacement support easier.
|
||
- -iwad and -deh parameters now automatically append the appropriate
|
||
extension (.wad or .deh) if none is specified with them.
|
||
- IdentifyVersion() now sets gamemission according to which IWAD
|
||
it finds.
|
||
- Removed -shdev, -regdev, and -comdev parameters.
|
||
- Fixed inadvertant bug in st_new.c that prevented ZDoom from
|
||
working with the shareware IWAD. I had previously been loading
|
||
the ammo patches with W_CacheLumpName() which bombs out if it
|
||
can't find a named lump (like CELLA0 which isn't in the shareware
|
||
WAD). Now I check for the presence of the lump before I try to
|
||
load it.
|
||
|
||
April 11, 1998
|
||
- Created strutil utility to create string lumps for ZDoom. Also
|
||
created source files for strutil containing the English and French
|
||
translations. (Though English will still be stored in the
|
||
executable as a fallback and to assist with DeHackEd patch text
|
||
replacement.)
|
||
|
||
April 10, 1998
|
||
Not much done today:
|
||
- Added g_unlimitedammo cvar.
|
||
- Added optional fall damage code originally created by Andy Kempling.
|
||
|
||
April 9, 1998
|
||
- Fixed the pickup of health bonuses. Before, the bonuses maxed
|
||
out at deh_MaxHealth. Now they max out at deh_MaxSoulsphere.
|
||
- Added I_SetTitleString() so that we can once again display the
|
||
game banner at startup.
|
||
- Removed -wart parameter.
|
||
- Completely rewrote the tab completion code. :-) It still works
|
||
the same from the end-user's point of view, but now the code is
|
||
a whole lot cleaner and more flexible.
|
||
|
||
April 8, 1998
|
||
- Implemented tab completion for the console. The associated code
|
||
is really convoluted, but at least it works.
|
||
- Implemented monster infighting for DeHackEd patches. It
|
||
was really easy once I looked in the DeHackEd source and
|
||
figured out that it was modifying PIT_CheckThing(). Too bad
|
||
I didn't do this a day earlier...
|
||
|
||
April 7, 1998
|
||
- Updated the documentation and uploaded 1.12 to cdrom.com.
|
||
- Put the integer divide code back in FixedDiv_ASM().
|
||
I'm pretty sure the real problem was with my overflow
|
||
detection code, which I fixed yesterday when I put in
|
||
the float code. It works properly now and always
|
||
rounds down. (Some code such as the sprite drawer assumed
|
||
that this was the case, but using floats rounded to the
|
||
nearest integer.) I just don't understand why the problem
|
||
didn't show up much sooner.
|
||
|
||
April 6, 1998
|
||
- Added am_showsecrets, am_showmonsters, and
|
||
am_showtime cvars.
|
||
- Added V_DrawPatchTranslatedCleanNoMove() and
|
||
V_DrawTextClean(). Changed console notify text
|
||
code and automap text code to clean scale their
|
||
text.
|
||
- Made a change to P_CrossSubsector() that ought
|
||
to speed things up marginally.
|
||
- Fixed a small bug in P_DivlineSide() that was
|
||
in the original id code.
|
||
- Rewrote FixedDiv_ASM() to use floating point
|
||
math, and it worked. Also removed division by
|
||
zero check, since it appears it's still being
|
||
called with b==0. It looks like DOOM doesn't
|
||
ensure that it never divides by zero and makes
|
||
an assumption about the way FixedDiv() will
|
||
handle these cases.
|
||
- #defined NOASM to disable the use of assembly
|
||
routines, and it seemed to run fine. Recompiled
|
||
with assembly routines except FixedDiv_ASM() and
|
||
it still worked.
|
||
|
||
April 3, 1998
|
||
- This crashing stuff is getting even weirder. At
|
||
first, if I disabled optimization in the release
|
||
build, it went away. Now it's showing up under
|
||
all configurations, and I haven't done anything
|
||
to the code. I'm at a loss as to what to do. :-(
|
||
- Fixed an obscure bug in FixedDiv_ASM(). When it
|
||
overflowed, it was popping esi instead of ebx.
|
||
Also added a check for division by zero.
|
||
|
||
April 2, 1998
|
||
- Did some bug hunting. The problem is happening in
|
||
P_CrossSubsector(), so it's likely something that
|
||
happens before then, since I never touched that
|
||
function.
|
||
- Moved the FPS drawer in I_FinishUpdate() before
|
||
the -devparm dot drawer.
|
||
|
||
April 1, 1998
|
||
- Added Andy Baker's stealth monsters code. Upon
|
||
tessting, a discovered the release build was still
|
||
crashing even without loading a .deh file. My guess
|
||
is that this is the same problem I had on the P60,
|
||
and adding the DeHackEd code just reorganized things
|
||
enough for the problem to show up on my machine too.
|
||
- Changed P_TouchSpecialThing() so that picking up a
|
||
power plays a surround sound.
|
||
- Continued DeHackEd support. Most text strings now
|
||
get replaced, and almost all miscellaneous info is
|
||
supported as well. Still crashes in the release build.
|
||
|
||
March 31, 1998
|
||
- Continued work on DeHackEd support. Everything except
|
||
miscellaneous info and text changing is supported.
|
||
Unfortunately, my release build is experiencing crash
|
||
problems not present in the debug build now. :-(
|
||
- Ripped the MHFX_LAXSPRITEROTATIONS fix out of
|
||
DOSDoom's r_things.c.
|
||
|
||
March 30, 1998
|
||
- Started work on DeHackEd support: things, frames,
|
||
and weapons done. Sounds mostly done.
|
||
- Added minimal code to handle changes to userinfo cvars.
|
||
- Changed player movement code to allow for very minimal
|
||
corrections to momentum while in mid-air.
|
||
- Did a quick test of z-checking for collisions. Needs
|
||
more work; disabled for now.
|
||
- Optimized FixedDiv_ASM() further using a neat absolute
|
||
value trick I discovered on a website somewhere.
|
||
- Did the same thing for P_BulletSlope(). One unexpected
|
||
twist: bullets always hit walls no matter what their slope.
|
||
- Added shoot up/down for projectile weapons with a
|
||
quick hack to P_SpawnPlayerMissile().
|
||
- Moved ysheer out of player_t and into mobj_t as pitch.
|
||
- Changed P_ExplodeMissile() to set missile explosion
|
||
sprites translucent.
|
||
- Changed D_DoomMain() so that it always loads zdoom.wad
|
||
first instead of second.
|
||
- Added m_alloc.(c|h) so that I can finally check to
|
||
make sure I get all the memory I ask for with malloc().
|
||
- Finished automap overlay. Use am_overlay cvar.
|
||
- Moved automap framebuffer boundary determination out of
|
||
AM_LevelInit() and into AM_Drawer(). Did other mucking
|
||
about in the automap code so it clips the automap to the
|
||
view window when the map is overlayed on top of it.
|
||
|
||
March 29, 1998
|
||
- Jotted down some code for truecolor routines.
|
||
|
||
March 28, 1998
|
||
- Worked on automap overlay.
|
||
- Changed C_DoKey() to return true if the key generated a
|
||
command, and false if it didn't.
|
||
- Automap can now rotate. Use am_rotate cvar to control it.
|
||
- Finished new HUD (for now). It gets the job done, and it's not
|
||
too cluttered.
|
||
|
||
March 27, 1998
|
||
- Continued work on new options menu: Removed old sound menu.
|
||
Created new menu title patches. Created controls menu.
|
||
Created video menu.
|
||
|
||
March 26, 1998
|
||
- Started work on the new options menu.
|
||
- Created binddefaults command.
|
||
- Created a bunch of menu_* commands to access the different
|
||
menus directly. Also added some of them to the default
|
||
bindings string.
|
||
- Fixed sky height bug. The key is that skytexturemid is NOT
|
||
resolution-dependant. It is a constant.
|
||
- Changed yesterday's sky height fix so that it is based on Doom
|
||
Legacy's aspect ratio correction rather than what DOSDoom did.
|
||
(BTW, this was not done in the 1.11 Doom Legacy source. :-)
|
||
|
||
March 25, 1998
|
||
- Fixed sky height with a little help from DOSDoom.
|
||
- Started work on the new HUD. Not yet sure what I like.
|
||
- Created the C version of Print2CharP_MMX. It sucks. I know there
|
||
must be a clever way to do it using bit shifts and masking, but
|
||
I don't feel like persuing it right now, since I have an MMX
|
||
machine, and MMX makes it very easy to do.
|
||
|
||
March 24, 1998
|
||
- Ran ZDoom on the Pentium 60 sitting next to me. It crashed whenever
|
||
I tried to enter a level. Some testing is obviously called for. :-(
|
||
- Added code to check for the presence of MMX support.
|
||
- Created misc.nas and moved the assembly versions of FixedMul() and
|
||
FixedDiv() into it. Also created an assembly inner loop for
|
||
V_DimScreen(). Also created an assembly routine to plot one conchar
|
||
to the screen (Print1CharP) and an MMX version that doubles the
|
||
conchar in size.
|
||
- Made command parameters in commands.txt consistant with other
|
||
parameter lists. (<> for required params, [] for ones that aren't.)
|
||
Also added brief descriptions of the different cvar types at the.
|
||
- Removed idmypos command. It was redundant with the
|
||
"toggle idmypos" command.
|
||
|
||
March 23, 1998
|
||
- Added dimamount and dimcolor (defaults to gold) cvars for
|
||
V_DimScreen() so that it can shade the screen to any color instead
|
||
of just darkening it (although it will revert to its old behavior if
|
||
translucency is disabled).
|
||
- Added assembly version of R_DrawFuzzColumn as well as a proper
|
||
assembly version of R_DrawTranslucentColumn().
|
||
- Changed fuzztable in r_draw.c from 50 to 64 entries so that I can
|
||
use a simple mask in R_DrawFuzzColumn() instead of conditionals.
|
||
This should speed up that loop significantly (especially once it's
|
||
in assembly). Also removed references to frac and fracstep from
|
||
R_DrawFuzzColumn() since they weren't needed.
|
||
- Can't seem to get V_DrawPatchFlipped() to position patches properly
|
||
(they keep getting drawn too far to the left and up), so for now,
|
||
it just calls V_DrawPatchIndirect().
|
||
- Added special case to V_DrawPatchStretched for full-screen patches.
|
||
Also added a scrn parameter to F_DrawPatchCol to accomodate this.
|
||
- Changed cyberdemon and spider mastermind sight and death sounds
|
||
in the cast finale to surround.
|
||
- Changed brain's pain sound to use ORIGIN_SURROUND2. That way, the
|
||
things it throws out won't override it.
|
||
- Added ORIGIN_AMBIENT3-4 and ORIGIN_SURROUND2-4 to s_sound.(c|h).
|
||
|
||
March 19, 1998
|
||
- Fixed UpdateCursorPosition() in i_input.c so that mouse
|
||
sensitivity is independent of the framerate.
|
||
- Increased speed of text wipe in f_finale.c.
|
||
- Added V_DrawRedTextClean(), V_DrawWhiteTextClean(), and
|
||
V_DrawTranslatedPatchStretched(), and V_DrawTranslatedPatchClean()
|
||
to v_video.c.
|
||
- Fixed bug in V_DrawPatchStretched(). Was using unsigned ints where
|
||
I should have used signed ints.
|
||
- Rewrote F_Ticker().
|
||
- Specifying -nomusic no longer causes I_InitSound() to allocate
|
||
channels for MOD music.
|
||
- Changed several V_DrawPatch()es and V_DrawPatchDirect()s to
|
||
V_DrawPatchClean() and V_DrawPatchIndirect() in various source files.
|
||
- Added V_DrawPatchIndirect(), V_DrawPatchClean(), and
|
||
V_DrawPatchCleanNoMove() to v_video.c.
|
||
- Made lots of changes relating to level and cluster handling.
|
||
- Fixed problem in wi_stuff.c that prevented par times from appearing
|
||
on Doom II levels 12 and above.
|
||
|
||
March 18, 1998
|
||
- Changed idmus command to changemus. Now it expects its input
|
||
to be an actual song name. (Consquently, the idmus cheat is gone.)
|
||
- Moved stuff from S_music[] into LevelInfos[];
|
||
- Changed all references to leveltime, totalsecret, totalkills, and
|
||
totalitems to level.time, level.total_secrets, level.total_monsters,
|
||
and level.total_items respectively. levelstarttic was never used;
|
||
got rid of it.
|
||
- Removed mapnames* arrays from hu_stuff.c and some ST_MAP* #defines
|
||
in st_stuff.c.
|
||
- Moved drawing of level name in automap out of hu_stuff.c into am_map.c.
|
||
|
||
March 17, 1998
|
||
- Started laying the framework for better customizability of maps.
|
||
(Any lump can be a map, use any map for the next and secret maps,
|
||
give custom maps a name, custom par times, etc.)
|
||
- Played at 640x480 for about 1.5 hours trying to get my machine
|
||
to crash. I have had a report of intermittant crashing possibly
|
||
related to high resolutions, but have been unable to duplicate
|
||
the problem on my machine. On a side note, 640x480 is way too slow.
|
||
Doom95 does ~32 fps at 640x400, and Duke 3D does ~25 fps at 640x480.
|
||
I get ~10 fps at 640x480 and ~12 fps at 640x400. Wish I knew how
|
||
they do it...
|
||
|
||
March 16, 1998
|
||
- Hacked in some code into S_ChangeMusic() to allow it to play songs
|
||
stored as individual files on disk. Added primarily because I
|
||
have a large collection of MODs, and I don't want to be forced
|
||
to pick which ones I want to listen to when I start the game
|
||
(by specifying them with the -file parameter).
|
||
- Discovered the Win32 Demo Programming FAQ. Now I can disable
|
||
code segment protection so self-modifying code can stay in
|
||
the same segment as all the other code instead of hiding in
|
||
the data segment.
|
||
- Put in the R_DrawColumn code from Doom Legacy. Took me awhile to
|
||
realize that ylookup and columnofs are now pointers instead of
|
||
arrays.
|
||
|
||
March 14, 1998
|
||
- mb_used changed to a float, so the heap doesn't need to be an
|
||
integral number of megs in size.
|
||
- Added -heapsize parameter to set size of zone heap at run time.
|
||
- Increased size of demoname[] from 32 to 256 chars.
|
||
- Rewrote snippets of -playdemo code so that demos can be played
|
||
from any directory and with any path.
|
||
- Removed all references to basedefault, since it's been replaced
|
||
by configfile.
|
||
- Fixed a really dumb bug in FixPathSeperator. Was initializing
|
||
c to progdir instead of path. Now you can add lumps in different
|
||
directories, and still refer to them by name.
|
||
- Reformatted w_wad.c for 4 character tabs.
|
||
- Looked through the PTC archive. It needs better documentation, but
|
||
I think I'll probably switch to it for the third release of ZDoom.
|
||
|
||
March 13, 1998
|
||
- Added back some of the stuff I had originally added to w_wad.c.
|
||
- Borrowed BT_JUMP and BT_DUCK from DOSDoom. Also added jumping code.
|
||
- IDFA and IDKFA now include the backpack.
|
||
- Downloaded Prometheus Truecolor. Trying to decide if I should use it
|
||
for high- and true-color support.
|
||
- Added support for caching the translucency tables to disk.
|
||
(TODO: Compress this file.)
|
||
- Added support for 25% and 75% translucency (because DOSDoom 0.60
|
||
has it.)
|
||
- Copied w_wad.c and w_wad.h from DOSDoom 0.60. (decided not to
|
||
bother trying to get PACK support in)
|
||
- Moved ConChars data into zdoom.wad as an ordinary patch. zDoom now
|
||
generates the neccessary data on the fly.
|
||
- Removed MAXCEILINGS limit. (was 30)
|
||
- Removed MAX_DEATHMATCH_STARTS limit. (was 10)
|
||
- Removed MAXPLATS limit. (was 30)
|
||
|
||
March 12, 1998
|
||
- Rewrote P_FindNextHighestFloor() so that it doesn't use an internal
|
||
array (thus also removing the MAX_ADJOINING_SECTORS limit).
|
||
- Removed some files from the code directory I had added but never used.
|
||
- Removed MAXSEGS limit. (was 32.. What are solidsegs anyway?)
|
||
- Removed MAXDRAWSEGS limit. (was 256)
|
||
- Now allocate R_DrawSprite()'s clipbot and cliptop arrays inside
|
||
R_MultiresInit() instead of each time the function is called. Should
|
||
have done this in the first place, but I obviously wasn't thinking.
|
||
One particularly sprite-laden scene went from ~25 fps to almost 35 fps.
|
||
- Created R_MultiresInit() function. Now V_SetResolution() calls it, and
|
||
it calls the various R_*() functions related to supporting multiple
|
||
resolutions.
|
||
- Changed the default am_gridcolor to a decent color that actually fits
|
||
with the rest of the color scheme.
|
||
- Took a cue from WinDoom and split my keyboard handler between the
|
||
DirectInput code and the window's message handler. Ugly, but at least
|
||
now it handles Pause and Alt-Tab properly. (The original problem with
|
||
Alt-Tab, incidentally, was that I was failing to reacquire the keyboard
|
||
when I regained the input focus.)
|
||
- Inserting text at the command line in the console now works properly.
|
||
- Pressing ` to hide the console now clears the command line. This is
|
||
the same behavior as Quake, but previously only Escape would clear the
|
||
command line in ZDoom. I found that to be too annoying.
|
||
- Pressing up and down arrow keys in the console to scroll through the
|
||
history now ensures that the cursor is always visible.
|
||
- Changed BuildString() so that if it is called with argc==1, it just
|
||
returns a copy of the string unmodified instead of sticking it in
|
||
quotes if it contains a space.
|
||
- Renamed setcolorbyname to setcolor. The former was just too long.
|
||
- Added setcolorbyname command and corresponding V_GetColorStringByName()
|
||
function and X11R6RGB lump listing a bunch of named colors.
|
||
|
||
March 11, 1998
|
||
- Added crosshair cvar and corresponding code to draw the crosshair.
|
||
Put some cheezy crosshairs in zdoom.wad, too. (Now if only you could
|
||
actually aim up and down...)
|
||
- Added V_DrawLucentPatch() function to draw translucent patches.
|
||
- Added freelook, lookspring, lookstrafe, m_pitch, m_yaw, m_forward,
|
||
and m_side cvars.
|
||
|
||
March 10, 1998
|
||
- Added invertmouse cvar.
|
||
- Put the colon back into the "startskill..." message in d_net.c.
|
||
- ylookup[] and columnofs[] tables in r_draw.c are now allocated
|
||
dynamically based on screen size. Hacked this into R_InitFuzzTable().
|
||
- Status bar finally properly draws borders to the left and right
|
||
of itself if the screen is wider than it is.
|
||
- Added documentation for am_* and developer cvars in commands.txt.
|
||
- Discovered that lines not yet seen but visible thanks to the
|
||
automap powerup were not color-configurable. Changed it.
|
||
- Changed all color #defines in am_map.c into ints that get
|
||
initialized from color values in cvars each time
|
||
AM_initVariables is called. Also added back support for the
|
||
original automap color scheme regardless of what the user's colors are
|
||
through the am_usecustomcolors cvar.
|
||
- In single player, automap can now draw the player's arrow using
|
||
any color and not just WHITE.
|
||
- Removed all references to lightlev in am_map.c, including the
|
||
AM_updateLightLev() function. The "strobe" effect was really cheap
|
||
anyway, never used, and will be fairly difficult to implement
|
||
cleanly when I make the automap colors customizable.
|
||
- Changed I_Error() call in ParseHex() to a Printf() call.
|
||
- Removed "extern byte *demo_p;" from d_protocol.c. It didn't need to
|
||
be there anyway.
|
||
- Added V_GetColorFromString() to v_video.c.
|
||
- Changed BASEYCENTER #define in r_things.c from
|
||
(100-((SCREENHEIGHT-200)/12)) to (100). PlayerSprites are now drawn
|
||
in approximately the same location at all resolutions.
|
||
|
||
March 9, 1998
|
||
- Seem to have finally fixed the problem with my visplane growing
|
||
code. Using calloc() in PrepVisPlanes() instead of malloc() seems
|
||
to have solved all my woes. Now on to something else!
|
||
- Boy do I feel dumb. Found a bug in C_DrawConsole () where the
|
||
revealed variable wasn't always being set before it was used.
|
||
Now I rewrote it so that it doesn't need to calculate
|
||
revealed at all. It ought to be marginally faster, too (although
|
||
it probably won't make a bit of difference during gameplay).
|
||
|
||
March 7, 1998
|
||
- Still working on MaxVisPlanes bug. This is proving to be more
|
||
elusive than I had expected, since VC++ is being most unhelpful.
|
||
The bug doesn't show up in the debug build (heap checking doesn't
|
||
even catch anything), and I can't use the debugger on the release
|
||
build where the bug does show up! Grrr!
|
||
|
||
March 6, 1998
|
||
|
||
- Started changing MAXVISPLANES constant into the growing integer
|
||
MaxVisPlanes. Moved some code from R_PlaneInitData() to
|
||
R_InitPlanes() and added the GetMoreVisPlanes() function to
|
||
allocate more planes. Strange crashing bugs in release but not
|
||
debug builds. Probably stomping on memory somewhere.
|
||
- Fixed stupid bug in I_ShutdownSound: was calling MIDASfreeSample()
|
||
when I should have been calling MIDASfreeChannel(). Also moved
|
||
freeing of channels to another for loop (probably not necessary, but...).
|
||
- Fixed -file parameter to work with console commands on the
|
||
command line.
|
||
- Changed MAXVISSPRITES constant into the integer MaxVisSprites,
|
||
which is the size of the vissprites[] array. This value can now
|
||
grow as needed to accomodate more vissprites.
|
||
- Added developer cvar and DEVONLY macro.
|
||
- Functions in i_music.c now pay attention to the looping flag.
|
||
- C_AddNotifyString() now pays attention to show_messages cvar.
|
||
- Added support for specifying console commands on the command line.
|
||
|