Femtotro (C64) and Zeptotro (C64)

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.

3 thoughts on “Femtotro (C64) and Zeptotro (C64)

  1. These demos have had a knock on effect of me being obsessed with file size. I’ve been doing experiments in Goattracker to see how to minimise song file size over and above the inbuilt optimisation.

  2. It’s funny how things grab you like that… Zeptotro literally came about because I was using the screen RAM for graphics and data in Femtotro and started wondering how daft… erm, how far that could be taken. That’s the thing about developing on 8-bit and indeed 16-bit systems, there’s always something new to unexpectedly catch your attention!

    The sprites on the original Babygang intro changed colour to make them invisible in the scroll area (they don’t go behind it, only the edges of the bar are actually graphics and the rest is a background colour change) so I put that in before realising that I could set the multicolour differently to get that effect. It was one of those random but lovely “what if” moments that worked out. =-)

Leave a Reply

Your email address will not be published. Required fields are marked *