diff --git a/devel/brodsky_conv.c b/devel/brodsky_conv.c new file mode 100644 index 0000000..a8e1a1d --- /dev/null +++ b/devel/brodsky_conv.c @@ -0,0 +1,25 @@ +#include + +/* Converts SMIX (ethan brodsky) sound samples back to standard + * raw audio format + */ + + +int main(int argc,char **argv) +{ +FILE *fff; +int ch; + + fff=fopen(argv[1],"r"); + if(fff==NULL) { + printf("\n\nUsage '%s filename'\n\n",argv[0]); + return 1; + } + while(!feof(fff)) { + ch=fgetc(fff); + printf("%c",(ch+128)); + } + fclose(fff); + +} + diff --git a/level1.c b/level1.c index 488b23c..2c51b25 100644 --- a/level1.c +++ b/level1.c @@ -6,12 +6,11 @@ #include #include #include -#include +#include #include #include "svmwgrap.h" #include "levels.h" #include "tblib.h" -#include "gtblib.h" #include "soundIt.h" /* Define this to get a frames per second readout */ @@ -31,9 +30,9 @@ extern ggi_visual_t vaddr; extern ggi_visual_t vaddr2; extern ggi_color eight_bit_pal[256]; extern ggi_pixel tb1_pal[256]; -extern ggi_directbuffer_t dbuf_vis; +/*extern ggi_directbuffer_t dbuf_vis; extern ggi_directbuffer_t dbuf_vaddr; -extern ggi_directbuffer_t dbuf_vaddr2; +extern ggi_directbuffer_t dbuf_vaddr2;*/ extern ggi_pixellinearbuffer *plb_vis; extern ggi_pixellinearbuffer *plb_vaddr; extern ggi_pixellinearbuffer *plb_vaddr2; @@ -245,7 +244,7 @@ void beforeboss() (ggi_pixel *)&tb1_pal,color_depth); ggiSetGCForeground(vis,0); ggiDrawBox(vis,0,0,320,200); - vmwArbitraryCrossBlit(plb_vaddr->read,0,5,58,37, +/* vmwArbitraryCrossBlit(plb_vaddr->read,0,5,58,37, plb_vis->write,10,10,plb_vis->stride,stride_factor); VMWsmalltextxy("HUMAN!",70,10,tb1_pal[2],tb1_pal[0],1,tb1_font,vis); VMWsmalltextxy("WHAT ARE YOU DOING?!",70,20,tb1_pal[2], @@ -275,7 +274,7 @@ void beforeboss() tb1_pal[2],tb1_pal[0],1,tb1_font,vis); VMWsmalltextxy("TO DESTROY MY SHIP! DIE EARTH SCUM!!!!",70,140, tb1_pal[2],tb1_pal[0],1,tb1_font,vis); - pauseawhile(5); + pauseawhile(5);*/ } /* The Sequence After You Defeat (hopefully) the Boss */ @@ -283,7 +282,7 @@ void afterboss() { char *tempst[300]; - GGILoadPicPacked(0,0,vaddr,0,1, + /*GGILoadPicPacked(0,0,vaddr,0,1, tb1_data_file("viewscr.tb1",(char *)tempst), (ggi_color *)&eight_bit_pal, (ggi_pixel *)&tb1_pal,color_depth); @@ -325,7 +324,7 @@ void afterboss() tb1_pal[9],tb1_pal[0],1,tb1_font,vis); VMWsmalltextxy("WELL AT LEAST I HAVE SOME SMALLER SPARES.",70,160, tb1_pal[9],tb1_pal[0],1,tb1_font,vis); - pauseawhile(5); + pauseawhile(5);*/ } /* The Main Level One */ @@ -397,7 +396,7 @@ void levelone(int *level,int *shields,int *score) /* Setup and draw the sidebar */ setupsidebar(*score,0,*shields); ggiSetGCForeground(vis,tb1_pal[0]); - vmwCrossBlit(plb_vaddr->write,plb_vaddr2->read,plb_vaddr->stride,200); +/* vmwCrossBlit(plb_vaddr->write,plb_vaddr2->read,plb_vaddr->stride,200);*/ sprintf(tempst,"%d",*level); ggiDrawBox(vaddr2,251,52,63,7); VMWtextxy(tempst,307,51,tb1_pal[12],tb1_pal[0],0,tb1_font,vaddr2); @@ -406,12 +405,12 @@ void levelone(int *level,int *shields,int *score) ggiSetGCForeground(vaddr2,tb1_pal[0]); ggiDrawBox(vaddr2,0,0,320,400); for(i=0;i<100;i++) { - vmwPutSprite(shapetable[11],18,18,stride_factor, + /*vmwPutSprite(shapetable[11],18,18,stride_factor, plb_vaddr2->write,rand()%238, rand()%400,plb_vaddr2->stride); vmwPutSprite(shapetable[12],18,18,stride_factor, plb_vaddr2->write,rand()%238, - rand()%400,plb_vaddr2->stride); + rand()%400,plb_vaddr2->stride);*/ } change_shields(shields); @@ -435,6 +434,7 @@ void levelone(int *level,int *shields,int *score) if (speed_factor>1) howmuchscroll-=speed_factor; else howmuchscroll--; if (howmuchscroll<0) howmuchscroll=399; +#if 0 if (howmuchscroll>199) { vmwArbitraryCrossBlit(plb_vaddr2->read,0,howmuchscroll,240, 400-howmuchscroll, @@ -450,7 +450,7 @@ void levelone(int *level,int *shields,int *score) plb_vaddr->write,0,0,plb_vaddr->stride, stride_factor); } - +#endif /* Check for Collisions */ for(i=0;i<5;i++) { @@ -478,10 +478,10 @@ void levelone(int *level,int *shields,int *score) if (enemy[i].exploding) { enemy[i].explodeprogress++; if (enemy[i].explodeprogress<=5) - vmwPutSprite(shapetable[enemy[i].explodeprogress+14], +/* vmwPutSprite(shapetable[enemy[i].explodeprogress+14], 18,18,stride_factor, plb_vaddr->write,enemy[i].x,enemy[i].y, - plb_vaddr->stride); + plb_vaddr->stride)*/; else if (enemy[i].dead) { enemy[i].out=0; enemy[i].exploding=0; @@ -496,18 +496,18 @@ void levelone(int *level,int *shields,int *score) if (speed_factor>1) bullet[i].y-=(5*speed_factor); else bullet[i].y-=5; if (bullet[i].y<5) bullet[i].out=0; - else vmwPutSprite(shapetable[0],18,18,stride_factor, + else /*vmwPutSprite(shapetable[0],18,18,stride_factor, plb_vaddr->write,bullet[i].x,bullet[i].y, - plb_vaddr->stride); + plb_vaddr->stride)*/; } } /* MOVE ENEMIES */ for(i=0;i<5;i++) { if ((enemy[i].out) && (!enemy[i].dead)) { - vmwPutSprite(shapetable[enemy[i].kind-1],18,18,stride_factor, + /*vmwPutSprite(shapetable[enemy[i].kind-1],18,18,stride_factor, plb_vaddr->write,enemy[i].x,enemy[i].y, - plb_vaddr->stride); + plb_vaddr->stride)*/; if (speed_factor==1) enemy[i].x+=enemy[i].xspeed; else enemy[i].x+=(enemy[i].xspeed*speed_factor); /* Check Position */ @@ -578,9 +578,9 @@ void levelone(int *level,int *shields,int *score) bullet[j].out=1; bullet[j].x=shipx+15; bullet[j].y=165; - vmwPutSprite(shapetable[0],18,18,stride_factor, + /*vmwPutSprite(shapetable[0],18,18,stride_factor, plb_vaddr->write,bullet[j].x, - bullet[j].y,plb_vaddr->stride); + bullet[j].y,plb_vaddr->stride);*/ j=3; } } @@ -592,22 +592,22 @@ void levelone(int *level,int *shields,int *score) if (shipx<1) shipx=1; if (shipx>190) shipx=190; switch(shipframe) { - case 1: vmwPutSprite(bigship1,48,30,stride_factor, + case 1: /*vmwPutSprite(bigship1,48,30,stride_factor, plb_vaddr->write,shipx,165, - plb_vaddr->stride); break; - case 3: vmwPutSprite(bigship2,48,30,stride_factor, + plb_vaddr->stride);*/ break; + case 3: /*vmwPutSprite(bigship2,48,30,stride_factor, plb_vaddr->write,shipx,165, - plb_vaddr->stride); break; + plb_vaddr->stride); */ break; case 2: - case 4: vmwPutSprite(bigship3,48,30,stride_factor, + case 4: /*vmwPutSprite(bigship3,48,30,stride_factor, plb_vaddr->write,shipx,165, - plb_vaddr->stride); break; + plb_vaddr->stride);*/ break; } shipframe++; if (shipframe==5) shipframe=1; /* Flip Pages */ - vmwCrossBlit(plb_vis->write,plb_vaddr->read,plb_vis->stride,200); + /*vmwCrossBlit(plb_vis->write,plb_vaddr->read,plb_vis->stride,200);*/ ggiFlush(vis); /* Calculate how much time has passed */ @@ -660,21 +660,21 @@ void littleopener() vmwGetSprite(vaddr,30,178,15,18,ship2); ggiSetGCForeground(vis,tb1_pal[0]); ggiDrawBox(vaddr,0,178,319,21); - vmwCrossBlit(plb_vis->write,plb_vaddr->read,plb_vis->stride,200); - vmwCrossBlit(plb_vaddr2->write,plb_vaddr->read,plb_vaddr->stride,200); + /*vmwCrossBlit(plb_vis->write,plb_vaddr->read,plb_vis->stride,200); + vmwCrossBlit(plb_vaddr2->write,plb_vaddr->read,plb_vaddr->stride,200);*/ for(i=100;i>0;i--) { - vmwArbitraryCrossBlit(plb_vaddr2->read,0,95,320,40, +/* vmwArbitraryCrossBlit(plb_vaddr2->read,0,95,320,40, plb_vaddr->write,0,95, plb_vaddr->stride,stride_factor); vmwPutSprite(ship2,15,18,stride_factor, plb_vaddr->write,i*2,100,plb_vaddr->stride); vmwArbitraryCrossBlit(plb_vaddr->read,0,95,320,40, plb_vis->write,0,95,plb_vaddr->stride, - stride_factor); + stride_factor);*/ usleep(30000); if (get_input()!=0) break; } - vmwCrossBlit(plb_vis->write,plb_vaddr2->read,plb_vis->stride,200); +/* vmwCrossBlit(plb_vis->write,plb_vaddr2->read,plb_vis->stride,200);*/ VMWtextxy(">KCHK< TOM! WHERE ARE YOU GOING?",5,180,tb1_pal[15],tb1_pal[0],1,tb1_font,vis); ggiFlush(vis); pauseawhile(3); @@ -682,18 +682,18 @@ void littleopener() VMWtextxy("Ooops. ",5,180,tb1_pal[24],tb1_pal[0],1,tb1_font,vis); pauseawhile(3); for(i=0;i<151;i++) { - vmwArbitraryCrossBlit(plb_vaddr2->read,0,95,320,40, + /*vmwArbitraryCrossBlit(plb_vaddr2->read,0,95,320,40, plb_vaddr->write,0,95,plb_vaddr->stride, stride_factor); vmwPutSprite(ship1,15,18,stride_factor, plb_vaddr->write,i*2,100,plb_vaddr->stride); vmwArbitraryCrossBlit(plb_vaddr->read,0,95,320,40, plb_vis->write,0,95,plb_vaddr->stride, - stride_factor); + stride_factor);*/ usleep(30000); if (get_input()!=0) break; } - vmwCrossBlit(plb_vis->write,plb_vaddr2->read,plb_vis->stride,200); +/* vmwCrossBlit(plb_vis->write,plb_vaddr2->read,plb_vis->stride,200);*/ ggiSetGCForeground(vis,tb1_pal[0]); ggiDrawBox(vis,0,0,320,200); GGILoadPicPacked(0,0,vis,1,0, diff --git a/svmwgrap.c b/svmwgrap.c index 0310d3a..89b5d1b 100644 --- a/svmwgrap.c +++ b/svmwgrap.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include /*var unfadered:array[0..255] of byte; @@ -66,7 +66,6 @@ int vmwArbitraryCrossBlit(char *src,int x1,int y1,int w,int h, return 0; } - int vmwPutSprite(int *src,int w,int h,int stride_factor, char *dest,int x,int y,int dest_stride) { @@ -83,25 +82,6 @@ int vmwPutSprite(int *src,int w,int h,int stride_factor, } -int vmwPutPartialSprite(int *src,int w,int h,int stride_factor, - char *dest,int x,int y,int dest_stride, - int x_start,int x_stop,int y_start,int y_stop) -{ /* x_start/stop not implemented yet */ - int xx,yy; - dest+=(dest_stride*y); - for(yy=0;yy=y_start) && (yy<=y_stop)) ) - memcpy(dest+(stride_factor*(xx+x)),(src+xx),stride_factor); - /**(dest+xx+x)=15;*/ - src+=w; - dest+=dest_stride; - } - return 0; - -} - - int vmwGetSprite(ggi_visual_t visual,int x,int y,int w,int h, int *sprite) { @@ -287,7 +267,7 @@ int GGILoadPicPacked(int x1,int y1,ggi_visual_t vis } else { for(i=0;i<256;i++) tb1_pal[i]=(ggi_pixel)i; - ggiSetPaletteVec(vis,0,256,eight_bit_pal); + /*ggiSetPaletteVec(vis,0,256,eight_bit_pal);*/ } } x=x1; diff --git a/tb1.c b/tb1.c index a5d2b91..0534b5f 100644 --- a/tb1.c +++ b/tb1.c @@ -18,9 +18,9 @@ #include #include -#include +#include + #include "svmwgrap.h" -#include "gtblib.h" #include "tblib.h" /* Exported Global Variables */ @@ -30,7 +30,7 @@ uint white; ggi_color eight_bit_pal[256]; ggi_pixel tb1_pal[256]; int color_depth; -ggi_directbuffer_t dbuf_vis,dbuf_vaddr,dbuf_vaddr2; +ggi_directbuffer *dbuf_vis,*dbuf_vaddr,*dbuf_vaddr2; ggi_pixellinearbuffer *plb_vis = NULL,*plb_vaddr= NULL,*plb_vaddr2=NULL; int stride_factor=1; int sound_enabled=1,sound_possible=1,read_only_mode=0; @@ -46,9 +46,20 @@ int setup_graphics(int force_8bpp) ggi_mode mode; int vx,vy,sx,sy; - ggiInit(); + if (ggiInit()) { + fprintf(stderr,"Cannot initialize libGGI!\n"); + return 1; + } + vis=ggiOpen(NULL); - + if(!vis) { + fprintf(stderr,"Cannot open default visual!\n"); + ggiExit(); + return 1; + } + /* Do I really want to do this? */ + ggiSetFlags(vis, GGIFLAG_ASYNC); + if (force_8bpp) err=ggiSetGraphMode(vis,320,200,320,200,GT_8BIT); else @@ -56,9 +67,16 @@ int setup_graphics(int force_8bpp) if (err) { fprintf(stderr,"ERROR! Problem opening 320x200 vis\n\n"); return 2; - } + } + mode.frames=3; - ggiGetMode(vis,&mode); + if (ggiGetMode(vis,&mode)) { + fprintf(stderr,"Cannot set mode!\n"); + ggiClose(vis); + ggiExit(); + return 1; + } + vx=mode.virt.x; vy=mode.virt.y; sx=mode.visible.x;sy=mode.visible.y; switch (mode.graphtype) { @@ -74,36 +92,39 @@ int setup_graphics(int force_8bpp) printf(" + Opened a %d x %d (%d x %d) mode with %d bpp\n", sx,sy,vx,vy,color_depth); - err = ggiDBGetBuffer (vis, &dbuf_vis); - if (err) { + /*dbuf_vis=ggiDBGetBuffer(vis,0);*/ + /*err = ggiDBGetBuffer (vis, &dbuf_vis);*/ + /*if (!(dbuf_vis=ggiDBGetBuffer(vis,0)) ) { printf("Error! Could not get directbuffer\n"); return 2; } - if (!(ggiDBGetLayout (dbuf_vis) == blPixelLinearBuffer)) { + */ + /*if (!(ggiDBGetLayout (dbuf_vis) == blPixelLinearBuffer)) { printf("Error! Nonlinear Display Buffer.\n"); return 2; - } - if (!(plb_vis = ggiDBGetPLB (dbuf_vis)) ) { + }*/ + /*if (!(plb_vis = ggiDBGetPLB (dbuf_vis)) ) { printf("Error! Problem getting pixel linear buffer.\n"); return 2; } - + */ vaddr=ggiOpen("display-memory",NULL); err=ggiSetGraphMode(vaddr,320,200,320,200,mode.graphtype); if (err) { printf("ERROR! Problem opening 320x200x%d vaddr\n",color_depth); return 2; } - err = ggiDBGetBuffer (vaddr, &dbuf_vaddr); + /*err = ggiDBGetBuffer (vaddr, &dbuf_vaddr); if (err) { printf("Error! Could not get directbuffer\n"); return 2; - } - if (!(ggiDBGetLayout (dbuf_vaddr) == blPixelLinearBuffer)) { + }*/ + /*if (!(ggiDBGetLayout (dbuf_vaddr) == blPixelLinearBuffer)) { printf("Error! Nonlinear Display Buffer.\n"); return 2; } - if (!(plb_vaddr = ggiDBGetPLB (dbuf_vaddr)) ) { + */ + /*if (!(plb_vaddr = ggiDBGetPLB (dbuf_vaddr)) ) { printf("Error! Problem getting pixel linear buffer.\n"); return 2; } @@ -128,6 +149,7 @@ int setup_graphics(int force_8bpp) return 2; } stride_factor=(plb_vis->stride)/320; + */ printf(" + Using a stride factor of %d\n",stride_factor); printf(" + GGI Graphics Initialization successful...\n"); printf(" + Running TB1 in %dbpp Mode...\n",color_depth); @@ -269,11 +291,11 @@ int main(int argc,char **argv) eight_bit_pal[15].b=255*0x100; /* Finalize Pallette Stuff */ - if (color_depth!=8) { + /*if (color_depth!=8) { tb1_pal[15]=ggiMapColor(vis,&eight_bit_pal[15]); } else ggiSetPaletteVec(vis,0,256,eight_bit_pal); - + */ /* Actually draw the stylized VMW */ for(x=0;x<=40;x++){ ggiSetGCForeground(vis,tb1_pal[100+x]); @@ -329,9 +351,9 @@ int main(int argc,char **argv) ggiFlush(vaddr2); reloadpic=0; } - vmwCrossBlit(plb_vis->write,plb_vaddr2->read,plb_vis->stride,200); + /*vmwCrossBlit(plb_vis->write,plb_vaddr2->read,plb_vis->stride,200);*/ ggiFlush(vis); - + barpos=0; VMWtextxy("F1 HELP",0,190,tb1_pal[9],tb1_pal[7],0,tb1_font,vis); coolbox(117,61,199,140,1,vis); diff --git a/tblib.c b/tblib.c index 2068c77..b901dce 100644 --- a/tblib.c +++ b/tblib.c @@ -5,7 +5,8 @@ #include #include #include -#include +#include +#include #include "soundIt.h" #include "svmwgrap.h" #include "levels.h" @@ -14,9 +15,9 @@ extern vmw_font *tb1_font; extern ggi_visual_t vis; extern ggi_visual_t vaddr; extern ggi_visual_t vaddr2; -extern ggi_directbuffer_t dbuf_vis; +/*extern ggi_directbuffer_t dbuf_vis; extern ggi_directbuffer_t dbuf_vaddr; -extern ggi_directbuffer_t dbuf_vaddr2; +extern ggi_directbuffer_t dbuf_vaddr2;*/ extern ggi_pixellinearbuffer *plb_vis; extern ggi_pixellinearbuffer *plb_vaddr; extern ggi_pixellinearbuffer *plb_vaddr2; @@ -29,8 +30,6 @@ extern ggi_color eight_bit_pal[256]; extern ggi_pixel tb1_pal[256]; extern int color_depth; -Sample sound_effects[1]; - #define TB_ESC 27 #define TB_ENTER 1024 #define TB_F1 1025 @@ -56,7 +55,7 @@ int change_shields(int *shields) tb1_pal[254]=ggiMapColor(vis,&eight_bit_pal[254]); else { tb1_pal[254]=254; - ggiSetPaletteVec(vis,254,1,&eight_bit_pal[254]); + /*ggiSetPaletteVec(vis,254,1,&eight_bit_pal[254]);*/ } ggiSetGCForeground(vaddr,tb1_pal[0]); ggiDrawBox(vaddr,250,71,64,8); @@ -101,6 +100,122 @@ char *tb1_data_file(char *name, char *store) return store; } +int get_input() { + + int evmask; + ggi_event event; + struct timeval t={0,0}; + + /*evmask=emKeyPress|emKeyRelease|emPointer;*/ + + if (ggiEventPoll(vis,emKey,&t)) { + ggiEventRead(vis,&event,emKey); + if (event.any.type==evKeyPress) { + switch(event.key.sym) { + case GIIK_Up: /* CrSr up */ + case GIIK_P8: /* Keypad 8 */ + return TB_UP;break; + case GIIK_Down: /* CrSr down */ + case GIIK_P2: /* Keypad 2 */ + return TB_DOWN;break; + case GIIK_Right: /* CrSr right */ + case GIIK_P6: /* CrSr right */ + return TB_RIGHT;break; + case GIIK_Left: /* CrSr left */ + case GIIK_P4: /* CrSr left */ + return TB_LEFT;break; + case GIIK_F1: + return TB_F1;break; + case GIIK_F2: + return TB_F2;break; + case GIIK_Enter: /* enter */ + return TB_ENTER;break; + default: + return event.key.sym; + /*printf("sym=%4x code=%4x\n",ev.key.sym,ev.key.code);*/break; + } + } + } + return 0; +} + + +void clear_keyboard_buffer() +{ + while (get_input()!=0) ; +} + +void drawsquare(int x1,int y1,int x2,int y2,int col,ggi_visual_t page) +{ + ggiSetGCForeground(page,tb1_pal[col]); + /*ggiDrawHLine(page,x1,y1,(x2-x1)); + ggiDrawHLine(page,x1,y2,(x2-x1)); + ggiDrawVLine(page,x1,y1,(y2-y1)); + ggiDrawVLine(page,x2,y1,(y2-y1));*/ + ggiDrawLine(page,x1,y1,x1,y2); + ggiDrawLine(page,x2,y1,x2,y2); + ggiDrawLine(page,x1,y1,x2,y1); + ggiDrawLine(page,x1,y2,x2,y2); +} + +void coolbox(int x1,int y1,int x2,int y2,int fill,ggi_visual_t page) +{ + int i; + + for(i=0;i<5;i++) { + /*ggiSetGCForeground(page,31-i); + ggiDrawBox(page,x1+i,y1+i,(x2-x1-i-i),(y2-y1-i-i));*/ + drawsquare(x1+i,y1+i,x2-i,y2-i,31-i,page); + } + if (fill) { + ggiSetGCForeground(page,tb1_pal[7]); + for(i=y1+5;iread,129,56,49,132, - plb_vis->write,10,10,plb_vaddr2->stride, - stride_factor); - - VMWtextxy("YOU ARE TOM BOMBEM, A STRANGE", - 80,10,tb1_pal[1],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" BUT EFFICIENT MEMBER OF", - 80,20,tb1_pal[1],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" THE LUNAR SPACE FORCE.", - 80,30,tb1_pal[1],tb1_pal[0],0,tb1_font,vis); - VMWtextxy("YOU NEVER SAY MUCH AND YOU ARE", - 80,50,tb1_pal[4],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" RARELY SEEN OUTSIDE OF", - 80,60,tb1_pal[4],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" YOUR BLUE SPACESUIT.", - 80,70,tb1_pal[4],tb1_pal[0],0,tb1_font,vis); - VMWtextxy("YOU OFTEN GET YOURSELF IN ", - 80,90,tb1_pal[2],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" TROUBLE BY SCRATCHING", - 80,100,tb1_pal[2],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" YOUR HEAD AT INAPPROPRIATE", - 80,110,tb1_pal[2],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" TIMES.", - 80,120,tb1_pal[2],tb1_pal[0],0,tb1_font,vis); - VMWtextxy("PRESS ANY KEY....", - 96,185,tb1_pal[15],tb1_pal[0],0,tb1_font,vis); - if (pauseawhile(12)==TB_ESC) goto end; + plb_vis->write,10,10,plb_vis->stride, + stride_factor);*/ + VMWtextxy("YOU ARE TOM BOMBEM, A STRANGE",80,10,tb1_pal[1],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" BUT EFFICIENT MEMBER OF",80,20,tb1_pal[1],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" THE LUNAR SPACE FORCE.",80,30,tb1_pal[1],tb1_pal[0],0,tb1_font,vis); + VMWtextxy("YOU NEVER SAY MUCH AND YOU ARE",80,50,tb1_pal[4],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" RARELY SEEN OUTSIDE OF",80,60,tb1_pal[4],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" YOUR BLUE SPACESUIT.",80,70,tb1_pal[4],tb1_pal[0],0,tb1_font,vis); + VMWtextxy("YOU OFTEN GET YOURSELF IN ",80,90,tb1_pal[2],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" TROUBLE BY SCRATCHING",80,100,tb1_pal[2],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" YOUR HEAD AT INAPPROPRIATE",80,110,tb1_pal[2],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" TIMES.",80,120,tb1_pal[2],tb1_pal[0],0,tb1_font,vis); + VMWtextxy("PRESS ANY KEY....",96,185,tb1_pal[15],tb1_pal[0],0,tb1_font,vis); + pauseawhile(12); - ggiSetGCForeground(vis,tb1_pal[0]); - ggiDrawBox(vis,0,0,320,200); + ggiSetGCForeground(vis,tb1_pal[0]); + ggiDrawBox(vis,0,0,320,200); - vmwArbitraryCrossBlit(plb_vaddr2->read,129,56,49,132, - plb_vis->write,260,10,plb_vis->stride, - stride_factor); - vmwArbitraryCrossBlit(plb_vaddr2->read,99,104,29,81, - plb_vis->write,287,13,plb_vis->stride, - stride_factor); - - VMWtextxy("IT IS THE YEAR 2028.", - 10,10,tb1_pal[1],tb1_pal[0],0,tb1_font,vis); - VMWtextxy("YOU HAVE BEEN SUMMONED BY", - 10,30,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" LUNAR DICTATOR-IN-CHIEF", - 10,40,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" VINCENT WEAVER ABOUT A", - 10,50,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" TOP SECRET THREAT TO ", - 10,60,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" INTERPLANETARY SECURITY.", - 10,70,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); - VMWtextxy("YOU ATTEND THE BRIEFING WITH", - 10,90,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" YOUR USUAL CONFUSED", - 10,100,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" QUIETNESS. YOU STILL DO", - 10,110,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" NOT UNDERSTAND YOUR OWN", - 10,120,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); - VMWtextxy(" SUCCESSFULNESS.", - 10,130,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); +/* vmwArbitraryCrossBlit(plb_vaddr2->read,129,56,49,132, + plb_vis->write,260,10,plb_vis->stride, + stride_factor); + vmwArbitraryCrossBlit(plb_vaddr2->read,99,104,29,81, + plb_vis->write,287,13,plb_vis->stride, + stride_factor); +*/ + VMWtextxy("IT IS THE YEAR 2028.",10,10,tb1_pal[1],tb1_pal[0],0,tb1_font,vis); + VMWtextxy("YOU HAVE BEEN SUMMONED BY",10,30,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" LUNAR DICTATOR-IN-CHIEF",10,40,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" VINCENT WEAVER ABOUT A",10,50,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" TOP SECRET THREAT TO ",10,60,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" INTERPLANETARY SECURITY.",10,70,tb1_pal[3],tb1_pal[0],0,tb1_font,vis); + VMWtextxy("YOU ATTEND THE BRIEFING WITH",10,90,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" YOUR USUAL CONFUSED",10,100,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" QUIETNESS. YOU STILL DO",10,110,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" NOT UNDERSTAND YOUR OWN",10,120,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); + VMWtextxy(" SUCCESSFULNESS.",10,130,tb1_pal[5],tb1_pal[0],0,tb1_font,vis); VMWtextxy("PRESS ANY KEY....",96,185,tb1_pal[15],tb1_pal[0],0,tb1_font,vis); - if (pauseawhile(10)==TB_ESC) goto end; + pauseawhile(10); - GGILoadPicPacked(0,0,vis,0,1, + GGILoadPicPacked(0,0,vis,1,1, tb1_data_file("tbchief.tb1",(char *)tempst), (ggi_color *)&eight_bit_pal, (ggi_pixel *)&tb1_pal,color_depth); - vmwArbitraryCrossBlit(plb_vis->read,115,55,91,59, +/* vmwArbitraryCrossBlit(plb_vis->read,115,55,91,59, plb_vaddr->write,115,55,plb_vis->stride, stride_factor); - - if (pauseawhile(6)==TB_ESC) goto end; - + */ + pauseawhile(6); VMWtextxy("Ahhh.... Mr. Bombem.... ",1,1,tb1_pal[15],tb1_pal[0],0,tb1_font,vis); - /* Load The Sound */ - if (sound_possible) { - Snd_loadRawSample(tb1_data_file("tbahh.raw",(char *)&tempst), - &sound_effects[0],0); - /* Initialize Sound, if Possible */ - if (Snd_init( 1,sound_effects,22050,4, - "/dev/dsp")==EXIT_FAILURE) { - printf("ERROR! Cannot init sound.\n"); - sound_enabled=0; - } - } - /* Play "Ahhhhhhh Mr. Bombem..... */ - if (sound_enabled) Snd_effect(0,1); - pauseawhile(2); - - vmwArbitraryCrossBlit(plb_vaddr2->read,188,14,91,59, - plb_vis->write,115,55,plb_vaddr2->stride, + /* if sbeffects then startsound(sound[1],0,false);*/ + pauseawhile(2); + + /*if sbeffects then startsound(sound[3],0,false);*/ + /*vmwArbitraryCrossBlit(plb_vaddr2->read,188,14,91,59, + plb_vis->write,115,55,plb_vis->stride, stride_factor); - if (pauseawhile(6)==TB_ESC) goto end; - + pauseawhile(6); vmwArbitraryCrossBlit(plb_vaddr->read,115,55,91,59, - plb_vis->write,115,55,plb_vaddr2->stride, + plb_vis->write,115,55,plb_vis->stride, stride_factor); - - VMWtextxy("I'll be brief. ", - 1,1,tb1_pal[15],tb1_pal[0],1,tb1_font,vis); - if (pauseawhile(5)==TB_ESC) goto end; - VMWtextxy("Do you know how this base was founded?", - 1,1,tb1_pal[15],tb1_pal[0],1,tb1_font,vis); - if (pauseawhile(5)==TB_ESC) goto end; + */ + VMWtextxy("I'll be brief. ",1,1,tb1_pal[15],tb1_pal[0],1,tb1_font,vis); + pauseawhile(5); + VMWtextxy("Do you know how this base was founded?",1,1,tb1_pal[15],tb1_pal[0],1,tb1_font,vis); + pauseawhile(5); VMWtextxy("No? Well watch the screen. ",1,1,tb1_pal[15],tb1_pal[0],1,tb1_font,vis); - if (pauseawhile(5)==TB_ESC) goto end; - vmwArbitraryCrossBlit(plb_vaddr2->read,210,75,85,60, + pauseawhile(5); + /* vmwArbitraryCrossBlit(plb_vaddr2->read,210,75,85,60, plb_vis->write,210,136,plb_vis->stride, stride_factor); - if (pauseawhile(4)==TB_ESC) goto end; + pauseawhile(4); + */ + /*pal(250,0,0,0);*/ + /******BARGE TAKING OFF***********/ GGILoadPicPacked(0,0,vaddr2,1,1, @@ -686,71 +809,36 @@ end; (ggi_color *)&eight_bit_pal, (ggi_pixel *)&tb1_pal,color_depth); - VMWsmalltextxy("MY WIFE AND I FOUNDED", - 212,3,tb1_pal[14],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("THIS BASE IN 2008.", - 212,9,tb1_pal[14],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("THE ONLY WAY TO ", - 212,16,tb1_pal[13],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("FINANCE IT WAS TO", - 212,22,tb1_pal[13],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("ENGAGE IN A DUBIOUS", - 212,28,tb1_pal[13],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("BUSINESS.", - 212,34,tb1_pal[13],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("WE LAUNCHED EARTH'S", - 212,41,tb1_pal[12],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("TRASH INTO SPACE", - 212,47,tb1_pal[12],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("FOR A PROFIT.", - 212,53,tb1_pal[12],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("HERE IS FOOTAGE FROM", - 212,60,tb1_pal[11],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("THE LAST LAUNCH EIGHT", - 212,66,tb1_pal[11],tb1_pal[0],0,tb1_font,vaddr2); - VMWsmalltextxy("YEARS AGO.", - 212,72,tb1_pal[11],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("MY WIFE AND I FOUNDED",212,3,tb1_pal[14],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("THIS BASE IN 2008.",212,9,tb1_pal[14],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("THE ONLY WAY TO ",212,16,tb1_pal[13],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("FINANCE IT WAS TO",212,22,tb1_pal[13],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("ENGAGE IN A DUBIOUS",212,28,tb1_pal[13],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("BUSINESS.",212,34,tb1_pal[13],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("WE LAUNCHED EARTH'S",212,41,tb1_pal[12],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("TRASH INTO SPACE",212,47,tb1_pal[12],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("FOR A PROFIT.",212,53,tb1_pal[12],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("HERE IS FOOTAGE FROM",212,60,tb1_pal[11],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("THE LAST LAUNCH EIGHT",212,66,tb1_pal[11],tb1_pal[0],0,tb1_font,vaddr2); + VMWsmalltextxy("YEARS AGO.",212,72,tb1_pal[11],tb1_pal[0],0,tb1_font,vaddr2); - vmwCrossBlit(plb_vaddr->write,plb_vaddr2->read,plb_vis->stride,200); +/* vmwCrossBlit(plb_vaddr->write,plb_vaddr2->read,plb_vis->stride,200); +*/ +/* putshape(bargeoff,vaddr,16,18,141,157);*/ + + /* vmwCrossBlit(plb_vis->write,plb_vaddr->read,plb_vis->stride,200); + pauseawhile(7);*/ +/* - vmwPutSprite(barge,18,15,stride_factor, - plb_vaddr->write,141,157,plb_vaddr->stride); - - vmwCrossBlit(plb_vis->write,plb_vaddr->read,plb_vis->stride,200); - if (pauseawhile(7)==TB_ESC) goto end; + for ytemp:=191 downto 164 do begin + if ytemp>=172 then blockmove(145,ytemp,152,ytemp+10,vaddr2,145,ytemp,vaddr) + else blockmove(145,172,152,182,vaddr2,145,172,vaddr); + puttruck(145,ytemp,ytemp mod 2,vaddr); + pauseawhile(7); + if keypressed then if readkey=#27 then exit; + flipd320(vaddr,vga); + end; - for(ytemp=191;ytemp>163;ytemp--) { - if (ytemp>=172) vmwArbitraryCrossBlit(plb_vaddr2->read,145,ytemp, - 7,9,plb_vaddr->write,145,ytemp, - plb_vaddr->stride,stride_factor); - - /*blockmove(145,ytemp,152,ytemp+10,vaddr2,145,ytemp,vaddr)*/ - else vmwArbitraryCrossBlit(plb_vaddr2->read,145,172, - 7,9,plb_vaddr->write,145,172, - plb_vaddr->stride,stride_factor); - - - /*blockmove(145,172,152,182,vaddr2,145,172,vaddr);*/ - - yzrrp=ytemp-172; - if (yzrrp<0) yzrrp=-yzrrp; - else yzrrp=0; - if (ytemp%2) vmwPutPartialSprite(truck1,5,8,stride_factor, - plb_vaddr->write,145,ytemp, - plb_vaddr->stride,0,5,yzrrp,8); - - else vmwPutPartialSprite(truck2,5,8,stride_factor, - plb_vaddr->write,145,ytemp, - plb_vaddr->stride,0,5,yzrrp,8); - - /* truck1,truck2 - puttruck(145,ytemp,ytemp mod 2,vaddr);*/ - /*if (pauseawhile(1)==TB_ESC) break;*/ - usleep(30000); - vmwCrossBlit(plb_vis->write,plb_vaddr->read,plb_vis->stride,200); - - } -/* pauseawhile(20); flipd320(vaddr2,vaddr); putshape(bargeoff,vaddr,16,18,141,157); @@ -771,7 +859,7 @@ end; ytemp:=ytemp-round(thrust); end; */ - if (pauseawhile(5)==TB_ESC) goto end; + pauseawhile(5); /****SECOND CHIEF*******/ @@ -785,10 +873,10 @@ end; tb1_data_file("tbchief.tb1",(char *)tempst), (ggi_color *)&eight_bit_pal, (ggi_pixel *)&tb1_pal,color_depth); - vmwArbitraryCrossBlit(plb_vaddr2->read,7,104,90,21, +/* vmwArbitraryCrossBlit(plb_vaddr2->read,7,104,90,21, plb_vis->write,6,174,plb_vis->stride, stride_factor); - + */ VMWtextxy("You might wonder why this is important.",1,1,tb1_pal[15],tb1_pal[0],1,tb1_font,vis); pauseawhile(6); VMWtextxy("Last week we received a message. ",1,1,tb1_pal[15],tb1_pal[0],1,tb1_font,vis); @@ -797,9 +885,9 @@ end; pauseawhile(6); VMWtextxy("Watch the screen. ",1,1,tb1_pal[15],tb1_pal[0],1,tb1_font,vis); - vmwArbitraryCrossBlit(plb_vaddr2->read,210,136,85,59, + /*vmwArbitraryCrossBlit(plb_vaddr2->read,210,136,85,59, plb_vis->write,210,136,plb_vis->stride, - stride_factor); + stride_factor);*/ pauseawhile(4); /******ALIEN DELEGATION*****/ @@ -911,12 +999,7 @@ end; pauseawhile(6); VMWtextxy(" ",1,1,tb1_pal[9],tb1_pal[0],1,tb1_font,vis); pauseawhile(10); - - end: - /* All Done. Close up sound */ - Snd_restore(); - - +#endif } void credits() @@ -937,7 +1020,7 @@ void credits() VMWtextxy(" SOUND EFFECTS",0,340,tb1_pal[11],tb1_pal[0],1,tb1_font,vaddr2); VMWtextxy(" VINCENT M WEAVER",0,360,tb1_pal[11],tb1_pal[0],1,tb1_font,vaddr2); VMWtextxy(" GRAPHICS INSPIRATION",0,390,tb1_pal[12],tb1_pal[0],1,tb1_font,vaddr2); - +#if 0 for(i=0;i<200;i++){ vmwArbitraryCrossBlit(plb_vaddr2->read,0,i,320,200, plb_vis->write,0,0, @@ -1051,13 +1134,14 @@ void credits() vmwArbitraryCrossBlit(plb_vaddr2->read,0,200,320,200, plb_vaddr2->write,0,0, plb_vaddr2->stride,stride_factor); +#endif } void about() { int pagenum=1,firstime=0,oldpagenum=0,numpages=4,ch=0; char tempst[300]; - +#if 0 ggiSetGCForeground(vaddr,tb1_pal[0]); ggiFillscreen(vaddr); @@ -1155,7 +1239,7 @@ void about() tb1_data_file("tbgorg.tb1",(char *)&tempst), (ggi_color *)&eight_bit_pal, (ggi_pixel *)&tb1_pal,color_depth); - +#endif }