games/jfsw: Added (Shadow Warrior first-person shooter)
This commit is contained in:
parent
8484ee946c
commit
d5752ff22c
|
@ -0,0 +1,36 @@
|
|||
jfsw (source port of Shadow Warrior first-person shooter game)
|
||||
|
||||
The aim of this port is to present Shadow Warrior as closely as possible
|
||||
to the original game while adding optional features to expand the
|
||||
possibilities of the game.
|
||||
|
||||
To play the game, you will need the sw.grp data file from either the
|
||||
full or shareware DOS version of Shadow Warrior. If you want to play the
|
||||
shareware version, you can install jfsw_demo_data from slackbuilds.org.
|
||||
For the full version, copy sw.grp from the game directory to
|
||||
/usr/share/games/jfsw/sw.grp (the filename must be lowercase).
|
||||
|
||||
If you have sw.grp from the full version of the game, you may also want
|
||||
to install jfsw_hires_pack for some graphic enhancements (don't bother
|
||||
trying, if all you have is the shareware sw.grp: it segfaults on startup).
|
||||
|
||||
Mote #1: To hear the in-game music, install either eawpats (recommended)
|
||||
or freepats (both available at slackbuilds.org)
|
||||
|
||||
Note #2: There's no way to enable the mouse from the in-game menus. To
|
||||
enable the mouse, you must run the game at least once to create its
|
||||
config file (~/.jfsw/sw.cfg), then edit the config file and change
|
||||
ControllerType to 1. You probably also want to change MouseAimingOn to 1,
|
||||
for a more modern "mouselook" style of play.
|
||||
|
||||
Note #3: The Ambience setting in the Sound Setup menu is permanently
|
||||
disabled, because the ambience code causes the game to crash.
|
||||
|
||||
Note #4: Multiplayer does work (at least for LAN play). See
|
||||
/usr/doc/jsfw-$VERSION/releasenotes.html for multiplayer usage.
|
||||
|
||||
Note #5 (for Slackware 64-bit users): The source includes x86 assembly
|
||||
code, so can't be built for any non-x86 architecture. If you're using
|
||||
x86_64, you might (or might not) be able to build jfsw on a 32-bit
|
||||
Slackware system and install it on x86_64 along with alienBOB's or fred's
|
||||
-compat32 packages and get it to run.
|
|
@ -0,0 +1,4 @@
|
|||
if [ -x /usr/bin/update-desktop-database ]; then
|
||||
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
|
||||
fi
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Slackware build script for jfsw
|
||||
|
||||
# Written by B. Watson (yalhcru@gmail.com)
|
||||
|
||||
PRGNAM=jfsw
|
||||
VERSION=${VERSION:-20051009}
|
||||
ARCH=${ARCH:-i486}
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-_SBo}
|
||||
|
||||
CWD=$(pwd)
|
||||
TMP=${TMP:-/tmp/SBo}
|
||||
PKG=$TMP/package-$PRGNAM
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
# SLKCFLAGS is only used if FORCE_SLACK_CFLAGS=yes in the environment.
|
||||
# This is because the code has portability problems that might cause
|
||||
# trouble if built with CFLAGS other than the default ones in the Makefile.
|
||||
|
||||
if [ "$ARCH" = "i486" ]; then
|
||||
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
|
||||
elif [ "$ARCH" = "i686" ]; then
|
||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||
else
|
||||
echo "Sorry, this package can't be built on $ARCH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
BUILD_PRGNAM=jfbuild
|
||||
BIN_NAME=sw
|
||||
|
||||
rm -rf $PKG
|
||||
mkdir -p $TMP $PKG $OUTPUT
|
||||
cd $TMP
|
||||
rm -rf ${PRGNAM}_src_${VERSION} ${BUILD_PRGNAM}_src_${VERSION} build
|
||||
unzip $CWD/${PRGNAM}_src_${VERSION}.zip
|
||||
unzip $CWD/${BUILD_PRGNAM}_src_${VERSION}.zip
|
||||
mv ${BUILD_PRGNAM}_src_${VERSION} build
|
||||
|
||||
cd build
|
||||
# build engine compile fixes, from gentoo
|
||||
patch -p1 < $CWD/patches/jfbuild_src_20051009.patch
|
||||
cd -
|
||||
|
||||
cd ${PRGNAM}_src_${VERSION}
|
||||
# compile fixes, from gentoo
|
||||
patch -p1 < $CWD/patches/jfsw_src_20051009.patch
|
||||
# permanently disable ambient sound option, since it doesn't work and
|
||||
# causes the game to lock up
|
||||
patch -p1 < $CWD/patches/disable_ambience.patch
|
||||
|
||||
chown -R root:root .
|
||||
find . \
|
||||
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
|
||||
-exec chmod 755 {} \; -o \
|
||||
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
|
||||
-exec chmod 644 {} \;
|
||||
|
||||
# I hate hard-coded assumptions that I have the same CPU you have...
|
||||
sed -i 's/-march=pentium//' Makefile ../build/Makefile
|
||||
|
||||
if [ "${FORCE_SLACK_CFLAGS:-no}" = "yes" ]; then
|
||||
sed -i '/^\s\+debug=/s/=.*/='"$SLKCFLAGS"'/' Makefile ../build/Makefile
|
||||
fi
|
||||
|
||||
make RELEASE=1
|
||||
|
||||
# no 'make install' target
|
||||
mkdir -p $PKG/usr/games
|
||||
install -s -m0755 -oroot -groot $BIN_NAME $PKG/usr/games
|
||||
cd $PKG/usr/games
|
||||
ln -s $BIN_NAME $PRGNAM
|
||||
cd -
|
||||
|
||||
# Data directory included in package, even though we don't include data file.
|
||||
# Why? Because the user might be grabbing sw.grp from a retail CD-ROM, and
|
||||
# if this dir doesn't exist, he might get confused...
|
||||
mkdir -p $PKG/usr/share/games/$PRGNAM
|
||||
|
||||
# Icon taken from the highres pack, highres/screen/menu/2870.png
|
||||
mkdir -p $PKG/usr/share/pixmaps
|
||||
cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png
|
||||
|
||||
mkdir -p $PKG/usr/share/applications
|
||||
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
|
||||
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cp -a \
|
||||
GNU.TXT readme.txt releasenotes.html \
|
||||
$PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||
cat $CWD/README > $PKG/usr/doc/$PRGNAM-$VERSION/README_SBo.txt
|
||||
|
||||
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:-tgz}
|
|
@ -0,0 +1,7 @@
|
|||
[Desktop Entry]
|
||||
Name=JFShadowWarrior
|
||||
Icon=jfsw
|
||||
Exec=/usr/games/sw
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Game;ActionGame;
|
|
@ -0,0 +1,10 @@
|
|||
PRGNAM="jfsw"
|
||||
VERSION="20051009"
|
||||
HOMEPAGE="http://www.jonof.id.au/jfsw"
|
||||
DOWNLOAD="http://static.jonof.id.au/dl/buildport/jfsw_src_20051009.zip http://static.jonof.id.au/dl/buildport/jfbuild_src_20051009.zip"
|
||||
DOWNLOAD_x86_64="UNSUPPORTED"
|
||||
MD5SUM="6b175daed0e459aac375e63de90097f0 44a943c0050bfd46ce1e6af24c951898"
|
||||
MD5SUM_x86_64=""
|
||||
MAINTAINER="B. Watson"
|
||||
EMAIL="yalhcru@gmail.com"
|
||||
APPROVED="dsomero"
|
Binary file not shown.
After Width: | Height: | Size: 6.7 KiB |
|
@ -0,0 +1,61 @@
|
|||
diff -Naur jfsw_src_20051009.orig/source/game.c jfsw_src_20051009/source/game.c
|
||||
--- jfsw_src_20051009.orig/source/game.c 2005-10-09 15:28:24.000000000 -0400
|
||||
+++ jfsw_src_20051009/source/game.c 2010-02-09 00:08:14.000000000 -0500
|
||||
@@ -197,7 +197,7 @@
|
||||
TRUE, // fx on
|
||||
TRUE, // Music on
|
||||
TRUE, // talking
|
||||
-TRUE, // ambient
|
||||
+FALSE, // ambient
|
||||
FALSE, // Flip Stereo
|
||||
|
||||
// Network game settings
|
||||
diff -Naur jfsw_src_20051009.orig/source/menus.c jfsw_src_20051009/source/menus.c
|
||||
--- jfsw_src_20051009.orig/source/menus.c 2005-10-09 15:28:24.000000000 -0400
|
||||
+++ jfsw_src_20051009/source/menus.c 2010-02-09 00:26:35.000000000 -0500
|
||||
@@ -196,7 +196,7 @@
|
||||
{DefInert(0, NULL), OPT_XSIDE, OPT_LINE(3), 0, m_defshade, 0, NULL, NULL, NULL},
|
||||
|
||||
//{DefButton(btn_talking, 0, "Talking"), OPT_XS, OPT_LINE(4), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL},
|
||||
- {DefButton(btn_ambience, 0, "Ambience"), OPT_XS, OPT_LINE(4), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL},
|
||||
+ {DefButton(btn_ambience, 0, "Ambience"), OPT_XS, OPT_LINE(4), 1, m_defshade, 0, NULL, MNU_DisableButton, NULL},
|
||||
{DefButton(btn_flipstereo, 0, "Flip Stereo"), OPT_XS, OPT_LINE(5), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL},
|
||||
//{DefButton(btn_playcd, 0, "Play CD"), OPT_XS, OPT_LINE(6), 1, m_defshade, 0, NULL, NULL, NULL},
|
||||
{DefNone}
|
||||
@@ -2695,6 +2695,13 @@
|
||||
}
|
||||
|
||||
BOOL
|
||||
+MNU_DisableButton(MenuItem *item)
|
||||
+ {
|
||||
+ SET(item->flags, mf_disabled);
|
||||
+ return (TRUE);
|
||||
+ }
|
||||
+
|
||||
+BOOL
|
||||
MNU_FxCheck(MenuItem *item)
|
||||
{
|
||||
if (FXDevice < 0 || !FxInitialized)
|
||||
diff -Naur jfsw_src_20051009.orig/source/menus.h jfsw_src_20051009/source/menus.h
|
||||
--- jfsw_src_20051009.orig/source/menus.h 2005-10-09 15:28:24.000000000 -0400
|
||||
+++ jfsw_src_20051009/source/menus.h 2010-02-09 00:27:29.000000000 -0500
|
||||
@@ -289,6 +289,7 @@
|
||||
|
||||
BOOL MNU_MusicFxCheck(MenuItem_p item);
|
||||
BOOL MNU_MusicCheck(MenuItem_p item);
|
||||
+BOOL MNU_DisableButton(MenuItem_p item);
|
||||
BOOL MNU_FxCheck(MenuItem_p item);
|
||||
BOOL MNU_MouseCheck(MenuItem_p item);
|
||||
BOOL MNU_BorderCheck(MenuItem_p item);
|
||||
diff -Naur jfsw_src_20051009.orig/source/swconfig.c jfsw_src_20051009/source/swconfig.c
|
||||
--- jfsw_src_20051009.orig/source/swconfig.c 2005-10-09 15:28:24.000000000 -0400
|
||||
+++ jfsw_src_20051009/source/swconfig.c 2010-02-09 00:09:21.000000000 -0500
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
dummy = -1;
|
||||
SCRIPT_GetNumber( scripthandle, "Options", "Ambient",&dummy);
|
||||
- if (dummy != -1) gs.Ambient = dummy;
|
||||
+ gs.Ambient = 0;
|
||||
|
||||
dummy = -1;
|
||||
SCRIPT_GetNumber( scripthandle, "Options", "FxOn",&dummy);
|
|
@ -0,0 +1,125 @@
|
|||
diff -Nur jfbuild_src_20051009.orig/include/editor.h jfbuild_src_20051009/include/editor.h
|
||||
--- jfbuild_src_20051009.orig/include/editor.h 2005-10-09 15:23:02.000000000 +0200
|
||||
+++ jfbuild_src_20051009/include/editor.h 2005-10-10 15:06:18.000000000 +0200
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
extern short temppicnum, tempcstat, templotag, temphitag, tempextra;
|
||||
extern char tempshade, temppal, tempxrepeat, tempyrepeat;
|
||||
-extern char somethingintab;
|
||||
+static char somethingintab;
|
||||
|
||||
extern char buildkeys[NUMBUILDKEYS];
|
||||
|
||||
diff -Nur jfbuild_src_20051009.orig/Makefile jfbuild_src_20051009/Makefile
|
||||
--- jfbuild_src_20051009.orig/Makefile 2005-10-09 15:23:00.000000000 +0200
|
||||
+++ jfbuild_src_20051009/Makefile 2005-10-10 15:06:22.000000000 +0200
|
||||
@@ -27,7 +27,7 @@
|
||||
# Debugging options
|
||||
# RELEASE - 1 = no debugging
|
||||
# EFENCE - 1 = compile with Electric Fence for malloc() debugging
|
||||
-RELEASE?=0
|
||||
+RELEASE?=1
|
||||
EFENCE?=0
|
||||
|
||||
# SDK locations - adjust to match your setup
|
||||
diff -Nur jfbuild_src_20051009.orig/src/build.c jfbuild_src_20051009/src/build.c
|
||||
--- jfbuild_src_20051009.orig/src/build.c 2005-10-09 15:23:00.000000000 +0200
|
||||
+++ jfbuild_src_20051009/src/build.c 2005-10-10 15:06:18.000000000 +0200
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
short temppicnum, tempcstat, templotag, temphitag, tempextra;
|
||||
char tempshade, temppal, tempvis, tempxrepeat, tempyrepeat;
|
||||
-char somethingintab = 255;
|
||||
+static char somethingintab = 255;
|
||||
|
||||
static char boardfilename[BMAX_PATH], selectedboardfilename[BMAX_PATH];
|
||||
static struct _directoryitem {
|
||||
diff -Nur jfbuild_src_20051009.orig/src/crc32.c jfbuild_src_20051009/src/crc32.c
|
||||
--- jfbuild_src_20051009.orig/src/crc32.c 2005-10-09 15:23:00.000000000 +0200
|
||||
+++ jfbuild_src_20051009/src/crc32.c 2005-10-10 15:06:18.000000000 +0200
|
||||
@@ -73,16 +73,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
-
|
||||
-unsigned long crc32(unsigned char *blk, unsigned long len)
|
||||
-{
|
||||
- unsigned long crc;
|
||||
-
|
||||
- crc32init(&crc);
|
||||
- crc32block(&crc, blk, len);
|
||||
- return crc32finish(&crc);
|
||||
-}
|
||||
-
|
||||
void crc32init(unsigned long *crcvar)
|
||||
{
|
||||
if (!crcvar) return;
|
||||
diff -Nur jfbuild_src_20051009.orig/src/sdlayer.c jfbuild_src_20051009/src/sdlayer.c
|
||||
--- jfbuild_src_20051009.orig/src/sdlayer.c 2005-10-09 15:23:00.000000000 +0200
|
||||
+++ jfbuild_src_20051009/src/sdlayer.c 2005-10-10 15:06:22.000000000 +0200
|
||||
@@ -24,6 +24,10 @@
|
||||
// undefine to restrict windowed resolutions to conventional sizes
|
||||
#define ANY_WINDOWED_SIZE
|
||||
|
||||
+// fix for mousewheel
|
||||
+#define MWHEELTICKS 10
|
||||
+static unsigned long mwheelup, mwheeldown;
|
||||
+
|
||||
int _buildargc = 1;
|
||||
char **_buildargv = NULL;
|
||||
extern long app_main(long argc, char *argv[]);
|
||||
@@ -486,8 +490,8 @@
|
||||
initprintf("Initialising mouse\n");
|
||||
|
||||
// grab input
|
||||
- grabmouse(1);
|
||||
moustat=1;
|
||||
+ grabmouse(1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1363,14 +1367,22 @@
|
||||
case SDL_BUTTON_LEFT: j = 0; break;
|
||||
case SDL_BUTTON_RIGHT: j = 1; break;
|
||||
case SDL_BUTTON_MIDDLE: j = 2; break;
|
||||
- default: j = -1; break;
|
||||
+ default: j = ev.button.button; break;
|
||||
}
|
||||
if (j<0) break;
|
||||
|
||||
- if (ev.button.state == SDL_PRESSED)
|
||||
+ if (ev.button.state == SDL_PRESSED) {
|
||||
+ if (ev.button.button == SDL_BUTTON_WHEELUP) {
|
||||
+ mwheelup = totalclock;
|
||||
+ }
|
||||
+ if (ev.button.button == SDL_BUTTON_WHEELDOWN) {
|
||||
+ mwheeldown = totalclock;
|
||||
+ }
|
||||
mouseb |= (1<<j);
|
||||
- else
|
||||
- mouseb &= ~(1<<j);
|
||||
+ }
|
||||
+ else {
|
||||
+ if (j < 4) mouseb &= ~(1<<j);
|
||||
+ }
|
||||
|
||||
if (mousepresscallback)
|
||||
mousepresscallback(j+1, ev.button.state == SDL_PRESSED);
|
||||
@@ -1435,6 +1447,17 @@
|
||||
|
||||
sampletimer();
|
||||
|
||||
+ if (moustat) {
|
||||
+ if ((mwheelup) && (mwheelup <= (totalclock - MWHEELTICKS))) {
|
||||
+ mouseb &= ~16;
|
||||
+ mwheelup = 0;
|
||||
+ }
|
||||
+ if ((mwheeldown) && (mwheeldown <= (totalclock - MWHEELTICKS))) {
|
||||
+ mouseb &= ~32;
|
||||
+ mwheeldown = 0;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
#ifdef HAVE_GTK2
|
||||
if (gtkenabled) update_startwin();
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -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 ':'.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
jfsw: jfsw (source port of Shadow Warrior first-person shooter game)
|
||||
jfsw:
|
||||
jfsw: The aim of this port is to present Shadow Warrior as closely as
|
||||
jfsw: possible to the original game while adding optional features to expand
|
||||
jfsw: the possibilities of the game.
|
||||
jfsw:
|
||||
jfsw:
|
||||
jfsw:
|
||||
jfsw:
|
||||
jfsw:
|
||||
jfsw:
|
Loading…
Reference in New Issue