Annotation of src/bstub.c, revision 1.1

1.1     ! root        1: #include "build.h"
        !             2: #include "names.h"
        !             3: #include "stdio.h"
        !             4: #include <fcntl.h>
        !             5: #include <io.h>
        !             6: #include <sys\types.h>
        !             7: #include <sys\stat.h>
        !             8: #include <stdlib.h>
        !             9: #include <string.h>
        !            10: #include <dos.h>
        !            11: #include <setjmp.h>
        !            12: #include <stdarg.h>
        !            13: #include <process.h>
        !            14: 
        !            15: #define NUMOPTIONS 8
        !            16: #define NUMKEYS 19
        !            17: 
        !            18: long chainxres[4] = {256,320,360,400};
        !            19: long chainyres[11] = {200,240,256,270,300,350,360,400,480,512,540};
        !            20: long vesares[7][2] = {320,200,640,400,640,480,800,600,1024,768,
        !            21:                                                                          1280,1024,1600,1200};
        !            22: char option[NUMOPTIONS] = {0,0,0,0,0,0,1,0};
        !            23: char keys[NUMKEYS] =
        !            24: {
        !            25:        0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39,
        !            26:        0x1e,0x2c,0xd1,0xc9,0x33,0x34,
        !            27:        0x9c,0x1c,0xd,0xc,0xf,
        !            28: };
        !            29: 
        !            30: extern long zmode, kensplayerheight;
        !            31: 
        !            32: #define AVERAGEFRAMES   16
        !            33: 
        !            34: static long frameval[AVERAGEFRAMES], framecnt = 0;
        !            35: 
        !            36: 
        !            37: extern
        !            38: long posx,
        !            39:          posy,
        !            40:          posz,
        !            41:          horiz,
        !            42:          qsetmode;
        !            43: 
        !            44: extern
        !            45: short ang,
        !            46:          cursectnum;
        !            47: 
        !            48: extern
        !            49: short ceilingheinum,
        !            50:          floorheinum;
        !            51: 
        !            52: extern
        !            53: char names[MAXTILES][17];
        !            54: 
        !            55: extern
        !            56: short searchsector,
        !            57:          searchwall,
        !            58:          searchstat;              //search output
        !            59: 
        !            60: static
        !            61: short temppicnum,
        !            62:          tempcstat;
        !            63: 
        !            64: static
        !            65: char tempshade,
        !            66:          tempxrepeat,
        !            67:          tempyrepeat,
        !            68:          somethingintab=255;
        !            69: 
        !            70: extern
        !            71: void __interrupt __far timerhandler(void);
        !            72: 
        !            73: long xoldtimerhandler;
        !            74: 
        !            75: void __interrupt __far
        !            76: xtimerhandler(void)
        !            77: {
        !            78:          timerhandler();
        !            79:          if (qsetmode == 480) {
        !            80:                         Keys2d();
        !            81:          }
        !            82:          else {
        !            83:                         Keys3d();
        !            84:          }
        !            85: }
        !            86: 
        !            87: 
        !            88: void faketimerhandler(void) {
        !            89:        return;
        !            90: }
        !            91: 
        !            92: void
        !            93: xinittimer(void)
        !            94: {
        !            95:          outp(0x43,54);
        !            96:          outp(0x40,9942&255);
        !            97:          outp(0x40,9942>>8);      //120 times/sec
        !            98:          xoldtimerhandler=(long)_dos_getvect(0x8);
        !            99:          _disable();
        !           100:          _dos_setvect(0x8,xtimerhandler);
        !           101:          _enable();
        !           102: }
        !           103: 
        !           104: static
        !           105: char tempbuf[256];            //161
        !           106: 
        !           107: static
        !           108: int  numsprite[2000];
        !           109: 
        !           110: static
        !           111: char lo[32];
        !           112: 
        !           113: static
        !           114: const char *levelname;
        !           115: 
        !           116: static
        !           117: short curwall=0,
        !           118:          wallpicnum=0,
        !           119:          curwallnum=0;
        !           120: 
        !           121: static
        !           122: short cursprite=0,
        !           123:          curspritenum=0;
        !           124: 
        !           125: static
        !           126: char wallsprite=0;
        !           127: 
        !           128: static helpon=0;
        !           129: 
        !           130: static
        !           131: char once=0;
        !           132: 
        !           133: void
        !           134: ExtLoadMap(const char *mapname)
        !           135: {
        !           136:          int fil;
        !           137: 
        !           138:          if (once == 0) {
        !           139:                         xinittimer();
        !           140:          }
        !           141:          once=1;
        !           142:          levelname=mapname;
        !           143:        
        !           144:          if ((fil = open("build.dat",O_BINARY|O_RDWR,S_IREAD)) != -1) {
        !           145:                 read(fil,&option[0],NUMOPTIONS);
        !           146:                 close(fil);
        !           147:          }
        !           148:          
        !           149:          ReadPaletteTable();
        !           150:          visibility=11;
        !           151: //     pskyoff[0]=0;
        !           152: //     pskybits=3;
        !           153: }
        !           154: 
        !           155: void
        !           156: ExtSaveMap(const char *mapname)
        !           157: {
        !           158:          clearmidstatbar16();             //Clear middle of status bar
        !           159:          sprintf(tempbuf,"Saving File : %s",mapname);
        !           160:          printmessage16(tempbuf);
        !           161: }
        !           162: 
        !           163: const
        !           164: char *ExtGetSectorCaption(short sectnum)
        !           165: {
        !           166: 
        !           167:          short which;
        !           168:          int temp=0;
        !           169:          char string[5];
        !           170:          char destination[25];
        !           171: 
        !           172:          which = sector[sectnum].lotag;
        !           173: 
        !           174:          if ((sector[sectnum].lotag|sector[sectnum].hitag) == 0) {
        !           175:                         tempbuf[0]=0;
        !           176:          }
        !           177:          else {
        !           178:                         if( which >= 1100 && which <= 1900) {
        !           179:                                 temp = sector[sectnum].lotag / 100;  
        !           180:                                 which = temp * 100;
        !           181:                                 itoa(sector[sectnum].lotag-which,string,10);
        !           182:                         }
        !           183:                         else if( which >=2000 && which <= 2999 ) {
        !           184: 
        !           185: 
        !           186:                         }
        !           187:                         if( which >= 80 && which <= 89 ) {
        !           188:                                // panning
        !           189:                                temp=which-80;
        !           190:                                which=sector[sectnum].lotag-temp;
        !           191:                         }
        !           192:                         //switch((unsigned short)sector[sectnum].lotag) {
        !           193:                         switch (which) {
        !           194:                         case 1:
        !           195:                                        sprintf(lo,"ACTIVATE SECTOR");
        !           196:                                        break;
        !           197:                         case 2:
        !           198:                                        sprintf(lo,"ACTIVATE ONCE");
        !           199:                                        break;
        !           200:                         case 4:
        !           201:                         //
        !           202:                         // need to fix
        !           203:                                        sprintf(lo,"FLOOR PANNING");
        !           204:                                        break;
        !           205:                         case 6:
        !           206:                                        sprintf(lo,"RISING DOOR");
        !           207:                                        break;
        !           208:                         case 7:
        !           209:                                        sprintf(lo,"DROP DOOR");
        !           210:                                        break;
        !           211:                         case 8:
        !           212:                                        sprintf(lo,"HOR SPLIT DOOR");
        !           213:                                        break;
        !           214:                         case 9:
        !           215:                                        sprintf(lo,"VER SPLIT DOOR");
        !           216:                                        break;
        !           217:                         case 10:
        !           218:                                        sprintf(lo,"TELEPORTER");
        !           219:                                        break;
        !           220:                         case 11:
        !           221:                                        sprintf(lo,"XPANNING WALLS");
        !           222:                         case 16:
        !           223:                                        sprintf(lo,"BOX DOOR");
        !           224:                                        break;
        !           225:                         case 80:
        !           226:                                        strcpy(destination,"PANNING ");
        !           227:                         
        !           228:                                        switch(temp) {
        !           229:                                                case 0:
        !           230:                                                        strcpy(string,"N");
        !           231:                                                break;
        !           232:                                                case 1:
        !           233:                                                        strcpy(string,"NE");
        !           234:                                                break;
        !           235:                                                case 2:
        !           236:                                                        strcpy(string,"E");
        !           237:                                                break;
        !           238:                                                case 3:
        !           239:                                                        strcpy(string,"SE");
        !           240:                                                break;
        !           241:                                                case 4:
        !           242:                                                        strcpy(string,"S");
        !           243:                                                break;
        !           244:                                                case 5:
        !           245:                                                        strcpy(string,"SW");
        !           246:                                                break;
        !           247:                                                case 6:
        !           248:                                                        strcpy(string,"W");
        !           249:                                                break;
        !           250:                                                case 7:
        !           251:                                                        strcpy(string,"SW");
        !           252:                                                break;
        !           253:                                        }
        !           254:                                        strcat(destination," ");
        !           255:                                        strcat(destination,string);
        !           256:                                        sprintf(lo,destination);
        !           257:                                        break;
        !           258:                         case 1000:
        !           259:                                        sprintf(lo,"PLATFORM ELEVATOR");
        !           260:                                        break;
        !           261:                         case 1003:
        !           262:                                        sprintf(lo,"BOX ELEVATOR");
        !           263:                                        break;
        !           264:                         case 1100:
        !           265:                                        strcpy(destination,"DROP FLOOR ");
        !           266:                                        strcat(destination,string);
        !           267:                                        sprintf(lo,destination);
        !           268:                                        break;
        !           269:                         case 1200:
        !           270:                                        strcpy(destination,"RAISE FLOOR ");
        !           271:                                        strcat(destination,string);
        !           272:                                        sprintf(lo,destination);
        !           273:                                        break;
        !           274:                         case 1300:
        !           275:                                        strcpy(destination,"DROP CEILING ");
        !           276:                                        strcat(destination,string);
        !           277:                                        sprintf(lo,destination);
        !           278:                                        break;
        !           279:                         case 1400:
        !           280:                                        strcpy(destination,"RAISE CEILING ");
        !           281:                                        strcat(destination,string);
        !           282:                                        sprintf(lo,destination);
        !           283:                                        break;
        !           284:                         case 1500:
        !           285:                                        strcpy(destination,"DROP F&C ");
        !           286:                                        strcat(destination,string);
        !           287:                                        sprintf(lo,destination);
        !           288:                                        break;
        !           289:                         case 1600:
        !           290:                                        strcpy(destination,"RAISE F&C ");
        !           291:                                        strcat(destination,string);
        !           292:                                        sprintf(lo,destination);
        !           293:                                        break;
        !           294:                         case 1800:
        !           295:                                        sprintf(lo,"LIFT");
        !           296:                                        break;
        !           297:                         case 1900:
        !           298:                                        sprintf(lo,"FLOOR DOOR");
        !           299:                                        break;
        !           300:                         case 4002:
        !           301:                                        sprintf(lo,"WARP TO NEW LEVEL");
        !           302:                                        break;
        !           303:                         default:
        !           304:                                        sprintf(lo,"%hu",(unsigned short)sector[sectnum].lotag);
        !           305:                                        break;
        !           306:                         }
        !           307:                         sprintf(tempbuf,"%hu,%s",(unsigned short)sector[sectnum].hitag,lo);
        !           308:          }
        !           309:          return(tempbuf);
        !           310: }
        !           311: 
        !           312: const
        !           313: char *ExtGetWallCaption(short wallnum)
        !           314: {
        !           315:          long i=0;
        !           316: 
        !           317:          if (keystatus[0x57] > 0) {    // f11   Grab pic 0x4e +
        !           318:                         wallpicnum=wall[curwall].picnum;
        !           319:                         sprintf(tempbuf,"Grabed Wall Picnum %ld",wallpicnum);
        !           320:                         printmessage16(tempbuf);
        !           321:          }
        !           322:          if (keystatus[0x2b] > 0) {    // |
        !           323:                         if (wallsprite == 1) {
        !           324:                                        for (i=curwallnum ; i < MAXWALLS ; i++) {
        !           325:                                                  if (wall[i].picnum == wall[curwall].picnum) {
        !           326:                                                                 posx=(wall[i].x)-(((wall[i].x)-(wall[wall[i].point2].x))/2);
        !           327:                                                                 posy=(wall[i].y)-(( (wall[i].y)-(wall[wall[i].point2].y))/2);
        !           328:                                                                 printmessage16("Wall Found");
        !           329:                                                                 curwallnum++;
        !           330:                                                                 keystatus[0x2b]=0;
        !           331:                                                                 return(tempbuf);
        !           332:                                                  }
        !           333:                                                  curwallnum++;
        !           334:                                        }
        !           335:                         }
        !           336:                         if (wallsprite == 2) {
        !           337:                                        for (i=curspritenum ; i < MAXSPRITES ; i++) {
        !           338:                                                  if (sprite[i].picnum == sprite[cursprite].picnum && sprite[i].statnum == 0) {
        !           339:                                                                 posx=sprite[i].x;
        !           340:                                                                 posy=sprite[i].y;
        !           341:                                                                 ang=sprite[i].ang;
        !           342:                                                                 printmessage16("Sprite Found");
        !           343:                                                                 curspritenum++;
        !           344:                                                                 keystatus[0x2b]=0;
        !           345:                                                                 return(tempbuf);
        !           346:                                                  }
        !           347:                                                  curspritenum++;
        !           348:                                        }
        !           349:                         }
        !           350:          }
        !           351:          if ((wall[wallnum].lotag|wall[wallnum].hitag) == 0) {
        !           352:                         tempbuf[0]=0;
        !           353:          }
        !           354:          else {
        !           355:                         sprintf(tempbuf,"%hu,%hu",(unsigned short)wall[wallnum].hitag,
        !           356:                                                                                  (unsigned short)wall[wallnum].lotag);
        !           357:          }
        !           358:          return(tempbuf);
        !           359: }
        !           360: 
        !           361: const
        !           362: char *ExtGetSpriteCaption(short spritenum)
        !           363: {
        !           364:          char destination[20];
        !           365:          int which;
        !           366:          
        !           367:          tempbuf[0]=0;
        !           368: 
        !           369:          if ((sprite[spritenum].lotag|sprite[spritenum].hitag) == 0) {
        !           370:                         SpriteName(spritenum,lo);
        !           371:                         if (lo[0] != 0) {
        !           372:                                        sprintf(tempbuf,"%s",lo);
        !           373:                         }
        !           374:          }
        !           375:          else if ((unsigned short)sprite[spritenum].picnum == 104) {
        !           376:                         switch((unsigned short)sprite[spritenum].lotag) {
        !           377:                         case 1000:
        !           378:                                        sprintf(lo,"PULSING");
        !           379:                                        break;
        !           380:                         case 1001:
        !           381:                                        sprintf(lo,"FLICKERING");
        !           382:                                        break;
        !           383:                         case 1002:
        !           384:                                        sprintf(lo,"TIC DELAY");
        !           385:                                        break;
        !           386:                         default:
        !           387:                                        sprintf(lo,"%hu",(unsigned short)sprite[spritenum].lotag);
        !           388:                                        break;
        !           389:                         }
        !           390:                         sprintf(tempbuf,"%hu,%s",(unsigned short)sprite[spritenum].hitag,lo);
        !           391:          }
        !           392:          else if(sprite[spritenum].hitag >= 90 && sprite[spritenum].hitag <= 99) {     
        !           393:                         which=sprite[spritenum].lotag;
        !           394:                         strcpy(destination,"GRATE ");
        !           395:                                        switch(which){
        !           396:                                                case 1:
        !           397:                                                        strcat(destination,"OUT");
        !           398:                                                break;
        !           399:                                                case 2:
        !           400:                                                        strcat(destination,"IN");
        !           401:                                                break;
        !           402:                                                case 3:
        !           403:                                                        strcat(destination,"UP");
        !           404:                                                break;
        !           405:                                                case 4:
        !           406:                                                        strcat(destination,"DN");
        !           407:                                                break;
        !           408:                                        }
        !           409:          sprintf(lo,destination);
        !           410:          }          
        !           411:          else {
        !           412:                         SpriteName(spritenum,lo);
        !           413:                         sprintf(tempbuf,"%hu,%hu %s",(unsigned short)sprite[spritenum].hitag,
        !           414:                                                                                          (unsigned short)sprite[spritenum].lotag,lo);
        !           415:          }
        !           416:          return(tempbuf);
        !           417: }
        !           418: 
        !           419: //printext16 parameters:
        !           420: //printext16(long xpos, long ypos, short col, short backcol,
        !           421: //           char name[82], char fontsize)
        !           422: //  xpos 0-639   (top left)
        !           423: //  ypos 0-479   (top left)
        !           424: //  col 0-15
        !           425: //  backcol 0-15, -1 is transparent background
        !           426: //  name
        !           427: //  fontsize 0=8*8, 1=3*5
        !           428: 
        !           429: //drawline16 parameters:
        !           430: // drawline16(long x1, long y1, long x2, long y2, char col)
        !           431: //  x1, x2  0-639
        !           432: //  y1, y2  0-143  (status bar is 144 high, origin is top-left of STATUS BAR)
        !           433: //  col     0-15
        !           434: 
        !           435: void
        !           436: ExtShowSectorData(short sectnum)   //F5
        !           437: {
        !           438:          int  i,c=0;
        !           439: 
        !           440:          for (i=0 ; i < 2000 ; i++) {
        !           441:                         numsprite[i]=0;
        !           442:          }
        !           443:          for (i=0 ; i < MAXSPRITES ; i++) {
        !           444:                         if (sprite[i].statnum == 0) {
        !           445:                                        numsprite[sprite[i].picnum]++;
        !           446:                         }
        !           447:          }
        !           448:          clearmidstatbar16();          //Clear middle of status bar
        !           449:          sprintf(tempbuf,"Level %s",levelname);
        !           450:          printmessage16(tempbuf);
        !           451: }
        !           452: 
        !           453: void
        !           454: ExtShowWallData(short wallnum)       //F6
        !           455: {
        !           456:          int  i,nexti,bls,ouls,ss,rss,smss,tss,es,drs,music=0;
        !           457: 
        !           458:          bls=ouls=ss=rss=smss=tss=es=drs=0;
        !           459:          for(i=0 ; i < MAXSPRITES ; i++) {
        !           460:                         if (sprite[i].picnum == 51 && sprite[i].statnum == 0) {
        !           461:                                        if(sprite[i].lotag > drs) {
        !           462:                                                  drs=sprite[i].lotag;
        !           463:                                        }
        !           464:                         }
        !           465:                         if (sprite[i].picnum == 175 && sprite[i].statnum == 0) {
        !           466:                                        switch(sprite[i].lotag) {
        !           467:                                        case 1:
        !           468:                                                  if (sprite[i].hitag > rss) {
        !           469:                                                                 rss=sprite[i].hitag;
        !           470:                                                  }
        !           471:                                                  break;
        !           472:                                        case 3:
        !           473:                                        case 4:
        !           474:                                                  if (sprite[i].hitag > bls) {
        !           475:                                                                 bls=sprite[i].hitag;
        !           476:                                                  }
        !           477:                                                  break;
        !           478:                                        case 7:
        !           479:                                                  if (sprite[i].hitag > tss) {
        !           480:                                                                 tss=sprite[i].hitag;
        !           481:                                                  }
        !           482:                                                  break;
        !           483:                                        case 8:
        !           484:                                                  if (sprite[i].hitag > ouls) {
        !           485:                                                                 ouls=sprite[i].hitag;
        !           486:                                                  }
        !           487:                                                  break;
        !           488:                                        case 13:
        !           489:                                                  if (sprite[i].hitag > es) {
        !           490:                                                                 es=sprite[i].hitag;
        !           491:                                                  }
        !           492:                                                  break;
        !           493:                                        }
        !           494:                         }
        !           495:          }
        !           496:          clearmidstatbar16();
        !           497:          sprintf(tempbuf,"Level %s",levelname);
        !           498:          printmessage16(tempbuf);
        !           499:          printext16(1*8,4*8,11,-1,"Sector Effector Status",0);
        !           500:          PrintStatus("Breaking Lights       =",bls,2,6,11);
        !           501:          PrintStatus("Open Up Lights        =",ouls,2,7,11);
        !           502:          PrintStatus("Switches              =",ss,2,8,11);
        !           503:          PrintStatus("Rotating Sectors      =",rss,2,9,11);
        !           504:          PrintStatus("Subway Moving Sectors =",smss,2,10,11);
        !           505:          PrintStatus("Transporting Sectors  =",tss,2,11,11);
        !           506:          PrintStatus("Exploding Sectors     =",es,32,6,11);
        !           507:          PrintStatus("Delay Reactions       =",drs,32,7,11);
        !           508: }
        !           509: 
        !           510: void
        !           511: ExtShowSpriteData(short spritenum)   //F6
        !           512: {
        !           513:          FILE *fp;
        !           514:          int  i,t;
        !           515:          char x=0,y=4,xmax=0,xx=0,col=0;
        !           516: 
        !           517:          clearmidstatbar16();
        !           518:          if ((fp=fopen("sehelp.hlp","rb")) == NULL) {
        !           519:                         printext16(1*4,4*8,11,-1,"ERROR: file <SEHELP.HLP> not found.",0);
        !           520:                         return;
        !           521:          }
        !           522:          t=65;
        !           523:          while (t != EOF && col < 5) {
        !           524:                         t=getc(fp);
        !           525:                         while (t != EOF && t != '\n' && x < 250) {
        !           526:                                        tempbuf[x]=t;
        !           527:                                        t=getc(fp);
        !           528:                                        x++;
        !           529:                                        if (x > xmax) {
        !           530:                                                  xmax=x;
        !           531:                                        }
        !           532:                         }
        !           533:                         tempbuf[x]=0;
        !           534:                         printext16(xx*4,(y*6)+2,11,-1,tempbuf,1);
        !           535:                         x=0;
        !           536:                         y++;
        !           537:                         if (y > 18) {
        !           538:                                        col++;
        !           539:                                        y=6;
        !           540:                                        xx+=xmax;
        !           541:                                        xmax=0;
        !           542:                         }
        !           543:          }
        !           544: }
        !           545: 
        !           546: void
        !           547: ExtEditSectorData(short sectnum)    //F7
        !           548: {
        !           549:          FILE *fp;
        !           550:          int  i,t;
        !           551:          char x=0,y=4,xmax=0,xx=0,col=0;
        !           552: 
        !           553:          clearmidstatbar16();
        !           554:          if ((fp=fopen("sthelp.hlp","rb")) == NULL) {
        !           555:                         printext16(1*4,4*8,11,-1,"ERROR: file <STHELP.HLP> not found.",0);
        !           556:                         return;
        !           557:          }
        !           558:          t=65;
        !           559:          while (t != EOF && col < 5) {
        !           560:                         t=getc(fp);
        !           561:                         while (t != EOF && t != '\n' && x < 250) {
        !           562:                                        tempbuf[x]=t;
        !           563:                                        t=getc(fp);
        !           564:                                        x++;
        !           565:                                        if (x > xmax) {
        !           566:                                                  xmax=x;
        !           567:                                        }
        !           568:                         }
        !           569:                         tempbuf[x]=0;
        !           570:                         printext16(xx*4,(y*6)+2,11,-1,tempbuf,1);
        !           571:                         x=0;
        !           572:                         y++;
        !           573:                         if (y > 18) {
        !           574:                                        col++;
        !           575:                                        y=6;
        !           576:                                        xx+=xmax;
        !           577:                                        xmax=0;
        !           578:                         }
        !           579:          }
        !           580: }
        !           581: 
        !           582: void
        !           583: ExtEditWallData(short wallnum)       //F8
        !           584: {
        !           585:          wallsprite=1;
        !           586:          curwall=wallnum;
        !           587:          curwallnum=0;
        !           588:          sprintf(tempbuf,"Current Wall %ld",curwall);
        !           589:          printmessage16(tempbuf);
        !           590: }
        !           591: 
        !           592: void
        !           593: ExtEditSpriteData(short spritenum)   //F8
        !           594: {
        !           595:          wallsprite=2;
        !           596:          cursprite=spritenum;
        !           597:          curspritenum=0;
        !           598:          sprintf(tempbuf,"Current Sprite %ld",cursprite);
        !           599:          printmessage16(tempbuf);
        !           600: }
        !           601: 
        !           602:         //Just thought you might want my getnumber16 code
        !           603: /*
        !           604: getnumber16(char namestart[80], short num, long maxnumber)
        !           605: {
        !           606:        char buffer[80];
        !           607:        long j, k, n, danum, oldnum;
        !           608: 
        !           609:        danum = (long)num;
        !           610:        oldnum = danum;
        !           611:        while ((keystatus[0x1c] != 2) && (keystatus[0x1] == 0))  //Enter, ESC
        !           612:        {
        !           613:                sprintf(&buffer,"%s%ld_ ",namestart,danum);
        !           614:                printmessage16(buffer);
        !           615: 
        !           616:                for(j=2;j<=11;j++)                //Scan numbers 0-9
        !           617:                        if (keystatus[j] > 0)
        !           618:                        {
        !           619:                                keystatus[j] = 0;
        !           620:                                k = j-1;
        !           621:                                if (k == 10) k = 0;
        !           622:                                n = (danum*10)+k;
        !           623:                                if (n < maxnumber) danum = n;
        !           624:                        }
        !           625:                if (keystatus[0xe] > 0)    // backspace
        !           626:                {
        !           627:                        danum /= 10;
        !           628:                        keystatus[0xe] = 0;
        !           629:                }
        !           630:                if (keystatus[0x1c] == 1)   //L. enter
        !           631:                {
        !           632:                        oldnum = danum;
        !           633:                        keystatus[0x1c] = 2;
        !           634:                        asksave = 1;
        !           635:                }
        !           636:        }
        !           637:        keystatus[0x1c] = 0;
        !           638:        keystatus[0x1] = 0;
        !           639:        return((short)oldnum);
        !           640: }
        !           641: */
        !           642: 
        !           643: void
        !           644: PrintStatus(char *string,int num,char x,char y,char color)
        !           645: {
        !           646:          sprintf(tempbuf,"%s %d",string,num);
        !           647:          printext16(x*8,y*8,color,-1,tempbuf,0);
        !           648: }
        !           649: 
        !           650: void
        !           651: SpriteName(short spritenum, char *lo2)
        !           652: {
        !           653:          sprintf(lo2,names[sprite[spritenum].picnum]);
        !           654: /*
        !           655:  switch((unsigned short)sprite[spritenum].picnum)
        !           656:  {
        !           657:   case APLAYER : sprintf(lo2,"GRONDOVAL"); break;
        !           658:   case KOBOLD : sprintf(lo2,"KOBOLD"); break;
        !           659:   case JUDY : sprintf(lo2,"JUDY"); break;
        !           660:   case MANDROID : sprintf(lo2,"MANDROID"); break;
        !           661:   case TROOP1 : sprintf(lo2,"TROOPER"); break;
        !           662:   case SEENINE : sprintf(lo2,"C-9"); break;
        !           663:   case BAT : sprintf(lo2,"BAT"); break;
        !           664:   case REACTOR : sprintf(lo2,"REACTOR"); break;
        !           665:   case EXPLODINGBARREL : sprintf(lo2,"EBARREL"); break;
        !           666: 
        !           667:   case COKE : sprintf(lo2,"COKE"); break;
        !           668:   case SIXPAK : sprintf(lo2,"SIXPAK"); break;
        !           669:   case STEROIDS : sprintf(lo2,"STEROIDS"); break;
        !           670:   case SHIELD : sprintf(lo2,"SHIELD"); break;
        !           671:   case AIRTANK : sprintf(lo2,"AIRTANK"); break;
        !           672:   case JETPACK : sprintf(lo2,"JETPACK"); break;
        !           673:   case HOLODUKE : sprintf(lo2,"HOLODUKE"); break;
        !           674: 
        !           675:   case FIRSTGUNSPRITE : sprintf(lo2,"PISTOL"); break;
        !           676:   case GUN2ASPRITE : sprintf(lo2,"ELECTROGUN"); break;
        !           677:   case RPGSPRITE : sprintf(lo2,"RPG"); break;
        !           678: 
        !           679:   case AMMO : sprintf(lo2,"AMMO"); break;
        !           680:   case BATTERYAMMO : sprintf(lo2,"BATTERY"); break;
        !           681:   case HEAVYHBOMB : sprintf(lo2,"H-BOMB"); break;
        !           682:   case RPGAMMO : sprintf(lo2,"3-RPG"); break;
        !           683: 
        !           684:   default : lo2[0]=0;
        !           685:  }
        !           686: */
        !           687: }
        !           688: 
        !           689: void
        !           690: ReadPaletteTable()
        !           691: {
        !           692:          FILE *fp;
        !           693:          int  i,j;
        !           694:          char num_tables,lookup_num;
        !           695: 
        !           696:          if ((fp=fopen("lookup.dat","rb")) == NULL) {
        !           697:                         return;
        !           698:          }
        !           699:          num_tables=getc(fp);
        !           700:          for (j=0 ; j < num_tables ; j++) {
        !           701:                         lookup_num=getc(fp);
        !           702:                         for (i=0 ; i < 256 ; i++) {
        !           703:                                        tempbuf[i]=getc(fp);
        !           704:                         }
        !           705:                         makepalookup(lookup_num,tempbuf,0,0,0,0);
        !           706:          }
        !           707:          fclose;
        !           708: }
        !           709: 
        !           710: void
        !           711: Keys3d(void)
        !           712: {
        !           713:          if (helpon == 1) {
        !           714:                         printext256(0*8,0*8,15,0,"HELP SCREEN",0);
        !           715:                         printext256(0*8,2*8,15,0," ' + H = Help",0);
        !           716:                         printext256(0*8,3*8,15,0," ' + Enter = copy graphic Only",0);
        !           717:          }
        !           718:          if (keystatus[0x28] == 1 && keystatus[0x23] == 1) { // ' H
        !           719:                         helpon=1;
        !           720:          }
        !           721:          if (keystatus[0x29] == 1) { // `
        !           722:                         helpon=0;
        !           723:          }
        !           724:          if (keystatus[0x28] == 1 && keystatus[0x1c] == 1) { // ' ENTER
        !           725:                         printext256(0,0,15,0,"Put Graphic ONLY",0);
        !           726:                         keystatus[0x1c]=0;
        !           727:                         switch(searchstat) {
        !           728:                         case 0:
        !           729:                                        wall[searchwall].picnum=temppicnum;
        !           730:                                        break;
        !           731:                         case 1:
        !           732:                                        sector[searchsector].ceilingpicnum=temppicnum;
        !           733:                                        break;
        !           734:                         case 2:
        !           735:                                        sector[searchsector].floorpicnum=temppicnum;
        !           736:                                        break;
        !           737:                         case 3:
        !           738:                                        sprite[searchwall].picnum=temppicnum;
        !           739:                                        break;
        !           740:                         case 4:
        !           741:                                        wall[searchwall].overpicnum=temppicnum;
        !           742:                                        break;
        !           743:                         }
        !           744:          }
        !           745:          if (keystatus[0x0f] == 1) { //TAB
        !           746:                         switch (searchstat) {
        !           747:                         case 0:
        !           748:                                        temppicnum=wall[searchwall].picnum;
        !           749:                                        tempshade=wall[searchwall].shade;
        !           750:                                        tempxrepeat=wall[searchwall].xrepeat;
        !           751:                                        tempyrepeat=wall[searchwall].yrepeat;
        !           752:                                        tempcstat=wall[searchwall].cstat;
        !           753:                                        break;
        !           754:                         case 1:
        !           755:                                        temppicnum=sector[searchsector].ceilingpicnum;
        !           756:                                        tempshade=sector[searchsector].ceilingshade;
        !           757:                                        tempxrepeat=sector[searchsector].ceilingxpanning;
        !           758:                                        tempyrepeat=sector[searchsector].ceilingypanning;
        !           759:                                        tempcstat=sector[searchsector].ceilingstat;
        !           760:                                        break;
        !           761:                         case 2:
        !           762:                                        temppicnum=sector[searchsector].floorpicnum;
        !           763:                                        tempshade=sector[searchsector].floorshade;
        !           764:                                        tempxrepeat=sector[searchsector].floorxpanning;
        !           765:                                        tempyrepeat=sector[searchsector].floorypanning;
        !           766:                                        tempcstat=sector[searchsector].floorstat;
        !           767:                                        break;
        !           768:                         case 3:
        !           769:                                        temppicnum=sprite[searchwall].picnum;
        !           770:                                        tempshade=sprite[searchwall].shade;
        !           771:                                        tempxrepeat=sprite[searchwall].xrepeat;
        !           772:                                        tempyrepeat=sprite[searchwall].yrepeat;
        !           773:                                        tempcstat=sprite[searchwall].cstat;
        !           774:                                        break;
        !           775:                         case 4:
        !           776:                                        temppicnum=wall[searchwall].overpicnum;
        !           777:                                        tempshade=wall[searchwall].shade;
        !           778:                                        tempxrepeat=wall[searchwall].xrepeat;
        !           779:                                        tempyrepeat=wall[searchwall].yrepeat;
        !           780:                                        tempcstat=wall[searchwall].cstat;
        !           781:                         }
        !           782:          }
        !           783: }
        !           784: 
        !           785: void
        !           786: Keys2d(void)
        !           787: {
        !           788: 
        !           789: }
        !           790: 
        !           791: void ExtInit(void)
        !           792: {
        !           793:        long i;
        !           794: 
        !           795:                //You can load your own palette lookup tables here if you just
        !           796:                //copy the right code!
        !           797:        for(i=0;i<256;i++)
        !           798:                tempbuf[i] = ((i+32)&255);  //remap colors for screwy palette sectors
        !           799:        makepalookup(16,tempbuf,0,0,0);
        !           800: 
        !           801:        kensplayerheight = 54;
        !           802:        zmode = 0;
        !           803:        
        !           804: }
        !           805: 
        !           806: void ExtUnInit(void)
        !           807: {
        !           808: }
        !           809: 
        !           810: void ExtPreCheckKeys(void)
        !           811: {
        !           812: }
        !           813: 
        !           814: void ExtCheckKeys(void)
        !           815: {
        !           816:        long i;
        !           817: 
        !           818:        if (qsetmode == 200)    //In 3D mode
        !           819:        {
        !           820:                i = totalclock;
        !           821:                if (i != frameval[framecnt])
        !           822:                {
        !           823:                        sprintf(tempbuf,"%ld",(120*AVERAGEFRAMES)/(i-frameval[framecnt]));
        !           824:                        printext256(0L,0L,31,-1,tempbuf,1);
        !           825:                        frameval[framecnt] = i;
        !           826:                }
        !           827:                framecnt = ((framecnt+1)&(AVERAGEFRAMES-1));
        !           828:                
        !           829:                editinput();
        !           830:        }
        !           831:        else
        !           832:        {
        !           833:        }
        !           834: }
        !           835: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.