Este repositorio contiene código y configuración para renderizar una transmisión de video UDP (netvid) a un monitor compatible con IBM 5153 a través de una Raspberry Pi. Hay ganchos crudos disponibles para RetroArch y Open Broadcaster Software para proporcionar la transmisión de video.
Las señales de vídeo se proporcionan a través de DPI (Parallel Display Interface), utilizando 4 bits de color (RGBI) y 2 señales de sincronización. Debido a que el reloj de píxeles de RPi es exigente, el reloj de píxeles y los tiempos relevantes tuvieron que triplicarse. La resolución real del framebuffer es, por tanto, 1920x200.
El repositorio también incluye una interfaz GPIO, que nunca se terminó, después de que el análisis del osciloscopio revelara problemas de sincronización (principal sospechoso: sondeo USB).
La placa adaptadora y los tiempos reales se basaron en el trabajo anterior de Benjamin Gould. Agregué algunas resistencias para limitar el consumo de corriente; puramente precautorio. En mi monitor también necesitaba ajustar los porches verticales y horizontales para proporcionar una imagen centrada.
Se han agregado a este repositorio los archivos de superposición de árbol de dispositivos, cmdline y configuración necesarios adecuados para una Raspberry Pi 3.
El adaptador puede reproducir la paleta CGA completa de 16 colores con una resolución de hasta 640x200.
Se admite el tramado temporal para ampliar la paleta a 136 colores. La imagen de arriba muestra dos exposiciones de 60 Hz combinadas.
Una aplicación de reducción de resolución proporciona el procesamiento necesario para convertir una secuencia de vídeo RGB de 16/32 bits (proporcionada por RetroArch/OBS) en una secuencia de vídeo de 4 bits compatible con CGA. Admite reducción de resolución del color del vecino más cercano (para renderizar salida CGA/EGA convencional), difuminado temporal y bayer, mejora del contraste local y ajuste del nivel de negro.
Línea de comando:
./downsampling/main --recv 0:<input-port> --send <output-host>:<output-port> --algorithm nearest
Línea de comando:
./downsampling/main --recv 0:<input-port> --send <output-host>:<output-port> --algorithm bayer --bayer 2,2
Línea de comando:
./downsampling/main --recv 0:<input-port> --send <output-host>:<output-port> --algorithm bayer --bayer 2,2 --local-contrast-gain .25 --local-contrast-stddev 32
La mejora del contraste local intenta maximizar el rango de luminosidades de diferentes partes de la imagen. Esto es útil cuando está limitado a una paleta que tiene muy pocas gradaciones pero una amplia gama, como ocurre con el IBM5153. Funciona bien cuando la entrada de vídeo no consta de grandes áreas uniformes, por ejemplo, dibujos animados.
Línea de comando:
./downsampling/main --recv 0:<input-port> --send <output-host>:<output-port> --algorithm bayer --bayer 2,2 --local-contrast-gain .25 --local-contrast-stddev 32 --temporal-dither client --staggered-temporal-dithering
Cambiar el color de los píxeles en cada cuadro da la apariencia de más colores, pero a expensas del parpadeo.
Línea de comando:
./downsampling/main --recv 0:<input-port> --send <output-host>:<output-port> --algorithm bayer --bayer 2,4 --local-contrast-gain .25 --local-contrast-stddev 32 --temporal-dither client --staggered-temporal-dithering
Este ejemplo utiliza una entrada de 640x200 y un patrón bayer no cuadrado para adaptarse a la relación de aspecto de los píxeles.