Back in the mists of time (or more accurately, last Monday) Cosine released a new demo called MD201703 – The Bat-Tro on the C64 with code and graphics by me and music by aNdy. This came about because a member of Batman Group (the same one behind Batman Forever on the Amstrad CPC – wired some of their Amiga graphics… erm, let’s say “less than wonderfully” before uploading to the C64 Scene Database. Now, I’ve been converting graphics for a very long time so, rather than just saying “those look a bit rough” or something similarly English and reserved, instead it seemed like a fun idea to instead convert one of the Batman logos myself and tart it up a bit.
And once that was done, along came the brilliant idea of turning the picture into an actual demo for release as part of the monthly demo series. That meant poor aNdy was persuaded to produce a soundtrack at the last minute, which was a cover of the first level music from Batman on the Mega Drive – I wanted something less obvious than one of the movie scores or Adam West’s theme and stumbled across Sunsoft’s game whilst looking for a double height character set to convert for the scrolling message. The final SID tune turned up soon after I asked and, despite aNdy’s protestations about minor rough edges, is great stuff.
I mentioned previously about discussing how this works so going from top to bottom… the picture is a high res bitmap but uses eight sprites (two at any point in the picture but recycled four times) in order to circumvent the attribute problems where the light green and yellow blend into other colours on the outer edges. The remaining six sprites are behind the five bats drifting over the picture and the sparkles of light which can be positioned pretty much anywhere over the logo.
The timing sensitive code is in the lower border, powering the sixteen pixel high scroller. The part of the message which is legible uses eight hardware sprites with each supplying three characters to make twenty four in total, but the “smearing” effect is where things get interesting because they’re cycle timed vertical splits of the ghost byte, three on the left side of the screen (the third zeroes the ghost byte for where the scroller starts) and two on the right. It could have been done with colour splits as well (so a raster bar behind the scroller was possible rather than the fixed green background which was quite tempting) but this method doesn’t suffer from the “twinkle” caused by midline colour register changes on a C64C or C128.
Reading that back, I’m wondering again if these descriptions include enough detail? They’re pretty much targeted at other 8-bit programmers, but should I still write in more detail about cycle timing at some point or explain what the ghost byte is… so answers on a postcard to the usual address please, and I’ll see about answering further questions in the comments as usual.