home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Spiel 1995 December
/
PCS1295.ISO
/
bonus
/
plasma
/
effekt.pas
< prev
Wrap
Pascal/Delphi Source File
|
1995-10-09
|
2KB
|
93 lines
{ Hey! Don't forget: Give credits if you use my code, okay? }
{written by Ansgar Scherp of vIRTUAL tECHNOLOGIES}
uses crt;
var x,y : word;
f_x : array[0..99] of byte;
f_y : array[0..99] of byte;
rgbpal : array[0..767] of byte;
teiler_1,teiler_2 : integer;
r : char;
procedure init;
var a,x,y : integer;
begin
randomize;
for a := 1 to 9900 do begin
repeat y := random(100); x := random(101);
until mem[$a000+(y*2)*20:x*2+59] <> 100;
mem[$a000+(y*2)*20:x*2+59] := 100;
end;
for y := 0 to 99 do for x := 0 to 100 do
mem[$a000+(y*2)*20:(x*2+59)] := 100;
end;
procedure zeichne;
begin
for y := 0 to 99 do for x := 0 to 99 do
mem[$a000+(y*2)*20:(x*2+60)] := (f_x[x]+f_y[y]);
end;
procedure farben_setzen;
begin
for x := 0 to 99 do f_x[x] := trunc(x*teiler_1*0.01);
for x := 0 to 99 do f_y[x] := trunc(x*x*teiler_2*0.001);
{farben setzen nach dem schema RGB.
mit diesem kurzen ASM-Proggi wird die gesammte Palette
von 0 bis 255 gesetzt! }
asm
mov ax,1012h
xor bx,bx
mov cx,0100h
push ds
pop es
mov dx,offset rgbpal
int 10h
end;
end;
procedure farben;
begin
for x := 0 to 63 do begin
y := x * 3;
rgbpal[y+0] := 0;
rgbpal[y+1] := 0;
rgbpal[y+2] := 0;
rgbpal[y+192] := 63-x;
rgbpal[y+193] := x;
rgbpal[y+194] := 0;
rgbpal[y+384] := 0;
rgbpal[y+385] := 63-x;
rgbpal[y+386] := x;
rgbpal[y+576] := x;
rgbpal[y+577] := x;
rgbpal[y+578] := 63-x;
end;
end;
begin
teiler_1 := 0;
teiler_2 := 0;
asm
mov ax,0013h
int 10h
end;
farben;
farben_setzen;
init;
while keypressed do r := readkey;
repeat
zeichne;
inc(teiler_1,trunc(sqrt(abs(teiler_1))*0.5)+1);
inc(teiler_2,trunc(sqrt(abs(teiler_2))*0.5)+1);
farben_setzen;
if keypressed then r := readkey;
until (port[$60] = 1) or (teiler_1 >= 25500);
asm
{ mov ax,0
int 16h}
mov ax,03
int 10h
end;
end.