home *** CD-ROM | disk | FTP | other *** search
- Unit fade;
- {used to fade a picture (part) that has just been displayed into a new one}
-
- Interface
- Uses ModeXLib;
-
- Var Colors:Word; {Number of colors per single frame}
-
- Procedure fade_ResetPic(y,Height:Word);
- Procedure Fade1(Pic:Pointer;Pal:Array of Byte; Start,y,Height:Word);
-
-
- Implementation
- Var i,j:Word; {temporary counter}
- Destination_Pal:Array[0..768] of Byte; {temporary destination palette}
-
- Procedure fade_set(Source:Pointer;Start,y,Height:Word);external;
- {"mixes" source with VGA-Ram}
- {use source beginning at Start line and VGA-Ram beginning at y line at height of Height}
- Procedure fade_ResetPic(y,Height:Word);external;
- {prepares faded picture for another fade}
- {reduction of "Colors^2" to "Colors" colors}
- {here again y=line in VGA-Ram, Height=Height of area to be edited}
-
- {$l fade}
-
-
- Procedure fade_CopyPal;
- {multiply palette on Colors^2 (multiply non-homogenous Block 0)}
- Begin
- For i:=1 to Colors do
- Move(Palette[0],Palette[i*3*Colors],Colors*3);
-
- End;
-
- Procedure fade_spread(Var Pal:Array of Byte);
- {spread palette to Colors^2 (multiply each color separately)}
- {the homogenous blocks are formed here from the colors 0..Colors-1}
- Begin
- For i:= 0 to Colors-1 do {edit each color separately}
- For j:=0 to Colors -1 do {write Colors once each time}
- Move(Pal[i*3],Pal[(i+1)*3*Colors+j*3],3);
- End;
-
- Procedure Fade1(Pic:Pointer;Pal:Array of Byte; Start,y,Height:Word);
- {Fades from current visible picture to Pic (with Palette Pal). During
- this process, in the "Start" row, the program begins copying "Height"
- rows to the y-coordinate y of the current picture.}
- Begin
- WaitRetrace; {synchronization}
- fade_CopyPal; {multiply block in current palette}
- SetPal; {reset this palette}
- Move(Palette,Destination_Pal,768); {keep original palette parts}
- Move(pal,Destination_Pal,Colors*3); {load destination palette}
- fade_spread(Destination_pal); {spread destination palette blocks}
- fade_set(pic,start,y,height); {mix in new picture}
- fade_to(Destination_pal,1); {and fade}
- End;
-
- Begin
- Colors:=15; {only default value !}
- End.
-