Demo Factory 2018 (C64)

Okay, so between writing the first draft of Saturday’s post rambling about the development of Demo Factory and actually pushing it out to the world I found myself pondering ways to rework it and… well, sort of accidentally wrote a complete, upgraded version! Demo Factory 2018 has been through a few iterations since that first build, but the final code was finished in the early hours of this morning. The music this time is from the game Ninja Rabbits and was composed by Sean Connolly, whilst the general layout of the screen was based on the original 1976 release with some tweaks to add new features. After that, everything else was pretty much built from scratch.

In some respects at least this version works in the same way as the original Demo Factory, relying on the C64’s hardware-based sprite to background priority register for the disks – that’s why one of the character multicolours is black in both versions, those parts of the graphics can never have a higher priority than the sprites so the moving floppies are actually passing in front of those parts of the background – but the sprite-based part of the scroller has to work differently, with the left hand character being a sprite that’s being masked in software so it can pass behind the black part of the pipe regardless of the letter’s current colour.

Although there’s one highlighted effect running in the box labelled “VFX” there are also two starfield-like routines, the animating “SFX” cone and a couple of other, smaller elements which are mostly being refreshed every frame – the moving arrows are shifted every second frame because they don’t look as pretty moving faster and things like flashing lights change only when needed – and that lot are all handled with either character redefinition or simply changing the screen or colour RAM. The only hardware sprites in use are the eight floppies which are either on or sitting by the lower conveyor, the last three characters of the scroller as it falls from the upper belt and one expanded sprite which displays the character that’s just about to appear for the scroll.

I did consider saving Demo Factory 2018 for the CSDb intro competition if it happens this year – the highest byte of memory used is $3FFF since the upper and lower borders are open and the ghostbyte needed to be zeroed so the code is small enough and it does technically feature a logo – but it feels more appropriate to put it out now alongside my fevered ramblings about the original. The source code has been cleaned up and can be squinted at courtesy of GitHub for those who might be so inclined.

Watching Demo Factory (C64)

Let’s do something a little different and look at one of my own demos, specifically Demo Factory on the C64 from 1987. The original idea came about from a brainstorming session with friends and was intended to be a less than serious response to the plethora of bog standard demos around at the time which usually included a bitmapped picture, some music and a sprite-based ROL scroller in the border. We all found the idea of an automated factory churning these similar-looking demos out on a conveyor belt amusing so I set about programming, pausing only to work things out on paper first – something I haven’t bothered doing since – and to read up on how the hardware sprite priority registers worked from the C64 Programmer’s Reference Guide.

Looking back now the code itself is embarrassingly simple – even more so than I remembered it being in fact – but in my defence I was still learning assembly language and indeed the C64 at the time. The music is Rob Hubbard’s Hunter Patrol theme which arrived as a file he’d uploaded to Compunet that had the music located low in memory and started an IRQ to play it before dropping back to BASIC; my code calls that and executes behind it, using timing loops rather than actually waiting for a rasterline or anything sensible because I didn’t know better. I’m tempted to call this my first “real demo” because, despite there being a few releases prior to it including Past Shock, this was the first time I managed to get action on the screen with someone else’s music playing.

The “logic” was, if I recall correctly after three decades, that a parody didn’t have to be particularly well programmed because shonky code could be passed off as part of the joke; similarly, the lack of a scrolling message was absolutely part of the “protest” against bog standard demos and not in the slightest because I couldn’t get one working or anything like that… honest! There’s also a healthy whiff of irony and very probably hypocrisy about me of all people railing against the bog standard demo as a format since I’m incredibly fond of it as a format, was inspired to start coding demos by releases like Future Shock and have since programmed several releases over the years which stick to that tried and tested formula.

I’ve considered doing a remixed version of Demo Factory on a couple of occasions previously which would be an overhaul of the graphics and actually running from interrupt with all the benefits that would entail; it could perhaps animate all of the elements of the demo making machine that I wasn’t able to handle back in 1987 as well and, just for the sake of irony, would probably include a scrolling message as well…?

Watching Crazy Demo (C64)

Crazy Demo by the Norwegian Crackware Company was released way back in 1985 and the style is reminiscent of other releases around that time like the titles page of the Flying Crackers’ game Crackers Revenge; it’s bright and delightfully cluttered with multiple scrolling messages poolting past, some elements pulsing through the C64’s five shades of grey and a sprite logo pushed into the lower border. All of this is accompanied by Rob Hubbard’s Crazy Comets soundtrack, which works well regardless of which tune has been selected via a prod of the space bar.

This is a fun one-parter which came up during a Facebook discussion about the origins of the demo scene a couple of days ago, with former NCC member Stein Pedersen – currently a member of Offence, Prosonix and Panoramic Designs -posting a link as the topic slowly suffered a little bit of “feature creep” and drifted off into the realms of early demos. It was subsequently accompanied by a further tangent about classic Doctor Who titles sequences because they look a bit like demo tunnel effects, so that was me pretty much happy for the rest of the day.

It’s always interesting to see where people started out and, whilst it isn’t a C64 milestone in the same way that a couple of the other demos I’ve been squinting at recently like Readme.prg was for the Atari ST, Crazy Demo is still an early step in a fantastic demo programming career and a lovely example of C64 releases from that time. On a related note, I’m now stuck with the Crazy Comets theme rattling around my head for the rest of the day. Again.