aboutsummaryrefslogtreecommitdiff
path: root/games/eduke32
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2021-11-08 15:42:25 -0500
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2021-12-04 10:08:54 +0700
commit80ec56515c4c0246bc07f15f1b76cee1a8f271f9 (patch)
tree4a808d523abf0d99362c171b2b8c9c7dc531d0cd /games/eduke32
parent4ef8aa3c658088889eae38d5c70ab86f0c50c9cf (diff)
games/eduke32: Updated for version 20211102_9751_8970754aa.
Signed-off-by: B. Watson <yalhcru@gmail.com> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'games/eduke32')
-rw-r--r--games/eduke32/README65
-rw-r--r--games/eduke32/README_game_data.txt52
-rw-r--r--games/eduke32/compilefix.diff12
-rw-r--r--games/eduke32/desktop/eduke32.desktop (renamed from games/eduke32/eduke32.desktop)3
-rw-r--r--games/eduke32/desktop/fury.desktop8
-rw-r--r--games/eduke32/desktop/mapster32.desktop (renamed from games/eduke32/mapster32.desktop)5
-rw-r--r--games/eduke32/desktop/voidsw.desktop8
-rw-r--r--games/eduke32/desktop/wangulator.desktop8
-rw-r--r--games/eduke32/doinst.sh6
-rw-r--r--games/eduke32/eduke32.SlackBuild183
-rw-r--r--games/eduke32/eduke32.info8
-rw-r--r--games/eduke32/eduke32.pngbin3936 -> 0 bytes
-rw-r--r--games/eduke32/eduke32.wrapper63
-rw-r--r--games/eduke32/icons/eduke32/128.pngbin0 -> 15593 bytes
-rw-r--r--games/eduke32/icons/eduke32/16.pngbin0 -> 853 bytes
-rw-r--r--games/eduke32/icons/eduke32/24.pngbin0 -> 1569 bytes
-rw-r--r--games/eduke32/icons/eduke32/256.pngbin0 -> 36574 bytes
-rw-r--r--games/eduke32/icons/eduke32/32.pngbin0 -> 2460 bytes
-rw-r--r--games/eduke32/icons/eduke32/48.pngbin0 -> 3901 bytes
-rw-r--r--games/eduke32/icons/eduke32/64.pngbin0 -> 6266 bytes
-rw-r--r--games/eduke32/icons/fury/16.pngbin0 -> 645 bytes
-rw-r--r--games/eduke32/icons/fury/24.pngbin0 -> 1186 bytes
-rw-r--r--games/eduke32/icons/fury/32.pngbin0 -> 1802 bytes
-rw-r--r--games/eduke32/icons/fury/48.pngbin0 -> 3325 bytes
-rw-r--r--games/eduke32/icons/fury/64.pngbin0 -> 4131 bytes
-rw-r--r--games/eduke32/icons/voidsw/128.pngbin0 -> 9142 bytes
-rw-r--r--games/eduke32/icons/voidsw/16.pngbin0 -> 729 bytes
-rw-r--r--games/eduke32/icons/voidsw/256.pngbin0 -> 20453 bytes
-rw-r--r--games/eduke32/icons/voidsw/32.pngbin0 -> 1698 bytes
-rw-r--r--games/eduke32/icons/voidsw/48.pngbin0 -> 2675 bytes
-rw-r--r--games/eduke32/icons/voidsw/64.pngbin0 -> 3865 bytes
-rw-r--r--games/eduke32/slack-desc12
-rw-r--r--games/eduke32/system_autoload.diff11
-rw-r--r--games/eduke32/tools.diff18
-rw-r--r--games/eduke32/twin_dragon.diff12
35 files changed, 266 insertions, 208 deletions
diff --git a/games/eduke32/README b/games/eduke32/README
index 3ffb125dab298..75f9511c0bd9c 100644
--- a/games/eduke32/README
+++ b/games/eduke32/README
@@ -1,32 +1,33 @@
-EDuke32 is a fork of the JFDuke3D port of Duke Nukem 3D (aka Duke3D),
-merging it with EDuke to provide many new features for mod authors.
-Also included is a map editor (mapster32).
-
-To play the game, you will need the DUKE32.GRP file from either
-the Duke Nukem 3D CD-ROM, or from the shareware version of Duke
-Nukem 3D. For convenience, the shareware GRP file has been packaged
-as eduke32_shareware_data, also available from slackbuilds.org.
-See README_game_data.txt
-
-eduke32 is an SDL application. It can be built with either SDL 1.2
-(included in Slackware), or SDL 2 (from SlackBuilds.org). By default,
-SDL 2 is used if it's installed, otherwise SDL 1.2 is used. To force
-building with SDL 1.2, export SDL2=no in the environment before
-building eduke32.
-
-If you want to play the HRP (High Resolution Pack), get the
-eduke32_hires_pack package from slackbuilds.org.
-
-To hear the in-game music, either use the Music Pack (see
-eduke32_hires_pack), or else install a set of MIDI patches (either
-freepats or eawpats) from slackbuilds.org. The game looks for
-/etc/timidity/timidity.cfg, but timidity doesn't actually have to be
-installed.
-
-By default, the Build utilities (kextract kgroup transpal wad2art
-wad2map) are built by this script and installed in /usr/games. If you
-don't want these, you can set BUILD_UTILS=no in the environment before
-running the SlackBuild script.
-
-Note for 64-bit users: Despite the "32" in the name, this software
-builds and runs just fine as 64-bit native binaries :)
+eduke32 (engine for Duke Nukem 3D, Shadow Warrior, Ion Fury)
+
+EDuke32 [1] is a fork of the JFDuke3D port of Duke Nukem 3D (aka
+Duke3D), merging it with EDuke to provide many new features for mod
+authors.
+
+Included in the package are:
+
+- eduke32 (Duke Nukem 3D engine; also plays Nam/Napalm and WWII GI) [3]
+- voidsw (Shadow Warrior engine)
+- fury (Ion Fury engine)
+- mapster32 (map editor for Duke Nukem 3D)
+- wangulator (map editor for Shadow Warrior)
+- the Build engine tools (kextract, kgroup, etc) [2]
+
+To play the games, you will need the .GRP file from each game. See
+README_game_data.txt.
+
+If you want to play the HRP (High Resolution Pack) in eduke32, install
+the eduke32_hires_pack package from slackbuilds.org. There's also a
+jfsw_hires_pack that works with voidsw.
+
+Notes:
+
+[1] Despite the "32" in the name, this software builds and runs just
+ fine as 64-bit native binaries :)
+
+[2] If you're installing both eduke32 and jfsw, don't build jfsw with
+ TOOLS=yes (or else the packages will conflict).
+
+[3] eduke32 is no longer capable of playing BloodCM, because BloodCM's
+ last release was in 2016. The bloodcm build has been removed from
+ SBo. If you want to play Blood, install nblood.
diff --git a/games/eduke32/README_game_data.txt b/games/eduke32/README_game_data.txt
index 96f85bd8cbc62..e9ccc43202665 100644
--- a/games/eduke32/README_game_data.txt
+++ b/games/eduke32/README_game_data.txt
@@ -1,23 +1,47 @@
+Although EDuke32 has been released under the GPL, the game data
+(graphics, sounds, levels, etc) is still proprietary.
-Although the Duke Nukem 3D code has been released under the GPL, the game
-data (graphics, sounds, levels, etc) is still proprietary, (c) 3D Realms.
-
-To play the game, you must provide the data files. There are a couple of
-options:
+For Duke Nukem 3D (eduke32), there are a couple of options:
- Buy the game, and copy DUKE3D.GRP and DUKE.RTS file from the game CD to
- /usr/share/games/eduke32/ or your ~/.eduke32 directory.
+ /usr/share/games/eduke32/ or your ~/.config/eduke32 directory.
Note: DUKE3D.GRP should be named "duke3d.grp" (lowercase), but DUKE.RTS
should be uppercase.
-- Use the files from the shareware version, which is still available for
- download from the 3D Realms site. For convenience, you may install the
- eduke32_shareware_data package from slackbuilds.org, which simply creates
- a Slackware package from the files in the shareware Duke3D installer.
+- Or, install the eduke32_shareware_data package from slackbuilds.org. This
+ only gives you the first episode of the game.
+
+For Nam/Napalm (eduke32):
+
+1. copy NAM.GRP or NAPALM.GRP to /usr/share/games/eduke32
+
+2. copy GAME.CON to /usr/share/games/eduke32/NAM.CON (or NAPALM.CON).
+ Do NOT name it GAME.CON, or Duke Nukem 3D will fail to start!
+
+For WW2GI (eduke32):
+
+1. copy WW2GI.GRP ENHANCE.CON, XDEFS.CON, and XUSER.CON to
+ /usr/share/games/eduke32
+
+2. copy GAME.CON to /usr/share/games/eduke32/WW2GI.CON (again, don't
+ name it GAME.CON).
+
+For Shadow Warrior (voidsw):
+
+- Buy the game, and copy SW.GRP to /usr/share/games/eduke32/
+
+- Or, install one or more of these SBo packages:
+
+ jfsw_demo_data (shareware; first 4 levels only)
+ jfsw_registered_data (full game)
+ jfsw_wanton_destruction (expansion pack)
+ jfsw_twin_dragon (expansion pack)
-For information on playing user-created levels or other Build engine games
-(such as Nam), see http://wiki.eduke32.com/ and http://www.eduke32.com/
+ (Yes, voidsw will find the game data in /usr/share/games/jfsw)
-If you want to play the HRP (High Resolution Pack), get the
-eduke32_hires_pack package from slackbuilds.org
+For Ion Fury (fury), presumably you copy the .grp file from the game
+directory to ~/.config/fury. The engine doesn't look anywhere else for
+the data files. I don't own this game, so I can't go into more detail.
+If you do own this game, email me with the details and I'll update
+this documentation.
diff --git a/games/eduke32/compilefix.diff b/games/eduke32/compilefix.diff
deleted file mode 100644
index 7b7ae7e49afaa..0000000000000
--- a/games/eduke32/compilefix.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur eduke32_20160704-5811.orig/build/src/util/generateicon.c eduke32_20160704-5811/build/src/util/generateicon.c
---- eduke32_20160704-5811.orig/build/src/util/generateicon.c 2013-10-06 03:50:16.000000000 -0400
-+++ eduke32_20160704-5811/build/src/util/generateicon.c 2016-08-07 23:58:35.091530858 -0400
-@@ -64,7 +64,7 @@
-
- memset(&icon, 0, sizeof(icon));
-
-- kpzload(argv[1], (intptr_t*)&icon.pixels, (int32_t*)&bpl, (int32_t*)&icon.width, (int32_t*)&icon.height);
-+ kpzload(argv[1], (intptr_t*)&icon.pixels, (int32_t*)&icon.width, (int32_t*)&icon.height);
- if (!icon.pixels) {
- Bfprintf(stderr, "Failure loading %s\n", argv[1]);
- return 1;
diff --git a/games/eduke32/eduke32.desktop b/games/eduke32/desktop/eduke32.desktop
index 2190c3cc97aaf..858b4d2ddef1f 100644
--- a/games/eduke32/eduke32.desktop
+++ b/games/eduke32/desktop/eduke32.desktop
@@ -1,9 +1,8 @@
[Desktop Entry]
Name=EDuke32
GenericName=Duke Nukem 3D Engine
-Comment=EDuke32 Duke Nukem 3D Engine
Icon=eduke32
-Exec=eduke32
+Exec=/usr/games/eduke32
Terminal=false
Type=Application
Categories=Game;ActionGame;
diff --git a/games/eduke32/desktop/fury.desktop b/games/eduke32/desktop/fury.desktop
new file mode 100644
index 0000000000000..ff60cf1f9ac9d
--- /dev/null
+++ b/games/eduke32/desktop/fury.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Fury
+GenericName=Ion Fury Engine
+Icon=fury
+Exec=/usr/games/fury
+Terminal=false
+Type=Application
+Categories=Game;ActionGame;
diff --git a/games/eduke32/mapster32.desktop b/games/eduke32/desktop/mapster32.desktop
index 432e44e25f7cc..280f04f486cc9 100644
--- a/games/eduke32/mapster32.desktop
+++ b/games/eduke32/desktop/mapster32.desktop
@@ -1,9 +1,8 @@
[Desktop Entry]
Name=Mapster32
-GenericName=Duke Nukem 3D Editor
-Comment=Mapster32 Duke Nukem 3D Editor
+GenericName=Duke Nukem 3D Map Editor
Icon=eduke32
-Exec=mapster32
+Exec=/usr/games/mapster32
Terminal=false
Type=Application
Categories=Game;ActionGame;
diff --git a/games/eduke32/desktop/voidsw.desktop b/games/eduke32/desktop/voidsw.desktop
new file mode 100644
index 0000000000000..558a2db691a67
--- /dev/null
+++ b/games/eduke32/desktop/voidsw.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=VoidSW
+GenericName=Shadow Warrior
+Icon=voidsw
+Exec=/usr/games/voidsw
+Terminal=false
+Type=Application
+Categories=Game;ActionGame;
diff --git a/games/eduke32/desktop/wangulator.desktop b/games/eduke32/desktop/wangulator.desktop
new file mode 100644
index 0000000000000..a99aee7356205
--- /dev/null
+++ b/games/eduke32/desktop/wangulator.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Wangulator
+GenericName=Shadow Warrior Map Editor
+Icon=voidsw
+Exec=/usr/games/wangulator
+Terminal=false
+Type=Application
+Categories=Game;ActionGame;
diff --git a/games/eduke32/doinst.sh b/games/eduke32/doinst.sh
index 59eb079d1557a..eff4bc5182267 100644
--- a/games/eduke32/doinst.sh
+++ b/games/eduke32/doinst.sh
@@ -1,3 +1,9 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications 2>/dev/null
fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/games/eduke32/eduke32.SlackBuild b/games/eduke32/eduke32.SlackBuild
index 373d4f78d1587..9bae23a3e9278 100644
--- a/games/eduke32/eduke32.SlackBuild
+++ b/games/eduke32/eduke32.SlackBuild
@@ -6,6 +6,24 @@
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# Note to self: in 20211102_9751_8970754aa, ekenbuild won't compile.
+
+# TODO: man page(s). eduke32.6 is ancient.
+
+# 20211108 bkw:
+# - update for 20211102_9751_8970754aa.
+# - include voidsw (shadow warrior), wangulator (sw map editor), and
+# fury (ion fury) executables.
+# - fix the tools compilation (again).
+# - get rid of wrapper script, upstream now supports looking for
+# data in /usr/share/games/eduke32, and creates its own ~/.config/eduke32
+# to save settings/etc in.
+# - stop the game from creating a log file in the current dir.
+# - rewrite README_game_data.txt, it's now complete for all the games
+# except Ion Fury.
+# - fix the @!%!#$% mouse sensitivity in voidsw.
+# - get rid of SDL1 build.
+
# 20170128 bkw:
# - update for 20170123_6052
# - add new utilities
@@ -27,14 +45,11 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=eduke32
-VERSION=${VERSION:-20170123_6052}
+VERSION=${VERSION:-20211102_9751_8970754aa}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -54,92 +69,106 @@ fi
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
fi
set -e
-SRCVER=${VERSION/_/-}
+SRCVER="$( echo $VERSION | tr _ - )"
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf ${PRGNAM}_${SRCVER}
-tar xvf $CWD/${PRGNAM}_src_${SRCVER}.tar.xz
+tar xvf $CWD/${PRGNAM}_src_${SRCVER}.tar.xz --exclude=platform
cd ${PRGNAM}_${SRCVER}
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-# this was always undocumented, defaulted to "no" in Slack <= 14.1.
-# should be safe to default to "yes" now that 14.2 has libvpx.
-if [ "${VPX:-yes}" != "yes" ]; then
- VPXFLAG="USE_LIBVPX=0"
-else
- ANDVPX=" and libvpx"
-fi
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+# Notes to self:
+# - adding LDFLAGS="-fuse-ld=gold" doesn't seem to affect the link times.
+# - SLKCFLAGS get applied, but also a bunch of other optimizations.
+runmake() {
+ echo "===> runmake args: '$@'"
+ make RELEASE=1 \
+ PRETTY_OUTPUT=0 \
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ "$@"
+}
+
+installbins() {
+ echo "===> installbins args: '$@'"
+ install -s -m0755 $@ $PKG/usr/games/
+}
+
+# 20211108 bkw: recent eduke32 no longer needs a wrapper script,
+# except that it wants to write a logfile to the current dir where
+# it was run. Since the log is just a copy of the game's stdout,
+# we don't actually need it, so:
+sed -i '/OSD_SetLogFile/d' \
+ source/duke3d/src/game.cpp \
+ source/duke3d/src/astub.cpp \
+ source/kenbuild/src/game.cpp \
+ source/kenbuild/src/bstub.cpp \
+ source/sw/src/game.cpp \
+ source/sw/src/jnstub.cpp
# On some systems, the game spits out tons of warnings:
# Error: glGetTexLevelParameteriv returned GL_FALSE!
# These don't seem to actually hurt anything (the game looks
# and plays fine), so let's get rid of them to clean up
# the log output.
-sed -i '/"Error: glGetTexLevelParameteriv/d' build/src/texcache.c
-
-# SDL2 might be preferred for some users. Specifically, those of us
-# who use a left-handed mouse (SDL1 gets the button mappings backwards).
-SDL2=${SDL2:-auto}
-SDL_TARGET=1
-if [ "$SDL2" = "auto" ]; then
- sdl2-config --version >/dev/null && SDL_TARGET=2
-elif [ "$SDL2" = "yes" ]; then
- SDL_TARGET=2
-else
- SDL_TARGET=1
-fi
-
-# Mildly confusing: the Makefile uses ARCH for arch-specific cflags
-make \
- ARCH="" \
- OPTIMIZATIONS="$SLKCFLAGS" \
- SDL_TARGET=$SDL_TARGET \
- $VPXFLAG
-
-# Build the utilities, if requested.
-if [ "${BUILD_UTILS:-yes}" = "yes" ]; then
- make utils sdlutils \
- OPTIMIZATIONS="$SLKCFLAGS" \
- ARCH="" \
- $VPXFLAG \
- SDL_TARGET=$SDL_TARGET \
-
- for i in kextract kgroup transpal wad2art wad2map kmd2tool \
- md2tool generateicon cacheinfo arttool givedepth \
- mkpalette unpackssi map2stl ivfrate makesdlkeytrans
- do
- install -s -D -m0755 $i $PKG/usr/games/$i
- done
-fi
-
-install -D -m0755 $PRGNAM $PKG/usr/libexec/$PRGNAM/$PRGNAM
-install -D -m0755 mapster32 $PKG/usr/libexec/$PRGNAM/mapster32
+sed -i '/"Error: glGetTexLevelParameteriv/d' source/build/src/texcache.cpp
+
+# voidsw's in-game menus don't let you crank the mouse sensitivity up high
+# enough. the mouse barely does anything at the default setting, and it's
+# still too slow-moving to be usable at the max.
+sed -i 's,8192,660,g' source/sw/src/config.cpp source/sw/src/menus.cpp
+sed -i '/MouseAnalogScale/s,65536,131071,' source/sw/src/config.cpp
+
+# Our twin dragon is a different repack from the ones voidsw knows
+# about. Also, upstream incorrectly says the Wanton Destruction
+# wd.grp requires sw.grp as a dependency. Actually, it's a
+# complete/standalone game, add-on or not, so this patch fixes that.
+patch -p1 < $CWD/twin_dragon.diff
+
+# Make eduke32 load autoload content from the system dir. voidsw
+# already does this.
+patch -p1 < $CWD/system_autoload.diff
+
+# eduke32 and mapster:
+runmake
+
+# voidsw and wangulator:
+runmake sw
+
+mkdir -p $PKG/usr/games
+installbins $PRGNAM mapster32 voidsw wangulator
+
+# the tools:
+# patch does 2 things: fix linking (add mimalloc as a dep) and
+# get rid of the generateicon tool (which still fails to build).
+patch -p1 < $CWD/tools.diff
+runmake tools
+installbins arttool bsuite cacheinfo givedepth ivfrate kextract kgroup \
+ kmd2tool makesdlkeytrans map2stl md2tool mkpalette transpal \
+ unpackssi wad2art wad2map
+
+# fury (which would fail without the 'make clean' first):
+make clean
+runmake fury FURY=1
+installbins fury
mkdir -p $PKG/usr/man/man6
gzip -9c $CWD/$PRGNAM.6 > $PKG/usr/man/man6/$PRGNAM.6.gz
-# Wrapper script to make things behave nicer
-install -D -m0755 $CWD/$PRGNAM.wrapper $PKG/usr/games/$PRGNAM
-( cd $PKG/usr/games ; ln -s $PRGNAM mapster32 )
-
# Mapster help files
mkdir -p $PKG/usr/share/games/$PRGNAM
cd package/sdk
@@ -147,14 +176,26 @@ cp *.hlp *.HLP names.h tiles.cfg $PKG/usr/share/games/$PRGNAM
cd -
mkdir -p $PKG/usr/share/applications
-cp $CWD/mapster32.desktop $CWD/$PRGNAM.desktop $PKG/usr/share/applications
+for i in $CWD/desktop/*.desktop; do
+ cat $i > $PKG/usr/share/applications/$( basename $i )
+done
mkdir -p $PKG/usr/share/pixmaps
-cp $CWD/$PRGNAM.png $PKG/usr/share/pixmaps
+for subdir in $CWD/icons/*; do
+ name=$( basename $subdir )
+ for i in $subdir/*.png; do
+ px=$( basename $i | cut -d. -f1 )
+ size=${px}x${px}
+ dir=$PKG/usr/share/icons/hicolor/$size/apps
+ mkdir -p $dir
+ cat $i > $dir/$name.png
+ done
+ ln -s ../icons/hicolor/48x48/apps/$name.png $PKG/usr/share/pixmaps/$name.png
+done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp build/doc/* $PKG/usr/doc/$PRGNAM-$VERSION
-cp build/buildlic.txt source/gpl-2.0.txt $CWD/README_game_data.txt \
+cp source/build/doc/* $PKG/usr/doc/$PRGNAM-$VERSION
+cp source/build/buildlic.txt source/duke3d/gpl-2.0.txt $CWD/README_game_data.txt \
$PKG/usr/doc/$PRGNAM-$VERSION
cp -r package/sdk/samples $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
@@ -163,9 +204,7 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
ln -s ../../../doc/$PRGNAM-$VERSION/README_game_data.txt . )
mkdir -p $PKG/install
-sed -e "s,@SDL_TARGET@,$SDL_TARGET," \
- -e "s,@ANDVPX@,$ANDVPX," \
- $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
diff --git a/games/eduke32/eduke32.info b/games/eduke32/eduke32.info
index 6c633a7ef515a..8c2eacf117d2d 100644
--- a/games/eduke32/eduke32.info
+++ b/games/eduke32/eduke32.info
@@ -1,8 +1,8 @@
PRGNAM="eduke32"
-VERSION="20170123_6052"
-HOMEPAGE="http://www.eduke32.com/"
-DOWNLOAD="http://dukeworld.duke4.net/eduke32/synthesis/20170123-6052/eduke32_src_20170123-6052.tar.xz"
-MD5SUM="b3109ceca104bb4550ebeb58fc5b38f6"
+VERSION="20211102_9751_8970754aa"
+HOMEPAGE="https://www.eduke32.com/"
+DOWNLOAD="https://dukeworld.duke4.net/eduke32/synthesis/20211102-9751-8970754aa/eduke32_src_20211102-9751-8970754aa.tar.xz"
+MD5SUM="2a3aa3e991a411a3018068a6b97043a3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/games/eduke32/eduke32.png b/games/eduke32/eduke32.png
deleted file mode 100644
index 58d4f7cf18884..0000000000000
--- a/games/eduke32/eduke32.png
+++ /dev/null
Binary files differ
diff --git a/games/eduke32/eduke32.wrapper b/games/eduke32/eduke32.wrapper
deleted file mode 100644
index 7509c7f09dfa3..0000000000000
--- a/games/eduke32/eduke32.wrapper
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-# Wrapper script for eduke32 and mapster32.
-# Ensure ~/.eduke32 exists, populate with a symlink forest.
-# Need this because the game normally expects to run from its own dir.
-# This version supports game mods. Currently only tested with bloodcm.
-
-SHAREDIR=/usr/share/games/eduke32
-BINDIR=/usr/libexec/eduke32
-USERDIR=$HOME/.eduke32
-
-PROG="$( basename $0 )"
-mkdir -p $USERDIR
-
-if ! cd $USERDIR; then
- echo 2>&1 "$PROG: Can't create $USERDIR directory"
- exit 1
-fi
-
-# These files need to be present, but not writable, symlinks
-# to /usr/share are OK.
-for i in m32help.hlp SEHELP.HLP STHELP.HLP names.h tiles.cfg; do
- if [ -e $SHAREDIR/$i -a ! -e $i ]; then
- ln -s $SHAREDIR/$i $i
- fi
-done
-
-# For directories, it's more complex.
-
-# We don't know in advance what directories might be present, since
-# packages can install game mods (e.g. bloodcm). So link them all.
-# Unfortunately it can't be a simple symlink, because the *.cfg files
-# inside mod directories need to really exist in $USERDIR, writable by
-# the user, so he can save his settings.
-
-# The autoload subdir isn't a mod, but it's treated the same way so
-# individual users can have different autoload stuff. If you install
-# eduke32_hires_pack, this means users can disable it by removing their
-# symlink in ~/.eduke32/autoload (without disturbing anything else they
-# might have in autoload).
-
-# I wish there were a simpler way to do this. The only other solution
-# would be to patch the eduke32 source, to make it save .cfg files in a
-# different location than the game data dirs... but I'd rather handle it
-# with a wrapper script because it's easier to debug.
-
-# So, here's how we handle the directories:
-for i in $SHAREDIR/*/; do
- dir=$( basename $i )
- if [ ! -e $dir ]; then
- mkdir $dir
- ln -s $SHAREDIR/$dir/* $dir
- rm -f $dir/*.cfg
- cp $SHAREDIR/$dir/*.cfg $dir
- fi
-done
-
-# If this is left over in $USERDIR, it's from a previous version of this
-# script, and it doesn't belong there. samples/ isn't a mod, it's actually
-# documentation, and is now installed in /usr/doc/eduke32-$VERSION.
-rm -f samples
-
-exec $BINDIR/$PROG "$@"
diff --git a/games/eduke32/icons/eduke32/128.png b/games/eduke32/icons/eduke32/128.png
new file mode 100644
index 0000000000000..6284bc15ba467
--- /dev/null
+++ b/games/eduke32/icons/eduke32/128.png
Binary files differ
diff --git a/games/eduke32/icons/eduke32/16.png b/games/eduke32/icons/eduke32/16.png
new file mode 100644
index 0000000000000..f5de16215d5ce
--- /dev/null
+++ b/games/eduke32/icons/eduke32/16.png
Binary files differ
diff --git a/games/eduke32/icons/eduke32/24.png b/games/eduke32/icons/eduke32/24.png
new file mode 100644
index 0000000000000..7efbca88f90cd
--- /dev/null
+++ b/games/eduke32/icons/eduke32/24.png
Binary files differ
diff --git a/games/eduke32/icons/eduke32/256.png b/games/eduke32/icons/eduke32/256.png
new file mode 100644
index 0000000000000..f7585c4e626c5
--- /dev/null
+++ b/games/eduke32/icons/eduke32/256.png
Binary files differ
diff --git a/games/eduke32/icons/eduke32/32.png b/games/eduke32/icons/eduke32/32.png
new file mode 100644
index 0000000000000..cf72dec8e9190
--- /dev/null
+++ b/games/eduke32/icons/eduke32/32.png
Binary files differ
diff --git a/games/eduke32/icons/eduke32/48.png b/games/eduke32/icons/eduke32/48.png
new file mode 100644
index 0000000000000..260006b871110
--- /dev/null
+++ b/games/eduke32/icons/eduke32/48.png
Binary files differ
diff --git a/games/eduke32/icons/eduke32/64.png b/games/eduke32/icons/eduke32/64.png
new file mode 100644
index 0000000000000..800a0d993d751
--- /dev/null
+++ b/games/eduke32/icons/eduke32/64.png
Binary files differ
diff --git a/games/eduke32/icons/fury/16.png b/games/eduke32/icons/fury/16.png
new file mode 100644
index 0000000000000..542f54b9ec0c9
--- /dev/null
+++ b/games/eduke32/icons/fury/16.png
Binary files differ
diff --git a/games/eduke32/icons/fury/24.png b/games/eduke32/icons/fury/24.png
new file mode 100644
index 0000000000000..8a626445e5ff5
--- /dev/null
+++ b/games/eduke32/icons/fury/24.png
Binary files differ
diff --git a/games/eduke32/icons/fury/32.png b/games/eduke32/icons/fury/32.png
new file mode 100644
index 0000000000000..cf8eeac8269e2
--- /dev/null
+++ b/games/eduke32/icons/fury/32.png
Binary files differ
diff --git a/games/eduke32/icons/fury/48.png b/games/eduke32/icons/fury/48.png
new file mode 100644
index 0000000000000..15a6f3a3d678a
--- /dev/null
+++ b/games/eduke32/icons/fury/48.png
Binary files differ
diff --git a/games/eduke32/icons/fury/64.png b/games/eduke32/icons/fury/64.png
new file mode 100644
index 0000000000000..9a94c4845c744
--- /dev/null
+++ b/games/eduke32/icons/fury/64.png
Binary files differ
diff --git a/games/eduke32/icons/voidsw/128.png b/games/eduke32/icons/voidsw/128.png
new file mode 100644
index 0000000000000..77cdf70f68bbf
--- /dev/null
+++ b/games/eduke32/icons/voidsw/128.png
Binary files differ
diff --git a/games/eduke32/icons/voidsw/16.png b/games/eduke32/icons/voidsw/16.png
new file mode 100644
index 0000000000000..ebbd8f0872a15
--- /dev/null
+++ b/games/eduke32/icons/voidsw/16.png
Binary files differ
diff --git a/games/eduke32/icons/voidsw/256.png b/games/eduke32/icons/voidsw/256.png
new file mode 100644
index 0000000000000..8ae928472a496
--- /dev/null
+++ b/games/eduke32/icons/voidsw/256.png
Binary files differ
diff --git a/games/eduke32/icons/voidsw/32.png b/games/eduke32/icons/voidsw/32.png
new file mode 100644
index 0000000000000..f4534322aa83e
--- /dev/null
+++ b/games/eduke32/icons/voidsw/32.png
Binary files differ
diff --git a/games/eduke32/icons/voidsw/48.png b/games/eduke32/icons/voidsw/48.png
new file mode 100644
index 0000000000000..8f6aca3acf975
--- /dev/null
+++ b/games/eduke32/icons/voidsw/48.png
Binary files differ
diff --git a/games/eduke32/icons/voidsw/64.png b/games/eduke32/icons/voidsw/64.png
new file mode 100644
index 0000000000000..a62c2f3c8aeb6
--- /dev/null
+++ b/games/eduke32/icons/voidsw/64.png
Binary files differ
diff --git a/games/eduke32/slack-desc b/games/eduke32/slack-desc
index 9d6373e6a7ff7..458febc6913ea 100644
--- a/games/eduke32/slack-desc
+++ b/games/eduke32/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-eduke32: eduke32 (enhanced "Duke Nukem 3D" engine)
+eduke32: eduke32 (engine for Duke Nukem 3D, Shadow Warrior, Ion Fury)
eduke32:
eduke32: EDuke32 is a fork of the JFDuke3D port of Duke Nukem 3D (aka Duke3D),
eduke32: merging it with EDuke to provide many new features for mod authors.
-eduke32: Also included is a map editor (mapster32).
eduke32:
-eduke32: To play the game, you will need the DUKE3D.GRP file from either the
-eduke32: Duke Nukem 3D CD-ROM, or from the shareware version of Duke Nukem 3D.
-eduke32:
-eduke32: This package built with SDL @SDL_TARGET@@ANDVPX@.
+eduke32: Included in the package are eduke32 (Duke Nukem 3D engine; also plays
+eduke32: Nam/Napalm and WWII GI), voidsw (Shadow Warrior engine), fury (Ion
+eduke32: Fury engine), mapster32 (map editor for Duke Nukem 3D), wangulator
+eduke32: (map editor for Shadow Warrior), plus the Build engine tools such
+eduke32: as kextract, kgroup, etc.
eduke32:
diff --git a/games/eduke32/system_autoload.diff b/games/eduke32/system_autoload.diff
new file mode 100644
index 0000000000000..a480d87a19cfd
--- /dev/null
+++ b/games/eduke32/system_autoload.diff
@@ -0,0 +1,11 @@
+diff -Naur eduke32_20211102-9751-8970754aa/source/duke3d/src/common.cpp eduke32_20211102-9751-8970754aa.patched/source/duke3d/src/common.cpp
+--- eduke32_20211102-9751-8970754aa/source/duke3d/src/common.cpp 2021-11-03 00:31:19.000000000 -0400
++++ eduke32_20211102-9751-8970754aa.patched/source/duke3d/src/common.cpp 2021-11-09 12:06:08.273092333 -0500
+@@ -449,6 +449,7 @@
+
+ if (autoload)
+ {
++ G_LoadGroupsInDir("/usr/share/games/eduke32/autoload");
+ G_LoadGroupsInDir("autoload");
+
+ if (i != -1)
diff --git a/games/eduke32/tools.diff b/games/eduke32/tools.diff
new file mode 100644
index 0000000000000..22807c3dc435d
--- /dev/null
+++ b/games/eduke32/tools.diff
@@ -0,0 +1,18 @@
+diff -Naur eduke32_20211102-9751-8970754aa/GNUmakefile eduke32_20211102-9751-8970754aa.patched/GNUmakefile
+--- eduke32_20211102-9751-8970754aa/GNUmakefile 2021-11-03 00:31:19.000000000 -0400
++++ eduke32_20211102-9751-8970754aa.patched/GNUmakefile 2021-11-07 15:41:44.198560499 -0500
+@@ -439,13 +439,12 @@
+
+ tools_cflags := $(engine_cflags)
+
+-tools_deps := engine_tools
++tools_deps := engine_tools mimalloc
+
+ tools_targets := \
+ arttool \
+ bsuite \
+ cacheinfo \
+- generateicon \
+ givedepth \
+ ivfrate \
+ kextract \
diff --git a/games/eduke32/twin_dragon.diff b/games/eduke32/twin_dragon.diff
new file mode 100644
index 0000000000000..9a6be0324c750
--- /dev/null
+++ b/games/eduke32/twin_dragon.diff
@@ -0,0 +1,12 @@
+diff -Naur eduke32_20211102-9751-8970754aa/source/sw/src/grpscan.cpp eduke32_20211102-9751-8970754aa.patched/source/sw/src/grpscan.cpp
+--- eduke32_20211102-9751-8970754aa/source/sw/src/grpscan.cpp 2021-11-03 00:31:20.000000000 -0400
++++ eduke32_20211102-9751-8970754aa.patched/source/sw/src/grpscan.cpp 2021-11-07 15:00:27.613722670 -0500
+@@ -50,7 +50,7 @@
+ { "Shadow Warrior Shareware 1.1", 0xF21A6B35u, 25833456, GAMEFLAG_SHAREWARE, 0, 0, nullptr },
+ { "Shadow Warrior Shareware 1.2", 0x08A7FA1Fu, 26056769, GAMEFLAG_SHAREWARE, 0, 0, nullptr },
+ { "Shadow Warrior Mac Demo", 0x4227F535u, 26056769, GAMEFLAG_SHAREWARE, 0, 0, nullptr },
+- { "Wanton Destruction", SWWD_CRC, 48698128, GAMEFLAG_SWWD, GRP_HAS_DEPENDENCY, SWREG12_CRC, nullptr },
++ { "Wanton Destruction", SWWD_CRC, 48698128, GAMEFLAG_SWWD, 0, 0, nullptr },
+ { "Twin Dragon", SWTD_CRC, 12499012, GAMEFLAG_SWTD, GRP_HAS_DEPENDENCY, SWREG12_CRC, process_tdragongrp },
+ { "Twin Dragon", 0xACC8DCDEu, 6235578, GAMEFLAG_SWTD, GRP_HAS_DEPENDENCY, SWREG12_CRC, nullptr },
+ { "Twin Dragon", 0xB5B71277u, 6236287, GAMEFLAG_SWTD, GRP_HAS_DEPENDENCY, SWREG12_CRC, nullptr }, // commonly available repack