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

    {
    Would anyone have a Procedure of Function to do a fadein or
    fadeout CLXXof a bitmapped image.  if I understand correctly, these
    CLXXfadeins are perFormed by changing the DAC Registers of the CLXXVGA
    Cards.  Can anyone enlighten me on this as I have CLXXsearched many
    books on how to do this and have not found CLXXit.  I know that there is
    a utility out there called CLXXFastGraph by Teg Gruber which can do
    this, but short of CLXXbuying it For $200.00 Would one of you good folks
    have a CLXXroutint in Asm or BAsm to do this. CLXXI thank you all in
    advance For your assistance. CLXXChristian Laferriere.
    }

    Procedure Pageswitch(X: Byte);
    begin
      Asm
        mov ah,5
        mov al,x
        int 10h
      end;
    end; { Pageswitch }

    {********************************************}
    Procedure FadeIn;

    Var
      oldp,
      oldp2,
      oldp3       : Byte;
      Palette     : Array[1..255 * 4] of Byte;
      FAKEPalette : Array[1..255 * 4] of Byte;
      I, J : Integer;

    begin
      For I := 1 to 255 do
      begin
        Port[$3C7] := I;
        Palette[(I - 1) * 4 + 1] := I;
        Palette[(I - 1) * 4 + 2] := Port[$3C9];
        Palette[(I - 1) * 4 + 3] := Port[$3C9];
        Palette[(I - 1) * 4 + 4] := Port[$3C9];
      end;
      For I := 1 to 255 do
      begin
        Port[$3C8] := I;
        Port[$3C9] := 0;
        Port[$3C9] := 0;
        Port[$3C9] := 0;
      end;

      Pageswitch(0);

      For J := 0 to 63 do
      begin

        For I := 1 to 255 do
        begin
          Port[$3C7] := I;
          oldp  := Port[$3C9];
          oldp2 := Port[$3C9];
          oldp3 := Port[$3C9];
          Port[$3C8] :=I;
          if oldp + 1 <= Palette[(I - 1) * 4 + 2] then
            Port[$3C9] := oldp+1
          else
            Port[$3C9] := Oldp;
          if oldp2 + 1 <= Palette[(I - 1) * 4 + 3] then
            Port[$3C9] := oldp2+1
          else
            Port[$3C9] := Oldp2;
          if oldp3 + 1 <= Palette[(I - 1) * 4 + 4] then
            Port[$3C9] := oldp3+1
          else
            Port[$3C9] := Oldp3;
        end;

        For I := 1 to 30000 do
        begin
        end;

      end;
    end; {end of FadeIn}

    Procedure FadeOut;

    Var
      uoldp,
      uoldp2,
      uoldp3  : Byte;
      I, J : Integer;
    begin
      Pageswitch(0);

      For J := 0 to 63 do
      begin

        For I := 1 to 255 do
        begin
          Port[$3C7] := I;
          uoldp  := Port[$3C9];
          uoldp2 := Port[$3C9];
          uoldp3 := Port[$3C9];
          Port[$3C8] := I;
          if uoldp - 1 >= 0 then
            Port[$3C9] := uoldp - 1
          else
            Port[$3C9] := uOldp;
          if uoldp2 - 1 >= 0 then
            Port[$3C9] := uoldp2 - 1
          else
            Port[$3C9] := uOldp2;
          if uoldp3 - 1 >= 0 then
            Port[$3C9] := uoldp3 - 1
          else
            Port[$3C9] := uOldp3;
        end;

        For I := 1 to 30000 do
        begin
        end;

      end;
    end; {end of FadeOut}

    {
    That Procedure can FadIn and FadeOut any Text screen or any
    Graphics in Mode $13 With no problems.. Just make sure that you
    switch the video pages at the right time between fadeIns and
    Fadeouts.. Hope that helped.. LATER
    }

    begin
      FadeOut;
      FadeIn;
    end.

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