home *** CD-ROM | disk | FTP | other *** search
/ Doom 2 Explosion / Doom2Explosion.bin / doom2exp / programs / doomtx / detex.c next >
Text File  |  1994-08-26  |  2KB  |  77 lines

  1. /* DETEX v1.0. Part of DoomTex, by Steve McCrea 26/8/94 */
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <dos.h>
  5. #include <io.h>
  6. #include <sys\types.h>
  7. #include <sys\stat.h>
  8. #include <malloc.h>
  9. #include <fcntl.h>
  10.  
  11. int    fh;
  12.  
  13. void error(char *errstr)
  14. {    printf("Detex: ");
  15.     printf(errstr);
  16.     exit(1);    }
  17.  
  18. main(argc,argv)
  19. int argc;
  20. char *argv[];
  21. {
  22.     char texname[10], patname[10];
  23.     char *pnames;
  24.     long numtexs, numpats, dummy, i;
  25.     int lnumpats, patnum, j, k, x, y;
  26.     
  27.     if (argc != 3)
  28.         error("Usage: detex <pnames> <textures>\n");
  29.  
  30.     texname[8]='\0';
  31.     patname[8]='\0';
  32.     
  33.     if (!(fh=open(argv[1], O_BINARY|O_RDONLY)))
  34.         error("Can't open the <pnames> resource.\n");
  35.     read(fh, &numpats, 4);
  36.     if ((pnames=(char *)malloc(8*numpats))==NULL)
  37.         error("Can't allocate space for <pnames> resource.\n");
  38.     if (read(fh, pnames, 8*numpats)!=8*numpats)
  39.         error("The <pnames> resource is short.\n");
  40.     close(fh);
  41.  
  42.     if (!(fh=open(argv[2], O_BINARY|O_RDONLY)))
  43.         error("Can't open <textures>.\n");
  44.  
  45.     for (i=0; i<8*numpats; i++)
  46.         if (*(pnames+i)>0x40 && *(pnames+i)<0x5b) *(pnames+i) |= 0x20;
  47.  
  48.     printf("TEXTURES\n");
  49.     read(fh, &numtexs, 4);
  50.     for (i=0; i<numtexs; i++)
  51.         read(fh, &dummy, 4);
  52.     for (i=0; i<numtexs; i++) {
  53.         for (k=0; k<8; k++)
  54.             read(fh, &texname[k], 1);
  55.         read(fh, &dummy, 4);
  56.         read(fh, &x, 2);
  57.         read(fh, &y, 2);
  58.         read(fh, &dummy, 4);
  59.         read(fh, &lnumpats, 2);
  60.         printf("%s %d %d\n", &texname, x, y);
  61.         for (j=0; j<lnumpats; j++) {
  62.             read(fh, &x, 2);
  63.             read(fh, &y, 2);
  64.             read(fh, &patnum, 2);
  65.             for (k=0; k<8; k++)
  66.                 patname[k]=*(pnames+8*patnum+k);
  67.             printf("\t\t%s %d %d\n", &patname, x, y);
  68.             read(fh, &dummy, 4);
  69.             }
  70.         }
  71.     close(fh);
  72.     
  73.     printf("EOF\n");
  74.     free(pnames);
  75.  
  76.     exit(0);
  77. }