Чому старі ігри запустити шлях занадто швидко на сучасних комп'ютерах?
Якщо ви коли-небудь намагалися отримати старовинні комп'ютерні ігри і працювати на сучасній системі, ви, ймовірно, були вражені тим, як швидко гра пробігла. Чому старі ігри виходять з-під контролю над сучасним обладнанням?
Раніше сьогодні ми показали вам, як запускати старі програми на сучасних комп'ютерах; Сьогоднішня сесія запитань і відповідей - це приємний комплімент, який вказує на те, чому деякі старіші програми (зокрема ігри) ніколи не працюють, коли ви намагаєтеся запустити їх на сучасному апаратному забезпеченні..
Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..
Питання
Читач SuperUser TreyK хоче знати, чому старі комп'ютерні ігри швидко запускають нове обладнання:
У мене є кілька старих програм, які я витягнув з комп'ютера Windows з 90-х років і спробував запустити їх на порівняно сучасному комп'ютері. Цікаво, що вони працювали на швидкій швидкості - ні, а не 60 кадрів в секунду, швидше, швидше, а о-мі-бог-характер-це-ходьба-на-швидкості звуку роду швидко. Я б натиснув клавішу зі стрілкою, а спрайт героя заштовхнув по екрану набагато швидше, ніж звичайно. Час прогресування в грі відбувалося набагато швидше, ніж треба. Існують навіть програми для уповільнення процесора, щоб ці ігри могли бути відтворені.
Я чув, що це пов'язано з грою залежно від циклів процесора, або щось подібне. Мої запитання:
- Чому старі ігри роблять це, і як їм це вдається?
- Як зробити новіші ігри ні зробіть це і запустіть незалежно від частоти процесора?
Так у чому ж історія? Чому саме спрайт у старих іграх пролітає по екрану так швидко, що гра стає неможливою?
Відповідь
Співробітник SuperUser JourneymanGeek розбиває його:
Я вважаю, що вони припустили, що системний годинник буде працювати з певною швидкістю, і прив'язані у своїх внутрішніх таймерах до цієї тактової частоти. Більшість цих ігор, ймовірно, працювали на DOS, і були реальним режимом (з повним, прямим доступом до апаратних засобів) і припускали, що ви працюєте iirc 4.77 МГц система для ПК і будь-який стандартний процесор, який модель працювала для інших систем, таких як Amiga.
Вони також взяли розумні ярлики, засновані на цих припущеннях, включаючи збереження крихітних ресурсів, не написавши внутрішніх циклів синхронізації всередині програми. Вони також зайняли стільки ж потужності процесора, скільки могли - що було гідною ідеєю в дні повільних, часто пасивно охолоджених мікросхем!
Спочатку одним із способів обійти різну швидкість процесора була гарна стара кнопка Turbo (яка сповільнила роботу системи). Сучасні програми знаходяться в захищеному режимі, і ОС прагне управляти ресурсами - вони не будуть дозволити DOS-додаток (який все одно працює в NTVDM на 32-бітній системі), щоб у багатьох випадках використовувати весь процесор. Коротше кажучи, операційні системи стали більш розумними, як і API.
Значно заснована на цьому керівництві на ПК Oldskool, де логіка і пам'ять не вдалося мені - це чудове читання, і, ймовірно, йде більш глибоко в "чому" \ t.
Речі, як CPUkiller, використовують якомога більше ресурсів, щоб «уповільнити» вашу систему, що є неефективним. Краще використовувати DOSBox для керування тактовою частотою, яку бачить ваша програма.
Якщо вам цікаво, як фактичний код був реалізований на ранніх комп'ютерних іграх (і чому вони так погано адаптуються до сучасних систем, не будучи вбудованими в якусь емуляційну програму), ми також пропонуємо перевірити цей довгий, але цікавий розклад процес в іншому відповіді суперкористувача.
Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.