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 [A missing newline at the end of the 'readme.pc' file caused the original Part02 to not unpack properly. -br] #! /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