[Back to CRT SWAG index] [Back to Main SWAG index] [Original]
procedure fadeout;
var x,y,z : word;
palbuf: array[0..255,1..3] of byte;
begin
for y := 0 to 255 do
begin
asm cli end;
port[$3c7] := y;
for z := 1 to 3 do
palbuf[y,z] := port[$3c9];
asm sti end;
end;
for x := 0 to 63 do
begin
for y := 0 to 255 do
for z := 1 to 3 do
if palbuf[y,z] > 0 then dec(palbuf[y,z]);
asm
mov dx,3dah
@1:
in al,dx
test al,8
jz @1
@2:
in al,dx
test al,8
jnz @2
end;
for y := 0 to 255 do
begin
asm cli end;
port[$3c8] := y;
for z := 1 to 3 do
port[$3c9] := palbuf[y,z];
asm sti end;
end;
end;
Not the fastest code in the world, but what did you expect?
[Back to CRT SWAG index] [Back to Main SWAG index] [Original]