The early days (7/10) - Choice of Gods

Our first official demo under the Holocaust label emerged in late 1992. Its name was Choice of Gods, from a Clifford D. Simak novel, even though I got introduced to it through an illustration from Chris Moore. Its gestation was long enough - almost two years - and the childbirth painful. Too ambitious, too much work to do starting pretty much from nothing. We tackled everything at once, with the explicit desire to always do better than the others. It was a hard job. Besides me and Elric, few of those involved in the group put a lot of effort into it. To be fair we lived far away from each other, and that did not make things easier. On the other hand the proximity of Elric gave rise to a mutual emulation that worked wonders! The process was invisible to me at the time, but I have thought a lot about it years later. I know now that we would never have gotten that far without the friendly competition that tacitly took place between us. For my part anyway, it was clear: I was jealous of every routine he was doing, and I constantly tried to overtake him. And so was he, I think. As a result we both quickly progressed a lot…

From our first scrollers and rasters we moved on to sprites using self-generating code, to line drawing routines, we took a first shot at 3D, investigated soundtracker replay routines, played with delta-compression, etc. We tried everything, and by sharing our experiences and mixing our routines we sometimes managed to create seriously impressive screens. Elric creates a fast sprite function. I transform the code so that it runs in fullscreen. Dan Nato contributes the FlexiScroller. Zerioul adds some 3D. And so on. Unity has never made so much strength. I was proud of what we got: even though the source code was monstrous, dirty, chaotic, endless and unreadable, the on-screen results were phenomenal. We were creating the kind of programs I had been jealous of for years, things that would have given me a cold sweat if they were made by competing groups. The code was certainly a terrible hell of a mess, but it did not matter – and to be honest I think we did not even realize that fact at the time. We sacrificed everything for speed, and at least in this respect we reached our goal: some of the screens were jaw-dropping indeed.

Many modern programmers would have a hard time believing the kind of stuff we wrote for Choice Of Gods. I did not leave the world of programming. I have met a lot of coders afterwards, a lot of skilled developers, a lot of computer graphics professionals. Many of them started programming on PC, and I can tell you: most of them are clueless. I think the ST was a much better school. In many cases ST coders were lightyears ahead.

It is not about what knowledge you have or do not have – any knowledge is ephemeral in this field anyway. It is not about the aura of mystery surrounding assembly. It is not about how difficult the language is supposed to be – in many ways programming the 68000 was a lot simpler than programming in C++. It is about the mindset. On the ST, there was no rule. We could do anything we wanted, and oh boy we did. There was no operating system to provide some helper routines: memory was limited so the first thing we all did in a demo was to wipe the OS out, to save as much RAM as possible. There were no coding guidelines, or things that were considered bad practice. And more importantly, there was also virtually no resources. No coprocessors. No FPU. No memory. Not much time in a 60hz frame. These limitations meant only one thing: to survive, you had to adapt. To do better than the competition, you had to be creative. Necessity is the mother of invention, as they say. And nothing was considered impossible or too difficult. The screen size is limited? No problem, we will find a way to write in the borders. No hardscroll? No problem, we will find a way to emulate it. No blitter? Oh well, we will invent self-generating sprites. Variable-timed MULS are impossible to use in fullscreen? Jeez who needs slow MULS anyway, Log/Exp tables to the rescue! And so on. There was an incredible “can do” attitude that I have rarely experienced with so much strength afterwards. And the best part of this, of course, is that people did find very elegant solutions to all those problems - the invention of sync-scrolling still being the best example: nothing ever blew my mind like this in all the years that followed.

Those days, we take everything for granted and nobody really tries to push the envelope, except maybe console programmers who still work on a fixed platform, whose limitations are not that far from what we dealt with on the ST (what is an SPU if not an ST with half the memory?). But most developpers, in particular PC programmers, tend to just wait for the next processor or wait for the next graphics card when something is not fast enough. For old Atari coders, this is a somewhat disappointing attitude. But beyond that, there is something we miss: the hard to describe satisfaction you get from knowing exactly what your program does, at any given cycle in the frame. I am not kidding here: for a fullscreen you need to synchronize your code with the electron beam on its way down the screen. So when you write a piece of fullscreen code, you know exactly when it is going to be executed, how many cycles it takes, etc. The resulting feeling of control, of being in charge, is difficult to let go. One tends to miss it when programming on PC.

A few times I took a certain evil pleasure in talking to fresh PC programmers who tought they knew it all. I invited them into the depths of Choice of Gods. The look on their faces when they finally “get” the concept of self-modifying code is priceless. The fullscreen code integrator, i.e. the tool taking a piece of assembly code and transforming it so that it runs correctly in a fullscreen, is another old favorite. I remember some Java programmers who had quite a hard time understanding that one… It is a lot of fun.

Some gave that demo a cold shoulder. This was understandable: as far as the code was concerned it was quite good, but the overall design was rather poor. Admittedly, we never cared about design, we had way too much to do in terms of code, and no artist anyway – in fact, I was the one drawing a lot of the pictures, fonts and logos. So this one was clearly by coders, for coders. And, well, coders did enjoy, well beyond what I ever dreamed of. After releasing that demo we were out of breath, exhausted, wasted. Reading again the various messages it contains (hidden ones or not), it is clear that we were ready to give up. We did not want to ever make a demo again after that one. Too hard, too crazy. And yet…

We got a really strong and encouraging feedback. It was a bit mad, to be honest. Suddenly we got greetings in other demos. Fan letters. Raving reviews and messages on the Minitel. Some people went bonkers in some coding-parties when watching it. And so on… How could we let that go? Of course we could not. Once you have tasted a bit of that medicine – fame -, it is kind of hard to stop. And so, we did not.

Proud of our little baby, we went off on a new crusade against bugs, exploring new ideas for new demos. 3D was particularly promising. We were pretty much done with anything 2D, but we still had a lot to learn about 3D.

Comments are closed.

shopfr.org cialis