Zašto stare igre Run Way previše brzo na modernim računalima?
Ako ste ikada pokušali dobiti starinsku računalnu igru i pokrenuti na modernom sustavu, vjerojatno ste bili šokirani time brzo igra je trčala. Zašto stare igre ponestane kontrole nad modernim hardverom?
Ranije smo vam danas pokazali kako pokrenuti stariji softver na modernim računalima; današnja sesija pitanja i odgovora je lijep kompliment koji otkriva zašto neki stariji softver (posebno igre) nikad ne funkcionira ispravno kada ih pokušate pokrenuti na modernom hardveru.
Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupiranja web-lokacija za pitanja i odgovore u zajednici.
Pitanje
Čitač superkorisnika TreyK želi znati zašto stare računalne igre brzo rade na novom hardveru:
Imam nekoliko starih programa koje sam skinula s Windows računala iz ranih 90-ih i pokušala ih pokrenuti na relativno modernom računalu. Zanimljivo je da su trčali na velikoj brzini - ne, ne na brzinu od 60 sličica u sekundi, već na vrstu oh-my-god-the-character-is-walking-at-the-speed-of-sound brzo. Ja bih pritisnuo tipku sa strelicom, a lik iz lika bi prešao preko ekrana mnogo brže nego normalno. Vremenska progresija u igri odvijala se mnogo brže nego što bi trebala. Postoje čak i programi koji usporavaju procesor tako da se te igre mogu igrati.
Čuo sam da je to povezano s igrom ovisno o CPU ciklusima, ili nešto slično. Moja pitanja su:
- Zašto starije igre to čine, i kako su se izvukao?
- Kako napraviti nove igre ne učinite to i pokrenite neovisno o frekvenciji CPU-a?
Što je onda priča? Zašto točno sprites u starim igrama plamene preko zaslona tako brzo igra postaje ne igrati?
Odgovor
Doprinosnik SuperUser-a JourneymanGeek je podijelio:
Vjerujem da su pretpostavili da će sistemski sat raditi s određenom stopom i da će u internom tajmeru biti vezan za taj sat. Većina tih igara vjerojatno je radila na DOS-u i bila je stvarna (s potpunim, izravnim pristupom hardveru) i pretpostavljala je da koristite IIRC 4,77 MHz sustav za računala i standardni procesor za druge sustave kao što je Amiga.
Također su uzimali pametne prečace temeljene na tim pretpostavkama, uključujući uštedu malog broja resursa tako što nisu pisali unutarnje vremenske petlje unutar programa. Također su zauzeli što više procesorske snage - što je bila dobra ideja u danima sporih, često pasivno hlađenih čipova!
U početku jedan od načina za dobivanje različitih brzina procesora bio je dobar stari Turbo gumb (koji je usporio vaš sustav). Suvremene aplikacije su u zaštićenom načinu rada i OS teži upravljati resursima - ne bi dopustiti DOS aplikacija (koja se pokreće u NTVDM na 32-bitnom sustavu ionako) da bi iskoristila sav procesor u mnogim slučajevima. Ukratko, OS-ovi su postali pametniji, kao i API-ji.
Teško temeljen na ovom vodiču na Oldskool PC-u gdje mi je logika i memorija propali - to je sjajno pročitano i vjerojatno ide dublje u “zašto”.
Stvari poput CPUkillera troše što je više moguće resursa kako bi "usporili" vaš sustav, što je neučinkovito. Bilo bi bolje da koristite DOSBox za upravljanje brzinom sata koju vaša aplikacija vidi.
Ako ste znatiželjni o tome kako je stvarni kôd implementiran u ranim računalnim igrama (i zašto se tako loše prilagođavaju modernim sustavima, a da se ne nalaze u nekoj vrsti emulacijskog programa), predlažemo i provjeru ovog dugog, ali zanimljivog sloma proces u drugom odgovoru korisnika.
Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.