Скачать Изменение палитры

23.01.1995
Скачать файл (1,28 Кб)

Вот тебе кусочек моей программы, в котором плавно затухает палитра (делать это можно в любом режиме, а не только в графическом :)

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а моей тройке итак все неплохо выглядело, а на двойке изменения палитры сопровождались нежелательными мерцанием и снежением :(