Хонич А.
Как самому создать трехмерную игру
стр. 53

3.7.6. Инициализация таймера (StartupTimer)

Таймер нужен в любой игре в основном для синхронизации по скорости, т.е. чтобы скорость игры не зависела от быстродействия компьютера. Также таймер может выполнять и другие функции. Например, осуществлять выборку данных для синтезатора при проигрывании музыки и др. В DOOM’e прерывания таймера возникают с частотой 140 Гц. Функцию StartupTimer можно представить так, хотя в DOOM’e она несколько сложнее.

void StartupTimer (freq)

{

tmOldlnter = _dos_getvect (8); // запомнить старый адрес прерывания _dos^setvect(8, new_timer); // установить новый вектор SetTimer (1193180 / freq); // изменить частоту таймера TimerOk =1;

}

void Set I imer (short val)

{

outp (0x43,0x36); outp (0x40,val & 255); outp (0x40,(val > 8) & 255);

}

При работе нового обработчика таймерных прерываний необходимо позаботиться о том, чтобы системное время не прекращало свой ход. Для этого из нового обработчика прерывания надо вызывать функцию tmO!dInter(). Все бы ничего, но частота первого намного выше (стандартная частота таймера 18.2 Гц). Как это делается, показано ниже на простом примере:

Новости
Будет выпущена серия короткометражек по World of Warcraft
Blizzard выпустит серию короткометражных анимационных роликов в преддверии World of Warcraft: Battle for Azeroth.
Epic Games заработала миллиард долларов на микротранзакциях в Fortnite
Прибыль от микротранзакций в Fortnite перевалила за один миллиард — и всё благодаря тем самым ненавистным лутбоксам.