home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
91xx
/
9112dos
/
c64.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-08-25
|
5KB
|
211 lines
unit C64;
interface
uses crt,graph,dos;
procedure C64_farbe(name:string);
procedure Bild_strecken;
procedure C64_hires(zahl:integer;
bild1,bild2,bild3,bild4:string;
format:char);
implementation
var p1,p2,p3,p4,p5,p6,p7,p8:integer; (* für Farben umwandeln *)
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p:integer;
a1,b1:integer;
wahl:char;
clip:boolean;
dat:file of char;
procedure farben_anpassen;
begin
c:=0;
if (d=0) and (c=0) then begin c:=1;d:=0;end;
if (d=1) and (c=0) then begin c:=1;d:=15;end;
if (d=2) and (c=0) then begin c:=1;d:=4;end;
if (d=3) and (c=0) then begin c:=1;d:=2;end;
if (d=4) and (c=0) then begin c:=1;d:=13;end;
if (d=5) and (c=0) then begin c:=1;d:=3;end;
if (d=6) and (c=0) then begin c:=1;d:=1;end;
if (d=7) and (c=0) then begin c:=1;d:=14;end;
if (d=8) and (c=0) then begin c:=1;d:=5;end;
if (d=9) and (c=0) then begin c:=1;d:=6;end;
if (d=10) and (c=0) then begin c:=1;d:=12;end;
if (d=11) and (c=0) then begin c:=1;d:=8;end;
if (d=12) and (c=0) then begin c:=1;d:=11;end;
if (d=13) and (c=0) then begin c:=1;d:=10;end;
if (d=14) and (c=0) then begin c:=1;d:=9;end;
if (d=15) and (c=0) then begin c:=1;d:=7;end;
end;
procedure Byte_aufteilen;
begin
p1:=0;p2:=0;p3:=0;p4:=0;p5:=0;p6:=0;p7:=0;p8:=0;
if d-128 >= 0 then begin p1:=15;d:=d-128;end;
if d-64 >= 0 then begin p2:=15;d:=d-64;end;
if d-32 >= 0 then begin p3:=15;d:=d-32;end;
if d-16 >= 0 then begin p4:=15;d:=d-16;end;
if d-8 >= 0 then begin p5:=15;d:=d-8;end;
if d-4 >= 0 then begin p6:=15;d:=d-4;end;
if d-2 >= 0 then begin p7:=15;d:=d-2;end;
if d-1 >= 0 then begin p8:=15;d:=d-1;end;
end;
procedure Schwarz_weiss_einladen(name:string);
begin
assign(dat,name);
reset(dat);
read(dat,wahl);read(dat,wahl);
a1:=-8;
for a:=1 to 25 do begin
a1:=a1+8;
b1:=-4;
for b:=1 to 40 do begin
b1:=b1+4;
for c:=1 to 8 do begin
read(dat,wahl);
d:=ord(wahl);
byte_aufteilen;
putpixel(b1+1+320,a1+c,p2);putpixel(b1+2+320,a1+c,p4);
putpixel(b1+3+320,a1+c,p6);putpixel(b1+4+320,a1+c,p8);
putpixel(b1+1+480,a1+c,p1);putpixel(b1+2+480,a1+c,p3);
putpixel(b1+3+480,a1+c,p5);putpixel(b1+4+480,a1+c,p7);
end;
end;
end;
end;
procedure farbe_einladen;
begin
a1:=-8;
for a:=1 to 25 do begin
a1:=a1+8;
b1:=-4;
for b:=1 to 40 do begin
b1:=b1+4;
read(dat,wahl);
d:=ord(wahl);
Byte_aufteilen;
e:=0;
if p8=15 then e:=e+1;
if p7=15 then e:=e+2;
if p6=15 then e:=e+4;
if p5=15 then e:=e+8;
d:=e;farben_anpassen;e:=d;
f:=0;
if p4=15 then f:=f+1;
if p3=15 then f:=f+2;
if p2=15 then f:=f+4;
if p1=15 then f:=f+8;
d:=f;farben_anpassen;f:=d;
for g:=1 to 4 do begin
for h:=1 to 8 do begin
i:=getpixel(b1+g+320,a1+h);
j:=getpixel(b1+g+480,a1+h);
if (j=0 ) and (i=15) then putpixel(b1+g,a1+h,f);
if (j=15) and (i=0 ) then putpixel(b1+g,a1+h,e);
end;
end;
end;
end;
end;
procedure farbe_einladen2;
begin
a1:=-8;
for a:=1 to 25 do begin
a1:=a1+8;
b1:=-4;
for b:=1 to 40 do begin
b1:=b1+4;
read(dat,wahl);
d:=ord(wahl);
Byte_aufteilen;
e:=0;
if p8=15 then e:=e+1;
if p7=15 then e:=e+2;
if p6=15 then e:=e+4;
if p5=15 then e:=e+8;
d:=e;farben_anpassen;e:=d;
f:=0;
if p4=15 then f:=f+1;
if p3=15 then f:=f+2;
if p2=15 then f:=f+4;
if p1=15 then f:=f+8;
d:=f;farben_anpassen;f:=d;
for g:=1 to 4 do begin
for h:=1 to 8 do begin
i:=getpixel(b1+g+320,a1+h);
j:=getpixel(b1+g+480,a1+h);
if (i=15) and (j=15) then putpixel(b1+g,a1+h,e);
end;
end;
end;
end;
end;
procedure Bild_strecken;
begin
for a:=1 to 200 do begin
for b:=160 downto 1 do begin
c:=getpixel(b,a);
putpixel(b*2,a,c);
putpixel(b*2-1,a,c);
end;
end;
end;
procedure C64_farbe(Name:string);
begin
Schwarz_weiss_einladen(Name);
farbe_einladen;
farbe_einladen2;
end;
procedure C64_hires(zahl:integer;
bild1,bild2,bild3,bild4:string;
format:char);
var x,y:char;
begin
for a:=1 to Zahl do begin
if a=1 then begin a1:=-8;assign(dat,bild1);end;
if a=2 then begin a1:=-8;assign(dat,bild2);end;
if a=3 then begin a1:=192;assign(dat,bild3);end;
if a=4 then begin a1:=192;assign(dat,bild4);end;
reset(dat);
read(dat,y);read(dat,x);
if format='h' then begin x:=chr(25);y:=chr(40);end;
for b:=1 to ord(x) do begin
a1:=a1+8;
if a=1 then b1:=-8;
if a=2 then b1:=312;
if a=3 then b1:=-8;
if a=4 then b1:=312;
for c:=1 to ord(y) do begin
b1:=b1+8;
for e:=1 to 8 do begin
read(dat,wahl);
d:=ord(wahl);
Byte_aufteilen;
putpixel(b1+1,a1+e,p1);putpixel(b1+2,a1+e,p2);putpixel(b1+3,a1+e,p3);putpixel(b1+4,a1+e,p4);
putpixel(b1+5,a1+e,p5);putpixel(b1+6,a1+e,p6);putpixel(b1+7,a1+e,p7);putpixel(b1+8,a1+e,p8);
end;
end;
end;
close(dat);
end;
end;
end.