Program XSpriter;
 
{Преобразует TIFF-файлы оформления НЛО-2 в файл спрайтов }
 
uses Crt,Graph;
 
const
 
 Nblock=8;
 
 fn:array [1..Nblock] of string=('xearth',
 
                            'xweapon',
 
                            'xbutton',
 
                            'xsign',
 
                            'xparam',
 
                            'xkey',
 
                            'xlabel',
 
                            'xSCAN'
 
                            );
 
 fl:array [1..Nblock,1..2] of byte=((24,15),    {размер X*Y*8 байт}
 
                                 (4,2*15),
 
                                 (4,4+3+4),
 
                                 (3,3*12),
 
                                 (3,2*10),
 
                                 (12,6+2),
 
                                 (2,2*26),
 
                                 (1,12)
 
                                );
 
var
 
 TF,ZF:File of Char;
 
 name,name1,name2:string;
 
 fln:array[1..Nblock] of integer;
 
 b:array [0..(5*64-1),0..31] of byte;
 
 c:char;
 
 n:Longint;
 
 aa,bb,cc,dd:byte;
 
 gr,modd,i,j,k,m,jj:integer;
 
 x,y:integer;
 
 
 
begin
 
  ClrScr;
 
  n:=0;
 
  Writeln('Конвертация TIFF-файлoв');
 
  Writeln('игрового оформления НЛО-2');
 
  Writeln('в eдиный файл спрайтов ');
 
  Name:='d:\''UFO2''\';
 
  name2:=Name+'data\xsprites.dat';
 
  Assign(TF,name2);
 
  Rewrite(TF);
 
  jj:=0;
 
  gr:=detect;
 
  InitGraph(gr,modd,'d:\tp7\bgi\');
 
 
 
 for n:=1 to Nblock do begin
 
  name1:=Name+'images\'+fn[n]+'.tif';
 
  Assign(ZF,name1);
 
  ClearViewPort;
 
  Reset(ZF);
 
  x:=fl[n,1];
 
  y:=fl[n,2];
 
  fln[n]:=jj;
 
  jj:=jj+x*y*8;
 
 
 
  for i:=1 to 194 do begin
 
       read(ZF,c);            {read TIF prefix}
 
       end;
 
 
 
  for m:=0 to (y)*8-1 do                       {read TIF screen}
 
        for i:=0 to x-1 do
 
          begin
 
            read(ZF,c);
 
            for gr:=0 to 7 do
 
             putpixel(i*8+gr,m,(ord(c) shr (7-gr) and 1)*14);
 
            c:=chr(ord(c) xor $FF);
 
            write(TF,c);
 
          end;
 
  Close(ZF);
 
  end;
 
  Close(TF);
 
  CloseGraph;
 
  ClrScr;
 
  for i:=1 to Nblock do
 
   writeln('Блок графики ',fn[i],' c адреса ',fln[i]);
 
  writeln('Cледующий адрес ',jj);
 
  repeat until KeyPressed;
 
 
 
end.