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


Кнопки джойстика - часть 2


// его

с маской

return (~inp( JOYPORT) & button) ;

}

unsigned char Buttons_Bios (unsigned char button)

{ // чтение кнопок через обращение к BIOS

union _REGS inregs, outregs;

inregs.h.ah == 0х84;    // функция джойстика 84h

inregs.x.dx = 0х00;    // подфункция 0h - чтение кнопок

// вызов BIOS

_int86 (0х15, &inregs, &outr.egs);

// инвертируем полученное значение и комбинируем его с маской

return(~outregs.h.al) & button);

}

Теперь посмотрим на детали Листинга 3.1.

§          Функция Buttons() и Buttons_Bios() возвращают одинаковый результат. Buttons() посылает 0 в порт джойстика (это делается для того, чтобы инициировать порт) и затем читает данные;

§          Как только данные получены, мы маскируем младшие четыре бита и инвертируем четыре старших;

§          Этот листинг включает также определение констант (#define), что делает интерфейс более удобным;

§          Buttons_Bios() для чтения джойстика использует BIOS. Как только выполняется вызов, результат помещается в регистр AL. В принципе, для таких простых вещей, как кнопки, я использую прямой доступ к портам. Я уже говорил, что использование функций BIOS более медлительно. Правда, по отношению к джойстику это, может быть, и не самый плохой подход. Если вы хотите читать с помощью BIOS - читайте.




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