Dacă ați încercat vreodată să obțineți un joc de computer de epocă, care să funcționeze într-un sistem modern, ați fost probabil șocați de cumrapid jocul a fugit. De ce jocurile vechi se epuizează pe hardware-ul modern?
Astăzi am văzut cum să rulați programe mai vechi pe computerele moderne; sesiunea de întrebări și răspunsuri de astăzi este un compliment frumos care se ocupă de ce unele software mai vechi (în mod special jocuri) nu par să funcționeze corect atunci când încercați să le executați pe hardware modern.
Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor Q & A.
Cititorul SuperUser TreyK dorește să știe de ce jocurile pe computer rulează nebun rapid pe hardware nou:
Am câteva programe vechi pe care le-am scos de pe computerul Windows de la începutul anilor 90 și am încercat să le execut pe un computer relativ modern. Destul de interesant, au alergat la o viteză rapidă - nu, nu cele 60 de cadre pe secundă de repede, ci mai degrabă tipul de "oh-my-god-the-character-is-walking-at-the-speed-of-sound" rapid. Aș apăsa o tastă săgeată și sprite-ul personajului va zip pe ecran mult mai repede decât în mod obișnuit. Progresul în timp al jocului se întâmpla mult mai repede decât trebuia. Există chiar programe făcute pentru a vă încetini procesorul, astfel încât aceste jocuri să fie de fapt redate.
Am auzit că acest lucru este legat de joc în funcție de ciclurile procesorului sau ceva de genul acesta. Întrebările mele sunt:
- De ce jocurile mai vechi fac acest lucru și cum au scăpat cu el?
- Cum funcționează jocurile mai noinu face acest lucru și a alerga independent de frecvența procesorului?
Care-i povestea? De ce exact scripturile din jocurile vechi blazeau pe ecran atât de repede încât jocul devine inutil?
Contribuitorul SuperUser JourneymanGeek îl împiedică:
Cred că au presupus că sistemul de ceas ar fi rulat la o anumită rată și legat în cronometrele lor interne la acea rată de ceas. Cele mai multe dintre aceste jocuri au fugit, probabil, pe DOS, și au fost mod real (cu acces hardware complet și direct) și au presupus că rulați aIIRC Sistem de 4.77 MHz pentru PC-uri și orice procesor standard pe care modelul le-a rulat pentru alte sisteme, cum ar fi Amiga.
De asemenea, au luat comenzi rapide inteligente pe baza acestor ipoteze, inclusiv salvarea unui mic număr de resurse prin faptul că nu a scris bucle interne de sincronizare în cadrul programului. De asemenea, au preluat puterea de procesor cât au putut - ceea ce a fost o idee decentă în zilele unor jetoane lente, adesea răcite pasiv!
Inițial, o modalitate de a obține o viteză diferită a procesorului a fost butonul bun Turbo vechi (care a încetinit sistemul dvs.). Aplicațiile moderne sunt protejate și sistemul de operare tinde să gestioneze resursele - nu ar face-opermite o aplicație DOS (care rulează oricum în NTVDM pe un sistem pe 32 de biți) să utilizeze tot procesorul în multe cazuri. Pe scurt, sistemele de operare au devenit mai inteligente, la fel ca API-urile.
Bazându-se puternic pe acest ghid pe PC-ul Oldskool, unde logica și memoria nu mi-au reușit - este o citire minunată și, probabil, merge mai profund în "de ce".
Lucruri precum CPUkiller utilizează cât mai multe resurse posibil pentru a "încetini" sistemul, ceea ce este ineficient. Ar fi mai bine să utilizați DOSBox pentru a gestiona viteza ceasului pe care îl vede aplicația.
Dacă sunteți curios de modul în care a fost implementat codul real în jocurile pe computer timpurii (și de ce se adaptează atât de prost la sistemele moderne, fără a fi împrăștiați într-un fel de program de emulare), sugerăm de asemenea să verificați această defalcare proces în alt răspuns SuperUser.
Aveți ceva de adăugat la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.