[Back to EGAVGA SWAG index]  [Back to Main SWAG index]  [Original]

{
>I have a copy of the fade Unit and am having problems getting it to work
>correctly. I want to fade my Programs screen on Exit, clear it, and show
>the Dos screen.

Here's a little fade source, there're some change to made if you're using it in
Graphic or Text mode.
}

Uses
  Crt;


Var
  count1, count2 : Integer;
  pal1,pal2 : Array[0..255,0..2] of Byte;


begin

  For count1 := 0 to 255 do           {Get the current palette}
  begin
    Port[$03C7] := count1;
    pal1[count1,0] := Port[$03C9];
    pal1[count1,1] := Port[$03C9];
    pal1[count1,2] := Port[$03C9];
  end;

  Pal2:=Pal1;

  For Count1 := 1 to 255 do           {this will fade the entire palette}
  begin                               {20 must be enough in Text mode}
    For Count2 := 0 to 255 do
    begin
      If Pal2[Count2,0] > 0 then
        Dec(Pal2[Count2,0]);
      If Pal2[Count2,1] > 0 then
        Dec(Pal2[Count2,1]);
      If Pal2[Count2,2] > 0 then
        Dec(Pal2[Count2,2]);
      Port[$03C8] := Count2;
      Port[$03C9] := Pal2[Count2,0];
      Port[$03C9] := Pal2[Count2,1];
      Port[$03C9] := Pal2[Count2,2];
    end;
    Delay(40);         {Change the Delay For a quicker or slower fade}
  end;

  For Count1 := 0 to 255 do   {Restore Original palette}
  begin
    Port[$03C8] := Count1;
    Port[$03C9] := Pal1[Count1,0];
    Port[$03C9] := Pal1[Count1,1];
    Port[$03C9] := Pal1[Count1,2];
  end;

end.


[Back to EGAVGA SWAG index]  [Back to Main SWAG index]  [Original]