AMPR sayaçları
PS5PCEM'deki AMPR, konsolun sayaç ve tamamlama komutlarının işleme özel bir yazılım modelidir. Yüz yirmi sekiz sayaç, gönderim sırasıyla yazımları, atomik alan güncellemelerini, eşli okumaları ve maskeli beklemeleri kabul eder.
10 Ekim 2026 tarihine kadarki depo notları
Bir oyun AMPR'yi ne için kullanır
Konsolda AMPR, dosya verilerini taşıyan ve CPU ile GPU'nun bekleyebildiği sayaçları güncelleyen eşzamansız motordur. Oyunlar onu, ortak bir değişken üzerinde dönmeden bir okumanın tamamlandığını veya sonraki bir geçişin başlayabileceğini bilmek için kullanır. PS5PCEM, AMPR donanım bloğunu emüle etmez. Oyunun oluşturduğu komut akışını işlemin içinde yürütür ve tamamlanmayı oyunun kaydettiği AMPR olay kuyruğu üzerinden bildirir.
Sayaç bankası 32 bitlik 128 sözcük tutar. Bir çift, çift numaralı bir sayaç ile sonraki sözcüktür ve tek bir 64 bitlik değer olarak okunup yazılır. Tek bir kilit iki yarıyı ve her oku-değiştir-yaz işlemini kapsar; böylece bir okuyucu yırtık bir çift göremez. Erişim çiftin tamamını, 32 bitlik sözcüğü, 16 bitlik yarılardan birini veya dört bayttan birini hedefleyebilir.
Yazımlar, beklemeler ve zaman damgaları
Bir yazım, seçilen alana uygulanan bir atama, bit düzeyinde OR, tümleyenle AND, XOR veya taşmalı toplamadır. Bir bekleme o alanı bir maske altında bir referansla karşılaştırır. Karşılaştırmalar eşit, büyük, küçük, eşit değil, ulaşılmış dizi değeri ve büyük ile küçüğün işaretli biçimleridir. Dizi karşılaştırmaları alanın işaret bitini 63. bite kaydırır; böylece aynı kural 8, 16, 32 ve 64 bitte çalışır.
Zaten karşılanmış bir bekleme yerinde tamamlanır. Karşılanmamış bir bekleme gönderim anlık görüntüsünü tutar ve o akıştaki sonraki yazım ve olaylardan önce, değer aynı misafir iş parçacığındaki sonraki bir gönderimden gelse bile, devam eder. Sıradan API ile _04_00 API'nin ayrı bağımsız değişken listeleri vardır. Zaman damgaları sayaç komutlarıyla birlikte kaydedilir. Oyunların içe aktardığı tamamlama boyutu sorguları kayıtlıdır, bu yüzden bu çağrılar çözülür.
Bu yolun yaptığı gözlenenler
Gerçek dışa aktarma yüzeyi üzerinden yapılan çağrılar dahil yirmi iki odaklı AMPR testi ReleaseSafe'te geçiyor. Grand Theft Auto III'ün açılışı 10.000'den fazla APR dosya okuma gönderimi yapıyor ve 350'den fazla AMPR tamamlama olayı yazıyor; bu yolda eşleşen bir AMPR hatası yok. O açılış sayaç API'sini kendisi çağırmaz. Sayaç işi testlerle ve değerleri gerçekten bekleyen oyunlarla kapsanır.
Bu, emülatörün yürüttüğü komutlar için API kapsamıdır. Konsolun bellek denetleyicisinin döngü düzeyinde bir modeli değildir ve donanımın zamanlamasını iddia etmez.
Uygulananlar
- Tutarlı 64 bitlik çiftler ve bayt, yarım ve sözcük alanlarıyla yüz yirmi sekiz sayaç.
- Atama, OR, tümleyenle AND, XOR ve taşmalı toplama; ayrıca maskeli ve işaretli beklemeler.
- Komut akışındaki yerini koruyan ve değer geldiğinde devam eden engellenmiş beklemeler.
- Kayıtlı AMPR olay kuyruğu üzerinden iletilen sıralı tamamlama.
Hâlâ eksik olanlar
- WaitOnAddress hâlâ yer tutucu.
- Gerçek AMPR bloğunun donanım zamanlaması yeniden üretilmiyor.
- Kod çözücünün tanımadığı bir sayaç komutu sessizce başarılı sayılmaz.
İlgili mekanizmalar
Bu sayfalar nedir