Skip to content

VIC II dizer (for the C64 computer)

c0pperdragon edited this page Jul 5, 2023 · 2 revisions

The VIC-II-dizer is a small modification board for the C64 home computer. It can be easily (without soldering) installed by putting it between the VIC-II and its socket and connecting the output to the existing RF jack. Using a compatible upscaler (the RGBtoHDMI for example), you get pixel-perfect HDMI.

screenshot

Compatibility

Starting with revision 2 of the board, the FPGA can auto-detect all variants of the VIC-II with the exception of the very early and rare 6567R56A. For this specific chip, a dedicated firmware needs to be flashed onto the mod board. Otherwise it should work out of the box, even for some exotic 50Hz NTSC variants.

The board directly fits all C64 main board revisions with the exception of ASSY 250407. In this case you may need to add an additional IC socket to clear the trim potentiometer directly next to the VIC-II socket.

Mod kit contents

The mod kit contains the FPGA board and a cable to wire it to the RF output jack.

modkit

Installation

To install the mod inside the C64, you need no soldering equipment. Only some basic tools to open the C64 and to cut a single wire. I explain the installation on an original C64 without any previous mods. If your machine already has other modifications as well, you need to use your own judgement here.

  • Remove the VIC-II chip from its socket. You can either use a dedicated chip-puller or a flat-head screwdriver. Be gentle with the chip and avoid bending any pins. install1

  • Put the mod board into the socket. Make sure to get the orientation correct. The notch on the board should match the notch on the socket. Insert carefully without bending any pins. install2

  • Put the VIC-II on top of the mod board. Again be careful to bend no pins. install3

  • Open the metal RF can and cut the single wire that runs to the RF output jack close at the bottom. Use the aligator clips to connect the provided cable (see image). One clip needs to attach to the inner contact of the RF output jack (call this wire "lum"). The other clip can be attached to the metal casing of the box-shaped component (call this wire "gnd"). If you have a smaller sized RF can (as in many C64C models), you need a slightly different mounting style (see below). clips

  • Feed the cable through one of the holes in the lid of the RF can and close the can. Attach the cable connector to the mod board. Make sure the polarity matches the designators (LUM or GND on the board). complete

Alternative mounting of the "lum" wire

For the smaller RF can, remove the insulation from one of the clips (on the "lum" wire) and attach it to the part of the wire that is still connected to the RF output contact. Use some tape or other plastic to insulate the clip from other metal parts. If the clip does still not fit, you can cut away the plastic handle of the switch underneath. tightclips

Theory of operation

The mod board passively listens to the digital data that is transfered between the VIC-II and the other components of the C64. From this digital information, an FPGA can reconstruct the exact pixel colors that the VIC-II is intended to display. The colors are then encoded in a specific form into a single signal on its output pin. This pin can be connected to the upscaler through suitable cabling. Ideally, you would re-purpose the largely obsolete RF jack for this.

Details on color encoding

When connecting the new "lumacode" signal to a normal composite or mono video monitor or TV, you will get something like this picture:

grayscale

Here you can see that for every C64 pixel, the lumacode signal contains two half-pixels each with one of 4 possible brightness levels. The combination of two pixels give 16 possibilities for all 16 possible colors of the C64. I have defined the mapping in a way that the total average brightness of both sub-pixels somehow approximates the brightness of the original C64 color.

first half-pixel second half-pixel C64 color color name average luminance
0 0 0 black 0
0 1 6 blue 0,166666667
0 2 2 red 0,333333333
0 3 4 purple 0,5
1 0 9 brown 0,166666667
1 1 11 dark gray 0,333333333
1 2 12 medium gray 0,5
1 3 3 cyan 0,666666667
2 0 8 orange 0,333333333
2 1 14 light blue 0,5
2 2 15 light gray 0,666666667
2 3 7 yellow 0,833333333
3 0 5 green 0,5
3 1 10 ligh red 0,666666667
3 2 13 light green 0,833333333
3 3 1 white 1