HLE, üst düzey sistem yazılımı emülasyonu
HLE, PS5PCEM'in bir oyunun içe aktardığı sistem yazılımı çağrılarını yanıtlama biçimidir. Her sayısal NID, ana sistem yığınında çalışan bir Zig işlevine dönüşür; Windows'ta misafirin System V çağrı kuralı korunur.
10 Ekim 2026 tarihine kadarki depo notları
Sistem yazılımı neden oyunun içinde değil
Bir PlayStation 5 oyunu çağırdığı işletim sistemini yanında taşımaz. İçe aktarmaları 11 karakterlik tanımlayıcılardır. PS5PCEM her tanımlayıcıyı dışa aktarma adından hesaplar: adın ve sabit bir tuzun SHA-1'i, ardından özetin ilk sekiz baytı bir base64 varyantında. Bir uygulama okunabilir ad altında kaydolur ve o adın üretmesi gereken tanımlayıcıyı şart koşabilir; böylece yanlış yazılmış bir dışa aktarma modül derlenirken hata verir.
Dinamik bağlayıcı tanımlayıcıyı kütüphane, modül ve sürümleriyle birlikte arar. Aynı tanımlayıcı birden fazla kütüphanede bulunabilir. Kullanılabilir meta verisi olmayan içe aktarmalar için yalnızca tanımlayıcıyla arama da vardır; belirsiz olduğu için bu yedek yol son çare sayılır.
Çağrı ana sistem yığınında çalışır
Misafir sistem yazılımını doğrudan çağırır, bu yüzden çağrı misafir iş parçacığının yığınında başlar; oyun bunu istediği için bu yığın çoğu zaman bir megabayttır. Dosya açmak gibi ana sistem işleri çok daha büyük bir çerçeve ister. Derleyici bu çerçeveyi girişte, herhangi bir erken dönüşten önce ayırır. Bu yüzden bir sistem yazılımı gövdesi, alana ihtiyaç duyan satıra varmadan misafir yığınının dışına taşabilir ve hata tüm misafir eşlemelerinin dışına düşer.
Her HLE çağrısı, ana sistem işi süresince iş parçacığı başına bir ana sistem yığınına geçer. Bağımsız değişkenler bellek üzerinden taşınır; böylece kayan noktalı ve bileşik dönüşler dahil her imzaya tek bir assembly saplaması hizmet eder. İç içe sistem yazılımı çağrıları, dıştaki çağrının kurduğu yığında kalır. Windows'ta misafir System V AMD64 kuralını, ana sistem ise Microsoft x64'ü kullanır; bu yüzden misafirin çağırabildiği her işlev misafir kuralıyla bildirilir. Bu bildirimi unutmak yine derlenir, ama bağımsız değişkenleri yanlış yazmaçlardan okur.
HLE yüzeyi neleri kapsıyor
Bu altyapının üzerinde sistem yazılımı kütüphaneleri doğrudan ve esnek belleği, modül tanıtıcılarını, pthread'leri, eşzamanlamayı, dosyaları, kayıt verilerini, fiber'ları, yazı tiplerini, PNG'yi, saati, kumandaları, AudioOut, AJM, NGS2, ACM, AvPlayer, APR ve AMPR'yi sağlar. Ağ, SSL ve NP Web API bağlam ve istek yaşam sürelerini korur ve belirlenimci çevrimdışı hatalar döndürür. Sistem kabuğu gerektiren diyaloglar tutarlı, arayüzsüz bir sonuçla hemen tamamlanır.
10 Ekim doğrulama çalıştırması ReleaseSafe HLE paketinin tamamını, 606 testin 606'sını geçti. Bu sayı sistem yazılımı paketidir. Tek başına yeni bir kare hızı veya yeni bir bitirilmiş oynanış kaydetmez.
Uygulananlar
- NID hesaplama, sürümlü bir sembol kaydı ve her sistem yazılımı çağrısı için ana sistem yığınına geçiş.
- Ana sistem kuralının Microsoft x64 olduğu Windows'ta misafir System V çağrıları.
- Bellek, dosyalar, iş parçacıkları, kayıt verileri, medya, ses kodekleri ve APR/AMPR komut yolu.
- Arayüzsüz diyaloglar ve ana sistem soketleri açmayan çevrimdışı bir ağ profili.
Hâlâ eksik olanlar
- Oyunun içe aktardığı ve PS5PCEM'in uygulamadığı kütüphaneler hâlâ içe aktarmada başarısız olur.
- Yayımlanan grafikte olmayan bir modülün gerçekten isteğe bağlı yüklenmesi hata döndürür.
- Gerçek bir kabuk, hesap veya ağ eşi gerektiren platform hizmetleri kullanılamaz durumda kalır.
İlgili mekanizmalar
Bu sayfalar nedir