16Aug

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

Ha valaha is próbált egy vintage számítógépes játékot felállítani és futni egy modern rendszeren, akkor valószínűleg megdöbbentette, hogy gyorsan a játék futott. Miért futnak le a régi játékok a modern hardveren?

Korábban ma bemutattuk, hogyan kell régebbi szoftvert futtatni a modern számítógépeken;a mai kérdés- és válaszszekció kellemes dicséret, amely rámutat arra, hogy miért nem működnek a régebbi szoftverek( különösen a játékok), amikor a modern hardveren próbálják futtatni őket.

A mai kérdés &A válaszüzenet a SuperUser - a Stack Exchange megosztottságának köszönhetően - a Q & A webhelyek közösségi szintű csoportosítása.

Kérdés

SuperUser olvasó A TreyK tudni akarja, hogy a régi számítógépes játékok miért őrültek gyorsan az új hardveren:

Van néhány régi programom, melyeket a korai 90-es évekbeli Windows számítógépen húztam le, és viszonylag modern számítógépen.Érdekes módon eléggé gyors ütemben futottak - nem, nem a másodpercenkénti 60 képkocka, hanem az oh-my-the-character-is-a-speed-of-soundgyors. Egy nyílgombot nyomtam meg, és a karakteres sprite a képernyőn sokkal gyorsabban húzódna, mint a normál. A játék progressziója sokkal gyorsabban zajlott, mint amilyennek lennie kellene. Vannak olyan programok is, amelyek lassítják a CPU-t, hogy ezek a játékok valóban játszhatók le.

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

  • Miért csinálják a régebbi játékokat, és hogyan mentek el vele?
  • Hogyan készítenek újabb játékokat nem és futtatják a CPU frekvenciától függetlenül?

Szóval mi a történet? Miért pontosan a régi játékokban lévõ spritek lángolnak a képernyõn olyan gyorsan, hogy a játék nem játszható le?

A válasz

SuperUser közreműködő JourneymanGeek lebontja:

Úgy gondolom, feltételezték, hogy a rendszerórák egy bizonyos sebességgel futnak, és belső időzítőikbe kötik az adott órajelet. A legtöbb ilyen játék valószínűleg a DOS rendszeren futott, és valós módú volt( teljes és közvetlen hardveres hozzáféréssel), és azt feltételezte, hogy iirc 4.77 MHz-es rendszert futtat a PC-khez, és bármilyen szabványos processzort, amely a modellhez hasonlóan futott más rendszerekhez, mint az Amiga.

Ezek a feltételezések alapján intelligens billentyűparancsokat is készítettek, beleértve egy kis erőforrás megtakarítását, ha nem írtak be a program belső időzítési ciklusait. Ráadásul annyi feldolgozó erejüket használták, amennyit csak tudtak - ez egy tisztességes elképzelés a lassú, gyakran passzív hűtésű zsetonok idején!

Kezdetben az egyik módja annak, hogy megkerüljék a különböző processzorsebességet, a jó régi Turbo gomb volt( ami lelassította a rendszert).A modern alkalmazások védett módban vannak, és az operációs rendszer erőteljesen kezeli az erőforrásokat - az nem engedélyezi az számára egy DOS alkalmazást( amely 32-bites rendszeren NTVDM-ben fut), hogy sok esetben használja a processzort. Röviden, az operációs rendszer-rendszerek okosabbak, mint az API-k.

Erősen alapozta ezt az útmutatót a Oldskool PC-n, ahol a logika és a memória meghiúsult - ez egy nagyszerű olvasás, és valószínűleg mélyebbre megy a "miért".

Az olyan dolgok, mint a CPUkiller, annyi erőforrást használnak fel, amennyit csak lehet, hogy "lelassítsák" a rendszert, ami nem hatékony. Jobb lenne a DOSBox használatával kezelni az alkalmazás gyorsaságát.

Ha kíváncsi vagy arra, hogy miként valósították meg a kódot a korai számítógépes játékokban( és miért olyan rosszul alkalmazkodnak a modern rendszerekhez, anélkül, hogy valamilyen emulációs programot homokoztatnának), azt javasolnánk, hogy ellenőrizzük ezt a hosszú, de érdekes bontásta másik SuperUser-válaszban.

Van valami, amit hozzá kell adnod a magyarázathoz? Hangzik ki a megjegyzésekben. Szeretne többet válaszolni a többi technikus-tudós Stack Exchange felhasználóiról? Nézze meg a teljes vitafonalat itt.