[comp.sources.games] v11i082: pc-xbd - Boulder Dash for PC-VGA, Part02/03

billr@saab.CNA.TEK.COM (Bill Randle) (12/13/90)

Submitted-by: soulard@fantasio.inria.fr (Herve Soulard)
Posting-number: Volume 11, Issue 82
Archive-name: pc-xbd/Part02
Environment: PC, MS-DOS, VGA


#! /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 3)."
# Contents:  Makefile bitmap.c bitmaps/xbdlv003 bitmaps/xbdlv009
#   bitmaps/xbdlv010 bitmaps/xbdlv011 bitmaps/xbdlv013
#   bitmaps/xbdlv020 bitmaps/xbdlv025 bitmaps/xbdlv026
#   bitmaps/xbdlv029 bitmaps/xbdlv030 bitmaps/xbdlv031
#   bitmaps/xbdlv033 bitmaps/xbdlv035 bitmaps/xbdlv036
#   bitmaps/xbdlv037 bitmaps/xbdlv038 graph.asm readme.pc scores.c
#   shared.c xbd.h
# Wrapped by billr@saab on Wed Dec 12 10:42:11 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(1361 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
XCC		= cl
XLINK		= link
XRM		= del
XBITMAP		= bitmap.exe
XGAME            = xbd.exe
XEDITOR          = xbde.exe
X
XPROGRAMS        = ${BITMAP} ${GAME} ${EDITOR}
X
X#CFLAGS  	= /AS /Zi /Gs 
X#LDFLAGS	= /Stack:8192 /CO /NOE /NOI
X#ASFLAGS	= /Mx /Zi
X
XCFLAGS 		= /AS /Ot /Gs
XLDFLAGS		= /Stack:8192 /NOE /NOI
XASFLAGS		= /Mx
X
XLEVELS          = xbdlev001 xbdlev002 xbdlev003 xbdlev004 xbdlev005 \
X                  xbdlev006 xbdlev007 xbdlev008 xbdlev009 xbdlev010 \
X                  xbdlev011 xbdlev012 xbdlev013 xbdlev014 xbdlev015 \
X                  xbdlev016 xbdlev017 xbdlev018 xbdlev019 xbdlev020 \
X                  xbdlev021 xbdlev022 xbdlev023 xbdlev024 xbdlev025 \
X                  xbdlev026 xbdlev027 xbdlev028 xbdlev029 xbdlev030 \
X                  xbdlev031 xbdlev032 xbdlev033 xbdlev034 xbdlev035 \
X                  xbdlev036 xbdlev037 xbdlev038
X
XOBJS1   = xbd.obj shared.obj field.obj scores.obj graph.obj
XOBJS2   = xbde.obj shared.obj graph.obj
XOBJS3   = bitmap.obj graph.obj
X
XSRCS1   = xbd.obj shared.obj field.obj scores.obj graph.obj
XSRCS2   = xbde.obj shared.obj graph.obj
XSRCS3   = bitmap.obj graph.obj
X
X
X
Xall:: ${PROGRAMS}
X
X${GAME}: ${OBJS1}
X	$(LINK) $(LDFLAGS) ${OBJS1};
X
Xclean::
X	$(RM) ${GAME}
X
X${BITMAP}: ${OBJS3}
X	$(LINK) $(LDFLAGS) ${OBJS3};
X
Xclean::
X	$(RM) ${BITMAP}
X
X${EDITOR}: ${OBJS2}
X	$(LINK) $(LDFLAGS) ${OBJS2};
X
Xclean::
X	$(RM) ${EDITOR}
X
X
X
END_OF_FILE
if test 1361 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'bitmap.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmap.c'\"
else
echo shar: Extracting \"'bitmap.c'\" \(7867 characters\)
sed "s/^X//" >'bitmap.c' <<'END_OF_FILE'
X/*********************************************/
X/*                                           */
X/*	  Editor for all bitmaps				*/
X/*                                           */
X/*	  PC-VGA version from :				*/
X/*                                           */
X/*		Herve SOULARD, Paris, 1990		*/
X/*                                           */
X/*********************************************/
X
X#include <stdio.h>
X#include <malloc.h>
X#include <graph.h>
X
X#define	X_OFF	100
X#define	Y_OFF	100
X
X#define	X_SIZE	10
X#define	Y_SIZE	10
X
X#define	WIDTH		16
X#define	HEIGHT	16
X
X#define	MAXPGM	23
X
Xstruct videoconfig config;
Xint sizePgm;
X
Xchar *pgms[MAXPGM];
Xchar *bitmap[MAXPGM];
Xchar *name[MAXPGM];
X
X
Xvoid makePgm(char bitmap[],char pgms[])
X{
X	char *ptr,c;
X	int i,j;
X	unsigned r1,r2,r3,r4;
X	unsigned *uptr;
X	
X	ptr = pgms;
X	uptr = (unsigned *)pgms;
X	
X	if (ptr == NULL) {
X		printf ("Erreur allocation (pgms)\n");
X		exit(1);
X	}	
X
X	*ptr = WIDTH;
X	*(ptr+2) = HEIGHT;
X	*(ptr+1) = *(ptr+3) = 0;
X
X	for (i=0; i < HEIGHT;i++) {
X		r1 = r2 = r3 = r4 = 0;
X		for (j=0; j < WIDTH; j++) {
X			c = bitmap[(i*WIDTH)+j];
X			if (c & 0x01)
X				r1 |= (1 << ((WIDTH-1)-j));
X			if (c & 0x02)
X				r2 |= (1 << ((WIDTH-1)-j));
X			if (c & 0x04)
X				r3 |= (1 << ((WIDTH-1)-j));
X			if (c & 0x08)
X				r4 |= (1 << ((WIDTH-1)-j));
X		}
X		/*
X			For compatibility with _putimage from Microsoft
X			
X		*(uptr+2+(i*4)) = r1;
X		*(uptr+2+(i*4)+1) = r2;
X		*(uptr+2+(i*4)+2) = r3;
X		*(uptr+2+(i*4)+3) = r4;
X		*/
X
X		/*	Using my own _putimage (drawPgm)
X		*/
X		*(uptr+2+i) = r1;
X		*(uptr+2+i+16) = r2;
X		*(uptr+2+i+32) = r3;
X		*(uptr+2+i+48) = r4;
X	}
X	for (i=4; i< sizePgm; i+=2) {
X		c = *(ptr+i);
X		*(ptr+i) = *(ptr+i+1);
X		*(ptr+i+1) = c;
X	}
X}
X
X
Xvoid makePgms()
X{
X	int i;
X	
X	for (i = 0; i < MAXPGM;i++) {
X		pgms[i] = (char *)malloc(sizePgm);
X		makePgm(bitmap[i],pgms[i]);
X	}
X}
X
Xvoid drawBitmap(int num)
X{
X	char c;
X	int i,j;
X	int x,y;
X	char *ptrBitmap;
X
X	
X	ptrBitmap = bitmap[num];
X	makePgm(ptrBitmap,pgms[num]);
X	
X	drawPgm(num * 3,8,pgms[num],_GPSET);
X
X	_settextposition(3,0);
X	_outtext("                                                                               ");
X	_settextposition(3,1 + (num * 3));
X	_outtext("^");
X	
X	_settextposition(5,50);
X	_outtext("                    ");
X	_settextposition(5,50);
X	_outtext(name[num]);
X	
X	for (i=0; i < HEIGHT;i++) {
X		y = (i*(Y_SIZE+2)) + Y_OFF;
X		for (j=0; j < WIDTH; j++) {
X			c = ptrBitmap[(i*WIDTH)+j];
X			_setcolor(c);
X			x = (j*(X_SIZE+2)) + X_OFF;
X			_rectangle(_GFILLINTERIOR, x, y, x + X_SIZE, y + Y_SIZE);
X		}
X	}
X}
X
X
Xvoid drawColor()
X{
X	int i;
X	int y;
X	
X	for (i=0;i<16;i++) {
X		_setcolor(i);
X		y = Y_OFF + (i*2*Y_SIZE);
X		_rectangle(_GFILLINTERIOR, 450, y + 5,
X			450 + 2 * X_SIZE, y + 2 * Y_SIZE);
X	}
X}
X
Xvoid setCursor(xC,yC,bitmap)
Xint xC,yC;
Xchar bitmap[];
X{
X	char *ptr,c;
X	int x,y;
X
X	c = bitmap[(yC*WIDTH)+xC];
X	_setcolor(15 - c);
X	y = (yC*(Y_SIZE+2)) + Y_OFF;
X	x = (xC*(X_SIZE+2)) + X_OFF;
X	_rectangle(_GBORDER, x, y, x + X_SIZE, y + Y_SIZE);
X}
X
X
Xvoid unsetCursor(xC,yC,bitmap)
Xint xC,yC;
Xchar bitmap[];
X{
X	char *ptr,c;
X	int x,y;
X
X	c = bitmap[(yC*WIDTH)+xC];
X	_setcolor(c);
X	y = (yC*(Y_SIZE+2)) + Y_OFF;
X	x = (xC*(X_SIZE+2)) + X_OFF;
X	_rectangle(_GBORDER, x, y, x + X_SIZE, y + Y_SIZE);
X}
X
Xvoid setColor(xC,yC,bitmap)
Xint xC,yC;
Xchar bitmap[];
X{
X	char c;
X	int aux;
X
X	c = bitmap[(yC*WIDTH)+xC];
X	_setcolor(c);
X	aux = Y_OFF + (c*2*Y_SIZE);
X	_rectangle(_GFILLINTERIOR, 480, aux + 5, 480+ 2*X_SIZE, aux + 2*Y_SIZE);
X}
X
X
Xvoid unsetColor(xC,yC,bitmap)
Xint xC,yC;
Xchar bitmap[];
X{
X	char c;
X	int aux;
X
X	c = bitmap[(yC*WIDTH)+xC];
X	_setcolor(0);
X	aux = Y_OFF + (c*2*Y_SIZE);
X	_rectangle(_GFILLINTERIOR, 480, aux + 5, 480+ 2*X_SIZE, aux + 2*Y_SIZE);
X}
X
Xvoid load()
X{
X	FILE *map;
X	int i,j,k;
X	char buf[300];
X	int *ptr;
X	char *aux;
X	int color[WIDTH];
X	
X	strcpy(buf,"bitmaps.dat");
X	map = fopen(buf,"r");
X	if (map == 0) {
X		printf("Erreur d'ouverture du fichier\n");
X	}
X	else {
X		for (i = 0;i < MAXPGM;i++) {
X			fgets(buf,300,map);
X			bitmap[i] = (char *)malloc(HEIGHT * WIDTH);
X			name[i] = (char *)malloc(80);
X			sscanf(buf,"%s",name[i]);
X			for (j = 0;j < HEIGHT;j++) {
X				ptr = color;
X				fgets(buf,300,map);
X				sscanf(buf,"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
X					    ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,
X						 ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,ptr);
X				for (k = 0; k < WIDTH;k++)
X					bitmap[i][(j*WIDTH)+k] = (char)color[k];
X			}
X			fgets(buf,300,map);
X
X		}
X		fclose(map);
X	}
X}
X
Xvoid save()
X{
X	FILE *map;
X	char filename[20];
X	int i,j,k;
X	
X	strcpy(filename,"bitmaps.dat");
X	map = fopen(filename,"w");
X	if (map == 0) {
X		printf("Erreur d'ouverture du fichier\n");
X	}
X	else {
X		for (i = 0;i < MAXPGM;i++) {
X			fprintf(map,"%s %2d\n",name[i],i);
X			for (j = 0;j < HEIGHT;j++) {
X				fprintf(map,"\t");
X				for (k = 0;k < WIDTH;k++) 
X					fprintf(map,"%2d ",bitmap[i][(j*WIDTH)+k]);
X				fprintf(map,"\n");
X			}
X			fprintf(map,"\t\n");
X		}
X		fclose(map);
X	}
X}
X
X
Xmain()
X{
X	int fin = 0;
X	char keyhit;
X	int num = 0;
X	int x = 0;
X	int y = 0;
X	int color = 15;
X	int aux;
X	
X	_setvideomode(_MAXRESMODE);
X	_getvideoconfig(&config);
X	sizePgm = (unsigned int)_imagesize(0,0,WIDTH-1,HEIGHT-1);
X
X	load();
X	makePgms();
X	
X	for (aux=0;aux < MAXPGM; aux++)
X		drawPgm(aux * 3,8,pgms[aux],_GPSET);
X
X	drawBitmap(num);
X
X	drawColor();
X	
X	_setcolor(color);
X	aux = Y_OFF + (color*2*Y_SIZE);
X	_rectangle(_GFILLINTERIOR, 420, aux + 5, 420+ 2*X_SIZE, aux + 2*Y_SIZE);
X
X	while (!fin) {
X		setCursor(x,y,bitmap[num]);
X		if (kbhit()) {
X			keyhit = getch();
X			if (keyhit == 0 || keyhit == 0xE0)
X				keyhit = getch();
X			switch (keyhit) {
X				case 32 :
X					unsetColor(x,y,bitmap[num]);
X					bitmap[num][(y*16)+x] = color;
X					drawBitmap(num);
X					setColor(x,y,bitmap[num]);
X					break;
X				case 75 :
X					unsetCursor(x,y,bitmap[num]);
X					unsetColor(x,y,bitmap[num]);
X					if (--x < 0)
X						x = WIDTH-1;
X					setCursor(x,y,bitmap[num]);
X					setColor(x,y,bitmap[num]);
X					break;
X				case 72 :
X					unsetCursor(x,y,bitmap[num]);
X					unsetColor(x,y,bitmap[num]);
X					if (--y < 0)
X						y = HEIGHT-1;
X					setCursor(x,y,bitmap[num]);
X					setColor(x,y,bitmap[num]);
X					break;
X				case 80 :
X					unsetCursor(x,y,bitmap[num]);
X					unsetColor(x,y,bitmap[num]);
X					if (++y > HEIGHT-1)
X						y = 0;
X					setCursor(x,y,bitmap[num]);
X					setColor(x,y,bitmap[num]);
X					break;
X				case 77 :
X					unsetCursor(x,y,bitmap[num]);
X					unsetColor(x,y,bitmap[num]);
X					if (++x > WIDTH-1)
X						x = 0;
X					setCursor(x,y,bitmap[num]);
X					setColor(x,y,bitmap[num]);
X					break;
X				case 73 :
X					unsetCursor(x,y,bitmap[num]);
X					unsetColor(x,y,bitmap[num]);
X					x = y = 0;
X					if (++num > MAXPGM-1)
X						num = 0;
X					drawBitmap(num);
X					setCursor(x,y,bitmap[num]);
X					setColor(x,y,bitmap[num]);
X					break;
X				case 81 :
X					unsetCursor(x,y,bitmap[num]);
X					unsetColor(x,y,bitmap[num]);
X					x = y = 0;
X					if (--num < 0)
X						num = MAXPGM-1;
X					drawBitmap(num);
X					setCursor(x,y,bitmap[num]);
X					setColor(x,y,bitmap[num]);
X					break;
X				case 'S' :
X				case 's' :
X					save();
X					break;
X				case '+' :
X					_setcolor(0);
X					aux = Y_OFF + (color*2*Y_SIZE);
X					_rectangle(_GFILLINTERIOR, 420, aux + 5, 
X						      420+ 2*X_SIZE, aux + 2*Y_SIZE);
X					if (++color > 15)
X						color = 0;
X					_setcolor(color);
X					aux = Y_OFF + (color*2*Y_SIZE);
X					_rectangle(_GFILLINTERIOR, 420, aux + 5, 
X						      420+ 2*X_SIZE, aux + 2*Y_SIZE);
X
X					break;
X				case '-' :
X					_setcolor(0);
X					aux = Y_OFF + (color*2*Y_SIZE);
X					_rectangle(_GFILLINTERIOR, 420, aux + 5, 
X						      420+ 2*X_SIZE, aux + 2*Y_SIZE);
X					if (--color < 0)
X						color = 15;
X					_setcolor(color);
X					aux = Y_OFF + (color*2*Y_SIZE);
X					_rectangle(_GFILLINTERIOR, 420, aux + 5, 
X						      420+ 2*X_SIZE, aux + 2*Y_SIZE);
X					break;
X				case 27 :
X					fin = 1;
X					break;
X			}
X		}
X		unsetCursor(x,y,bitmap[num]);
X	}
X	
X	_setvideomode(_DEFAULTMODE);
X	exit(0);
X}
X
END_OF_FILE
if test 7867 -ne `wc -c <'bitmap.c'`; then
    echo shar: \"'bitmap.c'\" unpacked with wrong size!
fi
# end of 'bitmap.c'
fi
if test -f 'bitmaps/xbdlv003' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv003'\"
else
echo shar: Extracting \"'bitmaps/xbdlv003'\" \(987 characters\)
sed "s/^X//" >'bitmaps/xbdlv003' <<'END_OF_FILE'
X26 35 13 20 10 30 200 0 1000 Take_care_of_the_exit
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XS d w g g gwg g w wg gg w ggggwg lS
XSgg gbggdggwggg w w   g b g bbb   S
XSg gwbbg gggg   b b  gggwgggggwgg S
XSd dwlbgbggwg  gwgwggggbwg  ggwgdgS
XSwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwS
XSgg w  g g wg g w w ggg w  gggw gdS
XSg  wgg  g wgg  bgggggggw b   bb gS
XSbggdbgbg gbgg bwgwg  gg  ggbbwg dS
XSbbgwbbbbbbwbbbbwgwl   gwbb gdwgdgS
XSwwwwwwwwwwwwwwwwgwwwwwwwwwwwwwwwwS
XSdg wggggggwg  gwgwg  g w     wgggS
XSg  bg ggggggg  bg ggg gw gg gw   S
XS dbwbg   gwggggwg  ggg b  g gb d S
XSdbbwbbgl  wggg wgwggggbwbg gbwb dS
XSwwwwwwwwwwwwwwwwgwwwwwwwwwwwwwwwwS
XSg  wgg gggw  g wgwg gg w g ggwgggS
XS g bgg g  ggg  wgggg  gwggggg gggS
XSg gwggggg wgg  bgwgg gg  ggggwgggS
XSgdgwgl  gdwggggwgwgggggwdggggw dgS
XSwwwwwwwwwwwwwwwwgwwwwwwwwwwwwwwwwS
XSgggwg    gwgbg wgwg    w gg gwgggS
XSggdb  glggwgbg gg  g ggwgggggwgggS
XSgggwg g gdbgbg  pwggbggg ggggbgggS
XSgggwd   bbwdbg  Ewggbdgwg ggdwd bS
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 987 -ne `wc -c <'bitmaps/xbdlv003'`; then
    echo shar: \"'bitmaps/xbdlv003'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv003'
fi
if test -f 'bitmaps/xbdlv009' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv009'\"
else
echo shar: Extracting \"'bitmaps/xbdlv009'\" \(979 characters\)
sed "s/^X//" >'bitmaps/xbdlv009' <<'END_OF_FILE'
X26 35 12 10 25 25 200 0 1000 Loop_or_kill?
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XSgggggggggggggggggggggggggggggggggS
XSpggggggggggggggggggggggggggggggggS
XSgggggggggggggggggggggggggggggggggS
XSgggggggggggggggggggggggggggggggggS
XSgggggw w w w w wgggggggggggggggggS
XSgggggw w w w w wgggggggggggggggggS
XSgggggw w w w w wgggggggggggggggggS
XSgggggw w w w w wgbbbbbbbbbbbbbbbgS
XSgggggw w w w w wgggggggggggggggggS
XSgggggwlwlwlwlwlwgggggggggggggggggS
XSgggggwdwdwdwdwdwgggggggggggggggggS
XSgggggwwwwwwwwwwwgggggggggggggggggS
XSgggggwdwdwdwdwdwgggggggggggggggggS
XSgggggwgwgwgwgwgwgggggggggggggggggS
XSgggggwlwlwlwlwlwgggggggggggggggggS
XSgggggw w w w w wgggggggggggggggggS
XSgggggw w w w w wgggggggggggggggggS
XSgggggw w w w w wgggggggggggggggggS
XSgggggggggggggggggggggggggggggggggS
XSgggggggggggggggggggggggggggggggggS
XSgggggggggggggggggggggggggggggggggS
XSggggggggggggggggggggggggggggggggES
XSgggggggggggggggggggggggggggggggggS
XSgggggggggggggggggggggggggggggggggS
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 979 -ne `wc -c <'bitmaps/xbdlv009'`; then
    echo shar: \"'bitmaps/xbdlv009'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv009'
fi
if test -f 'bitmaps/xbdlv010' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv010'\"
else
echo shar: Extracting \"'bitmaps/xbdlv010'\" \(983 characters\)
sed "s/^X//" >'bitmaps/xbdlv010' <<'END_OF_FILE'
X26 35 11 25 10 30 200 0 1000 Hell_freezes_over
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XSbgbggggbgbgggpgbgbgbgggbg  b dggbS
XSggglb  ggg g ggg gbgg ggggbbggg gS
XSdgbgg gg      bg gg ggg  gbbgdbdbS
XSSSSSSSSg bgg gggg g ggb  gSSSSSSSS
XS   ggbggggbgbgg ggg g gbg gggg   S
XS   g g gg   bb g b gggggbgg g    S
XSlbdgbbgblbgbbg gbbgbgg gg gg gl  S
XSEgbgggggbg ggbg ggbglg gbbggggbddS
XSSSSSSSSggbggbg b bg bgggggSSSSSSSS
XSgbbggbgb g ggg ggg gbbg g g ggggbS
XS bg gggbggg b gbb   ggbg ggg ggg S
XSggb  gggg g gg ggbgbg bgbbg gbgggS
XSggbgg lgbggg  gg g g gbgggbbgbgggS
XSbbbg ggbgg g b gg g ggggbggggg g S
XSgggg gbggbg gg   g gb  ggggg   ggS
XS gbgl gg gg   ggb ggbg  gl g b bgS
XSbggggggg b bgb ggg   bg bggg glggS
XSg  g gbgbggggbg g gg g  gggg   ggS
XSg lgggbggg gbg ggg  bgbgbgbggggggS
XS gb   gg    g g gg gggg  gg gggbgS
XSgggggg   g gggggg  g  g  gggggbggS
XSbggb gggg g   B Bgggl  ggb g bbggS
XSgg gb g  gggg BBBB gggg gggg gbggS
XSbggbgg gggglgBBBBBBBgg g g gbggg S
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 983 -ne `wc -c <'bitmaps/xbdlv010'`; then
    echo shar: \"'bitmaps/xbdlv010'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv010'
fi
if test -f 'bitmaps/xbdlv011' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv011'\"
else
echo shar: Extracting \"'bitmaps/xbdlv011'\" \(992 characters\)
sed "s/^X//" >'bitmaps/xbdlv011' <<'END_OF_FILE'
X26 35 15 12 50 250 200 0 1000 Boulder-dash_goes_PAC-MAN
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XS            S       Sl           S
XS  SSS   S   S       S   S   SSS  S
XS  S    dS   S  SSS  S   Sd    S  S
XS  S   SSS   S  SlS  S   SSS   S  S
XSd           S rSSS  S           dS
XSSSSSSSSSSS  S       S  SSSSSSSSSSS
XS                                 S
XS                                 S
XS  SSS  S                 S  SSS  S
XS  Sl   S  SSSSS   SSSSS  S    Sl S
XS       S  S     d     S  S       S
Xd       S  Sl    E     Sl S       d
XS    S  S  SSSSSSSSSSSSS  S  S    S
XS    S  S                 S  S    S
XS    S  S        d        S  S    S
XSSSSSS  SSSSSS   S   SSSSSS  SSSSSS
XS                                 S
XSl                                S
XS  S  SSSSSSSSSS   SSSSSSSSSS  S  S
XS  S  S                     S  S  S
XS  S  S                     S  S  S
XS  S  S  SSSSSSS   SSSSSSS  S  S  S
XS  S  S        S   S        S  S  S
XSd S  S       dS p Sd       S  S dS
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 992 -ne `wc -c <'bitmaps/xbdlv011'`; then
    echo shar: \"'bitmaps/xbdlv011'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv011'
fi
if test -f 'bitmaps/xbdlv013' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv013'\"
else
echo shar: Extracting \"'bitmaps/xbdlv013'\" \(978 characters\)
sed "s/^X//" >'bitmaps/xbdlv013' <<'END_OF_FILE'
X26 35 15 4 100 300 200 0 1300 Can_be_done
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XSggggggggggggggggggggggggggggggddlS
XSgwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwS
XSgwwwb                          glS
XSgwbwg                          g S
XSgwggw    SS SSS S  S   SS  SSS g S
XSgwgww    S  S S SS S   S S S   ggS
XSgwgww wg S  SSS S SS   SS  SS  glS
XSgwgww wg S  S S S  S   S S S   g S
XSgwgww wg SS S SbS  S   SS  SSS g S
XSgwgww wg      ggg              ggS
XSgwggw wg      ggg              glS
XSgwwwwwwg b                     g S
XSgwwwwwwgggggggggggg            g S
XSgwwwwwwwwwgwwww wwwww         Sg S
XSgWwwwwwww  wwww wwwww         Sg S
XSgwwwwwww  wwSSw SSSwS  S SSS  SggS
XSgwwwwww  wwwS S S SwSS S S    SglS
XSgwwwww  wwwwS S S SwS SS SS   Sg S
XSgwwww  wwwwwS S S SwS  S S     g S
XSgwww  wwwwwwSSw SSSwS  S SSS  Sg S
XSgww  wwwwwwwwww wwwww          ggS
XSgw  wwwwwwwwwgwpwwwww          glS
XSgw wwwwwwwwwwgwwwwwww          g S
XSdw wwdggggggggggdWwww          g S
XSSSSSSSESSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 978 -ne `wc -c <'bitmaps/xbdlv013'`; then
    echo shar: \"'bitmaps/xbdlv013'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv013'
fi
if test -f 'bitmaps/xbdlv020' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv020'\"
else
echo shar: Extracting \"'bitmaps/xbdlv020'\" \(979 characters\)
sed "s/^X//" >'bitmaps/xbdlv020' <<'END_OF_FILE'
X26 35 15 12 10 30 200 0 1000 Almost_boring
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XS          E                      S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                p                S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS b b b b b b b                   S
XSwgwgwgwgwgwgwgwwwwwwwwwwwwwwwwwwwS
XSnl nl  nl    nl        nl        S
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 979 -ne `wc -c <'bitmaps/xbdlv020'`; then
    echo shar: \"'bitmaps/xbdlv020'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv020'
fi
if test -f 'bitmaps/xbdlv025' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv025'\"
else
echo shar: Extracting \"'bitmaps/xbdlv025'\" \(977 characters\)
sed "s/^X//" >'bitmaps/xbdlv025' <<'END_OF_FILE'
X26 35 10 50 10 20 100 0 2000 Wie_bitte?!
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   S
XS                           b w b S
XSwwwwwwwwwwwwwwwwwwwwwwwww  g w w S
XS                    brrrw wwgw   S
XS wwwwwwwwwwwwwwwwwwwbwwww wggww wS
XS wpbllwb           wbw    wggw b S
XS wgwllww           wbw wwwwggw w S
XS w wwllww          wbw wl    w   S
XS w wwwllww         wbw w ggg ww wS
XS w wwwdllww        wdw w gdg w b S
XS w   wddllww       wdw w ggg w w S
XS w w wdddllww      wdw w    lw   S
XS w w wddddllww     wdw wwwwwgww  S
XS w w ggddddllww    wdw     w w b S
XS w w w gddddllww   wdwwwww w w w S
XS w w w wgwdddllww  wdwwdbw w w   S
XS w w w w gddddllww ddd bew w ww wS
XS w w w w wgddddllwewdSbw w w w b S
XS w w w w w gddddllwwdSbw w w w w S
XS w w w w w wgwwwwllwdSbw w wEw   S
XS w w wb      wwwwwlllSbw w wwww wS
XS w w wbwwwwwwwwwwwwllSbw wr   gb S
XS w    d         wwwwlSbw bwwwwww S
XS wwwwwwwwwwwww  wwwwwSbw g       S
XS                      d  gwwwwww S
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSww S
END_OF_FILE
if test 977 -ne `wc -c <'bitmaps/xbdlv025'`; then
    echo shar: \"'bitmaps/xbdlv025'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv025'
fi
if test -f 'bitmaps/xbdlv026' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv026'\"
else
echo shar: Extracting \"'bitmaps/xbdlv026'\" \(977 characters\)
sed "s/^X//" >'bitmaps/xbdlv026' <<'END_OF_FILE'
X26 35 14 4 100 200 200 0 1000 Take_eight
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XSwwwwwwwb bggggbg gggggg  gwwwwwwwS
XS       ggbg bggg gbggbg gg       S
XSdl     ggggggggg ggg gggbgl     dS
XSwwwwwwwgg bgbgbg bgggg gbgwwwwwwwS
XSwwwwwwwbg ggbggg lggggggggwwwwwwwS
XS       ggbgbbg gggggbgbggg       S
XSdl     gbbggggbbggggg ggggl     dS
XSwwwwwwwggggg gggggbgg ggg wwwwwwwS
XSwwwwwwwgggggbgggggggbggb gwwwwwwwS
XS       gg gggggbbggbgggggg       S
XSdl     gbbgbgbgggg g gggggl     dS
XSwwwwwww gggg   gggggggbgggwwwwwwwS
XSwwwwwwwgbgggbggbgbgbggggggwwwwwwwS
XS       ggggbggbgblggg   bg       S
XSdl     gbg ggggggggbggggggl     dS
XSwwwwwwwggggggbggggggggbgggwwwwwwwS
XSwwwwwwwggbbglggggbbgg ggggwwwwwwwS
XSggggggggggggggggbbggbgbggggggggbbS
XSggbggg gggbbgbggggggggggbggggggbbS
XSggbgbg   bgg    bgggggggggg ggggbS
XSg ggggggbggg gg lggg  ggggg gbggbS
XSgggggggbgggg bggggggl ggbgggglgggS
XSggpggbgggggg gbgggbggggggggggggggS
XSggggbggb ggggggg gggggg ggg ggggES
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 977 -ne `wc -c <'bitmaps/xbdlv026'`; then
    echo shar: \"'bitmaps/xbdlv026'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv026'
fi
if test -f 'bitmaps/xbdlv029' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv029'\"
else
echo shar: Extracting \"'bitmaps/xbdlv029'\" \(993 characters\)
sed "s/^X//" >'bitmaps/xbdlv029' <<'END_OF_FILE'
X26 35 9 30 5 10 200 1000 1000 Wish_these_were_real_walls
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XSggggggggggggg llllllllllllggdggggS
XSgtgdggggggggg gggggggtggggggtgdggS
XSgggtgggSSgdgg ggggggggggggggggtggS
XSggggggggggtgg gggdggggdggggggggggS
XSgdggggdgggggg gggtggggtggggggggggS
XSgtggggtggggggbggggggggttgggggdgggS
XSggggggtggggggbgggggggggggggggttggS
XSgggggggggggggpggggggdgggggdggggggS
XSggggggggggtdw wggggttgggggSSgggggS
XSgdgdggggggttw wggggggggggggggggggS
XSgtttggggggggwwwgggggggggggggggggdS
XSggggggggdggggggggggggggggggggggttS
XSgggdggggtgggggggggdggggggdgdgggggS
XSgggSggggtdggggggggtggggggttttggggS
XSgggSdSggttgggggggtgtgggdgggggggggS
XSgggSSSggdgggggdggggggggEgggggggggS
XSggggggggtgggggtggggggggggggggggggS
XSgggggggggggSggtggggggggggggdgggdgS
XSdggggdggggggggggdggggggggggtgggtgS
XStggggtdgggggggggtgggggtdgggtgggggS
XSgggggttgggggggggggggggttgggggggggS
XSggdgggtgggdgggggggdggggtgggggggggS
XSggtggggggttgggdgggtgggggggggdggggS
XSggtgggggggggggtgggggggggggggtggggS
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 993 -ne `wc -c <'bitmaps/xbdlv029'`; then
    echo shar: \"'bitmaps/xbdlv029'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv029'
fi
if test -f 'bitmaps/xbdlv030' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv030'\"
else
echo shar: Extracting \"'bitmaps/xbdlv030'\" \(981 characters\)
sed "s/^X//" >'bitmaps/xbdlv030' <<'END_OF_FILE'
X26 35 11 60 5 25 200 200 1000 Back_to_simple
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XS                                 S
XS  gdgdgdgd               gdgdgd  S
XS  SSSSSSSSl  gdgdgdgdg   SSSSSSl S
XS             SSSSSSSSSl          S
XS                                 S
XS  SSSSSSSSl              SSSSSSl S
XS             gdgdgdgdg           S
XS             SSSSSSSSSl          S
XS  dgdgdgdg               gdgdgd  S
XSp SSSSSSSSl              SSSSSSl S
XS                Sg               E
XS                Sd               S
XS  dgdgdgdgdgdg  Sg  gdgdgdgdgdg  S
XS  SSSSSSSSSSSSl Sd  SSSSSSSSSSSl S
XS                Sg               S
XS                Sd               S
XS  dgdgdgdgdgdg  Sg  gdgdgdgdgdg  S
XS  SSSSSSSSSSSSl Sd  SSSSSSSSSSSl S
XS                Sg               S
XS                Sd               S
XS  dgdgdgdgdgdg  Sg  gdgdgdgdgdg  S
XS  SSSSSSSSSSSSl Sd  SSSSSSSSSSSl S
XS                Sgl              S
XS                                 S
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 981 -ne `wc -c <'bitmaps/xbdlv030'`; then
    echo shar: \"'bitmaps/xbdlv030'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv030'
fi
if test -f 'bitmaps/xbdlv031' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv031'\"
else
echo shar: Extracting \"'bitmaps/xbdlv031'\" \(994 characters\)
sed "s/^X//" >'bitmaps/xbdlv031' <<'END_OF_FILE'
X26 35 15 27 10 20 200 200 2200 No_name_for_this_level_yet
XSwd bb w b bbw  b  w  bb w  bbbw  S
XSwbbbb  dgbgb  bbgd  bbg  b ggb ggS
XSwgggbgwb bggwgggbgwgbgggwbd ggwdgS
XSwb ggbwb gggw ggbgwdgggbwbbgbgwggS
XSwwwgwwwwwgwwwwwgwwwwwgwwwwwgwwwgbS
XSwdgbb wg  g w bgggw gg  wdggb wgbS
XSwgbbbgwggbggwgbgggw gbggwgggggwggS
XSwgbggg gggbgbgbgggggggggb gggg  gS
XSwgbggbwgggbgwbbgggwdgbggwgggggw gS
XSwbbggbwg gbdwdgg bwbggbgw bbb wbbS
XSwwwgwwwwwgwwwwwgwwwww wwwwwgwwwbdS
XSw bb  w  gg wg bggwg d gw gg  wbgE
XSwpgbbgwgbggbwgggg w gbg w ggbbwbgS
XSwg gbg gbbgb  gg     g    g bg ggS
XSwgggbbwgggbdw ggg w g g wggbggwggS
XSwb gdbw  gbbwgb dgwg   gwbbggdwbgS
XSwwwgwwwwwgwwwwwdwwwwwbwwwww wwwggS
XSwbgg dwb gg w bgbgw  gg w ggg wbgS
XSwbggggwdggg wbb g w ggggwbgggbwbgS
XSwbgggggggbggggg g  gggggbggggggbdS
XSwb gggwggggbwgggg wgggg w  gggwggS
XSwbbgbgwgbg bwb g bw  g dwdggggwggS
XSwwwgwwwwwgwwwwwgwwwwwgwwwww wwwggS
XSggggggggg bggggggggggggbgggdgggggS
XSd gggggbbgdgbggbbggggdgggggggbgggS
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 994 -ne `wc -c <'bitmaps/xbdlv031'`; then
    echo shar: \"'bitmaps/xbdlv031'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv031'
fi
if test -f 'bitmaps/xbdlv033' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv033'\"
else
echo shar: Extracting \"'bitmaps/xbdlv033'\" \(989 characters\)
sed "s/^X//" >'bitmaps/xbdlv033' <<'END_OF_FILE'
X26 35 12 50 5 8 120 1000 1300 Don't_hurry,_be_wappy!
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XSgbgggggggbgggggBgggbgggggbgggggggS
XEgggggbbggbgggggggggggbggggggbggbgS
XSggbgggbgggggbgggbggbgggbgbgbbggggS
XSgggggggggggggbggggggggggggg gggggS
XS             p                   S
XS                                rS
XS   r  r                          S
XS                    r            S
XS              r                  S
XS                    r            S
XS                                rS
XS                        r        S
XS        r       r                S
XS                                 S
XS                                 S
XS                                 S
XS                                 S
XS                                rS
XS                                 S
XS rttttttttttttttttttttttttttttt  S
XS         r          r           rS
XS                                 S
XS                                 S
XS                                rS
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 989 -ne `wc -c <'bitmaps/xbdlv033'`; then
    echo shar: \"'bitmaps/xbdlv033'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv033'
fi
if test -f 'bitmaps/xbdlv035' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv035'\"
else
echo shar: Extracting \"'bitmaps/xbdlv035'\" \(1007 characters\)
sed "s/^X//" >'bitmaps/xbdlv035' <<'END_OF_FILE'
X26 35 12 48 8 20 200 100 2000 Feels_like_I'm_going_to_loose_my_mind...
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XS bgg  g wbb b    gbg gg    db  g S
XS g gwggggggbggggbggggggggggggg ggS
Xg g  g ggggbggbggbgg  g g bgggg g S
XS dbgggggggdgggggg b ggg gg bgg  bS
XSbbgggw ggggggdgbbggg b  g gggdg gS
XS gbbgg ggggdgggggggbgggggbg gggl S
XSg ggg bggbggggggggwggggbgg gggg gS
XSbgggggggggggddgggggggg gg g g g gS
XS gg  gg  gbgggbggdgdggg g  ggggggS
XS  g gdgl  gggggggg gg gg dbggbg  S
XS  gbggb gggggd g bg gg  bgg ggggdS
XSw gb g g  gggggdggg  gg   gg b gbS
XS  ggg ggggdgggggg g gwgg  gdgggggS
XS  bgggg ggggggt gg  gggg gggg wbgS
XSdbb  bggggggg g g  g   g b  gggggS
XSgggg wg gbggg ggggg gggg g g ggbgS
XSb ggggggpggggbg g g gg  gbg ggg gS
XS gdgggg ggwgggggbg gdgb gggggg  gS
XS gggb  gggg g ggggb gwg g gbggl gS
XS gbggbggg  b  gbgggdgggdg bg  gg S
XS bwggg g bggg dg ggg ggggbbggggggS
XS gggdgbgwgg g g gg b  d ggggggdg S
XSlgg bbggggggg gggg ggggbbggg ggg S
XSdbbdbb b  gggg b  g b bbbwgdgggb E
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 1007 -ne `wc -c <'bitmaps/xbdlv035'`; then
    echo shar: \"'bitmaps/xbdlv035'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv035'
fi
if test -f 'bitmaps/xbdlv036' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv036'\"
else
echo shar: Extracting \"'bitmaps/xbdlv036'\" \(1014 characters\)
sed "s/^X//" >'bitmaps/xbdlv036' <<'END_OF_FILE'
X26 35 15 20 10 20 200 200 1000 Three's_a_crowd by farnum@sequoia.Berkeley.edu
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSESSSS
XSS     S wld   g w     bSSS       S
XSS  Sd S wSdS  d w pgbgdSSS       S
XSS b g g w wS  g w   wSdSSS       S
XSS g   b w  w  b w w  SdSSS       S
XSS    pg w   wpg w  w  g ww       S
XSS     g w     g w   r   ww       S
XSSr      wr      w       ww  r    S
XSSwwwwwwwSwwwwwwwSwwwwwwwSSwwwwwwwS
XS               S     b   S       S
XS               S    gg   S       S
XS           SSSSS         S       S
XS       b  Srb     b      Sl      S
XS       g   SbS    gg     S       S
XS           SbSS          S       S
XS           SbSSS         SwwwwwwwS
XS           SbSSSS   gg   S       S
XS  d    e    g     S      S       S
XS Sld       ggggggd    SbSSSS     S
XS  Sld           Sg    SbbbSS     S
XS   Sld          Sg gg  ggggS     S
XS    Sld         SS    SSSrS      S
XS     Sg                  w       S
XS                         w       S
XS                         w       S
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 1014 -ne `wc -c <'bitmaps/xbdlv036'`; then
    echo shar: \"'bitmaps/xbdlv036'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv036'
fi
if test -f 'bitmaps/xbdlv037' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv037'\"
else
echo shar: Extracting \"'bitmaps/xbdlv037'\" \(1001 characters\)
sed "s/^X//" >'bitmaps/xbdlv037' <<'END_OF_FILE'
X26 35 10 60 10 20 0 0 2000 Eat_Me by farnum@sequoia.Berkeley.edu
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
XS    SdSdS                        S
XS  b SdSSd          e e e e       S
XS  g SdSggd                       S
XS  b SdSdggd                      S
XS  g SdSgdbgd                     S
XS  b grgSgdbgd                    S
XS  g  S  Sgdggd                   S
XS   l   w Sgdggd    SdS           S
XS      w   Sgdgg    dld           S
XSb    w    dSg      SdS           S
XSgd   dS  dS         Sd           S
XSebdg g SdSngg        Sd bbbbbbbbbS
XSbdb     Sd  g         SddddddddddS
XSdbdg  e bSd            SSSSSSSSSSS
XSbdb     g wd        dgggggggd    S
XSdgdg  Sw  dS       egbdbdbdbg    S
XSbdb    e dw         dgggggggd    S
XEebg     dw          gbdbdbdbg    S
XESdS    dw            gggggdg     S
XSSbS   dw             SSSSSbS  p  S
XS g e dw                  bnSS    S
XS  w  Sd                gSbSSd    S
XS wSw  wd                SbSSSe   S
XSdlg    wd                dSSd    S
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 1001 -ne `wc -c <'bitmaps/xbdlv037'`; then
    echo shar: \"'bitmaps/xbdlv037'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv037'
fi
if test -f 'bitmaps/xbdlv038' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bitmaps/xbdlv038'\"
else
echo shar: Extracting \"'bitmaps/xbdlv038'\" \(983 characters\)
sed "s/^X//" >'bitmaps/xbdlv038' <<'END_OF_FILE'
X26 35 15 50 20 20 200 200 2000 Madam,_I'm_Adam
Xddddddddddd             ddddddddddd
Xggggggggggg             ggggggggggg
X               wwdww               
X               wrwrw               
X                dgd                
X               dwwwd               
X              dw d wd              
X             dwb g bwd             
X            dw g d g wd            
X           bggggbgbggggb           
X           g  b gdg b  g           
X            gdgg g ggdg            
X           d g       g d           
X           g     p     g           
X                ddd                
X            ddd gbg ddd            
X      ddd   gbg  g  gbg   ddd      
X      gbg  e g       g e  gbg      
X       g                   g       
X                                   
X                                   
X                                   
X  SSS                         SSS  
X  eES                         SSe  
X  SSS                         SSS  
XSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
END_OF_FILE
if test 983 -ne `wc -c <'bitmaps/xbdlv038'`; then
    echo shar: \"'bitmaps/xbdlv038'\" unpacked with wrong size!
fi
# end of 'bitmaps/xbdlv038'
fi
if test -f 'graph.asm' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'graph.asm'\"
else
echo shar: Extracting \"'graph.asm'\" \(1178 characters\)
sed "s/^X//" >'graph.asm' <<'END_OF_FILE'
X	TITLE	SOUND.ASM
X
X
X	PAGE   ,132
X
X
X
X
X	.MODEL	SMALL
X
X
X	.CODE
X
X
X;
X;	void drawPgm(int x, int y, char *pgm, char mode)
X;
X
X	PUBLIC	_drawPgm
X
X_drawPgm	PROC
X
X	push	bp
X	mov	bp, sp
X
X	push	si
X	push	di
X	push	es
X
X
X	mov	ax, 0A000h
X	mov	es, ax
X
X	mov	ax, word ptr [BP+06h]	; y
X	mov	bx, 80
X	mul	bx
X	add	ax, word ptr [BP+04h]	; x
X	mov	di, ax
X
X	mov	si, word ptr [BP+08h]	; pgm
X	add	si, 4
X
X
X	cld
X
X	mov	dx, 03CEh
X
X	mov	ax, 0FF08h		; All bits are writen
X	out	dx, ax
X
X
X	mov	ax, 0005h		; Write Mode 0
X	out	dx, ax
X
X	mov	ax, 0003h		; Mode Register SETed
X	out	dx, ax
X
X
X	mov	dx, 03C4h
X	mov	bx, 78
X
X
X	push	di
X	mov	cx, 16	
X	mov	ax, 0102h		; Enable PLAN 0
X	out	dx, ax
Xl1:
X	movsw
X	add	di, bx
X	loop	l1
X	pop	di
X
X
X	push	di
X	mov	cx, 16
X	shl	ah, 1			; Enable PLAN 1
X	out	dx, ax
Xl2:
X	movsw
X	add	di, bx
X	loop	l2
X	pop	di
X
X
X	push	di
X	mov	cx, 16
X	shl	ah, 1			; Enable PLAN 2
X	out	dx, ax
Xl3:
X	movsw
X	add	di, bx
X	loop	l3
X	pop	di
X
X
X	mov	cx, 16
X	shl	ah, 1			; Enable PLAN 3
X	out	dx, ax
Xl4:
X	movsw
X	add	di, bx
X	loop	l4
X
X	
X	mov	ax, 0F02h
X	out	dx, ax
X
X	mov	dx, 03CEh
X	
X	mov	ax, 0000h
X	out	dx, ax
X	mov	ax, 0001h
X	out	dx, ax
X	mov	ax, 0FF08h
X	out	dx, ax
X
X
X	pop	es
X	pop	di
X	pop	si
X
X	mov	sp, bp
X	pop	bp
X
X	ret
X
X
X_drawPgm	ENDP
X
X
X	END
END_OF_FILE
if test 1178 -ne `wc -c <'graph.asm'`; then
    echo shar: \"'graph.asm'\" unpacked with wrong size!
fi
# end of 'graph.asm'
fi
if test -f 'readme.pc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'readme.pc'\"
else
echo shar: Extracting \"'readme.pc'\" \(3779 characters\)
sed "s/^X//" >'readme.pc' <<'END_OF_FILE'
X*****************************************************************************
X*                                                                           *
X*                                                                           *
X*   IBM PC and compatible with VGA card (640*480) BOULDER DASH  version.    *
X*                                                                           *
X*                                                                           *
X*****************************************************************************
X
X
X
XOriginal version for X11 windowing system :
X
X	Jeroen Houttuin
X	Informatikdienste-Kommunikationssysteme
X	ETH Zentrum RZ-H7
X	CH-8092 Zurich
X	tel +41-1-2565837
X	fax +41-1-2615389
X	e-mail: houttuin@ks.id.ethz.ch
X	X.400 : C=CH;ADMD=ARCOM;PRMD=SWITCH;O=ETHZ;OU=id;OU=ks;S=houttuin
X
X
X
XPC Version :
X
X	Herve Soulard
X	e-mail: soulard@sor.inria.fr
X
X
X
X
X
XPROGRAMS
X--------
X
X	- XBD.EXE, the game,
X	- XBDE.EXE, level editor for XBD.EXE,
X	- BITMAP.EXE, bitmap editor for XBD.EXE.
X
X
X
XINSTALLATION 
X------------
X
X	To use these programs you must copied them to your play
X	directory. 
X
X	You also need to copied some files to the play directory or
X	another one. This later one can be set in the file XBD.H
X	with the LIB define, or with the XBDLIB environment variable.
X		
X	Those files are :
X		- xbdlv*, levels for the game,
X		- default, default level,
X		- bitmaps.dat, all bitmaps used by the game,
X		- scores, all scores.
X
X	You find those files in the BITMAPS directory.
X
X
X	If you want your real name in the score file, you must set
X	the USER environment variable. 
X
X
X
XCOMPILATION
X-----------
X
X	The Makefile is writen for GMAKE (GNU make) and use the
X	Microsoft C compiler and Assembler. 
X
X
X
XXBD.EXE
X-------
X
X	Usage : XBD [-l level]
X
X	The goal is to collect the more of diamonds, the exit to next
X	level will blink when you will get enough diamond. New level
X	gives you one life more. For each level you have a limited
X	time, and a limited number of lives.
X
X
X	Keys used within the game :
X
X		- ARROWS, move the guy,
X		- 'R' or 'r', redraw the screen,
X		- 'D' or 'd', kill the guy,
X		- SPACE, pauses the game,
X		- ESC, ends the game.
X
X	
XXBDE.EXE
X--------
X
X	Usage : XBDE [-h heigth] [-w width] -l level
X
X	With XBDE you can edit the level files for XBD. Those files
X	must be in the current directory, or in the directory
X	precised by XBDLIB.
X
X	
X	Keys used int the editor :
X
X		- ARROWS, move the cursor,
X		- PG_UP and PG_DOWN, chose the bitmap,
X		- SPACE, set the current position with the current
X			 bitmap,
X		- 'C' or 'c', clear the level,
X		- 'U' or 'u', save the level,
X		- ESC, ends editing.
X
X	All available bitmaps are on the right side of the screen.
X	The small cursor on their left shows the current selected
X	bitmap (change with PG_UP and PG_DOWN), the other one on the
X	right side shows the bitmap under the level cursor.
X
X
X
XBITMAP.EXE
X----------
X
X	Usage : BITMAP
X
X	This program allows you to edit all bitmaps available in the
X	BITMAPS.DAT file. This file must be in the current directory,
X	and after editing you must copy it in the play directory or
X	the one precised by XBDLIB.
X
X	All bitmaps are drawn on the top of the screen, the current
X	bitmap is zoomed in the middle, its name is printed and all
X	colors are drawn on the rigth of the screen.
X
X	
X	Keys used in the editor :
X
X		- ARROWS, move the cursor on the zoomed bitmap,
X		- PG_UP and PG_DOWN, chose the current bitmap,
X		- SPACE, set the current pixel with the current
X			 color,
X		- '+' and '-', chose the current color,
X		- 'S' or 's', save the bitmaps,
X		- ESC, ends editing.
X
X	A small cursor indicates wich bitmap is currently being
X	edited. 
X
X	On the left of all colors a square indicates the current
X	color, and on the right another square gives the color of the
X	current pixel.END_OF_FILE
if test 3779 -ne `wc -c <'readme.pc'`; then
    echo shar: \"'readme.pc'\" unpacked with wrong size!
fi
# end of 'readme.pc'
fi
if test -f 'scores.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'scores.c'\"
else
echo shar: Extracting \"'scores.c'\" \(3620 characters\)
sed "s/^X//" >'scores.c' <<'END_OF_FILE'
X/*********************************************/
X/* you just keep on pushing my luck over the */
X/*           BOULDER        DASH             */
X/*                                           */
X/*     Jeroen Houttuin, ETH Zurich, 1990     */
X/*                                           */
X/*                                           */
X/*	  PC-VGA version from :				*/
X/*                                           */
X/*		Herve SOULARD, Paris, 1990		*/
X/*                                           */
X/*********************************************/
X
X#include <stdio.h>
X#include "xbd.h"
X
Xchar           *getenv();
X
X#define NUMHIGH 20		/* Number of high scores that will be
X                          * remembered */
X
X/* Add a high score to the high score list */
Xvoid add_score()
X{
X	/* Structure containing top game results */
X	struct {
X		int            score;		/* Final score */
X		int			slev, elev;	/* Starting and ending level */
X		char           desc[80];		/* Text description */
X	} tops[NUMHIGH], next;
X	FILE           *sfile;	/* High score file */
X	char            buf[200];
X	register int    i;
X	int			numscore, cur, numgame;
X	char			*aux;
X	
X	/* Generate name of high score file */
X	if (aux = getenv("XBDLIB"))
X		strcpy(buf, aux);
X	else
X		strcpy(buf, LIB);
X
X	strcat(buf,"\\scores");
X	
X	/* Open high score file */
X	sfile = fopen(buf, "r");
X	
X	/* Set default values for number of games and high scores */
X	numscore = 0;
X	numgame = 0;
X	/* If file is readable, load in old high score list */
X	if (sfile != NULL) {
X		/* Extract score information from line */
X		while (fgets(buf, 200, sfile) && numscore < NUMHIGH) {
X			sscanf(buf, "%d %d %d %[^\n]", &(next.score), &(next.slev), 
X				                          &(next.elev), next.desc);
X			tops[numscore] = next;
X			numscore++;
X		}	
X		fclose(sfile);
X	}
X	else {
X		printf("Error opening score file : %s\n",buf);
X		exit (-1);
X	}
X	/* Contruct the structure containing the score for this game */
X	next.score = score;
X	next.slev = levelstart;
X	next.elev = levelnum;
X	sprintf(next.desc, "%s ", getenv("USER"));
X	cur = -1;
X	/* Insert new score in old high score list */
X	if (numscore < NUMHIGH || tops[NUMHIGH - 1].score < next.score) {
X		/* Iterate through high score list */
X		for (i = (numscore >= NUMHIGH ? NUMHIGH - 2 : numscore - 1); 
X		     i >= 0; i--) {
X			/* Look for place for insertion */
X			if (next.score > tops[i].score)
X				tops[i + 1] = tops[i];
X			else	
X				break;			/* Found spot for insertion */
X		}
X		tops[i + 1] = next;		/* Overwrite entry in high score list */
X		cur = i + 1;		/* Remember where new high score was inserted */
X		/* Increment the number of high scores */
X		if (numscore < NUMHIGH)
X			numscore++;
X	}
X	/* Increment and print the number of games played */
X	/* Print out new high score list */
X	for (i = 0; i < numscore; ++i) {
X		/* Flag new high score with a leading > */
X		if (i == cur)
X			putchar('*');
X		else
X			putchar(' ');
X		printf("%-16s- Died on level %3d. Started on level %3d.  Score: %8d.\n",
X			tops[i].desc, tops[i].elev, tops[i].slev, tops[i].score);
X	}
X	/* If current game did not make it to the high score list, print it */
X	/* afterwords */
X	if (cur == -1) {
X		puts("You are quite disappointing:");
X		printf("*%-16s- Died on level %3d. Started on level %3d.  Score: %8d.\n",
X			next.desc, next.elev, next.slev, next.score);
X	}
X	/* Save new high score list to score file */
X	sprintf(buf, "%s/scores", LIB);
X	sfile = fopen(buf, "w");
X	if (sfile == NULL) {
X		perror(buf);
X		return;
X	}
X	for (i = 0; i < numscore; ++i)
X		fprintf(sfile, "%d %d %d %s\n", tops[i].score, tops[i].slev,
X			   tops[i].elev, tops[i].desc);
X	fclose(sfile);
X}
END_OF_FILE
if test 3620 -ne `wc -c <'scores.c'`; then
    echo shar: \"'scores.c'\" unpacked with wrong size!
fi
# end of 'scores.c'
fi
if test -f 'shared.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'shared.c'\"
else
echo shar: Extracting \"'shared.c'\" \(8805 characters\)
sed "s/^X//" >'shared.c' <<'END_OF_FILE'
X/*********************************************/
X/* you just keep on pushing my luck over the */
X/*          BOULDER        DASH              */
X/*                                           */
X/*     Jeroen Houttuin, ETH Zurich, 1990     */
X/*                                           */
X/*                                           */
X/*	  PC-VGA version from :				*/
X/*                                           */
X/*		Herve SOULARD, Paris, 1990		*/
X/*                                           */
X/*********************************************/
X
X#include <stdio.h>
X#include <errno.h>
X#include <graph.h>
X#include <malloc.h>
X#include <dos.h>
X
X#include "xbd.h"
X
X#define	HEIGHT	16
X#define	WIDTH	16
X
X#define	MAXPGM	23
X
X
Xextern char    *getenv();
X
X
Xchar *bitmap[MAXPGM];
X
Xstruct videoconfig config;
Xint size;
X
Xchar *makegc(char pgm[])
X{
X	char *ptr,c;
X	int i,j;
X	unsigned r1,r2,r3,r4;
X	unsigned *uptr;
X	
X	ptr = (char *)malloc(size);
X	uptr = (unsigned *)ptr;
X	if (ptr == NULL) {
X		printf ("Erreur allocation (pgms)\n");
X		exit(1);
X	}	
X
X	*ptr = WIDTH;
X	*(ptr+2) = HEIGHT;
X	*(ptr+1) = *(ptr+3) = 0;
X
X	for (i=0; i < HEIGHT;i++) {
X		r1 = r2 = r3 = r4 = 0;
X		for (j=0; j < WIDTH; j++) {
X			c = pgm[(i*WIDTH)+j];
X			if (c & 0x01)
X				r1 |= (1 << ((WIDTH-1)-j));
X			if (c & 0x02)
X				r2 |= (1 << ((WIDTH-1)-j));
X			if (c & 0x04)
X				r3 |= (1 << ((WIDTH-1)-j));
X			if (c & 0x08)
X				r4 |= (1 << ((WIDTH-1)-j));
X		}
X		/*
X			For compatibility with _putimage from Microsoft
X			
X		*(uptr+2+(i*4)) = r1;
X		*(uptr+2+(i*4)+1) = r2;
X		*(uptr+2+(i*4)+2) = r3;
X		*(uptr+2+(i*4)+3) = r4;
X		*/
X
X		/*	Using my own _putimage (drawPgm)
X		*/
X		*(uptr+2+i) = r1;
X		*(uptr+2+i+16) = r2;
X		*(uptr+2+i+32) = r3;
X		*(uptr+2+i+48) = r4;
X	}
X	for (i=4; i< size; i+=2) {
X		c = *(ptr+i);
X		*(ptr+i) = *(ptr+i+1);
X		*(ptr+i+1) = c;
X	}
X	return (ptr);
X}
X
X
Xvoid make_gcs()
X{
X	pgc = pgc1 = makegc(bitmap[0]);	/* player_pgms		*/
X	pgc2 = makegc(bitmap[1]);			/* player2_pgms	*/
X	wgc = Wgc = makegc(bitmap[2]);	/* wall_pgms		*/
X	Wgc2 = makegc(bitmap[3]);			/* wall2_pgms		*/
X	sgc = makegc(bitmap[4]);			/* space_pgms		*/
X	ggc = makegc(bitmap[5]);			/* grass_pgms		*/
X	dgc = dgc1 = makegc(bitmap[6]);	/* diamond_pgms	*/
X	dgc2 = makegc(bitmap[7]);			/* diamond2_pgms	*/
X	Sgc = makegc(bitmap[8]);			/* steel_pgms		*/
X	bgc = makegc(bitmap[9]);			/* boulder_pgms	*/
X	xgc = makegc(bitmap[10]);			/* explosion_pgms	*/
X	lgc = lgc1 = makegc(bitmap[11]);	/* lmonster_pgms	*/
X	lgc2 = makegc(bitmap[12]);			/* lmonster2_pgms	*/
X	rgc = rgc1 = makegc(bitmap[13]);	/* rmonster_pgms	*/
X	rgc2 = makegc(bitmap[14]);			/* rmonster2_pgms	*/
X	egc = egc1 = makegc(bitmap[15]);	/* eater_pgms		*/
X	egc2 = makegc(bitmap[16]);			/* eater2_pgms		*/
X	Egc = Egc1 = makegc(bitmap[8]);	/* steel_pgms		*/
X	Egc2 = makegc(bitmap[17]);			/* exit2_pgms		*/
X	ngc = makegc(bitmap[18]);			/* nucbal_pgms		*/
X	Bgc = Bgc1 = makegc(bitmap[19]);	/* blob_pgms		*/
X	Bgc2 = makegc(bitmap[20]);			/* blob2_pgms		*/
X	tgc = tgc1 = makegc(bitmap[2]);	/* wall_pgms		*/
X	tgc2 = makegc(bitmap[21]);			/* tinkle1_pgms	*/
X	tgc3 = makegc(bitmap[22]);			/* tinkle2_pgms	*/
X}
X
Xvoid load()
X{
X	FILE *map;
X	int i,j,k;
X	char buf[300];
X	int *ptr;
X	char *aux;
X	int color[WIDTH];
X	
X	if (aux = getenv("XBDLIB"))
X		strcpy(buf, aux);
X	else
X		strcpy(buf, LIB);
X
X	strcat(buf, "\\");
X	strcat(buf,"bitmaps.dat");
X	map = fopen(buf,"r");
X	if (map == 0) {
X		printf("Error opening bitmap file %s\n",buf);
X		exit(-1);
X	}
X	else {
X		for (i = 0;i < MAXPGM;i++) {
X			fgets(buf,300,map);
X			bitmap[i] = (char *)malloc(HEIGHT * WIDTH);
X			for (j = 0;j < HEIGHT;j++) {
X				ptr = color;
X				fgets(buf,300,map);
X				sscanf(buf,"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
X					    ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,
X						 ptr++,ptr++,ptr++,ptr++,ptr++,ptr++,ptr);
X				for (k = 0; k < WIDTH;k++)
X					bitmap[i][(j*WIDTH)+k] = (char)color[k];
X			}
X			fgets(buf,300,map);
X
X		}
X		fclose(map);
X	}
X}
X
Xvoid init_level(levelnum)
Xint levelnum;
X{
X
X	FILE           *levelfile;
X	char           buf[300], *ptr;
X
X	Egc = Egc1;			/* don't blink EXIT */
X	blobcollapse = FALSE;
X	blobcells = 0;
X	scoreobs = TRUE;
X	tinkact = FALSE;
X	levincreased = FALSE;
X	strcpy(levname, "No_name_for_this_level_yet");
X
X	/* Manufaction the file name by starting with the world name and */
X	/* appending the level number to it. */
X
X	if (ptr = getenv("XBDLIB"))
X		strcpy(filename, ptr);
X	else
X		strcpy(filename, LIB);
X
X	strcat(filename, "\\");
X	strcat(filename, LEVELPREFIX);
X	sprintf(filename + strlen(filename), "%03d", levelnum);
X	
X	/* Open level file for reading */
X	levelfile = fopen(filename, "r");
X	
X	/* If level file does not exist, use the default level file. */
X	if (levelfile == NULL) {
X		/* Build the default level name */
X
X		if (ptr = getenv("XBDLIB"))
X			strcpy(buf, ptr);
X		else
X			strcpy(buf, LIB);
X
X		strcat(buf, "\\");
X		strcat(buf, "\\default");
X		/* Open default level file for reading */
X		levelfile = fopen(buf, "r");
X		if (levelfile == NULL) {
X			perror(LEVELPREFIX);
X			exit(1);
X		}
X	}
X	
X	/* Load the first line of the level file */
X	if (fgets(buf, 300, levelfile) == NULL)	{
X		x = w;
X		y = h;
X		speed = 15;
X		diareq = 12;
X		diapoints = 0;
X		extradiapoints = 0;
X		blobbreak = 200;
X		curtime = 1000;
X	} 
X	else	{
X		/* Extract the level parameters */
X		sscanf(buf, "%d %d %d %d %d %d %d %d %d %s", &y, &x, &speed, 
X			  &diareq, &diapoints, &extradiapoints, &blobbreak, 
X			  &tinkdur, &curtime, levname);
X	}
X
X	if (xin && yin) {
X		x = xin;
X		y = yin;
X	}				/* read in from editor command line */
X/*
X * if (x > w) x = w; if (y > h) y = h; if (x < 2) x = 2; if (y < 1) y = 1;
X * 
X *
X * Iterate through each horizontal line
X*/
X
X	for (i = 0; i < y; ++i) {
X		/* Load the next line from the file */
X		if (fgets(buf, 300, levelfile) != NULL) {
X			/* Go through each horizontal position and copy the data */
X			/* into the level array. */
X			for (j = 0; j < x; ++j) {
X				/* Break out if line ends prematurely */
X				if (buf[j] == '\n' || buf[j] == '\0')
X					field[i][j].content = STEEL;	/* break; */
X				field[i][j].content = buf[j];
X				field[i][j].changed = TRUE;
X				field[i][j].dir = N;
X				field[i][j].speed = 0;
X				field[i][j].stage = 0;
X				field[i][j].caught = TRUE;
X				field[i][j].checked = FALSE;
X			}
X		} 
X		else
X			j = 0;
X		for (; j < x; ++j)
X			field[i][j].content = STEEL;
X	}
X	
X	/* Close the level file */
X	fclose(levelfile);
X}
X
X
X/* Draw the score and level number */
Xvoid	draw_score()
X{
X	char            buf[200];
X	
X	/* Build the output string */
X	sprintf(buf, "sc:%d lv:%d ls:%d ds:%d dp:%d ti:%d %s", score, levelnum,
X		        lives, diareq, diapoints, curtime / 10, levname);
X	strncat(buf,"                                         ", 80-strlen(buf));
X	_settextposition(y+2,0);
X	_outtext(buf);
X	scoreobs = FALSE;
X}
X
X											
Xvoid xstart()
X{
X	_setvideomode(_MAXRESMODE);
X	_getvideoconfig(&config);
X	size = (unsigned int)_imagesize(0,0,WIDTH-1,HEIGHT-1);
X
X}
X
X
Xvoid	xend()
X{
X	gamestop = TRUE;
X	
X	_setvideomode(_DEFAULTMODE);
X}
X
X
Xvoid	draw_field(redrawall)
XBool	redrawall;
X{
X	char            c;
X	
X	/* Iterate through each horizontal line */
X	for (i = y - 1; i >= 0; --i) {
X		for (j = 0; j < x; ++j) {
X			if (field[i][j].changed || redrawall) {	
X				c = field[i][j].content;
X				switch (c) {
X					case GRASS:
X						drawPgm((j << 1), (i << 4), ggc, _GPSET);
X						break;
X					case SPACE:
X						drawPgm((j << 1), (i << 4), sgc, _GPSET);
X						break;
X					case PLAYER:
X						drawPgm((j << 1), (i << 4), pgc, _GPSET);
X						break;
X					case WALL:
X						drawPgm((j << 1), (i << 4), wgc, _GPSET);
X						break;
X					case MAGICWALL:
X						drawPgm((j << 1), (i << 4), Wgc, _GPSET);
X						break;
X					case DIAMOND:
X						drawPgm((j << 1), (i << 4), dgc, _GPSET);
X						break;
X					case BOULDER:
X						drawPgm((j << 1), (i << 4), bgc, _GPSET);
X						break;
X					case EXPLOSION:
X						drawPgm((j << 1), (i << 4), xgc, _GAND);
X						break;
X					case LMONSTER:
X						drawPgm((j << 1), (i << 4), lgc, _GPSET);
X						break;
X					case RMONSTER:
X						drawPgm((j << 1), (i << 4), rgc, _GPSET);
X						break;
X					case NUCBAL:
X						drawPgm((j << 1), (i << 4), ngc, _GPSET);
X						break;
X					case BLOB:
X						drawPgm((j << 1), (i << 4), Bgc, _GPSET);
X						break;
X					case TINKLE:
X						drawPgm((j << 1), (i << 4), tgc, _GPSET);
X						break;
X					case EATER:
X						drawPgm((j << 1), (i << 4), egc, _GPSET);
X						break;
X					case EXIT:
X						drawPgm((j << 1), (i << 4), Egc, _GPSET);
X						break;
X					case STEEL:
X					default:
X						field[i][j].content = STEEL;
X						drawPgm((j << 1), (i << 4), Sgc, _GPSET);
X						break;
X				}
X				field[i][j].changed = FALSE;
X			}
X		}
X	}
X	if (scoreobs)
X		draw_score();
X}
X
X
Xvoid	set_cell(i, j, content)
Xint	i, j;
Xchar	content;
X{
X	field[i][j].content = content;
X	field[i][j].speed = 0;
X	field[i][j].changed = TRUE;
X	field[i][j].stage = 0;
X	field[i][j].caught = TRUE;
X	field[i][j].checked = FALSE;
X}
END_OF_FILE
if test 8805 -ne `wc -c <'shared.c'`; then
    echo shar: \"'shared.c'\" unpacked with wrong size!
fi
# end of 'shared.c'
fi
if test -f 'xbd.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xbd.h'\"
else
echo shar: Extracting \"'xbd.h'\" \(4366 characters\)
sed "s/^X//" >'xbd.h' <<'END_OF_FILE'
X/*********************************************/
X/* you just keep on pushing my luck over the */
X/*           BOULDER        DASH             */
X/*                                           */
X/*     Jeroen Houttuin, ETH Zurich, 1990     */
X/*********************************************/
X
X#define w 35
X#define h 26
X#define LEVELPREFIX "xbdlv"
X
X#define SCORESIZE 18
X#define LIB		"c:\\usr\\local\\games\\xbd"
X
X/* direction masks */
X#define N 0
X#define E 1
X#define S 2
X#define W 3
X#define NODIR 4
X
X#define SPACEEXPLO	0
X#define BOULDEXPLO	10
X#define DIAEXPLO	20
X#define PROPAGATED	10
X
X#define PLAYER              'p'
X#define SPACE               ' '
X#define LMONSTER            'l'	/* Right turning monster */
X#define RMONSTER            'r'
X#define GRASS               'g'
X#define WALL                'w'
X#define MAGICWALL           'W'	/* Expanding wall */
X#define DIAMOND             'd'
X#define STEEL               'S'
X#define BOULDER             'b'
X#define EXPLOSION           'x'
X#define EXIT                'E'
X#define EATER               'e'
X#define NUCBAL              'n'	/* Nuclear ballon */
X#define BLOB                'B'	/* lava */
X#define TINKLE              't'	/* Tinkle wall */
X
X#define NB_EDIT_PGM		16
X
X#define K_question		'?'
X#define K_slash		'/'
X
X#ifndef byte
X#define byte unsigned char
X#endif
X
X#define ALT_SHIFT		8
X#define CTL_SHIFT		4
X#define LEFT_SHIFT		2
X#define RIGHT_SHIFT		1
X
X#define K_HOME            71
X#define K_END             79
X#define K_UP              72
X#define K_DOWN            80
X#define K_PGUP            73
X#define K_PGDOWN          81
X#define K_LEFT            75
X#define K_RIGHT           77
X#define K_INS             82
X#define K_DEL             83
X#define K_BACKSPACE        8
X#define K_RETURN          13
X#define K_ESC             27
X#define K_SPACE           32
X
X#define K_F1              59
X#define K_F2              60
X#define K_F3              61
X#define K_F4              62
X#define K_F5              63
X#define K_F6              64
X#define K_F7              65
X#define K_F8              66
X#define K_F9              67
X#define K_F10             68
X
X#define K_C			'C'
X#define K_U			'U'
X#define K_c			'c'
X#define K_u			'u'
X#define K_backslash		'b'
X#define K_D			'D'
X#define K_d			'd'
X#define K_R			'R'
X#define K_r			'r'
X
X
X
Xstatic int  far *kbdStatus   = (int  far *)0x00000417;  /* Etat du clavier */
Xstatic byte far *kbdBuffer   = (byte far *)0x00000400;  /* Tampon clavier  */
Xstatic int  far *kbdPtrRead  = (int  far *)0x0000041A;  /* Ptr lecture     */
Xstatic int  far *kbdPtrWrite = (int  far *)0x0000041C;  /* Ptr criture    */
X
X
X#define Bool			enum Boolean
Xenum Boolean {
X	FALSE, TRUE
X};
X
X
X
Xchar			*whitegc, *scoregc, *gc, *Bgc, *Bgc1, *Bgc2, *ngc, *egc, 
X			*egc1, *egc2, *Egc1, *Wgc, *Wgc2, *Egc2, *Egc, *lgc, *lgc1,
X			*lgc2, *rgc, *rgc1, *rgc2, *xgc, *Sgc, *bgc, *dgc, *dgc1, 
X			*dgc2, *wgc, *pgc, *pgc1, *pgc2, *sgc, *ggc, *tgc, *tgc1,
X               *tgc2, *tgc3;
X
Xchar            filename[300];	/* Current file name of this level */
Xchar            levname[64];	/* Levelname */
Xint             i, j, ii, jj, jjj;
Xint             blobbreak;
Xint             critical;
Xint             curtime;		/* Current clock tick number */
Xint             blobcells;
Xint             tinkdur;	/* Tinkle duration */
XBool            tinkact;	/* Tinkle active   */
XBool            levincreased;
Xint             x, y, xin, yin, players, lives, levelnum, levelstart, speed,
X                diareq, diapoints, extradiapoints;
XBool            steal;		/* steal instead of go */
XBool            stoplevel, blobcollapse;
Xenum directs {
X	STAND, UP, DOWN, LEFT, RIGHT, KILL
X};
X
Xenum directs    curorder;	/* Current order which player has */
X/* typed at the keyboard. */
X
Xstruct cell {
X  char            content;
X  Bool            changed;	/* has cell changed since last drawing */
X  Bool            caught;	/* for BLOB */
X  Bool            checked;	/* for BLOB algorithm */
X  char            dir;
X  short           speed;
X  short           stage;	/* painting stage for blinking etc. */
X}               field[h][w];
X
XBool            gamestop;
XBool            scoreobs;	/* is score line obsolete ? */
Xint             levelnum;	/* Current level number */
Xint             lives;		/* Current number of lives */
Xint             score;		/* Total score */
Xint             speed;		/* Speed of game.  1 is slowest, 15 is
X						 * default */
X
X
END_OF_FILE
if test 4366 -ne `wc -c <'xbd.h'`; then
    echo shar: \"'xbd.h'\" unpacked with wrong size!
fi
# end of 'xbd.h'
fi
echo shar: End of archive 2 \(of 3\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 3 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 3 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