[RGB-Pi] CRT PixelPerfect con audio en un solo cable

1, 2, 3
ACTUALIZACIÓN 25-11-16

Ultimo rediseño del circuito:
Imagen

Cambios de resolución al vuelo:



---------------------------------------------
PRIMER MENSAJE

Hace un tiempo que no escribo en el foro pero me parece interesante compartir este proyecto con la comunidad y poder colaborar activamente para conseguir el mejor sistema de imagen y sonido para emulación basado en RPi+CRT.

Se trata de sacar de una Raspberry Pi señal RGB a 15Khz de forma nativa SIN conversores digitales HDMI ni reescalado que retoque la imagen, conseguiremos resoluciones nativas 100% pixel perfect a 15kHz para monitores CRT por un puerto SCART, con sonido y todo ello por el GPIO sin la necesidad de ningún cable extra.

Para conseguir este logro lo primero es sacar señal RGB por los pines del GPIO, esto necesita de la creación de un circuito que convierta los 0 y 1 de las salidas digitales del GPIO en una señal analógica, luego de esto vamos a mover también el audio del puerto mini jack de la RPi a unos pines del GPIO, el sonido sale sin filtrar con mucho ruido de alta frecuencia por lo que es necesario sumar al circuito unos filtros, con todo esto y un conector scart ya podemos montar nuestro circuito:

Imagen

Ahora vamos con la parte del soft, hay que crear "custom modelines" para tener resoluciones a 15kHz por lo que es necesario editar el config.txt de la RPi y utilizar los llamados "hdmi_timing", en esta parte del soft es donde mas colaboración puede haber por parte de la comunidad ya que hay un gran numero de resoluciones a generar y es un proceso manual y de prueba y error.
De momento no es posible cambiar la resolución de la RPi al vuelo por lo que hay que reiniciar cada vez que queramos cambiar de juego a no ser que compartan una misma resolución en el caso de emuladores dedicados a un solo sistema, esto puede cambiar conforme se vaya desarrollando la parte del software, tampoco es posible utilizar de forma simultanea la salida HDMI y la RGB que estamos diseñando.

Una vez tenemos hecho un hdmi_timing correcto reiniciamos y:

Imagen

320x224p 60Hz 15kHz de forma nativa, sin conversiones ni reescalados de ningún tipo.

Imagen

Esta es una foto de lo primero que probé con una versión compilada para raspbian de advancemame y no comparte la misma resolución que el modeline generado por lo que hay un poco de tearing y la cámara del móvil no ayuda nada.

Pero ahí está, ahora solo queda ir haciendo el trabajo sobre los emuladores existentes para RPi y por otra parte estoy diseñando el circuito en cad para tener algo mas pequeño y practico.

Imagen

Me ha parecido importante compartir con ésta comunidad el proyecto ya que EOL fue una de las primeras webs sobre temática consolera en las que participe por allá por el año 2000 y creo que es donde mas ilusión y colaboración va a tener el proyecto.
Había oído hablar algo de emulación pixel perfect y para CRT en RPi. Desde luego suena muy prometedor compañero y puede ser la solución más ideal y barata para el retro a 15 KHz.
Hola gracias por el aporte, se ve muy promrtedor para trasterar

El conversor DA esta dentro del scart?
Bienvenido de nuevo @atg, realmente es un invento muy interesante para la comunidad retro.
Ya que con esta opción, los juegos emulados en una CRT con RGB ganan muchos enteros.
A ver si logras resolver los últimos detalles y podemos disfrutar de tu invento.
Me interesa mucho la idea, la verdad. Si funciona bien, sin problemas, y el trasteo no es imposible o excesivamente tedioso, puede ser un gran puntazo para CRT.
Lo que enlaza josete2k es muy interesante. Es un hat/shield para la raspberry pi para ofrecerle una salida vga. De aquí a RGB es un paseo como aquel quien dice.
MasterDan escribió:Lo que enlaza josete2k es muy interesante. Es un hat/shield para la raspberry pi para ofrecerle una salida vga. De aquí a RGB es un paseo como aquel quien dice.


No se si te as leído el post principal pero esto ya lo he conseguido sin la necesidad de comprar ningún HAT, también está ya el RGB y los 15kHz funcionando mas sonido...

Para los que le preocupa el nivel de cacharreo tengo planeado que sea simplemente un cable de GPIO a SCART por lo que la única precaución seria no conectar el GPIO del revés...
El post me lo he leído entero y me ha parecido sumamente interesante (gran trabajo por cierto) e iba a comentar que lo que habías hecho podría ser un hat la mar de chulo, pero he leído lo que ha puesto josete2k y me ha parecido que podía ayudar a facilitar las cosas.

Cabe decir que el hat con salida VGA tampoco sirve del todo ya que yo recuerde esta no incorpora audio (que tu sí has incorporado).

Y si puedo dar mi opinión yo creo que la mejor idea es hacer un hat un un conector hembra SCART y que con un cable SCART macho-macho típico poder conectarlo a la tele/monitor. Simplemente conectas el hat a los gpio de la raspberry y ya tienes salida RGB. No se si es posible esto (mis conocimientos de electrónica son más bien básicos) pero si se puede hacer creo que sería cómo y simple.
muy interesante, me estoy planteando hacer un retro pc reciclando un PIV y conectarlo a la CRT y sacar los 15khz por soft, pero me iría de lujo una raspberry a SCART, tengo la primera que tenía la salida RCA pero esa no saca los 15khz y era una mierda, este proyecto me sería muy interesante, a ver cómo evoluciona y a los negados en tema de soldar etc podemos encontrar alguna solución futura

un saludo!
Con 2 cables y retropie, sin soldar.

Un saludo
Tomax_Payne escribió:Con 2 cables y retropie, sin soldar.

Un saludo


Esa es la idea.

Alimentación y SCART serían lo único que necesitarías pinchar en la Raspberry Pi.
VIDHAR escribió:
Tomax_Payne escribió:Con 2 cables y retropie, sin soldar.

Un saludo


Esa es la idea.

Alimentación y SCART serían lo único que necesitarías pinchar en la Raspberry Pi.


Es que eso, lo tengo hecho ya.

Retropie+hdmi2vga+vga2rgb.
Pero es que no es lo mismo.
Eso son conversores de por medio, aquí se está hablando de sacar la señal pura desde los GPIOs.

Conjuntamente con el audio.
Porque no es lo mismo?
Tomax_Payne escribió:Porque no es lo mismo?


Lag
Por que con los adaptadores retrasas la señal de vídeo y generas lag en la imagen.

Además que es bastante más práctico sacarlo todo desde el mismo dispositivo, sin necesidad de 2 adaptadores, que impiden meter la Raspberry en una caja y crean un Frankenstein.
@atg
Donde? Me lo puedes mostrar? Porque yo te digo que no hay lag.
Ni tearing.

Soldar un scart en el gpio...

Bueno, seguiré el desarrollo, al menos probad lo que os digo, que no hay nada de eso, y es mas facil.
Tomax_Payne escribió:Porque no es lo mismo?


Cuando conviertes una señal a analógica y tú lo haces dos veces, hay lag, normalmente hay input lag.
¿Dos veces?

La señal no sale de la gpu directamente en digital y de ahí al hdmi?
Si por supuesto, mira:

https://m.reddit.com/r/splatoon/comment ... _hdmi_vga/

Solo hace falta una busqueda rapida en google para ver que la conversion de hdmi a vga genera lag como es obvio.

Tu sistema esta muy bien a sido un gran paso para conseguir sacar 15kHz de la RPi y te animo a que participes por ejemplo encontrando nuevos hdmi_timing para emular mas maquinas.
solbadguy0308 escribió:
Tomax_Payne escribió:Porque no es lo mismo?


Cuando conviertes una señal a analógica y tú lo haces dos veces, hay lag, normalmente hay input lag.


Solo una, el vga ya es analogico.

El circuito que monta en el scart es otro conversor.

Por favor comprobad, que no hay lag y menos teoria.

Funciona perfecto, comprobado por varios usuarios ya en rpi2 y 3.

Solo tiene una pega, y no he tenido tiempo de mirarlo.

@atg

Ya lo tengo solucionado, al menos en retropie, falta hacer un video de configuracion, que son 2 minutos.
Un proyecto muy interesante, lo seguiré de cerca en mi empeño de hacerme una NES-Pi, SNES-Pi, etc.

https://www.youtube.com/watch?v=8nuE8DDDd2o

salu2!
Actualización con un par de novedades importantes.

Ya he conseguido cambiar las resoluciones "al vuelo" sin tener que reiniciar, de este modo cada juego va a ir a su resolución nativa que sera cambiada automaticamente por el propio emulador mas adelante y el frontend puede mostrarse a una mayor resolución que los juegos.

https://www.youtube.com/watch?v=tuFSI8AKDX0
(perdón por la calidad del vídeo)

La segunda novedad es el formato final que tendrá RGB-Pi, visto que gran parte de los comentarios sobre el proyecto tratan de la dificultad de soldar o la cantidad de cables a utilizar creo que la versión final debería tener este aspecto.

Imagen

Imagen

Un único cable GPIO a SCART, al ser formato cable plano en un extremo es compatible con gran variedad de carcasas para la rasp.

Maylot eres un crack.
Queda poco para sacar la mierda del PC de mi maca...

brutal, mucho ánimo!!!
Rapindrive escribió:Queda poco para sacar la mierda del PC de mi maca...
brutal, mucho ánimo!!!


Esperate un poquito mas que tengo preparado también un jamma-pi...
Hoy me estuve fijando en mi Pi, y despues de testear un poco el gpio, me parece que este adaptador no es posible en las Pi originales, solo en la B+ que el GPIO tiene pines para VGA en analogico

En ese caso, no habria diferencia alguna con lo ya existente, que era un puerto VGA
La pi original tampoco es que tuviera potencia suficiente para mover según que juegos. Recuerdo cuando me la regaló mi novia en su momento probé de jugar una partida al Final Fight sin hacerle overclock a la máquina y me encontré con importantes ralentizaciones tanto en el juego cómo en el sonido.

A mí me parece un proyecto muy interesante. Al final no es un hat pero se le acerca: Conectar y listos. Me parece la mejor decisión. Para hacer miniconsolas irá de lujo :)
Hola.

Muy interesante este proyecto, y lo que comentas del jamma pi seria la caña.
Animo y gracias por comentar este proyecto por aquí. [beer]
Enhorabuena, esto abre un nuevo camino para usar raspberry pis en monitores CRT y maquinas recreativas vía jamma!!!
Una pregunta, quedan pines libres de entrada en el gpio o usas todos?
atg escribió:
Rapindrive escribió:Queda poco para sacar la mierda del PC de mi maca...
brutal, mucho ánimo!!!


Esperate un poquito mas que tengo preparado también un jamma-pi...

cambié el hantarex por una trinitron que tengo por un eroconector-vga de esos fabricados a medida
theelf escribió:Hoy me estuve fijando en mi Pi, y despues de testear un poco el gpio, me parece que este adaptador no es posible en las Pi originales, solo en la B+ que el GPIO tiene pines para VGA en analogico

En ese caso, no habria diferencia alguna con lo ya existente, que era un puerto VGA

Efectivamente las primeras Pi y las revisiones B+ en adelante tienen distintos pines GPIO.

http://elinux.org/Rpi_Low-level_peripherals
veketor escribió:Enhorabuena, esto abre un nuevo camino para usar raspberry pis en monitores CRT y maquinas recreativas vía jamma!!!
Una pregunta, quedan pines libres de entrada en el gpio o usas todos?


tal vez podría usarse esto, lo cual sería muy interesante, usar gpio para rgb y conectar mandos arcade, nose si funcionaría.

https://es.aliexpress.com/store/product ... 26887.html
Efectivamente apenas quedan pines libres después de sacar 2 de audio y 20 de vídeo pero si se pueden introducir los botones por el gpio, ya estoy trabajando en eso sin la necesidad de ningún expansor que interfieren con la salida de vídeo, todo ira en un único PCB sin necesidad de nada extra pero esto es para otro hilo, me gustaría que en este nos centrásemos en el RGB-Pi.

El siguiente paso es hacer un script para retropie el cual vaya cambiando automáticamente la resolución, he probado con recalbox pero se trata de una versión buildroot y esta muy capado.

Por otra parte he diseñado un PCB SMD y ya está en fabricación, ahora a esperar que llegue en un par de semanas.
Yo lo solucioné, haciendo una custom res, ajustando a mi pantalla con los parametros correctos.
Solo fijate de poner a cero los dos primeros antes de cambiar a aspect ratio custom.

Si grabas al salir, ya lo tienes para todos los juegos de esa carpeta.
Por ejemplo megadrive a 320*224 (ntsc) o 320*240 (pal)
A ver, a mi me parece q aca algo no esta bien explicado

Los primeros modelos de Pi en un principio, y a menos que no esta entendiendo el hilo, NO tienen salida analogica por el GPIO

Los modelos mas nuevos, si que tienen, y existe ya el adaptador a VGA desde hace tiempo. La unica novedad es por software, que la gente ha comenzado a trabajar con los modelines

https://es.aliexpress.com/store/product/VGA-adapter-666-for-Raspberry-Pi-A-B-Raspberry-Pi-2-Model-B-RPI-3-Model/722716_32706415666.html?ws_ab_test=searchweb0_0,searchweb201602_2_10092_10091_10090_10088_10089,searchweb201603_1&btsid=64235285-94f6-40eb-99ed-4dc6e2fcf019


@Scylla por eso en mi primer post del hilo, pregunte donde estaba el conversor Digital Analogico, porque asumi que era un avance para las primeras Pi
Los otros modelos, ya estaba indicado que tenian salida VGA, era una de las novedades, no hay mucho secreto
theelf escribió:A ver, a mi me parece q aca algo no esta bien explicado


Lo que no está bien es comprendido ¿algún adaptador de los que venden incluye el sonido estéreo filtrado desde el GPIO con salida scart?

Te invito a que si no te interesa dejes de visitar este hilo.
Este proyecto es increíble, ánimo y muchas gracias por compartir todas estas cosas con la comunidad.
@atg
te invito a que dejes de invitar a otro, entro al hilo que yo quiero


Basicamente por tu comentario, indicas que la unica diferencia entre tu proyecto, y ese adaptador que cuelgo de 5 euros, es que tu sacas el sonido del GPIO, no es el titulo del hilo al que entre

Porque en tu hilo principal, dejas ver que conviertes la señal analogica del GPIO en señal digital

Para conseguir este logro lo primero es sacar señal RGB por los pines del GPIO, esto necesita de la creación de un circuito que convierta los 0 y 1 de las salidas digitales del GPIO en una señal analógica



De ahi que asumi es para la primera Pi, porque modelos superiores que yo sepa, ya sacan analogico de serie, no es necesario conversion alguna, la unica novedad son los modelines, que antes nadie se habia puesto con ellos, por falta de interes tal vez o lo que sea


Y por eso mismo no entendi las respuestas sobre lag que le distes a @Tomax_Payne
Los pines del gpio solo pueden estar en modo alto +3.3v (1) o bajo 0v (0), la RPi no tiene ninguna salida RGB analógica nativa, hay que crear un circuito que convierta de digital paralelo a RGB analógico te pongas como te pongas.
Tu te estas confundiendo con la conversión digital HDMI a analógico VGA que es otra cosa muy distinta porque el HDMI encrípta los datos bajo un algoritmo de cifrado https://es.wikipedia.org/wiki/TMDS y es necesario un proceso de desencriptacion y posterior conversión y es ahí donde se suma tiempo de procesado, en el caso del GPIO es la propia GPU la que saca la señal de forma digital paralela SIN encriptar.

La opción de sacar sonido de forma simultanea tampoco es posible con el adaptador VGA que enlazas, raspbian no trae ningún overlay con el que se puedan compaginar las dos salidas a la vez ya que la salida paralela digital de vídeo invade la salida de audio, ha sido necesario compilarlo específicamente para este caso.

Obviamente todo lo que se haga con una RPi es porque el hardware lo permite, como el 100% de los demás proyectos que están basados en RPi, se trata de diferentes combinaciones de funciones que tiene la maquina, nadie tiene la capacidad de añadirle nuevas funciones a la RPi para la que no haya sido diseñada de fabrica, si tu eres capaz házmelo saber.

¿Sabes que pasa con la gente como tu y este tipo de comentario? Que consiguen que estos proyectos no lleguen a la comunidad y se lleven como desarrollos privados ya que en mi caso no tengo tiempo ni animo para estar refutando acusaciones infundadas. Estoy la mar de tranquilo trabajando solo sin tener que dar explicaciones de ningún tipo.
¿El encriptado no parte del SO?

Vamos, tenía entendido eso ya que uno de los parámetros del config es precisamente emular un edid para poder sacar la señal digital sin cifrado.

¿O estoy mezclando conceptos?
Por favor, vamos a evitar entrar en disputas innecesarias (y que no hacen ningún bien al hilo)

PD- Y está claro que la iniciativa del compañero merece no entrar en esas cosas.
Hola,

Es un buen aporte, pero echo en falta el esquema de las resistencias y el tema de la configuración, por lo que he leído, quizás estoy equivocado, hace falta un driver para que esto funcione, no sólo hay que cambiar los timing.

Este post es muy interesante, muuuu largo y en francés y es para retroarch no para retropie, pero viene un esquema de las resistencias y mucho tajo sobre como cambiar los timing y las resoluciones que se utilizan para los diferentes emuladores, para consolas a 50 y 60 hz.

https://forum.recalbox.com/topic/3475/r ... en-rgb/230

Espero que ayude y no confunda al personal.

Un saludo

PD; @Tomax_Payne quizás ayude también a tu proyecto sobre todo el tema de las configuraciones de los emuladores
@elnaib

Gracias, le echaré un vistazo, pero ya lo tengo solucionado.
La semana pasada, pedi permisos a moderación, para subir una img de la sd, ya terminada de retropie (sin roms, ni bioses).

Es mucho mas sencillo, en algunos aspectos, y yo no le aprecio lag, igualmente válido para todas las raspberrys.
Solo hay una pega, y es con el audio, que por lo que sea, de serie se escucha muy flojo.
En retropie, puedes cambiar la configuracion de audio de hdmi al jack 3.5 y asi sacar el sonido directo de la raspberry. Les preste a unos amigos, los cables y mi sd, para que lo pusieran el sabado en el retroconsolas alicante y el resultado fue optimo.

Espero poder hacer un video, con la configuración manual del sistema, que son un par de minutoa y el resultado ea excelente.
Imagen
Pillo sitio, muy interesante lo de sacar rgb sin conversores!
Vas a poner a la venta la placa cuando la tengas? o vas a poner los materiales para que cada uno se la haga?
Se supone que cada emulador irá a una resolución especifica, no?
Saludos y suerte en el proyecto
¿Cada emulador?

En arcade es cada juego XD
josete2k escribió:¿Cada emulador?

En arcade es cada juego XD

es verdad, en mame cada uno va a una resolución xD
lo que mas em interesa es 8 y 16 bit, y tengo en mente hacerme un mando arcade y mterme porfin en el mundillo de mame, que estoy perdido
Sobre juegos arcades y resoluciones, tengo por ahi una tabla que me hice, donde tengo todos los juegos y sus resoluciones, pero en un formato listo para exportar, por ejemplo, crear archivos batch o ini

Por ejemplo, las resoluciones verticales para juegos horizontales son 39 en total, con eso se cubren los mas de 6000 titulos horizontales


[b]resolucion/cantidad de titulos q usan[/b]

190   2
192   46
200   55
208   11
210   8
216   67
222   3
224   2625
225   4
228   11
230   2
231   6
232   168
236   11
238   15
239   8
240   1480
241   2
242   3
248   80
252   3
253   68
254   3
255   8
256   417
272   8
280   21
288   236
296   13
300   22
384   225
399   3
400   35
432   6
448   15
464   5
480   647
512   6
600   30



Supongo que lo mejor es usar alguna compilacion con creacion de modelines al vuelo, pero si no fuera posible, es tan facil como crear esas resoluciones, y luego un INI por titulo, que es facil ya que se puede automatizar
Doy por concluido el proyecto al terminar con éxito el prototipo, voy a estar por el foro de Recalbox desarrollando una versión especifica para el cable.

Imagen

Imagen

Imagen

Imagen

Dejo un vídeo donde se puede ver los saltos de resolución seleccionando en cada caso la original del cada juego.

108 respuestas
1, 2, 3