Программирование игр для Windows. Советы профессионала


«Прозрачные» пиксели - часть 3


for(i=0;i<768;i++) // битовый сдвиг цветов в палитре

*р++=*р >>2;

fclose(f) ;

return PCX_OK;

}

// Новый обработчик прерывания клавиатуры для программы прокрутки

// Он используется для интерактивной прокрутки изображения.

// если стандартный обработчик прерывания 9h не будет заблокирован

// длительное нажатие на клавиши управления курсором приведет

// к переполнению буфера клавиатуры и появлению крайне неприятного

// звука из динамика.

void _interrupt Newlnt9(void)

{

register char x;

KeyScan=inp(0х60);// прочитать код клавиши

x=inp(0x61);      // сообщить клавиатуре, что символ обработан

outp(0x61, (х|0х80));

outp(0х61,х);

outp(0х20,0х20);  // сообщить о завершении прерывания

if(KeyScan == RIGHT_ARROW_REL ||// проверка кода клавиши

KeyScan == LEFT_ARROW_REL) KeyScan=0;

}

// Функция восстанавливает исходный обработчик прерываний клавиатуры

void RestoreKeyboard(void)

{

_dos_setvect(KEYBOARD,OldInt9);   // восстанавливаем

// обработчик BIOS

}

// Эта функция сохраняет прежнее значение вектора прерывания // клавиатуры и устанавливает новый обработчик нашей программы.

void InitKeyboard(void)

{

OldInt9= _dos_getvect(KEYBOARD);   // сохраняем адрес

//  обработчика BIOS

_dos_setvect(KEYBOARD,NewInt9);   // устанавливаем новый

//  обработчик прерывания 9h

}

// Эта функция использует функции BIOS для установки в регистрах

// видеоконтроллера значений, необходимых для работы с цветами,

// определяемыми массивом раl[]

void SetAllRgbPalette(char *pal)

{

struct SREGS s;

union REGS r;

segread(&s);  // читаем текущее значение сегментных регистров

s.es=FP_SEG((void far*)pal);  // в ES загружаем сегмент ра1[]

r.x.dx=FP OFF((void far*}pal);// в DX загружаем смещение pal[]

r.x.ax=0xl012;         // готовимся к.вызову подфункции // 12h функции BIOS 10h

r.x.bx=0;            /;/ номер начального регистра палитры

r.х.сх=256;           // номер последнего изменяемого регистра

int86x(0xl0,&r,&r,&s);// вызов видео BIOS

}




Начало  Назад  Вперед



Книжный магазин