[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{
REYNIR STEFANSSON
Here is yet another fade-in routine. This one does a proportional fade
of all colours.
}
Program FadeDemo;
Uses
Crt;
Const
PelAddrRgR = $3C7;
PelAddrRgW = $3C8;
PelDataReg = $3C9;
Type
rgb = Record
r, g, b : Byte;
end;
Var
i : Integer;
ch : Char;
col : Array[0..63] of rgb;
Procedure GetCol(C : Byte; Var R, G, B : Byte);
begin
Port[PelAddrRgR] := C;
R := Port[PelDataReg];
G := Port[PelDataReg];
B := Port[PelDataReg];
end;
Procedure SetCol(C, R, G, B : Byte);
begin
Port[PelAddrRgW] := C;
Port[PelDataReg] := R;
Port[PelDataReg] := G;
Port[PelDataReg] := B;
end;
Procedure SetInten(b : Byte);
Var
i : Integer;
fr,
fg,
fb : Byte;
begin
For i := 0 to 63 DO
begin
fr := col[i].r * b div 63;
fg := col[i].g * b div 63;
fb := col[i].b * b div 63;
SetCol(i, fr, fg, fb);
end;
end;
begin
TextMode(LastMode);
For i := 0 to 63 DO
GetCol(i, col[i].r, col[i].g, col[i].b);
For i := 1 to 15 DO
begin
TextAttr := i;
WriteLn('Foreground colour = ', i : 2);
end;
ch := ReadKey;
For i := 63 DOWNTO 0 DO
begin
SetInten(i);
Delay(20);
end;
GotoXY(1, 1);
For i := 15 DOWNTO 1 DO
begin
TextAttr := i;
WriteLn('Foreground colour = ', i : 2);
end;
For i := 0 to 63 DO
begin
SetInten(i);
Delay(20);
end;
ch := ReadKey;
TextMode(LastMode);
end.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]