From: Oleg Smagin <Oleg_Smagin@p8.f15.n5025.z2.fidonet.org>
Subject: Изменение палитры в graph mode.
Date: Mon, 23 Jan 1995 16:30:24 +0300
Organization: Phantom of Infinity Soft Labs (Gid:fidonet.org)
Hello MD@md.kamaz.kazan.su!
18 Jan 95 04:08, MD@md.kamaz.kazan.su wrote to All:
M> Hi All.
M> Есть вопросик.
M> Можно-ли в графическом режиме 13H производить плавное
M> затухание экрана т,е, изменение палитры.
M> Видел исходник на цэ но они там в порт нецелое значение как-то
M> пишут а в Паскале так нельзя.
M> А если это значение округлять то плавного перехода
M> нет и экран скачет :(
M> Помогите please кто сталкивался.
Вот тебе кусочек моей программы, в котором плавно затухает палитра (делать это
можно в любом режиме, а не только в графическом :)
type
arpal = array [0..767] of byte; { палитра }
var
pal1,palt : arpal ;
Procedure AsmPalt; { процедура работы с палитрой }
begin { сохраняем палитру в массив }
asm
mov ax,1017h
mov bx,Seg palt
mov es,bx
mov dx,offset palt
xor bx,bx
mov cx,256
int 10h
end;
end;
Procedure AsmPal1; { процедура работы с палитрой }
begin { загружаем палитру из массива }
asm
mov ax,1012h
mov bx,seg pal1
mov es,bx
mov dx,offset pal1
xor bx,bx
mov cx,256
int 10h
end;
end;
begin
AsmPalt;
for i:=0 to 767 do pal1[i]:=palt[i]; { считывание палитры }
for j:=1 to 12 do begin { эффект угасания }
for i:=0 to 767 do begin
if Trunc(pal1[i]-4) > 0 then pal1[i]:=Trunc(pal1[i]-4)
else pal1[i]:=0;
end;
AsmPal1;
end;
...
end.
Единственно, что нехорошо в этой программе, то что я не отлавливал обратный ход
луча при изменении палитры. Hа моей тройке итак все неплохо выглядело, а на
двойке изменения палитры сопровождались нежелательными мерцанием и снежением :(
За сим откланиваюсь,
Oleg W. Smagin.
--- GoldED 2.50.A0531+
* Origin: Hе вовpемя pассказ, что музыка во вpемя печали ... (2:5025/15.8)
|