Somewhere in East Germany… a James Bond-alike spy has broken into a presumably sensitive location and found information that must be ferried back to HQ safely, with the first step being a scramble down the side of a four storey building to where his tricked out sports car is waiting, pausing only to blast a couple of alerted guards along the way. After that it’s a manic dash to the coast where the car dives into the water and in classic 007 fashion turns into a submersible, ramming a diver as it escapes.
Developers Future Projects had already released several demos with a similar, animation based style, but Futurevision #1 is by far the most involved; it tries to present itself as in the style of a movie from the moment the screen turns black after a forgotten greeting is issued – going back in to update the list and then crunch the demo for a second time would have taken hours rather than seconds – with the opening text fading in and out. Then there’s the flurry of spy-based action and a “to be continued” message that, sadly, was never followed up upon because, sadly, Futurevision #2 didn’t happen.
This isn’t doing anything radical on the code front and there are a couple of rough edges here and there – when the second picture is swapped in there’s some temporary glarging up of the music for example – but there does appear to be a well written scripting engine under the hood which controls the action, so the data basically tells objects where and when to spawn, change states or move. That’s an assumption on my part of course and it could just be a series of bespoke routines handling each individual state but I can’t help thinking that, whilst that would be okay for the previous, smaller Future Projects animation demos, it’d be fairly bonkers for something on this larger scale.
And I’ve got to say that whilst the graphics are pretty good throughout – the little soldiers have a surprising amount of character despite not having many frames of animation – it’s the music playing behind the action which really steals the show for me; this tune was composed by Ramiro “Extermer” Vaca – he went on to collaborate on the soundtrack for Turrican with Stefan Hartwig and Chris Huelsbeck – and slots together nicely with the on-screen action in the same way that Bond themes composed by pop artists usually tend to work in context. And the music doesn’t stop at the story’s cliffhanger, playing on continuous loop in the background for anybody wanting to read the scrolling message.
We’ve got another piece of C64 scene history today, the Mean Team’s VSP&IK+ from 1987. This is another of those demos from the “Wild West” period when programmers were as much concerned if not more so with getting their latest creations out there and the name is pretty much self-explanatory; the IK+ part comes from the music by Rob Hubbard and Paul “Dokk” Docherty picture which were both being taken from the game of the same name, whilst the VSP refers to it being the first instance of Variable Screen Positioning, a hardware “feature” similar to but much harder to implement than the more common Flexible Line Distancing – FLD to its friends – which was in common use around that time.
This technique is sometimes referred to as DMA delay because that’s essentially how it works, waiting for a badline where the C64 fetches screen data and fooling the VIC-II into waiting for a fixed amount of cycles before that fetch actually takes place by setting the vertical scroll register to a value that won’t see it happen, then changing back to one where it will later in the line. One cycle equates to the width of a character so waiting five cycles will push the screen right by that many characters and it’s possible to travel an entire screen width, with the data wrapping around onto the start of the next line, something this demo masks by changing the attribute data. VSP-based scrolling is how games like Mayhem In Monsterland can move their backgrounds so quickly.
I remember seeing VSP&IK+ for the first time on a friend’s C64, casually thinking “oh that’s nice and smooth” in passing as it started up and the picture slid smoothly in from right to left and then staring in disbelief as it snapped back in the other direction at far too great a speed to merely be a double buffered bitmap scroller – we already knew about FLD and understood how it worked but this was nothing short of witchcraft at the time! It still makes me smile now despite knowing how the routine works and having my own examples.
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…?