Важной концепцией, которую следует учитывать, является скорость VSync. Так часто электронная пушка в телевизоре (или, что эквивалентно в современных телевизорах) заканчивает рисование экрана и медленно перемещается вверху экрана.
Поскольку это происходит с постоянной скоростью (60 раз/секунду в NTSC, 50 в PAL), большинство игр использовать это в качестве своего таймера, с кодом, который примерно соответствует этому:
void main() {
while(true) {
updateGame();
updateSprites();
waitForVSync();
}
}
Очевидно, это значительно упрощено, но это то, что происходит. Некоторые игры были настолько сложными, что они занимали слишком много времени и пропускали период VSync. В этом случае они будут ждать второй VSync и, таким образом, будут работать на 30 (/ 25) FPS.
Иногда вы заметите замедление в играх NES (например). Это когда рабочая нагрузка настолько тяжелая, что ей не хватает нескольких периодов VSync в одном кадре действия.
Но да, это суть того, как выбор время работало на старых консолях (На самом деле, даже многие новые консоли и PC игры используют ту же систему, а не только старые приставки!)
Я не уверен, что вы подразумеваете под «часами реального времени», но на консолях, которые полагались на Z80 в качестве процессора общего назначения, также было выделено аппаратное обеспечение для анимации спрайтов и воспроизведения звуков. Z80 просто кормил их заказами. –
Мне тоже хотелось бы узнать это! Я просто всегда думал, что это скорее «когда X здесь, Y делает это». – James
Старые игры часто синхронизируются вокруг частоты кадров экрана, на котором они запускаются, поэтому они обновляют свои спрайты один раз за кадр (то есть 50 Гц или 60 Гц в зависимости от того, является ли это системой PAL или NTSC) – Laserallan