home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / PINBSRC.ZIP / MSK / GRABMSK.PAS < prev   
Pascal/Delphi Source File  |  1996-02-02  |  2KB  |  116 lines

  1. {  converts .VGA 2 .MSK 
  2.    Needs BGI265.BGI!
  3. }
  4.  
  5. program SPRITE_GRABBLER;
  6. uses graph,dos,crt,printer;
  7. TYPE  ByteArray = array[0..64000] of byte;
  8. var name:string[80];
  9.     datei:file;
  10.     datei1,datei2,datei3,datei4:file of byte;
  11.     zeiger:word;
  12.     platz1:pointer;
  13.     kill:byte;
  14.     groesse:word;
  15.     platz:^Bytearray;
  16.     treiber, modus:integer;
  17.     Palette: file of byte;
  18.     Color: Word;
  19.     x,y,x1,y1:integer;
  20.     z,z1:word;
  21.     pixel:string;
  22.     pixe:word;
  23.     code:integer;
  24.     lag:file;
  25.     ok:boolean;
  26.     ch:char;
  27.     red,green,blue:byte;
  28.    result:integer;
  29. begin
  30.    write('Dateiname:');
  31.    readln(name);
  32.    kill:=0;
  33.    result := installuserdriver( 'BGI256', nil);
  34.    modus:=0;
  35.    initgraph(result,modus,'');
  36.  
  37.    assign(datei,name+'.VGA');
  38.    reset(datei,1);
  39.  
  40.    groesse:=imagesize(0,0,319,199);
  41.    getmem(platz1,groesse);
  42.  
  43.    blockread(datei,platz1^,groesse);
  44.    close(datei);
  45.    putimage(0,0,platz1^,0);
  46.  
  47.      x1:=160;
  48.      y1:=136;
  49.      x:=160+56;
  50.      y:=136+47;
  51.  {}
  52. {     x1:=80;
  53.      y1:=136;
  54.      x:=80+56;
  55.      y:=136+47;{}
  56.  
  57.   ok:=false;
  58.   setwritemode(xorput);
  59.   rectangle(x1,y1,x,y);
  60.   repeat
  61.     repeat
  62.     until KeyPressed;
  63.     setwritemode(xorput);
  64.     rectangle(x1,y1,x,y);
  65.     ch:=readkey;
  66.     if ch='8' then y:=y-4;
  67.     if ch='2' then y:=y+4;
  68.     if ch='4' then x:=x-8;
  69.     if ch='6' then x:=x+8;
  70.     if ch='5' then ok:=true;
  71.     if ch='s' then y1:=y1-4;
  72.     if ch='x' then y1:=y1+4;
  73.     if ch='y' then x1:=x1-8;
  74.     if ch='c' then x1:=x1+8;
  75.  
  76.     if x<0 then x:=0;
  77.     if y<0 then y:=0;
  78.     if x>319 then x:=319;
  79.     if y>199 then y:=199;
  80. {    x1:=x-32;
  81.     y1:=y-74;}
  82.  
  83.  
  84.     rectangle(x1,y1,x,y);
  85.   until ok;
  86.     rectangle(x1,y1,x,y);
  87.  
  88. {  assign(lag,'larry11.SPR');
  89.   rewrite(lag,1);}
  90.   groesse:=imagesize(x1,y1,x,y);
  91.   getmem(platz,groesse);
  92.   getimage(x1,y1,x,y,platz^);
  93.   putimage(x1,y1,platz^,copyput);
  94.   write(lst,name,' ',(x-x1));
  95.   write(lst,' ',(y-y1+1));
  96.   writeln(lst,' X:',x1,'-',x,' Y:',y1,'-',y);
  97.  
  98.   assign(datei1,name+'_r.msk');
  99.   rewrite(datei1);
  100.   groesse:=0;
  101.   for z:=x1+1 to x do
  102.   begin
  103.     for z1:=y1 to y do
  104.     begin
  105.       write(datei1,mem[$a000:z1*320+z]);
  106.       mem[$a000:z1*320+z]:=255;
  107.       inc(groesse);
  108.     end;
  109.   end;
  110.   close(datei1);
  111.   closegraph;
  112.   writeln(groesse div 4);
  113. {  blockwrite(lag,platz^,groesse);}
  114. {close(lag);}
  115. end.
  116.