[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]