If-Koubou

Miksi vanhoja pelejä ajaa aivan liian nopeasti nykyaikaisilla tietokoneilla?

Miksi vanhoja pelejä ajaa aivan liian nopeasti nykyaikaisilla tietokoneilla? (Miten)

Jos olet koskaan yrittänyt saada vintage-tietokonepeliä ylös ja käynnissä nykyaikaisessa järjestelmässä, olet todennäköisesti järkyttynyt siitä, mitennopeasti peli juoksi. Miksi vanhat pelit loppuvat nykyaikaisilla laitteilla?

Aiemmin tänään näytimme, kuinka vanhempia ohjelmia käytetään vanhoissa tietokoneissa; tämän päivän kysymys- ja vastausistunto on mukava kohteliaisuus, joka kaivaa siihen, miksi jotkut vanhemmat ohjelmistot (erityisesti pelit) eivät näytä toimivan oikein, kun yrität käyttää niitä moderneilla laitteistoilla.

Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.

Kysymys

SuperUser-lukija TreyK haluaa tietää, miksi vanhoja tietokonepelejä ajetaan hulluina nopeasti uudella laitteistolla:

Minulla on muutama vanha ohjelma, jonka irrotin 90-luvun alkupuolen Windows-tietokoneesta ja yritin käyttää niitä suhteellisen modernissa tietokoneessa. Mielenkiintoista kyllä, he juoksivat kiihkeästi nopealla nopeudella - ei, ei 60 kuvaa sekunnissa, vaan nopea, pikemminkin oh-my-jumala-merkki-on-the-speed-of-sound -tyyppinen nopeasti. Haluan painaa nuolinäppäintä ja merkin sprite vetää zip-näytön yli paljon nopeammin kuin normaali. Peliajan eteneminen tapahtui paljon nopeammin kuin pitäisi. On olemassa jopa ohjelmia, jotka hidastavat prosessoria, jotta nämä pelit ovat todella pelattavissa.

Olen kuullut, että tämä liittyy peliin riippuen suorittimen sykleistä tai sellaisesta. Kysymykseni ovat:

  • Miksi vanhemmat pelit tekevät niin, ja miten he pääsivät pois sen kanssa?
  • Kuinka uusia pelejäei tee tämä ja ajaa riippumatta CPU-taajuudesta?

Joten mikä on tarina? Miksi täsmälliset versiot vanhoissa peleissä puhaltavat näytöllä niin nopeasti, että peli ei ole soitettavissa?

Vastaus

SuperUser-avustaja JourneymanGeek rikkoo sen:

Uskon, että he ottaisivat järjestelmän kellon kulkevan tiettyyn nopeuteen ja sidottuun sisäisiin ajastimiinsa tähän kellotaajuuteen. Suurin osa näistä peleistä oli luultavasti DOS: lla, ja ne olivat todellinen tila (täydellisellä, suoralla laitteistolla) ja olettaa, että käytit aIIRC 4,77 MHz: n järjestelmä tietokoneille ja mille tahansa standardiprosessorille, jota mallissa käytetään muita Amiga-kaltaisia ​​järjestelmiä varten.

He ottivat myös älykkäitä pikakuvakkeita, jotka perustuivat näihin oletuksiin, mukaan lukien pienen resurssin tallentaminen kirjoittamalla sisäisiä ajastussilmukoita ohjelmassa. Heillä oli myös niin paljon prosessoriteitä kuin he voisivat - mikä oli kunnollinen ajatus hitaiden, usein passiivisesti jäähdytettyjen pelimerkkien päivinä!

Alun perin eräs proses- sien nopeuden kiertäminen oli hyvä vanha Turbo-painike (joka hidasti järjestelmääsi alaspäin). Nykyaikaiset sovellukset ovat suojatussa tilassa ja käyttöjärjestelmä hallitsee resursseja - ne eivätsallia DOS-sovellus (joka on käynnissä NTVDM: ssä 32-bittisessä järjestelmässä) käyttämään kaiken prosessorin useissa tapauksissa. Lyhyesti sanottuna OSes ovat päässeet älykkäämpiä, samoin kuin API: t.

Voimakkaasti perustuu tähän oppaan Oldskool PC: hen, jossa logiikka ja muisti ovat epäonnistuneet - se on hyvä lukea ja luultavasti syventyy "miksi".

Tiedot kuten CPUkiller käyttävät mahdollisimman paljon resursseja "hidastamaan" järjestelmääsi, mikä on tehotonta. Sinun olisi parasta käyttää DOSBoxia hallitsemaan kellonopeutta, jota hakemuksesi näkee.

Jos olet utelias, miten todellinen koodi on pantu täytäntöön varhaisissa tietokonepeleissä (ja miksi he sopeutuvat niin huonosti nykyaikaisiin järjestelmiin ilman hiekkalaatikkoa jonkinlaisessa emulaatioohjelmassa), suosittelemme myös tarkistamaan tämän pitkällisen mutta mielenkiintoisen erittelyn prosessin toisessa SuperUser-vastauksessa.

Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.