이 저장소에는 Raspberry Pi를 통해 UDP 비디오 스트림(netvid)을 IBM 5153 호환 모니터에 렌더링하기 위한 코드와 구성이 포함되어 있습니다. 비디오 스트림을 제공하기 위해 RetroArch 및 Open Broadcaster Software에 대한 조잡한 후크를 사용할 수 있습니다.
비디오 신호는 4비트 컬러(RGBI)와 2개의 동기 신호를 사용하는 DPI(병렬 디스플레이 인터페이스)를 통해 제공됩니다. RPi 픽셀 클록은 까다롭기 때문에 픽셀 클록과 관련 타이밍을 3배로 늘려야 했습니다. 따라서 실제 프레임 버퍼 해상도는 1920x200입니다.
저장소에는 오실로스코프 분석에서 타이밍 문제(주인으로 의심되는 원인: USB 폴링)가 발견된 후 완료되지 않은 GPIO 인터페이스도 포함되어 있습니다.
실제 어댑터 보드와 타이밍은 Benjamin Gould의 이전 작업을 기반으로 했습니다. 전류 소모를 제한하기 위해 몇 가지 저항을 추가했습니다. 순전히 예방 조치입니다. 내 모니터에서는 중앙에 위치한 이미지를 제공하기 위해 수직 및 수평 현관도 조정해야 했습니다.
Raspberry Pi 3에 적합한 필수 구성, cmdline 및 장치 트리 오버레이 파일이 이 저장소에 추가되었습니다.
어댑터는 최대 640x200 해상도로 완전한 16색 CGA 팔레트를 렌더링할 수 있습니다.
팔레트를 136색으로 확장하기 위해 시간적 디더링이 지원됩니다. 위 이미지는 두 개의 60Hz 노출을 결합한 것을 보여줍니다.
다운샘플 응용 프로그램은 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 입력과 정사각형이 아닌 베이어 패턴을 사용합니다.