SETUP EMULACIÓN LINUX-KMS, RETROARCH Y 15KHZ

Muy buenas

Estas navidades pienso meter mano a un proyecto que llevo tiempo aplazando. Tengo un PC con las siguientes características que importan en un setup 15khz para emulación

CPU QUAD CORE Q6600
GRÁFICA: Ati Radeon hd serie 4000

La cuestión es que quiero montar un setup sobre Linux para poder usar Retroarch en modo KMS que por lo visto es fantástico por temas de latencia y demás. He tocado poco linux, algo de Ubuntu y demás, pero no soy un experto en el sistema.

Ya se que Retroarch es un poco jodido de configuración, pero esta parte sí la conozco bien. Ya se que el interfaz RGUI va bien en 15khz, entre otros sitios lo he visto en recalbox con un Rgb-PI

Alguien ha montado algo similar? ¿Algunas consideraciones que tenga que tener en cuenta?

Hay alguna distribución así ? ya se que existe groovy arcade pero mi idea es poder usar los cores de Retroarch, sobre todo los de psx, saturn y n64 son los que me animan a montar esto, así como el MAME en última versión.

A ver los fieras del tema que estáis por aquí siempre si me podéis echar un cable para empezar
No tengo mucha idea de esto, creo entender que quieres usar un equipo modesto pero que los emuladores aprovechen hasta el último hercio (creo que un dual core seria hasta mejor, creo que mame usa solo dos cores), y lo de mejor latencia no se si te refieres a que no hay input lag en los controles o emulación, no entiendo.
Estaría muy bien un SO basado en linux y retroarch que exprimiera al máximo ese equipo modesto y asequible para dar resultados asombrosos en el mundo de la emulación y equipamiento de nuestras recreativas con sus monitores originales, prefiero un PC antes que una raspberry (rgb pi), y hasta ahora pensaba que sería lo que montaría como cerebro en mi recreativa, pero espero que este proyecto llegue a buenn puerto.
Ánimo!
Personalmente te recomiendo que uses XP para emulación, te lo dice alguien que siempre ha querido usar linux como sistema principal. Pero sin embargo, como ya has dicho, retroarch es porc- complicado de configurar para algo perfecto. Yo usaba una raspberry en mi bartop arcade y acabé sacándola a los meses y metiendo dentro un core2duo y una nvidia de estas sin ventiladores modestitas, eso tira incluso dreamcast perfecto
@KnightSayer eso mismo, un doble nucleo 64bits lo mas potente posible con la grafica mas potente posible 100% compatible con los famosos modelines a 15khz, y si a eso le sumamos SO liviano y optimizando tenemos un maquinon económico para nuestras recreativas, muy muy por encima de las modestas posibilidades de las raspberry, que tienen a su favor la sencillez, precio, y consumo eléctrico, 10w contra los 300w minimo de un PC.
Otrof1stro escribió:@KnightSayer eso mismo, un doble nucleo 64bits lo mas potente posible con la grafica mas potente posible 100% compatible con los famosos modelines a 15khz, y si a eso le sumamos SO liviano y optimizando tenemos un maquinon económico para nuestras recreativas, muy muy por encima de las modestas posibilidades de las raspberry, que tienen a su favor la sencillez, precio, y consumo eléctrico, 10w contra los 300w minimo de un PC.


Bueno, yo veo las raspberry más enfocadas a sistema multimedia de salón, con kodi, retransmisión de juegos desde otro pc con la api de nvidia y algún emulador.

Por otra parte hay pc que con menos consumo sirven para ésto, y de hecho hasta más barato que una raspberry, anda que no hay ordenadores con pentium 4 en apps y páginas de segunda mano xD
Depende totalmente del uso que quieras y la potencia que requieras
( También tienes una custom arcade? [sonrisa] )
Custom no, original.
Lo que busco es sistema potente/económico, por eso lo de la ventaja de precio y consumo de la raspberry (yo las veo mas para emuladores que para tv box), pero prefiero algo mas potente como el PC, aunque sea mas caro y consuma mas, descarto piv o trasto prehistórico.
1-Instalas una distro sin escritorio (debian en modo texto por ejemplo).
2-Le instalas retroarch desde los repositorios de la propia distro
3-Le metes un edid especial, para que sepa que el monitor que vas a usar es de 15khz. Esto es lo más complicado. Puedes compilarlo tu mismo o buscar uno por internet. En este enlace explican como compilar pero también tienes uno ya compilado para bajar
http://filthypants.blogspot.com.es/2014 ... nitor.html
4-Ejecuta retroarch. La primera vez se verá fatal porque el menu moderno no está pensado para esas resoluciones. Sales y editas el fichero de configuración para usar el menú clásico (rgui).
@fogueman: EL fogueman de emulatronia? Si es así, es un honor coincidir contigo [beer]

Ahora mismo, Lakka corre sobre KMS/DRM, así que esa distro te debería valer si arranca sobre tu máquina.
Si no, instálate la última debian (sin escritorio, claro) y compilas el RetroArch contra KMS/DRM, y va perfecto (efectivamente es imbatible en el tema de las latencias y puedes tener un sistema que arranque a RetroArch en menos de un segundo).
No te olvides de poner max_swapchain a 2 en lugar de 3, para que el bloqueo por vsync sea inmediato. Esto funciona en KMS/DRM y en los tres backends soportados por la Raspberry Pi, pero vamos, que en un PC va también.
Con max_swapchain=2 sobre KMS/DRM vas a tener la menor latencia posible. Menos que eso ya no se puede (o depende de otras cosas como la TV o el mando, pero en cuanto al sistema de vídeo ya no se puede bajar más).

http://www.lakka.tv
@atreyu_ac el mismo xDDD

a ver, pero todo esto para ir a 15khz como lo hago??? Lakka funciona de sobra en esa máquina con los cores que quiero, pero el problema es sacar las resoluciones nativas o las super resoluciones
@fogueman
Para 15khz tienes que hacer lo que te he dicho arriba. Eso sí, olvídate de tener varias resoluciones, tendrás sólo una. Lo recomendable es 1920x240 y luego ajustar el viewport en los juegos que tengan menos resolución vertical. En el enlace que te he puesto lo explican.

@atreyu_ac
En debian no hace falta compilar retroarch, la versión que hay en los repositorios ya viene preparada para kms.
fogueman escribió:@atreyu_ac el mismo xDDD

a ver, pero todo esto para ir a 15khz como lo hago??? Lakka funciona de sobra en esa máquina con los cores que quiero, pero el problema es sacar las resoluciones nativas o las super resoluciones


Pues la cosa es que cambiar la resolución una vez arrancado el sistema no tiene mucho sentido en displays modernos, que sólo tienen una resolución física nativa y lo demás es reescalado cutremente hacia arriba y hacia abajo, así que si algún programa o API cambia la resolución física (dios no lo quera) en sistemas GNU/Linux modernos, está asumiendo un paradigma antiguo que ya no tiene sentido en la mayoría de los casos, ya que en los sistemas actuales lo que se hace es usar siempre y solamente el modo nativo del monitor, y escalar cualquier cosa de resolución inferior a esa resolución nativa usando el hardware (esto lo hace RetroArch usando OpenGL_ES sobre KMS/DRM, las SDL2 igual, etc...)

Ahora bien, como tú lo que quieres es correr los emuladores en un monitor viejuno de 15Hz, lo que deberías hacer es arrancar el sistema en el modo de vídeo viejuno que desees (suponiendo que la infraestructura KMS/DRM para tu hardware lo soporte, que hay cada mondongo ahí...), pasándole al kernel los parámetros de ese modo (y cruzando los dedos para que funcione).
https://wiki.archlinux.org/index.php/ke ... s_and_EDID

Puedes, como puedes ver, especificar el conector, resolución, bpp y un montón de mierdas más que no valen para nada, pero es así como funciona el asunto.
Para pasarle parámetros al kernel se los tienes que enchufar en el fichero de cofiguración del bootloader que uses, y la localización de ese fichero depende de la distro.
Aquí te dejo la info sobre Debian:
https://wiki.debian.org/Grub

Mi consejo es que no te calientes la cabeza y corras las cosas de RetroArch sobre KMS/DRM con max_swapchan=2, por HDMI con un shader de scanlines sencillito y fuera, pero yo qué sé, anda que no hago yo experimentos raros :D
@fogueman
No poder cambiar la resolucion al vuelo es un callejon sin salida en emulacion a 15khz

Sobre el tema del input lag, que metodo piensas o usas para medirlo?
theelf escribió:@fogueman
No poder cambiar la resolucion al vuelo es un callejon sin salida en emulacion a 15khz

Sobre el tema del input lag, que metodo piensas o usas para medirlo?

Estoy de acuerdo contigo, pero si sólo vas a emular consolas con 1920x240 y 1920x224 ya tienes prácticamente todo cubierto. Y si sólo usas 1920x240 y ajustas el viewport para las consolas de 224 la imagen es prácticamente perfecta (no es perfecta por tener bandas negras arriba y abajo). Y hay muchísimos arcades que también usan esas dos resoluciones.

Lo digo porque hace poco cambié mi viejo crt de pc por otro más moderno (también crt) y al crear el modeline de 3840x448 me dijo que eso eran 29khz y no podía mostrar la imagen... :(

Así que ahora mismo para emular uso una resolución única: 3840x480+scanlines y tan feliz.
@Ronbin

El tema es que al final por A o por B, puedes pegarte contra la pared, mismamente, juega al Sonic 2 en modo versus o el Battle Cars, el emulador necesita cambiar a 480i al vuelo. Lo mismo con varios juegos de super, que tienen partes a 480i o el rr racing q es todo entrelazado, etc

Luego q tendras rom pal, necesitas 288p a 50hz


Si seguro, que en realidad, con por ejemplo 1280x240 y ajustar el viewport tienes el 99% de juegos de consolas perfectamente cuadrados, pero es que sinceramente, si ese 1% ya me falla, ya no tengo algo bien armado, eso me pasa a mi


Eso solo consolas, en arcades hay muchisimos que usan mas de 240p, los juegos de DOS en general cambian resoluciones, amiga, etc si incluimos eso en la emulacion, ya nos fallaran muchas cosas con una resolucion fija


Luego ya es personal, yo la verdad que aun sigo necesitando emuladores independientes, porque me gusta poder usar mis CDs originales por decirte algo, entre otras cosas. Aun no puedo remplazar kega fusion, ni neogeocdz, etc



Sobre los 448, lo que tenes es que jugar con el frontporch, BackPorch, etc en mi PC q tambien esta a 31khz, tengo todas las resoluciones sin problema a 31khz

Imagen
theelf escribió:Sobre los 448, lo que tenes es que jugar con el frontporch, BackPorch, etc en mi PC q tambien esta a 31khz, tengo todas las resoluciones sin problema a 31khz

La verdad es que estos conceptos nunca los he tenido demasiado claros. Pero bueno, ya me has picado, estas navidades me pongo a tunearlo XD
@Ronbin

Yo hasta fin de anio estoy en lationoamerica viendo la familia de mi mujer, asi q estoy leeejos de mi PC con emuladores, pero si tenes dudas, y puedo ayudarte, a partir del 2 o 3 de enero, encantado, te mando mis modelines, etc
theelf escribió:@fogueman
No poder cambiar la resolucion al vuelo es un callejon sin salida en emulacion a 15khz

Sobre el tema del input lag, que metodo piensas o usas para medirlo?



Hola, theelf, te esperaba en el hilo, a ver si me puedes aclarar las cosas

Input lag: no tengo intención de medirlo pero quiero probar el tema del KMS más que nada porque tengo entendido (no por mi experiencia personal) que es lo que va mejor en este asunto

Lo de no poder cambiar la resolución al vuelo: te refieres a que el Retroarch no puede cambiar de resolución de un sistema a otro? o al caso de los sistemas que cambian de 480i a 240p, que cacharros como el framemeister van mal en esos casos?

Por lo que yo tengo visto hasta ahora, se puede hacer con ubuntu todo esto, no se si es verdad o no
@fogueman

Sinceramente la verdad que no soy muy fan de retroarch, cada vez lo he utilizado, algo me ha tirado para atras, aun asi, he donado algun codigo, especialmente en el emu de PS1, pero tampoco es q lo use a menudo

Dicho esto, que yo sepa, retroarch no puede cambiar resoluciones dentro de un juego, al menos lo que he probado yo, solo podes asignar resoluciones por core o juego fijas

O sea, que si el juego comienza a 240p y luego salta a 480i, se te quedara todo a 240p fijos

Esto me gustaria corroborarlo por alguien que use retroarch mas a menudo, a ver si me equivoco, o ya lo han implementado


Sobre el input lag, ya algun tiempo atras, 2015 creo, medi el input lag de tres setups, una megadrive original, windows XP+kega y linux kms+retroarch, creo q probe dos cores de megadrive, no recuerdo exacto

Conecte un cable del mando de megadrive a una tecla del teclado, asi cuando presionaba "A" al mismo tiempo llegaba la orden a la MD y al teclado

Con el rom 240p test de urbina, medi a travez de la camara de foto, el input lag de uno y otro. Sinceramente, entre XP y la Megadrive original, la diferencia era marginal, hablo de bastante menos de 16ms, en el caso de linux-kms tenia al menos 48ms de delay que no pude bajar de ninguna manera, depende el core creo era algo mas incluso

No se en linux, los drivers de video, algun error de configuracion, lo que sea, o simplemente no es tan bueno... que se yo, al final decidi que XP+ddraw era lo mejor

Tu mismo, haz las pruebas, y decide que es lo que te ira mejor, estamos al 2017, seguro se ha actualizado


Para mi lo importante es usar los refrescos correctos, por ejemplo, si vas a emular NES NTSC, no uses XXx240 a 60hz, crea un modeline que sea a 60.0985hz y si emulas CPS1 que sea a 59.63hz, etc
fogueman escribió:
Lo de no poder cambiar la resolución al vuelo: te refieres a que el Retroarch no puede cambiar de resolución de un sistema a otro? o al caso de los sistemas que cambian de 480i a 240p, que cacharros como el framemeister van mal en esos casos?

Por lo que yo tengo visto hasta ahora, se puede hacer con ubuntu todo esto, no se si es verdad o no

Simplificando, en linux tienes dos métodos para dibujar gráficos:
1-Xorg: Es lo que se ha utilizado siempre y usan todas las distros para dibujar el escritorio, además de gestionar pantalla, teclado y ratón. Es una capa que añadimos al sistema y por lo tanto añadimos input lag.
Imagen
2-KMS: El kernel se encarga de dibujar directamente, sin añadir ninguna capa, por lo que el input lag es menor.

En principio KMS es la opción a seguir, pero tiene un gran fallo para los que usamos monitores CRT: no puedes crear modelines personalizados. El kernel utiliza el EDID del monitor para ver que resolución tiene que usar y utiliza esa (y sólo esa). Como los monitores viejos no tienen EDID el kernel también tiene integradas un par de resoluciones típicas, pero nada de cosas raras. Y NO se pueden añadir resoluciones nuevas. Se puede hacer una pequeña "trampa" y crearte tu propio EDID con alguna super resolución, pero como he dicho, una vez arrancado el sistema sólo utilizará esa.

Resumiendo: si quieres crear modelines y andar cambiando resoluciones olvídate de KMS
@fogueman Yo abrí un hilo un mes antes a este tuyo, en él exponía algo muy similar pero en mi caso quería una distribución Debian con escritorio LXDE para visualizarlo en el monitor LCD y a su vez tener instalado Retroarch y Emulationstation (RetroPie) y poder visualizarlo en el CRT con unos pocos clicks de ratón para hacer el cambio de la modeline.

Aunque finalmente no me puse a ello porque no tengo ni idea y además la gráfica que está puesta en el ordenador de emulación no fue adquirida para ese propósito y no es precisamente la ideal para estos menesteres puesto que es una Nvidia GTX 260 lo cual hizo que me perdiese leyendo sobre parchear y compilar el kernel de Linux, instalar drivers Nouveau y parchearlos creo que también, compilar EDID, crear modelines... [mad]
20 respuestas