Skip to content

Overview

c0pperdragon edited this page Dec 11, 2024 · 5 revisions

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.

Mechanical interface

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.

Electrical interface

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 semi-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.

Hardware design considerations

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.

Wiring up the RGBtoHDMI

To connect the LumaCode to an RGBtoHDMI upscaler with 6-pin analog input, you need an adapter cable that converts RCA to 6-pin female IDC. Note that pre-existing RCA adapter cables may not work, as this new one has the input signal connected to both the Y and the SYNC pins. This is needed to allow the RGBtoHDMI to distinguish between 4 luma levels. In contrast it is perfectly OK to use this new cable for other mono computers, as there the SYNC input is ignored anyway.

Another option is the RGBtoHDMI Mono & LumaCode that is a variant of the RGBtoHDMI that already comes with an integrated or provided cable.

More details on the RGBtoHDMI project itself can be found at: https://github.com/hoglet67/RGBtoHDMI/wiki

Where to buy

I sell my own designs and related stuff via Tindie. Please check my store for availability of boards and accessories.

There are also other people building and selling RGBtoHDMI related parts, that may have some LumaCode mod kits in stock as well. Have a look at the distributor list.