If-Koubou

Защо старите игри стават твърде бързи на съвременните компютри?

Защо старите игри стават твърде бързи на съвременните компютри? (Как да)

Ако някога сте се опитвали да получите реколта компютърна игра на модерна система, вероятно сте шокирани от това какбърз играта свърши. Защо старите игри са извън контрола на модерния хардуер?

По-рано днес ви показахме как да стартирате по-стар софтуер на съвременни компютри; днешната сесия за въпроси и отговори е хубав комплимент, който разкрива защо някои по-стари софтуер (по-специално игри) никога не изглежда да работят правилно, когато се опитате да ги пуснете на модерен хардуер.

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Въпроса

Reader на SuperUser TreyK иска да разбере защо старите компютърни игри се побъркат бързо на нов хардуер:

Имам няколко стари програми, които изтеглих от компютър в началото на 90-те години и се опитах да ги пусна на сравнително модерен компютър. Интересното е, че те се движеха с плавна скорост - не, а не скоростта от 60 кадъра в секунда, а по-скоро о, моят бог - характерът - е ходенето по най-бързия вид на звука бърз. Щях да натисна клавиша със стрелка и шпионката на героя щяла да мине през екрана много по-бързо от нормалното. Продължителността на времето в играта се случваше много по-бързо, отколкото би трябвало. Има дори програми за забавяне на процесора, така че тези игри да могат да се възпроизвеждат.

Чувал съм, че това е свързано с играта, в зависимост от циклите на процесора или нещо подобно. Моите въпроси са:

  • Защо старите игри правят това и как са се разминали с него?
  • Как по-новите игрине направете това и да работите независимо от честотата на процесора?

И така, каква е историята? Защо точно спратовете в старите игри пламват по екрана толкова бързо, че играта става неподлежаща на игра?

Отговорът

Сътрудникът на SuperUser JourneymanGeek го разбива:

Вярвам, че те приемаха, че системният часовник ще се движи с определена скорост и ще бъде вързан във вътрешните им таймери до този часовник. Повечето от тези игри вероятно се завтекоха на DOS и бяха реални (с пълен достъп до директен хардуер) и предположихте, че сте работилиIIRC 4.77 MHz система за персонални компютри и какъвто и да е стандартен процесор, който моделът използва за други системи като Amiga.

Те също така са използвали умни команди за бързи команди, базирани на тези предположения, включително спасяването на малко ресурси, като не са записали вътрешни програмни цикли в програмата. Те също така заемаха колкото се може повече процесорна мощ - което беше прилична идея в дните на бавни, често пасивно охладени чипове!

Първоначално един от начините да получите различна скорост на процесора беше старият добър Turbo бутон (който забави системата ви надолу). Модерните приложения са в защитен режим, а операционната система е склонна да управлява ресурси - те нямапозволява едно приложение DOS (което се изпълнява в NTVDM на 32-битова система все пак), за да използва целия процесор в много случаи. Накратко, операционните системи станаха по-умни, както и приложните програмни интерфейси (API).

Силно се основавах на това ръководство на компютъра Oldskool, където логиката и паметта ми се провалиха - това е чудесно четиво и вероятно отива по-задълбочено в "защо".

Материали като CPUkiller използват колкото се може повече ресурси, за да "забавят" вашата система, което е неефективно. По-добре е да използвате DOSBox, за да управлявате скоростта на часовника, която вижда приложението ви.

Ако сте любопитни за това как действителният код е бил приложен в ранните компютърни игри (и защо се адаптират толкова зле към съвременните системи, без да са саксирани в някаква програма за емулация), бихме ви препоръчали да проверите тази продължителна, но интересна разбивка на процес в друг отговор на SuperUser.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.