该存储库包含用于通过 Raspberry Pi 将 UDP 视频流 (netvid) 渲染到 IBM 5153 兼容显示器的代码和配置。 RetroArch 和 Open Broadcaster Software 可以使用原始挂钩来提供视频流。
视频信号通过 DPI(并行显示接口)提供,使用 4 位颜色 (RGBI) 和 2 个同步信号。由于 RPi 像素时钟非常挑剔,因此像素时钟和相关时序必须增加两倍。因此,实际的帧缓冲区分辨率为 1920x200。
该存储库还包括一个 GPIO 接口,在示波器分析显示时序问题(怀疑的罪魁祸首:USB 轮询)后,该接口从未完成。
实际的适配器板和时序是基于本杰明·古尔德之前的工作。我添加了一些电阻来限制电流消耗;纯粹是预防性的。在我的显示器上,我还需要调整垂直和水平门廊以提供居中的图像。
适用于 Raspberry Pi 3 所需的配置、命令行和设备树覆盖文件已添加到此存储库中。
该适配器可以以高达 640x200 的分辨率渲染完整的 16 色 CGA 调色板。
支持临时抖动,可将调色板扩展至 136 种颜色。上图显示了两次 60 Hz 曝光的组合。
下采样应用程序提供将 16 位/32 位 RGB 视频流(由 RetroArch/OBS 提供)转换为 CGA 兼容的 4 位视频流所需的处理。它支持最近邻颜色下采样(用于渲染传统的 CGA/EGA 输出)、时间和拜耳抖动、局部对比度增强和黑电平调整。
命令行:
./downsampling/main --recv 0:<input-port> --send <output-host>:<output-port> --algorithm nearest
命令行:
./downsampling/main --recv 0:<input-port> --send <output-host>:<output-port> --algorithm bayer --bayer 2,2
命令行:
./downsampling/main --recv 0:<input-port> --send <output-host>:<output-port> --algorithm bayer --bayer 2,2 --local-contrast-gain .25 --local-contrast-stddev 32
局部对比度增强试图最大化图像不同部分的亮度范围。当您仅限于灰度很少但范围很广的调色板(如 IBM5153)时,这非常有用。在视频输入不包含大的统一区域(例如卡通)的情况下效果很好。
命令行:
./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
每帧切换像素颜色可以提供更多颜色的外观,但代价是闪烁。
命令行:
./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
此示例使用 640x200 输入和非方形拜耳模式来适应像素长宽比。