Ha valaha is megpróbált egy vintage számítógépes játékot elindítani és futtatni egy modern rendszeren, akkor valószínűleg megdöbbent, hogy hogyan gyors futott a játék. Miért fut ki a régi játékokból a modern hardver?
Ma korábban mi megmutatta, hogyan futtasson régebbi szoftvert modern számítógépeken ; a mai kérdés és válasz egy kellemes bók, amely arra készteti, hogy egyes régebbi szoftverek (konkrétan játékok) miért nem működnek soha, amikor modern hardveren próbálod futtatni őket.
A mai Kérdések és válaszok ülés a SuperUser jóvoltából érkezik hozzánk - a Stack Exchange alosztályához, amely a Q & A webhelyek közösségvezérelt csoportosulása.
A kérdés
A TreUK SuperUser olvasó szeretné tudni, hogy a régi számítógépes játékok miért futnak őrülten az új hardvereken:
Kaptam néhány régi programot, lehúztam egy 90-es évek eleji Windows számítógépet, és megpróbáltam viszonylag modern számítógépen futtatni őket. Érdekes módon lángoló gyors sebességgel futottak - nem, nem a 60 képkocka / másodperc gyorsasággal, inkább az az istenem-istenem-a karakter-jár-a-hang-sebesség-fajta gyors. Megnyomnék egy nyílgombot, és a karakter sprite a normálnál sokkal gyorsabban átcsúszik a képernyőn. Az idő előrehaladása a játékban sokkal gyorsabban zajlott, mint kellett volna. Még olyan programok is készültek, amelyekre lassítsa a CPU-t hogy ezek a játékok valóban játszhatók legyenek.
Hallottam, hogy ez a játékhoz kapcsolódik a CPU ciklusaitól függően, vagy valami hasonló. A kérdéseim a következők:
- Miért csinálják ezt a régebbi játékok, és hogyan keresték meg?
- Hogyan csinálják az újabb játékok nem csináld ezt, és a CPU frekvenciájától függetlenül fuss?
Szóval mi a történet? Miért lángolnak pontosan a régi játékok spritei a képernyőn olyan gyorsan, hogy a játék nem játszható le?
A válasz
A SuperUser közreműködője, JourneymanGeek lebontja:
Úgy gondolom, hogy feltételezték, hogy a rendszer óra meghatározott sebességgel fog működni, és belső időzítőikben ehhez az órajelhez vannak kötve. A legtöbb ilyen játék valószínűleg DOS-on futott, és volt valós mód (teljes, közvetlen hardveres hozzáféréssel) és feltételezte, hogy a iirc 4,77 MHz-es rendszer PC-khez és bármilyen szabványos processzor, amelyet ez a modell futtatott más rendszerekhez, például az Amigához.
Ezen feltételezések alapján okos parancsikonokat is alkalmaztak, beleértve az erőforrások apró megtakarítását azzal, hogy nem írtak belső időzítési ciklusokat a program belsejébe. A processzor teljesítményét is elvették, amennyit csak lehetett - ami a lassú, gyakran passzívan hűtött chipek napjaiban tisztességes ötlet volt!
Kezdetben az eltérő processzorsebesség megkerülésének egyik módja a jó öreg volt Turbo gomb (ami lelassította a rendszer működését). A modern alkalmazások védett módban vannak, és az operációs rendszer hajlamos az erőforrások kezelésére - nem tennék lehetővé teszi egy DOS alkalmazás (amely egyébként NTVDM-ben fut 32 bites rendszeren), hogy sok esetben felhasználja az összes processzort. Röviden: az operációs rendszerek okosabbak lettek, akárcsak az API-k.
Erősen kiindulva ezt az útmutatót az Oldskool PC-n ahol a logika és az emlékezet kudarcot vallott - remek olvasmány, és valószínűleg mélyebben elmélyül a „miért” -ben.
Cucc mint CPUkiller használjon minél több erőforrást a rendszer „lassításához”, ami nem hatékony. Jobb lenne, ha használnád DOSBox az alkalmazás által látott órajel kezeléséhez.
Ha kíváncsi arra, hogyan valósították meg a tényleges kódot 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 programba kerülnének), javasoljuk, hogy nézze meg a folyamat ezen hosszú, de érdekes lebontása egy másik SuperUser válaszban.
Van valami hozzáfűzhető a magyarázathoz? Hangzik el a megjegyzésekben. Szeretne további válaszokat olvasni más, hozzáértő Stack Exchange-felhasználóktól? Nézze meg a teljes vitafonalat itt .