by ferris
So uhhh, been pretty shit at writing this lately.. :D
last few weeks have been hectic but very fun! Went to Evoke and Datastorm and let me tell you - GREAT parties!
For Evoke I was mainly concerned about our liveset, which you can read about in my last couple entries. Most of the tech details were already covered there and in this stream so I'll skip those for now, but yeah, was crazy fun, as expected ;D
For Datastorm, we actually put out a small demo called Witchcraft for the C64 with Flipside / Pegboard Nerds, and we even put out the source! In terms of C64 prods it's nothing particularly innovative - Alex put together a SID cover of a pendulum track in SID Wizard, and also started a 4-color conversion of the original album artwork. He designed the layout so that there'd be room for a scroller in there too (I guess this was some nostalgic thing he wanted to put together :D) and asked if I could put it all together into a little .prg. Seeing as this was right before datastorm I agreed to do it, as long as I got to be a bit clever with some fadey stuff for the BG and some tech porn for the scroller. So that's what we did!
For the background fades, we basically just wipe screen/color mem (it's a multicolor bitmap, so screen mem contains 2 of the 4 possible colors on screen, with color mem containing the third, and the 4th being a background which we just keep black the whole time) by looking up colors in a table a bunch of columns that's as wide as the transition area. This way we can keep calculations per frame down quite low and just write the same color values to the entire columns on the screen with unrolled loops, which is both easy to implement and fast (albeit a bit large, but that's not much of a problem since we used the packer I made for makeshift ).
For the scroller, we have an 8-pixel high font, which allows us to scroll by just filling in one char row with text, using the hw x-scroll reg to move it left one pixel each frame, then when it reaches its limit, we reset the scroll and shift the chars one cell to the left, shifting another char from the scrolltext in on the right and repeating the process. However, just doing that was a bit boring, so we did some hw trick flair in addition to that.
Particularly, I used a hw trick that would repeat the same char line 3 times in a row in a 24 pixel high area (of which we make 22 pixels row visible). The particular trick skips reading in new char data, so we get the same data displayed, as well as all possible CPU cycles. But we don't actually need that many - I have it set up to change the background color each line (the text itself is actually inverted and black, so the background shows through as the text as it were), as well as the charset pointer, so with the right data layout we essentially get to pick which of the 8 pixel lines in the scroller we display as well as what color the text is. During another part of the frame we just fill in two tables with color and charset, and the display routine both writes to the right regs and clears the tables for the next frame. There's still plenty of cycles to spare, but it was fun to put together and have enough hw knowledge this time to be able to pick a specific trick and apply it with just the means necessary and not too much fiddling around :) . And the rest of it comes down to filling in those tables in fun ways, and if you watch the demo, I think you'll agree that's just what we did!
Beyond, that not much else I've done recently, as I've been trying to relax a bit. Which has been going well. :) Gtg now, until next time
Last Edited on Mon Sep 11 2017 15:30:28 GMT-0400 (EDT)