We’ve reached the end game for 2018’s Intro Creation Competition so there’s been an inrush of new releases over the last couple of days including one last contribution from yours truly with the ever patient Andy Vaisey on music. It went through a few names but Level One was the final choice simply because it looks somewhat like a game.
The scrolling area takes up the entire regular screen – 39 visible characters across by 25 down – and is being moved using a double buffered scroll routine similar to the ones employed by games which in turn leans on some Run-Length Encoded background data. It also uses the C64’s Extended Colour Mode so, although there are only 64 characters available in the font, it can have four possible background colours for each character so I don’t have to scroll the colour RAM.
Something a little trickier is happening in the black bands above and below the scrolling; these are ten pixels high and sat in the borders, but containing a seven character wide Cosine logo and nineteen characters of either static text or scrolling message. To get twenty six characters into that space the code has to abuse the ghostbyte, splitting it at five points on each scanline to produce the extra two characters (they’re at the far left and right of the screen on both lines) and mask off the raster bars for the areas between the sprites.
I suspect a few people will be asking themselves if a game with similar graphics would be possible and the answer is a sort-of-yes, although drawing decent backgrounds when restricted to just 64 characters is bloody tricky!
It’s been noted on a few occasions previously that I’m not particularly fond of the “festive season”, so here I am on the day itself applying WordPress updates and releasing another intro for the CSDb Intro Creation Competition. This one is rather literally called Crack Intro and was inspired by a couple of ICC-related releases with the same name from nomiStake. They all rely on the same “pun” – the idea that it’s an intro with some kind of crack on the screen – so the only real distinction is that mine actually fits within the competition’s rules, although I had to check beforehand that using a copyright symbol counted as a Cosine logo.
Writing the scrolling message for this one was pretty uncomfortable; the trick being used for the scroller relies on there being eight possible versions of each character so they can arbitrarily roll around within their own eight pixel wide cell, but that means there can only be thirty two characters. That means I get a space, 26 letters and five punctuation marks which are full stop, comma, question mark, exclamation mark and an asterisk so I could highlight phrases in a similar way to the C64’s power up message. This rolling font is generated when the code starts up, using the ROM character set to save a little space even though I have more than enough room left for some bespoke characters.
For anyone wondering, the copyright symbol is built from sprites and uses five in total and recycles the top row of three for the bottom whilst the middle two are being displayed. The cracks are built from characters apart from where they have to overlap the scrolling message; that’s where the spare sprites take over and the fractured parts of the power up message are using sprites for the text. The music is by Sean Connolly and a cover of the tune from Star Trooper by Melbourne House, and originally composed in 1984 by Clifford Ramshaw; it has a lovely, slightly manic quality that I felt blended well with what was happening on screen.
Last week I was looking back at my intro collection Backlog and there was some method to my madness – most of the time there isn’t and it’s literally just madness – because at the time of writing I already had Femtotro pretty much completed. This new CSDb Intro Creation Competition entry is based on the small Babygang intro included within Backlog and, as with that 1991 release, my intention here was to keep things small. To that end the custom character set, some of the sprite definitions and chunks of data used by the code are being decompressed into the screen RAM and then hidden by changing the attributes for those areas so they match the background colour.
The result is, after some rather unceremonious hacking at 4-Mat’s music with the excellent Regenerator to relocate its work space down memory, an intro that can run in under 4K including the screen RAM as long as whoever is writing the scrolling message doesn’t feel particularly verbose. Even with the longer text included in this release it finishes near $1600 so is hovering around the 4.5K mark and, again, that’s with the screen RAM. There’s also no raster interrupt code included, another decision initially made to keep things close to the bone that also means there’s nothing to reset on that front once the space bar is pressed.
Then there is Zeptotro, a less than sensible attempt to take the idea of loading data into the screen memory that Femtotro is using just a teensy bit further. It only decrunches into the screen memory and never uses any space above $07ff when executing – the final memory footprint is $03c0 to $07ff – which sort of makes it invisible because, if there were a program linked to it, the intro could literally just exit by jumping straight to the start of its decruncher without having to relocate any memory first. Once again, the music is by 4-Mat and has been rather rudely pulled apart to relocate it in memory, in this case so that it could be included directly into the intro’s source code for brevity.
That does mean I owe Matt an apology for being so brutal to his music driver on both occasions, but it was in a really good cause I swear! As is always the case, there’s source code available for both Femtotro and Zeptotro over at GitHub if anyone fancies a little delve down through them.