Секреты программирования игр


Функция № 12: SetTimerDivisorRate


Эта функция не работает в защищенном режиме. Она позволяет прикладной программе информировать драйвер DIGPAK, использующий таймер, о перепрограммировании частоты прерываний таймера 8253. Данная функция используется только в реальном режиме, так как ни один из базирующихся на прерывании таймера драйверов DIGPAK не работает в защищенном режиме. Если ваша компьютерная игра перепрограммировала таймер 8253 на новую частоту, вы должны сообщить об этом драйверу DIGPAK. Для того чтобы обеспечить воспроизведение музыкального фрагмента, драйвер DIGPAK, использующий таймер, должен перепрограммировать 8253 на очень высокую частоту- По умолчанию DIGPAK считает исходную частоту прерываний таймера равной стандартной (18.2 раза в секунду) и устанавливает это значение после завершения музыкального эффекта. Однако данная функция позволяет вам поставить драйвер DIGPAK в известность об изменении базовой частоты. В результате этого драйвер будет обслуживать программу прерываниями таймера с указанной частотой, а после воспроизведения звукового эффекта драйвер установит таймер на эту частоту.

ВХОД:     AX    =   693h

                 DX    =   Делитель частоты таймера. Драйверы, базирующиеся на прерываниях от таймера, способны обслуживать прикладную программу прерываниями от таймера с заданной делителем частотой независимо от частоты прерываний, необходимой для воспроизведения звукового эффекта. Реально частота прерываний будет стремиться к заданной величине. Для восстановления стандартной частоты прерываний (18.2 раза в секунду) в регистре DX следует задать 0.

                               ВНИМАНИЕ!!! Если вы перепрограммируете таймер в своей программе, при выходе из нее обязательно восстановите нормальное значение частоты прерываний — 18.2 раза в секунду.

ВЫХОД:  Ничего




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



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