Retraso de entrada en consolas y emuladores retro



TL; DR El artículo describe el conocido problema de retraso de entrada, que se manifiesta al intentar jugar juegos antiguos en hardware moderno: emuladores de consolas retro, gamepads bluetooth, etc. A veces, los retrasos son tan grandes que se hace imposible jugar. Describiré mi forma de encontrar una configuración aceptable para ejecutar mis juegos favoritos.

Con la ola de popularidad de las computadoras de placa única RaspberryPi, OrangePi muchos conocidos se compraron paquetes de ellas. Sin decidir qué hacer con ellos, comenzaron a esculpir a partir de ellos la consola retro basada en el emulador RetroArch y la distribución Recallbox. Cuando traté de jugar mis juegos favoritos de la infancia en esto, me sorprendió: " ¿Cómo podría jugar esto? " La física de los juegos parecía de alguna manera incorrecta, la sensación era asquerosa. Después de un tiempo, me dijeron que todo el punto es el retraso de entrada, que a primera vista no parece un retraso, es decir, como otra física.

Resultó que el problema se conoce desde hace mucho tiempo entre los geeks de la consola y se está investigando activamente. Analizaré los estudios de otras personas e intentaré medir el retraso de mi configuración.

Cual es el problema


El retraso de entrada es el tiempo desde el momento en que se presiona el botón del controlador hasta la reacción del personaje en la pantalla. Aquí muchos factores juegan un papel a la vez:

  • Retardo de monitor / TV : algunos televisores modernos tienen un retraso de salida de imagen de más de 100 ms. Esto se debe al procesamiento posterior de la imagen, almacenamiento en búfer, filtros, etc. Aquí puede ver una comparación de televisores CRT y LCD con alta latencia. Típicamente, los fabricantes de monitores indican la velocidad de la matriz en las especificaciones, refiriéndose a la velocidad de cambio entre colores, pero esto no tiene que ver con el retraso en la salida de la imagen.

    Una señal analógica del decodificador en dos televisores. Hay un retraso significativo en el televisor LCD en comparación con CRT.
  • Retraso de la computadora : una consola de juegos o una computadora con un emulador no procesa la señal al instante, lleva tiempo. La computadora necesita recibir una señal del dispositivo de entrada, procesarla y mostrar la imagen en la pantalla. El retraso también se introduce por la sincronización vertical de la imagen cuando se muestra en la pantalla. Aquí , los desarrolladores de RetroArch intentan resolver este problema.

    Demostración de un gran retraso en el emulador. Video Denis Major
  • Retraso del controlador : el dispositivo de entrada también puede introducir un retraso. Por ejemplo, si está conectado a un bus USB cargado, a través de Bluetooth, etc.

Emuladores


Todos quieren jugar en hardware moderno, televisores y monitores normales con HDMI, y también ejecutar todos los juegos posibles en un dispositivo. Para esto, se utilizan emuladores de consolas populares que se ejecutan en computadoras X86 o ARM comunes. Aquí están los más populares:

Retroarch



El emulador más popular y avanzado. Capaz de emular PlayStation1, SNES, NES, GameBoy, Sega Genesis / CD y otras consolas. Funciona en sistemas operativos de escritorio Windows, Linux, MacOS y en consolas modernas Xbox, Android, PlayStation2 / 3/4 / Vita, Nintendo Wii / Switch y otros . En base a esto, se fabrica el popular kit de distribución Recallox.

Openemu


imagen
Emulador muy conveniente y simple para macOS. Es compatible con las consolas más populares y tiene una cómoda galería de juegos ordenada por plataforma. Fuera de la caja, admite gamepads de playstation 4 a través de bluetooth. Es inferior en capacidades a RetroArch, pero para mi gusto es mucho más conveniente de usar. Para mis mediciones, lo usaré, ya que funciona inmediatamente en macOS sin perder la configuración del gamepad. ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

Procedimiento de medición


La forma más económica de medir el retraso es grabar en la pantalla de video y el momento en que presiona el botón del joystick. Los teléfonos inteligentes modernos graban fácilmente videos a 240 FPS o más, lo cual es suficiente para realizar mediciones. Para registrar con precisión el momento de presionar, puede soldar el LED a los contactos del botón, que se iluminará en el momento de presionar. El LED se ilumina en nanosegundos, lo que le permite capturar con precisión el momento de presión.

Brunnis del foro del proyecto libretro ha investigado mucho sobre el retraso de entrada. Considero que sus estudios son los más completos y objetivos.

imagen
Gamepad USB con LED soldado para capturar el momento en que se presiona el botón

imagen
Botón no presionado

imagen
Botón presionado

imagen
La animación en pantalla comienza después de 24 cuadros (100 milisegundos)

Fórmula de cálculo


En un segundo, 1000 milisegundos.
La cámara del teléfono dispara a 240 fps.
Entonces 1 fotograma de video = 1000/240 = 4.16ms.

También es importante tener en cuenta la velocidad de fotogramas a la que se ejecutan el monitor y la computadora. Por ejemplo, para un modo de funcionamiento de 30 fps, un cuadro del monitor será de 33 ms y de 60 fps a 17 ms. Esto debe tenerse en cuenta, ya que el tiempo entre fotogramas no puede ser inferior a estos valores, lo que significa que los eventos que ocurran durante el período de actualización de fotogramas en el monitor se redondearán al último fotograma.

No daré aquí todos los resultados de las mediciones del tipo, que está interesado en sugerir que se familiaricen por su cuenta.
Lo principal para recordar: las consolas originales tenían un retraso promedio de 50 a 70 ms, dependiendo de la consola y el modo PAL / NTSC. Un emulador de PC bien ajustado agrega 60-80 ms de retraso, dependiendo de la plataforma emulada. El emulador raspberry pi puede tener hasta 150 ms de retraso en total.

Mis búsquedas


Cuando era niña, tuve un Sega Mega Drive, son sus juegos los que causan la nostalgia más fuerte. Por lo tanto, describiré mi búsqueda de una configuración cómoda específicamente para esta consola. Quiero decir de inmediato que mi investigación no pretende ser una precisión de medición absoluta.

Mis requisitos:

  • Gamepads inalámbricos : los geeks de consola pueden condenarme, pero quiero jugar cómodamente mientras estoy sentado en el sofá en cualquier posición. Los gamepads con cable son terriblemente inconvenientes, a todos les duele y no jugarás durante mucho tiempo.
  • Salida a través de HDMI o DisplayPort : no hay entradas analógicas en mi monitor, por lo que no puedo comprar el Sega Mega Drive original. Los adaptadores USB para captura de video analógico presentan su retraso y son inconvenientes. Tampoco quiero comprar un televisor CRT separado para el decodificador

Macbook + Dualshok 4 + OpenEMU


Realmente me gusta la estación de juegos de Playstation 4, considero que es la más conveniente de las consolas de juegos existentes. Puede funcionar tanto a través de Bluetooth como a través de USB. Totalmente compatible con OpenEMU listo para usar sin configuraciones.


A pesar de todas las ventajas de OpenEMU, su principal problema es la reducción de FPS en modo de pantalla completa. No estoy seguro de cuál es la razón, y tal vez esto está solucionando, pero no funcionó para mí. Por lo tanto, juego en modo ventana.


Interfaz de emulador OpenEMU. Todos los juegos están ordenados por plataforma.

Medidas


No quería disociar la estación de juegos de la Playstation para soldar el LED, así que tuve que hacer la cuenta regresiva del momento en que el sonido presionó el botón. El error de este método es de aproximadamente 8-10 ms. El monitor utiliza el LG 24UD58 en modo 4K @ 60fps conectado al MacBook a través de DisplayPort. Juego Contra Hard Corps.


El retraso en el MacBook con un controlador Dualshock4 conectado a través de bluetooth es de aproximadamente 150 ms. Esto es mucho!
MacBook + Dulashock ofrece aproximadamente 150 ms de retraso. Esto es mucho para un juego cómodo, tal retraso es notable y los juegos de plataformas hardcore como Contra Hard Corps juegan incómodos.
A pesar de que la demora en tal paquete es imperdonablemente grande, todavía merece el derecho a la vida. Ya que es suficiente arrojar un gamepad en la mochila a la computadora portátil y obtener una consola de juegos en cualquier lugar. Incluso antes de las mediciones, estaba claro para mí que esta no era la mejor opción, y continué la búsqueda.

Clon Sega Genesis


Ahora se venden muchos clones piratas diferentes de consolas retro con juegos preinstalados. Algunos de ellos están hechos de decodificadores de Android con emuladores de consola en el interior, lo que significa que sufren los mismos problemas con los retrasos. Pero algunos prometen una consola completa sin un emulador . Encontré esta consola en Avito para segar: modelo retrogenesis.ru Retro Genesis HD Ultra. Escriben en el sitio que esto no es un emulador, sino que en realidad hay una consola de hardware. Hay juegos preinstalados y la capacidad de insertar cartuchos. ¡Al mismo tiempo, hay una salida HDMI y gamepads inalámbricos!


Gamepads inalámbricos


Sobre todo me molestaban los gamepads que funcionaban a 2.4GHz. Conociendo los problemas de Bluetooth y WiFi en este rango, lo primero que intenté fue medir el retraso de los gamepads. La consola admite la conexión simultánea de gamepads con cable e inalámbricos. Resultó que la parte inalámbrica se realizó usando un módulo separado, que cierra los contactos de la misma manera que un gamepad con cable. Es decir, de hecho, emula un cable ordinario con el mismo pinout.

imagen
Un módulo de radio que emula clics de gamepad con cable

Conecté la sonda de osciloscopio 1 al LED en el controlador y el otro al pin correspondiente a la tecla Arriba en la consola. Cuando el módulo de radio procesa la señal, simula una pulsación de tecla y la veré en la sonda 2. Al comparar la diferencia de tiempo entre las señales 1 y 2, pude obtener con mucha precisión el retraso que agrega el gamepad inalámbrico. En un osciloscopio, la escala de una celda es de 5 ms, lo que significa que el retraso de los gamepads inalámbricos es de 25 ms.


Comparación de señales en el gamepad y la consola


El módulo inalámbrico agrega un retraso de 25 ms

Medidas



Retraso en Sega Retro Genesis aproximadamente 70 ms

Restando 25 ms de retraso del módulo de radio, resulta que la consola en sí tiene un retraso de 50 ms, que corresponde a la Sega original. Al conectar gamepads con cable, el retraso obviamente será menor en 25 ms. En general, el juego se siente como en la consola original, y estoy satisfecho. Solo la incapacidad para descargar mis juegos (ROM) me molesta, pero intentaré resolver este problema con un cartucho regrabable, o trataré de encontrar la oportunidad de cargar juegos en la unidad flash incorporada.

Conclusión


Mis mediciones no tienen en cuenta el retraso de salida del monitor, pero todas las mediciones se tomaron en el mismo monitor, por lo que no afecta los resultados. Cada medición que repetí 10 veces, a veces obteniendo una extensión en las lecturas de aproximadamente 4 cuadros, es decir, 16 ms. Creo que el punto es el retraso en la sincronización vertical cuando se forma una imagen en la consola.

En general, creo que mis mediciones dan una idea general de los retrasos en las dos configuraciones y pueden ser útiles para quienes eligen un método.

Opción Runahead en RetroArch


Hace un año, los desarrolladores de RetroArch anunciaron que lograron menos demoras en su emulador que en las consolas originales. No he probado esta opción, pero hay que tenerla en cuenta.

Referencias


Gracias a Denis Major por su investigación. Gracias a este video, descubrí que el problema no está en la física modificada de los juegos, sino en los retrasos de entrada.

Mucha investigación sobre retrasos en todas las plataformas .

Otro estudio

Pro Hux Space Neuron



En nuestro Hackspace Neuron jugamos regularmente consolas retro, invertimos el hierro y hacemos muchas otras cosas. Con nosotros puedes usar un soldador, un osciloscopio, un analizador de frecuencia y chatear con nerds divertidos. Ven a visitarnos.

Todas las noticias sobre la vida de Huxpeys en el canal de telegramas: @neuronspace

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


All Articles