Kodėl senieji žaidimai šiuolaikiniuose kompiuteriuose veikia per greitai?
Jei jūs kada nors bandėte gauti senovinį kompiuterinį žaidimą ir veikti šiuolaikinėje sistemoje, jūs tikriausiai buvote sukrėstas tuo, kaip greitas žaidimas vyko. Kodėl senų žaidimų kontrolė yra šiuolaikinės technikos?
Anksčiau šiandien parodėme, kaip paleisti senesnę programinę įrangą šiuolaikiniuose kompiuteriuose; šiandienos klausimų ir atsakymų sesija yra gražus komplimentas, į kurį įeina, kodėl kai kurios senesnės programinės įrangos (ypač žaidimų) niekada neveikia, kai bandote jas paleisti šiuolaikinėje aparatūroje.
Šiandienos „Klausimų ir atsakymų“ sesija mums suteikiama pagal „SuperUser“ - „Stack Exchange“ padalinį, bendruomenės sukurtą „Q&A“ svetainių grupavimą.
Klausimas
„SuperUser“ skaitytojas „TreyK“ nori žinoti, kodėl seni kompiuteriniai žaidimai greitai bėga naujai aparatūrai:
Aš turiu keletą senų programų, kurias ištraukiau nuo ankstyvo 90-ųjų eros „Windows“ kompiuterio ir bandžiau juos paleisti gana moderniame kompiuteryje. Įdomu tai, kad jie bėgo sparčiu greičiu - ne, ne 60 kadrų per sekundę sparčiai, o o-mano-dievas-charakteris-yra-vaikščiojimas-greitas garsas greitas. Norėčiau paspausti rodyklės klavišą, o simbolio sprite būtų užfiksuotas per ekraną daug greičiau nei įprastai. Laiko progresas žaidime vyko daug greičiau, nei turėtų. Yra net programų, skirtų procesoriaus sulėtinimui, kad šie žaidimai būtų iš tikrųjų leistini.
Aš girdėjau, kad tai susiję su žaidimu, priklausomai nuo procesoriaus ciklų, ar panašaus. Mano klausimai yra:
- Kodėl vyresni žaidimai tai daro ir kaip jie su juo pabėgo?
- Kaip naujesni žaidimai ne tai atlikite ir paleiskite nepriklausomai nuo procesoriaus dažnio?
Taigi, kas yra istorija? Kodėl tiksliai atlieka senų žaidimų sprites per ekraną taip greitai, kad žaidimas tampa neatkuriamas?
Atsakymas
„SuperUser“ dalyvis „JourneymanGeek“ suskirsto jį:
Manau, kad jie manė, kad sistemos laikrodis veiks tam tikru greičiu ir savo vidiniuose laikmačiuose susietas su tuo laikrodžio rodikliu. Dauguma šių žaidimų tikriausiai vyko DOS, ir buvo tikrasis režimas (su visišku, tiesioginiu aparatinės prieigos būdu) ir manė, kad dirbate a iirc 4,77 MHz sistema asmeniniams kompiuteriams ir bet kokiam standartiniam procesoriui, kuris buvo naudojamas kitoms sistemoms, tokioms kaip Amiga.
Jie taip pat ėmėsi protingų nuorodų, paremtų šiomis prielaidomis, įskaitant mažų išteklių taupymą, neperrašydami vidinių laiko linijų programoje. Jie taip pat užėmė tiek procesoriaus galią, kiek galėjo - tai buvo gera idėja lėtomis, dažnai pasyviai atšaldytomis žetonų dienomis.!
Iš pradžių vienas iš būdų pasiekti skirtingą procesoriaus greitį buvo geras senas „Turbo“ mygtukas (kuris sulėtino jūsų sistemą). Šiuolaikinės programos yra apsaugotame režime, o OS paprastai valdo išteklius - jos nebūtų leisti DOS programa (kuri vis tiek veikia NTVDM 32 bitų sistemoje) daugeliu atvejų panaudoti visą procesorių. Trumpai tariant, operacinės sistemos yra sumanesnės, kaip ir API.
„Oldskool“ kompiuteryje, kur logika ir atmintis man nepavyko, šis vadovas yra labai pagrįstas - tai puikus skaitymas ir tikriausiai giliau į „kodėl“.
Tokios medžiagos, kaip CPUkiller, sunaudoja kiek įmanoma daugiau išteklių „lėtai“ savo sistemai, kuri yra neveiksminga. Jei norite valdyti laikrodžio greitį, kurį mato jūsų programa, geriau naudoti DOSBox.
Jei norite sužinoti, kaip ankstyvuosiuose kompiuteriniuose žaidimuose buvo įdiegtas tikrasis kodas (ir kodėl jie taip prastai prisitaiko prie šiuolaikinių sistemų, nesudarydami smėlio dėžės į tam tikrą emuliacijos programą), taip pat siūlome patikrinti šį ilgą, bet įdomų suskirstymą procesą kitame „SuperUser“ atsakyme.
Ar ką nors papildyti paaiškinimu? Garsas išjungtas komentaruose. Norite perskaityti daugiau atsakymų iš kitų „tech-savvy Stack Exchange“ vartotojų? Čia rasite visą diskusijų temą.