[comp.sources.x] v12i007: acm - X aerial combat simulation, Part02/09

riley@mipsdal.mips.com (Riley Rainey) (03/02/91)

Submitted-by: riley@mipsdal.mips.com (Riley Rainey)
Posting-number: Volume 12, Issue 7
Archive-name: acm/part02

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 2 (of 9)."
# Contents:  acm/V/lib/VClipPoly.c acm/V/lib/VGetEyeSpace.c
#   acm/V/lib/VOpenVp.c acm/V/test/f acm/V/test/f16 acm/V/test/mig23
#   acm/fsim/Imakefile acm/fsim/acm.c acm/fsim/damage.c
#   acm/fsim/eng.xbm acm/fsim/exp.xbm acm/fsim/exp1.xbm acm/fsim/f16
#   acm/fsim/flaps.c acm/fsim/flaps1.xbm acm/fsim/init.c
#   acm/fsim/mig23 acm/fsim/missileCalc.c acm/fsim/panel.c
# Wrapped by riley@mipsdal on Thu Feb 14 10:09:17 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'acm/V/lib/VClipPoly.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/V/lib/VClipPoly.c'\"
else
echo shar: Extracting \"'acm/V/lib/VClipPoly.c'\" \(2128 characters\)
sed "s/^X//" >'acm/V/lib/VClipPoly.c' <<'END_OF_FILE'
X#include "Vlib.h"
X
XVPolygon * _VClipPolygon (poly, clipPlane)
XVPolygon *poly;
XVPoint	 *clipPlane; {
X
X    register	int j, lastj, numPts = 0, clipped = 0;
X    double	d1, d2, a;
X    VPoint	tmpPoint[64];
X    VPolygon	*p;
X
X	if (poly->numVtces > 0) {
X
X	    lastj = poly->numVtces-1;
X	    d1 = VDotProd(&(poly->vertex[poly->numVtces-1]), clipPlane);
X	    numPts = 0;
X
X/*
X *  Examine each vertex and determine if it is inside or outside of the
X *  specified clipping plane.
X */
X
X	    for (j=0; j<poly->numVtces; ++j) {
X
X/* Leading vertex inside? */
X
X		if (d1 > 0.0)
X		    tmpPoint[numPts++] = poly->vertex[lastj];
X
X		d2 = VDotProd(&(poly->vertex[j]), clipPlane);
X
X/* Does the edge straddle the window? If so, add a vertex on the window */
X
X		if (d1 * d2 < 0.0) {
X			clipped = 1;
X			a = d1 / (d1 - d2);
X			tmpPoint[numPts].x = a * poly->vertex[j].x +
X				(1.0 - a) * poly->vertex[lastj].x;
X			tmpPoint[numPts].y = a * poly->vertex[j].y +
X				(1.0 - a) * poly->vertex[lastj].y;
X			tmpPoint[numPts++].z = a * poly->vertex[j].z +
X				(1.0 - a) * poly->vertex[lastj].z;
X		}
X
X		lastj = j;
X		d1 = d2;
X	    }
X	}
X
X/*
X *  If the polygon was completely out of bounds, delete this polygon.
X */
X
X    if (numPts == 0) {
X	p = (VPolygon *) NULL;
X	VDestroyPolygon (poly);
X#ifdef DEBUG
X	fprintf (stderr, "VClipPolygon: polygon outside area of interest\n");
X#endif
X    }
X
X/*
X *  If we did any clipping, return the clipped polygon.
X */
X
X    else if (clipped != 0) {
X	p = VCreatePolygon(numPts, &tmpPoint[0], poly->color);
X#ifdef DEBUG
X	fprintf (stderr, "VClipPolygon: Polygon has been clipped:\n");
X	fprintf (stderr, "Before Clipping:\n");
X	VPrintPolygon (stderr, poly);
X	fprintf (stderr, "\nAfter Clipping:\n\n");
X	VPrintPolygon (stderr, p);
X#endif
X	VDestroyPolygon (poly);
X    }
X    else
X	p = poly;
X
X    return p;
X}
X
XVPolygon * VClipPolygon (poly, clipPoly)
XVPolygon *poly, *clipPoly; {
X
X    int 	i;
X    VPolygon 	*p = poly;
X
X/*
X *  Clip against each clipping plane supplied, one at a time.
X */
X
X    for (i=0; i<clipPoly->numVtces; ++i) {
X
X	if (p == (VPolygon *) NULL)
X	    break;
X
X	p = _VClipPolygon (p, &(clipPoly->vertex[i]));
X
X    }
X
X    return p;
X}
END_OF_FILE
if test 2128 -ne `wc -c <'acm/V/lib/VClipPoly.c'`; then
    echo shar: \"'acm/V/lib/VClipPoly.c'\" unpacked with wrong size!
fi
# end of 'acm/V/lib/VClipPoly.c'
fi
if test -f 'acm/V/lib/VGetEyeSpace.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/V/lib/VGetEyeSpace.c'\"
else
echo shar: Extracting \"'acm/V/lib/VGetEyeSpace.c'\" \(1794 characters\)
sed "s/^X//" >'acm/V/lib/VGetEyeSpace.c' <<'END_OF_FILE'
X#include "Vlib.h"
X#include <math.h>
X
Xvoid VGetEyeSpace (v, EyePt, CntrInt, up)
XViewport *v;
XVPoint	EyePt, CntrInt, up; {
X
X	VMatrix	Mtx, es;
X	VPoint	C1, C2;
X	double	Hypotenuse, h1, CosA, SinA;
X
X/*
X *  Calculate the eye space transformation matrix
X *
X *  First, orient the Z axis towards the center of interest.
X */
X
X	VIdentMatrix (&(v->eyeSpace));
X	v->eyeSpace.m[0][3] = -EyePt.x;
X	v->eyeSpace.m[1][3] = -EyePt.y;
X	v->eyeSpace.m[2][3] = -EyePt.z;
X	VTransform(&CntrInt, &(v->eyeSpace), &C1);
X
X	VIdentMatrix (&Mtx);
X	Hypotenuse = sqrt(C1.x * C1.x + C1.y * C1.y);
X	if (Hypotenuse > 0.0) {
X		CosA = C1.y / Hypotenuse;
X		SinA = C1.x / Hypotenuse;
X		Mtx.m[0][0] = CosA;
X		Mtx.m[1][0] = SinA;
X		Mtx.m[0][1] = -SinA;
X		Mtx.m[1][1] = CosA;
X		es = v->eyeSpace;
X		VMatrixMult(&es, &Mtx, &(v->eyeSpace));
X	}
X
X	VTransform(&CntrInt, &(v->eyeSpace), &C2);
X	VIdentMatrix (&Mtx);
X	Hypotenuse = sqrt(C2.y * C2.y + C2.z * C2.z);
X	if (Hypotenuse > 0.0) {
X		CosA = C2.y / Hypotenuse;
X		SinA = -C2.z / Hypotenuse;
X		Mtx.m[1][1] = CosA;
X		Mtx.m[2][1] = SinA;
X		Mtx.m[1][2] = -SinA;
X		Mtx.m[2][2] = CosA;
X		es = v->eyeSpace;
X		VMatrixMult(&es, &Mtx, &(v->eyeSpace));
X	}
X
X/*
X *  Orient the y axis towards "up". Swap y and z axes.
X */
X
X	VTransform (&up, &(v->eyeSpace), &C2);
X	VIdentMatrix (&Mtx);
X	h1 = sqrt (C2.y * C2.y + C2.z * C2.z);
X	Hypotenuse = sqrt(C2.x * C2.x + h1 * h1);
X	if (Hypotenuse > 0.0) {
X		CosA = h1 / Hypotenuse;
X		SinA = C2.x / Hypotenuse;
X		if (C2.z < 0.0) {
X			CosA = -CosA;
X		}
X		Mtx.m[0][0] = CosA;
X		Mtx.m[2][0] = SinA;
X		Mtx.m[0][2] = -SinA;
X		Mtx.m[2][2] = CosA;
X		es = v->eyeSpace;
X		VMatrixMult(&es, &Mtx, &(v->eyeSpace));
X	}
X
X	VIdentMatrix (&Mtx);
X	Mtx.m[1][1] = 0.0;
X	Mtx.m[2][1] = 1.0;
X	Mtx.m[1][2] = 1.0;
X	Mtx.m[2][2] = 0.0;
X	es = v->eyeSpace;
X	VMatrixMult(&es, &Mtx, &(v->eyeSpace));
X
X}
END_OF_FILE
if test 1794 -ne `wc -c <'acm/V/lib/VGetEyeSpace.c'`; then
    echo shar: \"'acm/V/lib/VGetEyeSpace.c'\" unpacked with wrong size!
fi
# end of 'acm/V/lib/VGetEyeSpace.c'
fi
if test -f 'acm/V/lib/VOpenVp.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/V/lib/VOpenVp.c'\"
else
echo shar: Extracting \"'acm/V/lib/VOpenVp.c'\" \(2391 characters\)
sed "s/^X//" >'acm/V/lib/VOpenVp.c' <<'END_OF_FILE'
X#include "Vlib.h"
X
XViewport *VOpenViewport (dpy, screen, win, unit, dist, scale, width, height)
XDisplay	*dpy;
Xint	screen;
XWindow	win;
Xdouble  unit;
Xdouble  dist;
Xdouble  scale;
Xint	width;
Xint	height; {
X
X	Viewport *v;
X	VPoint	 clip[4];
X	int	 planes;
X
X/*
X *  Allocate space for the Viewport structure
X */
X
X	v = (Viewport *) Vmalloc (sizeof(Viewport));
X
X/*
X * Calculate screen resolution in pixels per unit.
X */
X
X	v->dist = dist;
X	v->units = unit;
X
X        v->xres = ((((double) DisplayWidth(dpy,screen)) * unit * 1000.0) /
X            ((double) DisplayWidthMM(dpy,screen)));
X        v->yres = ((((double) DisplayHeight(dpy,screen)) * unit * 1000.0) /
X            ((double) DisplayHeightMM(dpy,screen)));
X/*
X *  Use that info to set scaling factors.
X */
X
X        v->Scale.x = v->xres * dist * scale;
X        v->Scale.y = v->yres * dist * scale;
X        v->Scale.z = 1.0;
X
X        v->Middl.x = (double) width / 2.0;
X        v->Middl.y = (double) height / 2.0;
X        v->Middl.z = 0.0;
X
X/*
X *  Build the clipping planes for our view into the eye space.
X */
X
X        clip[0].x = - width / v->xres / 2.0 / scale;
X        clip[0].y = - height / v->yres / 2.0 / scale;
X        clip[0].z = dist;
X        clip[1].x = - width / v->xres / 2.0 / scale;
X        clip[1].y = height / v->yres / 2.0 / scale;
X        clip[1].z = dist;
X        clip[2].x = width / v->xres / 2.0 / scale;
X        clip[2].y = height / v->yres / 2.0 / scale;
X        clip[2].z = dist;
X        clip[3].x = width / v->xres / 2.0 / scale;
X        clip[3].y = - height / v->yres / 2.0 / scale;
X        clip[3].z = dist;
X
X        v->clipPoly = VCreatePolygon (4, clip);
X        VGetPlanes (v->clipPoly);
X
X/*
X *  Fill out the rest of the structure.
X */
X
X	v->flags = VPPerspective | VPClip;
X	v->dpy = dpy;
X	v->screen = screen;
X	v->win = win;
X	VIdentMatrix (&v->eyeSpace);
X	v->set = 0;
X	v->width = width;
X	v->height = height;
X
X/*
X *  Is this a monochrome situation?  We also resort to monochrome on
X *  color systems that probably won't have enough color cell space
X *  to support double buffering.  We'll also use pixmaps if the
X *  global variable "usePixmaps" is non-zero.
X */
X
X	planes = DisplayPlanes (dpy, screen);
X	if (planes < PLANES*2+2 || usePixmaps != 0) {
X		v->monoPixmap = XCreatePixmap (dpy, RootWindow(dpy, screen), width, height, planes);
X		v->flags |= VPPixmap;
X		if (planes == 1)
X			v->flags |= VPMono;
X	}
X
X	return v;
X}
END_OF_FILE
if test 2391 -ne `wc -c <'acm/V/lib/VOpenVp.c'`; then
    echo shar: \"'acm/V/lib/VOpenVp.c'\" unpacked with wrong size!
fi
# end of 'acm/V/lib/VOpenVp.c'
fi
if test -f 'acm/V/test/f' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/V/test/f'\"
else
echo shar: Extracting \"'acm/V/test/f'\" \(2026 characters\)
sed "s/^X//" >'acm/V/test/f' <<'END_OF_FILE'
XF-16-fighter
X90 9
X1 -18.165 0 0
X2 -18.165 -1.191 0
X3 -15.187 -2.085 0
X4 -13.698 -2.382 0
X5 -17.272 -2.382 0
X6 -17.272 -3.573 0
X7 -10.923 -3.573 0
X8 -4.169 -3.573 0
X9 -4.169 -4.765 0
X10 5.598 -4.765 0
X11 18.463 -2.144 0
X12 18.939 -1.787 0
X13 22.274 -1.489 0
X14 24.895 -1.191 0
X15 27.992 0 0
X16 -6.551 -3.573 0
X17 -6.551 -15.485 0
X18 0.357 -15.485 0
X19 0.357 -15.187 0
X20 -2.978 -15.008 0
X21 5.598 -4.765 0
X22 -4.169 -4.765 0
X23 -4.169 -3.573 0
X24 -17.272 -3.573 0
X25 -17.272 -8.934 0.893
X26 -15.187 -8.934 0.893
X27 -10.923 -3.573 0
X28 27.992 0 0
X29 24.895 1.191 0
X30 22.274 1.489 0
X31 18.939 1.787 0
X32 18.463 2.144 0
X33 5.598 4.765 0
X34 -4.169 4.765 0
X35 -4.169 3.573 0
X36 -10.923 3.573 0
X37 -17.272 3.573 0
X38 -17.272 2.382 0
X39 -13.698 2.382 0
X40 -15.187 2.085 0
X41 -18.165 1.191 0
X42 -18.165 0 0
X43 5.598 4.765 0
X44 -2.978 15.008 0
X45 0.357 15.187 0
X46 0.357 15.485 0
X47 -6.551 15.485 0
X48 -6.551 3.573 0
X49 -4.169 3.573 0
X50 -4.169 4.765 0
X51 -10.923 3.573 0
X52 -15.187 8.934 0.893
X53 -17.272 8.934 0.893
X54 -17.272 3.573 0
X55 27.992 0 0
X56 23.525 0 -1.191
X57 17.272 0 -2.382
X58 15.783 0 -3.812
X59 13.996 0 -4.169
X60 11.316 0 -4.05
X61 8.338 0 -3.335
X62 1.787 0 -2.382
X63 -4.169 0 -2.382
X64 -13.936 0 -1.906
X65 -15.128 0 -1.906
X66 -15.187 0 -1.787
X67 -18.165 0 -1.191
X68 -18.165 0 0
X69 -4.169 0 -2.382
X70 -10.125 0 -4.05
X71 -15.783 0 -10.482
X72 -19.654 0 -10.482
X73 -19.654 0 -9.529
X74 -19.654 0 -9.529
X75 -16.378 0 -3.573
X76 -16.378 0 -2.144
X77 -14.889 0 -2.382
X78 -13.936 0 -2.382
X79 -13.936 0 -1.906
X80 -18.165 0 0
X81 -18.165 0 1.191
X82 -15.187 0 2.085
X83 -13.698 0 2.263
X84 -2.68 0 2.382
X85 8.04 0 2.382
X86 12.507 0 2.263
X87 12.507 0 0.596
X88 19.952 0 0.596
X89 23.525 0 0.476
X90 27.992 0 0
Xgray 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Xgray 8 16 17 18 19 20 21 22 23
Xgray 4 24 25 26 27
Xgray 15 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Xgray 8 43 44 45 46 47 48 49 50
Xgray 4 51 52 53 54
Xgray 14 55 56 57 58 59 60 61 62 63 64 65 66 67 68
Xgray 11 69 70 71 72 73 74 75 76 77 78 79
Xgray 11 80 81 82 83 84 85 86 87 88 89 90
END_OF_FILE
if test 2026 -ne `wc -c <'acm/V/test/f'`; then
    echo shar: \"'acm/V/test/f'\" unpacked with wrong size!
fi
# end of 'acm/V/test/f'
fi
if test -f 'acm/V/test/f16' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/V/test/f16'\"
else
echo shar: Extracting \"'acm/V/test/f16'\" \(3135 characters\)
sed "s/^X//" >'acm/V/test/f16' <<'END_OF_FILE'
XF-16-fighter
X130 12
X1 -18.165 0 0
X2 -18.165 -1.191 0
X3 -15.187 -2.085 0
X4 -13.698 -2.382 0
X5 -17.272 -2.382 0
X6 -17.272 -3.573 0
X7 -10.923 -3.573 0
X8 -4.169 -3.573 0
X9 -4.169 -4.765 0
X10 5.598 -4.765 0
X11 18.463 -2.144 0
X12 18.939 -1.787 0
X13 22.274 -1.489 0
X14 24.895 -1.191 0
X15 27.992 0 0
X16 -6.551 -3.573 0
X17 -6.551 -15.485 0
X18 0.357 -15.485 0
X19 0.357 -15.187 0
X20 -2.978 -15.008 0
X21 5.598 -4.765 0
X22 -4.169 -4.765 0
X23 -4.169 -3.573 0
X24 -17.272 -3.573 0
X25 -17.272 -8.934 0.893
X26 -15.187 -8.934 0.893
X27 -10.923 -3.573 0
X28 27.992 0 0
X29 24.895 1.191 0
X30 22.274 1.489 0
X31 18.939 1.787 0
X32 18.463 2.144 0
X33 5.598 4.765 0
X34 -4.169 4.765 0
X35 -4.169 3.573 0
X36 -10.923 3.573 0
X37 -17.272 3.573 0
X38 -17.272 2.382 0
X39 -13.698 2.382 0
X40 -15.187 2.085 0
X41 -18.165 1.191 0
X42 -18.165 0 0
X43 5.598 4.765 0
X44 -2.978 15.008 0
X45 0.357 15.187 0
X46 0.357 15.485 0
X47 -6.551 15.485 0
X48 -6.551 3.573 0
X49 -4.169 3.573 0
X50 -4.169 4.765 0
X51 -10.923 3.573 0
X52 -15.187 8.934 0.893
X53 -17.272 8.934 0.893
X54 -17.272 3.573 0
X55 27.992 0 0
X56 23.525 0 -1.191
X57 17.272 0 -2.382
X58 15.783 0 -3.812
X59 13.996 0 -4.169
X60 11.316 0 -4.05
X61 8.338 0 -3.335
X62 1.787 0 -2.382
X63 -4.169 0 -2.382
X64 -13.936 0 -1.906
X65 -15.128 0 -1.906
X66 -15.187 0 -1.787
X67 -18.165 0 -1.191
X68 -18.165 0 0
X69 -4.169 0 -2.382
X70 -10.125 0 -4.05
X71 -15.783 0 -10.482
X72 -19.654 0 -10.482
X73 -19.654 0 -9.529
X74 -19.654 0 -9.529
X75 -16.378 0 -3.573
X76 -16.378 0 -2.144
X77 -14.889 0 -2.382
X78 -13.936 0 -2.382
X79 -13.936 0 -1.906
X80 -18.165 0 0
X81 -18.165 0 1.191
X82 -15.187 0 2.085
X83 -13.698 0 2.263
X84 -2.68 0 2.382
X85 8.04 0 2.382
X86 12.507 0 2.263
X87 12.507 0 0.596
X88 19.952 0 0.596
X89 23.525 0 0.476
X90 27.992 0 0
X91 -3.551 0 -2.382
X92 -3.551 -3.871 -0.10
X93 -3.551 -15.485 0
X94 -3.551 -15.485 0.1065
X95 -3.551 -3.871 0.142
X96 -3.551 -2.58 0.2556
X97 -3.551 -2.387 1.818
X98 -3.551 -2.102 2.015
X99 -3.551 -1.03 2.251
X100 -3.551 0 2.282
X101 -3.551 1.03 2.251
X102 -3.551 2.102 2.015
X103 -3.551 2.387 1.818
X104 -3.551 2.58 0.2556
X105 -3.551 3.871 0.142
X106 -3.551 15.485 0.1065
X107 -3.551 15.485 0
X108 -3.551 3.871 -0.10
X109 13.996 0 -4.169
X110 13.996 -0.8932 -3.692
X111 13.996 -1.191 -2.978
X112 13.996 -1.251 -2.502
X113 13.996 -1.787 -1.311
X114 13.996 -3.054 0
X115 13.996 -1.583 0.3568
X116 13.996 0 0.596
X117 13.996 1.583 0.3568
X118 13.996 3.054 0
X119 13.996 1.787 -1.311
X120 13.996 1.251 -2.502
X121 13.996 1.191 -2.978
X122 13.996 0.8932 -3.692
X123 -18.165 1.191 0
X124 -18.165 0.842 0.842
X125 -18.165 0 1.191
X126 -18.165 -0.842 0.842
X127 -18.165 -1.191 0
X128 -18.165 -0.842 -0.842
X129 -18.165 0 -1.191
X130 -18.165 0.842 -0.842
Xgray33 14 109 110 111 112 113 114 115 116 117 118 119 120 121 122
Xgray33 18 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
Xgray33 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Xgray33 8 16 17 18 19 20 21 22 23
Xgray33 4 24 25 26 27
Xgray33 15 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Xgray33 8 43 44 45 46 47 48 49 50
Xgray33 4 51 52 53 54
Xgray33 14 55 56 57 58 59 60 61 62 63 64 65 66 67 68
Xgray33 11 69 70 71 72 73 74 75 76 77 78 79
Xgray33 11 80 81 82 83 84 85 86 87 88 89 90
Xgray33 8 123 124 125 126 127 128 129 130
END_OF_FILE
if test 3135 -ne `wc -c <'acm/V/test/f16'`; then
    echo shar: \"'acm/V/test/f16'\" unpacked with wrong size!
fi
# end of 'acm/V/test/f16'
fi
if test -f 'acm/V/test/mig23' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/V/test/mig23'\"
else
echo shar: Extracting \"'acm/V/test/mig23'\" \(2494 characters\)
sed "s/^X//" >'acm/V/test/mig23' <<'END_OF_FILE'
Xmig-23-wings-swept
X88 10
X1 36.5891 0 0
X2 34.4368 0.86092 0
X3 30.9931 1.29138 0
X4 27.119 1.72184 0
X5 20.6621 1.72184 0
X6 18.9402 2.1523 0
X7 14.2052 3.01322 0
X8 -3.44368 2.58276 0
X9 -9.03966 2.1523 0
X10 -16.7879 0.86092 0
X11 -18.0793 0.43046 0
X12 -18.0793 0 0
X13 36.5891 0 0
X14 34.4368 -0.86092 0
X15 30.9931 -1.29138 0
X16 27.119 -1.72184 0
X17 20.6621 -1.72184 0
X18 18.9402 -2.1523 0
X19 14.2052 -3.01322 0
X20 -3.44368 -2.58276 0
X21 -9.03966 -2.1523 0
X22 -16.7879 -0.86092 0
X23 -18.0793 -0.43046 0
X24 -18.0793 0 0
X25 14.2052 3.01322 -3.01322
X26 4.73506 7.31782 -3.01322
X27 6.02644 8.6092 -3.01322
X28 -11.192 13.7747 -3.01322
X29 -12.0529 13.7747 -3.01322
X30 -14.2052 11.192 -3.01322
X31 -14.2052 10.7615 -3.01322
X32 -3.44368 2.58276 -3.01322
X33 14.2052 -3.01322 -3.01322
X34 4.73506 -7.31782 -3.01322
X35 6.02644 -8.6092 -3.01322
X36 -11.192 -13.7747 -3.01322
X37 -12.0529 -13.7747 -3.01322
X38 -14.2052 -11.192 -3.01322
X39 -14.2052 -10.7615 -3.01322
X40 -3.44368 -2.58276 -3.01322
X41 -18.9402 3.01322 -1.72184
X42 -20.2316 7.31782 -1.72184
X43 -18.5098 8.6092 -1.72184
X44 -9.03966 2.1523 -1.72184
X45 -16.7879 0.86092 -1.72184
X46 -18.9402 -3.01322 -1.72184
X47 -20.2316 -7.31782 -1.72184
X48 -18.5098 -8.6092 -1.72184
X49 -9.03966 -2.1523 -1.72184
X50 -16.7879 -0.86092 -1.72184
X51 36.5891 0 0
X52 33.1454 0 -1.29138
X53 30.1322 0 -2.1523
X54 25.8276 0 -2.58276
X55 22.3839 0 -3.87414
X56 18.0793 0 -4.3046
X57 9.47012 0 -3.87414
X58 -0.860918 0 -3.44368
X59 -8.6092 0 -6.02644
X60 -16.3575 0 -10.331
X61 -18.9402 0 -9.03966
X62 -18.0793 0 -3.87414
X63 -19.8012 0 -3.44368
X64 -17.2184 0 -1.72184
X65 -18.0793 0 -1.72184
X66 -18.0793 0 1.29138
X67 -15.4966 0 1.72184
X68 -6.4569 0 2.1523
X69 10.331 0 2.1523
X70 20.2316 0 1.72184
X71 28.8408 0 1.29138
X72 33.1454 0 0.86092
X73 -15.4966 0 1.72184
X74 -15.4966 0 4.3046
X75 -13.3443 0 5.16552
X76 -6.4569 0 2.1523
X77 20.6621 1.72184 -3.01322
X78 18.9402 2.1523 -3.01322
X79 14.2052 3.01322 -3.01322
X80 -3.44368 2.58276 -3.01322
X81 -3.44368 -2.58276 -3.01322
X82 14.2052 -3.01322 -3.01322
X83 18.9402 -2.1523 -3.01322
X84 20.6621 -1.72184 -3.01322
X85 -3.44368 2.58276 -3.01322
X86 -16.7879 0.86092 -1.72184
X87 -16.7879 -0.86092 -1.72184
X88 -3.44368 -2.58276 -3.01322
Xgray 12 1 2 3 4 5 6 7 8 9 10 11 12
Xgray 12 13 14 15 16 17 18 19 20 21 22 23 24
Xgray 8 25 26 27 28 29 30 31 32
Xgray 8 33 34 35 36 37 38 39 40
Xgray 5 41 42 43 44 45
Xgray 5 46 47 48 49 50
Xgray 22 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
Xgray 4 73 74 75 76
Xgray 8 77 78 79 80 81 82 83 84
Xgray 4 85 86 87 88
END_OF_FILE
if test 2494 -ne `wc -c <'acm/V/test/mig23'`; then
    echo shar: \"'acm/V/test/mig23'\" unpacked with wrong size!
fi
# end of 'acm/V/test/mig23'
fi
if test -f 'acm/fsim/Imakefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/Imakefile'\"
else
echo shar: Extracting \"'acm/fsim/Imakefile'\" \(2147 characters\)
sed "s/^X//" >'acm/fsim/Imakefile' <<'END_OF_FILE'
X/*
X * mips RISC/os should add "-systype bsd43" to CDEBUGFLAGS.
X *
X * dec 5000 series systems should add -Ddec to CDEBUGFLAGS.  Once
X * again, I don't know the symbol, so I can't do it right here.
X *
X * System V systems needs -DSYSV, but I think that's done
X * automatically by the Imake configuration files for System V-like
X * systems, so you probably shouldn't have to worry about it.
X */
X
X#include "../acm.def"
X
X/*
X *  For Mips RISC/OS:
X *  My IMAKEINCLUDE environment variable is set to "-I. -Dmips -SYSTYPE_BSD"
X */
X#ifdef MipsArchitecture
XCDEBUGFLAGS = -systype bsd43 $(STD_INCLUDES) -O
XXLIB = -lX11
X#endif
X
X#if HasVoidSignalReturn == YES
XDEFINES=	-DSIGVOID
X#endif
X
XSRCS1= 		server.c pm.c flaps.c droneCalc.c init.c aim9m.c\
X		m61a1.c weapon.c newPlayer.c newPlane.c missile.c\
X		missileCalc.c update.c doEvents.c getStick.c\
X		damage.c panel.c doViews.c\
X		doRadar.c placeCraft.c transpose.c doScale.c
XOBJS1=		server.o pm.o flaps.o droneCalc.o init.o aim9m.o\
X		m61a1.o weapon.o newPlayer.o newPlane.o missile.o\
X		missileCalc.o update.o doEvents.o getStick.o\
X		damage.o panel.o doViews.o\
X		doRadar.o placeCraft.o transpose.o doScale.o
XDEPLIBS1=	../V/lib/libV.a
X
XSRCS2=		acm.c
XOBJS2=		acm.o
XDEPLIBS2=
X
XSRCS3=		V2tgif.c
XOBJS3=		V2tgif.o
XDEPLIBS3=	../V/lib/libV.a
X
XPROGRAMS=		acm acms v2tgif
XSTD_INCLUDES=		-I../V/lib
X#ifdef notdef
XLOCAL_LIBRARIES=	-L../V/lib -lV -lm $(XLIB)
X#endif
XLOCAL_LIBRARIES=	../V/lib/libV.a
XSYS_LIBRARIES=		-lm $(XLIB)
X
XOBJS= $(OBJS1) $(OBJS2) $(OBJS3)
XSRCS= $(SRCS1) $(SRCS2) $(SRCS3)
X
XAllTarget($(PROGRAMS))
X
XNormalProgramTarget(acms,$(OBJS1),$(DEPLIBS1),$(LOCAL_LIBRARIES),)
XSaberProgramTarget(acms,$(SRCS1),$(OBJS1),$(LOCAL_LIBRARIES),)
X
XInstallProgram(acms,$(BINDIR))
X
XNormalProgramTarget(acm,$(OBJS2),$(DEPLIBS2),$(LOCAL_LIBRARIES),)
XSaberProgramTarget(acm,$(SRCS2),$(OBJS2),$(LOCAL_LIBRARIES),)
X
XInstallProgram(acm,$(BINDIR))
XInstallManPage(acm,$(MANDIR))
X
XNormalProgramTarget(v2tgif,$(OBJS3),$(DEPLIBS3),$(LOCAL_LIBRARIES),)
XSaberProgramTarget(v2tgif,$(SRCS3),$(OBJS3),$(LOCAL_LIBRARIES),)
X
XDependTarget()
XLintTarget()
X
Xinstall:: install.man
X
Xtar:
X	tar cv acm acms f16 mig23 aim-9 rwy rwy2 tower mtn bullet
END_OF_FILE
if test 2147 -ne `wc -c <'acm/fsim/Imakefile'`; then
    echo shar: \"'acm/fsim/Imakefile'\" unpacked with wrong size!
fi
# end of 'acm/fsim/Imakefile'
fi
if test -f 'acm/fsim/acm.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/acm.c'\"
else
echo shar: Extracting \"'acm/fsim/acm.c'\" \(2789 characters\)
sed "s/^X//" >'acm/fsim/acm.c' <<'END_OF_FILE'
X/*
X *	xflight : an aerial combat simulator for X
X *
X *	Written by Riley Rainey,  riley@mips.com
X *
X *	Permission to use, copy, modify and distribute (without charge) this
X *	software, documentation, images, etc. is granted, provided that this 
X *	comment and the author's name is retained.
X *
X */
X 
X#include "manifest.h"
X#include <sys/types.h>
X#include <stdio.h>
X#include <pwd.h>
X#include <signal.h>
X#include <sys/socket.h>
X#include <netinet/in.h>
X#include <netdb.h>
X#include <setjmp.h>
X
Xextern char *getenv ();
Xextern struct servent *getservent();
X
Xjmp_buf	dead;
X
Xdone () {
X	longjmp (dead);
X}
X
Xmain (argc, argv)
Xint	argc;
Xchar	*argv[]; {
X
X	char	*display;
X	char	*host;
X	char	myhost[64];
X	char	args[128];
X	int	s, n = 1;
X	struct passwd	*pwent, *getpwuid();
X	struct sockaddr_in sin;
X	struct hostent	*h = (struct hostent *) NULL;
X
X	if ((host = getenv("ACMSERVER")) == NULL)
X		if (argc >= 2) {
X			host = argv[1];
X			n = 2;
X		}
X		else {
X			fprintf (stderr, "usage: %s server-hostname\n", argv[0]);
X			exit (1);
X		}
X
X	if ((pwent = getpwuid(getuid())) == NULL) {
X		fprintf (stderr, "Yow!\n");
X		exit (1);
X	}
X
X	if ((display = getenv("DISPLAY")) == NULL) {
X		fprintf (stderr, "Excuse me, but you have no DISPLAY.\n\
XHow do you use X, anyway?\n");
X		exit (1);
X	}
X
X/*
X *  Sometimes we end up with a DISPLAY value that won't jive on the
X *  network (e.g. ":0.0") -- fix these cases.
X */
X
X	if (*display == ':') {
X		gethostname (myhost, sizeof(myhost));
X		strcat (myhost, display);
X		display = myhost;
X	}
X	else if (strcmp (display, "unix:0.0") == 0 ||
X		strcmp (display, "unix:0") == 0) {
X		gethostname (myhost, sizeof(myhost));
X		strcat (myhost, ":0.0");
X		display = myhost;
X	}
X
X	if ((sin.sin_addr.s_addr = inet_addr (host)) != -1) {
X		sin.sin_family = AF_INET;
X	}
X	else if ((h = gethostbyname (host)) != 0) {
X		sin.sin_family = h->h_addrtype;
X		bcopy (h->h_addr, &sin.sin_addr, h->h_length);
X	}
X	else {
X		fprintf (stderr, "Unknown host \"%s\"\n", host);
X		exit (1);
X	}
X
X	sin.sin_port = htons(ACM_PORT);
X
X	signal (SIGPIPE, done);
X
X	if ((s = socket (AF_INET, SOCK_STREAM, 0)) < 0) {
X		perror ("can't get a socket");
X		exit (1);
X	}
X
X	if (connect (s, (struct sockaddr *) &sin, sizeof (sin)) < 0) {
X		perror ("can't connect to server");
X		close (s);
X		exit (1);
X	}
X
X	if (argv[n] != (char *) NULL) 
X		strcpy (args, argv[n++]);
X	else
X		strcpy (args, "");
X
X	for (; argv[n] != (char *) NULL; ++n) {
X		strcat (args, "|");
X		strcat (args, argv[n]);
X	}
X
X	if (setjmp (dead) == 0)
X		handshake (s, display, pwent->pw_name, args);
X
X	exit (0);
X}
X
Xhandshake (s, dpy, name, args)
Xint	s;
Xchar	*dpy, *name, *args; {
X
X	char	info[128];
X	int	n;
X
X	sprintf (info, "%s %s %s\n", dpy, name, args);
X	write (s, info, strlen (info));
X	while ((n = read (s, info, sizeof (info))) > 0)
X		write (fileno (stdout), info, n);
X
X	return 0;
X}
END_OF_FILE
if test 2789 -ne `wc -c <'acm/fsim/acm.c'`; then
    echo shar: \"'acm/fsim/acm.c'\" unpacked with wrong size!
fi
# end of 'acm/fsim/acm.c'
fi
if test -f 'acm/fsim/damage.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/damage.c'\"
else
echo shar: Extracting \"'acm/fsim/damage.c'\" \(2826 characters\)
sed "s/^X//" >'acm/fsim/damage.c' <<'END_OF_FILE'
X/*
X *	xflight : an aerial combat simulator for X
X *
X *	Written by Riley Rainey,  riley@mips.com
X *
X *	Permission to use, copy, modify and distribute (without charge) this
X *	software, documentation, images, etc. is granted, provided that this 
X *	comment and the author's name is retained.
X *
X */
X
X#include "pm.h"
X#include "damage.h"
X
Xextern long random();
X
Xdouble	frandom () {
X
X	return (double) (random() & 0xffff) / 65536.0;
X}
X
X/*
X *  Select a subsystem to receive damage.
X */
X
Xlong	selectSystem () {
X
X	double	r;
X	long	i;
X
X	if ((r = frandom()) < 0.25)
X		i = SYS_ENGINE1;
X	else if (r < 0.35)
X		i = SYS_RADAR;
X	else if (r < 0.40)
X		i = SYS_TEWS;
X	else if (r < 0.45)
X		i = SYS_HYD1;
X	else if (r < 0.50)
X		i = SYS_HYD2;
X	else if (r < 0.55)
X		i = SYS_GEN1;
X	else if (r < 0.60)
X		i = SYS_GEN2;
X	else if (r < 0.65)
X		i = SYS_FLAPS;
X	else if (r < 0.70)
X		i = SYS_SPEEDBRAKE;
X	else if (r < 0.80)
X		i = SYS_FUEL;
X	else if (r < 0.95)
X		i = SYS_HUD;
X	return i;
X}
X
Xvoid	damageSystem (c, sys)
Xcraft	*c;
Xlong	sys; {
X
X	if ((c->damageBits & sys) || (sys == SYS_FUEL)) {
X
X		c->damageBits &= ~ sys;
X
X		switch (sys) {
X
X		case SYS_ENGINE1:
X			c->throttle = 0;
X			break;
X
X		case SYS_RADAR:
X			c->curRadarTarget = -1;
X			break;
X
X/*
X *  Fuel leaks can be up to 40 pounds per second here.
X */
X
X		case SYS_FUEL:
X			c->leakRate += (frandom() + frandom()) * 20.0;
X			break;
X		
X		case SYS_HYD1:
X		case SYS_HYD2:
X			if ((c->damageBits & (SYS_HYD1 | SYS_HYD2)) == 0) {
X				c->damageBits &= ~ SYS_SPEEDBRAKE;
X				c->damageBits &= ~ SYS_FLAPS;
X			}
X			break;
X
X		case SYS_GEN1:
X		case SYS_GEN2:
X			if ((c->damageBits & (SYS_GEN1 | SYS_GEN2)) == 0) {
X				c->damageBits &= ~
X				    (SYS_HUD | SYS_RADAR | SYS_TEWS);
X				break;
X			}
X		}
X
X	}
X}
X
X/*
X * absorbDamage :  craft c is hit with d points of damage.
X */
X
Xint	absorbDamage (c, d)
Xcraft	*c;
Xint	d; {
X
X	double	n;
X	register long	sys;
X
X	for (; d > 0; --d) {
X
X/*
X *  For each damage point absorbed, there is a 30 percent chance that
X *  it will be absorbed by some subsystem other than the actual
X *  airframe.
X */
X
X		if (frandom() <= 0.30) {
X			sys = selectSystem();
X			damageSystem (c, sys);
X		}
X
X/*
X *  For each point absorbed by the airframe, there is a 20% chance that
X *  it'll be absorbed by the wing and induce a rolling moment or a 10 
X *  percent chance that it will hit a horizontal stabilizer and induce
X *  a pitching and rolling moment.
X */
X
X		else {
X
X		if ((n = frandom()) <= 0.20) {
X			c->damageCL += (frandom() - 0.5) * 0.20;
X		}
X		else if (n <= 0.30) {
X			c->damageCL += (frandom() - 0.5) * 0.10;
X			c->damageCM += (frandom() - 0.5) * 0.20;
X		}
X
X		if (--(c->structurePts) <= 0)
X			return 0;
X		}
X
X	}
X
X	return 1;
X
X}
X
Xvoid	initDamage (c)
Xcraft	*c; {
X
X	c->damageBits = c->cinfo->damageBits;
X	c->structurePts = c->cinfo->structurePts;
X	c->leakRate = 0.0;
X	c->damageCL = 0.0;
X	c->damageCM = 0.0;
X}
END_OF_FILE
if test 2826 -ne `wc -c <'acm/fsim/damage.c'`; then
    echo shar: \"'acm/fsim/damage.c'\" unpacked with wrong size!
fi
# end of 'acm/fsim/damage.c'
fi
if test -f 'acm/fsim/eng.xbm' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/eng.xbm'\"
else
echo shar: Extracting \"'acm/fsim/eng.xbm'\" \(3314 characters\)
sed "s/^X//" >'acm/fsim/eng.xbm' <<'END_OF_FILE'
X#define eng_width 64
X#define eng_height 64
X#define eng_x_hot 31
X#define eng_y_hot 31
Xstatic char eng_bits[] = {
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
X   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00,
X   0x00, 0x00, 0xf8, 0x03, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x36, 0xc0,
X   0x01, 0x36, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xc0, 0x01, 0x58, 0x00, 0x00,
X   0x00, 0xc0, 0x03, 0x80, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x80,
X   0x00, 0x80, 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
X   0x00, 0x14, 0x00, 0xc0, 0x00, 0x00, 0x14, 0x00, 0x00, 0x0a, 0x00, 0x20,
X   0x01, 0x00, 0x28, 0x00, 0x00, 0x05, 0x00, 0x20, 0x01, 0x00, 0x52, 0x00,
X   0x00, 0x03, 0x00, 0x20, 0x01, 0x00, 0x66, 0x00, 0x80, 0x01, 0x00, 0x20,
X   0x01, 0x00, 0xce, 0x00, 0xc0, 0x00, 0x00, 0x20, 0x01, 0x00, 0x83, 0x01,
X   0xc0, 0x00, 0x00, 0x20, 0x01, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0xc0,
X   0x00, 0x00, 0x00, 0x03, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
X   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x0a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
X   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
X   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
X   0x06, 0x62, 0x0c, 0x00, 0x00, 0x80, 0x31, 0x30, 0x06, 0x93, 0x12, 0x00,
X   0x00, 0x40, 0x48, 0x30, 0x06, 0x92, 0x12, 0x00, 0x00, 0x40, 0x48, 0x30,
X   0x76, 0x92, 0x12, 0x00, 0x00, 0xc0, 0x49, 0x37, 0x56, 0x92, 0x12, 0x80,
X   0x00, 0x40, 0x4a, 0x35, 0x76, 0x92, 0x12, 0x00, 0x00, 0x40, 0x4a, 0x37,
X   0x06, 0x92, 0x12, 0x00, 0x00, 0x40, 0x4a, 0x30, 0x06, 0x67, 0x0c, 0x00,
X   0x00, 0x80, 0x31, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
X   0x06, 0x00, 0xc0, 0x39, 0x91, 0x05, 0x00, 0x30, 0x0c, 0x00, 0x40, 0x4a,
X   0x91, 0x04, 0x00, 0x18, 0x0c, 0x00, 0x40, 0x4a, 0x1b, 0x02, 0x00, 0x18,
X   0x0c, 0x00, 0x40, 0x4a, 0x15, 0x02, 0x00, 0x18, 0x0c, 0x00, 0xc0, 0x39,
X   0x15, 0x01, 0x00, 0x18, 0x18, 0x00, 0x40, 0x09, 0x91, 0x00, 0x00, 0x0c,
X   0x18, 0x00, 0x40, 0x0a, 0x91, 0x06, 0x00, 0x0c, 0x28, 0x00, 0x40, 0x0a,
X   0x11, 0x06, 0x00, 0x0a, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
X   0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x60, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x30, 0x06, 0x00, 0x80, 0x01,
X   0xc0, 0x40, 0x00, 0x48, 0x09, 0x00, 0x81, 0x01, 0x80, 0x79, 0x00, 0x48,
X   0x09, 0x00, 0xcf, 0x00, 0x00, 0x33, 0x00, 0x30, 0x09, 0x00, 0x66, 0x00,
X   0x00, 0x25, 0x00, 0x48, 0x09, 0x00, 0x52, 0x00, 0x00, 0x0a, 0x00, 0x48,
X   0x09, 0x00, 0x28, 0x00, 0x00, 0x14, 0x00, 0x48, 0x09, 0x00, 0x14, 0x00,
X   0x00, 0x38, 0x00, 0x30, 0x06, 0x00, 0x0e, 0x00, 0x00, 0xe0, 0x00, 0x80,
X   0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x80, 0x00, 0xe0, 0x01, 0x00,
X   0x00, 0x00, 0x0d, 0x40, 0x01, 0x58, 0x00, 0x00, 0x00, 0x00, 0x36, 0xc0,
X   0x01, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xe0, 0x0f, 0x00, 0x00,
X   0x00, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
X   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
END_OF_FILE
if test 3314 -ne `wc -c <'acm/fsim/eng.xbm'`; then
    echo shar: \"'acm/fsim/eng.xbm'\" unpacked with wrong size!
fi
# end of 'acm/fsim/eng.xbm'
fi
if test -f 'acm/fsim/exp.xbm' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/exp.xbm'\"
else
echo shar: Extracting \"'acm/fsim/exp.xbm'\" \(3272 characters\)
sed "s/^X//" >'acm/fsim/exp.xbm' <<'END_OF_FILE'
X#define exp_width 64
X#define exp_height 64
Xstatic char exp_bits[] = {
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
X   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc2, 0x61, 0x00, 0x03,
X   0x00, 0x00, 0x00, 0x20, 0xc2, 0x21, 0x80, 0x03, 0x00, 0x00, 0x1c, 0x40,
X   0xc0, 0x21, 0x80, 0x03, 0x00, 0x80, 0x30, 0x40, 0x80, 0x38, 0x80, 0x01,
X   0x00, 0x80, 0x09, 0xa3, 0x82, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x11, 0x02,
X   0xc2, 0x22, 0x40, 0x00, 0x00, 0x00, 0x86, 0x84, 0xc4, 0x00, 0x40, 0x00,
X   0x00, 0x00, 0x80, 0x14, 0xc6, 0x02, 0x50, 0x00, 0xc0, 0x00, 0x0c, 0x8a,
X   0xe9, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xa8, 0x18, 0xd3, 0x75, 0x02, 0x08,
X   0x80, 0x01, 0xe0, 0x04, 0x3e, 0x03, 0x01, 0x04, 0x00, 0x05, 0x10, 0x92,
X   0x8a, 0x0e, 0x06, 0x07, 0x00, 0x5c, 0x81, 0xf1, 0xef, 0x1b, 0x00, 0x02,
X   0x00, 0x18, 0x80, 0x0c, 0xcf, 0x0b, 0xa5, 0x00, 0x00, 0x60, 0x88, 0x17,
X   0xef, 0x07, 0x87, 0x00, 0x00, 0xa0, 0x21, 0x79, 0xc7, 0x55, 0x23, 0x00,
X   0x00, 0x90, 0x40, 0x3f, 0xeb, 0x1e, 0x07, 0x00, 0x00, 0x00, 0x40, 0x9f,
X   0xef, 0xbc, 0x17, 0x00, 0x00, 0xa4, 0x05, 0x9e, 0x2f, 0x71, 0x06, 0x00,
X   0x00, 0x08, 0x00, 0x6f, 0x5f, 0xbc, 0x02, 0x00, 0x00, 0x40, 0xf9, 0x3c,
X   0x01, 0xbf, 0x03, 0x00, 0x00, 0x00, 0xac, 0xb3, 0x5f, 0xfd, 0x03, 0x00,
X   0x00, 0x00, 0xfc, 0xbb, 0x4f, 0xa7, 0x0b, 0x10, 0x00, 0x00, 0xd7, 0xad,
X   0xc2, 0x9a, 0x0d, 0x04, 0x00, 0x40, 0xfb, 0xc9, 0x98, 0x79, 0x11, 0x19,
X   0x00, 0xc0, 0xfa, 0x8d, 0x18, 0xcb, 0x3b, 0x02, 0x00, 0x80, 0xdd, 0x0d,
X   0x88, 0x0b, 0x5f, 0x08, 0x00, 0xc0, 0x2d, 0x39, 0x60, 0x1b, 0xfa, 0x00,
X   0x00, 0xd0, 0x7e, 0x97, 0xc1, 0x73, 0x58, 0x03, 0x00, 0x6b, 0xb1, 0x0e,
X   0x01, 0xfb, 0x1c, 0x02, 0x00, 0x80, 0xdf, 0x15, 0x81, 0x54, 0xec, 0x02,
X   0x00, 0x00, 0xfe, 0xff, 0xa2, 0xd9, 0x3c, 0x00, 0x00, 0x80, 0x7f, 0xde,
X   0xc2, 0xac, 0xb4, 0x02, 0x00, 0x00, 0x33, 0xde, 0xec, 0x0b, 0x3e, 0x02,
X   0x00, 0xc0, 0x6c, 0x17, 0xe1, 0xe7, 0xbc, 0x03, 0x00, 0x50, 0x76, 0xfd,
X   0xf7, 0xfe, 0xff, 0x00, 0x00, 0x1c, 0x5d, 0x9c, 0xfa, 0xba, 0xe9, 0x00,
X   0x00, 0x05, 0x63, 0xcc, 0x0e, 0xec, 0x99, 0x00, 0x00, 0x46, 0x82, 0x94,
X   0x80, 0xff, 0x3a, 0x00, 0x80, 0x03, 0xe3, 0xd7, 0x89, 0xcb, 0x27, 0x00,
X   0x00, 0x80, 0x21, 0x8f, 0x84, 0xc9, 0x3f, 0x00, 0x00, 0x00, 0x04, 0xff,
X   0xcc, 0xdb, 0xe3, 0x01, 0x00, 0xa0, 0x00, 0xa6, 0x7e, 0x0b, 0xb1, 0x07,
X   0x00, 0x00, 0x00, 0x19, 0x6f, 0x6e, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9c,
X   0xfa, 0x53, 0x06, 0x02, 0x00, 0x00, 0x00, 0x04, 0xe7, 0xa9, 0x00, 0x06,
X   0x00, 0x00, 0x80, 0x43, 0x14, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
X   0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0x40, 0x00, 0x00,
X   0x00, 0x00, 0x40, 0x05, 0x08, 0x20, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
X   0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x03, 0x00,
X   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00,
X   0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x10, 0x00,
X   0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x14, 0x00,
X   0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x30, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00};
END_OF_FILE
if test 3272 -ne `wc -c <'acm/fsim/exp.xbm'`; then
    echo shar: \"'acm/fsim/exp.xbm'\" unpacked with wrong size!
fi
# end of 'acm/fsim/exp.xbm'
fi
if test -f 'acm/fsim/exp1.xbm' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/exp1.xbm'\"
else
echo shar: Extracting \"'acm/fsim/exp1.xbm'\" \(3319 characters\)
sed "s/^X//" >'acm/fsim/exp1.xbm' <<'END_OF_FILE'
X#define exp1_width 64
X#define exp1_height 64
X#define exp1_x_hot -1
X#define exp1_y_hot -1
Xstatic char exp1_bits[] = {
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
X   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
X   0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x61, 0x00, 0x03,
X   0x00, 0x00, 0x00, 0x20, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40,
X   0x80, 0x20, 0x80, 0x01, 0x00, 0x80, 0x40, 0x40, 0x80, 0x38, 0x80, 0x01,
X   0x00, 0x80, 0x01, 0xa0, 0x82, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00,
X   0x82, 0x22, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0xc4, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x10, 0x00, 0x80, 0x00, 0x0c, 0x80,
X   0xa9, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa8, 0x10, 0x93, 0x75, 0x02, 0x20,
X   0x00, 0x00, 0xe0, 0x04, 0x3e, 0x03, 0x01, 0x20, 0x00, 0x04, 0x10, 0x92,
X   0x8a, 0x0e, 0x06, 0x1a, 0x00, 0x5c, 0x81, 0xf1, 0xef, 0x1b, 0x80, 0x01,
X   0x00, 0x18, 0x80, 0x0c, 0xcb, 0x01, 0xa5, 0x00, 0x00, 0x60, 0x88, 0x17,
X   0x43, 0x07, 0x87, 0x00, 0x00, 0xa0, 0x21, 0x79, 0xc7, 0x51, 0x23, 0x00,
X   0x00, 0x80, 0x40, 0x3f, 0xeb, 0x1e, 0x07, 0x00, 0x00, 0x00, 0x40, 0x1f,
X   0xef, 0xb8, 0x17, 0x00, 0x00, 0x04, 0x04, 0x06, 0x2c, 0x71, 0x06, 0x00,
X   0x00, 0x08, 0x00, 0x6b, 0x5f, 0x10, 0x02, 0x00, 0x00, 0x40, 0xf9, 0x38,
X   0x01, 0xbf, 0x01, 0x00, 0x00, 0x00, 0xac, 0xb3, 0x5f, 0xfd, 0x03, 0x00,
X   0x00, 0x00, 0xfc, 0xb9, 0x4f, 0xa7, 0x03, 0x10, 0x00, 0x00, 0xd7, 0xac,
X   0xc2, 0x9a, 0x0d, 0x04, 0x10, 0x40, 0x7b, 0xc9, 0x98, 0x79, 0x11, 0x18,
X   0x00, 0xc0, 0xfa, 0x8d, 0x18, 0xcb, 0x29, 0x02, 0x00, 0x80, 0xd8, 0x0d,
X   0x88, 0x0b, 0x57, 0x08, 0x00, 0xc0, 0x0c, 0x39, 0x60, 0x1b, 0x00, 0x00,
X   0x00, 0xd0, 0x64, 0x97, 0xc1, 0x73, 0x18, 0x03, 0x00, 0x6b, 0x81, 0x0e,
X   0x01, 0xfb, 0x0c, 0x02, 0x00, 0x80, 0xdf, 0x15, 0x81, 0x54, 0xe8, 0x02,
X   0x00, 0x00, 0xde, 0xff, 0xa2, 0xd9, 0x3c, 0x00, 0x00, 0x80, 0x3f, 0xde,
X   0xc2, 0xac, 0x94, 0x00, 0x00, 0x00, 0x33, 0xde, 0xec, 0x0b, 0x1e, 0x02,
X   0x00, 0xc0, 0x6c, 0x17, 0xe1, 0xe7, 0x1c, 0x02, 0x00, 0x50, 0x76, 0xfc,
X   0xf7, 0xfe, 0x3f, 0x00, 0x00, 0x1c, 0x5d, 0x9c, 0xfa, 0xba, 0x09, 0x00,
X   0x00, 0x04, 0x63, 0xcc, 0x0e, 0x8c, 0x89, 0x00, 0x00, 0x46, 0x82, 0x90,
X   0x80, 0xbb, 0x12, 0x00, 0x00, 0x02, 0xe3, 0xd7, 0x89, 0x81, 0x23, 0x00,
X   0x80, 0x81, 0x21, 0x83, 0x84, 0x89, 0x03, 0x00, 0x00, 0x00, 0x04, 0xf7,
X   0xcc, 0xdb, 0xe3, 0x00, 0x20, 0xa0, 0x00, 0xa6, 0x7e, 0x0b, 0xb1, 0x01,
X   0x20, 0x00, 0x00, 0x19, 0x6f, 0x4e, 0x8e, 0x00, 0x10, 0x00, 0x00, 0x1c,
X   0xe0, 0x53, 0x06, 0x02, 0x00, 0x00, 0x00, 0x04, 0xe7, 0xa9, 0x00, 0x02,
X   0x00, 0x00, 0x80, 0x43, 0x14, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
X   0x00, 0x88, 0x00, 0x0c, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0x40, 0x00, 0x08,
X   0x00, 0x00, 0x40, 0x05, 0x08, 0x20, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
X   0x04, 0x00, 0x02, 0x18, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x03, 0x10,
X   0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x08, 0x08, 0x00,
X   0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00,
X   0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x10, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00};
END_OF_FILE
if test 3319 -ne `wc -c <'acm/fsim/exp1.xbm'`; then
    echo shar: \"'acm/fsim/exp1.xbm'\" unpacked with wrong size!
fi
# end of 'acm/fsim/exp1.xbm'
fi
if test -f 'acm/fsim/f16' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/f16'\"
else
echo shar: Extracting \"'acm/fsim/f16'\" \(3135 characters\)
sed "s/^X//" >'acm/fsim/f16' <<'END_OF_FILE'
XF-16-fighter
X130 12
X1 -18.165 0 0
X2 -18.165 -1.191 0
X3 -15.187 -2.085 0
X4 -13.698 -2.382 0
X5 -17.272 -2.382 0
X6 -17.272 -3.573 0
X7 -10.923 -3.573 0
X8 -4.169 -3.573 0
X9 -4.169 -4.765 0
X10 5.598 -4.765 0
X11 18.463 -2.144 0
X12 18.939 -1.787 0
X13 22.274 -1.489 0
X14 24.895 -1.191 0
X15 27.992 0 0
X16 -6.551 -3.573 0
X17 -6.551 -15.485 0
X18 0.357 -15.485 0
X19 0.357 -15.187 0
X20 -2.978 -15.008 0
X21 5.598 -4.765 0
X22 -4.169 -4.765 0
X23 -4.169 -3.573 0
X24 -17.272 -3.573 0
X25 -17.272 -8.934 0.893
X26 -15.187 -8.934 0.893
X27 -10.923 -3.573 0
X28 27.992 0 0
X29 24.895 1.191 0
X30 22.274 1.489 0
X31 18.939 1.787 0
X32 18.463 2.144 0
X33 5.598 4.765 0
X34 -4.169 4.765 0
X35 -4.169 3.573 0
X36 -10.923 3.573 0
X37 -17.272 3.573 0
X38 -17.272 2.382 0
X39 -13.698 2.382 0
X40 -15.187 2.085 0
X41 -18.165 1.191 0
X42 -18.165 0 0
X43 5.598 4.765 0
X44 -2.978 15.008 0
X45 0.357 15.187 0
X46 0.357 15.485 0
X47 -6.551 15.485 0
X48 -6.551 3.573 0
X49 -4.169 3.573 0
X50 -4.169 4.765 0
X51 -10.923 3.573 0
X52 -15.187 8.934 0.893
X53 -17.272 8.934 0.893
X54 -17.272 3.573 0
X55 27.992 0 0
X56 23.525 0 -1.191
X57 17.272 0 -2.382
X58 15.783 0 -3.812
X59 13.996 0 -4.169
X60 11.316 0 -4.05
X61 8.338 0 -3.335
X62 1.787 0 -2.382
X63 -4.169 0 -2.382
X64 -13.936 0 -1.906
X65 -15.128 0 -1.906
X66 -15.187 0 -1.787
X67 -18.165 0 -1.191
X68 -18.165 0 0
X69 -4.169 0 -2.382
X70 -10.125 0 -4.05
X71 -15.783 0 -10.482
X72 -19.654 0 -10.482
X73 -19.654 0 -9.529
X74 -19.654 0 -9.529
X75 -16.378 0 -3.573
X76 -16.378 0 -2.144
X77 -14.889 0 -2.382
X78 -13.936 0 -2.382
X79 -13.936 0 -1.906
X80 -18.165 0 0
X81 -18.165 0 1.191
X82 -15.187 0 2.085
X83 -13.698 0 2.263
X84 -2.68 0 2.382
X85 8.04 0 2.382
X86 12.507 0 2.263
X87 12.507 0 0.596
X88 19.952 0 0.596
X89 23.525 0 0.476
X90 27.992 0 0
X91 -3.551 0 -2.382
X92 -3.551 -3.871 -0.10
X93 -3.551 -15.485 0
X94 -3.551 -15.485 0.1065
X95 -3.551 -3.871 0.142
X96 -3.551 -2.58 0.2556
X97 -3.551 -2.387 1.818
X98 -3.551 -2.102 2.015
X99 -3.551 -1.03 2.251
X100 -3.551 0 2.282
X101 -3.551 1.03 2.251
X102 -3.551 2.102 2.015
X103 -3.551 2.387 1.818
X104 -3.551 2.58 0.2556
X105 -3.551 3.871 0.142
X106 -3.551 15.485 0.1065
X107 -3.551 15.485 0
X108 -3.551 3.871 -0.10
X109 13.996 0 -4.169
X110 13.996 -0.8932 -3.692
X111 13.996 -1.191 -2.978
X112 13.996 -1.251 -2.502
X113 13.996 -1.787 -1.311
X114 13.996 -3.054 0
X115 13.996 -1.583 0.3568
X116 13.996 0 0.596
X117 13.996 1.583 0.3568
X118 13.996 3.054 0
X119 13.996 1.787 -1.311
X120 13.996 1.251 -2.502
X121 13.996 1.191 -2.978
X122 13.996 0.8932 -3.692
X123 -18.165 1.191 0
X124 -18.165 0.842 0.842
X125 -18.165 0 1.191
X126 -18.165 -0.842 0.842
X127 -18.165 -1.191 0
X128 -18.165 -0.842 -0.842
X129 -18.165 0 -1.191
X130 -18.165 0.842 -0.842
Xgray44 14 109 110 111 112 113 114 115 116 117 118 119 120 121 122
Xgray44 18 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
Xgray44 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Xgray44 8 16 17 18 19 20 21 22 23
Xgray44 4 24 25 26 27
Xgray44 15 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Xgray44 8 43 44 45 46 47 48 49 50
Xgray44 4 51 52 53 54
Xgray44 14 55 56 57 58 59 60 61 62 63 64 65 66 67 68
Xgray44 11 69 70 71 72 73 74 75 76 77 78 79
Xgray44 11 80 81 82 83 84 85 86 87 88 89 90
Xgray44 8 123 124 125 126 127 128 129 130
END_OF_FILE
if test 3135 -ne `wc -c <'acm/fsim/f16'`; then
    echo shar: \"'acm/fsim/f16'\" unpacked with wrong size!
fi
# end of 'acm/fsim/f16'
fi
if test -f 'acm/fsim/flaps.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/flaps.c'\"
else
echo shar: Extracting \"'acm/fsim/flaps.c'\" \(2198 characters\)
sed "s/^X//" >'acm/fsim/flaps.c' <<'END_OF_FILE'
X/*
X *	xflight : an aerial combat simulator for X
X *
X *	Written by Riley Rainey,  riley@mips.com
X *
X *	Permission to use, copy, modify and distribute (without charge) this
X *	software, documentation, images, etc. is granted, provided that this 
X *	comment and the author's name is retained.
X *
X */
X 
X#include "pm.h"
X
Xint	flapsDown (c)
Xcraft	*c; {
X
X	c->flapSetting += 10.0 * pi / 180.0;
X	if (c->flapSetting > c->cinfo->maxFlap)
X		c->flapSetting = c->cinfo->maxFlap;
X	return 0;
X}
X
Xint	flapsUp (c)
Xcraft	*c; {
X
X	c->flapSetting -= 10.0 * pi / 180.0;
X	if (c->flapSetting < 0.0)
X		c->flapSetting = 0.0;
X	return 0;
X}
X
Xvoid	flapControl (c)
Xcraft	*c; {
X
X	if (isFunctioning(c, SYS_FLAPS)) {
X
X	    if (c->flapSetting > c->curFlap) {
X		c->curFlap += c->cinfo->flapRate * deltaT;
X		if (c->curFlap > c->flapSetting)
X			c->curFlap = c->flapSetting;
X	    }
X	    else if (c->flapSetting < c->curFlap) {
X		c->curFlap -= c->cinfo->flapRate * deltaT;
X		if (c->curFlap < c->flapSetting)
X			c->curFlap = c->flapSetting;
X	    }
X	}
X
X	if (isFunctioning(c, SYS_SPEEDBRAKE)) {
X
X	    if (c->speedBrakeSetting > c->curSpeedBrake) {
X		c->curSpeedBrake += c->cinfo->speedBrakeRate * deltaT;
X		if (c->curSpeedBrake > c->speedBrakeSetting)
X			c->curSpeedBrake = c->speedBrakeSetting;
X	    }
X	    else if (c->speedBrakeSetting < c->curSpeedBrake) {
X		c->curSpeedBrake -= c->cinfo->speedBrakeRate * deltaT;
X		if (c->curSpeedBrake < c->speedBrakeSetting)
X			c->curSpeedBrake = c->speedBrakeSetting;
X	    }
X	}
X
X/*
X *  Set some status flags
X */
X
X	if (c->fuel < 1000.0)
X		c->damageBits &= ~FLAG_LOWFUEL;
X	else
X		c->damageBits |= FLAG_LOWFUEL;
X
X	if (c->flags & FL_BRAKES)
X		c->damageBits &= ~FLAG_WHEELBRAKE;
X	else
X		c->damageBits |= FLAG_WHEELBRAKE;
X
X	if (c->speedBrakeSetting > 0.0)
X		c->damageBits &= ~FLAG_SPEEDBRAKE;
X	else
X		c->damageBits |= FLAG_SPEEDBRAKE;
X}
X
Xint	speedBrakeExtend (c)
Xcraft	*c; {
X
X	c->speedBrakeSetting += c->cinfo->speedBrakeIncr;
X	if (c->speedBrakeSetting > c->cinfo->maxSpeedBrake)
X		c->speedBrakeSetting = c->cinfo->maxSpeedBrake;
X	return 0;
X}
X
Xint	speedBrakeRetract (c)
Xcraft	*c; {
X
X	c->speedBrakeSetting -= c->cinfo->speedBrakeIncr;
X	if (c->speedBrakeSetting < 0.0)
X		c->speedBrakeSetting = 0.0;
X	return 0;
X}
END_OF_FILE
if test 2198 -ne `wc -c <'acm/fsim/flaps.c'`; then
    echo shar: \"'acm/fsim/flaps.c'\" unpacked with wrong size!
fi
# end of 'acm/fsim/flaps.c'
fi
if test -f 'acm/fsim/flaps1.xbm' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/flaps1.xbm'\"
else
echo shar: Extracting \"'acm/fsim/flaps1.xbm'\" \(1730 characters\)
sed "s/^X//" >'acm/fsim/flaps1.xbm' <<'END_OF_FILE'
X#define flaps1_width 64
X#define flaps1_height 32
X#define flaps1_x_hot -1
X#define flaps1_y_hot -1
Xstatic char flaps1_bits[] = {
X   0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xde, 0xdd, 0xfd,
X   0x1f, 0x00, 0x00, 0x00, 0x60, 0xef, 0xee, 0xee, 0xee, 0xff, 0x03, 0x00,
X   0x70, 0x77, 0x77, 0x77, 0x77, 0xf7, 0x3f, 0x00, 0x58, 0xbb, 0xbb, 0xbb,
X   0xbb, 0x7b, 0x01, 0x00, 0x48, 0xdf, 0xdd, 0xdd, 0xdd, 0x3d, 0x0f, 0x00,
X   0xe8, 0xfe, 0xff, 0xff, 0xff, 0x9f, 0x3f, 0x00, 0x38, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00};
END_OF_FILE
if test 1730 -ne `wc -c <'acm/fsim/flaps1.xbm'`; then
    echo shar: \"'acm/fsim/flaps1.xbm'\" unpacked with wrong size!
fi
# end of 'acm/fsim/flaps1.xbm'
fi
if test -f 'acm/fsim/init.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/init.c'\"
else
echo shar: Extracting \"'acm/fsim/init.c'\" \(3350 characters\)
sed "s/^X//" >'acm/fsim/init.c' <<'END_OF_FILE'
X/*
X *	xflight : an aerial combat simulator for X
X *
X *	Written by Riley Rainey,  riley@mips.com
X *
X *	Permission to use, copy, modify and distribute (without charge) this
X *	software, documentation, images, etc. is granted, provided that this 
X *	comment and the author's name is retained.
X *
X */
X 
X#include <string.h>
X#include "pm.h"
X
Xextern craftType *newCraft();
Xextern void initaim9(), initm61a1();
Xextern void initf16(), initmig23();
X
XFILE *acm_fopen (name, access)
Xchar *name, *access; {
X
X	FILE	*f;
X	char	libname[256];
X
X	if ((f = fopen (name, access)) == (FILE *) NULL) {
X		strcpy (libname, ACM_LIBRARY);
X		strcat (libname, name);
X		return fopen (libname, access);
X	}
X
X	return f;
X}
X
Xint init () {
X
X	FILE	*f;
X	static	VObject	*o2;
X	int	i;
X	craft	*p;
X
X        for ((i=0, p=stbl); i<MAXSURFACE; (++i, ++p))
X		p->type = CT_FREE;
X
X        for ((i=0, p=ptbl); i<MAXPLAYERS; (++i, ++p)) {
X		p->index = i;
X		p->type = CT_FREE;
X	}
X
X        for ((i=0, p=mtbl); i<MAXPROJECTILES; (++i, ++p))
X		p->type = CT_FREE;
X
X/*	HUDColor = VAllocColor ("#ffc800"); */
X	HUDColor = VAllocColor ("white");
X/*	groundColor = VAllocColor ("#29350B"); */
X/*	groundColor = VAllocColor ("#717844"); */
X	groundColor = VAllocColor ("#879349");
X	whiteColor = VAllocColor ("white");
X	blackColor = VAllocColor ("black");
X
X/*
X * Read in the runway and place it.
X */
X
X	f = acm_fopen ("rwy", "r");
X	stbl[1].type = CT_SURFACE;
X	stbl[1].cinfo = newCraft();
X	stbl[1].cinfo->object = VReadObject(f);
X	fclose (f);
X	stbl[1].Sg.x = 0.0;
X	stbl[1].Sg.y = 0.0;
X	stbl[1].Sg.z = 0.0;
X	stbl[1].curHeading = stbl[1].curPitch = stbl[1].curRoll = 0.0;
X
X	f = acm_fopen ("rwy2", "r");
X	stbl[0].type = CT_SURFACE;
X	stbl[0].cinfo = newCraft();
X	stbl[0].cinfo->object = VReadObject(f);
X	fclose (f);
X	stbl[0].Sg.x = 4000.0;
X	stbl[0].Sg.y = 3000.0;
X	stbl[0].Sg.z = 0.0;
X	stbl[0].curHeading = 300.0 * 3.14159 / 180.0;
X	stbl[0].curPitch = stbl[0].curRoll = 0.0;
X
X	f = acm_fopen ("tower", "r");
X	stbl[2].type = CT_SURFACE;
X	stbl[2].cinfo = newCraft();
X	stbl[2].cinfo->object = VReadObject(f);
X	fclose (f);
X	stbl[2].Sg.x = 4000.0;
X	stbl[2].Sg.y = -700.0;
X	stbl[2].Sg.z = 0.0;
X	stbl[2].curHeading = stbl[2].curPitch = stbl[2].curRoll = 0.0;
X
X	f = acm_fopen ("mtn", "r");
X	stbl[3].type = CT_SURFACE;
X	stbl[3].cinfo = newCraft();
X	stbl[3].cinfo->object = VReadObject(f);
X	fclose (f);
X	stbl[3].Sg.x = 20.0 * NM;
X	stbl[3].Sg.y = 6.0 * NM;
X	stbl[3].Sg.z = 0.0;
X	stbl[3].curHeading = DEGtoRAD (30.0);
X	stbl[3].curPitch = stbl[3].curRoll = 0.0;
X
X	stbl[4].type = CT_SURFACE;
X	stbl[4].cinfo = stbl[3].cinfo;
X	stbl[4].Sg.x = -2.0 * NM;
X	stbl[4].Sg.y = 40.0 * NM;
X	stbl[4].Sg.z = 0.0;
X	stbl[4].curHeading = DEGtoRAD (160.0);
X	stbl[4].curPitch = stbl[4].curRoll = 0.0;
X
X	stbl[5].type = CT_SURFACE;
X	stbl[5].cinfo = stbl[3].cinfo;
X	stbl[5].Sg.x = -2.6 * NM;
X	stbl[5].Sg.y = 43.0 * NM;
X	stbl[5].Sg.z = 0.0;
X	stbl[5].curHeading = DEGtoRAD (160.0);
X	stbl[5].curPitch = stbl[4].curRoll = 0.0;
X
X	stbl[6].type = CT_SURFACE;
X	stbl[6].cinfo = stbl[1].cinfo;
X	stbl[6].Sg.x = -0.6 * NM;
X	stbl[6].Sg.y = 49.0 * NM;
X	stbl[6].Sg.z = 0.0;
X	stbl[6].curHeading = DEGtoRAD (0.0);
X	stbl[6].curPitch = stbl[6].curRoll = 0.0;
X
X	initf16();
X	initmig23();
X	initf16();
X	initmig23();
X	initaim9();
X	initm61a1();
X
X/*
X *  Set time intervals.
X */
X
X	deltaT = (double) UPDATE_INTERVAL / 1000000.0;
X
X	halfDeltaTSquared = 0.5 * deltaT * deltaT;
X
X	return 0;
X}
END_OF_FILE
if test 3350 -ne `wc -c <'acm/fsim/init.c'`; then
    echo shar: \"'acm/fsim/init.c'\" unpacked with wrong size!
fi
# end of 'acm/fsim/init.c'
fi
if test -f 'acm/fsim/mig23' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/mig23'\"
else
echo shar: Extracting \"'acm/fsim/mig23'\" \(2514 characters\)
sed "s/^X//" >'acm/fsim/mig23' <<'END_OF_FILE'
Xmig-23-wings-swept
X88 10
X1 36.5891 0 0
X2 34.4368 0.86092 0
X3 30.9931 1.29138 0
X4 27.119 1.72184 0
X5 20.6621 1.72184 0
X6 18.9402 2.1523 0
X7 14.2052 3.01322 0
X8 -3.44368 2.58276 0
X9 -9.03966 2.1523 0
X10 -16.7879 0.86092 0
X11 -18.0793 0.43046 0
X12 -18.0793 0 0
X13 36.5891 0 0
X14 34.4368 -0.86092 0
X15 30.9931 -1.29138 0
X16 27.119 -1.72184 0
X17 20.6621 -1.72184 0
X18 18.9402 -2.1523 0
X19 14.2052 -3.01322 0
X20 -3.44368 -2.58276 0
X21 -9.03966 -2.1523 0
X22 -16.7879 -0.86092 0
X23 -18.0793 -0.43046 0
X24 -18.0793 0 0
X25 14.2052 3.01322 -3.01322
X26 4.73506 7.31782 -3.01322
X27 6.02644 8.6092 -3.01322
X28 -11.192 13.7747 -3.01322
X29 -12.0529 13.7747 -3.01322
X30 -14.2052 11.192 -3.01322
X31 -14.2052 10.7615 -3.01322
X32 -3.44368 2.58276 -3.01322
X33 14.2052 -3.01322 -3.01322
X34 4.73506 -7.31782 -3.01322
X35 6.02644 -8.6092 -3.01322
X36 -11.192 -13.7747 -3.01322
X37 -12.0529 -13.7747 -3.01322
X38 -14.2052 -11.192 -3.01322
X39 -14.2052 -10.7615 -3.01322
X40 -3.44368 -2.58276 -3.01322
X41 -18.9402 3.01322 -1.72184
X42 -20.2316 7.31782 -1.72184
X43 -18.5098 8.6092 -1.72184
X44 -9.03966 2.1523 -1.72184
X45 -16.7879 0.86092 -1.72184
X46 -18.9402 -3.01322 -1.72184
X47 -20.2316 -7.31782 -1.72184
X48 -18.5098 -8.6092 -1.72184
X49 -9.03966 -2.1523 -1.72184
X50 -16.7879 -0.86092 -1.72184
X51 36.5891 0 0
X52 33.1454 0 -1.29138
X53 30.1322 0 -2.1523
X54 25.8276 0 -2.58276
X55 22.3839 0 -3.87414
X56 18.0793 0 -4.3046
X57 9.47012 0 -3.87414
X58 -0.860918 0 -3.44368
X59 -8.6092 0 -6.02644
X60 -16.3575 0 -10.331
X61 -18.9402 0 -9.03966
X62 -18.0793 0 -3.87414
X63 -19.8012 0 -3.44368
X64 -17.2184 0 -1.72184
X65 -18.0793 0 -1.72184
X66 -18.0793 0 1.29138
X67 -15.4966 0 1.72184
X68 -6.4569 0 2.1523
X69 10.331 0 2.1523
X70 20.2316 0 1.72184
X71 28.8408 0 1.29138
X72 33.1454 0 0.86092
X73 -15.4966 0 1.72184
X74 -15.4966 0 4.3046
X75 -13.3443 0 5.16552
X76 -6.4569 0 2.1523
X77 20.6621 1.72184 -3.01322
X78 18.9402 2.1523 -3.01322
X79 14.2052 3.01322 -3.01322
X80 -3.44368 2.58276 -3.01322
X81 -3.44368 -2.58276 -3.01322
X82 14.2052 -3.01322 -3.01322
X83 18.9402 -2.1523 -3.01322
X84 20.6621 -1.72184 -3.01322
X85 -3.44368 2.58276 -3.01322
X86 -16.7879 0.86092 -1.72184
X87 -16.7879 -0.86092 -1.72184
X88 -3.44368 -2.58276 -3.01322
Xgray44 12 1 2 3 4 5 6 7 8 9 10 11 12
Xgray44 12 13 14 15 16 17 18 19 20 21 22 23 24
Xgray44 8 25 26 27 28 29 30 31 32
Xgray44 8 33 34 35 36 37 38 39 40
Xgray44 5 41 42 43 44 45
Xgray44 5 46 47 48 49 50
Xgray44 22 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
Xgray44 4 73 74 75 76
Xgray44 8 77 78 79 80 81 82 83 84
Xgray44 4 85 86 87 88
END_OF_FILE
if test 2514 -ne `wc -c <'acm/fsim/mig23'`; then
    echo shar: \"'acm/fsim/mig23'\" unpacked with wrong size!
fi
# end of 'acm/fsim/mig23'
fi
if test -f 'acm/fsim/missileCalc.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/missileCalc.c'\"
else
echo shar: Extracting \"'acm/fsim/missileCalc.c'\" \(2621 characters\)
sed "s/^X//" >'acm/fsim/missileCalc.c' <<'END_OF_FILE'
X/*
X *	xflight : an aerial combat simulator for X
X *
X *	Written by Riley Rainey,  riley@mips.com
X *
X *	Permission to use, copy, modify and distribute (without charge) this
X *	software, documentation, images, etc. is granted, provided that this 
X *	comment and the author's name is retained.
X *
X */
X 
X#include <stdio.h>
X#include <math.h>
X#include "pm.h"
X
Xint mdebug = 0;
Xextern double calcRho();
Xextern void trackTarget();
Xextern void craftToGround();
X
Xint  missileCalculations (c)
Xcraft *c; {
X
X	double	q, rho;
X	double	FLift, FDrag, FWeight;
X	double	Vmag;
X	VPoint	F, Fg;
X	VMatrix mtx;
X
X/*
X *  Check for ground impact.  We do this at the beginning to permit us to
X *  kill ground targets.
X */
X
X	if (c->Sg.z > 0.0) {
X		killMissile (c);
X		return 1;
X	}
X
X	trackTarget (c);
X
X	-- c->armFuse;
X
X/*
X *  Re-orient the body of the missile towards it's intended target.
X */
X
X	c->prevSg = c->Sg;
X
X	rho = calcRho (-(c->Sg.z), &q);
X
X/*
X *  Compute the resultant force vector on the missile.
X */
X
X	Vmag = mag(c->Cg);
X	q = rho * c->cinfo->wingS * Vmag * Vmag * 0.5;
X	FLift = 0.0;
X	FDrag = c->cinfo->CDOrigin * q;
X
X	if (mdebug) {
X	printf ("rho = %g, FLift = %g, FDrag = %g\n", rho, FLift, FDrag);
X	printf ("FThrust = %g\n", c->curThrust);
X	}
X
X	F.x = c->curThrust - FDrag;
X	F.y = 0.0; 
X	F.z = 0.0; 
X
X/*
X *  Now calculate changes in position (Sg) and velocity (Cg).
X */
X
X	if ((c->fuel -= fuelUsed(c)) <= 0.0) {
X		if (c->curThrust > 0.0)
X			if (mdebug)
X			printf ("Missile burnout; velocity = %g fps (%g kts)\n", Vmag,
X				FPStoKTS(Vmag));
X		c->fuel = 0.0;
X		c->curThrust = 0.0;
X	}
X
X/*
X *  The missile's trihedral and Itrihedral matrices are managed by 
X *  trackTarget().
X */
X
X	craftToGround (c, &F, &Fg);
X	FWeight = c->cinfo->emptyWeight + c->fuel;
X	Fg.z += FWeight;
X
X	if (mdebug) {
X	    	printf ("v = %g kts, Fg = { %g, %g, %g }\n", FPStoKTS(Vmag),
X			Fg.x, Fg.y, Fg.z);
X	    	printf ("F = { %g, %g, %g }\n", F.x, F.y, F.z);
X	}
X
X
X
X/*
X *  Update the missile's position and velocity.
X */
X
X
X	c->Sg.x += c->Cg.x * deltaT + Fg.x / FWeight * a * halfDeltaTSquared;
X	c->Sg.y += c->Cg.y * deltaT + Fg.y / FWeight * a * halfDeltaTSquared;
X	c->Sg.z += c->Cg.z * deltaT + Fg.z / FWeight * a * halfDeltaTSquared;
X
X	c->Cg.x += Fg.x / FWeight * a * deltaT;
X	c->Cg.y += Fg.y / FWeight * a * deltaT;
X	c->Cg.z += Fg.z / FWeight * a * deltaT;
X
X
X	if (mdebug) {
X		printf ("Altitude = %g\n", -c->Sg.z);
X		printf ("Euler angles { %g, %g, %g }\n", RADtoDEG(c->curRoll),
X			RADtoDEG(c->curPitch), RADtoDEG(c->curHeading));
X		printf ("Cg = { %g, %g, %g }\n", c->Cg.x, c->Cg.y, c->Cg.z);
X		printf ("Sg = { %g, %g, %g }\n", c->Sg.x, c->Sg.y, c->Sg.z);
X	}
X
X	return 0;
X}
END_OF_FILE
if test 2621 -ne `wc -c <'acm/fsim/missileCalc.c'`; then
    echo shar: \"'acm/fsim/missileCalc.c'\" unpacked with wrong size!
fi
# end of 'acm/fsim/missileCalc.c'
fi
if test -f 'acm/fsim/panel.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'acm/fsim/panel.c'\"
else
echo shar: Extracting \"'acm/fsim/panel.c'\" \(1940 characters\)
sed "s/^X//" >'acm/fsim/panel.c' <<'END_OF_FILE'
X/*
X *	xflight : an aerial combat simulator for X
X *
X *	Written by Riley Rainey,  riley@mips.com
X *
X *	Permission to use, copy, modify and distribute (without charge) this
X *	software, documentation, images, etc. is granted, provided that this 
X *	comment and the author's name is retained.
X *
X */
X
X#include "pm.h"
X
Xstatic struct {
X	long	mask;
X	char	*name;
X	}	*pptr, panelVec[] = {
X	SYS_ENGINE1,	"OIL PRES",
X	SYS_HYD1,	"HYD1 PRES",
X	SYS_HYD2,	"HYD2 PRES",
X	SYS_GEN1,	"GEN1 FAIL",
X	SYS_GEN2,	"GEN2 FAIL",
X	SYS_FLAPS,	"FLAP FAIL",
X	SYS_SPEEDBRAKE, "SPBRK FAIL",
X	SYS_RADAR,	"RADAR FAIL",
X	SYS_TEWS,	"TEWS FAIL",
X	SYS_HUD,	" HUD FAIL",
X	FLAG_LOWFUEL,	" LOW FUEL",
X	FLAG_SPEEDBRAKE, "SPD BRAKE",
X	FLAG_WHEELBRAKE, "  BRAKES",
X	0,		(char *) 0 };
X
X#define panelRows	7
X#define panelChars	10
X#define lightMargin	((u->rftw + 1) / 3)	
X#define panelWMargin	(u->rftw * 2)
X#define panelHMargin	(u->rfth / 2)
X
Xlong	lastBits[MAXPLAYERS];
X
Xvoid	initPanel (c)
Xcraft	*c; {
X
X	lastBits [c->index] = SYS_NODAMAGE;
X
X}
X
Xvoid doPanel (c, u)
Xcraft	*c;
Xviewer	*u; {
X
X	int	cellH, cellW;
X	int	xi, yi, x, y, i;
X	long	changeBits;
X
X	cellH = u->rfth + 2 * lightMargin + panelHMargin;
X	cellW = u->rftw * panelChars + 2 * lightMargin + panelWMargin;
X
X	XSetForeground (u->dpy, u->gc, WhitePixel(u->v->dpy, u->v->screen));
X
X	changeBits = lastBits[c->index] ^ c->damageBits;
X
X	for (pptr = &panelVec[0], i=0; pptr->mask != 0; ++pptr, ++i) {
X		if (changeBits & pptr->mask) {
X			xi = i / panelRows;
X			yi = i % panelRows;
X			x = u->scaleFactor * PANEL_X + 0.5;
X			x += xi * cellW + lightMargin;
X			y = u->scaleFactor * PANEL_Y + 0.5;
X			y += yi * cellH + lightMargin;
X			if ((c->damageBits & pptr->mask) == 0) 
X				XDrawImageString (u->dpy, u->win, u->gc,
X					x, y, pptr->name, strlen(pptr->name));
X			else {
X				y -= u->rfth;
X				XClearArea (u->dpy, u->win, x, y,
X					u->rftw * panelChars,
X					u->rfth + lightMargin, False);
X			}
X		}
X	}
X
X	lastBits[c->index] = c->damageBits;
X}
END_OF_FILE
if test 1940 -ne `wc -c <'acm/fsim/panel.c'`; then
    echo shar: \"'acm/fsim/panel.c'\" unpacked with wrong size!
fi
# end of 'acm/fsim/panel.c'
fi
echo shar: End of archive 2 \(of 9\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 9 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Riley Rainey			Internet: riley@mips.com
MIPS Computer Systems		Phone:    +1 214 770-7979
Dallas, Texas