Interview with Kalms/TBL
OSX/Atari GCC crossdev
Atari GCC development
dhs.nu special feature #1
gwEm interviews legendary Amiga-coder Kalms of TBL
Published January 14, 2006
Thanks again Kalms. Bests to you!
- gwEm: Hey Kalms, and thanks alot for agreeing to this interview.
Kalms: Hi gwEm and you other Atari folks reading this! What follows is some mindless rambling cleverly disguised as a Q&A session; enjoy.
- gwEm: It seems the tradition to start this kind of interview off by talking numbers, performance and hardware :) As you're a well known Amiga coder, can you tell us the statistics of your Commodore set up? I know many Atarians also have one or two Amigas as well, so don't be scared of going in to details ;)
Kalms: I'm using an Amiga 1200, with a Blizzard 1260-IV accelerator board (50Mhz 68060) with 32MB memory and a 3.5" HDD. The base A1200 has been with me ever since christmas 1993, and the 1260 board since 1998 or so. It's not a fancy setup; rather, it is the low-end target platform for our demos.
- gwEm: Over the years there have been a few TBL productions on Atari from other members.... For example Relics, Join Us and Artari. Do you yourself own some of Atari equipment? You are sometimes on #atariscne, so I suppose you are a bit fond of the platform?
Kalms: I began programming on the Atari ST back in 1988; that's where I learned to appreciate the beauty of a well-done fullscreen, YM music and 68k assembly... and reset demos! The concept -- a chance to tell the viewer "thanks for watching" just before he/she heads off to do something else -- is pure genius!
Today there is an Atari 1040 STE stuffed away in my attic. It will come out of hiding when there is enough room for another machine in my apartment :)
- gwEm: Have you ever been know by any other nicknames than Kalms?
Kalms: Yeah. But I'm not telling which. ;)
- gwEm: Today the price of 060 boards for Amiga seems tremedously high. Even a secondhand board is often more expensive than a new CT60. Do you think this is an indication of the continued desirabilty of Amiga060? Are there new people wanting to come on to the scene to make Amiga060 productions?
Kalms: Accelerator boards have always been rather expensive for the Amiga, and they just never seem to drop in price. I'm not sure why, but as long as the prices aren't going *up*, it's just a sign of the status quo. There hasn't been much regrowth to speak of in the Amiga scene since 2000; most groups which produce anything of value are made up of people who have been active on the scene for at least 5 years.
- gwEm: An Amiga 1200 with 030 accelerator seems a much more cost effective way to get into the Amiga scene. Can one do useful development work on such a machine, and do you forsee any new big demo productions from you or others running decently on 030 or even 020 Amiga AGA?
Kalms: The Blizzard 1260 is a very common accelerator board, and it is one of the slowest of all 68060 accelerators. Competition machines have used that board for over 5 years (or sometimes an A4000 with a somewhat faster 060). Because of this, the 1200 + 1260 has become the de facto target platform for all demos on the Amiga.
I don't see any reason to make demos for 68030 machines nowadays -- people crammed most out of the 030 back in 96-98, and these days there are not a lot of people who will be interested in the result. People have moved on already.
Plain 1200 would be a more interesting target -- but if you're going oldschool, why not A500? There is a lot more heritage on that platform, and people today would understand and appreciate the limitations of the platform better.
- gwEm: The Atari platform has had rumours of Coldfire and PPC accelerators since years. If we are realistic, they will probably stay rumours, but we can dream :) So I want to talk about your experience of these on Amiga, or at least what you heard about them from friends. On Amiga PowerPC is a popular option, we are both 68k assembler addicts... Do you think PPC kills the fun? In your opinion is AmigaPPC still a 'true' Amiga?
Kalms: Back in the late 90s when the PPC boards initially appeared, they were unfortunately not very powerful. A PPC machine anno 2000 should have been a 1+GHz powerhouse with a badass memory subsystem and a blazing quick graphics card. Instead, the hardware makers delivered 200-400MHz PPCs with lackluster memory/video performance. Useful for running applications, but not good enough to change the playing field for demomaking.
The current crop of AmigaONE machines are the first PPC machines to be worth the trouble for demos, I'd say. Still, you have the fact that the main crop of the Amiga demoscene remains on 68k, and those people aren't going to move to another platform anytime soon. The interest for PPC demos is so low that Breakpoint organizing are not accepting PPC contributions in the Amiga demo competition this year (thereby freeing them from the hassle of operating an extra machine for the sake of maybe 1 or 2 contributions). If anything, the new PPC machines should be considered a new platform as there is not all that much cross-breeding between that and the 68k platform.
68k also has the advantage that WinUAE can do a fairly good emulation job on most modern PCs today; thereby the demos can be seen by a much larger audience than just the people who own the real hardware.
- gwEm: What are your views on the Amiga Coldfire accelerators under development? Will you be buying one?
Kalms: I have no use for such an accelerator, as I only use my Amiga for performance testing my code. I *want* my machine to be a 50MHz 060 with a lousy bus interface and horribly slow graphics memory :)
- gwEm: Lets imagine your an active Atari scener and Rodolphe Czuba (last hardware developer on Atari) will announce a new Falcon accelerator tomorrow. Do you hope for a Coldfire, or PPC based board?
Kalms: That's a difficult question... :) PPC would be faster, while Coldfire would mean wider support of existing software. Ok, I'd say PPC, but only if there is a concerted OS/software alongside; otherwise the PPC boards would just become programmers' toys.
- gwEm: On Atari Falcon, our CT60 68060 accelerators have been known to reach 100MHz with SRAM clocked at the same rate... Would you like this kind of performance from an Amiga board? Would you prefer that to a Coldfire accelerator?
Kalms: if the choice is between an 100MHz 060 and a 150+MHz Coldfire, I'd go with the Coldfire any day; the DSP, embedded SRAM and DMA would make for some quite interesting development :)
- gwEm: I personally had a CT63 accelerator in my Falcon for months now, and I'm still impressed by the raw speed this powerful processor gives with an efficient operating system. Even after all this time, does your 060 Amiga still give you that same feeling of power?
Kalms: Not any more... These days I am mostly aggravated by the sub-par performance of the 1260's memory interface :)
- gwEm: As 060 offers many single cycle instructions, the bottleneck is clearly memory accesses. I imagine theres important speed gains to be had by careful consideration of the processor cache, can you offer some tips to Atari 060 coders?
Kalms: Since the 060 has decent branch prediction and branch folding, there is not a great need to unroll loops a lot (I hardly ever unroll innerloops more than 4 times). Instruction cache size is therefore not a major problem.
Focus attention on the datacache instead. It is 8kB, 4-way set-associative; as soon as your active dataset is larger than 2kB, there will be some amount of fighting over the cache lines.
Try to keep data linear in memory. Remember that the processor always fetches data from main memory in 16-byte aligned chunks, no matter whether you requested a byte, word, or longword. Some common types of data (textures comes to mind for instance) are normally not accessed linearly. Try swizzling/twiddling them, it helps if your memory interface is slow enough.
When an instruction causes a datacache miss, the 060 will stall until the necessary 1 or 2 longwords of data have been fetched. The core then continues executing instructions, while the remaining 2 or 3 longwords are being fetched in the background.
If the core attempts to access any part of the cacheline which is being fetched, the core will then stall until the _entire_ cacheline has been fetched. Therefore, if you expect that a certain memory access will give a cache miss, wait a few cycles before accessing data that might be located in the same cacheline.
Let's say that the access speed for your memory is 5-2-2-2 cycles. This means that a cache miss will make the 060 stall for 5 cycles, and after that it will spend 2+2+2=6 additional cycles fetching the last 3 longwords of the cacheline in the background. So, insert some register-only computations directly after the first memory read to shadow the 6-cycle "busy period" of the rest of the cacheline.
- gwEm: Party goers still claim 060 Amiga demos often own against modern PC productions on the big screen, and theres a spirit of co-operation in party organisation between Amiga and PC owners. How much longer do you think this can go on for, are Amiga and PC owners still good buddies, or are splits starting to show?
Kalms: There has traditionally been a lot of cross-breeding between the scenes; people who is interested in one is often interested in the other to some extent as well. This will probably go on until the PC sceners lose their interest in the Amiga platform.
- gwEm: Speaking of owning PC prods... are TBL working on an Amiga060 demo for Breakpoint 2006? Will it feature any new effects? Just answer yes or no ;)
Kalms: Ahem, we haven't really started yet. But it would be a shame if we broke our long-standing tradition, right? :)
- gwEm: Are you sometimes sad that boundaries are not really pushed with existing technology before we move on to the next generation?
Kalms: After I had watched the Dreamcast fade away much too early, I no longer grieve as perfectly capable platforms inevitably drift into oblivion... Remember, that new platforms lower the bar for newcomers, while at the same time offering new challenges. I don't mind that, as long as noone takes away my right to doodle around with the machines of old when I feel like it :)
- gwEm: What motivates you the most? The fun factor of the Amiga computer, pushing the limits of the hardware or the crowd response at parties against those high power PC productions?
Kalms: The main motor is the chance to get to do something creative in a familiar setting, and the scene spirit on the Amiga. It's worth sacrificing some evenings to be able to battle in a good demo competition against your old rivals!
- gwEm: And speaking of motivation, have you got any words for any aspiring Falcon060 coders? (I personally hope for some cool reponse here ;) )
Kalms: Most of the interesting coding today happens on the ST/Falcon; that's why I stop by #atariscne every now and then. I'm looking forward to seeing what you people will be able to create with a 60+MHz 060 and a vastly better bus subsystem. Your setup is a real luxury compared to ours :)
- gwEm: Lets go back to demo parties, I've not been a demoscener for very long, but it seems like Atari left or was forced out of the main demo party circuit in the mid to late ninties. When I first joined the scene it seemed like there was bitter feelings about this, and not many guys wanted to join back with the other platforms anyway. The Motorola Inside party is an Amiga party, not accepting entries from Atari platforms, for example. From the perspective of an Amiga user, were Atarians really seen as weird outcasts during this period?
Kalms: Back then, little of what was being produced on the Atari platform was of interest to the Amiga/PC sceners, and there was a noticeable lack of graphicians/musicians on the platform too. Sum this up, and you find that the Amigans just didn't care much for what happened on the Atari. Just because "Motorola Inside" doesn't accept Atari contributions doesn't mean that the Amiga scene is antagonistic towards the Atari; rather, it is an Amiga party where the organizers just picked a name they thought sounded funky. No ulterior motives.
- gwEm: A recent DHS poll showed that Atari users would like to visit and enter competitions in 'cool' multi-platform parties. And on Pouet, productions like Beams, Pacemaker and 20 Years have recieved a great deal of interest from other platforms. On the chip music side YM tunes have beaten many SID and MOD tunes in recent compos. Some Atarians even visited parties like Evoke and TUM last year and said how nice it was. It seems like any bad feelings from the past are forgotten. Do you think its time for Atari users to return to the 'main circuit'?
Kalms: The Atari-only parties have probably been advantageous for the Atari scene; for instance, a clique of 50-100 Atari sceners would have disappeared in the crowd at Mekka-Symposium 2001 with its 2000+ attendees.
The main attraction with the cross-platform parties is social, and being in the competition. Not a lot of actual technical discussions nor development take place at the parties these days... Which is a shame really, I loved having those intensive coding discussions with people at the parties in the 90s!
Don't drop your Atari-only parties, but you could try to make your prescence known on one, maybe two cross-platform parties?
- gwEm: Sorry - but now a slightly negative question. The voxel effects in 'Ocean Machine' caused some discussion, at least on Pouet. I didn't talk to a single Atari user who didn't enjoy those screens, and I like them too :) But considering those criticisms would you do something differently if releasing Ocean Machine again?
Kalms: Yes, I would make the voxels a bit more precise and faster. Currently they are a bit too shaky in their appearance, and also the framerate is almost painfully low.
- gwEm: Lets talk about how much time and effort a production like 'Silk Cut' or 'Ocean Machine' takes. I suppose the work done by your main gfx and 3d modelling guys, for example Louie500 and Tudor, is essential to the whole production?
Kalms: It certainly is a group effort. We provide the tools and features they need, and they do graphics. Sometimes graphics are built to match technology, sometimes it's the other way around. The determining factor usually is "how do we get the best results per spent man-hour".
Don't forget the music though; it is as essential as the graphics. We usually work with different musicians for each demo, depending on which style or direction we want for the music.
- gwEm: The TBL demo engine has a reputation of being a high standard. You've been working on it your whole demoscene career... But lets say it was lost somehow. How much months would it be to recreate that work, or at least the most important part of it?
Kalms: About half a year's worth of spare time (and mind you, these days I am a student, so that means a lot of spare time). Let's say, uh... two-three months of normal work hours perhaps. But I normally underestimate how long it takes to make something, so those figures are probably way too low. Which is a bit scary, really!
- gwEm: What of the engine is your work, and how much comes from Rubberduck? I guess that you have different specialities?
Kalms: I'm more of a lowlevel grunt. Rubberduck has implemented the high-level 3D engine. I've done the core demosystem, 3D rasterizer, and most of the toolchain.
- gwEm: And how much time each week do you spend on your Amiga coding, improving your engine and routines, making new effects etc etc? Of course it varies alot ;) But roughly?
Kalms: These days, our time is so scarce that we put a lot of time into planning and preproduction. Before we do any actual work, we make sure that it will probably pay off. I spend maybe 200h/year actively programming on the Amiga these days.
- gwEm: I believe you use an ADPCM compression codec for your music. So I guess your musicians often work with some PC based studio? Or is this totally wrong?
Kalms: We usually work with professional musicians. They will only be able to deliver their best result if they can use the tools they are comfortable with, and that usually means Cubase + the hardware/software they use for work. Therefore the simplest solution is to have them provide us with a raw audio stream which we then play back using ADPCM or some similar scheme.
We could ask them to use some kind of tracker but that would automatically exclude all good musicians who don't feel comfortable with trackers any more, and the end result would be a worse tune as they can't use the advanced synthesis methods they use daily at work.
- gwEm: So you got your nice music, gfx and 3d... Not just this but you know what the design should be and you coded some base effects. How long does it take to put it all together? Is this a fun part for you?
Kalms: Once we have 2-3 parts half-finished, we link them into the demo and place them according to the music. Seeing that the final product is actually taking shape is a great morale booster! This usually happens during the last week before the party, and most of the linking is done at the party itself.
In fact, we usually just have scraps and pieces when we arrive to the party and then complete everything at a hotel during a period of 48-60 hours, only allowing us short breaks for food and sleep, and then deliver the demo right at (or slightly after) the competition deadline.
This works because we do most of the really time-consuming drudge work at home, and somehow we become insanely effective when the deadline looms close :)
It is fun at some level, but the 10th time you're scrambling to get a large demo ready for the competition you cannot help but think that "maybe, just maybe, am I getting a bit too old for this". If we were able to actually complete most of the demo before arriving at the party location, the process would be more fun and less pain. Looking at our past track record, that is not very likely though...
- gwEm: And you work in 68k assembler for the whole production? Except for tools, is there any higher level language used?
Kalms: Since 2001 we use a mix of C and assembly. Most code is written in C first, and then the performance-sensitive bits are rewritten in assembly.
Since we have C equivalents of nearly all code in the demosystem, we can build PC versions of all tools using the same codebase as the Amiga demo itself. There are just some submodules (sound replay, 3D rasterizer) that lack C implementations because they were implemented in assembly on the first go.
As we develop code using Visual Studio on the PC, the ability to build a PC version of the code allows us to debug most problems using Visual Studio's built-in debugger as well, rather than having to resort to a less advanced debugger that runs on the Amiga (or inside WinUAE).
- gwEm: I heard you almost never support gfx cards, is that true? I suppose the reason is simply to support as many users as possible, am I right? Or do you simply enjoy working direct with the Amiga hardware?
Kalms: We're not making much use of the Amiga's hardware. There are three reasons why we do not support graphics cards:
- The minimal configuration we aim to support properly is 1200 + 1260. Performance on that machine is of paramount importance.
- If you run on a graphics card, you are no longer guaranteed to have 50Hz display refresh rate. This makes some precomputations difficult, and things such as 2D scrolling can look way worse if the output result isn't bilinear-filtered (which is not an option).
- We're lazy. Getting the graphics card support in there would take a little redesign which we haven't found the patience to do yet.
People have been bugging us for graphics card support for some years now; we really should implement it, because some people with higher-end Amigas simply can't be bothered to have a PAL monitor hooked up to their machine at all times and having graphics card support would make one's demos much more accessible to this group of people.
- gwEm: The success of these recent TBL productions, and indeed Amiga demos in general is "design". How does TBL go about designing a demo? Do all the group contribute, or do you have a 'design god'?
Kalms: We collectively agree on which general direction the demo should be taking, though Louie does most of the design work and he's usually the one who chats up the musicians. Visual design is a combination of "what would we like to see" (Louie + Rubberduck contribute most here) and "what are we _maybe_ able to do" (me + Rubberduck contribute most here). The end result is a plan for the entire demo. Once that has been agreed upon, production commences.
- gwEm: Other members of TBL are releasing for a while, can you see yourself ever coding any PC demoshit, or is it really Amiga Forever?
Kalms: The Amiga platform and scene lends itself well to some particular styles of releases. For the moment I'm not interested in doing anything that would be more suitable on the PC. That might change if the Amiga scene stagnates though.
- gwEm: Deez/Evolution and Evil/DHS have blamed lack of Falcon060 productions on lack of skilled 256 colour gfxmen and 3d modellers on the Atari scene. I think this is probably true, for example I know there is at least one skilled 3d designer on the Atari scene, but I have been sworn by a certain coder not to reveal his identity ;) I know this is a ridculous question - but have you got any advice on how to poach 3d designers?
Kalms: Make sure it is easy to import data from the 3D modelling tool they prefer, and get them at least partially involved in the design process. When you're doing the 3D graphics on-board the main CPU you no longer have the problem of squeezing all geometry+textures into the 96kB of DSP memory, so the graphicians actually have a fighting chance of building something that looks decent.
- gwEm: I guess you heard of the very recent '20 years' demo on Atari? Almost everyone in the whole Atari scene has contributed a little to this demo. Can you see something like this ever happening on the Amiga scene?
Kalms: The "20 years" demo was made because the ST scene is active and there is a lot of nostalgia surrounding it. Neither is the case with the Amiga 500, hence there will probably not be anything similar for that machine.
- gwEm: I see, but could you ever see the Amiga scene co-operating together on somekind of release, on any of the possible Amiga platforms?
Kalms: Oh, certainly; most (if not all) of the active groups talk to each other via IRC and similar means, and there isn't much hostility to speak of within the Amiga scene these days. So all it would require, is that someone from a known group takes care of the organizing, and remind people about it... and voila!
- gwEm: Did you see a few of the 'recent' Atari releases... say since 1999. Is there anything that really stands out? What were your favourites?
Kalms: I haven't seen many of the Falcon demos, and of those I've seen the design and colours haven't been very memorable experiences. On the ST side, I really liked Virtual Escape, Odd Stuff and Fantasia. (Those are the ones that come to mind right now, at least.)
- gwEm: Now, I saved the most important question for last. There have been many rumours flying about of a proper TBL production on Falcon060. Even stories of a conversion of 'Silk Cut', apparently it shouldn't be much work. I guess all the Atari world want to know what truth there is in these stories?
Kalms: I inquired a bit to see whether it would be feasible. It's not impossible, but it seems that the amount spare time I'm devoting to demos is all gobbled up by the making of new Amiga demos. And there's no reason to expect that to change either...