summaryrefslogtreecommitdiffstats
path: root/games/rigel-engine
diff options
context:
space:
mode:
Diffstat (limited to 'games/rigel-engine')
-rw-r--r--games/rigel-engine/README16
-rw-r--r--games/rigel-engine/RigelEngine.6117
-rw-r--r--games/rigel-engine/RigelEngine.rst102
-rw-r--r--games/rigel-engine/doinst.sh9
-rw-r--r--games/rigel-engine/git2tarxz.sh48
-rw-r--r--games/rigel-engine/rigel-engine.SlackBuild110
-rw-r--r--games/rigel-engine/rigel-engine.info10
-rw-r--r--games/rigel-engine/slack-desc19
8 files changed, 431 insertions, 0 deletions
diff --git a/games/rigel-engine/README b/games/rigel-engine/README
new file mode 100644
index 0000000000..a2dda6d1fb
--- /dev/null
+++ b/games/rigel-engine/README
@@ -0,0 +1,16 @@
+rigel-engine (Duke Nukem II reimplementation)
+
+RigelEngine is a reimplementation of the game Duke Nukem II,
+originally released by Apogee Software in 1993 for MS-DOS. RigelEngine
+works as a drop-in replacement for the original executable: It reads
+the game's data files and plays just like the original, but runs
+natively on modern operating systems and is written in modern C++
+code.
+
+If you're looking for the shareware data files, they're available here:
+https://archive.org/download/msdos_DUKE2_shareware/DUKE2.zip
+
+Compared to running the original in an emulator, RigelEngine offers
+many modern enhancements and usability improvements.
+
+The executable and man page are called "RigelEngine".
diff --git a/games/rigel-engine/RigelEngine.6 b/games/rigel-engine/RigelEngine.6
new file mode 100644
index 0000000000..69aa805c1c
--- /dev/null
+++ b/games/rigel-engine/RigelEngine.6
@@ -0,0 +1,117 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "RIGELENGINE" 6 "2023-01-23" "0.9.1" "SlackBuilds.org"
+.SH NAME
+RigelEngine \- reimplementation of Duke Nukem II
+.\" RST source for RigelEngine(1) man page. Convert with:
+.
+.\" rst2man.py RigelEngine.rst > RigelEngine.6
+.
+.SH SYNOPSIS
+.sp
+RigelEngine [\fB\-s\fP | \fB\-\-skip\-intro\fP] [\fB\-d\fP | \fB\-\-debug\-mode\fP] [\fB\-\-no\-audio\fP] [\fB\-\-play\-demo\fP] [\fB\-l\fP | \fB\-\-play\-level\fP \fIlevel\-name\fP] [\fB\-\-difficulty\fP \fIeasy|medium|hard\fP] [\fB\-\-player\-pos\fP \fIx,y\fP] [\fIgame\-path\fP]
+.SH DESCRIPTION
+.sp
+\fBRigelEngine\fP is a modern reimplementation of the game Duke Nukem II,
+originally released in 1993 for MS\-DOS by Apogee Software.
+.sp
+In order to run RigelEngine, the game data from the original game is
+required. Both the shareware version and the registered version work.
+When launching RigelEngine for the first time, it will show a file
+browser UI and ask you to select the location of your Duke Nukem
+II installation. The chosen path will be stored in the game\(aqs user
+profile, so that you don\(aqt have to select it again next time.
+.sp
+It\(aqs also possible to pass the path to the game files as argument on
+the command line.
+.sp
+The only files actually used by RigelEngine are \fBNUKEM2.CMP\fP (the main
+data tile; required) and \fBNUKEM2.F1\fP through \fBNUKEM2.F5\fP (intro movie
+files; actually optional).
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \-?, \-h, \-\-help
+Show built\-in help and exit.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-s\fP,\fB \-\-skip\-intro
+Skip intro movies/Apogee logo, go straight to main menu.
+.TP
+.B \-d\fP,\fB \-\-debug\-mode
+Enable debugging features.
+.TP
+.B \-\-no\-audio
+Disable all audio output.
+.TP
+.B \-\-play\-demo
+Play pre\-recorded demo.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fB\-l\fP, \fB\-\-play\-level\fP \fIlevel\-name\fP
+Directly jump to given map, skipping intro/menu etc.
+.TP
+.B \fB\-\-difficulty\fP \fIeasy|medium|hard\fP
+Difficulty to use when jumping to a level.
+.TP
+.B \fB\-\-player\-pos\fP \fIx,y\fP
+Position to place the player at when jumping to a level.
+.TP
+.B \fIgame\-path\fP
+Path to original game\(aqs installation. If not provided here, the game will show a folder browser UI.
+.UNINDENT
+.SH FILES
+.sp
+\fB$XDG_DATA_HOME/lethal\-guitar/Rigel Engine/\fP
+.INDENT 0.0
+.INDENT 3.5
+Per\-user configuration, savegames, and log file are stored here.
+.UNINDENT
+.UNINDENT
+.sp
+The default value of \fB$XDG_DATA_HOME\fP is the same as \fB$HOME\fP\&.
+.SH COPYRIGHT
+.sp
+See the file /usr/doc/rigel\-engine\-0.9.1/LICENSE.md for license information.
+.SH AUTHORS
+.sp
+RigelEngine was written by lethal\-guitar.
+.sp
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+.SH SEE ALSO
+.sp
+/usr/doc/rigel\-engine\-0.9.1/README.md
+.sp
+\fI\%https://github.com/lethal\-guitar/RigelEngine/wiki\fP
+.\" Generated by docutils manpage writer.
+.
diff --git a/games/rigel-engine/RigelEngine.rst b/games/rigel-engine/RigelEngine.rst
new file mode 100644
index 0000000000..3b6f2c48b4
--- /dev/null
+++ b/games/rigel-engine/RigelEngine.rst
@@ -0,0 +1,102 @@
+.. RST source for RigelEngine(1) man page. Convert with:
+.. rst2man.py RigelEngine.rst > RigelEngine.6
+
+.. |version| replace:: 0.9.1
+.. |date| date::
+
+===========
+RigelEngine
+===========
+
+---------------------------------
+reimplementation of Duke Nukem II
+---------------------------------
+
+:Manual section: 6
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+RigelEngine [**-s** | **--skip-intro**] [**-d** | **--debug-mode**] [**--no-audio**] [**--play-demo**] [**-l** | **--play-level** *level-name*] [**--difficulty** *easy|medium|hard*] [**--player-pos** *x,y*] [*game-path*]
+
+DESCRIPTION
+===========
+
+**RigelEngine** is a modern reimplementation of the game Duke Nukem II,
+originally released in 1993 for MS-DOS by Apogee Software.
+
+In order to run RigelEngine, the game data from the original game is
+required. Both the shareware version and the registered version work.
+When launching RigelEngine for the first time, it will show a file
+browser UI and ask you to select the location of your Duke Nukem
+II installation. The chosen path will be stored in the game's user
+profile, so that you don't have to select it again next time.
+
+It's also possible to pass the path to the game files as argument on
+the command line.
+
+The only files actually used by RigelEngine are **NUKEM2.CMP** (the main
+data tile; required) and **NUKEM2.F1** through **NUKEM2.F5** (intro movie
+files; actually optional).
+
+OPTIONS
+=======
+
+-?, -h, --help
+ Show built-in help and exit.
+
+-s, --skip-intro
+ Skip intro movies/Apogee logo, go straight to main menu.
+
+-d, --debug-mode
+ Enable debugging features.
+
+--no-audio
+ Disable all audio output.
+
+--play-demo
+ Play pre-recorded demo.
+
+**-l**, **--play-level** *level-name*
+ Directly jump to given map, skipping intro/menu etc.
+
+**--difficulty** *easy|medium|hard*
+ Difficulty to use when jumping to a level.
+
+**--player-pos** *x,y*
+ Position to place the player at when jumping to a level.
+
+*game-path*
+ Path to original game's installation. If not provided here, the game will show a folder browser UI.
+
+FILES
+=====
+
+**$XDG_DATA_HOME/lethal-guitar/Rigel Engine/**
+
+ Per-user configuration, savegames, and log file are stored here.
+
+The default value of **$XDG_DATA_HOME** is the same as **$HOME**.
+
+COPYRIGHT
+=========
+
+See the file /usr/doc/rigel-engine-|version|/LICENSE.md for license information.
+
+AUTHORS
+=======
+
+RigelEngine was written by lethal-guitar.
+
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+
+SEE ALSO
+========
+
+/usr/doc/rigel-engine-|version|/README.md
+
+https://github.com/lethal-guitar/RigelEngine/wiki
diff --git a/games/rigel-engine/doinst.sh b/games/rigel-engine/doinst.sh
new file mode 100644
index 0000000000..65c7e2eeb9
--- /dev/null
+++ b/games/rigel-engine/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+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 -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/games/rigel-engine/git2tarxz.sh b/games/rigel-engine/git2tarxz.sh
new file mode 100644
index 0000000000..439f4cd50a
--- /dev/null
+++ b/games/rigel-engine/git2tarxz.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# Create source tarball from rigel-engine git repo, including
+# submodules. The auto-generated source tarballs from github don't
+# have the submodules, which is the only reason this exists...
+
+# Note that this script doesn't need to be run as root. It does need to
+# be able to write to the current directory it's run from.
+
+# Takes one optional argument, which is the commit or tag to create a
+# tarball of. With no arg, HEAD is used.
+
+PRGNAM=rigel-engine
+CLONE_URL=https://github.com/lethal-guitar/RigelEngine/
+
+set -e
+
+GITDIR=$( mktemp -dt $PRGNAM.git.XXXXXX )
+rm -rf $GITDIR
+git clone $CLONE_URL $GITDIR
+
+CWD="$( pwd )"
+cd $GITDIR
+
+if [ "$1" != "" ]; then
+ git reset --hard "$1" || exit 1
+fi
+
+git submodule update --init --recursive
+
+GIT_SHA=$( git rev-parse --short HEAD )
+
+DATE=$( git log --date=format:%Y%m%d --format=%cd | head -1 )
+
+VERTAG=$( git tag -l | tail -1 )
+
+VERSION=${VERTAG}+${DATE}_${GIT_SHA}
+
+find . -name .git\* -print0 | xargs -0 rm -rf
+
+cd "$CWD"
+rm -rf $PRGNAM-$VERSION $PRGNAM-$VERSION.tar.xz
+mv $GITDIR $PRGNAM-$VERSION
+tar cvfJ $PRGNAM-$VERSION.tar.xz $PRGNAM-$VERSION
+
+echo
+echo "Created tarball: $PRGNAM-$VERSION.tar.xz"
+echo "VERSION=$VERSION"
diff --git a/games/rigel-engine/rigel-engine.SlackBuild b/games/rigel-engine/rigel-engine.SlackBuild
new file mode 100644
index 0000000000..2acdcb2e09
--- /dev/null
+++ b/games/rigel-engine/rigel-engine.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+# Slackware build script for rigel-engine
+
+# Written by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# If you're wondering why I host my own source tarball instead of
+# using the github one, it's because the github tarball is missing the
+# submodules.
+
+# If you're wondering why the package is called rigel-engine and not
+# RigelEngine, it's because I dislike MixedCase package names. Not
+# going to change it.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=rigel-engine
+SRCNAM=RigelEngine
+VERSION=${VERSION:-0.9.1}
+GITVER="v0.9.1+20221210_84ae53f0" # result of "sh git2tarxz.sh v0.9.1"
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+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"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$GITVER
+tar xvf $CWD/$PRGNAM-$GITVER.tar.xz
+cd $PRGNAM-$GITVER
+chown -R root:root .
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+# Use full path in .desktop file.
+sed -i '/^Exec=/s,=,=/usr/games/,' dist/linux/*.desktop
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_BINDIR=/usr/games \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+# A couple of extra icon sizes exist, include them.
+for px in 16 32; do
+ size=${px}x${px}
+ dir=$PKG/usr/share/icons/hicolor/$size/apps
+ mkdir -p $dir
+ install -m0644 dist/icon_original/$px.png $dir
+done
+
+# man page written for this SlackBuild, made from README.md and --help.
+PKGMAN6=$PKG/usr/man/man6
+mkdir -p $PKGMAN6
+gzip -9c < $CWD/$SRCNAM.6 > $PKGMAN6/$SRCNAM.6.gz
+# symlink to the package name, too:
+ln -s $SRCNAM.6.gz $PKGMAN6/$PRGNAM.6.gz
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a AUTHORS* CONTRIB* LICENSE* README* $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/games/rigel-engine/rigel-engine.info b/games/rigel-engine/rigel-engine.info
new file mode 100644
index 0000000000..feafdbbe7e
--- /dev/null
+++ b/games/rigel-engine/rigel-engine.info
@@ -0,0 +1,10 @@
+PRGNAM="rigel-engine"
+VERSION="0.9.1"
+HOMEPAGE="https://github.com/lethal-guitar/RigelEngine/"
+DOWNLOAD="https://slackware.uk/~urchlay/src/rigel-engine-v0.9.1+20221210_84ae53f0.tar.xz"
+MD5SUM="e76c8abe342f59300e54a88c8788ea05"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/games/rigel-engine/slack-desc b/games/rigel-engine/slack-desc
new file mode 100644
index 0000000000..2952d0b1c0
--- /dev/null
+++ b/games/rigel-engine/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+rigel-engine: rigel-engine (Duke Nukem II reimplementation)
+rigel-engine:
+rigel-engine: RigelEngine is a reimplementation of the game Duke Nukem II,
+rigel-engine: originally released by Apogee Software in 1993 for MS-DOS. RigelEngine
+rigel-engine: works as a drop-in replacement for the original executable: It reads
+rigel-engine: the game's data files and plays just like the original, but runs
+rigel-engine: natively on modern operating systems and is written in modern C++
+rigel-engine: code.
+rigel-engine:
+rigel-engine:
+rigel-engine: