Вишь ли Despot "обычная для Pascal 16-цветная палитра" - это первые 16 цветов той самой RGB-палитры ;). Если ты спрашиваешь, как изменить вот эти первые 16 цветов, то код следующий (асм, паскаль):
Код
asm
mov dx,3C8h {Режим записи PEL-адреса}
mov al,0 {Стартовый адрес регистра}
out dx,al {Говорим об это ЦАП-у}
inc dx {Запись данных}
cld
mov cx,16*3 {16 штук}
push ds
mov ds,word ptr P + 2 {Это адрес палитры}
mov si,word ptr P
{Этот код для переделанной палитры BGR -> RGB}
@PalSet:lodsb {Получаем байт в AL}
out dx,al {Посылаем в ЦАП}
loop @PalSet
pop ds
mov ah,0 {Ждем клавишу}
int 16h
end;
Procedure PaletteSet;
Type
RGB = record
Red:Byte;
Green:Byte;
Blue:Byte;
{Alpha:Byte; Это ежели под Win'95}
end;
Palette = array[1..256] of RGB;
{На всякий случай - это массив для чтения палитры}
Var
P:^Palette;
I:Integer;
begin
Port[$3C8]:=0;
For i:=1 to 256 do
begin
Port[$3C9]:=P^[i].Blue DIV 4;
{Что характерно - порядок обратный
B=>G=>R, да и вывод изображения
идет снизу вверх}
Port[$3C9]:=P^[i].Green DIV 4;
Port[$3C9]:=P^[i].Red DIV 4;
end;
end;
Но если и это не то, дык выложил бы исходник, глянули бы. И сколько цветов картинка?