games-request@basser.cs.su.oz.AU (07/16/87)
Submitted by: Rich Burridge <richb@sunk.oz.AU>
Comp.sources.games: Volume 1, Issue 92
Archive-name: asteroids/Part01
This is for SunOS v3.2 or later. See the README for all the gory
details. Due to the inherent design, this will still not work on a
color Sun, or on a monochrome screen in reverse video. Someday, when I
get a moment, I'll sit down and fix that.
Rich.
Rich Burridge, JANET richb%sunk.oz@uk.ac.ucl.cs
ACSnet richb@sunk.oz UUCP {seismo,hplabs,ukc}!munnari!sunk.oz!richb
PHONE: +61 3 811 9927 ARPAnet richb%sunk.oz@seismo.css.gov
MAIL: Sun Microsystems, 123 Camberwell Rd, Hawthorn, VICTORIA 3122, AUST
#! /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 1 (of 2)."
# Contents: Makefile README ast_stuff.c ast_sun.c asteroids.h
# asteroids.help asteroids.hs asteroids.icon bltstuff.h main.cursor
# Wrapped by richb@sunk on Fri May 29 16:20:54 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f Makefile -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"Makefile\"
else
echo shar: Extracting \"Makefile\" \(1061 characters\)
sed "s/^X//" >Makefile <<'END_OF_Makefile'
X#
X# Makefile for the asteroids game.
X# Written by Rich Burridge - Sun Microsystems Australia (Melbourne).
X#
X# Version 3.0. - April 1987.
X#
X# No responsibility is taken for any errors inherent either in the comments
X# or the code of this program, but if reported to me then an attempt will
X# be made to fix them.
X#
XBINARIES = asteroids
XBINDIR = .
XCFLAGS = -g
XLDFLAGS = -g
XOBJS = ast_main.o ast_stuff.o ast_sun.o
XSRCS = ast_main.c ast_stuff.c ast_sun.c
XLIBS = -lsuntool -lsunwindow -lpixrect
XHDRS = asteroids.h bltstuff.h
X#
X# The following commands are declared:
X#
Xall: $(BINARIES)
X
Xbackup:
X cp ast_main.c ast_main.c~
X cp ast_stuff.c ast_stuff.c~
X cp ast_sun.c ast_sun.c~
X cp asteroids.h asteroids.h~
X
Xlint:
X lint $(SRCS) $(LIBS)
X
Xclean:
X rm -f *.o core
X#
X# General Makefile stuff.
X#
Xasteroids: $(OBJS)
X cc $(LDFLAGS) -o asteroids $(OBJS) $(LIBS)
X
Xast_main.o: ast_main.c $(HDRS)
Xast_stuff.o: ast_stuff.c $(HDRS)
Xast_sun.o: ast_sun.c $(HDRS)
END_OF_Makefile
if test 1061 -ne `wc -c <Makefile`; then
echo shar: \"Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f README -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"README\"
else
echo shar: Extracting \"README\" \(1581 characters\)
sed "s/^X//" >README <<'END_OF_README'
X
X ASTEROIDS V3.0.
X ---------------
X
XThis is the next major release of the games of Asteroids for the
XSun, and it is a rework of the program, to operate under SunView.
XThere are no design changes, these will probably be added in the
Xnext release which will be rewritten in NeWS (in about six months
Xtime).
X
XThis is the game of Asteroids for the Sun. The original version was
Xwritten in Pascal on an ICL Perq, by persons unknown, somewhere in
Xthe North of England in 1982. This version is based on the conversion
Xof that program to C by Brian Rippon and Graham Underwood for the
XICL Perq PNX O/S in 1983.
X
XThis should work on a Sun 2, but I didn't have one, so perhaps
Xsomeone can let me know what changes if any were needed.
X
XIMPORTANT NOTE: This game currently will not work correctly on a
Xcolor Sun. Hopefully this will be fixed in a future release.
X
XJust type "asteroids", to start the game.
X
XThere are three command line switches:
X
X-h - Don't display the initial help message.
X-xnnn - Initial width of the asteroids window (default 768).
X-ynnn - Initial height of the asteroids window (default 900).
X
XThe smaller the window the higher the bonus scores.
XThere is a minimum size asteroids window of 500 x 500.
X
XSuggestions, flames, bugs, fixes and improvements to me.
X
X Rich.
X
XRich Burridge, JANET richb%sunk.oz@uk.ac.ucl.cs
XACSnet richb@sunk.oz UUCP {seismo,hplabs,ukc}!munnari!sunk.oz!richb
XPHONE: +61 3 811 9927 ARPAnet richb%sunk.oz@seismo.css.gov
XMAIL: Sun Microsystems, 123 Camberwell Rd, Hawthorn, VICTORIA 3122, AUST
END_OF_README
if test 1581 -ne `wc -c <README`; then
echo shar: \"README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ast_stuff.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"ast_stuff.c\"
else
echo shar: Extracting \"ast_stuff.c\" \(7839 characters\)
sed "s/^X//" >ast_stuff.c <<'END_OF_ast_stuff.c'
X
X/* ast_stuff.c
X *
X * Various functions and procedures used by the asteroids game.
X * Written by Rich Burridge - SUN Microsystems Australia (Melbourne).
X *
X * Version 3.0. - April 1987.
X *
X * No responsibility is taken for any errors inherent either to the code
X * or the comments of this program, but if reported to me then an attempt
X * will be made to fix them.
X */
X
X#include <stdio.h>
X#include <strings.h>
X#include "bltstuff.h"
X#include "asteroids.h"
X#include <sys/types.h>
X#include <sys/timeb.h>
X#include <suntool/sunview.h>
X#include <suntool/canvas.h>
X
Xextern Pixfont *pf ;
Xextern Pixwin *pw ;
X
X/* For descriptions of these external variables, see ast_main.c */
X
Xextern char bonusstr[MAXLINE],new_key_vals[3][MAXLINE] ;
Xextern char old_key_vals[3][MAXLINE],path[MAXLINE],progname[MAXLINE] ;
Xextern char titlestring[MAXLINE],thisscore[MAXLINE] ;
X
Xextern struct hscore highscore[MAXHS] ;
Xextern struct timeb tstartflash,tlastflash ;
X
Xextern int basecount,bonusship,bonusshown,c,csi,csj,flashbonus,fuel ;
Xextern int fuellength,fuelmaxlength,fuelxoffset,givehelp,height ;
Xextern int key_stations[3],orgx,orgy,progstate,rr,score,scorei,scorethistank ;
Xextern int sfunc,width ;
X
X
Xaddscore(s) /* Add up current total score. */
Xint s ;
X
X{
X int s10 ;
X
X s10 = s*10 ;
X score += s10 ;
X scorethistank += s10 ;
X
X if (score > bonusship)
X {
X SPRINTF(bonusstr," ** Bonus Spaceship ** ") ;
X startflashbonus() ;
X basecount += 1 ;
X bonusship *= 2 ; /* double it. */
X }
X SPRINTF(titlestring," Score : %6d Ships : %6d ",score,basecount) ;
X showtitle() ;
X}
X
X
Xclear_screen()
X
X{
X BLT_SCRN(orgx,orgy,width,height,RCLR) ;
X}
X
X
Xdo_help_screen()
X
X{
X int x,y ;
X int length = 0 ; /* Length of longest help line. */
X int nolines = 0 ; /* Number of lines in help file. */
X char line[MAXLINE] ; /* Current line read from help file. */
X FILE *tf ; /* File descripter for help file. */
X int texty = 20 ; /* Initial y coordinate for help message. */
X char helpname[MAXLINE] ; /* Full help file pathname. */
X
X SPRINTF(helpname,"%s%s",path,HELPNAME) ;
X if ((tf = fopen(helpname,"r")) == NULL)
X {
X FPRINTF(stderr,"%s: can't open %s for help information.\n",
X progname,helpname) ;
X return ;
X }
X while (fgets(line,MAXLINE,tf) != NULL)
X {
X if (strlen(line) > length) length = strlen(line) ;
X nolines++ ;
X }
X FCLOSE(tf) ;
X
X x = (width - length*FONT_WIDTH - 20) / 2 ;
X y = (height - nolines*15+texty) / 2 ;
X draw_frame(x,y,length*FONT_WIDTH+20,nolines*15+texty) ;
X
X tf = fopen(helpname,"r") ;
X while (fgets(line,MAXLINE,tf) != NULL)
X {
X line[strlen(line)-1] = '\0' ;
X SCHRFUNC(PIX_SRC) ;
X WRITELN(x+10,y+texty,line) ;
X texty += 15 ;
X }
X FCLOSE(tf) ;
X}
X
X
Xdoflashbonus()
X
X{
X struct timeb tnow ;
X
X ftime(&tnow) ;
X if (numticks(&tnow,&tlastflash) > FLICKERTIME)
X {
X bonusshown = !bonusshown ; /* on off on off every second. */
X SCHRFUNC(RXOR) ;
X WRITELN(orgx+6,orgy+FONT_HEIGHT-2,bonusstr) ;
X tlastflash.time = tnow.time ;
X tlastflash.millitm = tnow.millitm ;
X }
X
X/* See if time out, if so stop flash */
X if (((tnow.time - tstartflash.time) > FLASHTIME) && !bonusshown)
X {
X flashbonus = 0 ;
X addscore(0) ; /* to put score back on screen. */
X }
X}
X
X
Xdraw_frame(x,y,fr_width,fr_height)
Xint x,y,fr_width,fr_height ;
X
X{
X BLT_SCRN(x,y,fr_width,fr_height,RSET) ;
X BLT_SCRN(x+1,y+1,fr_width-2,fr_height-2,RCLR) ;
X BLT_SCRN(x+3,y+3,fr_width-6,fr_height-6,RSET) ;
X BLT_SCRN(x+5,y+5,fr_width-10,fr_height-10,RCLR) ;
X}
X
X
Xfunction_keys(state) /* Set or reset the function keys. */
Xint state ;
X
X{
X int count = 176 ; /* 0xB0 -- the starting entry for strings. */
X int fd,i ;
X
X if ((fd = open("/dev/kbd",0,0)) < 0)
X {
X FPRINTF(stderr,"sidtool: can't open /dev/kbd\n") ;
X exit(1) ;
X }
X for (i = 0; i < 3; i++) /* Set up function keys. */
X {
X if (state == KEY_SET)
X {
X get_key(fd,key_stations[i],old_key_vals[i],count) ;
X set_key(fd,key_stations[i],new_key_vals[i],count++) ;
X }
X else set_key(fd,key_stations[i],old_key_vals[i],count++) ;
X }
X CLOSE(fd) ;
X}
X
X
Xgetnewscore(x,y) /* Get new user name for highscore. */
Xint x,y ;
X
X{
X if (c)
X {
X switch (c)
X {
X case BSPACE :
X case DEL : if (scorei)
X {
X scorei-- ;
X thisscore[scorei] = ' ' ;
X thisscore[scorei+1] = '\0' ;
X WRITELN(x,y,thisscore) ;
X thisscore[scorei] = '\0' ;
X }
X break ;
X case CR : thisscore[scorei] = '\0' ;
X if (!scorei) WRITELN(100,220," ** No name given. **") ;
X else
X {
X csj = MAXHS - 1 ;
X while (--csj >= csi)
X {
X highscore[csj+1].score = highscore[csj].score ;
X STRCPY(highscore[csj+1].who,highscore[csj].who) ;
X }
X highscore[csi].score = score ;
X STRCPY(highscore[csi].who,thisscore) ;
X puthighscore() ;
X progstate = DOEND ;
X }
X break ;
X default : if (c < ' ') break ;
X thisscore[scorei++] = c ;
X thisscore[scorei] = '\0' ;
X WRITELN(x,y,thisscore) ;
X }
X c = 0 ;
X }
X}
X
X
Xget_options(argc,argv)
Xint argc ;
Xchar *argv[] ;
X
X{
X char *arg ;
X char *p ; /* Pointer to string following argument flag. */
X
X STRCPY(path,progname) ; /* Extract full path name for asteroid files. */
X if ((arg = rindex(path,'/')) == NULL) path[0] = '\0' ;
X else *(++arg) = '\0' ;
X STRCPY(titlestring," Asteroids V3.0. Rich Burridge.") ;
X
X orgx = 0 ;
X orgy = 0 ;
X width = SWIDTH ;
X height = SHEIGHT ;
X givehelp = 1 ;
X while (argc > 1 && (arg = argv[1])[0] == '-')
X {
X p = arg + 2 ;
X switch (arg[1])
X {
X case 'h' : givehelp = 0 ; /* Don't display help message. */
X break ;
X case 'x' : width = atoi(p) ; /* Width of asteroids window. */
X if (width < 500) width = 500 ;
X break ;
X case 'y' : height = atoi(p) ; /* Height of asteroids window. */
X if (height < 500) height = 500 ;
X break ;
X }
X argc-- ;
X argv++ ;
X }
X}
X
X
Xrint(r)
Xint r ;
X
X{
X rr = ((rr*4705 + 1) & 32767) ;
X if (!r) r = 1 ;
X return(rr % r) ;
X}
X
X
Xshowfuel() /* Show how much fuel is left. */
X
X{
X int howmuch ;
X
X howmuch = (int)(fuelmaxlength * ((double)fuel / (double)FULLTANK)) ;
X if (howmuch != fuellength)
X {
X BLT_SCRN(fuelxoffset,height-FONT_HEIGHT,fuelmaxlength,FONT_HEIGHT-2,RCLR) ;
X fuellength = howmuch ;
X BLT_SCRN(fuelxoffset,height-FONT_HEIGHT,fuellength,FONT_HEIGHT-2,RXNOR) ;
X }
X}
X
X
Xshowtitle() /* Display titlestring or bonus message. */
X
X{
X if (!flashbonus)
X {
X SCHRFUNC(RRPL) ;
X WRITELN(orgx+6,orgy+FONT_HEIGHT-2,titlestring) ;
X }
X}
X
X
Xstartflashbonus() /* start bonus flashing. */
X
X{
X flashbonus = 1 ;
X bonusshown = 1 ;
X SCHRFUNC(RRPL) ;
X WRITELN(orgx+6,orgy+FONT_HEIGHT-2,bonusstr) ; /* Don't XOR the first one. */
X ftime(&tstartflash) ; /* Get the time start. */
X tlastflash.time = tstartflash.time ;
X tlastflash.millitm = tstartflash.millitm ;
X}
END_OF_ast_stuff.c
if test 7839 -ne `wc -c <ast_stuff.c`; then
echo shar: \"ast_stuff.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ast_sun.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"ast_sun.c\"
else
echo shar: Extracting \"ast_sun.c\" \(2293 characters\)
sed "s/^X//" >ast_sun.c <<'END_OF_ast_sun.c'
X
X/* ast_sun.c
X *
X * SUN dependent functions and procedures used by the asteroids game.
X * Written by Rich Burridge - SUN Microsystems Australia (Melbourne).
X *
X * Version 3.0. - April 1987.
X *
X * No responsibility is taken for any errors inherent either to the code
X * or the comments of this program, but if reported to me then an attempt
X * will be made to fix them.
X */
X
X#include <stdio.h>
X#include <strings.h>
X#include <sundev/kbd.h>
X#include <sys/ioctl.h>
X#include <sys/types.h>
X#include <sundev/kbio.h>
X#include "bltstuff.h"
X#include "asteroids.h"
X#include <sys/timeb.h>
X#include <suntool/sunview.h>
X#include <suntool/canvas.h>
X
XCursor nullcur,syscur ; /* Asteroids cursors. */
XPixfont *pf ;
X
Xextern Canvas canvas ;
Xextern Pixwin *pw ;
X
Xshort nullcur_data[] = {
X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0
X} ;
Xmpr_static(nullcur_pr,16,16,1,nullcur_data) ;
X
Xshort syscur_data[] = {
X#include "main.cursor"
X} ;
Xmpr_static(syscur_pr,16,16,1,syscur_data) ;
X
Xint sfunc ;
X
X
Xget_key(fd,station,value,count)
Xint fd,station,count ;
Xchar value[MAXLINE] ;
X
X{
X struct kiockey key ;
X
X key.kio_tablemask = 0 ;
X key.kio_entry = count ;
X key.kio_station = station ;
X IOCTL(fd,(int) KIOCGETKEY,(char *) &key) ;
X STRCPY(value,key.kio_string) ;
X}
X
X
Xiocursormode(m) /* Set the current cursor display mode. */
Xint m ;
X
X{
X switch (m)
X {
X case OFFCURSOR : nullcur = window_get(canvas,WIN_CURSOR) ;
X cursor_set(nullcur,CURSOR_IMAGE,&nullcur_pr,0) ;
X window_set(canvas,WIN_CURSOR,nullcur,0) ;
X break ;
X case TRACKCURSOR : syscur = window_get(canvas,WIN_CURSOR) ;
X cursor_set(syscur,CURSOR_IMAGE,&syscur_pr,0) ;
X cursor_set(syscur,CURSOR_OP,PIX_SRC ^ PIX_DST,0) ;
X window_set(canvas,WIN_CURSOR,syscur,0) ;
X }
X}
X
X
Xset_key(fd,station,value,count)
Xint fd,station,count ;
Xchar value[MAXLINE] ;
X
X{
X struct kiockey key ;
X
X key.kio_tablemask = 0 ;
X key.kio_entry = count ;
X key.kio_station = station ;
X STRCPY(key.kio_string,value) ;
X IOCTL(fd,(int) KIOCSETKEY,(char *) &key) ;
X}
X
X
Xwrite_bold(x,y,text)
Xint x,y ;
Xchar text[MAXLINE] ;
X
X{
X pw_text(pw,x,y,ROR,pf,text) ;
X pw_text(pw,x+1,y,ROR,pf,text) ;
X}
END_OF_ast_sun.c
if test 2293 -ne `wc -c <ast_sun.c`; then
echo shar: \"ast_sun.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f asteroids.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"asteroids.h\"
else
echo shar: Extracting \"asteroids.h\" \(4265 characters\)
sed "s/^X//" >asteroids.h <<'END_OF_asteroids.h'
X
X/* asteroids.h
X *
X * Definitions used by the asteroids game.
X * Written by Rich Burridge - SUN Microsystems Australia (Melbourne).
X *
X * Version 3.0. - April 1987.
X *
X * No responsibility is taken for any errors inherent either to the code
X * or the comments of this program, but if reported to me then an attempt
X * will be made to fix them.
X */
X
Xextern char *sprintf() ;
X
X#define CLOSE (void) close /* To make lint happy. */
X#define FCLOSE (void) fclose
X#define FCNTL (void) fcntl
X#define FPRINTF (void) fprintf
X#define IOCTL (void) ioctl
X#define NICE (void) nice
X#define PRINTF (void) printf
X#define READ (void) read
X#define SCANF (void) scanf
X#define SPRINTF (void) sprintf
X#define STRCPY (void) strcpy
X#define WRITE (void) write
X
X#define BYTESPERWORD 2
X#define BHEIGHT 15
X#define BSIZE 2*BHEIGHT+1
X
X/*
X * Macros to test and set bits.
X * i,j are the x,y offsets from pointer.
X * scan is the scan length of the area pointed at.
X */
X
X#define SETON(i,j,scan,ptr) (*(ptr+(scan*(j))+(i)/16) |= (1 << (017 - ((i) & 017))))
X#define SETOFF(i,j,scan,ptr) (*(ptr+(scan*(j))+(i)/16) &= ~(1 << (017 - ((i) & 017))))
X#define BITSET(i,j,scan,ptr) \
X (((*(ptr+(scan*(j))+(i)/16)) &(1 << (017 - ((i) & 017)))) ? (1):(0))
X
X#define BIDLE 0
X#define BWAITING 1
X#define BACTIVE 2
X#define BDYING 3
X
X#define MAXHS 5 /* Max records held in high score file. */
X#define AFACTOR 120
X#define BFACTOR 256
X#define REFUEL 6000 /* fill up tanks every REFUEL points scored per ship */
X
X#define MAXDIFF 15000
X#define MAXLINE 80 /* Maximum string length. */
X
X#ifndef CTRLQ
X#define CTRLQ 17 /* Used to restart the asteroids game. */
X#endif
X#ifndef CTRLS
X#define CTRLS 19 /* Used to halt the asteroids game. */
X#endif
X
X/* Definitions for asteroid keys. */
X#define K_QUIT 'q' /* Quit the asteroids game. */
X#define K_GO 'g' /* Turn the rocket motor on. */
X#define K_STOP 's' /* Turn the rocket motor off. */
X#define K_TELEPORT 't' /* Jump through hyperspace. */
X
X/* Key definitions used by getnewscore. */
X#define BSPACE 8 /* Backspace. */
X#define CR 13 /* Carriage Return. */
X#define DEL 127 /* Delete. */
X
X#define FLASHTIME 4 /* Seconds */
X#define FLICKERTIME 20 /* Jiffies */
X#define FONT_HEIGHT 16 /* Height of font within asteroids. */
X#define FONT_WIDTH 8 /* Width of standard character font. */
X#define FULLTANK 50000 /* Full fuel tanks */
X#define HELPNAME "asteroids.help" /* Name of the initial help file. */
X#define RETURN 13 /* Certain useful ASCII constants. */
X
X#define OFFCURSOR 0 /* Modes for the mouse cursor. */
X#define TRACKCURSOR 1
X
X#define KEY_SET 0 /* Used for function key setup. */
X#define KEY_RESET 1
X
X/* States for the asteroids automation. */
X#define HELP 0 /* Display initial help screen. */
X#define GETRET 1 /* Wait for user to press return. */
X#define STARTUP 2 /* Perform initialisation. */
X#define UPDATE 3 /* Main loop to update screen. */
X#define EXPIRED 4 /* Player is dead. Terminate gracefully. */
X#define NEXTLINE 5 /* Get new username for highscore. */
X#define DOEND 6 /* Finally show highscores and end. */
X#define SCORE 7 /* Get RETURN after highscores. */
X#define CTRLSHIT 8 /* ^S has been hit, do nothing until ^Q. */
X
X/* Asteroid event values. */
X#define LEFTUP 1 /* Left mouse button up. */
X#define LEFTDOWN 2 /* Left mouse button down. */
X#define BUTMIDDLE 3 /* Middle mouse button. */
X#define RIGHTUP 4 /* Right mouse button up. */
X#define RIGHTDOWN 5 /* Right mouse button down. */
X
X#define SWIDTH 768 /* Maximum screen width. */
X#define SHEIGHT 900 /* Maximum screen height. */
X
X/* Set the function to be used for characters. */
X#define SCHRFUNC(f) (sfunc = f)
X
Xstruct hscore
X {
X char who[MAXLINE] ;
X int score ;
X } ;
END_OF_asteroids.h
if test 4265 -ne `wc -c <asteroids.h`; then
echo shar: \"asteroids.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f asteroids.help -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"asteroids.help\"
else
echo shar: Extracting \"asteroids.help\" \(1225 characters\)
sed "s/^X//" >asteroids.help <<'END_OF_asteroids.help'
X WELCOME TO THE GAME OF ASTEROIDS.
X
XThe object of the game, is to destroy the asteroids before
Xthey destroy you.
X
XYou control the spaceship which initially starts in the
Xcentre of the window.
X
XHolding down the LEFT button of the mouse rotates the
Xspaceship anticlockwise.
XHolding down the RIGHT button of the mouse rotates the
Xspaceship clockwise.
XPressing the MIDDLE button will fire a missile out of the
Xfront of the spaceship.
X
XYou can enter hyperspace by pressing the 't' or the R3 function
Xkey. This will return you to the screen in a random position.
X
XYou can turn your rocket motors on with 'g' or the R1 function
Xkey. Pressing 's' or the R2 function key will turn your rocket
Xmotors off.
X
XTo quit the game at any time, just press the q key.
X
XRotating the shapeship, moving or entering hyperspace uses up fuel.
XRunning out of fuel will eventually render you helpless.
X
XFuel tanks are refilled every 6000 points scored per spaceship,
Xand for each new spaceship.
X
XYou get a new spaceship every 10000 points. There are bonus
Xpoints for each set of asteroids you destroy. Also the smaller
Xyour window, the more bonus you get.
X
XYou have three spaceships to start with. Good luck!!
X
XHit RETURN to start the game.
END_OF_asteroids.help
if test 1225 -ne `wc -c <asteroids.help`; then
echo shar: \"asteroids.help\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f asteroids.hs -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"asteroids.hs\"
else
echo shar: Extracting \"asteroids.hs\" \(0 character\)
sed "s/^X//" >asteroids.hs <<'END_OF_asteroids.hs'
END_OF_asteroids.hs
if test 0 -ne `wc -c <asteroids.hs`; then
echo shar: \"asteroids.hs\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f asteroids.icon -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"asteroids.icon\"
else
echo shar: Extracting \"asteroids.icon\" \(1933 characters\)
sed "s/^X//" >asteroids.icon <<'END_OF_asteroids.icon'
X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X */
X 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
X 0xBFFF,0xFFFF,0xFFFF,0xFFFD,0xBFFF,0xFFFF,0xFFFF,0xFFFD,
X 0xBFFF,0xFFFF,0xFFFF,0xFFFD,0xBFFF,0xFFFF,0xFFFF,0xFFFD,
X 0xBFFF,0xFFFF,0xFFFF,0xFFFD,0xBFFF,0xFF7F,0xFEFF,0xFFFD,
X 0xBFFF,0xFE3F,0xFC7F,0xFF3D,0xBFFF,0xFF7F,0xFEFF,0xFF3D,
X 0xB3FF,0xFFBF,0xFDFF,0xFFFD,0xB3FF,0xFFDF,0xFBFF,0xFFFD,
X 0xBFFF,0xFFDF,0xFBFF,0xFF3D,0xBFFF,0xFFEF,0xF7FF,0xFF3D,
X 0xBFFF,0xFFEF,0xF7FF,0xFFFD,0xBFFF,0xFFF7,0xEFFF,0xFFFD,
X 0xBFFF,0xFFC0,0x03FF,0xFFFD,0xBFFF,0xFF80,0x01FF,0xFFFD,
X 0xBFFF,0xFF8F,0xF1FF,0xFFFD,0xBFFF,0xFF1F,0xF8FF,0xFFFD,
X 0xBFFF,0xFF1F,0xF8FF,0xFFFD,0xBFFF,0xFE3F,0xFC7F,0xFFCD,
X 0xBFFF,0xFE3F,0xFC7F,0xFFCD,0xBFFF,0x0000,0x0000,0xFFFD,
X 0xB3FF,0x0000,0x0000,0xFFFD,0xB3FF,0x0000,0x0000,0xFFFD,
X 0xBFFF,0xC7FF,0xFFE3,0xFFFD,0xBFFF,0xE3FF,0xFFC7,0xFFFD,
X 0xBFFF,0xE3FF,0xFFC7,0xFFFD,0xBFFF,0xF1FF,0xFF8F,0xFFFD,
X 0xBFFF,0xF1FF,0xFF8F,0xFFFD,0xBFFF,0xF8FF,0xFF1F,0xFFFD,
X 0xBFFF,0xF8FF,0xFF1F,0xFFFD,0xBFFF,0xFC7F,0xFE3F,0xFFFD,
X 0xBFFF,0xFC7F,0xFE3F,0xFFFD,0xBFFF,0xFE3F,0xFC7F,0xFFFD,
X 0xBFFF,0xFE3F,0xFC7F,0xFFFD,0xBFFF,0xFF1F,0xF8FF,0xFFFD,
X 0xBFFF,0xFF00,0x00FF,0xFFFD,0xBFFF,0xFF00,0x00FF,0xFFFD,
X 0xBFFF,0xFF80,0x01FF,0xFFFD,0xBFFF,0xFFFF,0xFFFF,0xF9FD,
X 0xBFCF,0xFFFF,0xFFFF,0xF9FD,0xBFCF,0xFFFF,0xFFFF,0xFFFD,
X 0xBFFF,0xFFFF,0xFFFF,0xFFFD,0xBFFF,0xFFFF,0xFFFF,0xFFFD,
X 0xBFFF,0xFFFF,0xFFFF,0xFFFD,0xBFFF,0xFFFF,0xFFFF,0xFFFD,
X 0xBFFF,0xFFFF,0xFFFF,0xFFFD,0xBFFF,0xFFFF,0xFFFF,0xFFFD,
X 0xBFFF,0xFFFF,0xFFFF,0xFFFD,0xBFFF,0xFFFF,0xFF3F,0xFFFD,
X 0xBFF9,0xFFFF,0xFF3F,0xFFFD,0xBFF9,0xFFFF,0xFFFF,0xFFFD,
X 0xBFFF,0xFFFF,0xFFFF,0xF9FD,0xBFFF,0xFFFF,0xFFFF,0xF9FD,
X 0xBFFF,0xFFFF,0xFFFF,0xFFFD,0xBFFF,0xFFFF,0xFFFF,0xFFFD,
X 0xBFFF,0xFFFF,0xF9FF,0xFFFD,0xBFFF,0xFFFF,0xF9FF,0xFFFD,
X 0xBFFF,0xFFFF,0xFFFF,0xFFFD,0xBFFF,0xFFFF,0xFFFF,0xFFFD,
X 0x8000,0x0000,0x0000,0x0001,0xFFFF,0xFFFF,0xFFFF,0xFFFF
END_OF_asteroids.icon
if test 1933 -ne `wc -c <asteroids.icon`; then
echo shar: \"asteroids.icon\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f bltstuff.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"bltstuff.h\"
else
echo shar: Extracting \"bltstuff.h\" \(1606 characters\)
sed "s/^X//" >bltstuff.h <<'END_OF_bltstuff.h'
X
X/* bltstuff.h
X *
X * RasterOp definitions used by the Asteroids program.
X * Written by Rich Burridge - SUN Microsystems Australia (Melbourne).
X *
X * Version 3.0. - April 1987.
X *
X * No responsibility is taken for any errors inherent either to the code
X * or the comments of this program, but if reported to me then an attempt
X * will be made to fix them.
X */
X
X#define RRPL PIX_SRC /* RASTEROP codes. */
X#define ROR PIX_SRC | PIX_DST
X#define RXOR PIX_SRC ^ PIX_DST
X#define RCLR PIX_CLR
X#define RSET PIX_SET
X#define RINV PIX_NOT(PIX_DST)
X#define RXNOR PIX_SRC ^ PIX_NOT(PIX_DST)
X
X/* Machine independent rasterop calls. */
X
X/* Manipulate a portion of the screen with itself. */
X#define BLT_SCRN(sx,sy,w,h,op) \
X (pw_writebackground(pw,sx,sy,w,h,op))
X
X/* Move a screen raster to an offscreen area. */
X#define BLT_SCRN_TO_MEM(mem,mx,my,w,h,op,sx,sy) \
X (pw_read(mem,mx,my,w,h,op,pw,sx,sy))
X
X/* Move an offscreen raster area to the screen. */
X#define BLT_MEM_TO_SCRN(sx,sy,w,h,op,mem,mx,my) \
X (pw_write(pw,sx,sy,w,h,op,mem,mx,my))
X
X/* Move an offscreen raster area to another offscreen raster area. */
X#define BLT_MEM(mem1,mx1,my1,w,h,op,mem2,mx2,my2) \
X ((void) pr_rop(mem1,mx1,my1,w,h,op,mem2,mx2,my2))
X
X/* Draw a line of type op,in a raster area. */
X#define LINE(area,x1,y1,x2,y2,op) \
X (pr_vector(area,x1,y1,x2,y2,op,1))
X
X/* Write text at x,y using rasterop function sfunc and font pf. */
X#define WRITELN(x,y,text) \
X (pw_text(pw,x,y,sfunc,pf,text))
END_OF_bltstuff.h
if test 1606 -ne `wc -c <bltstuff.h`; then
echo shar: \"bltstuff.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f main.cursor -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"main.cursor\"
else
echo shar: Extracting \"main.cursor\" \(193 characters\)
sed "s/^X//" >main.cursor <<'END_OF_main.cursor'
X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
X */
X 0x8000,0xC000,0xE000,0xF000,0xF800,0xFC00,0xFE00,0xF000,
X 0xD800,0x9800,0x0C00,0x0C00,0x0600,0x0600,0x0300,0x0300
END_OF_main.cursor
if test 193 -ne `wc -c <main.cursor`; then
echo shar: \"main.cursor\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 1 \(of 2\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked both archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0