Other C64-related stuff -> http://www.iki.fi/a1bert/Dev/


PAL and NTSC versions for unexpanded VIC20 - Supports 1540/41,1570/71,1581
Copyright © 2009 Pasi Ojala, Anders Carlsson - Apr 26th 2009, updated May 1st 2009
PAL: vicual-mmix.d64.gz NTSC: vicual-mmix-ntsc.d64.gz

After VIMMII was released in 2002, I started thinking of demo ideas that would be something not previous seen in VIC20 demos. I came up with simple, but visually pleasing ideas for wave and spiral. I also wanted to remake the checkerboards in hires mode, and develop further the stretching/rotating scroller of the last part.

In 2004 I had enough parts to complete a demo, and I even sent the previews to a few people for comments. But I did not have a lot of unused music pieces (I had some 'left-overs' from VIMMII that I used in development), I moved to Tampere, and had a lot of other activity, so the demo did not get quite finished at that time.

In february 2009 a Denial discussion about Veni Vidi Vic! video on Youtube and putting also VIMM and VIMMII videos there prompted me to port my VIC20 development environment from Amiga to FreeBSD, and go over the demo parts again. I dropped one part, optimized the parts for memory usage, and added a lot of new stuff to the last part. I then contacted Anders Carlsson and asked if he had time to work on some new tunes so I could finally finish the demo, and he said yes.

It did not take Anders long to deliver some tunes using the latest version of his music player. I then waded through the parts again to leave as much space as possible for music, and Anders followed up with a couple of more tunes to choose from. A few finishing touches later the demo was finished.

As before, the demo has manual control mode, which you can activate by pressing X during the intro. In manual mode some parts will show more color combinations, and twirl will show different functions. RUN/STOP is used to skip to the next part.

After the PAL version was released, I also hacked together a NTSC version. "Hacked", because it has some visual problems. The NTSC VIC20 has some inconvenient features in how horizontal positioning behaves: position 0 is visible, and you can't use negative values to slide the screen left of that. Because of this there are some visual problems with at lest the colscr and credits parts that are visible in VICE and may be visible when watched on a real NTSC VIC20. Otherwise the NTSC version is quite close to the PAL version.


The first part is short to keep the loading time acceptable. This loader part performs a fadeout effect and installs the loader routine to the drive and to the VIC20 memory at $31a-$3e3 so that it can be used by the following parts without the need of reloading it each time. Page 3 is selected for loader because zero-page and stack, possibly also page 2 are used by the pucrunch decompressor and the demo parts themselves.

The loader also starts the music and plays it while the next part is loaded. If you are running in an emulator, enable true drive emulation and have the drive type set to 1541 or 1571. (The demo runs more smoothly with 1581 though.)


This part is a 3x2 16-line character font upscroller. A slight remake of the intro parts in VIMM and VIMMII. This time a hires font is used, and it is compressed in the same way as in VIMMII. Some edits in the font were done to make it compress better and leave a bit more space for music.

For NTSC version the screen height was reduced.



Spiral shows how good-looking even a very simple idea can be. Spiral is actually a 2 x 8 -frame animation. Only one quarter of the screen is unique, three other quarters are mirrored.

PAL uses 62x64-pixel resolution, NTSC fills up the screen with 52x64 pixels.



Wave is another simple visual part getting its inspiration from a waving checkered flag. Horizontal and vertical waving is not synchronized, so the shape of the tiles will change. Also, the amplitude of the wave and colors will change.

If you run wave in manual mode you will see more color combinations. You can also use joystick button to stop the wave and joystick down to change to the next color combination.

Both start and end colors are selected so that colors match both in transition from the previous part and in transition to the next part.



1check is really a remake of the double-check checkerboard part, not quite a remake of the original checkerboard part by Marko Mäkelä in Veni Vidi Vic!. This version uses horizontal and vertical modulation (like 3k-shekki in VIMMII) to make it more visually interesting. The effect also covers a much larger area than in previous versions, and there is a background color bar.

This time there are no joystick controls. At the end of the part the background color is switched to black in a simple wipe effect.



Twirl visualizes different harmonic functions. I have seen the idea of this kind of 'waterfall' graphics in some Amiga and C64 demos. My version does the drawing in real-time, and the amplitude of the function is constantly changed. Draw colors are also changed.

In manual mode you will see more functions.



The color scroller is a homage to the first part of the Pu-239 Midsummer demo for C64 (part by Falstaff). Seems to be a closer homage than I remembered with both the stretchy color stripes and the tech-tech scroll.

In the NTSC version you can see a small disturbance at the left edge of the scroll due to the operation of the horizontal positioning register.



The idea for 7up was partly born out of the credits part of the VIMM demo that had both vertical and horizontal scroller crossing each other, and partly from C64 demos that had 40 vertical tech-tech scrollers to break some C64 demo coding record.

The scroll colors are rotated between different colors using pulse-width modulation.

In the NTSC version you will only get 5 scrollers.



The credits part is further developed from the part in VIMMII. Tech-tech effect was added, and when optimizing futher in 2009, I also managed to double the tech-tech and stretching scrolls, and add two non-effect versions.

The non-effect scrolls switch between single-colored text (or color bars on the top scroll) on multi-colored tiles and multi-colored text on black background (or color bars on the top scroll).

In the NTSC version you will only get one color-bar scroll and one effect scroll. The horizontal positioning problem that is seen in colscr, also appears in the effect scroll.

Source Code

The source code is provided for the interested parties to encourage the development of new and innovative software for VIC20, whether it is demos, games, or application software.

The Makefile now builds both PAL and NTSC versions.

Download the source: vicual-mmix-src.zip

To the homepage of a1bert@iki.fi