Eski bir bilgisayar oyununu modern bir sistemde kurup çalıştırmayı denediyseniz, muhtemelen hızlı oyun koştu. Eski oyunlar neden modern donanım üzerinde kontrolden çıkıyor?
Bugün erken saatlerde biz modern bilgisayarlarda eski yazılımların nasıl çalıştırılacağını gösterdi ; bugünün soru ve cevap oturumu, bazı eski yazılımların (özellikle oyunların) modern donanımda çalıştırmaya çalıştığınızda neden hiçbir zaman doğru çalışmadığını araştıran güzel bir iltifattır.
Bugünün Soru-Cevap oturumu bize, topluluk odaklı bir Soru-Cevap web siteleri grubu olan Stack Exchange'in bir alt bölümü olan SuperUser'ın izniyle geliyor.
Soru
Süper Kullanıcı okuyucu TreyK, eski bilgisayar oyunlarının yeni donanımlarda neden çılgınca hızlı çalıştığını bilmek istiyor:
90'ların başlarından kalma bir Windows bilgisayarından çıkardığım birkaç eski programım var ve bunları nispeten modern bir bilgisayarda çalıştırmayı denedim. Yeterince ilginç bir şekilde, inanılmaz bir hızda koştular - hayır, saniyede 60 kare değil, daha çok aman-tanrım-karakter-ses hızında yürüyor türü hızlı. Bir ok tuşuna basıyordum ve karakterin hareketli karakteri ekranda normalden çok daha hızlı geçiyordu. Oyundaki zaman ilerlemesi olması gerekenden çok daha hızlı gerçekleşiyordu. Yapılmış programlar bile var CPU'nuzu yavaşlatın böylece bu oyunlar gerçekten oynanabilir.
Bunun CPU döngülerine veya buna benzer bir şeye bağlı olarak oyunla ilgili olduğunu duydum. Sorularım:
- Eski oyunlar bunu neden yapıyor ve bundan nasıl kurtuldular?
- Yeni oyunlar nasıl yapılır değil bunu yapar ve CPU frekansından bağımsız çalışır?
Öyleyse hikaye nedir? Neden eski oyunlarda sprite tam olarak ekranda bu kadar hızlı parlıyor, oyun oynanamaz hale geliyor?
Cevap
SuperUser katılımcısı JourneymanGeek bunu açıklıyor:
Sistem saatinin belirli bir hızda çalışacağını ve dahili zamanlayıcılarında bu saat hızına bağlı olduğunu varsaydıklarına inanıyorum. Bu oyunların çoğu muhtemelen DOS üzerinde çalışıyordu ve gerçek mod (tam, doğrudan donanım erişimi ile) ve bir Iirc PC'ler için 4.77 MHz sistemi ve bu modelin Amiga gibi diğer sistemler için çalıştırdığı standart işlemci.
Ayrıca, programın içine dahili zamanlama döngüleri yazmayarak küçük bir parça kaynak tasarrufu da dahil olmak üzere bu varsayımlara dayanan akıllı kısayollar kullandılar. Ayrıca ellerinden geldiğince fazla işlemci gücü kullandılar - bu, yavaş, genellikle pasif olarak soğutulan yongaların olduğu günlerde iyi bir fikirdi!
Başlangıçta farklı işlemci hızlarını aşmanın bir yolu da eski Turbo düğmesi (sisteminizi yavaşlatan). Modern uygulamalar korumalı moddadır ve işletim sistemi kaynakları yönetme eğilimindedir - yapmazlar izin vermek çoğu durumda tüm işlemciyi kullanmak için bir DOS uygulaması (yine de 32 bitlik bir sistemde NTVDM'de çalışan). Kısacası, API'ler gibi OS'ler de daha akıllı hale geldi.
Ağır temellendirilmiş Oldskool PC için bu kılavuz mantık ve hafızanın beni hayal kırıklığına uğrattığı yer - bu harika bir okuma ve muhtemelen "neden" konusuna daha derinlemesine giriyor.
Gibi şeyler CPUkiller Verimsiz olan sisteminizi "yavaşlatmak" için mümkün olduğunca çok kaynak kullanın. Kullanmanız daha iyi olur DOSBox uygulamanızın gördüğü saat hızını yönetmek için.
İlk bilgisayar oyunlarında gerçek kodun nasıl uygulandığını (ve neden bir tür öykünme programında korumalı alana alınmadan modern sistemlere bu kadar kötü uyum sağladığını) merak ediyorsanız, kontrol etmenizi de öneririz. bu uzun ama ilginç süreç dökümü başka bir Süper Kullanıcı cevabında.
Açıklamaya eklemek istediğiniz bir şey var mı? Yorumlarda sesi kapatın. Diğer teknoloji meraklısı Stack Exchange kullanıcılarından daha fazla yanıt okumak ister misiniz? Tartışma dizisinin tamamına buradan göz atın .