Jump to content

DoomLegacy 1.48.6 Release


Recommended Posts

DoomLegacy  1.48.6  is now available at SourceForge https://sourceforge.net/projects/doomlegacy/files/ 

 

 

FEATURES 1.48.6
---
DoomLegacy can read zip archives (Linux Only, enabled by compile option ZIPWAD).
When a load file is a zip archive, all loadable files within the
archive are loaded.
When searching for a known file, zip archives of the
same name (but with .zip) are also searched.

This uses library libzip.
When built with compile option ZIPWAD_OPTIONAL, DoomLegacy detects if the
libzip library is present on the user machine.
This allows DoomLegacy to run without the feature, when the user does not have libzip.

A libzip before version 1.2 does not have a seek function.
A compile option will provide our own zip_seek function, so libzip 1.0
can be used.
---
Recorded Demos now include both the Version and Revision numbers,
so revision specific behaviors can be enabled.
DoomLegacy 1.48.6 has modified its native demo format, which
is revision specific.  Older demo formats are still playable.
---
Recognize and handle DeePsea Tall patches.
Enabled with compile option DEEPSEA_TALL_PATCH.
Michael Bauerle submitted the orignial patch, derived from crispy doom.
---

BUG FIXES 1.48.6
---
DoomLegacy and PrBoom monster infighting does not have
missile invulnerability between monsters of the same species.
Some other ports (Boom, MBF, Eternity engine) do not have the
infight test, so their monsters are always invulnerable to missiles
from their own species.

Added another item to the infight control to select the behavior.

Implements "Full Infight" setting with missile damage (Legacy, PrBoom).

Implements other infight settings without missile damage (Boom, MBF, Eternity).

Fixes BUG 0664.

---
Added MBF infight logic, thats stops monsters from firing on friends.

---
Legacy demo would fail to start due to blocking the textcmd that loads
the map.

The Legacy 1.48.4 demo was recorded with player 0 issuing the map textcmd.
Player 0 was not in the game yet, and this was detected as
a textcmd from a non-existant player, which got caught by new security code.
For textcmd issued before player 0 is in the game, the demo needs to use SERVER_PID.

Fixed demo read to redirect player 0 demo textcmd to SERVER_PID.

DoomLegacy 1.48 has a single long combined textbuf, containing the textcmd
from all players.
Within the combined textbuf, there are individual textcmd marked with the player id.
Individual textcmd are still limited to 255 chars as in an ordinary textbuf.
The DoomLegacy 1.48.6 demo format has been changed to store the entire combined textbuf buffer
into the player 0 slot.  This is simpler for recording and playback,
has the same effect, and allows SERVER_PID textcmd, which the
previous demo format did not.

The commands to create a player (and other server actions) are now issued by SERVER_PID,
where in older demos they were issued by player 0, before player 0 existed.
DoomLegacy 1.48 has better protection against malicious network traffic than previous versions,
and checking textcmd validity is part of the security protection.
This fixes demo playback to work with the security checking.

Changed the SERVER_PID to 250 now, for future expansion of players.

This fixes bug 0665.

---
Fixed the moonwalk bug, where monsters would sometimes walk backward.
This was due to a bad translation of an everything-in-one-expression
to more maintainable code.

---
Make an oof sound when hit a 2s line, just like when hit a 1s line.
Adopted from PrBoom, a Killough enhancement.

---
Make optional, and disabled, some old development hacks.

Option DEVPARM_LOADING:

  Loaded development wads from a special directory.
  This used switches  -wart, -devgame (even older -shdev, -regdev, -comdev).

Option WADFILE_RELOAD:

  If a filename started with a tilde "~", it was taken as an indication
  to reload the file on every lump access.
  This was to enable leaving doom running while changing wad files.

Option LOADING_DISK_ICON:

  Not implemented in any of the DoomLegacy ports anyway.

---
The Full Graphics startup was fragile, requiring constant fixing.
Video startup now changes directly to the config modes,
which is faster and cleaner.  Removed some antiquated code and interactions,
adopting an interface that puts the main code in control.

---
Fixed the violet line, trees, and tall sprites of "Lost civilization" wad.
This required being able to save the same texture as both a transparent patch texture,
for drawing hanging vines,
and as a picture format texture, for drawing tiled walls.
This fixes Bug 0663.


The fast drawing of wall textures required them to be
a power-of-2 in width, so they could be tiled.
To handle the case where it is not a power-of-2 in width,
it now uses a slower masked draw similar to that in PrBoom,
which also handles a negative offset.
This fixes the large tree in "Lost civilization".

---
Fixed some old code to use POSIX fcntl, which allows it
to compile on SunOS.
Patches submitted by Michael Bauerle.
Fixes Bug 0666,
 

Edited by wesleyjohnson

Share this post


Link to post
25 minutes ago, wesleyjohnson said:

Option LOADING_DISK_ICON:

  Not implemented in any port anyway.

Chocolate Doom and Odamex would like a word.

Share this post


Link to post

To clarify:  Not implemented in any of the DoomLegacy Ports, such as SDL, X11, DOS, MACOS, WIN32,   (does not refer to other project's Doom ports).

All of the DoomLegacy ports had a non-functional dummy for the Disk ICON function, so I made that code conditional on  LOADING_DISK_ICON.

Share this post


Link to post
  • 1 month later...

From the Just- cannot-win category of bugs:

 

DoomLegacy 1.48.6.

Bug 0670, Monsters mysteriously disappearing, moving large distances into the void space.

This mostly escaped detection in testing, as it only affects a few monsters, and is only noticeable when monsters show up in the void space.

This is caused by a broken calculation to determine the opposite direction.
This bug was introduced in the moonwalk patch (svn 1540) when I copied the opposite calculation code from PrBoom, in an effort to reduce differences that might lead to bugs, replacing a table lookup implementation.  However, the PrBoom calculation must be guarded against DI_NODIR, which the table implementation could handle inherently.
Without that protection, an olddir of DI_NODIR introduced a direction of 12 into the logic, which can only handle directions of 0..7, with NODIR=8.

Several times a game that 12 value would survive long enough to get used, which would be expressed as a wild walk movement.

 

Fixed in SVN 1563.
Both options were fixed, with the fixed calculation barely winning a speed comparison over the table lookup, and having a slightly smaller cache impact.

 

 

Having monsters escape the play area adversely affects all games played with 1.48.6, so another release will be scheduled soon.
There will be some testing now, to make sure of the bug fixes.

 

In the meantime, on some maps some monsters will escape into the void preventing 100% kills.

DoomLegacy Version 1.48.4 is not affected, but some other bugs in that version were fixed in 1.48.6.

 

It has not escaped my notice that this bug was caused by reverting to PrBoom code, in an proactive effort to prevent subtle errors due to having slightly different implementations.
 

Edited by wesleyjohnson

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...