home *** CD-ROM | disk | FTP | other *** search
- { KEVIN OTTO }
-
- Unit Fade;
-
- { Change DelayAmt and Steps to change the speed of fading. }
-
- Interface
-
- Uses
- Dos, Crt;
-
- Const
- Colors = 64;
- DelayAmt = 15;
- Steps = 24;
-
- Type
- PalType = Array [0..Colors - 1] of Record
- R, G, B : Byte;
- end;
-
- Var
- OrigPal : palType;
-
- Procedure GetPal(Var OrigPal : PalType);
- Procedure FadePal(OrigPal : PalType; FadeOut : Boolean);
-
- Implementation
-
- Procedure GetPal(Var OrigPal : PalType);
- Var
- Reg : Registers;
- begin
- With Reg do
- begin
- AX := $1017;
- BX := 0;
- CX := colors;
- ES := seg(OrigPal);
- DX := ofs(OrigPal);
- intr ($10, Reg);
- end;
- end;
-
- Procedure FadePal(OrigPal : PalType; FadeOut : Boolean);
- Var
- Reg : Registers;
- WorkPal : PalType;
- Fade : Word;
- Pct : Real;
- I : Word;
- begin
- With Reg do
- For Fade := 0 to Steps do
- begin
- Pct := Fade / Steps;
- if FadeOut then
- Pct := 1 - Pct;
- For I := 0 to Colors - 1 do
- With WorkPal[I] do
- begin
- R := round(OrigPal[I].R * Pct);
- G := round(OrigPal[I].G * Pct);
- B := round(OrigPal[I].B * Pct);
- end;
- AX := $1012;
- BX := 0;
- CX := Colors;
- ES := seg (WorkPal);
- DX := ofs (WorkPal);
- intr ($10, Reg);
- Delay (DelayAmt);
- end;
- end;
-
- end.