2 puan yazan GN⁺ 2024-06-09 | Henüz yorum yok. | WhatsApp'ta paylaş

PS2 emülatör tespiti: 1*X, X’e eşit olmadığında

PS2 kayan nokta işlemlerindeki sorun

  • PS2’nin VU (vektör birimi) üzerinde çarpma komutları (MUL, MULi vb.) kullanıldığında, 1 ile çarpmanın sonucu özgün değerle aynı olmayabilir.
  • Bu durum VU geliştirici kılavuzunda da belirtilir; 1 bitlik bir hesaplama hatası oluşabilir.
  • Kesin nedeni bilinmese de, PS2’nin yazılımsal kayan nokta davranışını uygulayanların bunu ele alması gerekir.

Bu sorunu kullanarak emülatör tespiti

  • İlk adım, bu soruna yol açan sayıyı bulmaktır.
  • 0.5 artışlarla ilerleyen ilk 250 sayı içinde bu sorunu tetikleyen değer 129.5’tir.
  • Aşağıdaki kod, 129.5 ile 1’in çarpım sonucunun özgün değerden farklı olup olmadığını kontrol etmenin bir yolunu gösterir.
int isVUMulErrorPresent() {
  float in[4] __aligned(16) = {129.5f, 0.0f, 0.0f, 0.0f};
  float out[4] __aligned(16) = {0.0f, 0.0f, 0.0f, 0.0f};
  asm __volatile__(
    "QMTC2 %1, $vf1\n"     // VF1'e 129.5f ayarla
    "VADDw $vf2, $vf0, $vf0w\n" // VF2 = vf0[w] = 1
    "VMUL $vf1, $vf2, $vf1\n"  // VF1 = 1 * 129.5f
    "QMFC2 %0, $vf1\n"     // Sonucu EE'ye yükle
    : "=r"(out[0])
    : "r"(in[0]));
  return in[0] != out[0];
}
  • Bu kod, 1 ile 129.5’i çarptıktan sonra sonucu kontrol ederek emülatörün bu sorunu doğru şekilde ele alıp almadığını tespit eder.
  • Şu anda hiçbir emülatör bu davranışı tam olarak doğru biçimde emüle edemiyor.

GN⁺ görüşü

  • PS2 emülatörlerinin sınırları: Bu yazı, PS2 emülatörlerinin gerçek donanımla tamamen aynı şekilde davranmadığı belirli bir örneği gösteriyor. Bu, emülatör geliştiricileri için önemli bir bilgi olabilir.
  • Kayan nokta işlemlerinin karmaşıklığı: Kayan nokta işlemleri donanımdan donanıma farklı uygulanabilir. Bu da yazılım geliştiricilerin kodlarını farklı platformlarda test ederken dikkate alması gereken önemli bir unsur.
  • Hata ayıklama aracı olarak kullanım: Bu tür tespit yöntemleri, emülatör doğruluğunu sınamak için bir hata ayıklama aracı olarak kullanılabilir. Bu da emülatör kalitesini artırmaya katkı sağlayabilir.
  • Diğer emülatörlerle karşılaştırma: Yazı, çeşitli emülatörlerin (PCSX2, Play!, DobieStation, hps2x64) hiçbirinin bu sorunu doğru şekilde emüle edemediğini belirtiyor. Bu, emülatör seçerken önemli bir referans olabilir.
  • Gelecekte iyileştirme olasılığı: Bu tür sorunları çözmeye yönelik araştırma ve geliştirme sürerse, daha doğru emülatörlerin ortaya çıkma ihtimali var. Bu da oyun koruma ve erişilebilirlik açısından olumlu etki yaratabilir.

Henüz yorum yok.

Henüz yorum yok.