Sinclair QL dithvide #1
I like to see pushing boundaries. I was really excited to make something on my unexpanded QL. I believe that even this underpowered computer could do really good visual presentation.
Hi-color on unexpanded QL (dithvide)
Inventor of the "dithvide" name and method is Zilog - well known programmer and hardware developer, author of divIDE interface for ZX Spectrum.
Basically, two images are altering (interlacing) each frame interrupt (50Hz), thus color of one pixel is in fact average color of two different pixels. Let's imagine that we flicker with black and white - average color is Grey. Similar applies to all other combinations. On the QL we can also play with resolutions, thus we have following options:
- Low res dithvide - two 8 color 256x256 images interlaced
- High res dithvide - two 4 color 512x256 images interlaced
- Mixed res dithvide - 8 color and 4 color images interlaced
First two modes are pretty easy and straighforward to display - simply change every frame int displayed videopage, Mixed mode is a bit harder and you need precise timing to display each scan line in different resolution. It is very similar to "multicolor" method on ZX Spectrum.
Example of dithering
I took example of Turrican Game title screen from Amiga. First it needs to be cropped and scaled to 256x256:
Next step is to dither the image into new color palette. As an example I used "mixed mode" - it means that resulting images will be in low res and high res.
Now, we need to convert this image into two Sinclair QL images. Here we go:
|Low res||Raw QL data|
|Raw QL data|
Now we need to interlace both pictures on QL. This is done by short asm code. These two pictures are in your eyes and brain merged (or averaged). Final QL output looks similar to this:
Actually, maybe it looks even better on real QL + CRT monitor, because CRT monitors are "smooting" and "melting" the pixels a bit. At least my monitor CBM 1084 does that. I call it "analogue image post processing" ;-)
Side by side comparsion
At the end we can only resize the image and compare it by source dithered image.
|Resized QL output to initial resolution||Original dithered image|
Displaying on real QL was the hardest part. I spent some time analysing ROM to see how the interrupt handler works. Unfortunately, it's completely different to anything on ZX Spectrum, so I spent quite some time figuring out how to do simple interrupt handler without scheduler. Once this was done, all the rest was peanut.
Read more about tech stuff in Sinclair QL dithvide #2 article.
Updated: Link to gallery: QL dithvide
Topic: Sinclair QL dithvide