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