Homepage » hogyan kell » Miért futnak a régi játékok túl gyorsan a modern számítógépeken?

    Miért futnak a régi játékok túl gyorsan a modern számítógépeken?

    Ha valaha is próbálkoztál egy vintage számítógépes játékhoz, és egy modern rendszeren futottál, akkor valószínűleg megdöbbentél, hogyan gyors a játék futott. Miért kifogynak a régi játékok a modern hardveren?

    Korábban ma bemutattuk, hogyan kell futtatni a régebbi szoftvereket a modern számítógépeken; A mai kérdés- és válaszfolyamat egy szép bók, ami arra késztet, hogy a régebbi szoftverek (különösen a játékok) soha nem működnek, amikor a modern hardvereket próbálják futtatni.

    A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..

    A kérdés

    A SuperUser olvasó TreyK tudni akarja, hogy a régi számítógépes játékok milyen gyorsan futnak az új hardveren:

    Van néhány régebbi programom, amelyeket elhúzottam egy korai 90-es évekbeli Windows számítógépről, és megpróbáltam egy viszonylag modern számítógépen futtatni őket. Érdekes, hogy egy gyors, gyors sebességgel futottak - nem, nem a 60 képkocka másodpercenként, hanem az oh-my-god-the-character-is-walk-at-the-sound-típusú gyors. Megnyomnék egy nyíl billentyűt, és a karakter sprite a képernyőn sokkal gyorsabban zip-el a normálnál. A játék időbeli előrehaladása sokkal gyorsabban történt, mint amennyire kellett volna. Vannak olyan programok is, amelyek lassítják a CPU-t, hogy ezek a játékok valóban lejátszhatók legyenek.

    Hallottam, hogy ez a játékhoz kapcsolódik a CPU-ciklusoktól függően, vagy ilyesmi. Kérdésem:

    • Miért csinálják ezt a régebbi játékokat, és hogyan jutottak el vele?
    • Hogyan újabb játékok nem tegye ezt, és futtassa a CPU frekvenciájától függetlenül?

    Szóval mi a történet? Miért pont a sprites a régi játékokban lángol a képernyőn, így a játék nem játszható le?

    A válasz

    A SuperUser közreműködő, JourneymanGeek leáll:

    Úgy vélem, feltételezték, hogy a rendszer órája egy meghatározott sebességgel fut, és belső időzítőihez kötődik az adott órarendhez. A legtöbb ilyen játék valószínűleg DOS-on futott, és valós mód volt (teljes, közvetlen hardver hozzáféréssel), és feltételezte, hogy fut a IIRC 4,77 MHz-es rendszer PC-khez és bármilyen szabványos processzorhoz, amelyet a modell más rendszerekhez, például az Amigához hasonlóan futott.

    Ezek a feltevések alapján okos gyorsbillentyűket is magukban foglaltak, köztük egy apró erőforrás megtakarítást, a belső időzítési ciklusok beírásával a programban. Olyan sok processzorteljesítményt is vettek fel, mint amennyit tudtak - ami jó ötlet volt a lassú, gyakran passzívan hűtött zsetonok napjaiban!

    Kezdetben az egyik módja a különböző processzorsebességek megkerülésének a jó régi Turbo gomb (ami lelassította a rendszert). A modern alkalmazások védett módban vannak, és az operációs rendszer az erőforrások kezelésére irányul - nem lehetővé teszi egy DOS-alkalmazás (amely az NTVDM-ben fut egy 32 bites rendszerben), hogy sok esetben fel tudja használni a processzort. Röviden, az OS-ek okosabbak, mint az API-k.

    Az Oldskool PC-n erősen alapul ez az útmutató, ahol a logika és a memória meghibásodott - ez egy nagyszerű olvasás, és valószínűleg mélyebben megy bele a „miért”.

    A CPUkiller, mint a CPUkiller, a lehető legtöbb erőforrást használ fel, hogy „lassítson” a rendszert, ami nem hatékony. Jobb lenne, ha a DOSBox-ot kezelné az alkalmazás által látott órajelsebességet.

    Ha kíváncsi, hogy a tényleges kódot hogyan valósították meg a korai számítógépes játékokban (és miért alkalmazkodnak ilyen rosszul a modern rendszerekhez anélkül, hogy valamilyen emulációs programban homokozóba kerülnének), azt is javasoljuk, hogy ellenőrizze ezt a hosszú, de érdekes bontást egy másik SuperUser válaszban.


    Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.