From: pavel <pavel@metrol.samen.dvlg.samara.su>
Organization: Samaraenergo
Alex Osadchikh wrote:
> > Возник вопpос - надо для EGA медленно погасить изобpажение и потом также
> > медленно его восстановить (или подменить дpугим) - нечто подобное встpечается в
> > игpах. Эту вещь пpидется цеплять к Боpландовскому Паскалю. Игpать пpидется,
> > видимо, палитpой, но до меня туго доходит, как это pеализовать.
>
> На EGA, к сожалению, такой фокус не пpойдет. Нужно не менее, чем VGA.
Вообще-то можно сделать подобие такого эфекта, если использовать
нижеприведенную процедурку и подобрать соответствующую палитру...
(в EGA одновременно на экране м.б. 16 цветов из 64 возможных)
Procedure SwapColor(EGAPalRegister:Byte;NewColor:byte);assembler;
asm
mov ax,1000h
mov bh,NewColor
mov bl,EGAPalRegister
int 10h
end;
А выглядит это примерно так:
{> Cut here. FileName= OPA.PAS }
uses Crt;
Var B : Char;
Procedure SwapColor(EGAPalRegister:Byte;NewColor:byte);assembler;
asm
mov ax,1000h
mov bh,NewColor
mov bl,EGAPalRegister
int 10h
end;
begin
ClrScr;
GoToXY(1,10);
WriteLn(' ***************************************************');
WriteLn(' * Orlov Pavel OPA-Soft SamaraEnergo Samara Russia *');
WriteLn(' * *');
WriteLn(' * E-mail : pavel@metrol.samen.dvlg.samara.su *');
WriteLn(' ***************************************************');
GoToXY(1,17);
WriteLn(' PRESS YOUR FAVOURITE KEY... ESC for Exit');
GoToXY(1,25);
While b <> #27 do
begin
SwapColor(0,0); Delay(30);
SwapColor(0,8); Delay(30);
SwapColor(0,1); Delay(30);
SwapColor(0,9); Delay(30);
SwapColor(0,11); Delay(30);
SwapColor(0,15); Delay(30);
SwapColor(0,63);
b:= ReadKey;
SwapColor(0,15); Delay(30);
SwapColor(0,11); Delay(30);
SwapColor(0,9); Delay(30);
SwapColor(0,1); Delay(30);
SwapColor(0,8); Delay(30);
SwapColor(0,0);
end;
end.
|