GroovyArcade + RetroArch = Pixel Perfect en CRT

Buenas tardes.

Desde mi humilde (y frío trastero) os traigo mi nuevo proyecto árcade. Estoy en proceso de construir mi propio cabinet y de momento ando experimentando en distintas áreas. como la Pandora Box, de la que compartí la imagen RetroPan. Ahora toca el turno a la distro GroovyArcade. Una distribución linux destinada a convertir nuestro PC en el "cerebro" de un cabinet.

El tema del GroovyArcade es que no trae por defecto el RetroArch, que para mi "ahora mismo" es la mejor alternativa para la emulación. Aquí os pongo un tutorial de como conseguí aunar GroovyArcade y RetroArch consiguiendo una resolución pixel perfect en monitores CRT. Podría hacerse en monitores LCD, pero ahora mismo no está entre mis metas.

El equipo del que parto es modesto pero suficiente para emular árcades y consolas de los 80/90:
Core2Duo E8400
4GB Ram
ATI Radeon 4350
HDD SATA 1TB

Todos mis avances también los publico en un foro destinado al mundo árcade, por si alguna vez quereis visitarnos:
https://arcadeforever.forumfree.it/?t=76311512&st=0#entry627942332

Me ha dado muchos dolores de cabeza instalar del USB Bootable a HDD en resolución para LCD. Al final opté por hacer la instalación y configuración arrancando en modo 15khz. De hecho podéis conectarla por VGA a un monitor LCD ya que se vera mejor que en el CRT, pero con un efecto gelatina.

Bien, una vez tenemos instalado GroovyArcade en el disco duro, arrancamos desde el mismo y elegimos como FrontEnd LXDE. Es un escritorio muy básico para la distro ArchLinux que monta pero nos sirve de sobra.

Inmediatamente después vamos al setup de Network y seleccionamos la interfaz que vamos a utilizar, le decimos que la configure con dhcp. Muy importante hacer esto o no tendremos red. Más adelante explico como evitar hacer esto y tener red siempre que iniciamos.

Lo primero de todo, y de forma urgente, desde el terminal lanzamos el comando:
$sudo pcmanfm

Esto nos abre el navegador de ficheros en modo root (ojo con liarla) editamos el fichero <b>/etc/pacman.conf</b>. Tendremos que descomentar la linea que indica IgnorePkg = (quitando la almohadilla) y debemos indicarle lo siguiente:
IgnorePkg = linux
Esto es muy importante, ya que en un paso posterior actualizaremos el sistema y esto evitará que modifique el kernel. Si lo modifica... adiós 15khz

Vale, ahora nos vamos a asegurar tener red cada vez que arranquemos el sistema. En el terminal debemos poner:
$sudo systemctl start dhcpcd@eth0.service
Esto hace que el servicio de dhcp se active en cada inicio. Claro está, siempre que tengamos una ip dinámica y que el puerto de red sea eth0. En caso de tener el eth1 o el wlan0 lo cambiamos por eth0 en el comando y listo.

Ahora vamos a instalar las dependencias necesarias para el RetroArch, en el terminal deberemos poner:
$sudo pacman -Sy qt5-base
Aceptamos todo lo que nos pregunte... y esperamos que descargue e instale.

Ahora vamos con el tema "jodido", actualizar el sistema y no cargarnos el kernel. Por lo que si hemos modificado el pacman.conf tendremos mucho ganado. Ponemos en consola:
$sudo pacman -Syu
Nos hará algunas preguntas y le diremos yes, salvo en la que sale después de un warning (el que hemos creado nosotros) indicando que si queremos sustituir el pkg, en esa respondemos <b>no</b>.
Cuando nos pregunte de donde coge los paquetes nos da 2 opciones, una que pone algo de lib32 y otra que pone nvidia. Ponemos la 1 que es la de lib32. No creo que importe usar una u otra... pero por si las moscas.
Pues nada a esperar un ratito que descargue e instale todos los paquetes de la distro.

Una vez termine procedemos a instalar el RetroArch, en el terminal ponemos:
$sudo pacman -Sy retroarch
Una vez termine en el apartado Games aparece el RetroArch. Podemos lanzarlo por consola:
$retroarch
Debería salirnos su interfaz xbmc pero sin iconos, cerramos.

Vamos a (habilitar en el navegador de archivos ver los archivos ocultos) /home/arcade/.config/retroarch y editamos el retroarch.cfg. Cualquier ruta que exista del tipo "/usr/..." no nos vale.
Por ejemplo si tenemos la ruta:
/usr/share/retroarch/assets
La cambiamos por
~/config/retroarch/assets
Como veis sólo cambiamos la parte /usr/share/ por ~/config/
Ya que estamos con la configuración del retroarch buscamos el siguiente parametro: menu_show_core_updater, que estará a false y lo ponemos en true.

Volvemos a lanzar retroarch:
$retroarch
Una vez abierto vamos a online updater y seleccionamos update assets, con esto ya tenemos iconos. Luego en core updater podemos descargar todos los que vayamos a necesitar. Yo en mi caso estoy con el fbalpha.

Pues ya tenemos retroarch medio funcionando, podemos ir a /home/roms y meter las roms en su carpeta correspondiente, o en el caso de FBA debemos crearla primero.

Ahora queda el tema del attract mode, que gracias a la actualización... a muerto :( . Pero podemos rescatarlo. Desde la página oficial descargamos la ultima versión para linux (va empaquetada en un tar.gz) y la descomprimimos. Supongamos que hemos hecho todo en la carpeta /home/arcade/Downloads. Para su instalación haremos lo siguiente:
$cd Downloads/attract-2.5.1
$make

Esperamos un rato a que termine de compilar
$sudo make install

Ya tenemos el attract de regreso entre los muertos, pero aún nos quedan algunas cosillas. En la carpeta de /home/arcade/Downloads/attract-2.5.1 existe una carpeta llamada config, copiamos todo menos la carpeta emulator y los 3 archivos .cfg y pegamos, sustituyendo, en /home/arcade/.attract. Ahora si tenemos nuestro flamante FrontEnd actualizado. Yo por mi parte le he metido el theme Nevato.

Ahora debemos configurar el funcionamiento del attract. Lo primero es editar el fichero de configuración de /home/arcade/.attract/attract.cfg y ver que el emulador/es que nos interesan se muestran. En mi caso, al usar FBA, no hay entrada por lo tanto creo una copiando la de mame y en display y romlist le meto FBA.
Con eso ya sabe que queremos mostrar un nuevo emulador, pero necesitamos poder lanzar nuestras roms, para eso vamos a /home/arcade/.attract/emulators y editamos la configuración del emulador que queramos. En mi caso copié el fichero MAME.cfg renombrandolo a FBA.cfg y haciendo los siguientes cambios:
En executable puse retroarch
En args puse -L /home/arcade/.config/retroarch/cores/fbalpha_libretro.so /home/roms/FBA/roms/[name]

Este argumento indica donde tenemos el core a lanzar (debe coincidir con la ruta que tenemos configurada en retroarch) y la ruta donde están localizadas las roms, [mame] es una variable que mantiene el nombre de la rom seleccionada.
En rompath puse /home/roms/FBA/roms

Con esto podremos lanzar desde atrract nuestras roms con los cores de retroarch... pero estamos aún lejos de tener el pixel perfect. Para ello debemos hacer algunos cambios más.

Lo primero debemos ir al fichero de configuración de retroarch /home/arcade/.config/retroarch/retroarch.cfg y buscar el siguiente parámetro: crt_switch_resolution, mostrará un 0, lo cambiamos por 1. Nos fijamos que en crt_swith_resolution_super muestra 2560. Esta es la máxima resolución que podrán adquirir nuestras roms en horizontal. Esto se realiza con el fin de poder usar multiplicadores enteros, con lo que no obtenemos artefactos al reescalar las roms de modo que completen la pantalla. Normalmente la relación vertical/horizontal suele ser 1/6.
Si lanzamos ahora una rom en relación de aspecto ponemos custom, integer scale lo ponemos en false y, si sabemos la resolución original la indicamos. En caso contrario nos tocará movernos viendo buscando que, entre paréntesis, muestre un numero entero de multiplicador. Eso significa que estamos en pixel perfect. En super resolución, si ponéis la horizontal a una escala 1, tendréis una imagen totalmente concentrada en el centro. Debéis empezar con multiplicadores 6.
Y lo que hago es buscar la resolución original del juego, ponerla en la vertical y en la horizontal multiplicarla por 6 y ponerla.

Vale, pues ya estamos jugando con nuestra rom en pixel perfect. Vamos a cambiar de juego... damos a esc y el sistema se bloquea. Efectivamente no se "sobrepone" a la super resolución y las X se tildan. Hay dos maneras de recuperarnos de este susto: botonazo, o usar ctrl+alt+F2 donde abriremos otra consola y podemos poner:
$reboot

Una vez reiniciados ponemos comos FrontEnd el LXDE que aún nos faltan unos ajustes para evitar el desastre. He creado un plug-in que arregla el problema. Desde mi google drive podéis descargarlo:
ResetSreen
Es el fichero ResetScreen.nut. Copiáis el fichero en la carpeta /home/arcade/.attract/plugins e inicias el attrac. Os vais a la configuración y activáis el plug-in ResetScreen (dejar en blanco el apartado emuladores y actuará en todos). Desactivar el Plug-in Res-Fix, porque no sirve para este problema y ambos chocan. Si tenéis un plug-in llamado HardReset (es en el que me baso), desactivarlo también; tampoco funciona y ambos chocan.

Bueno. Pues ya sólo queda poner el attract como FrontEnd por defecto y disfrutar de vuestro árcade pixel perfect :D . En cuando tenga un rato os subo unas fotos.

Por cierto, esto ahora mismo no está finalizado. Queda pendiente:
- Crear una configuración personalizada por rom, para no andar jugando con el reescalado. Sino que la cargue correctamente en el inicio.
- Juegos verticales... chungo lo veo salvo poniendo de lado el monitor. Todas las pruebas que he hecho o pierdo pantalla o el escalado queda feo y se pierde el pixel perfect.

Me quedarían los agradecimientos, pero han sido tantas páginas las que he visto, tantos vídeos, tanto darme cabezazos... que sólo puedo agradecerle a Xtob su recomendación de usar GroovyArcade... y a toda la gente que aporta información de forma desinteresada en la red.

Cualquier opinión/aportación será bienvenida.

Un saludo.

Vídeo con la demo de uso:


Imágenes:
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Voy a comprarme un sombrero para quitarmelo.

Emeisin

P.d. gracias
Muchas gracias, buen tuto!! [oki]
Lo del multiplicador enteros no es necesario para nada, da igual que uses 1280, que 1350 que 1820 por decir algo
Una cosa es el multiplicador de enteros y otra la super resolución. Como super resolución puedes poner, de limite, lo que quieras, pero prefiero ceñirme a lo que me dan. El multiplicador de enteros (Integer Scaler) es vital para obtener pixel perfect en un CRT (en un LCD también). Si habilitas el Integer Scaler fuerzas a la resolución a que tenga que hacerse por enteros, lo que te hace un escalado pixel a pixel, no por partes de pixel.
Por ejemplo, en el Three Wonders tenemos una resolución nativa del árcade de 384x224. En horizontal no es lo mismo meter 2304 (x6) que poner 2112(x5.5), esto genera artefactos y efectos de "agua" en scroll horizontal. Es lo que significa quedarte sin pixel perfect.
Por otra parte el uso de la super resolución viene a solventar problemas para conseguir el pixel perfect. Para tener un CRT a 15Khz tienes una resolución estándar de 640x480, al emular el juego en su resolución original (384x224) tendrías espacios negros por arriba y abajo. No te queda más que escalar, al intentar escalar en un entero x2 pues tienes 768x448. Esto te deja unas bandas negras arriba y abajo, pero te hace perder información para los laterales. Puedes desactivar el escalado por enteros... pero perderás nitidez y tendrás artefactos (cuando tenga un rato intento grabar un vídeo para que se observe la diferencia).
El tema del pixel perfect es algo que viene buscándose desde siempre y lo que más dolores de cabeza crea, por eso la importación de poder usar RetroArch, ya que con la implementación de su super resolución ha solucionado el problema.

Un saludo.
Me dan ganas de preparar un P4 que tengo apagado desde hace años, no tengo ni idea de cómo instalar todo eso, pero con este pedazo de tutorial me estoy animando, y en Linux, siempre he tenido ganas de trastear con este S.O.

Muchas gracias por el aporte.
Vassag0 escribió:El multiplicador de enteros (Integer Scaler) es vital para obtener pixel perfect en un CRT (en un LCD también)


No es vital, siquiera es necesario. Cualquier resolucion alta va bien en una TV de consumo

LCD es otra historia, ahi solo vale la nativa
theelf escribió:
Vassag0 escribió:El multiplicador de enteros (Integer Scaler) es vital para obtener pixel perfect en un CRT (en un LCD también)


No es vital, siquiera es necesario. Cualquier resolucion alta va bien en una TV de consumo

LCD es otra historia, ahi solo vale la nativa


La vida no me en ello no XD , pero voy buscando el pixel perfect. Sé que podría usar un escalado fraccionado y mucha gente no se daría cuenta... pero sólo de saberlo me revolvería por dentro (soy un maniático). En analógico (CRT) a cierta distancia es difícil de apreciar el problema, sumado a que no trabajo en un PVM ni tengo una nanao (ojala). Pero la satisfacción de ver ese pixel perfect... me quita 30 años de golpe XD.

En cuanto saque un rato hago el vídeo prometido y sacamos conclusiones ;). Ahora mismo estoy creando un CSV con todas las resoluciones originales por rom, para modificar la configuración mediante un script, del RetroArch en función de la resolución original... es un currazo tremendo. Por lo que si en las pruebas no noto la diferencia... eso que me ahorro XD.

Muchas gracias por aportar :).
Qué crack.

Tremendo aporte. Muchas gracias.

Espectacular.
Gracias,de aquí no me muevo.
Ya me liaste el invierno XD
Gran tutorial, te doy mis dies.

Me suena que en la imagen del crt-pi tenían la lista de resoluciones de los juegos arcade, podrías mirarlo o preguntarles. Aunque personalmente, teniendo groovymame no veo porque usar fba, en mi pc uso groovy para arcades y retroarch para consolas.

Lo dicho, gran trabajo
@theelf
Ya he realizado el vídeo, al ser con el móvil no se aprecia mucho... pero se notan diferencias. En persona es como el día y la noche. El pixel perfect te da una imagen exacta perfecta, cuando escalas en fraccionado aparece el efecto "agua" en el fondo, pierdes pixeles... se nota mucho: vamos que da pena. Sería como pasar de jugar con cable RGB al RF antiguo. Mañana intento subirlo.

@Ronbin
Por masoquismo XD . Realmente la idea era usar RetroArch por la posibilidad de conseguir pixel perfect con la super resolución, intentando que todo sea lo más transparente posible al usuario. Por otra parte prefiero la gestión de cores de RetroArch. Soy partidario de fbalpha y para el resto uso mame, luego el tema de consolas... todo esto queda centralizado y con la posibilidad de con un script ir cargando configuraciones por detrás.
Pero lo más importante es lo de ser masoca XD

Un saludo y gracias a todos.
@Vassag0
El tema es que tu TV va a mostrar un maximo de lineas, asi q a partir de esa cantidad, da igual la resolucion que le des, no sirve de nada

Por esa razon, no existe tal cosa como perdida de pixeles, porque simplemente, la TV va a mostrar lo mismo, ni va a ver efectos raros

Si tienes algun efecto raro, es culpa del software, no de la resolucion+TV


te lo decia,porque no vale la pena crear diferentes resoluciones para encontrar los "pixel perfect" simplemente xq eso de pixel perfect, no existe en CRT, mas alla de la diversion de crear las resoluciones, es trabajo para nada
@theelf

Aprovecho que te veo por aquí aunque haga algo de off topic para preguntarte por este cable que creo que me recomendaste alguna vez.

http://retrocables.es/tienda/index.php? ... &id_lang=4

¿Va bien para conectar mi PC a mi tele CRT? Lo digo porque en la descripción dice que es ideal para tema árcade y yo no lo quiero exactamente para eso.
@gaditanomania

Ese cable va bien para cualquier uso q quieras darle, solo q a diferencia del que lleva molex, no cambia automatico el input, asi q tendrias q hacerlo a mano. Si q cambiara a RGB
Tal como indicas, y ya he comentado, no es posible obtener más pixeles que los disponibles. Por eso la importancia de la super resolución en RetroArch.
Como ya explicaba, si tienes una horizontal de 388 pixeles, para mostrar a pantalla completa tienes que escalar.
Tienes 2 opciones:
Escalar en enteros, convertir un pixel en 2, sin la super resolución pierdes imagen.
Escalar de forma fraccionada, convertir un pixel en 1/3. No obtienes un pixel entero, sólo una parte. Cuando la pantalla tiene que mostrar esa fracción aparecen los problemas.
Es independiente al software, es el muestreo en pantalla.
Cuando programaba en binario aprietes, si querías pintar una cruz harías algo así.

Imaginemos que cada píxel tiene una grilla de 4 posiciones.
Rellenamos 2x2 pixeles.

00000000
00011000
00011000
11111111
11111111
00011000
00011000
00000000

Si la duplicas en horizontal en entero, obtienes los mismos pares. Al duplicar rellenamos 4x4 pixeles:
0000000000000000
0000001111000000
0000001111000000
1111111111111111
1111111111111111
0000001111000000
0000001111000000
0000000000000000

Si duplicas fraccionado. Aquí rellenamos 4x1/3:
000000000000000?
000000111000000?
000000111000000?
111111111111111?
111111111111111?
000000111000000?
000000111000000?
000000000000000?

El otro 1/1 se crea por interpolación del visualizador. En un objeto estático y de color plano no quedará mal. Pero en los scroll tendrás efectos no deseados.

Vamos, yo me quedo con el Integre Scale activado :)

Un saludo.
@theelf

¿Que es lo que tendría que hacer exactamente? O sea conecto todo y luego... ¿Que tengo que hacer? Disculpa mi ignorancia en el tema. Para ti es algo muy simple y tal vez te de pereza explicarlo tantas veces.

P. D: Con lo de manual creo que te refieres a configurar el PC para que saque la imagen al televisor. Pero eso ya supongo que queda configurado de forma permanente.
@Vassag0
A lo q iba es q no hay forma q veas mal el scroll, porque simplemente tu TV mostrara lo mismo sea 1350, 1920 o 1672

mas o menos, el maximo que he logrado ver correctamente en una TV de consumo son 550 lineas, a partir de ahi, jamas he probado una sola TV, y eso q han pasado muchas por mis manos, q mostrara mas. Pero si al contrario, una sony de 14" q tengo por casa, le cuesta llegar a las 400 lineas

Si ves mal el scroll, es porque tienes algo mal en software, haz la prueba con una grilla, o tu TV es de esas HDTV que son capaces de mostrar mas

En mi CRT a 31khz de 14" hasta unas 1200-1300 lineas aun las muestra, ahi si tengo q ocuparme de escalar bien o se nota el tearing



@gaditanomania

Lo q digo, es q con ese cable USB, tendras q cambiar tu mismo de TV a AV1 o AV2 depende si tienes uno o dos scart, sea con el mando o con algun boton del panel

A RGB ya conmuta bien, xq eso ya lo cubre los 5v del USB
@theelf

Ah bueno pensé que era otra cosa. Si mi tele tiene 3 salidas, una de ellas Rgb.¿En esa sería conveniente conectarlo para sacar mejor imagen?

Por lo demás entiendo que no hay nada más que hacer aparte de usar algún programa para las resoluciones, ¿no?

Muchas gracias crack.
@theelf
Efectivamente no vas a ver más resolución que las líneas que entrega la TV, pero la super resolución no es para eso.
Cómo te comentaba es para obtener múltiplos enteros de la imagen, de modo que no tengas fraccionados. En ese caso entra en juego la interpolación de pixeles y es lo que fastidia el scroll, ya que la interpolación en movimiento... No hay software que la mejore.
La super resolución funciona creando una horizontal, ficticia, hasta por ejemplo 2560 pixeles. Pero la ajusta en los 640 pixeles de máximo: realiza un downscaling, el cual no genera artefactos ni "aguas" en el scroll.
Tener ese margen te permite encontrar un multiplicador entero, no hay que inventar pixeles. Evidentemente no muestra una anchura de más de 640 pixeles, porque en eso consiste la super resolución. Es una buena manera de manejarte con enteros y tener pixel perfect.
Te recomiendo que hagas pruebas y lo comprobarás en persona, la diferencia es notable.
He probado en varios CRT, todos con el mismo resultado.

En la red somos muchos los que andamos detrás del pixel perfect en CRT.

Un saludo.
gaditanomania escribió:@theelf

Ah bueno pensé que era otra cosa. Si mi tele tiene 3 salidas, una de ellas Rgb.¿En esa sería conveniente conectarlo para sacar mejor imagen?

Por lo demás entiendo que no hay nada más que hacer aparte de usar algún programa para las resoluciones, ¿no?

Muchas gracias crack.

Si tu TV tiene 3 salidas scart seguramente sea 100 Hz....pégale una patada y no mires atrás,si no es así ...crea un hilo nuevo y vamos viendo.fin offtopic
@dodi29

Tiene dos traseras scart y una lateral av. Puede que sea 100 hzs pero el caso es que se ve de p.m la verdad.

Y dejó aquí el off topic.
@Vassag0
Tienes mal por software, revisa tus configuraciones. No existe diferencias, si tienes diferencias, tienes algo mal configurado, y es eso lo q esta dando el problema
theelf escribió:@Vassag0
Tienes mal por software, revisa tus configuraciones. No existe diferencias, si tienes diferencias, tienes algo mal configurado, y es eso lo q esta dando el problema


Buenas, yo he de decir que no he notado esas diferencias, pero recuerdo haber leido que pueden existir y alguien las puede notar.

Encontrado. Mirad lo que dicen en el manual de instalación de Groovymame en esta página.

Due to the nature of CRT technology, the results with the super resolutions method are in most cases virtually the same as when generating the native modes. Nevertheless, some visible artifacts may appear in scrolling games due to non-integer horizontal scaling. These are usually hard to notice, but the user may prefer for these cases to force a particular video mode already predefined in his system.


Un gran trabajo documentando todo esto @Vassag0
theelf escribió:@Vassag0
Tienes mal por software, revisa tus configuraciones. No existe diferencias, si tienes diferencias, tienes algo mal configurado, y es eso lo q esta dando el problema


Lamento insistir, no sé si no nos estamos entendiendo:

Si no usas una escala por enteros verás mal la imagen, con artefactos en el scroll... Eso es así independientemente del software, puedes leer por la red y ver vídeos donde se explican.

Que en lugar de usar la super resolución puedes utilizar otro software para obtener un múltiplo de la resolución estándar para llegar a los 640x480... Sí, puedes usar cualquier software de escalado. Pero siempre deberás trabajar con múltiplos enteros.

Es tan sencillo como eso: es escalado de vídeo.

Lo prometido es deuda, prueba ciega usando con Integer Scaler. En un vídeo está activado (con la super resolución) y en otra desactivado... Cual diríais que se ve mejor (dentro de lo mal que se ve mi cámara XD)



También os dejo un vídeo de otro usuario que ha captado mejor el problema de no usar Integer Scaler en CRT



Creo que las mejoras de usar el Integer Scaler y la super resolución son más que patentes... pero bueno, para gusto los colores :)

Un saludo.
@Vassag0

Ese problema q tienes es de software, no de la TV en caso estes usando dos super resoluciones, una entera y otra no
Vassag0 escribió:Vale, tu ganas...


240p test suite, megadrive 320px a 1280px, 4x enteros

Imagen
Imagen


240p test suite, megadrive 320px a 1504px, 4.7x NO enteros
Imagen
Imagen


Y eso q mi monitor es exelente, y aun asi, muestra lo que puede, ya no da para mas. Una TV de consumo infinitamente menos
En una imagen fija da igual, ya lo he comentado. Es en los scroll. Pero vamos, que esto no está siendo productivo.
Porque diga lo que diga duras que no... Yo ya te he puesto los vídeos, puedes leer sobre la importancia de usar escalado entero... Pero sigues pensando que en CRT da igual. Me parece correcto :)
Vassag0 escribió:En una imagen fija da igual, ya lo he comentado. Es en los scroll. Pero vamos, que esto no está siendo productivo.
Porque diga lo que diga duras que no... Yo ya te he puesto los vídeos, puedes leer sobre la importancia de usar escalado entero... Pero sigues pensando que en CRT da igual. Me parece correcto :)


No, imagen fija o scroll da igual, xq no hay deformacion alguna, es perfecto

A lo que voy, es que esa informacion es incorrecta, y estas escalando mal por soft, y por eso achacas el problema al TV
@theelf
Retroarch funciona asi.
Marcas una res maxima para mostrar en pantalla y te mueves dentro de ese rango.

En rpi, en linux o en Windows funciona igual. No trata la imagen como tu piensas y es un engorro.
Vassag0 escribió:Por ejemplo, en el Three Wonders tenemos una resolución nativa del árcade de 384x224. En horizontal no es lo mismo meter 2304 (x6) que poner 2112(x5.5), esto genera artefactos y efectos de "agua" en scroll horizontal.


Una cosa que no entiendo. ¿Por que x6 y no x7 o x5, por ejemplo? Gracias!!
¿No es malo para el televisor tenerlo conectado a una señal de 31Khz? Me refiero al comiendo del video cuando se enciende el ordenador.
theelf escribió:@Vassag0

Ese problema q tienes es de software, no de la TV en caso estes usando dos super resoluciones, una entera y otra no


Os entiendo a los dos, @theelf dice que una tv crt muestra lo que le pidas que muestre dentro de sus posibilidades de lineas, si le pides que muestre artefactos y tearing te mostrará eso mismo, por lo que el problema está en el soft que es el culpable de mostrar esos problemas en pantalla.

Y @Vassag0 dice que el busca la manera de conseguir que el soft usado muestre imagenes limpias utilizando las resoluciones nativas de las videoconsolas o arcades a mostrar en pantalla, entiendo que ajustar un solo sistema a emular es muy sencillo (al ser solo una resolución y refresco) que el implementar un "sistema" para que muestre la resolución exacta de cada sistema cambiando las resoluciones al vuelo y mostrando siempre imagen a pantalla completa sin artefactos o tearing tal y como lo haría el hardware y software real de un sistema en un TV CRT.

En definitiva, creo que habláis de lo mismo.

Por cierto @Vassag0, te doy la enhorabuena por el currazo que te estás pegando por conseguir un soft definitivo para los amantes de las pantallas completas a su resolución y refresco nativo, la mejor experiencia retro sin estar obligado a usar el hard/soft original. Yo soy otro incondicional del pixel perfect, que no me parece que esté mal usado este concepto, sino malentendido.
Un saludo.
@oskarzer0
De momento estoy en una fase alpha, no diría ni beta. Estoy experimentando con la manera de ajustar ratios escalados en enteros. Muchos de los juegos con un multiplicador de x6 completan la pantalla, si pusieras uno mayor tendrías overscan o perderías el aspecto de resolución. Pero todo esto es simplificándolo mucho. Ahora mismo estoy trabajando en recopilar la resolución nativa (ya lo tengo) de más de 14.000 roms y estoy ultimando un script que haga todos estos cálculos al vuelo. De este modo el usuario podrá lanzar desde Atrract Mode la rom que quiera y el script decidirá si hay que usar super resolución, y cual debe sería el multiplicador para mantener la relación de aspecto correcta (dentro de lo posible). De modo que el usuario pueda jugar con sus roms en un pixel perfect sin preocuparse de modificar los parámetros y calcular el multiplicador adecuado.
Te pongo un ejemplo práctico (justo con el que estoy probando el script):
En GroovyArcade recibimos una resolución de 640x480, por lo tanto, cualquier frame que queramos mostrar en pantalla debe ajustarse a dicha resolución. Si es menor aparecen bandas negras y si es mayor aparecerá overscan (perdemos información).
Tenemos dos resoluciones muy comunes para roms mame:
Toki: 256x224. Relación de aspecto 1,14 (256/224)
Street Fighter 3: 384x224 Relación de aspecto 1,71 (384/224)

Ahora partiendo de la importancia de escalar con enteros (ya lo he explicado detenidamente más adelante) queremos rellenar la pantalla, en la medida de lo posible, y no perder información.
En el caso de Toki usando la configuración estándar de RetroArch obtenemos, con un multiplicador x2, 512x448. Con esto rellenamos la pantalla y mantenemos la resolución de aspecto. Evidentemente habrá quien diga que se quedan sin información 128x32 pixeles en margenes laterales y superior/inferior. Sí, pero era la idea del creador, mostrar esa resolución de aspecto y, creo que en su momento, no pensó que en el 2019 su obra querría jugarse en un CRT con proporciones distintas al monitor árcade para la que fue diseñada.
¿Podríamos rellenar la pantalla entera? Sí, desactivando el escalador de enteros y jodiendo la relación de aspecto. Ganando un montón de artefactos en los scroll... Vamos, antes me arranco los ojos.

Por otra parte tenemos Street Fighter 3, con una resolución de casi 16:9 (se nota que ya pensaban en como hacer los port a las consolas). Si usamos el mismo método que con Toki, no usar super resolución, y queremos rellenar pantalla multiplicando por x2 tenemos una resolución 768x448... ups la horizontal es mayor que los 640. Nos tocaría perder por los laterales 128 pixeles, nos perdemos parte del careto de los marcadores... no mola.
Ya habrá quien diga: pues desactiva el escalado por enteros y fracciona... pues que lo haga él. Yo soy muy maniático y me gusta ver las cosas bien.
Y aquí es donde entra la magia de RetroArch, activando la super resolución genera un downscaling de 2560 pixeles horizontales dentro de los 640 pixeles que podemos ver... esto nos permite jugar con la resolución por enteros de forma muy satisfactoria. Por lo tanto sólo debemos jugar con la resolución horizontal. Ahora tenemos que imaginar que nuestro CRT tiene una resolución horizontal de 2560 pixeles, por lo que si se usa un multiplicador x2 esos 768 pixeles hace que se vea una pequeña columna en el centro. Por eso nos debemos mover en escalas superiores, es por lo que comentaba que sólo a partir de x6 empezabas a "rellenar" pantalla, claro está dependiendo de la resolución horizontal original.
Retomamos nuestro Street Fighter 3 y le ponemos un multiplicador de x6 y tenemos 2304, esto rellena la pantalla horizontalmente. Ahora bien... la relación de aspecto me da que se la pasa por el forro, ya que salvo que me pierda algo realmente tenemos una relación 1,33 (4:3). Como comentaba antes esos 2304 realmente alcanzan a llenar los 640 pixeles máximos que tenemos de resolución horizontal.
Es el mayor "pero" que le veo a todo esto... quizás metiendole proporción 16:9 con el conmutador de la tele quede de lujo... pero aún no he podido probarlo.

@R.Signal
Pues no tengo ni idea... yo de electrónica lo justo para no electrocutarme. Bueno no creo que sea, malo... ni idea. La tele que veis en los vídeos no es la que montaré en el árcade. La estoy usando para aprender. Cuando tenga la definitiva, esperaré unos segundos antes de encenderla. Salvo que alguien que sepa del tema diga que no pasa nada por meterle un chute de 31Khz.

@Otrof1stro
Muchas gracias... de ese tema creo que ya hemos más que hablado, prefiero mirar hacia adelante y trabajar en avanzar ;)

Un saludo.
@Vassag0

Esa pega solo es con retroarxh.

Con una ati puedes poner 384x224, 768x224 o 1920x224. El resultado es el mismo. Se ve lo mismo en la pantalla.
Cuando sacaron las magic o las super lo que haces es aunar. 2560 es multiplo de 320 y 256, por lo que tienes cubiertos el 80% de los arcades.

Pero eso es otra historia, aqui lo que interesa es retroarch y funciona como tu bien explicas.
@Tomax_Payne

Muchas gracias por la información.

Sí he leído algo sobre ese tema, más en Windows que en Linux. Por eso lo deseché en un primer momento. Aunque supongo que en Linux también sería factible y básicamente es lo que hace RetroArch. Ya que como salgas de el con una super resolución el sistema se queda con ella, para mi que le casca un xrandr con un camión.

La gracia del sistema que estoy haciendo es que una vez que seleccionas la rom, sin configuración por parte del usuario, selecciona el multiplicador adecuado y, en caso de ser necesario, activa la super resolución pudiendo incluso cambiar el margen de 2560.
Sé que ahora me voy a dar la "panzada" a crear el script, pero una vez lo tenga... ya no me tengo que preocupar por modificar la configuración para tener pixel perfect... Lo que me jode son los juegos verticales, por más vueltas que le doy no veo como poder dar una buena solución que no sea tumbar la tele.
No sé, quizás estoy reinventando la rueda, pero después de buscar y leer construir este script es la única salida que veo.

Un saludo.
@Vassag0 yo en linux, para consolas, tengo scripts personalizados. Lo que hacen es
Poner la resolución a 3840x480 con xrandr
Ejecutar retroarch
Volver a 640x480 con xrandr

Luego en cada core tengo el viewport ajustado. Por ejemplo en nes lo tengo a 448. Me quedan 2 pequeñas bandas negras arriba y abajo pero se ve perfecto. A retroarch no le dejo cambiar de resolución porque me ha dado problemas (y porque juego en crt de pc y retroarch sólo está pensado para teles).
Para arcades uso groovymame con un perfil personalizado. Uso super resoluciones en horizontal y doblo la vertical.
@Robin

Gracias por la ayuda, sobre doblar la vertical ¿que quieres decir?. Sería interesante poder doblar la vertical (como una super resolución vertical) para las roms verticales. ¿Como haces para doblar la vertical?

Muchas gracias.

Un saludo.
@Vassag0
Con doblar la vertical quiero decir que por ejemplo a ghosts & goblins juego a 2560x448, cuando el original es a 256x224. Así paso de una resolución de 15khz a una de 31. Luego le añado scanlines por software.

Puedes mirar este hilo, groovymame tiene muchas opciones. Es mucho más flexible que retroarch.
http://forum.arcadecontrols.com/index.p ... c=132436.0

El cambio de resoluciones groovymame lo hace con un programa llamado switchres, puedes descargar y compilarlo a parte.
https://github.com/Ansa89/switchres

El propio groovyarcade trae ese programa y lo utiliza para cargar otros emuladores como mednafen.
@Vassag0

¿Por qué no utilizas las resoluciones originales (nativas) en retroarch en lugar de estar usando super-resoluciones?. Se supone que en linux con el trabajo de alphanu ya lo hace automáticamente.
joseman1000 escribió:@Vassag0

¿Por qué no utilizas las resoluciones originales (nativas) en retroarch en lugar de estar usando super-resoluciones?. Se supone que en linux con el trabajo de alphanu ya lo hace automáticamente.

Supongo que para usar esas resoluciones necesitas una gráfica que ofrezca dotclocks bajos como la ati4350 por ejemplo.
dodi29 escribió:Supongo que para usar esas resoluciones necesitas una gráfica que ofrezca dotclocks bajos como la ati4350 por ejemplo.


En linux no hay ese problema como en windows con las hd2000 y hd3000, por lo menos con las ati.
@joseman1000
Si no me equivoco, porque te dibuja solo una franja de la pantalla.
@Ronbin
De momento el GroovyMame lo tengo descartado, que se me ha metido que quiero usar RetroArch. Razones: primera y principal tengo mi romset montado entorno a los cores de RetroArch, sobre todo FBA, que es el que mejor resultado me da. Y luego por lo practico que me parece tener todos los cores de árcade y consola centralizados.
Quizás cuando ya tenga terminado el GroovyMame+RetroArch si sigo con ganas de sufrimiento me meto con el GroovyMame.

@joseman1000, @dodi29, @Tomax_Payne
Desconozco el trabajo de alphanu, si me pasáis un link os agradezco el aporte. Ahora mismo si uso resoluciones nativas sólo relleno una porción de pantalla. Como comentaba más atrás una vez instalado el GroovyArcade lo que he visto que tengo que ceñirme a una resolución de 640x480, por eso la super resolución me da la vida.
La tarjeta con la que estoy es la ati 4350

Bueno pues ya tengo el script y es una maravilla verlo trabajar. Dependiendo de la rom que lanzas te activa la super resolución y te hace los ajustes para escalar a enteros. En caso que la rom no necesite escalarse deja la resolución de la rom y si puedo escalar sin super resolución pues escoge esa opción.
Falta pulir algunas roms que en el listado de:
http://mameinfo.mameworld.info/
Indica que tienen una resolución 320x240 (por ejemplo los Art of Fighting) y mis cojones... la resolución es de 304x240, por lo que en ancho no me la deja en enteros. Tendré que hacer una pasada para corregir todas las que pueda.

Cuando lo tenga lo pondré a descargar en el hilo principal para quien quiera usarlo. Es sencillo de usar y te olvidas de configurar el juego para pixel perfect, el script lo hace por ti.

Un saludo.
@Vassag0
Menudo curro que trae todo esto,se agradece de corazón,gracias por tu tiempo [oki]
A todo esto que cable o chisme me pillo para conectar el pc a la tv de tubo?
por casa tenia esto;¿sirve?
amazon/B0721MHZT5/dd32cc68/eNoNxLEKwjAQANC_6WbvEpCKEAQHcXFrF5cjJrEGbHPkTqJ-vb7hPVRZ9gCttd4v_lvWPgnMDFxLfAWFIw7WXM7XcQs13R3zmz6FotKNvOSVNOszUUFD_5AE8ZCTm8bTrmMJznTqZxcWrtFurPkBpEMmTw
salu2 y gracias otra vez,me pondré con ello seguro.
Ronbin escribió:@CHEF0 un cable como este
https://www.ebay.es/itm/Cable-Vga-a-RGB ... 3144420758
No tiene porqué ser ese mismo


Jeje joe si es que es para esto y todo jeje,específico a tope,muchas gracias pues ese pillaré para no liarme la cabeza e ir a lo fijo que ya sabemos que pasan con las baraturas.
salu2 y otra vez muchas gracias.

Este parece que también vale no?
http://retrocables.es/tienda/index.php? ... &id_lang=4
salu2!
El que pones de retrocables te sirve para sacar RGB, pero necesitas el de molex, ya que con 12v te conmuta directamente al AV
Yo tengo este:
http://retrocables.es/tienda/index.php? ... &id_lang=4

Eso sí... Paciencia, tardan 15 días en enviarlo.

Un saludo.
Yo me fabrique el mío, no tarde más de 30 min en hacerlo.
91 respuestas
1, 2