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