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

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

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

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

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

    Въпроса

    Четецът на суперпотребителя TreyK иска да знае защо старите компютърни игри стават луди по новия хардуер:

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

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

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

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

    Отговорът

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

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

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

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

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

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

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


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