-
Notifications
You must be signed in to change notification settings - Fork 4
Overview
LumaCode is an interface standard for transfering digital video data from retro computers. Its main application is to be used for machines that do not already expose the video signal in a digitally usable form. Because of its simplicity, the necessary hardware to generate the LumaCode signal for a specific machine can be made quite cheaply. The main effort to translate this signal to something to be used for an actual monitor or TV can then be done by an external upscaler. This upscaler is probably more expensive but can be shared by multiple retro computers.
Currently there are two uptions to process the lumacode signal.
- RGBtoHD This is my implementaiton of an open-source device that uses a Raspberry Pi Zero together with a custom add-on board. Output is very compatible with all types of monitors and adds only a few milliseconds of lag to the picture. Can be obtained from my shop at c0pperdragon.com.
- OSSC Also an open-source device that is capable of processing a very wide range of retro video signals. By now it can also decode all existing types of lumacode using its latest firmware. Various vendors sell complete devices.
- RetroTINK 4K As of this writing, the latest firmware of the RetroTINK 4K supports some variants of lumacode, with others being still experimental.
Machines supporting LumaCode output provide a standard RCA (a.k.a. Cinch) jack somewhere on their exterior. In many cases this can be a re-purposed RF output jack which has become obsolete long ago anyway. In other cases an extra RCA jack needs to be added. I strongly recommend to use the color black to denote Lumacode whenever possible.
The signal closely resembles a standard composite video signal with the same 75ohm termination required at the receiver. For this reason it is possible to just plug it into any TV that has a composite video or mono input jack. The image will then show some grayscale pattern roughly resembling the original picture. This is usefull to get a quick check if the device is working. Output impedance is specified as 75 ohm and with a matching 75 ohm termination at the receiver, it will directly see the specified voltages (everything is DC coupled).
All information is transfered in a quaternary digital form, which means all visible data is encoded using 4 different voltage levels. A 5th level is used for the sync signal. With 4 different levels, 2 bits of information can be transfered at each sample point.
| bit pattern | voltage |
|---|---|
| Sync tip | 0.00 V |
| 00 | 0.31 V |
| 01 | 0.53 V |
| 10 | 0.74 V |
| 11 | 0.96 V |
The bits of multiple sample points can be joined (high bits first) to form a longer digital number that then represents the color of a single pixel. For example, the Commodore 64 has 16 colors that can be encoded with 2 samples. The specifics of the encoding depends on the machine and is described in its own subpage.
I specifically designed this interface and all modification boards for ease of installation. So most things I build can be installed and wired up without soldering. Some cutting of wires may be required but nothing that requires specialized tools or knowledge. In the few cases where it was not possible in any other way, soldering is actually required. But there I tried to keep the necessary skill level as low as possible.
I sell my own designs and related stuff on my own store.