games/openjazz: Added (engine for Jazz Jackrabbit games)

Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
This commit is contained in:
B. Watson 2014-03-30 12:29:27 -05:00 committed by Erik Hanson
parent d9a8bbf2e1
commit 11fd7892b5
10 changed files with 634 additions and 0 deletions

31
games/openjazz/README Normal file
View file

@ -0,0 +1,31 @@
OpenJazz is a free, open-source version of the classic Jazz Jackrabbit
games. OpenJazz can be compiled on a wide range of operating systems,
including Windows 98/Me/XP and Linux. OpenJazz requires the files
from any of the following games:
- Jazz Jackrabbit Shareware Edition (included in this build)
- Jazz Jackrabbit
- Jazz Jackrabbit CD
- Jazz Jackrabbit Christmas Edition
- Jazz Jackrabbit: Holiday Hare 1995
OpenJazz will not work with any of the Jazz Jackrabbit 2 games.
There is no support for saving/loading the game. Multiplayer
is supported, but not well tested. For more information, see
http://www.alister.eu/jazz/oj/faq.php
This build includes the data files from the shareware edition, installed
in /usr/share/openjazz/shareware, and a wrapper script openjazz-shareware
that runs them (along with a .desktop file that does the same). To run
one of the other supported games, you'll need an installed/extracted copy
of the game in its own directory, and you'll have to pass the directory
path to openjazz as an argument. Example:
$ openjazz /dosC/games/jazz
Note that all the actual data files need to have UPPERCASE names,
e.g. "BLOCKS.000". If yours are lowercase, you can use something
like this:
$ for i in *; do mv $i $( echo $i | tr a-z A-Z ); done

4
games/openjazz/doinst.sh Normal file
View file

@ -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

View file

@ -0,0 +1,8 @@
[Desktop Entry]
Name=Jazz Jackrabbit (shareware)
Comment=Classic DOS game (OpenJazz engine)
Exec=openjazz
Icon=openjazz-shareware
Terminal=false
Type=Application
Categories=Game;ArcadeGame;

207
games/openjazz/openjazz.6 Normal file
View file

@ -0,0 +1,207 @@
.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{
. if \nF \{
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "OPENJAZZ 6"
.TH OPENJAZZ 6 "2014-03-27" "160214" "SlackBuilds.org"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
openjazz \- free/open\-source game engine for Jazz Jackrabbit
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
\&\fBopenjazz\fR \fI[\-f]\fR \fI[dir] ...\fR
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
OpenJazz is a free, open-source version of the classic Jazz Jackrabbit(tm)
games. OpenJazz can be compiled on a wide range of operating systems,
including Windows 98/Me/XP and Linux. OpenJazz requires the files
from any of the following games:
.IP "Jazz Jackrabbit" 4
.IX Item "Jazz Jackrabbit"
.PD 0
.IP "Jazz Jackrabbit \s-1CD\s0" 4
.IX Item "Jazz Jackrabbit CD"
.IP "Jazz Jackrabbit Shareware Edition" 4
.IX Item "Jazz Jackrabbit Shareware Edition"
.IP "Jazz Jackrabbit Christmas Edition" 4
.IX Item "Jazz Jackrabbit Christmas Edition"
.IP "Jazz Jackrabbit: Holiday Hare 1995" 4
.IX Item "Jazz Jackrabbit: Holiday Hare 1995"
.PD
.PP
OpenJazz will not work with any of the Jazz Jackrabbit 2 games. Don't
get confused: there's a \*(L"Holiday Hare 1998\*(R", which isn't supported
(only the 1995 version is).
.PP
There is no support for saving/loading the game. Multiplayer
is supported, but not well tested.
.SH "OPTIONS"
.IX Header "OPTIONS"
\&\fB\-f\fR starts the game fullscreen. Any other option beginning with \- will
be ignored. Anything else is treated as a directory to be added to the
file search path.
.SH "FILES"
.IX Header "FILES"
Game data files must be named in uppercase (e.g. \fB\s-1BLOCKS.000\s0\fR).
.PP
The search path for game data files includes, in order:
.IP "the current directory" 4
.IX Item "the current directory"
.PD 0
.ie n .IP "$HOME/.openjazz/" 4
.el .IP "\f(CW$HOME\fR/.openjazz/" 4
.IX Item "$HOME/.openjazz/"
.IP "all paths listed on the command line \fIin reverse order\fR" 4
.IX Item "all paths listed on the command line in reverse order"
.PD
.PP
In addition, the file \fBopenjazz.000\fR (containing the OpenJazz logo,
note the lowercase name) will be searched for in \fB/usr/share/openjazz\fR
after all other directories (so each separate game doesn't need its
own copy, when you've got multiple games installed).
.PP
\&\fB\f(CB$HOME\fB/.openjazz/\fR stores user preferences and any custom levels
downloaded from multiplayer servers. Will be created if it doesn't
exist.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fBhttp://www.alister.eu/jazz/oj/faq.php\fR
.SH "AUTHORS"
.IX Header "AUTHORS"
\&\fBopenjazz\fR is copyright (c) 2005\-2013 Alister Thomson.
.PP
This man page written by B. Watson for the SlackBuilds.org project, and may
be used by anyone.

View file

@ -0,0 +1,139 @@
#!/bin/sh
# Slackware build script for openjazz
# Written by B. Watson (yalhcru@gmail.com)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
PRGNAM=openjazz
VERSION=${VERSION:-160214}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i486 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -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
SRCNAM=OpenJazz
ZIPFILE=$SRCNAM-src-$VERSION.zip
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
mkdir -p $PRGNAM-$VERSION
cd $PRGNAM-$VERSION
unzip $CWD/$ZIPFILE
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 {} \;
# Patch does 4 things:
# - Always look for openjazz.000 in /usr/share/openjazz. Saves the user
# from having to keep copies or symlinks of it in every game dir.
# - Writes config file to user's homedir, not current dir.
# - For .psm (music) files, if they're not found as "blah.psm", try the
# all-uppercase "BLAH.PSM" instead. Saves the user having to rename
# them (and keeps things consistent, EVERYTHING ALL CAPS). In case you're
# wondering, the lowercase psm filenames are hardcoded inside the data
# files from the DOS game, not the source.
# - Logs the full path & result of every attempted file open. I needed
# this myself to understand WTF was going on, leaving it in case
# users find it helpful.
patch -p1 < $CWD/paths.diff
autoreconf -if
# HOMEDIR should be defined on *nix, for some reason it's not automatically.
SLKCFLAGS="$SLKCFLAGS -DHOMEDIR"
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--build=$ARCH-slackware-linux
make
make install-strip DESTDIR=$PKG
# icon came from windows jazz jackrabbit CD, converted with icotool
mkdir -p $PKG/usr/share/pixmaps
cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/shareware \
$PKG/usr/share/$PRGNAM/shareware
cd $PKG/usr/share/$PRGNAM/shareware
unzip $CWD/jjrabbit.zip
for i in *.DOC; do
sed 's,\r,,g' $i > $PKG/usr/doc/$PRGNAM-$VERSION/shareware/$i
done
rm -f *.EXE *.DIZ *.DOC *.PIF
cd -
# wrapper script
mkdir -p $PKG/usr/games
cat <<EOF >$PKG/usr/games/$PRGNAM-shareware
#!/bin/sh
exec $PRGNAM /usr/share/$PRGNAM/shareware "\$@"
EOF
chmod 755 $PKG/usr/games/$PRGNAM-shareware
# man page written for this slackbuild
mkdir -p $PKG/usr/man/man6
gzip -9c < $CWD/$PRGNAM.6 > $PKG/usr/man/man6/$PRGNAM.6.gz
mkdir -p $PKG/usr/share/applications
cat $CWD/$PRGNAM-shareware.desktop \
> $PKG/usr/share/applications/$PRGNAM-shareware.desktop
for i in *.txt; do
sed 's,\r,,g' $i > $PKG/usr/doc/$PRGNAM-$VERSION/$i
done
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$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:-tgz}

View file

@ -0,0 +1,12 @@
PRGNAM="openjazz"
VERSION="160214"
HOMEPAGE="http://www.alister.eu/jazz/oj/"
DOWNLOAD="http://www.alister.eu/jazz/oj/OpenJazz-src-160214.zip \
http://urchlay.naptime.net/~urchlay/src/jjrabbit.zip"
MD5SUM="a570ae8b148a8b0fd7a3a121289a4721 \
48bc5ae9ac3d0bb3a45a8262f68bf78c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libmodplug"
MAINTAINER="B. Watson"
EMAIL="yalhcru@gmail.com"

BIN
games/openjazz/openjazz.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,82 @@
# pod source for openjazz man page
# pod2man -s6 -r160214 --stderr -cSlackBuilds.org openjazz.pod > openjazz.6
=pod
=head1 NAME
B<openjazz> - free/open-source game engine for Jazz Jackrabbit
=head1 SYNOPSIS
B<openjazz> I<[-f]> I<[dir] ...>
=head1 DESCRIPTION
OpenJazz is a free, open-source version of the classic Jazz Jackrabbit(tm)
games. OpenJazz can be compiled on a wide range of operating systems,
including Windows 98/Me/XP and Linux. OpenJazz requires the files
from any of the following games:
=over
=item Jazz Jackrabbit
=item Jazz Jackrabbit CD
=item Jazz Jackrabbit Shareware Edition
=item Jazz Jackrabbit Christmas Edition
=item Jazz Jackrabbit: Holiday Hare 1995
=back
OpenJazz will not work with any of the Jazz Jackrabbit 2 games. Don't
get confused: there's a "Holiday Hare 1998", which isn't supported
(only the 1995 version is).
There is no support for saving/loading the game. Multiplayer
is supported, but not well tested.
=head1 OPTIONS
B<-f> starts the game fullscreen. Any other option beginning with - will
be ignored. Anything else is treated as a directory to be added to the
file search path.
=head1 FILES
Game data files must be named in uppercase (e.g. B<BLOCKS.000>).
The search path for game data files includes, in order:
=over
=item the current directory
=item $HOME/.openjazz/
=item all paths listed on the command line I<in reverse order>
=back
In addition, the file B<openjazz.000> (containing the OpenJazz logo,
note the lowercase name) will be searched for in B</usr/share/openjazz>
after all other directories (so each separate game doesn't need its
own copy, when you've got multiple games installed).
B<$HOME/.openjazz/> stores user preferences and any custom levels
downloaded from multiplayer servers. Will be created if it doesn't
exist.
=head1 SEE ALSO
B<http://www.alister.eu/jazz/oj/faq.php>
=head1 AUTHORS
B<openjazz> is copyright (c) 2005-2013 Alister Thomson.
This man page written by B. Watson for the SlackBuilds.org project, and may
be used by anyone.

132
games/openjazz/paths.diff Normal file
View file

@ -0,0 +1,132 @@
diff -Naur orig/src/io/file.cpp patched/src/io/file.cpp
--- orig/src/io/file.cpp 2014-02-15 22:14:10.000000000 -0500
+++ patched/src/io/file.cpp 2014-03-27 01:48:27.000000000 -0400
@@ -32,6 +32,7 @@
#include "io/gfx/video.h"
#include "util.h"
+#include <stdlib.h>
#include <string.h>
#include <zlib.h>
@@ -43,6 +44,16 @@
* @param write Whether or not the file can be written to
*/
File::File (const char* name, bool write) {
+#ifdef HOMEDIR
+ if(write) {
+ char *writepath = createString(getenv("HOME"), "/.openjazz/");
+ bool ok = open(writepath, name, write);
+ delete [] writepath;
+ if(ok) return;
+ log("Could not open file for writing in $HOME", name);
+ throw E_FILE;
+ }
+#endif
Path* path;
@@ -55,7 +66,7 @@
}
- log("Could not open file", name);
+ log("Could not find file in path", name);
throw E_FILE;
@@ -69,9 +80,7 @@
fclose(file);
-#ifdef VERBOSE
log("Closed file", filePath);
-#endif
delete[] filePath;
@@ -117,13 +126,13 @@
if (file) {
-#ifdef VERBOSE
log("Opened file", filePath);
-#endif
return true;
- }
+ } else {
+ log("Could not open file", filePath);
+ }
delete[] filePath;
diff -Naur orig/src/io/sound.cpp patched/src/io/sound.cpp
--- orig/src/io/sound.cpp 2013-11-23 11:54:26.000000000 -0500
+++ patched/src/io/sound.cpp 2014-03-27 01:47:03.000000000 -0400
@@ -27,6 +27,8 @@
*/
+#include <ctype.h>
+#include <string.h>
#include "file.h"
#include "sound.h"
@@ -203,7 +205,15 @@
} catch (int e) {
- return;
+ char *upperName = strdup(fileName);
+ for(char *ch = upperName; *ch; ++ch)
+ *ch = toupper(*ch);
+ try {
+ file = new File(upperName, false);
+ free(upperName);
+ } catch(int e) {
+ return;
+ }
}
diff -Naur orig/src/main.cpp patched/src/main.cpp
--- orig/src/main.cpp 2014-02-16 10:59:02.000000000 -0500
+++ patched/src/main.cpp 2014-03-27 01:51:17.000000000 -0400
@@ -47,6 +47,8 @@
#include "setup.h"
#include "util.h"
+#include <sys/stat.h>
+#include <sys/types.h>
#include <string.h>
#if defined(CAANOO) || defined(WIZ) || defined(GP2X)
@@ -174,7 +176,9 @@
#ifdef WIN32
firstPath = new Path(firstPath, createString(getenv("HOME"), "\\"));
#else
- firstPath = new Path(firstPath, createString(getenv("HOME"), "/."));
+ char *homeSubDir = createString(getenv("HOME"), "/.openjazz/");
+ mkdir(homeSubDir, 0700); /* ignore errors */
+ firstPath = new Path(firstPath, homeSubDir);
#endif
#endif
diff -Naur orig/src/menu/mainmenu.cpp patched/src/menu/mainmenu.cpp
--- orig/src/menu/mainmenu.cpp 2013-07-20 11:46:16.000000000 -0400
+++ patched/src/menu/mainmenu.cpp 2014-03-27 01:47:03.000000000 -0400
@@ -58,7 +58,11 @@
} catch (int e) {
- throw e;
+ try {
+ file = new File("/usr/share/openjazz/" LOGO_FILE, false);
+ } catch(int e) {
+ throw e;
+ }
}

19
games/openjazz/slack-desc Normal file
View file

@ -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------------------------------------------------------|
openjazz: openjazz (engine for Jazz Jackrabbit games)
openjazz:
openjazz: OpenJazz is a free open-source version of the classic Jazz Jackrabbit
openjazz: games. OpenJazz requires the files from any of the following games:
openjazz:
openjazz: - Jazz Jackrabbit Shareware Edition (included in this build)
openjazz: - Jazz Jackrabbit
openjazz: - Jazz Jackrabbit CD
openjazz: - Jazz Jackrabbit Christmas Edition
openjazz: - Jazz Jackrabbit: Holiday Hare 1995
openjazz: