Making Video for a Commodore 64

The Commodore 64, is many things, but a media centre is not one of them. That said, there is a mighty fanbase for "chiptunes", and if music generated by the SID chip in the C64 is your bag, then there are thousands of hours worth of music to enjoy. Video though, is a whole different ball game. There are pretty insurmountable hardware limitations that mean the C64 can never be a multi-media powerhouse. Or can it?

Well no. Obviously it can't. But. We can take a decent stab at generating recognizable video, which we can play back on a suitably equipped C64. With certain limitations.

What do I mean by "suitably equipped"? Well in its native state the C64 has no chance of playing video of more than a few seconds. There simply isn't enough RAM. We will need to add an REU (RAM expansion unit).

Back in the day these were huge, and expensive, coming in 3 flavours: 128k, 256k and 512k. And whilst they significantly improved on the native 64k in the computer, even they are not suitable for what I'm doing today. No, this is very much a 21st century update and would A) simply not have been possible in the 1980s and B) Requires a fairly modern PC to implement.

So, the first thing we need is a huge (comparatively) REU. In the Ultimate 2+ cartridge, Gideon Zweijtzer, has incorporated a 16MB REU. That is hardware that exists, and can be used (my own will be with me early in 2023 I hope). The Turbo Chamelion 64 will also do this. There is talk of others producing REUs of a similar size but for the moment I'm not aware of anything else currently available that will do the job and so, for now, I am sadly restricted to emulating as I have no suitable hardware.

Luckily, VICE will emulate a 16MB REU so I will be working with this.

The next step, and by far the most complex, is converting some video to a format which will fit into the REU, and which the C64 is capable of playing. We are not going to be able to play modern MP4 files for example, that's for damn sure.

So how is this accomplished? Well, it's certainly not without it's frustrations, but once again, if I can do it, anyone can. Now I did not invent this process, good grief no! This process comes to us courtesy of user daddlerTL over at Forum64.de. When I first read about it I was very keen to have a go. I followed daddlerTL's instructions and used his software which can be obtained here, but I did have to adapt them to my particular circumstances. I will explain as I go.

WHAT FOLLOWS IS SIMPLY A SUMMARY OF THE STEPS I UNDERTOOK. FOR DADDLERTL'S OFFICIAL INSTRUCTIONS PLEASE REFER TO THE LINK ABOVE.

We first need a suitable video. We are going to be seriously restricted in video length so a 2 hr feature film is out of the question. Ideal candidates are adverts, short music videos, a short clip from a film, or perhaps a short video you film yourself.

Depending on the final frame rate you decide to use, your video length can be a max of 5 mins 47 secs (at 5 frames per second (FPS) in a 4:3 ratio) or as short as 1 min 38 seconds (at 16.67 FPS in a 16:10 ratio).

I decided to use a short clip from the 2000 film High Fidelity for my initial experiment. The specific clip I had in mind is 49 seconds long and is in 16:9 format. The instructions tell me that at 16:67 FPS I can have as much as 1 min 46 seconds so this clip is ideal for a first try. It's a brief, self contained soliloquy and so will work as a stand alone piece, and will not cut out in the middle of an action sequence for example which is something that must be considered.

On my Windows computer, I need to get my movie clip, which is in MP4 format, into a piece of software called Virtual Dub. Virtual Dub does not recognise the MP4 format. The instructions states it recognises AVI files however, none of the AVI files I generated were acceptable to the software either. This is probably user error but, anyway, I worked around it:

My video editing software, Davinci Resolve, CAN export individual frames of a movie as TIFF files. Now Virtual Dub doesn't recognise them either (coz of course it doesn't) but it does recognize JPEGs and BMPs which naturally, Davinci Resolve CAN'T export. FFS.

So. Using Davinci Resolve, I edit the whole movie down to just the 49 second clip I want, I resized my export to 320 x 184 pixels and exported 1500 (approx) TIFF files to a folder. Still in Resolve, I then exported the audio track as an MP3 file.

Next I need to convert all 1500 TIFF files to JPEGs. Fortunately I have Adobe Photoshop, and luckily, it can do a batch convert so it only took 10 minutes or so for Photoshop to do its thing.

I then used Audacity to convert my MP3 soundtrack file to an 8 bit WAV file (at 11700 Hz). I also increased the volume here as I felt the track was particularly quiet.

And now I can finally import the 1500 JPEGs to Virtual Dub where I need to resize according to the instructions and adjust my frame rate from the original (25 FPS) - which I had to manually set as it defaulted to 10 FPS because I imported image files, not a video file - to the new 16.67 FPS. Then I can export my converted frames (Virtual Dub exports BMP files) which numbered 840 for my clip.

Needless to say, this all takes time.

I now have 840 BMP files which now need converted into the colors and pixel alignment that the C64 can understand. For this I need another piece of software called Project One.

What needs to happen in Project One is that you import a single frame of your video that is representative of the whole clip. In other words it should contain the color palette and objects/people that you want. With this frame I basically messed about with all the settings and sliders until the example output looked as good as it possibly could, when directly compared with the original. Remember, the C64 only has 16 colors to play with and you can't have all of them in the 8x8 blocks which make up the C64 video output where its limited to 2 colors per block, so this is basically a damage limitation exercise and very much a matter of taste. I decided to use random dithering as well.

When you have an output you're happy with, you don't want to be repeating that process manually for every frame! So, instead the instructions tell us to run a script, which is just a macro, that will automate the process for you, opening each frame, converting it according to the settings you've just made, save it, then move to the next frame until all are completed. For 840 frames this took about 1.5 hrs. This is the most painful part and your PC is pretty much out-of-action while this runs.

So, from an initial MP4 file, I now have 1500 TIFFS, 1500 JPEGS, 840 BMPs, 840 KLAs, an MP3 and a WAV. Good Grief.

Anyway, I now have a folder of 840 KLA files. Into this I move my WAV soundtrack file and a copy of the last piece of conversion software I will be using: "KoalaVideo REU Maker" which is in daddlerTL's download (link above).

Running this I see it's a command line program where you simply answer a number of prompts about your files - ratio, framerate etc and it just goes about its business blending all our image files and soundtrack into one REU file (I actually made two REU files - one for each type of SID).

To check it worked I enabled the REU in VICE (Done via Settings) and loaded one of my newly created REU files in. I then ran a program specifically designed to play the video and soundtrack back called "Koala Video Player" (included in the download daddlerTL put together at the link above). I recorded the result from VICE for your viewing pleasure:



All in all I'm very happy that I now have a process nailed down, and as a puzzle to solve I had a blast (obvious irritations aside). However, something is nagging me.

As a technical exercise, this is wonderful. I really, really like it and am thoroughly impressed that this is even possible on 40 year old hardware, albeit with enhancement. However. The only reason to do this is for fun. It's not really practical.

All those hoops to jump through to watch a video in poor quality when I can just watch it on my modern laptop? I am forcing the C64 to do something it was never designed for and which, without modern intervention, it could never do. The same could be said of all the other modern stuff I've appended to my C64 (pi1541, WIC64) but these simply enhance or replace stuff the C64 was capable of AND add value. Is anyone making "exclusive" content in this format that make it a must-have? And if so why? It's easier to just use YouTube for distribution.

Other than the initial wow factor, this brings nothing of real value to my C64 experience and indeed, requires very expensive hardware to accomplish. I wouldn't want to watch an entire movie in this format (even if that were possible) and producing it in the first place is a series of backward steps in which we incrementally degrade the video a little bit more, so I'm definitely not sold on this.

However, if techniques like this were to be employed by demos and games, to enhance the experience, I'd be prepared to change my mind. Then again, as stated, playing with these old computers is all about having fun, otherwise what's the point? And there is no denying there is something strangely delightful about the idea of watching shit quality video on a Commodore 64. 


Popular Posts