Input Delay pada Konsol Retro dan Emulator



TL; DR Artikel ini menjelaskan masalah input lag yang diketahui, yang memanifestasikan dirinya ketika mencoba memainkan game lama pada perangkat keras modern: emulator dari konsol retro, gamepad bluetooth, dll. Terkadang penundaan begitu besar sehingga menjadi tidak mungkin untuk dimainkan. Saya akan menjelaskan cara saya menemukan konfigurasi yang dapat diterima untuk menjalankan game favorit saya.

Dengan gelombang popularitas komputer papan tunggal RaspberryPi, OrangePi banyak kenalan membeli bundel dari mereka. Tanpa memutuskan apa yang harus dilakukan dengan mereka, mereka mulai memahat dari mereka retro-console berdasarkan pada emulator RetroArch dan distribusi Recallbox. Ketika saya mencoba memainkan permainan masa kecil favorit saya dalam hal ini, saya terkejut: " Bagaimana saya bisa memainkan ini? " Fisika permainan sepertinya salah, perasaan itu menjijikkan. Setelah beberapa saat, mereka mengatakan kepada saya bahwa intinya adalah input delay, yang sekilas tidak terasa seperti delay, yaitu, seperti fisika lainnya.

Ternyata masalah ini telah lama diketahui di kalangan geek konsol dan sedang diselidiki secara aktif. Saya akan menganalisis studi orang lain dan mencoba mengukur keterlambatan pengaturan saya.

Apa masalahnya?


Entri penundaan adalah waktu dari saat tombol pada pengontrol ditekan hingga reaksi karakter pada layar. Di sini banyak faktor yang berperan sekaligus:

  • Tunda Monitor / TV - Beberapa TV modern memiliki penundaan output gambar lebih dari 100ms. Ini disebabkan pasca pemrosesan gambar, buffering, filter, dll. Di sini Anda dapat melihat perbandingan TV CRT dan LCD dengan latensi tinggi. Biasanya, produsen monitor menunjukkan kecepatan matriks dalam spesifikasi, mengacu pada kecepatan pergantian warna, tetapi ini tidak harus dilakukan dengan keterlambatan dalam menghasilkan gambar.

    Satu sinyal analog dari set-top box di dua televisi. Ada penundaan yang signifikan pada TV LCD dibandingkan dengan CRT.
  • Penundaan komputer - konsol game atau komputer dengan emulator tidak memproses sinyal secara instan, itu membutuhkan waktu. Komputer perlu menerima sinyal dari perangkat input, memprosesnya dan menampilkan gambar di layar. Penundaan ini juga diperkenalkan oleh sinkronisasi vertikal gambar ketika ditampilkan di layar. Di sini , pengembang RetroArch mencoba menyelesaikan masalah ini.

    Demonstrasi penundaan besar pada emulator. Video Denis Major
  • Keterlambatan Pengontrol - Perangkat input juga dapat menyebabkan penundaan. Misalnya, jika terhubung ke bus USB yang dimuat, melalui Bluetooth, dll.

Emulator


Semua orang ingin bermain di perangkat keras modern, TV normal dan monitor dengan HDMI, dan juga menjalankan semua game yang mungkin pada satu perangkat. Untuk ini, emulator dari konsol populer yang berjalan pada komputer X86 atau ARM biasa digunakan. Inilah yang paling populer:

Retroarch



Emulator paling populer dan canggih. Mampu meniru PlayStation1, SNES, NES, GameBoy, Sega Genesis / CD dan konsol lainnya. Ini bekerja pada OS desktop Windows, Linux, MacOS dan pada konsol modern Xbox, Android, PlayStation2 / 3/4 / Vita, Nintendo Wii / Switch dan lainnya . Berdasarkan itu, kit distribusi Recallox yang populer dibuat .⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

Openemu


gambar
Emulator yang sangat nyaman dan sederhana untuk macOS. Ini mendukung sebagian besar konsol populer dan memiliki galeri permainan yang nyaman diurutkan berdasarkan platform. Out of the box, mendukung playstation 4 gamepad melalui bluetooth. Ini lebih rendah dalam kemampuan untuk RetroArch, tetapi menurut selera saya itu jauh lebih nyaman untuk digunakan. Untuk pengukuran saya, saya akan menggunakannya, karena langsung berfungsi pada macOS tanpa melakukan penghancuran dengan pengaturan gamepad. ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

Prosedur pengukuran


Cara paling terjangkau untuk mengukur keterlambatan adalah merekam di layar video dan saat Anda menekan tombol joystick. Smartphone modern dengan mudah merekam video pada 240 FPS atau lebih, yang cukup untuk pengukuran. Untuk merekam secara akurat saat menekan, Anda dapat menyolder LED ke kontak tombol, yang akan menyala pada saat menekan. LED menyala dalam nanodetik, yang memungkinkan Anda menangkap momen penekanan dengan akurat.

Brunnis dari forum proyek libretro telah melakukan banyak penelitian tentang input lag. Saya menganggap studinya sebagai yang paling lengkap dan objektif.

gambar
Gamepad USB dengan LED patri untuk menangkap momen tombol ditekan

gambar
Tombol tidak ditekan

gambar
Tombol ditekan

gambar
Animasi di layar dimulai setelah 24 frame (100 milidetik)

Rumus perhitungan


Dalam satu detik, 1000 milidetik.
Kamera ponsel mengambil gambar pada 240fps.
Jadi 1 frame video = 1000/240 = 4.16ms.

Penting juga untuk mempertimbangkan frame rate di mana monitor dan komputer berjalan. Misalnya, untuk mode operasi 30fps, satu frame monitor adalah 33ms, dan untuk 60fps - 17ms. Ini harus diperhitungkan, karena waktu antara frame tidak boleh kurang dari nilai-nilai ini, yang berarti bahwa peristiwa yang terjadi selama periode pembaruan frame pada monitor akan dibulatkan ke frame terakhir.

Di sini saya tidak akan memberikan semua hasil pengukuran Bung, yang tertarik untuk menyarankan untuk berkenalan sendiri.
Hal utama yang perlu diingat: konsol asli memiliki penundaan rata-rata 50 hingga 70 ms, tergantung pada konsol dan mode PAL / NTSC. Emulator PC yang disetel dengan baik menambah penundaan 60-80ms, tergantung pada platform yang ditiru. Emulator pi raspberry dapat memiliki total keterlambatan hingga 150 ms.

Pencarian saya


Sebagai seorang anak, saya memiliki Sega Mega Drive, itu adalah permainannya yang menyebabkan nostalgia terkuat. Karena itu, saya akan menjelaskan pencarian saya untuk pengaturan yang nyaman khusus untuk konsol ini. Saya ingin segera mengatakan bahwa penelitian saya tidak mengklaim sebagai akurasi pengukuran absolut.

Persyaratan saya:

  • Gamepad nirkabel - Geeks konsol dapat mengutuk saya, tetapi saya ingin bermain dengan nyaman sambil duduk di sofa dalam posisi apa pun. Gamepad kabel sangat merepotkan, semua orang menyakiti mereka dan Anda tidak akan bermain untuk waktu yang lama.
  • Output melalui HDMI atau DisplayPort - tidak ada input analog pada monitor saya, jadi saya tidak dapat membeli Sega Mega Drive yang asli. Adaptor USB untuk pengambilan video analog memperkenalkan penundaan dan tidak nyaman. Saya juga tidak ingin membeli TV CRT terpisah untuk set-top box

Macbook + Dualshok 4 + OpenEMU


Saya sangat suka gamestation dari Playstation 4, saya anggap itu yang paling nyaman dari gamepad yang ada. Ini dapat bekerja baik melalui bluetooth dan melalui USB. Sepenuhnya didukung di OpenEMU di luar kotak tanpa pengaturan.


Terlepas dari semua kenyamanan OpenEMU, masalah utamanya adalah penarikan FPS dalam mode layar penuh. Saya tidak yakin apa alasannya, dan mungkin ini sedang diperbaiki, tetapi itu tidak berhasil bagi saya. Karena itu, saya bermain dalam mode berjendela.


Antarmuka emulator OpenEMU. Semua game diurutkan berdasarkan platform.

Pengukuran


Saya tidak ingin memisahkan gamestation dari Playstation untuk mensolder LED, jadi saya harus melakukan hitung mundur saat tombol ditekan oleh suara. Kesalahan metode ini sekitar 8-10ms. Monitor menggunakan LG 24UD58 dalam mode 4K @ 60fps yang terhubung ke MacBook melalui DisplayPort. Game Contra Hard Corps.


Penundaan pada MacBook dengan pengontrol Dualshock4 yang terhubung melalui bluetooth adalah sekitar 150ms. Ini banyak sekali!
MacBook + Dulashock memberikan penundaan sekitar 150 ms. Ini banyak untuk permainan yang nyaman, penundaan seperti itu nyata dan platformer hardcore seperti Contra Hard Corps bermain tidak nyaman.
Terlepas dari kenyataan bahwa keterlambatan dalam bungkusan seperti itu tidak bisa dimaafkan besar, itu masih layak mendapatkan hak untuk hidup. Karena itu cukup untuk melempar gamepad ke dalam ransel ke laptop, dan mendapatkan konsol game di mana saja. Bahkan sebelum pengukuran, jelas bagi saya bahwa ini bukan pilihan terbaik, dan saya melanjutkan pencarian.

Klon Sega Genesis


Sekarang banyak klon bajakan dari konsol retro dengan game yang sudah diinstal dijual. Beberapa dari mereka terbuat dari kotak set-top Android dengan emulator konsol di dalamnya, yang berarti mereka mengalami masalah yang sama dengan penundaan. Tetapi beberapa menjanjikan konsol penuh tanpa emulator . Saya menemukan konsol ini di Avito untuk memotong: model retrogenesis.ru Retro Genesis HD Ultra. Mereka menulis di situs bahwa ini bukan emulator, tetapi di dalamnya sebenarnya adalah konsol perangkat keras. Ada game yang sudah diinstal sebelumnya dan kemampuan untuk memasukkan kartrid. Pada saat yang sama, ada output HDMI dan gamepad nirkabel!


Gamepad nirkabel


Kebanyakan saya terganggu oleh gamepad yang beroperasi pada 2.4GHz. Mengetahui masalah bluetooth dan WiFi di kisaran ini, hal pertama yang saya coba adalah mengukur keterlambatan gamepad itu sendiri. Konsol mendukung koneksi simultan gamepad berkabel dan nirkabel. Ternyata bagian nirkabel dibuat menggunakan modul terpisah, yang menutup kontak dengan cara yang sama seperti gamepad kabel. Faktanya, ini mengemulasi kabel yang biasa dengan pinout yang sama.

gambar
Modul radio yang mengemulasi klik gamepad kabel

Saya menghubungkan probe osiloskop 1 ke LED pada pengontrol dan yang lainnya ke pin yang sesuai dengan tombol Atas pada konsol. Ketika sinyal diproses oleh modul radio, itu mensimulasikan keystroke, dan saya akan melihatnya di probe 2. Dengan membandingkan perbedaan waktu antara sinyal 1 dan 2, saya bisa sangat akurat mendapatkan penundaan yang ditambahkan oleh gamepad nirkabel. Pada osiloskop, skala satu sel adalah 5ms, yang berarti bahwa penundaan gamepad nirkabel adalah 25ms.


Perbandingan sinyal pada gamepad dan konsol


Modul nirkabel menambahkan penundaan 25ms

Pengukuran



Menunda Sega Retro Genesis sekitar 70ms

Mengurangi 25ms keterlambatan modul radio, ternyata konsol itu sendiri memiliki keterlambatan 50ms, yang sesuai dengan Sega asli. Saat menghubungkan gamepad kabel, penundaan jelas akan kurang dari 25 ms. Secara umum, gameplay terasa seperti di konsol asli, dan saya puas. Hanya ketidakmampuan untuk mengunduh gim saya (ROM) yang membuat saya kesal, tetapi saya akan mencoba menyelesaikan masalah ini dengan kartrij yang dapat ditulis ulang, atau mencoba mencari sendiri kesempatan untuk mengunggah gim ke drive flash bawaan.

Kesimpulan


Pengukuran saya tidak memperhitungkan keterlambatan output monitor, tetapi semua pengukuran dilakukan pada monitor yang sama, sehingga tidak mempengaruhi hasil. Setiap pengukuran saya ulangi 10 kali, kadang-kadang mendapatkan bacaan sekitar 4 frame, yaitu 16ms. Saya percaya bahwa intinya adalah keterlambatan sinkronisasi vertikal ketika membentuk gambar pada konsol.

Secara umum, saya berpikir bahwa pengukuran saya memberikan gambaran umum tentang penundaan pada dua pengaturan dan mungkin bermanfaat bagi mereka yang memilih metode.

Opsi Runahead di RetroArch


Setahun yang lalu, pengembang RetroArch mengumumkan bahwa mereka mencapai penundaan lebih sedikit pada emulator mereka daripada pada konsol aslinya. Saya sendiri belum mencoba opsi ini, tetapi harus diingat.

Referensi


Terima kasih kepada Denis Major untuk penelitiannya. Berkat video ini, saya pertama kali menemukan bahwa masalahnya bukan pada fisika permainan yang dimodifikasi, tetapi pada keterlambatan input.

Banyak penelitian tentang penundaan antar platform .

Studi lain .

Pro Hux Space Neuron



Dalam Hackspace Neuron kami, kami secara teratur memainkan konsol retro, membalikkan setrika, dan melakukan banyak hal lainnya. Bersama kami Anda dapat menggunakan besi solder, osiloskop, penganalisis frekuensi, dan mengobrol dengan kutu buku yang lucu. Datang berkunjung.

Semua berita tentang kehidupan Huxpeys di saluran telegram: @neuronspace

Source: https://habr.com/ru/post/id446990/


All Articles