magazine logo
Welcome to the official Attitude website - Europe's #1 C64 scene disk magazine
Interview With Thunderblade/Bliss
by DJ Gruby/Oxyron

In our previous issue, we covered today's communication platforms in our opinions chapter. Now we are taking this topic from a completely different angle - the reason is the release of a new notemaker: The "Ultraflash-Noter V3". We have asked the coder, Thunderblade/Bliss, about the *what*, the *how*, and especially the *why*.

[DJ Gruby] Thunderblade, why the hell are you coding a notemaker for the C64 in 2012?

[Thunderblade] With today's modern ways of communication, it became impossible to create a special mood coming along with the message. There is no atmosphere in an e-mail, forum PM or Facebook message. No vibes. Compare this to a note on the C64! You have many possibilities to give it your personal style using charsets, raster colors, flash effects and especially great SID music. You can create a spirit around what you write. Somehow I really missed this - it has been lost in the tide of all our communication tools we have today. So I decided to continue the scene tradition of notemakers, and move it over to 2012 and beyond. Face it, this kind of communication doesn't exist on any other platform today - it is totally unique.

[DJ Gruby] And in a world where even a PDF can be security hazard, being able to create an executable file as a means of communication has its own charm, right?

[Thunderblade] Ha, yes, good point. But there's more. Imagine how surprised your contacts will be when they receive a real note from you, instead of an ordinary e-mail or Facebook posting. And it's your choice to e-mail a D64 or even send a real physical disk using classic snail-mail. In any case, going the note way makes what you say more important, more relevant. A note even can, with a bit of creative care, become a small piece of art. One thing is for sure - e-mails sometimes just get ignored, while a C64 note in 2012 will be... noticed. ;)

[DJ Gruby] Why is your noter called "Ultraflash"?

[Thunderblade] On the C64, hundreds of sceners have been writing notes with flash effects, long before the term "flash" came up on web sites. Funny, if you think of this today. Most traditional noters like "Facenoter" just used extended background color mode on reversed charset to provide three different flash effects, simply by using the upper 2 bits of each character. As Ultraflash does it differently, it has 26 flash effects, carefully designed, so that for each word you want to highlight there's the right flash effect available. There are happy flashes, gloomy/dark ones, mystery, slimish, fast & slow, fascination, hot & cool, and so on... It becomes a joy to write, and to try the different effects. And by the way, doing so many colorful flashes with just 16 colors was a wonderful task to accomplish as well. With Ultraflash, the "good old times" just continue into today.

[DJ Gruby] And that rainbow effect that reminds of old scrollers?

[Thunderblade] It's a kinda oldschoolish effect - for me, somehow this kind of color cycling is connected to the appeal of C64. Must be related to the first crack intros I saw back in 1987 or so. :) In Ultraflash 3 the challenge for me was that it can be applied dynamically. You can write and it "rainbow-flashes" on the fly, in the currently selected flash (A-Z). In the previous version of Ultraflash, V2, I had the flash number stored each time per on-screen character - a kind of "shadow page" for each real one. That made a color cycling hardly possible. So I have switched to a per-page color RAM address/length table. To keep the maximum flexibility, it is re-generated in realtime while you write, insert/delete characters or move up/down whole lines. And because I don't need the upper bits of each character on screen for the extended background color selection, I can offer 4 different charsets simultaneously on the screen, which I implemented as two 1x1 and one 1x2 charset. This way you can not only use flashes to highlight words, but can write words/paragraphs in a completely different charset, e.g. use the 1x2 font for headlines. It's a bit like a modern word processor, LOL. But the editor code is just 8k in size. :)

[DJ Gruby] What's behind that "live crunching" thing?

[Thunderblade] Bill Gates sometimes is quoted with his "640k should be enough for everyone", and we laugh about his mistake. However, on the C64 we just have 64k, minus area for code, charset, music and more! So I thought about a page-based, live text crunching that would make possible even the longest notes, the biggest doc files, and the deepest personal letters. As it is page based, sequence crunching wouldn't have made a lot of sense. So I first wanted to go for a 5-Bit Baudot code based compression, but then I went for Huffman, just for the challenge - I have never written a compressor before. So based on the probability of characters used in English language, I implemented a Huffman bit tree based cruncher which reduces every page by over 50%. This way, Ultraflash 3 notes can get longer than with any other writer. I'm sure more efficient approaches are possible, but before implementing that, I want to see some people fill the memory of Ultraflash 3! ;)

[DJ Gruby] So when you turn the page, the next page is decrunched at that moment?

[Thunderblade] Exactly. It happens almost instantly. You could think I'm doing it while fading out the old page, but the fade effect is a charset pixel pattern based fader. Because I have 4 times more charset data to fade than regular noters, that routine needs all CPU time that remains after music playing and flashing. It's still quite fast though, and only slowed down when plenty of rainbow flashes are being used.

[DJ Gruby] There is a logo display feature - what do you do differently compared to other noters that can show a logo?

[Thunderblade] Many legendary noters like "Level 99 Notemaker" or "Creatures-Noter" offered a logo, but there wasn't a lot of flexibility. In Ultraflash 3, you can use a logo - if you want. Or you can use the 1x2 char. In logo mode the 1x2 char is not active, the logo is just part of the overall charset bank - the result is that it becomes a normal part of the text. You can apply flashing to it - including rainbow flash, and hey I just like how funky that looks. You can have it anywhere on your page, it can appear once or multiple times - all your choice. And as it's a "hires" mode logo, even non-graphicians can quickly create one using, say, "Wordpad" and ALT+PRINT to make a screenshot, hehe. Seriously, it has never been easier. There's that good tool by Mr.Wegi that creates nibble-perfect C64 hires bitmaps out of PC pics. And who says it has to be a logo? It can be a small piccy as well, a photo for example, and here the fun begins.

[DJ Gruby] It seems the "Logo Tutorial" contains an exclusive music by Red Devil/ex-Fairlight - how did you get him to compose it?

[Thunderblade] After the release of Ultraflash V2 in 1996, I was working on a demo part for a never released Fairlight demo and Emil whom I highly respected (and still do) was doing this music for me, which actually is a conversion of an Amiga module. An excellent piece of work IMHO, and I finally wanted the public to listen to it. You can still see me dancing to it sometimes, given I had enough beer. ;) The idea for this tutorial was born out of realizing that compared to the 80s, nowadays people won't spend a lot of time finding out how to use a feature they don't understand. But even for those who do, the tutorial file is a gain, as it also shows the "artistic" possibilities of the new version.

[DJ Gruby] And in the main file there's a great cover of the music from "Imploder", the famous Amiga cruncher - nice fit. Could it be that music plays an important role for you?

[Thunderblade] Yes, C64 (and Amiga) music means a lot to me, it's hard to put it into words. I consider myself very music-sensitive. It's unfortunate that I'm not a composer. SID music for me simply belongs to the best music there is. I can listen to it for hours. Like many other people, I recorded it on tape back then - I still have three 120 min tapes with SID music. For Ultraflash I wanted to give all people who value SID music the possibility to use virtually any music they want. That's why Ultraflash, before calling into the play routine, stores its zero page variables away, and sets the locations to the values that the last call to the music play routine left behind. This way, an unmatched degree of compatibility is reached. Also the music memory up to $3000 allows even very large tunes to be used, including multi-speed zaks up to quad.

The speciality in Ultraflash 3 is something else though. As different topics often require a different atmosphere, you can also use the large music memory to load two music files, and switch back and forth on a per-page basis. Originally, I had just designed two static blocks (2x space for tunes from $1000 to $2000 each), but in the version now released the two music files can be of arbitrary length (e.g. 19 blocks and 13 blocks). Thanks go to Wotnau/DMAgic, who had the idea to load the second music backwards into memory! This way, I can swap $1000-$2000 with $2000-$3000 (which is "upside down") and the currently active music will always work, regardless of its length. And you can switch back to the other one any time.

Also musics with sub-tunes are supported. Some cool people have invested time into relocating game soundtracks to $1000, including their multiple sub-tunes... Now you can use them!

[DJ Gruby] You work for QNX/RIM, who provides the OS for the next-generation BlackBerry smartphones. Does this have an influence on what you do on the C64? After all, it's over 10 years that you coded something on the C64, why return now?

[Thunderblade] Influence, yes, absolutely. There is strong competition in the embedded OS sector, and even more in the mobile sector. It's not only about being better, it's about giving the users what they want. And the challenge is, asking them about this isn't enough. As Henry Ford once exclaimed: "If I had asked people what they wanted, they would have said: faster horses!". What users want might not be what they actually need. So when coding Ultraflash 3, I selected a small circle of feedback providers who contributed many ideas. Did I implement them all? No. But I learned how the users of my product are perceiving it, which is very important. For some of the best demo designers out there this isn't big news, but for me it changed my whole approach to coding.

Another aspect: RIM now bets their whole future on QNX, we replace their ancient BlackBerry-OS - a lot depends on this. Coding Ultraflash 3 - nothing depends on this. Gave me a certain feeling of relaxation, I guess.

And finally, I like the direct dialogue with the machine - writing the opcodes, optimizing by cycle counting, accessing registers. No frameworks and no object oriented programming... Not even dynamic memory allocation, although I could really have used it, as my crunched pages have a variable length of course. And well, ARM Cortex A9 CPUs are cool - yet it's a different world. I am glad and grateful that I can live in both!

[DJ Gruby] Ultraflash V3 is an update to Ultraflash V2 which you released in 1996. Did you find your way back into your old source? Any severe setbacks during coding?

[Thunderblade] The challenge was adding more features while maintaining as much text memory for the user as possible. As for code obstacles, I only remember one nasty bug... When writing exactly 255 flashing characters near the end of the screen, the flash table generator stored one entry and then created the next - which only was necessary for more than 255 characters. This could lead to an overflow in the flash routine that would then overwrite the area behind the color RAM - the CIA, which led to unresponsive keyboard and the cursor jumping around and creating random characters. It took a while until I hunted this one down.

And yes, surprisingly I understood my old source code, hehe. Although, in Ultraflash 3, many routines have been totally re-implemented - some because of the new way I do the flashes, some because the old routines assumed certain things that were no longer true with the new page compression approach. The source was all in "Turbo Ass" though, which I kept using - all I can say is "too many lines" (4096 is max) and "labelnames overflow". Argh, I guess next time I'll go cross-dev! But I don't want to use emulators for developing. In any case, doing this was big fun.

[DJ Gruby] Sounds like it. Same for this interview. Thanks for the insights, man!

Interview conducted on the May 27th 2012.


   Add/view comments on this article (comments: 0)

Do you believe we are
able to cope with
releasing "Attitude"
on a regular basis?

yes no

 YES: 288 (70.94%)
NO:118 (29.06%) 



all visits:

visits today:

website started:
Official Webpage
of Attitude
Copyright 2004-2018