pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/games/doomlegacy games/doomlegacy: Update to 1.48.10



details:   https://anonhg.NetBSD.org/pkgsrc/rev/e1ad51b0c841
branches:  trunk
changeset: 372014:e1ad51b0c841
user:      micha <micha%pkgsrc.org@localhost>
date:      Mon Jan 17 15:10:15 2022 +0000

description:
games/doomlegacy: Update to 1.48.10

FEATURES 1.48.10

  • Support for DeepBSP V4 extended nodes (based on crispy doom). Also ZDoom
    extended nodes (based on code from woof 1.2.0), supporting uncompressed,
    and compressed nodes (when zlib is present). Allows playing several wads,
    such as Avactor, and Lost Civilization, that are otherwise playable by
    DoomLegacy, but use extended nodes for several of their maps. Code provided
    by Michael Bäuerle (FR_0095).
  • Added the blockmap generation code provided by Michael Bäuerle (FR_0096).
    Some of the code is borrowed from crispy doom, altered a bit by Michael
    Bäuerle to suit DoomLegacy, and then totally mangled by WJ.
    A blockmap control has been put into the menu.
      □ Vanilla: Load the blockmap, preserves blockmap tricks.
      □ Large: On large blockmaps (error prone), Generate the blockmap instead.
      □ Generate: Always Generate a blockmap.
      □ Auto: Try to Load the blockmap, upon significant errors then Generate a
        blockmap.
  • The hardware sky draw (OpenGL, etc.) now uses the extended textures. The
    scaling and alignment of the sky in hardware draw has been made consistent
    with software draw. The sky movement from head turning is greatly reduced.
    There is still some horizontal wander.

    The hardware sky still does not change when the player is Invulnerable. The
    hardware draw sky does not support the necessary multiple colormaps right
    now.
  • A dehacked thing translation command line switch, -dehthing. This selects
    the dehacked translation for thing numbers in the range 138 to 150. This
    overrides the Automatic translation detection.
      □ legacy : DoomLegacy untranslated
      □ boom : translate things according to Boom
      □ prboom : Boom and Beta things
      □ ee : Eternity Engine things
  • A separate supplementary wad is provided that has dog sprites and sounds.
    Specified before a wad, it provides default dog sprites and sounds.
    Specified after a wad, it replaces the dog sprites in a wad.
  • More ports now allow a second mouse. This allows using PC, mousesystems,
    and PS2 type mice. The ports that have the second mouse support are SDL,
    WIN32, and X11.
  • The Linux X11 port got a total rewrite of sfx sound. It previously was only
    supporting OSS sound, and ESD sound. Can now select between OSS, ALSA, ESD,
    PulseAudio, and JACK sound devices using the sound menu. For music, can now
    select between MIDI, TiMidity, FluidSynth, external MIDI, FM_Synth, and
    AWE32_Synth, using the sound menu. This depends upon which support got
    compiled into the program, as selected in the make_options file.

    Many of the options are untested. The last two Synth options depend on
    older specific sound cards, and will not be included in released binaries.
    I have not managed to get a FluidSynth installation to work, I don't have
    an external MIDI device to test with, and JACK wants to take over the
    entire sound system.

BUG FIXES 1.48.10

  • Added failure detection for setting drawmode from config file. If the
    config file drawmode fails then use a window at native bpp. This used to
    fail ungracefully.
  • Improved Gcc10 compilation, eliminating most of the nuisance messages.
    Fixed usages of snprintf, and strncpy. Fixed bug 0671.
  • The Clang compiler caught some mistakes. The old code probably did work.
    Fixed bug 0672.
  • Fixed where the program is stuck in client mode. Once having tried to
    connect as client, the program would not go back to server mode, not even
    when starting a netgame as server. A symptom was the player wait count
    being initialized to 99. Fixed to set server mode. Fixes bug 0677.
  • Players were kicked during netgame when their blood splat setting was
    different than the server. As it was desireable to allow players to turn
    off blood splats independently of the server setting, this was fixed by
    making the off code call P_Random appropriately. This also fixes a demo
    consistency error. Fixes bug 0678.
  • Changed the netgame repair function to correctly report differences in
    random number settings for the server. The message syntax was only
    appropriate for the client, displaying reversed server/client values at the
    server.
  • Adding extended nodes fixed several bugs. Fixes bug #657, due to DeepBSP V4
    extended nodes. Fixes the segfault in Eviternity.wad Map15 and Map32, due
    to use of uncompressed ZDoom extended nodes.
  • Fixed dehacked code to read Avactor.wad dehacked lump. Increased the
    dehacked buffer length to 1028. Made all the string comparisons caseless.
    Adopted some logic from PrBoom and Eternity regarding exiting sections on a
    blank line. Detect "//" lines as comments.
  • Fixed the hardware draw to clip lights at 0..255. Some wad editors put in a
    default light value of 256. This fixes some wads, like Avactor.wad, which
    has light values of 256 for some sectors. These would show up as black
    sectors. Most ports allow the light field to exceed 255, allowing some
    lighting tricks (that few wads take advantage of).
  • In Avactor.wad, there are an excessive number of BSP partition lines that
    miss the subsector. In this case the hardware draw BSP must determine if
    the subsector poly is to the right, or to the left of the divide line. This
    must match the BSP partitioning, as those poly will be assigned to the
    front sector, and back sector. Sometimes it was testing a vertex on the
    divline, leading to the poly being assigned to the wrong subsector. This
    fixes a missing floor in Avactor.wad (Map04, sector 1757).
  • Fixed some bad subsector draws for hardware-draw in Avactor.wad (Map05
    sector 1502). These were using the wrong sector to draw the subsector. For
    the polygons that do not have a linedef as a side, there must be a search
    of all linedefs to find one that indentifies the sector that this subsector
    is within. The test needed to be more robust for large maps.
  • Lost Civilization uses some masked textures on upper textures and single
    sided walls. This is not entirely valid usage, but it happens. The software
    render draws black in the missing portions of the texture. With hardware
    render, OpenGL, this shows sky through the wall. Fixed the hardware render
    to also draw black in this usage.
  • Fixed the menu selected extra dogs, to be spawned using the correct type
    code. This fix was revised three times, as more problems with dehacked dogs
    arose. Fixes bug 0681.
  • Fixed the rocket in Valiant.wad. It uses dehacked thing numbers from Beta
    versions, that are valid in PrBoom, but in Doom Legacy they match thing
    numbers for Dogs, smoke, and other Legacy specific things.

    Implemented dehacked detection that translates these to more appropriate
    DoomLegacy things. This affects dehacked things in Lost Civilization,
    Avactor, Valiant, and especially antaxyz.
  • Always include the missing sprite detect, from Debug. Often the dog sprite
    is missing from the wad.
  • Made Voodoo card support optional. The base code is no longer tied to
    support for Glide.
  • Fix Load savegame menu controls to allow ESCAPE from the Load savegame
    after changing to another directory.

diffstat:

 games/doomlegacy/Makefile                     |   17 +-
 games/doomlegacy/PLIST                        |    3 +-
 games/doomlegacy/distinfo                     |   21 +-
 games/doomlegacy/files/p_blockmap.c           |  259 -----------
 games/doomlegacy/files/p_blockmap.h           |   32 -
 games/doomlegacy/files/p_extnodes.c           |  585 --------------------------
 games/doomlegacy/files/p_extnodes.h           |   92 ----
 games/doomlegacy/patches/patch-src_Makefile   |   20 -
 games/doomlegacy/patches/patch-src_am__map.c  |   21 -
 games/doomlegacy/patches/patch-src_doomdata.h |   29 -
 games/doomlegacy/patches/patch-src_dstrings.c |   19 -
 games/doomlegacy/patches/patch-src_p__local.h |   19 -
 games/doomlegacy/patches/patch-src_p__setup.c |  164 -------
 games/doomlegacy/patches/patch-src_r__defs.h  |   43 -
 14 files changed, 17 insertions(+), 1307 deletions(-)

diffs (truncated from 1419 to 300 lines):

diff -r 7b0a2a112ded -r e1ad51b0c841 games/doomlegacy/Makefile
--- a/games/doomlegacy/Makefile Mon Jan 17 14:45:00 2022 +0000
+++ b/games/doomlegacy/Makefile Mon Jan 17 15:10:15 2022 +0000
@@ -1,11 +1,10 @@
-# $NetBSD: Makefile,v 1.12 2021/01/18 09:41:07 micha Exp $
+# $NetBSD: Makefile,v 1.13 2022/01/17 15:10:15 micha Exp $
 
-VERS=                  1.48.8
+VERS=                  1.48.10
 PKGNAME=               doomlegacy-${VERS}
-PKGREVISION=           1
 CATEGORIES=            games
 MASTER_SITES=          ${MASTER_SITE_SOURCEFORGE:=doomlegacy/}
-DISTNAME=              ${PKGNAME_NOREV:S/-/_/}_source
+DISTNAME=              ${PKGNAME_NOREV:S/-/_/}_source_1617
 DISTFILES=             ${DEFAULT_DISTFILES} doomlegacy_${VERS}_common.zip
 EXTRACT_SUFX=          .tar.bz2
 
@@ -49,10 +48,12 @@
 CFLAGS+=               -DHAVE_ZLIB
 LDFLAGS+=              -lz
 
+# No longer matches automatically since SVN revision was appended to distfile
+WRKSRC=                        ${WRKDIR}/${PKGNAME_NOREV:S/-/_/}_source
+
 # DOOMWADDIR is intentionally shared with other Doom packages
 DOOMWADDIR=            share/doom
 INSTALLATION_DIRS=     bin ${PKGMANDIR}/man6 share/doc/doomlegacy ${DOOMWADDIR}
-
 # Honor environment
 SUBST_CLASSES+=                makeopt
 SUBST_STAGE.makeopt=   do-configure
@@ -82,10 +83,6 @@
        ${CP} ${FILESDIR}/INSTALL.pkgsrc ${WRKDIR}
        ${CP} ${FILESDIR}/doomlegacy.sh ${WRKDIR}
        ${CP} ${FILESDIR}/doomlegacy.6.in ${WRKDIR}
-       ${CP} ${FILESDIR}/p_blockmap.c ${WRKSRC}/src
-       ${CP} ${FILESDIR}/p_blockmap.h ${WRKSRC}/src
-       ${CP} ${FILESDIR}/p_extnodes.c ${WRKSRC}/src
-       ${CP} ${FILESDIR}/p_extnodes.h ${WRKSRC}/src
        cd ${WRKSRC} && ${CP} make_options_nix make_options
 
 # Process start script and manpage templates
@@ -104,6 +101,8 @@
                ${DESTDIR}${PREFIX}/bin/doomlegacy.bin
        ${INSTALL_SCRIPT} ${WRKDIR}/doomlegacy                          \
                ${DESTDIR}${PREFIX}/bin/doomlegacy
+       ${INSTALL_DATA} ${WRKDIR}/doomlegacy_${VERS}/dogs.wad           \
+               ${DESTDIR}${PREFIX}/${DOOMWADDIR}/dogs.wad
        ${INSTALL_DATA} ${WRKDIR}/doomlegacy_${VERS}/legacy.wad         \
                ${DESTDIR}${PREFIX}/${DOOMWADDIR}/legacy.wad
        cd ${WRKSRC} &&                                                 \
diff -r 7b0a2a112ded -r e1ad51b0c841 games/doomlegacy/PLIST
--- a/games/doomlegacy/PLIST    Mon Jan 17 14:45:00 2022 +0000
+++ b/games/doomlegacy/PLIST    Mon Jan 17 15:10:15 2022 +0000
@@ -1,8 +1,9 @@
-@comment $NetBSD: PLIST,v 1.2 2020/05/19 11:20:16 micha Exp $
+@comment $NetBSD: PLIST,v 1.3 2022/01/17 15:10:15 micha Exp $
 bin/doomlegacy
 bin/doomlegacy.bin
 man/man6/doomlegacy.6
 share/doc/doomlegacy/INSTALL.pkgsrc
 share/doc/doomlegacy/legacy.css
 share/doc/doomlegacy/whatsnew.html
+share/doom/dogs.wad
 share/doom/legacy.wad
diff -r 7b0a2a112ded -r e1ad51b0c841 games/doomlegacy/distinfo
--- a/games/doomlegacy/distinfo Mon Jan 17 14:45:00 2022 +0000
+++ b/games/doomlegacy/distinfo Mon Jan 17 15:10:15 2022 +0000
@@ -1,15 +1,8 @@
-$NetBSD: distinfo,v 1.11 2021/10/26 10:43:54 nia Exp $
+$NetBSD: distinfo,v 1.12 2022/01/17 15:10:15 micha Exp $
 
-BLAKE2s (doomlegacy_1.48.8_common.zip) = b9ed06a96b64735666335d1c9b16c8053f8f7498298f5b30d46a005474e16a3a
-SHA512 (doomlegacy_1.48.8_common.zip) = 4b93aed03bcfd9eb0dd22f0b9231e93e63ee2cc0eee6a3a9854def384c4c290dbdb586eb8d888392c53d8a5d549718eb7b4f55cecb1c4924c03b18125876b292
-Size (doomlegacy_1.48.8_common.zip) = 1011350 bytes
-BLAKE2s (doomlegacy_1.48.8_source.tar.bz2) = fed19ed08990f4b6acc384504ce23216723a5c525bc8a051cfb172e3e09c3232
-SHA512 (doomlegacy_1.48.8_source.tar.bz2) = 10dfe5ac20715b3c8ca2305f28d28bd5eada42a13a3aadad23bbf9b691e988561f26b61267816867b69e2854f86cc5c4ec876a4cb10fda157f971a4014db55ec
-Size (doomlegacy_1.48.8_source.tar.bz2) = 2451682 bytes
-SHA1 (patch-src_Makefile) = 34c323bdd96787cb6afe0be5dc99b129ab8f1552
-SHA1 (patch-src_am__map.c) = 14b3c8b70c63778ad043827ab2f0b6f4fe07bcde
-SHA1 (patch-src_doomdata.h) = 8c3186dafbf11a8a75262a06755dd9807cb58612
-SHA1 (patch-src_dstrings.c) = 16e50ac649f76d415b820a0e5093d15af3180e6d
-SHA1 (patch-src_p__local.h) = ad6c770b95e87fb06e34ec7643e98f59d41e71f4
-SHA1 (patch-src_p__setup.c) = f478975acbc64627d4b2727fa77d1b1252ffc719
-SHA1 (patch-src_r__defs.h) = 91e6543674e3474c9afdb0ba19d6869b658d0543
+BLAKE2s (doomlegacy_1.48.10_common.zip) = e61a5d26d9e160cbe35b6fbf75433155567f914a1d6d636ea98f1c72ed2bc7d3
+SHA512 (doomlegacy_1.48.10_common.zip) = f319420660fe3b25458356d6818162b1ccabb1fbe549745ea1841d8f5b328904bbf1e298f969e8bedd9e071f274a77aedbe83a610c34367bdc2e162a7ad77701
+Size (doomlegacy_1.48.10_common.zip) = 1050867 bytes
+BLAKE2s (doomlegacy_1.48.10_source_1617.tar.bz2) = 603834f0062b71ad3cb05a10604a8448a4e5d22e4cc9d3c3b46e61f9b1ce9160
+SHA512 (doomlegacy_1.48.10_source_1617.tar.bz2) = 3dd13443218623ec0d512f8f59e1f308216b53a832c50438d0f6cdbe06ca06f2c213a3b2b7b2ca49d4dc71d73330374d35b00d77647023d99a8940a35e72efde
+Size (doomlegacy_1.48.10_source_1617.tar.bz2) = 2572260 bytes
diff -r 7b0a2a112ded -r e1ad51b0c841 games/doomlegacy/files/p_blockmap.c
--- a/games/doomlegacy/files/p_blockmap.c       Mon Jan 17 14:45:00 2022 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,259 +0,0 @@
-//
-// Copyright(C) 1993-1996 Id Software, Inc.
-// Copyright(C) 1999 id Software, Chi Hoang, Lee Killough, Jim Flynn,
-//                   Rand Phares, Ty Halderman
-// Copyright(C) 2005-2014 Simon Howard
-// Copyright(C) 2017 Fabian Greffrath
-// Copyright(C) 2020 by DooM Legacy Team
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// DESCRIPTION:
-// [crispy] Create Blockmap
-// [MB] 2020-05-13: Description of blockmap lump format:
-//      https://doomwiki.org/wiki/Blockmap
-//
-
-#include <stdint.h>      // [MB] 2020-05-13: Added for C99 integer data types
-#include <stdlib.h>
-#include <string.h>      // [MB] 2020-05-12: Added for memset()
-
-//#include "i_system.h"  // [MB] 2020-05-12: I_Realloc() is now here
-#include "doomincl.h"    // [MB] 2020-05-12: Added for I_Error()
-#include "p_local.h"
-#include "r_state.h"
-#include "z_zone.h"
-
-
-// I_Realloc
-/*
- * [MB] 2020-05-12: Ported from Crispy Doom 5.8.0 (src/i_system.c)
- * - Reject zero new size (would be implementation defined behaviour)
- * - Use (unsigned long) for I_Error() (size is not a pointer)
- */
-static void *I_Realloc(void *ptr, size_t size)
-{
-    void *new_ptr = NULL;
-
-    if (0 == size)
-        I_Error("I_Realloc: Failed on zero new size");
-    else
-    {
-        new_ptr = realloc(ptr, size);
-        if (NULL == new_ptr)
-            I_Error("I_Realloc: Failed on reallocation of %lu bytes",
-                    (unsigned long) size);
-    }
-
-    return new_ptr;
-}
-
-
-// [crispy] taken from mbfsrc/P_SETUP.C:547-707, slightly adapted
-/*
- *  [MB] 2020-05-12: Ported from Crispy Doom 5.8.0 (src/doom/p_blockmap.c)
- *  - Change indentation to 4 SPs (matching DooM Legacy style)
- *  - Replace blockmap with blockmapindex (int32_t* => uint32_t*)
- *    Global pointer to header of the blockmap lump
- *  - Replace blockmaplump with blockmaphead (int32_t* => uint32_t*)
- *    Global pointer to beginning of the part containing the offsets
- *  - Added typecasts for unsigned target types
- */
-void P_CreateBlockMap(void)
-{
-    register int i;
-    fixed_t minx = INT_MAX, miny = INT_MAX;
-    fixed_t maxx = INT_MIN, maxy = INT_MIN;
-
-    // First find limits of map
-    for (i=0 ; i<numvertexes ; i++)
-    {
-        if (vertexes[i].x >> FRACBITS < minx)
-            minx = vertexes[i].x >> FRACBITS;
-        else if (vertexes[i].x >> FRACBITS > maxx)
-            maxx = vertexes[i].x >> FRACBITS;
-        if (vertexes[i].y >> FRACBITS < miny)
-            miny = vertexes[i].y >> FRACBITS;
-        else if (vertexes[i].y >> FRACBITS > maxy)
-            maxy = vertexes[i].y >> FRACBITS;
-    }
-
-    // [crispy] doombsp/DRAWING.M:175-178
-    minx -= 8; miny -= 8;
-    maxx += 8; maxy += 8;
-
-    // Save blockmap parameters
-    bmaporgx = minx << FRACBITS;
-    bmaporgy = miny << FRACBITS;
-    bmapwidth  = ((maxx-minx) >> MAPBTOFRAC) + 1;
-    bmapheight = ((maxy-miny) >> MAPBTOFRAC) + 1;
-
-    // Compute blockmap, which is stored as a 2d array of variable-sized lists
-    //
-    // Pseudocode:
-    //
-    // For each linedef:
-    //
-    //   Map the starting and ending vertices to blocks.
-    //
-    //   Starting in the starting vertex's block, do:
-    //
-    //     Add linedef to current block's list, dynamically resizing it.
-    //
-    //     If current block is the same as the ending vertex's block,
-    //     exit loop.
-    //
-    //     Move to an adjacent block by moving towards the ending block in
-    //     either the x or y direction, to the block which contains the
-    //     linedef.
-    {
-        typedef struct { int n, nalloc, *list; } bmap_t;  // blocklist structure
-        unsigned tot = bmapwidth * bmapheight;            // size of blockmap
-        bmap_t *bmap = calloc(sizeof *bmap, tot);         // array of blocklists
-        int x, y, adx, ady, bend;
-
-        for (i=0; i < numlines; i++)
-        {
-            int dx, dy, diff, b;
-
-            // starting coordinates
-            x = (lines[i].v1->x >> FRACBITS) - minx;
-            y = (lines[i].v1->y >> FRACBITS) - miny;
-
-            // x-y deltas
-            adx = lines[i].dx >> FRACBITS, dx = adx < 0 ? -1 : 1;
-            ady = lines[i].dy >> FRACBITS, dy = ady < 0 ? -1 : 1;
-
-            // difference in preferring to move across y (>0) instead of x (<0)
-            diff = !adx ? 1 : !ady ? -1 :
-                ( ((x >> MAPBTOFRAC) << MAPBTOFRAC) +
-                    (dx > 0 ? MAPBLOCKUNITS-1 : 0) - x ) *
-                    (ady = abs(ady)) * dx -
-                ( ((y >> MAPBTOFRAC) << MAPBTOFRAC) +
-                    (dy > 0 ? MAPBLOCKUNITS-1 : 0) - y ) *
-                    (adx = abs(adx)) * dy;
-
-            // starting block, and pointer to its blocklist structure
-            b = (y >> MAPBTOFRAC)*bmapwidth + (x >> MAPBTOFRAC);
-
-            // ending block
-            bend = (((lines[i].v2->y >> FRACBITS) - miny) >> MAPBTOFRAC) *
-                bmapwidth +
-                    (((lines[i].v2->x >> FRACBITS) - minx) >> MAPBTOFRAC);
-
-            // delta for pointer when moving across y
-            dy *= bmapwidth;
-
-            // deltas for diff inside the loop
-            adx <<= MAPBTOFRAC;
-            ady <<= MAPBTOFRAC;
-
-            // Now we simply iterate block-by-block until we reach the end block
-            while ((unsigned) b < tot)    // failsafe -- should ALWAYS be true
-            {
-                // Increase size of allocated list if necessary
-                if (bmap[b].n >= bmap[b].nalloc)
-                    bmap[b].list = I_Realloc(bmap[b].list,
-                        ( bmap[b].nalloc = bmap[b].nalloc ?
-                            bmap[b].nalloc*2 : 8 ) *
-                            sizeof*bmap->list);
-
-                // Add linedef to end of list
-                bmap[b].list[bmap[b].n++] = i;
-
-                // If we have reached the last block, exit
-                if (b == bend)
-                    break;
-
-                // Move in either the x or y direction to the next block
-                if (diff < 0)
-                    diff += ady, b += dx;
-                else
-                    diff -= adx, b += dy;
-            }
-        }
-
-        // Compute the total size of the blockmap.
-        //
-        // Compression of empty blocks is performed by reserving two offset
-        // words at tot and tot+1.
-        //
-        // 4 words, unused if this routine is called, are reserved at the start.
-        {
-            int count = tot+6;  // we need at least 1 word per block,
-                                // plus reserved's
-
-            for (i = 0; i < tot; i++)
-                if (bmap[i].n)
-                    count += bmap[i].n + 2; // 1 header word + 1 trailer word +
-                                            // blocklist
-
-            // Allocate blockmap lump with computed count
-            blockmaphead = Z_Malloc(sizeof(*blockmaphead) * count, PU_LEVEL, 0);
-        }
-
-        // Now compress the blockmap.
-        {


Home | Main Index | Thread Index | Old Index