Login

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

// Подготовка спрайтов для НЛО-2
#include <stdio.h>
#include <alloc.h>
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>


int main(int n,char *arg[])
{
#define TIFF 194
 char *b,/*huge*/ *m,*name;
 unsigned i,j,k;
 int h;
 long len;
 int h2;
 unsigned ws,hs,xs,ys;
 char *spr;
 char *sprt;
 printf("\n\t(c)1995 Mednonogov bros.\n");
 printf("\tПодготовка спрайтов для НЛО-2\n");
 printf("\tиз файла .tif (256x192)\n");
 printf("\tс сохранением в формате .dat\n\n");
 if (n==1)
        {
         b=(char*)malloc(60);
 inp:    printf("Входной экранный файл : ");
         gets(b);
         if (strlen(b)==0) goto inp;
        }
 else b=arg[1];
 for(i=strlen (b);i>0;)
  {
   i--;
   if (b[i]=='\\') break;
   if (b[i]=='.')
     {
      b[i]=0;
      if(b[i+1]!='t' || b[i+2]!='i' || b[i+3]!='f' || b[i+4]!=0)
        {printf("Неверное расширение входного файла!\n");return -1;}
      break;
     }
  }
 name=(char*)(malloc(70));
 strcpy(name,b);
 strcat(name,".tif");
 h=open(name,O_BINARY | O_RDONLY);
 if (h==-1){perror("Ошибка открытия исходного файла (tif)\7\n");return -1;}
 len=filelength(h);
 if(len==0){printf("Файл пуст!\n"); return -1;}
 if((m=(char*)malloc(len))==0)
  {
   printf("Недостаточно памяти (необходимо %u Kb)!\n",len);
   return -1;
  }
 read(h,m,len);
 close(h);
 strcpy(name,b);
 strcat(name,".dat");
 h2=open(name,O_BINARY | O_CREAT | O_RDWR | O_TRUNC,S_IWRITE);
 if (h2==-1){perror("Ошибка открытия исходного файла (dat)\7\n");return -1;}
 m=m+TIFF;  //TIFF prefix
//---------------
 printf("Укажите:\n ширину спрайта: ");
 scanf("%u",&ws);
 printf(" высоту спрайта: ");
 scanf("%u",&hs);
 printf(" начальную строку: ");
 scanf("%u",&ys);
 printf(" начальную колонку: ");
 scanf("%u",&xs);
 spr=(char *)malloc(ws*hs*8);
 sprt=spr;
 for (i=0;i<hs;i++)
  for (k=0;k<8;k++)
  for (j=0;j<ws;j++)
   {
    *sprt=~m[(xs+j)+k*32+(ys+i)*256];
    sprt++;
//    printf("%5u%5u%5u\r",i,j,k);
   }
 write(h2,spr,ws*hs*8);
 printf("\nCохранён спрайт длиной %u байт.\n",ws*hs*8);
 return 0;
}