summaryrefslogtreecommitdiffstats
path: root/source/xap/xgames
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2009-08-26 10:00:38 -0500
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:41:17 +0200
commit5a12e7c134274dba706667107d10d231517d3e05 (patch)
tree55718d5acb710fde798d9f38d0bbaf594ed4b296 /source/xap/xgames
downloadcurrent-5a12e7c134274dba706667107d10d231517d3e05.tar.gz
current-5a12e7c134274dba706667107d10d231517d3e05.tar.xz
Slackware 13.0slackware-13.0
Wed Aug 26 10:00:38 CDT 2009 Slackware 13.0 x86_64 is released as stable! Thanks to everyone who helped make this release possible -- see the RELEASE_NOTES for the credits. The ISOs are off to the replicator. This time it will be a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. We're taking pre-orders now at store.slackware.com. Please consider picking up a copy to help support the project. Once again, thanks to the entire Slackware community for all the help testing and fixing things and offering suggestions during this development cycle. As always, have fun and enjoy! -P.
Diffstat (limited to 'source/xap/xgames')
-rw-r--r--source/xap/xgames/maze.diff22
-rw-r--r--source/xap/xgames/slack-desc19
-rw-r--r--source/xap/xgames/spider.diff121
-rw-r--r--source/xap/xgames/xcolormap.diff22
-rw-r--r--source/xap/xgames/xcuckoo.diff12
-rwxr-xr-xsource/xap/xgames/xgames.SlackBuild154
-rw-r--r--source/xap/xgames/xlander-2009-07-18.diff86
-rw-r--r--source/xap/xgames/xlander.fixes.diff228
8 files changed, 664 insertions, 0 deletions
diff --git a/source/xap/xgames/maze.diff b/source/xap/xgames/maze.diff
new file mode 100644
index 000000000..77ec739c7
--- /dev/null
+++ b/source/xap/xgames/maze.diff
@@ -0,0 +1,22 @@
+--- ./getopt.c.orig Wed Aug 4 14:48:46 1999
++++ ./getopt.c Wed Aug 4 14:48:55 1999
+@@ -22,7 +22,7 @@
+ char *optarg;
+
+ int
+-getopt(argc, argv, opts)
++maze_getopt(argc, argv, opts)
+ int argc;
+ char **argv, *opts;
+ {
+--- ./maze.c.orig Wed Aug 4 14:48:59 1999
++++ ./maze.c Wed Aug 4 14:49:10 1999
+@@ -136,7 +136,7 @@
+ int flags;
+
+ cmd = argv[0];
+- while ((c = getopt(argc, argv, "rSd:g:")) != EOF)
++ while ((c = maze_getopt(argc, argv, "rSd:g:")) != EOF)
+ switch(c) {
+
+ case 'S':
diff --git a/source/xap/xgames/slack-desc b/source/xap/xgames/slack-desc
new file mode 100644
index 000000000..a81a038c7
--- /dev/null
+++ b/source/xap/xgames/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------------------------------------------------------|
+xgames: xgames (small X games collection)
+xgames:
+xgames: A few small and historic games and toys for X.
+xgames:
+xgames: Includes maze, spider, xcolormap, xlander, xminesweep, xroach, xsnow.
+xgames:
+xgames:
+xgames:
+xgames:
+xgames:
+xgames:
diff --git a/source/xap/xgames/spider.diff b/source/xap/xgames/spider.diff
new file mode 100644
index 000000000..b0704f147
--- /dev/null
+++ b/source/xap/xgames/spider.diff
@@ -0,0 +1,121 @@
+--- ./globals.h.orig 1991-09-28 12:46:20.000000000 -0500
++++ ./globals.h 2007-02-21 20:14:54.000000000 -0600
+@@ -96,6 +96,6 @@
+ Bool can_get_help_files();
+ #endif
+
+-extern char *malloc();
+-extern char *calloc();
+-extern char *realloc();
++extern void *malloc();
++extern void *calloc();
++extern void *realloc();
+--- ./movelog.c.orig 1991-09-28 12:46:17.000000000 -0500
++++ ./movelog.c 2007-02-21 20:17:21.000000000 -0600
+@@ -22,6 +22,7 @@
+ #ifdef SVR4
+ #include <unistd.h>
+ #endif
++#include <stdlib.h>
+
+ #define CACHE_SIZE 50
+ static int move_index = 0;
+@@ -33,6 +34,21 @@
+
+ extern int cheat_count;
+
++Rank flip_ranks[NUM_RANKS] = {
++ King, Queen, Jack, Ten, Nine, Eight, Seven,
++ Six, Five, Four, Three, Deuce, Ace
++};
++
++static int
++card_to_int(card)
++CardPtr card;
++{
++int val;
++
++ val = card->suit * 13 + flip_ranks[card->rank];
++ return (val);
++}
++
+ make_deck_cache()
+ {
+ CardPtr tmp;
+@@ -280,11 +296,6 @@
+ }
+ }
+
+-Rank flip_ranks[NUM_RANKS] = {
+- King, Queen, Jack, Ten, Nine, Eight, Seven,
+- Six, Five, Four, Three, Deuce, Ace
+-};
+-
+ static void
+ int_to_card(val, suit, rank)
+ int val;
+@@ -298,16 +309,6 @@
+ assert (*rank >= Ace && *suit <= King);
+ }
+
+-static int
+-card_to_int(card)
+-CardPtr card;
+-{
+-int val;
+-
+- val = card->suit * 13 + flip_ranks[card->rank];
+- return (val);
+-}
+-
+ static CardPtr
+ find_card(cache, suit, rank)
+ CardPtr *cache;
+@@ -709,6 +710,23 @@
+ }
+ }
+
++static int
++restore_game(str, str2)
++char *str, *str2;
++{
++
++ if (read_position(str) != 0) {
++ return (-1);
++ }
++
++ init_cache(); /* clear out the move cache */
++
++ if (str2)
++ read_moves(str2);
++
++ return (0);
++}
++
+ read_selection(buf)
+ char *buf;
+ {
+@@ -786,23 +804,6 @@
+ show_message(buf);
+ }
+
+-static int
+-restore_game(str, str2)
+-char *str, *str2;
+-{
+-
+- if (read_position(str) != 0) {
+- return (-1);
+- }
+-
+- init_cache(); /* clear out the move cache */
+-
+- if (str2)
+- read_moves(str2);
+-
+- return (0);
+-}
+-
+ /*
+ * play the same deck again
+ */
diff --git a/source/xap/xgames/xcolormap.diff b/source/xap/xgames/xcolormap.diff
new file mode 100644
index 000000000..57a0bee7c
--- /dev/null
+++ b/source/xap/xgames/xcolormap.diff
@@ -0,0 +1,22 @@
+--- ./Makefile.orig Wed Aug 4 14:53:55 1999
++++ ./Makefile Wed Aug 4 14:54:07 1999
+@@ -3,7 +3,7 @@
+ PROGRAM = xcolormap
+ OBJS = xcolormap.o
+
+-LIBS = -lm -lXt -lX11
++LIBS = -lm -L /usr/X11R6/lib -lXt -lX11
+
+ all: $(PROGRAM)
+
+--- ./xcolormap.c.orig Wed Aug 4 14:53:23 1999
++++ ./xcolormap.c Wed Aug 4 14:53:49 1999
+@@ -113,7 +113,7 @@
+
+ if (!TheDisplay)
+ {
+- XtWarning ("%s: can't open display, exiting...", APPNAME);
++ XtWarning ("%s: can't open display, exiting...");
+ exit (0);
+ }
+
diff --git a/source/xap/xgames/xcuckoo.diff b/source/xap/xgames/xcuckoo.diff
new file mode 100644
index 000000000..00c014cb3
--- /dev/null
+++ b/source/xap/xgames/xcuckoo.diff
@@ -0,0 +1,12 @@
+diff -u xcuckoo.orig/xcuckoo.c xcuckoo/xcuckoo.c
+--- xcuckoo.orig/xcuckoo.c 1992-05-05 02:38:34.000000000 -0500
++++ xcuckoo/xcuckoo.c 2007-02-28 13:10:37.000000000 -0600
+@@ -37,7 +37,7 @@
+ #include "version.h"
+ #include "patchlevel.h"
+
+-extern char *malloc();
++extern void *malloc();
+
+ /* R4 concession */
+ #ifndef XPointer
diff --git a/source/xap/xgames/xgames.SlackBuild b/source/xap/xgames/xgames.SlackBuild
new file mode 100755
index 000000000..e2514f816
--- /dev/null
+++ b/source/xap/xgames/xgames.SlackBuild
@@ -0,0 +1,154 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=0.3
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-xgames
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Build spider:
+cd $TMP
+tar xvf $CWD/spider.tar.gz || exit 1
+cd spider || exit 1
+zcat $CWD/spider.diff.gz | patch -p1 --verbose || exit 1
+xmkmf
+make $NUMJOBS || make || exit 1
+mkdir -p $PKG/usr/bin
+cat spider > $PKG/usr/bin/spider
+mkdir -p $PKG/usr/man/man6
+cat spider.man | gzip -9c > $PKG/usr/man/man6/spider.6.gz
+mkdir -p $PKG/usr/doc/xgames-$VERSION/spider
+cp -a README* $PKG/usr/doc/xgames-$VERSION/spider
+
+# Build maze:
+cd $TMP
+tar xvf $CWD/maze.tar.gz || exit 1
+cd maze || exit 1
+zcat $CWD/maze.diff.gz | patch -p1 || exit 1
+xmkmf
+make $NUMJOBS || make || exit 1
+cat maze > $PKG/usr/bin/maze
+cat maze.man | gzip -9c > $PKG/usr/man/man6/maze.6.gz
+mkdir -p $PKG/usr/doc/xgames-$VERSION/maze
+cp -a README $PKG/usr/doc/xgames-$VERSION/maze
+
+# Build xcolormap:
+cd $TMP
+tar xvf $CWD/xcolormap.tar.gz || exit 1
+cd xcolormap || exit 1
+zcat $CWD/xcolormap.diff.gz | patch -p1 || exit 1
+make $NUMJOBS || make || exit 1
+cat xcolormap > $PKG/usr/bin/xcolormap
+mkdir -p $PKG/usr/doc/xgames-$VERSION/xcolormap
+cp -a README $PKG/usr/doc/xgames-$VERSION/xcolormap
+
+# Build xcuckoo:
+cd $TMP
+tar xvf $CWD/xcuckoo-1.1.tar.gz || exit 1
+cd xcuckoo || exit 1
+zcat $CWD/xcuckoo.diff.gz | patch -p1 --verbose || exit 1
+xmkmf
+make $NUMJOBS || make || exit 1
+cat xcuckoo > $PKG/usr/bin/xcuckoo
+cat xcuckoo.man | gzip -9c > $PKG/usr/man/man6/xcuckoo.6.gz
+mkdir -p $PKG/usr/doc/xgames-$VERSION/xcuckoo
+cp -a CHANGES $PKG/usr/doc/xgames-$VERSION/xcuckoo
+
+# Build xlander:
+cd $TMP
+tar xvf $CWD/xlander.tar.gz || exit 1
+cd xlander || exit 1
+zcat $CWD/xlander.fixes.diff.gz | patch -p1 || exit 1
+zcat $CWD/xlander-2009-07-18.diff.gz | patch -p1 || exit 1
+xmkmf
+make $NUMJOBS || make || exit 1
+cat xlander > $PKG/usr/bin/xlander
+cat xlander.man | gzip -9c > $PKG/usr/man/man6/xlander.6.gz
+mkdir -p $PKG/usr/doc/xgames-$VERSION/xlander
+cp -a README $PKG/usr/doc/xgames-$VERSION/xlander
+
+# Build xminesweep:
+cd $TMP
+tar xvf $CWD/xminesweep3.0.tar.gz || exit 1
+cd xminesweep3.0 || exit 1
+xmkmf
+make $NUMJOBS || make || exit 1
+cat xminesweep > $PKG/usr/bin/xminesweep
+cat xminesweep.man | gzip -9c > $PKG/usr/man/man6/xminesweep.6.gz
+mkdir -p $PKG/usr/doc/xgames-$VERSION/xminesweep
+cp -a README $PKG/usr/doc/xgames-$VERSION/xminesweep
+
+# Build xneko:
+cd $TMP
+tar xvf $CWD/xneko.tar.gz || exit 1
+cd xneko || exit 1
+xmkmf
+make $NUMJOBS || make || exit 1
+cat xneko > $PKG/usr/bin/xneko
+cat xneko.man | gzip -9c > $PKG/usr/man/man6/xneko.6.gz
+mkdir -p $PKG/usr/doc/xgames-$VERSION/xneko
+cp -a README $PKG/usr/doc/xgames-$VERSION/xneko
+
+# Build xroach:
+cd $TMP
+tar xvf $CWD/xroach.tar.gz || exit 1
+cd xroach || exit 1
+xmkmf
+make $NUMJOBS || make || exit 1
+cat xroach > $PKG/usr/bin/xroach
+cat xroach.man | gzip -9c > $PKG/usr/man/man6/xroach.6.gz
+mkdir -p $PKG/usr/doc/xgames-$VERSION/xroach
+cp -a README.linux $PKG/usr/doc/xgames-$VERSION/xroach
+
+# Build xsnow:
+cd $TMP
+tar xvf $CWD/xsnow-1.40.tar.gz || exit 1
+cd xsnow-1.40 || exit 1
+xmkmf
+make $NUMJOBS || make || exit 1
+cat xsnow > $PKG/usr/bin/xsnow
+cat xsnow.man | gzip -9c > $PKG/usr/man/man6/xsnow.6.gz
+mkdir -p $PKG/usr/doc/xgames-$VERSION/xsnow
+cp -a README $PKG/usr/doc/xgames-$VERSION/xsnow
+
+# Fix everything up:
+chmod 755 $PKG/usr/bin/*
+strip $PKG/usr/bin/*
+
+( cd $PKG/usr/doc
+ find . -type f -exec chown root.root {} \;
+ find . -type f -exec chmod 644 {} \;
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/xgames-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/xap/xgames/xlander-2009-07-18.diff b/source/xap/xgames/xlander-2009-07-18.diff
new file mode 100644
index 000000000..21402ea4d
--- /dev/null
+++ b/source/xap/xgames/xlander-2009-07-18.diff
@@ -0,0 +1,86 @@
+diff --git a/game.c b/game.c
+index e6f3a53..b789081 100644
+--- a/game.c
++++ b/game.c
+@@ -93,7 +93,7 @@ void RateLanding (db, lander)
+ extern LINE landingpad[];
+ int x_distance, z_distance; /* Distance from center of pad */
+ int abs ();
+- void InitializeLander (), DisplayAcceleration ();
++ void InitFrameRate (), InitializeLander (), DisplayAcceleration ();
+
+ x_distance =
+ abs ((int) (db->off_x - (landingpad[0].x1 + (PAD_WIDTH >> 1))));
+@@ -108,6 +108,7 @@ void RateLanding (db, lander)
+ }
+ XDrawImageString (d, instrBuffer, gcInstr, 381, 84, buf, strlen (buf));
+ Pause ("Press mouse button to continue");
++ InitFrameRate ();
+ InitializeLander (db, lander);
+
+ /*
+diff --git a/initialize.c b/initialize.c
+index 99a81c5..279e3f2 100644
+--- a/initialize.c
++++ b/initialize.c
+@@ -60,7 +60,7 @@ void InitializeLander (craft, lander)
+ lander->retro_thruster = 0;
+ lander->vert_speed = 0.0;
+ lander->heading = 1.36;
+- lander->lat_veloc = 100.0;
++ lander->lat_veloc = 300.0;
+ lander->fuel = FULL_TANK;
+ lander->alt = craft->off_y / PIXELS_PER_FOOT;
+ }
+diff --git a/patchlevel.h b/patchlevel.h
+index 9625f98..be79bb8 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -1,2 +1,2 @@
+-#define PATCHLEVEL 3
++#define PATCHLEVEL 4
+
+diff --git a/xlander.c b/xlander.c
+index 2b2c103..318e5df 100644
+--- a/xlander.c
++++ b/xlander.c
+@@ -101,9 +101,17 @@ void DisplayWorld ()
+ }
+
+
++void InitFrameRate ()
++{
++ gettimeofday(&frame_time, NULL);
++ gettimeofday(&prev_frame_time, NULL);
++ fps = 1000000.0; /* Avoid initial spike */
++}
++
++
+ void UpdateFrameRate ()
+ {
+- unsigned long sec, usec, diff;
++ long sec, usec, diff;
+
+ gettimeofday(&frame_time, NULL);
+ sec = frame_time.tv_sec - prev_frame_time.tv_sec;
+@@ -164,6 +172,7 @@ int main (argc, argv)
+ */
+ mask = sigblock (sigmask (SIGINT));
+ Pause ("Press any mouse button to begin");
++ InitFrameRate ();
+ DisplayAcceleration ();
+ for (;;) {
+ UpdateOrientation (world, craft, &lander);
+diff --git a/xlander.h b/xlander.h
+index ea157f7..ea072d3 100644
+--- a/xlander.h
++++ b/xlander.h
+@@ -44,7 +44,7 @@
+ #define PIXELS_PER_FOOT 6 /* Number of pixels per foot */
+ #define ACCELERATION -5.310 /* Acceleration of gravity (ft/sec^2) */
+ #define RETRO 35.0 /* Acceleration due to retroactive thruster */
+-#define LATERAL_THRUST 5.0 /* Acceleration due to lateral thruster */
++#define LATERAL_THRUST 1.0 /* Acceleration due to lateral thruster */
+ #define PI 3.1415926535897932384
+ #define HALFPI 1.5707963 /* pi/2 */
+ #define TWOPI100 628
diff --git a/source/xap/xgames/xlander.fixes.diff b/source/xap/xgames/xlander.fixes.diff
new file mode 100644
index 000000000..7212e1839
--- /dev/null
+++ b/source/xap/xgames/xlander.fixes.diff
@@ -0,0 +1,228 @@
+diff -ru a-slackware-1995-06-17/game.c b-gary/game.c
+--- a-slackware-1995-06-17/game.c 1995-06-17 21:23:00.000000000 -0400
++++ b-gary/game.c 2007-03-01 04:08:49.000000000 -0500
+@@ -165,7 +165,7 @@
+ switch (event.type) {
+ case KeyPress:
+ if (lander->fuel > 0.0) {
+- XLookupString (&event, &ch, 1, &keysym, (XComposeStatus *) 0);
++ XLookupString ((XKeyEvent *) &event, &ch, 1, &keysym, (XComposeStatus *) 0);
+ if (ch == lander->controls[0] || keysym == XK_Up)
+ lander->rear_thruster = lander->lateral_thrust;
+ else if (ch == lander->controls[1] || keysym == XK_Down)
+@@ -179,7 +179,7 @@
+ }
+ break;
+ case KeyRelease:
+- XLookupString (&event, &ch, 1, &keysym, (XComposeStatus *) 0);
++ XLookupString ((XKeyEvent *) &event, &ch, 1, &keysym, (XComposeStatus *) 0);
+ if (ch == lander->controls[0] || keysym == XK_Up)
+ lander->rear_thruster = 0;
+ else if (ch == lander->controls[1] || keysym == XK_Down)
+@@ -197,24 +197,26 @@
+ }
+
+ if (lander->retro_thruster > 0)
+- lander->fuel -= RETRO_BURN;
++ lander->fuel -= RETRO_BURN / fps;
+ if (lander->front_thruster > 0)
+- lander->fuel -= LATERAL_BURN;
++ lander->fuel -= LATERAL_BURN / fps;
+ if (lander->rear_thruster > 0)
+- lander->fuel -= LATERAL_BURN;
++ lander->fuel -= LATERAL_BURN / fps;
+ if (lander->left_thruster > 0)
+- lander->fuel -= LATERAL_BURN;
++ lander->fuel -= LATERAL_BURN / fps;
+ if (lander->right_thruster > 0)
+- lander->fuel -= LATERAL_BURN;
++ lander->fuel -= LATERAL_BURN / fps;
++ if (lander->fuel < 0.0)
++ lander->fuel = 0.0; /* Prevents gas gauge from going negative */
+ lander->vert_speed +=
+- (lander->retro_thruster + acceleration) / TICKS_PER_SECOND;
+- lander->alt += lander->vert_speed / TICKS_PER_SECOND;
++ (lander->retro_thruster + acceleration) / fps;
++ lander->alt += lander->vert_speed / fps;
+ lat_accel_x = lander->right_thruster - lander->left_thruster;
+ lat_accel_y = lander->rear_thruster - lander->front_thruster;
+ lat_veloc_x = lander->lat_veloc * cos (lander->heading) + lat_accel_x;
+ lat_veloc_y = lander->lat_veloc * sin (lander->heading) + lat_accel_y;
+- craft->off_x += (lat_veloc_x / TICKS_PER_SECOND) * PIXELS_PER_FOOT;
+- craft->off_z += (lat_veloc_y / TICKS_PER_SECOND) * PIXELS_PER_FOOT;
++ craft->off_x += (lat_veloc_x / fps) * PIXELS_PER_FOOT;
++ craft->off_z += (lat_veloc_y / fps) * PIXELS_PER_FOOT;
+ lander->lat_veloc =
+ sqrt (lat_veloc_x * lat_veloc_x + lat_veloc_y * lat_veloc_y);
+
+diff -ru a-slackware-1995-06-17/globals.c b-gary/globals.c
+--- a-slackware-1995-06-17/globals.c 1995-06-17 21:22:36.000000000 -0400
++++ b-gary/globals.c 2007-03-01 04:08:49.000000000 -0500
+@@ -27,3 +27,4 @@
+ XrmDatabase resources = (XrmDatabase) 0;
+ /* X Resource database */
+ float acceleration = 0.0; /* Acceleration due to gravity */
++float fps; /* Current frames per second */
+diff -ru a-slackware-1995-06-17/globals.h b-gary/globals.h
+--- a-slackware-1995-06-17/globals.h 1995-06-17 21:22:41.000000000 -0400
++++ b-gary/globals.h 2007-03-01 04:08:49.000000000 -0500
+@@ -30,5 +30,6 @@
+ extern int px, py, pz;
+ extern int roll, pitch, yaw;
+ extern float acceleration;
++extern float fps;
+
+-#endif _globals_h_
++#endif /* _globals_h_ */
+diff -ru a-slackware-1995-06-17/initialize.c b-gary/initialize.c
+--- a-slackware-1995-06-17/initialize.c 1995-06-17 21:23:00.000000000 -0400
++++ b-gary/initialize.c 2007-03-01 04:08:49.000000000 -0500
+@@ -61,7 +61,7 @@
+ lander->vert_speed = 0.0;
+ lander->heading = 1.36;
+ lander->lat_veloc = 100.0;
+- lander->fuel = 320.0;
++ lander->fuel = FULL_TANK;
+ lander->alt = craft->off_y / PIXELS_PER_FOOT;
+ }
+
+@@ -293,7 +293,7 @@
+
+ world->min_x = world->min_y = -HALF_WORLD_LENGTH;
+ world->max_x = world->max_y = HALF_WORLD_WIDTH;
+- srandom ((long) time ((int *) 0));
++ srandom ((long) time ((time_t *) 0));
+ for (x = -HALF_WORLD_WIDTH; x < HALF_WORLD_WIDTH;
+ r ^= 1, x += EDGE_LENGTH + (int) x_offset)
+ for (y = r * (int) y_offset - HALF_WORLD_LENGTH; y < HALF_WORLD_LENGTH;
+diff -ru a-slackware-1995-06-17/instrument.c b-gary/instrument.c
+--- a-slackware-1995-06-17/instrument.c 1995-06-17 21:22:39.000000000 -0400
++++ b-gary/instrument.c 2007-03-01 04:08:49.000000000 -0500
+@@ -48,7 +48,7 @@
+ {
+ static int heading_x = 50, heading_y = 15;
+ static int fuel_level = 80, old_x = 290, old_y = 10;
+- int new_fuel_level = (int) fuel / 4;
++ int new_fuel_level = (int) (fuel / (float) FULL_TANK * 80.0);
+ char buf[32];
+
+ /*
+diff -ru a-slackware-1995-06-17/patchlevel.h b-gary/patchlevel.h
+--- a-slackware-1995-06-17/patchlevel.h 1995-06-17 21:23:00.000000000 -0400
++++ b-gary/patchlevel.h 2007-03-01 04:08:49.000000000 -0500
+@@ -1,2 +1,2 @@
+-#define PATCHLEVEL 2
++#define PATCHLEVEL 3
+
+diff -ru a-slackware-1995-06-17/xlander.c b-gary/xlander.c
+--- a-slackware-1995-06-17/xlander.c 1995-06-17 21:22:36.000000000 -0400
++++ b-gary/xlander.c 2007-03-01 04:08:49.000000000 -0500
+@@ -14,6 +14,7 @@
+
+ #include "xlander.h"
+ #include "globals.h"
++#include <sys/time.h>
+
+ /*
+ * A lander
+@@ -68,6 +69,7 @@
+ static DATABASE *world, *craft, *thrust, *shadow;
+ static LANDER lander;
+ int mask;
++struct timeval frame_time, prev_frame_time;
+
+ /******************************************************************************
+ ** DisplayWorld
+@@ -98,7 +100,26 @@
+ XSync (d,False);
+ }
+
+-void main (argc, argv)
++
++void UpdateFrameRate ()
++{
++ unsigned long sec, usec, diff;
++
++ gettimeofday(&frame_time, NULL);
++ sec = frame_time.tv_sec - prev_frame_time.tv_sec;
++ usec = frame_time.tv_usec - prev_frame_time.tv_usec;
++ if(usec < 0) {
++ usec += 1000000;
++ sec--;
++ }
++ diff = sec * 1000000 + usec;
++ fps = 1000000.0 / (float) diff;
++ prev_frame_time.tv_sec = frame_time.tv_sec;
++ prev_frame_time.tv_usec = frame_time.tv_usec;
++}
++
++
++int main (argc, argv)
+ int argc;
+ char *argv[];
+ {
+@@ -113,6 +134,10 @@
+ thrust = DBInitFromData (thrust_data, THRUSTSIZE);
+ shadow = DBInitFromData (shadow_data, SHADOWSIZE);
+
++ gettimeofday(&frame_time, NULL);
++ gettimeofday(&prev_frame_time, NULL);
++ fps = 1000000.0; /* Prevent startup pulse */
++
+ /*
+ * Initial coordinates of the lander...
+ */
+@@ -143,7 +168,9 @@
+ for (;;) {
+ UpdateOrientation (world, craft, &lander);
+ DisplayWorld ();
++ UpdateFrameRate ();
+ (void) sigsetmask (mask);
+ mask = sigblock (sigmask (SIGINT));
+ }
++ return 0;
+ }
+diff -ru a-slackware-1995-06-17/xlander.h b-gary/xlander.h
+--- a-slackware-1995-06-17/xlander.h 1995-06-17 21:23:00.000000000 -0400
++++ b-gary/xlander.h 2007-03-01 04:08:49.000000000 -0500
+@@ -20,6 +20,7 @@
+ #ifndef _xlander_h_
+ #define _xlander_h_
+
++#include <stdlib.h>
+ #include <stdio.h>
+ #include <math.h>
+ #include <signal.h>
+@@ -41,7 +42,6 @@
+ #define HALF_WORLD_LENGTH (WORLD_LENGTH >> 1)
+ #define HALF_WORLD_WIDTH (WORLD_WIDTH >> 1)
+ #define PIXELS_PER_FOOT 6 /* Number of pixels per foot */
+-#define TICKS_PER_SECOND 3 /* Number of frames per second */
+ #define ACCELERATION -5.310 /* Acceleration of gravity (ft/sec^2) */
+ #define RETRO 35.0 /* Acceleration due to retroactive thruster */
+ #define LATERAL_THRUST 5.0 /* Acceleration due to lateral thruster */
+@@ -53,7 +53,7 @@
+ #define LAT_SPEED 30.0 /* Maximum lateral speed without crashing */
+ #define RETRO_BURN 1.6 /* Retroactive thruster fuel consumption */
+ #define LATERAL_BURN 0.4 /* Lateral thruster fuel consumption */
+-#define FULL_TANK 320 /* Full tank of fuel */
++#define FULL_TANK 15 /* Full tank of fuel */
+ #define MAX_VELOC 640.0 /* Maximum velocity */
+
+ #define LANDER_WIDTH 600
+@@ -107,9 +107,6 @@
+
+ DATABASE *DBInit (), *DBInitFromData (), *LoadDataBase ();
+ void DBInsert (), DBFinish (), DBPlot (), SwapBuffers (), exit ();
+-#ifndef _AIX
+-char *malloc ();
+-#endif
+ double atof ();
+ #ifdef sun
+ int printf (), fprintf (), time ();
+@@ -122,4 +119,4 @@
+ #define WorldToRadarX(x) (290 + (((int) (x) + (WORLD_WIDTH >> 1)) / 250))
+ #define WorldToRadarY(y) (90 - (((int) (y) + (WORLD_LENGTH >> 1)) / 250))
+
+-#endif _xlander_h_
++#endif /* _xlander_h_ */