[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]
{ KEVIN OTTO }
Unit Fade;
{ Change DelayAmt and Steps to change the speed of fading. }
Interface
Uses
Dos, Crt;
Const
Colors = 64;
DelayAmt = 15;
Steps = 24;
Type
PalType = Array [0..Colors - 1] of Record
R, G, B : Byte;
end;
Var
OrigPal : palType;
Procedure GetPal(Var OrigPal : PalType);
Procedure FadePal(OrigPal : PalType; FadeOut : Boolean);
Implementation
Procedure GetPal(Var OrigPal : PalType);
Var
Reg : Registers;
begin
With Reg do
begin
AX := $1017;
BX := 0;
CX := colors;
ES := seg(OrigPal);
DX := ofs(OrigPal);
intr ($10, Reg);
end;
end;
Procedure FadePal(OrigPal : PalType; FadeOut : Boolean);
Var
Reg : Registers;
WorkPal : PalType;
Fade : Word;
Pct : Real;
I : Word;
begin
With Reg do
For Fade := 0 to Steps do
begin
Pct := Fade / Steps;
if FadeOut then
Pct := 1 - Pct;
For I := 0 to Colors - 1 do
With WorkPal[I] do
begin
R := round(OrigPal[I].R * Pct);
G := round(OrigPal[I].G * Pct);
B := round(OrigPal[I].B * Pct);
end;
AX := $1012;
BX := 0;
CX := Colors;
ES := seg (WorkPal);
DX := ofs (WorkPal);
intr ($10, Reg);
Delay (DelayAmt);
end;
end;
end.
[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]