Bir oyun konsolu emülatörü geliştirmek neden bu kadar zor?


14

Her zaman emülatörlerin oldukça büyüleyici olduğunu gördüm. Daha eski bir ganeration konsolu veya avuçiçi bilgisayar için emülatör oluşturmak istiyorum. Donanım ve bu donanım için oluşturulan oyunlar hakkında daha fazla bilgi sahibi olmamı sağlayacaktır. Ancak, insanlar her zaman ne kadar zor olduğunu ve denememem gerektiğini söylüyorlar. Bunun neden olduğunu bilmek istiyorum.

Ayrıca, başlamak için iyi bir yer hakkında bazı önerilerde bulunmak istiyorum ve ihtiyacım olan bilgiyi nerede bulabilirim?

Yanıtlar:


15

SO Sorusu

Bu, nasıl çalıştıklarına dair popüler bir kaynak gibi görünüyor.

TL; DR - Mimari tamamen farklı ve orijinal mimariye ulaşmak için çok fazla paralel kaynak gerekiyor.

Oyun konsolları için CPU mimarisi, ortalama masaüstü makinenizle karşılaştırıldığında genellikle biraz egzotiktir. Emülasyon, yazılımda orijinal donanımın yaptığı her şeyi gerçekleştirmek anlamına gelir. Yani, orijinal konsolda özel grafik, ses vb. Yongalarının yanı sıra farklı bir talimat setine sahip bir CPU bulunsa da, emülatör bu paralel kaynakların tüm işlevlerini hızla gerçekleştirmelidir.

Konsolun GPU'su eski olmadığı sürece, modern grafik kartlarının, hatta ucuz olanların bile, en pahalı çok çekirdekli CPU'ların bile (grafik iş yükleri için) kat katına (grafik iş yükleri için) sahip olduğu için neredeyse kesinlikle ana makinenin GPU'suna taklit edilmelidir. Bu zorluğu birleştirmek, CPU, GPU, diğer tüm yerleşik DSP'ler ve bellek arasındaki iletişimin, donanım yapılandırmasının özelliklerinden yararlanmak için konsolda muhtemelen yüksek düzeyde optimize edilmiş olması ve bu nedenle de bu kaynakların da hız eşleştirilmesi gerektiğidir.

Tüm bu zorlukları bir araya getirerek, genellikle tasarımın sargısı altında tutulduğu için konsolun donanımının özellikleri hakkında çok az şey bilinir. Ters mühendislik, hobilerin yapması için gittikçe daha az uygulanabilir hale geliyor.

İşleri perspektife sokmak için, bir mimari simülatör (örneğin, bir x86 makinesinde bir PowerPC programı çalıştırabilen ve bununla ilgili her türlü istatistikleri toplayabilen bir program) 1000x ve 100000x arasında gerçek zamanlıdan daha yavaş çalışabilir. Modern bir CPU'nun bir RTL simülasyonu (bir çipi oluşturan tüm kapıların ve parmak arası terliklerin bir simülasyonu) genellikle sadece 10Hz ile birkaç yüz Hz arasında çalışabilir. Çok optimize edilmiş emülasyonun bile yerel koddan 10 ila 100 kat daha yavaş olması muhtemeldir;

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.