aboutsummaryrefslogtreecommitdiff
path: root/games/xu4
diff options
context:
space:
mode:
Diffstat (limited to 'games/xu4')
-rw-r--r--games/xu4/README25
-rw-r--r--games/xu4/README-SBo.txt47
-rw-r--r--games/xu4/doinst.sh3
-rw-r--r--games/xu4/profile_path.diff29
-rw-r--r--games/xu4/repackage.sh68
-rw-r--r--games/xu4/slack-desc19
-rw-r--r--games/xu4/u4.1240
-rw-r--r--games/xu4/u4.desktop8
-rw-r--r--games/xu4/xu4.SlackBuild164
-rw-r--r--games/xu4/xu4.info12
10 files changed, 615 insertions, 0 deletions
diff --git a/games/xu4/README b/games/xu4/README
new file mode 100644
index 0000000000000..4da2140d63785
--- /dev/null
+++ b/games/xu4/README
@@ -0,0 +1,25 @@
+XU4 is a remake of the computer game Ultima IV. The goal is to make
+it easy and convenient to play this classic on modern operating
+systems.
+
+XU4 isn't a new game based on the Ultima IV story -- it is a faithful
+recreation of the old game, right up to the crappy graphics. If you
+are looking for a game with modern gameplay and graphics, this is not
+it -- yet. New features that improve the gameplay and keep with the
+spirit of the original game will be added.
+
+This package can be built with optional extras. See README-SBo.txt
+for details.
+
+Copyright notice: The file ultima4.zip is included in this package. This
+file and its contents have a proprietary license and MAY NOT be
+redistributed. You may download it from the original site, but not give
+out copies of it yourself (including binary packages built from this
+SlackBuild, since they include ultima4.zip).
+
+If you have trouble downloading ultima4.zip from the URL listed
+in the .info file, you can instead download UltimaIV.zip from
+http://www.ultimaforever.com/ (registration required, JavaScript browser
+required, no direct download URL). It's a different packaging of the
+same content; the script is smart enough to build a package from either
+release of Ultima 4.
diff --git a/games/xu4/README-SBo.txt b/games/xu4/README-SBo.txt
new file mode 100644
index 0000000000000..379033bc11acb
--- /dev/null
+++ b/games/xu4/README-SBo.txt
@@ -0,0 +1,47 @@
+Optional stuff: Music, enhanced graphics, and PDF manuals.
+
+Music
+-----
+To hear the in-game music, you'll need a set of MIDI patches, either the
+eawpats or freepats package from slackbuilds.org (make sure you set up
+timidity.cfg correctly). These can be installed after the fact (no need
+to rebuild xu4 after installing them). The timidity package itself isn't
+required (xu4 uses SDL_mixer to play back the music).
+
+Enhanced Graphics
+-----------------
+By default, the script will build a package that uses the graphics from
+the original PC/DOS version of the game. If you'd like to use the
+upgraded graphics from the Ultima IV Upgrade Project, download the file
+u4upgrad.zip and place it in the same directory as the SlackBuild script,
+before running it. The upgrade can be downloaded here:
+
+URL: http://www.moongates.com/u4/upgrade/files/u4upgrad.zip
+md5sum: 4ce9c9cd9dab111275e0ebfde7a482c4
+Homepage: http://www.moongates.com/u4/upgrade/Upgrade.htm
+
+The graphics upgrade isn't listed in the .info file because it isn't
+required to play the game, and also because some users will prefer the
+original CGA-style graphics.
+
+PDF Manuals
+-----------
+Some of the documentation in this package is in Microsoft Word format. To
+read it, you can use KWord... or just live with the text-only versions
+(also included in this package). These are the manuals for the original
+game, and unlike most modern games, you really do need to read them to
+have any chance of completing Ultima IV. The text files and Word docs
+contain all the information needed to play the game.
+
+However, the text and MS Word manuals don't really capture the
+flavor of the original manuals: they're just the content, without the
+presentation. If you want a more authentic retro-gaming experience,
+you should install the PDF manuals. To do this, download the file
+ultima4_scanned_docs.zip and place it in the SlackBuild directory,
+before running the script.
+
+URL: http://urchlay.naptime.net/slackstuff/src/ultima4_scanned_docs.zip
+md5sum: c6be37b7028d6f7b56843a73517a5c31
+
+The PDF docs aren't listed in the .info file because they're fairly large,
+and not needed just to play the game.
diff --git a/games/xu4/doinst.sh b/games/xu4/doinst.sh
new file mode 100644
index 0000000000000..5fb28930db0b9
--- /dev/null
+++ b/games/xu4/doinst.sh
@@ -0,0 +1,3 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
diff --git a/games/xu4/profile_path.diff b/games/xu4/profile_path.diff
new file mode 100644
index 0000000000000..b436ac55d98f1
--- /dev/null
+++ b/games/xu4/profile_path.diff
@@ -0,0 +1,29 @@
+diff -Naur xu4-20111026_svn/src/settings.cpp xu4-20111026_svn.patched//src/settings.cpp
+--- xu4-20111026_svn/src/settings.cpp 2011-06-23 13:36:06.000000000 -0400
++++ xu4-20111026_svn.patched//src/settings.cpp 2011-10-27 17:27:02.000000000 -0400
+@@ -81,12 +81,6 @@
+ * Initialize the settings.
+ */
+ void Settings::init(const bool useProfile, const string profileName) {
+- if (useProfile) {
+- userPath = "./profiles/";
+- userPath += profileName.c_str();
+- userPath += "/";
+- } else {
+-
+ #if defined(MACOSX)
+ FSRef folder;
+ OSErr err = FSFindFolder(kUserDomain, kApplicationSupportFolderType, kCreateFolder, &folder);
+@@ -150,7 +144,12 @@
+ userPath = "./";
+ #endif
+
++ if (useProfile) {
++ userPath += "profiles/";
++ userPath += profileName.c_str();
++ userPath += "/";
+ }
++
+ FileSystem::createDirectory(userPath);
+
+ filename = userPath + SETTINGS_BASE_FILENAME;
diff --git a/games/xu4/repackage.sh b/games/xu4/repackage.sh
new file mode 100644
index 0000000000000..423fbb6f774f1
--- /dev/null
+++ b/games/xu4/repackage.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+# Repackage the official UltimaIV.zip from http://www.ultimaforever.com/
+# so that its zip file structure is the more-or-less the same as the dragon
+# release listed in the .info file. Also the official release includes the
+# PDF docs, so we pack them into ultima4_scanned_docs.zip like the build
+# script expects.
+
+# The resulting package will be missing Keyboard.txt. Since the contents
+# of Keyboard.txt are in the man page, I don't see it as a problem. The
+# package will also have an extra copy of the map (Map.jpg), higher res
+# than Map.bmp, but scanned from a creased map.
+
+SRCZIP="$1"
+if [ -z "$SRCZIP" -o ! -e "$SRCZIP" ]; then
+ echo "Usage: $0 /full/path/to/UltimaIV.zip"
+fi
+
+TMP=${TMP:-/tmp/SBo}
+WORK=$TMP/u4_repackage
+
+set -e
+
+OUTPUT="$( dirname $SRCZIP )"
+
+rm -rf $WORK
+mkdir -p $WORK
+cd $WORK
+unzip "$SRCZIP"
+
+# The manuals & map. This map is a jpeg, higher quality than the
+# bmp version, except the jpeg was scanned from a map with a big
+# crease in the middle. The dragon release lacks the jpeg map,
+# so the SlackBuild script will be smart enough to handle the
+# case where it's missing.
+mkdir ultima4_scanned_docs
+mv ultima4/EXTRAS/*.pdf ultima4_scanned_docs
+zip -r "$OUTPUT/ultima4_scanned_docs.zip" ultima4_scanned_docs
+mv "ultima4/EXTRAS/UltimaIV_Cloth Map.jpg" ultima4/Map.jpg
+rm -rf ultima4_scanned_docs ultima4/EXTRAS
+
+# dragon release has no containing directory inside the zipfile, so work
+# from here.
+cd ultima4
+
+# Rename some files:
+
+# The low-res (but not creased) map.
+mv MAP.BMP Map.bmp
+
+# there is no KEYBOARD.TXT. Use the word doc or the man page.
+# there is no README.TXT. It doesn't apply to xu4 anyway.
+mv HINTS.TXT Hints.txt
+mv WISDOM.TXT Wisdom.txt
+mv HISTORY.TXT History.txt
+
+mv KEYBOARD.DOC "Keyboard Reference.doc"
+# Readme.doc is different but has the same name. We don't need it anyway.
+mv HINTS.DOC Hints.doc
+mv THEBOOKO.DOC "The Book of Mystic Wisdom.doc"
+mv THEHISTO.DOC "The History of Britannia.doc"
+
+zip -r "$OUTPUT/ultima4.zip" .
+
+if [ "$2" != "--keep" ]; then
+ cd $TMP
+ rm -rf $WORK
+fi
diff --git a/games/xu4/slack-desc b/games/xu4/slack-desc
new file mode 100644
index 0000000000000..d69e4859a6b27
--- /dev/null
+++ b/games/xu4/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 ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+xu4: xu4 (Ultima IV remake)
+xu4:
+xu4: XU4 is a remake of the computer game Ultima IV. The goal is to make
+xu4: it easy and convenient to play this classic on modern operating
+xu4: systems.
+xu4:
+xu4: XU4 isn't a new game based on the Ultima IV story -- it is a faithful
+xu4: recreation of the old game, right up to the crappy graphics. If you
+xu4: are looking for a game with modern gameplay and graphics, this is not
+xu4: it -- yet. New features that improve the gameplay and keep with the
+xu4: spirit of the original game will be added.
diff --git a/games/xu4/u4.1 b/games/xu4/u4.1
new file mode 100644
index 0000000000000..0fc8fe2376990
--- /dev/null
+++ b/games/xu4/u4.1
@@ -0,0 +1,240 @@
+.TH u4 1 "26 Oct 2011" "Version 1.1+svn" "XU4 Manual"
+
+.SH NAME
+\fBu4\fR \- A modern reimplementation of the classic Ultima IV role\-playing game.
+
+.SH SYNOPSIS
+.B u4
+.RI [ options ]
+
+.SH DESCRIPTION
+.B XU4
+is a remake of the computer game Ultima IV. The goal is to make
+it easy and convenient to play this classic on modern operating
+systems.
+.PP
+This man page only describes the command\-line options and keyboard commands
+supported by \fBu4\fR.
+For full documentation, see the files in \fI/usr/doc/xu4\-@VERSION@/\fR. The
+README is a good place to start. Also the "History of Britannia" and the "Book
+of Mystic Wisdom" are found there (you should read them before playing).
+.SH OPTIONS
+\fBu4\fR accepts the following options:
+.TP
+.B "\-f, \-\-fullscreen"
+Run in fullscreen mode.
+.TP
+.B \-filter <filt>
+Apply a filter on the scaled images. The <filt>
+parameter must be set to one of the following
+case\-sensitive options:
+.I point
+.I 2xBi
+.I 2xSaI
+.I Scale2x
+.TP
+.B "\-i, \-skipintro"
+Skip the intro, and go directly into the game.
+This option requires the existance of a valid saved game.
+.TP
+.B "\-p <profname>, \-profile <profname>"
+Activate a specific save game profile. Using this
+option, you may have multiple saved games at the
+same time. Also, the game's config is stored on
+a per\-profile basis, so different profiles could
+have e.g. different screen resolutions.
+Use quotation marks around profile names that
+include spaces.
+All profiles are stored in the
+.I ~/.xu4/profiles
+sub\-directory.
+The active profile name is shown on the
+introduction map view off the main menu.
+.TP
+.B "\-q, \-quiet"
+Quiet mode \- no music.
+.TP
+.B \-scale <n>
+Scale the original graphics by a factor of <n>.
+Factor <n> must be 1, 2, 3, 4, or 5.
+.TP
+.B "\-v, \-verbose"
+Verbose output; prints out information useful for
+trouble\-shooting.
+.SH KEYBOARD CONTROLS
+XU4 is played entirely with the keyboard. To make choices from menus,
+press the first letter of the menu choice (e.g. \fBJ\fR for "Journey Onward"
+at the main menu). The Config menu also supports navigation with the arrow
+keys and Enter.
+.PP
+During gameplay, the following keystrokes are supported (information taken
+from Keyboard.txt and README):
+.TP
+.B A (Attack)
+Attempt to engage thy foe with the weapon thou hast
+readied (Ready Weapon command); must be followed by the
+direction of thy foe.
+.TP
+.B B (Board)
+Board a vessel or mount a horse.
+.TP
+.B C (Cast)
+Cast a magical spell; must be followed by the number
+of the player who wishes to cast it (not needed in combat or
+in dungeon rooms), and then the first letter of the desired
+spell. Note: All spells must have reagents mixed in advance
+of casting.
+.TP
+.B D (Descend)
+Climb down ladder to next level of dungeon or
+building.
+.TP
+.B E (Enter)
+Go into such places as villages, townes, castles,
+dungeons and shrines.
+.TP
+.B F (Fire)
+Fire a ship's cannons (once thou hast Boarded); must
+be followed by a direction. Note: Broadsides only!
+.TP
+.B G (Get Chest)
+Attempt to open (and disarm, if trapped) chest;
+must be followed by the number of the player who wishes to
+open the chest, except during combat and in dungeon rooms.
+Note: 'Tis wisest to use the player with the highest
+Dexterity when examining potentially dangerous chests as
+this lessens the chances of setting off any traps.
+.TP
+.B H (Hole up and camp)
+Set up camp to rest and recover from thy wounds.
+Note: This command may only be used successfully with limited frequency.
+.TP
+.B 1 (Ignite a torch)
+Light a torch for illumination in dungeons. Requires a special item.
+.TP
+.B J (Jimmy lock)
+Use a magical key to unlock a sealed door. Must be followed by the direction of the door that thou dost wish to unlock.
+.TP
+.B K (Klimb)
+Climb up a ladder to the next level of a building or dungeon, or to reach the surface from the topmost level of a dungeon.
+.TP
+.B L (Locate Position)
+Requires a special item.
+.TP
+.B M (Mix Reagents)
+Prepare material components of spells for later use.
+Note: Thou must have reagents mixed ahead of time in
+order to cast any spells. When asked "Reagent:", type the
+letter corresponding to the reagents desired and then type
+[Return] when thou wishes to mix them.
+.TP
+.B N (New order)
+Exchanges the position of two players indicated within thy party, except for player #1, for thou must lead the party.
+.TP
+.B O (Open door)
+Open a door in the direction indicated.
+.TP
+.B P (Peer at gem)
+Requires a special item.
+.TP
+.B Q (Quit & Save)
+Saves the current game status to disk; thou may continue after this command or power down thy computer.
+.TP
+.B R (Ready a weapon)
+Equip a player with the weapon of thy choice (if owned) for use in combat.
+.TP
+.B S (Search)
+Search thy exact current location for unusual items.
+.TP
+.B T (Talk)
+Allows a player to converse with merchants or townesfolk in the direction indicated.
+.TP
+.B U (Use)
+Use an item thou hast found during play by means of the "Search" command.
+.TP
+.B V (Volume)
+Toggles sound effects on or off.
+.TP
+.B W (Wear armour)
+Outfits a player with the armour of thy choice if owned for defense in combat.
+.TP
+.B X (Xit)
+That's (e)xit thy current form of transportation and continue on foot.
+.TP
+.B Y (Yell)
+Yell "giddyup" or "whoa" to speed up or slow down thy horse.
+.TP
+.B Z (Ztats)
+Displays the status and attributes of a
+selected player; if 0 is pressed instead of a player number,
+this command will display the lists of weapons, armour,
+items, reagents and mixtures. The left and right arrow
+keys will scroll through these lists, while pressing any
+other key will return thee to game play.
+.TP
+.B
+ARROW KEYS
+Control movement. North/South/East/West
+.SH FILES
+.TP
+.B ~/.xu4/
+Configuration and saved games are stored here, when \fB\-p\fR is not in use. The config file is
+\fBxu4rc\fR. It is human\-readable and editable, but normally is
+created and updated by the in\-game configuration menu. The savegames
+are in a binary format.
+.TP
+.B ~/.xu4/profiles/<profname>/
+When using the \fB\-p <profname>\fR option, config and savegame data are
+stored here instead.
+.SH AUTHORS
+Ultima IV was created by Richard Garriott, aka Lord British.
+.PP
+.B XU4
+authors:
+.br
+Andrew Taylor <andrewtaylor@users.sourceforge.net>
+.br
+ Main developer
+.PP
+Marc Winterrowd <nodling at yahoo dot com>
+.br
+ LZW decoder, tile animations, title screen fixes, and lots more
+.PP
+Daniel Browning\-Weber <dan_ultima@users.sourceforge.net>
+.br
+ Developer
+.PP
+Darren Janeczek <darren_janeczek@users.sourceforge.net>
+.br
+ Developer
+.PP
+Doug Day <dougday@users.sourceforge.net>
+.br
+ Developer
+.PP
+Travis Howell <kirben@users.sourceforge.net>
+.br
+ Windows port
+.PP
+Frank Wolter <FrankWolter@gmx.net>
+.br
+ Ultima IV icon used in xu4
+.PP
+Dennis De Marco <dennis@demarco.com>
+.br
+ Sound code
+.PP
+Steve Saunders <s_j_nevets@yahoo.com.au>
+.br
+ MacOSX port
+.PP
+Michael Ryan <solus@users.sourceforge.net>
+.br
+ Text colorization, profiles, enhanced LOS algorithm, title/intro sequence, general fixes
+.PP
+Gregory Saunders <grerfy@users.sourceforge.net>
+.br
+ Amiga file formats, minor enhancements
+.PP
+Man page created (from README contents) by B. Watson, for the SlackBuilds.org
+project. Permission hereby granted to use this man page anywhere, for any purpose.
diff --git a/games/xu4/u4.desktop b/games/xu4/u4.desktop
new file mode 100644
index 0000000000000..6674892a97584
--- /dev/null
+++ b/games/xu4/u4.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Ultima 4
+Comment=Ultima 4 (xu4)
+Exec=u4
+Icon=u4
+Terminal=false
+Type=Application
+Categories=Game;RolePlaying;
diff --git a/games/xu4/xu4.SlackBuild b/games/xu4/xu4.SlackBuild
new file mode 100644
index 0000000000000..a7136e8aa58b7
--- /dev/null
+++ b/games/xu4/xu4.SlackBuild
@@ -0,0 +1,164 @@
+#!/bin/bash
+
+# Slackware build script for xu4
+
+# Written by B. Watson (yalhcru@gmail.com)
+
+PRGNAM=xu4
+VERSION=${VERSION:-20111026_svn}
+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
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+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 {} \;
+
+# There actually are some executables in the lib dir. If there hadn't
+# been, I would have left it as /usr/lib even on 64-bit, or better yet
+# change to /usr/share. As it is, it has to be /usr/lib64 on 64-bit.
+LIBDIR=/usr/lib$LIBDIRSUFFIX
+PKGLIBDIR=$PKG/$LIBDIR
+
+# Fix path to "profiles/" dir used by -p option. Patch makes it use
+# ~/.xu4/profiles/ rather than ./profiles off the current dir.
+patch -p1 < $CWD/profile_path.diff
+
+# Fix hard-coded libdir. Ugh.
+sed -i -e "s,/usr/lib,$LIBDIR," src/u4file.cpp
+
+# Stop u4 from writing border.png in the current dir (it never *reads* it!)
+sed -i -e '/border\.png/s,^,//,' src/imagemgr.cpp
+
+# The -DNPERF stops u4 from creating a debug/ in the current dir.
+make -C src DEBUGCXXFLAGS="-DNPERF $SLKCFLAGS" prefix=/usr libdir=$PKGLIBDIR
+make -C src install prefix=$PKG/usr libdir=$PKGLIBDIR
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+# If we have the official release rather than the "dragon" one, repackage
+# it with the same layout as the dragon release. Note that the official
+# release isn't the default because there's no direct download link for
+# the .info file (the site requires javascript + registration).
+if [ -e $CWD/UltimaIV.zip ]; then
+ sh $CWD/repackage.sh $CWD/UltimaIV.zip
+fi
+
+# The game data. This is the zip file, not the self-extracting exe (the
+# exe lacks the documentation, for one thing).
+cat $CWD/ultima4.zip > $PKGLIBDIR/u4/ultima4.zip
+
+# Replace stock .desktop file with one that validates.
+cat $CWD/u4.desktop > $PKG/usr/share/applications/u4.desktop
+
+# These files should be (but aren't) installed by "make install". Without
+# them, we get no music!
+install -m0644 mid/*.it $PKGLIBDIR/u4/music/
+
+# Remove execute permission from data files. Grr.
+chmod 644 $PKG/usr/share/pixmaps/* $PKG/usr/share/applications/*
+find $PKGLIBDIR \
+ -type f -a \
+ \( -name \*.mid -o -name \*.vga -o -name \*.png -o \
+ -name \*.xml -o -name \*.dtd -o -name \*.ogg \) \
+ -print0 | xargs -0 chmod 644
+
+# Docs. N.B. we don't need border.png.
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/developers
+cp -a *.html AUTHORS COPYING README $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a doc/* $PKG/usr/doc/$PRGNAM-$VERSION/developers
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+# Include the upgrade (and extract its docs) if we have it.
+if [ -e $CWD/u4upgrad.zip ]; then
+ cat $CWD/u4upgrad.zip > $PKGLIBDIR/u4/u4upgrad.zip
+ cd $PKG/usr/doc/$PRGNAM-$VERSION
+ unzip $CWD/u4upgrad.zip Readme.txt
+ mv Readme.txt Readme-Upgrade.txt
+ cd -
+fi
+
+# Include the PDF docs, if we have them.
+if [ -e $CWD/ultima4_scanned_docs.zip ]; then
+ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/pdf
+ cd $PKG/usr/doc/$PRGNAM-$VERSION/pdf
+ unzip $CWD/ultima4_scanned_docs.zip '*.pdf'
+ mv ultima4_scanned_docs/Ultima_IV_-_Cluebook_-_PC.pdf Hints.pdf
+ mv ultima4_scanned_docs/Ultima_IV_-_Manual_-_PC.pdf History.pdf
+ mv ultima4_scanned_docs/Ultima_IV_-_Spellbook_-_PC.pdf Wisdom.pdf
+ rm -rf ultima4_scanned_docs
+ cd -
+fi
+
+# Include the original Ultima IV docs.
+cd $PKG/usr/doc/$PRGNAM-$VERSION
+unzip $CWD/ultima4.zip '*.txt' '*.doc' '*.bmp' '*.jpg' || true
+
+# These docs only apply to running the original game on DOS or Windows. Bye.
+rm -f Readme.txt Readme.doc
+
+# The Word versions of the docs don't really offer much improvement
+# over the plain text ones, but here they are.
+mkdir ms_word_docs
+mv *.doc ms_word_docs
+
+# Fix permissions and line endings.
+[ -e Map.bmp ] && chmod 644 Map.bmp
+[ -e Map.jpg ] && chmod 644 Map.jpg
+chmod 644 *.txt ms_word_docs/*.doc
+sed -i 's/\r//' *.txt
+cd -
+
+# I hate packages called "xfoo" whose binaries are called "foo".
+ln -s u4 $PKG/usr/bin/$PRGNAM
+
+# I also hate binaries that take options but have no man pages, so here's
+# the one I made. Enjoy.
+mkdir -p $PKG/usr/man/man1
+sed "s/@VERSION@/$VERSION/" $CWD/u4.1 | gzip -9c - > $PKG/usr/man/man1/u4.1.gz
+ln -s u4.1.gz $PKG/usr/man/man1/$PRGNAM.1.gz
+
+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}
diff --git a/games/xu4/xu4.info b/games/xu4/xu4.info
new file mode 100644
index 0000000000000..aa67145c77356
--- /dev/null
+++ b/games/xu4/xu4.info
@@ -0,0 +1,12 @@
+PRGNAM="xu4"
+VERSION="20111026_svn"
+HOMEPAGE="http://xu4.sourceforge.net/"
+DOWNLOAD="http://urchlay.naptime.net/slackstuff/src/xu4-20111026_svn.tar.xz \
+ http://www.thatfleminggent.com/ultima/ultima4.zip"
+MD5SUM="de6669e76a4323c6a6b32a70612b02bf \
+ f2006a5dbf175571912ef2594b6eb900"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+MAINTAINER="B. Watson"
+EMAIL="yalhcru@gmail.com"
+APPROVED="Niels Horn"