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

    {
    John Wong

    >Does anyone out there have any fade-in routines??? Also can anyone
    >recomend some good books on VGA Programming and Animation???

    This might be a fade out routine, but you could modify it to fade in.
    }
    {$G+}
    Program fades;

    Uses
      Crt, Dos;
                      { TPC /$G+ To Compile }
    Var
      All_RGB : Array[1..256 * 3] Of Byte;
      x,color : Integer;

    Procedure FadeOut2; { This is Hard Cores Fade Out }
    begin
      {for using Textmode use color 7, or For Graphics}
      x := 1;
      Color := 7;
      Repeat;
        port[$3c8] := color;
        port[$3c9] := 60 - x;
        port[$3c9] := 60 - x;
        port[$3c9] := 60 - x;
        inc(x);
        Delay(75);
      Until x = 60;

             { Get The Screen Back ( Change This ) }
      Color := 7;
      port[$3c8] := color;
      port[$3c9] := 60 + x;
      port[$3c9] := 60 + x;
      port[$3c9] := 60 + x;
      inc(x);
      Delay(25);
    end;

    Procedure FadeOut;
    Label
      OneCycle,
      ReadLoop,
      DecLoop,
      Continue,
      Retr,
      Wait,
      Retr2,
      Wait2;
    begin { FadeOut }
      Asm
        MOV   CX,64
      OneCycle:

        MOV     DX,3DAh
      Wait:   in      AL,DX
        TEST    AL,08h
        JZ      Wait
      Retr:   in      AL,DX
        TEST    AL,08h
        JNZ     Retr

        MOV   DX,03C7h
        xor   AL,AL
        OUT   DX,AL
        INC   DX
        INC   DX
        xor   BX,BX
      ReadLoop:
        in    AL,DX
        MOV   Byte Ptr All_RGB[BX],AL
        INC   BX
        CMP   BX,256*3
        JL    ReadLoop

        xor   BX,BX
      DecLoop:
        CMP   Byte Ptr All_RGB[BX],0
        JE    Continue
        DEC   Byte Ptr All_RGB[BX]

      Continue:
        INC   BX
        CMP   BX,256*3
        JL    DecLoop

        MOV     DX,3DAh
      Wait2:   in      AL,DX
        TEST    AL,08h
        JZ      Wait2
      Retr2:   in      AL,DX
        TEST    AL,08h
        JNZ     Retr2

        MOV   DX,03C8h
        MOV   AL,0
        OUT   DX,AL
        INC   DX
        MOV   SI,OFFSET All_RGB
        CLD
        PUSH  CX
        MOV   CX,256*3
        REP   OUTSB
        POP   CX

        LOOP  OneCycle

      end;
    end; { FadeOut }

    begin
      fadeout;
      NormVideo;
      Fadeout2;
    end.

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