Miks viivad vanad mängud kaasaegsetel arvutitel liiga kiiresti?
Kui olete kunagi proovinud saada kaasaegse arvutimängu kaasaegses süsteemis, siis olete tõenäoliselt šokeeritud, kuidas kiiresti mäng jooksis. Miks vanad mängud tänapäeva riistvara üle kontrolli kaotavad?
Täna näitasime teile, kuidas kasutada vanemaid tarkvara kaasaegsetel arvutitel; tänane küsimuste ja vastuste seanss on kena kompliment, mis kaob, miks mõni vanem tarkvara (eriti mängud) ei tundu kunagi olevat õige, kui proovite neid kaasaegses riistvaras kasutada.
Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.
Küsimus
SuperUser-lugeja TreyK soovib teada, miks vanad arvutimängud uuel riistvaral kiiresti hulluvad:
Mul on mõned vanad programmid, mida ma tõmbasin ära 90-ndate aastate alguse Windowsi arvutist ja püüdsin neid suhteliselt kaasaegses arvutis kasutada. Huvitav on see, et nad jooksid kiirelt kiirelt - mitte, mitte 60 kaadrit sekundis kiirelt, pigem oh-my-god-the-character-is-walk-at-the-sound-tüüpi kiiresti. Ma vajutaksin noolenuppu ja tegelase sprite tõmbaks ekraani üle tavapärasest kiiremini. Aegade areng mängus toimus palju kiiremini kui peaks. On isegi programme, mis võimaldavad CPU-d aeglustada, et need mängud oleksid tegelikult mängitavad.
Olen kuulnud, et see on seotud mänguga sõltuvalt CPU tsüklitest või midagi sellist. Minu küsimused on järgmised:
- Miks teevad vanemad mängud seda ja kuidas nad sellest ära said?
- Kuidas uuemad mängud mitte tehke seda ja töötage CPU sagedusest sõltumatult?
Mis siis lugu on? Miks täpselt teevad vanad mängud sprites üle ekraani nii kiiresti, et mäng muutub mängimatuks?
Vastus
SuperUser'i toetaja JourneymanGeek purustab selle:
Ma arvan, et nad arvasid, et süsteemi kell töötab teatud kiirusega ja seotaks nende sisemise taimeriga selle kella kiirusega. Enamik neist mängudest toimus tõenäoliselt DOS-il ja olid reaalsed režiimid (täieliku, otsese riistvaraga ligipääsuga) ja eeldasid, et töötate a iirc 4,77 MHz süsteem personaalarvutitele ja mis tahes standardprotsessorile, mida mudel kasutas teiste süsteemide jaoks, nagu Amiga.
Nad võtsid ka nende eelduste põhjal nutikad otseteed, sealhulgas väikeste ressursside säästmise, kuna nad ei kirjutanud programmi sisemisi ajastussilmu. Nad võtsid ka nii palju protsessorivõimsust, kui nad võisid - mis oli aeglane, sageli passiivselt jahutatud kiipide korral korralik idee!
Esialgu oli üks viis erinevate protsessori kiiruste ümberlülitamiseks hea vana Turbo nupp (mis aeglustas teie süsteemi). Kaasaegsed rakendused on kaitstud režiimis ja operatsioonisüsteem kaldub haldama ressursse - nad seda ei tee lubama DOS-rakendus (mis töötab igal juhul NTVDM-is 32-bitises süsteemis), et kasutada kogu protsessorit paljudel juhtudel. Lühidalt öeldes on OS-id saanud targemaks, nagu ka API-d.
Selle juhendi tugeva kasutamise aluseks on Oldskool PC, kus loogika ja mälu ei õnnestunud - see on suurepärane lugemine ja tõenäoliselt läheb põhjalikumalt „miks“.
Sellised asjad nagu CPUkiller kasutavad nii palju ressursse kui võimalik, et süsteemi „aeglaselt“, mis on ebaefektiivne. Sa oleks parem kasutada DOSBoxi, et hallata oma rakenduse kella kiirust.
Kui olete uudishimulik, kuidas tegelik kood rakendati varakult arvutimängudes (ja miks nad kohanevad nii halvasti kaasaegsete süsteemidega, ilma et nad oleksid mingisuguses emuleerimisprogrammis liivakastis), soovitame ka seda pikka, kuid huvitavat jaotust kontrollida. protsess teise superkasutaja vastuses.
Kas teil on midagi lisada selgitusele? Hääletage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.