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