Archive for the 'Atari ST' Category

The early days (3/10) - the Atari phase

Sunday, May 20th, 2012

I heard a rumor. My brother had a friend whose brother had a brand new computer… Intrigued, I arrived at the friend’s place, whose brother was the happy owner of an Atari 520 STF. This was a mythical machine whose prowess I had read about in the first issue of Génération4. But I approached it unsuspecting, jaded, not expecting much. On paper the screen resolution for the ST was the same as for the Amstrad (320 * 200), the sound processor was quite similar (3 channels, soundchip tunes), and thus I thought both machines would be of comparable quality, with maybe a performance edge for the ST since it was running at a higher clock frequency…

Not at all! What a mistake I made that day, to lower my guard!

First image, first shock.
First note, first slap in the face.

Goldrunner. Head on. I could have thrown myself head first against a wall, the effects would have been the same.

Mouth open, staring eyes. What can I say? Impossible to explain in human words. Complete and utter disbelief.

Ruthless, the brother of the alleged “friend” (a friend, right?! (*)) shows off one game after the other, while my body and soul tremble with jealousy.

And then, then, to finish me off with a sadistic pleasure, he ran… a demo! A fucking demo! And not the lousiest one: the L.C.D. from The Exceptions!

I eat this at point-blank, the impossible comes true in front of me, TEX, Mad Max and his gang for an intense and concentrated mix of extreme code, mindblowing music, never seen before, never heard before, unreal.

As a final kick in the nuts, and to make sure I go back home with my brain in my socks, he presses the RESET button… And I witness my first Reset demo, made of digitized applause samples ripped from 10th Frame. That’s it, I’m done. Overdose. I have seen too much in too little time. My saturated mind does not register anymore what goes on around me. I must leave.

I go back home on autopilot, in zombie mode. Disgusted. Absolutely and terminally disgusted. I do not understand how the two machines, ST and CPC, with similar specs on paper, can be so different. I do not understand and I do not bloody care! I need a ST. In two days or two years, no matter how long it takes, I must have an Atari. How else could it be?

The transition period is unclear in my mind. I guess I kept playing on my CPC, a bit sad. But anyway, you guessed it, one day I finally got a ST.

I got an ST, and it changed everything.

The first days were incredible. I was in awe of even the beep sound effect from the Atari’s keyboard, it was so pure and crystal clear! I was amazed by Barbarian from Psygnosis. Just as the CPC was a different world compared to the Apple IIe, the ST was another galaxy compared to the CPC. There was no competition here. I experienced almost a big slap a week, and always came back asking for more. One day I bought Captain Blood. And when I heard the intro music, the first digital music I heard in my life, I just went bonkers. There was a gaping hole between this and my little music from The Temple of the Sun, and I was dizzy, looking straight into the abyss. At this point there was only one thing left to do: I laughed frantically, thinking the future would be eventful and tumultuous.

As it turned out, I was right about that.

(*) Despite what I wrote above, we became very good friends afterwards. I spent countless hours at that guy’s place, watching ST demos or playing ST games. That person was Amaury Aubel, now working as Head of Effects for DreamWorks.

The early days (4/10) - from games to demos

Sunday, May 20th, 2012

ST games had an interesting new feature: the “cracked by” intros. ST games were unreal for me, coming from the CPC. But these intros were the ultimate form of unreality, unidentified mutant objects that surpassed anything I had ever seen in video games - and I had seen a lot.

Better. These intros were better. Better coded, no doubt. Unquestionably more beautiful, with more colors. Out-of-this-world colored bars called rasters, that one could only find in those “demos”, managed to invade the usually empty screen borders. They were displayed outside of the screen! Again: unreal.



Curious, as always, I gradually gave up playing games to investigate these famous intros and get a closer look at them. It was also at this time that I first connected to servers such as SM1*ST or RTEL. This was on the Minitel, long before the Internet. I made contact with some people. With a lot of people, in fact. Not doing things halfway here either, I ended up with a lot of mails – I’m talking regular “snail mails” here – coming from all over the country. My mother used to joke I had more mails than a French minister. That network had basically a single goal: to share demos.

And one day in 1989, I received a particular demo from one of my contacts. Not your average demo. The most legendary demo in the history of ST demos: the Cuddly Demos by The Carebears (TCB), from Sweden. And that day my life changed. It is no exaggeration on my part: it is clear that the next 5 or 6 years of my life have been in one way or another influenced by what happened that day.

What happened was nothing out of the ordinary on paper: I just inserted the Cuddly Demos disk in the drive, and I booted the machine.

And I got torn apart like never before. I remember this like it was yesterday. I had never felt anything like this. It happened at just the ideal time: I had not seen enough to be completely jaded (that would happen later with the Amiga, which for this reason impressed me far less) but I had seen enough to know that the world had never seen this before! Mindblowing is too little a word to fully convey the force, the power that exuded from this demo. Brain petrified, leached, liquefied, shoo! I fail to explain with words what I thought and felt at that time. It was not just unreal anymore – I had come to terms with the unreality of that world -, it was worse than anything I had brought myself to accept so far. The Carebears invented everything that day, and put on a single disk what others would then painfully rediscover in the years to come. Techniques that even the designers of the Atari ST would have had a hard time replicating. A visual unthinkable folly. Think of it as if suddenly your black and white TV had started to produce colored images, out of the blue. Complete madness.

That was the last drop. It pushed me over the edge. It was too much for me. I was terrified and ecstatic at once. Terrified by the extent of my ignorance. Terrified by my littleness. I was wasting my time playing stupid video games when others were doing… this? But I was ecstatic because it was possible. It was possible to do with this machine so much more than what people believed!

My decision was made. And irrevocable. Whatever the cost, I would also create demos. Me too.

I learned that demos were coded in Assembly, which reminded me of bad memories and put my ambition to rest for a while. I could not wait to start programming these magical things myself, but I did not know where to begin. Taking advantage of the STMag and RTEL servers, which both had programming forums and chats, I unearthed a few experts in Assembly language, looking for any help, any tool, any source code sample.

I quickly found a mentor, a guy named Loïc – a.k.a. Pirateal. He kind of took me under his wings and provided me with tools (Devpac!), a few source code examples, and more importantly agreed to answer my naive newbie questions. And boy those kept coming! I had a thousand questions a day, for any small insignificant detail…

Questions kept coming, demos kept coming. I am not going to list here all the demos that blew my mind at the time, but one of them deserves a special mention. While the Cuddly was the unquestionable number one for me at the time, a close runner up was the MindBomb from The Lost Boys (TLB). I do not have a lot of programming heroes. I think I might have maybe 3 of them: Nick of TCB, Manikin of TLB, and Steve Bak – from Goldrunner’s fame. So it is worth mentioning all those years later that the world caught up with one of them, Manikin of TLB, now responsible for nothing less than God of War. Yes, that game. There are very few people who managed to blow my mind twice with a 20-year interval inbetween, so, well done sir.

Anyway, in the end I learned 68000 Assembly. To make demos. Learning by playing, as always.

I created a few small demos that I submitted to the STMag server, so that other people could download them - I knew the sysop, Mic Dax, well enough at that point to just boldly ask him. And before you ask, yes, we could download stuff from the Minitel, from at least as early as 1986. Those first demos were not great, but quite decent still. I was very proud of them in any case.

But something was missing. Something vital.

To create demos seriously, I needed a group.

The early days (5/10) - Holocaust

Sunday, May 20th, 2012

The group was born one day at a computer convention, the “Salon de la Micro”, in 1990. I went with a friend, coder-wannabe like me, from High School. Let’s see… I got my “baccalaureat” in 1992, so I was at the time in Tenth Grade. This computer convention was the event of the year for me. Impossible to miss it. It was the logical sequel to the old AmstradExpo I had followed in the past. But the 1990 edition would have broad implications.

In one corner, on a screen, a demo. I catch a glimpse, but shoulders and heads block the view. Ouch! That’s a screen from The Overlanders. For those who do not know, The Overlanders were the French counterpart of The Carebears: the best in their field… Especially when they joined forces with another star who often revolved around them: M-Coder!

Alert-eyed, I listen carefully and focus my attention on the ongoing discussions. And a shiver goes down my spine when I realize that… Dammit! Those guys chatting in front of me are The Overlanders! And I finally notice, in their back, embroidered on their jackets, the well-known logo: OVR!… I feel humbled.

Feverish, I look for my friend so that he also enjoys the show. I find him talking with a stranger. I quickly learn that the guy he’s talking to, Selim, is looking for people to start a demo group. Wait, what? We take the bait immediately, of course. I hear with amazement that Selim has many contacts in the fortress that the small closed world of demomakers can be. With The Overlanders in particular since he has been in the same class as Ziggy Stardust, their leader! A weird picture forms in my head: Ziggy in school? It sounds so amazing, so out-of-place… But this brings me back to Earth: yes, these people are regular humans too! Contact is made with Selim: he lives in the Paris area, like we do, and we promise to meet again. You bet! You don’t let go someone who has followed the same courses as Ziggy Stardust! I take this opportunity to dot the i’s: Ziggy is not a fan of David Bowie. Legend has it that he chose this pseudonym for a completey different reason: you can also read Stardust as “star du ST”…

The machine had been set in motion.

I remember a few code sessions with my coder-wannabe mate, later known as Elric. New contacts as well. Newtek, Dan Nato… how did we meet them all? I do not remember anymore. One thing I do remember from this period is the day we found the name of the group: Holocaust ! Rather aggressive and loaded, right? This could be seen as the same provocative and iconoclastic behavior that made me appreciate Hebdogiciel. But it would be dead wrong. At the time, the historical connotations of that word completely went over our heads. The only thing we saw was that it ended with “ST”, and that was it. Fair enough: that was not our brightest moment… Nonetheless, it popped up one day from the tortured mind of our friend Michael, whose musical taste at the time was somewhat standard for a teenager: Morbid Angel, Cannibal Corpse, Iron Maiden, that kind of cheerful music. This may very well explain where the name came from. I can still see us at school, in the middle of the study room (!), seeking a nickname for the future Elric and a name for the group. Well, we had just found both. That is what study rooms are for.

That was it! We had a group, we had the structure, we had the people. Better: we had the potential thanks to Dan Nato. Dan did not produce much for Holocaust, but he did one fantastic thing in the early days of the group: the FlexiScroller!

It was awesome. Very impressive. Never seen on an Atari, and as far as I was concerned never seen at all, anywhere. And yet he had done it, easily, quietly, with an unusual modesty – that was definitely not the norm amongst demo coders. And it was for the group! Merely thinking about the opportunity that Dan was offering us here made me feverish. That was it: we suddenly had a chance to create a demo that, whatever happened otherwise, could make a few jaws hit the floor – if nothing else, at least for the FlexiScroller. This was the key to the castle’s locked door. This was a way to make our breakthrough. A way to reach the other side of the mirror. A way to reach the same level as our idols… Terribly exciting. And also very, very scary. For the first time in my life I experienced a classic phenomenon in demomaking: anxiety related to time! Time passing too quickly, leaking, and playing against us. Because we had to be the first ones to release a 3D FlexiScroller like Dan Nato’s… It was a unique opportunity to create a name for ourselves. The stakes were too high, failure was not an option. Unfortunately, apart from Dan’s routine we had nothing. Not a single screen. Nothing at all. We had to create everything else from scratch. There was this terrible anxiety that gave me the chills (really!) when I received a new demo in the mail, the fear of seeing someone else releasing a FlexiScroller before us…

Let’s fight! Dan Nato’s effort had galvanized me, had showed us the way. I gathered my strength and threw myself into the battle, heart and soul. I have never learnt and coded as much in my life as during that time. I spent my days and nights coding, living each new demo as a missile to dodge, every minute of code as an ongoing challenge. More than ever I was on the Minitel looking for clues, hints, new routines, useful contacts. Like a lot of other people at the time, I focused my efforts on the two greatest ST mysteries: fullscreen and sync-scrolling. Information was scarce. I spoke at length on the Minitel with other sorcerer’s apprentices, experimenting my magic potions on the video controller for hours… My fears increased gradually as time passed. I already felt we were too late, that we had missed the ST boat, missed the great discoveries from Level16 or TCB. I had the feeling we started coding on the ST when the boat was already sinking and the rats already leaving the ship…

In any case, I made my first fullscreen thanks to a girl.

I beg your pardon? What? Yes sir! Thanks to maybe the only coding girl on Atari: Killer D, from FMC Connexion. Or at least, it was somebody pretending to be a girl, you never know. In any case “she” was my teacher in anything fullscreen-related. She sent me bits of the Full Show source code… and when, after a long time deciphering them I finally managed to run my first fullscreen, I got seized with a wild and uncontrollable joy. Finally! Finally I was ready to compete with the best! I felt like I was unveiling one of the best kept secrets in the history of the ST. It gave me an unquenchable sense of power… Encouraged, more than ever determined to create the demo of the century, I plunged headlong into the code again, living for that and only that.

As for the sync-scrolling, I only “got it” months later thanks to a friendly chat on RTEL with Fury/Legacy. And I must note here that, perhaps not so surprisingly, the same Fury now works in the same company as Manikin/TLB, on God of War as well. This really is a small world.

The early days (6/10) - The Snork Party

Sunday, May 20th, 2012

My first coding-party was the Snork. And with it came the pleasant certainty to now formally belong to “the elite”. Being invited to a coding-party felt like a validation, a solid proof that our work was good enough, evidence that in one way or another we were now recognized as peers by people we considered our models so far. This was a unique event, not to be missed.

The Snork took place in 1991, in the so-called Pressoirs d’Epernon, near Paris. I will never forget it. I could not sleep the night before. Too excited. All the stuff I saw there left a deep mark in my mind. The place, first. The Pressoirs, the presses, looked like a crypt. Or grottos. I remember a large dark room with no windows, something between a cellar and a cave, creating the perfect atmosphere for sorcerer’s apprentices… A crypt for vampire-coders, that fits. And then there was the chaos. A coding-party is a coding-party. Tables, chairs, screens, keyboards, speakers, cables, hundreds of Coke bottles… And then there were the people. The people! Our idols were all there, flesh and bones, at our fingertips! Human beings like everyone else, I suppose. Except few human beings “like everyone else” code for fun in Assembly, especially things like rasters, plasmas, mega-scrollers or even 3D on TT!

Oh the 3D! This is the day I saw 3D stuff for the first time in my life – if I ignore commendable yet unimpressive early efforts in wireframe, e.g. Relief Action on the CPC or StarGlider on the ST. I’m talking real smooth filled 3D here, on the Atari TT, created by the most alien coder in History: Zarathustra. That Japanese-looking crazy guy seemed straight out of Akira to me, with his long, thin fingers that seemed to stretch much more than humanly possible on the keyboard. This pianist-coder, Pascal de France, was the stuff of legend. How could I forget that? In the aftermath, it was also the first time I discovered Amiga demos… In other words, a huge slap in the face. Vector Exterminator and Elysium, no less.

In short, after the Snork, I was nothing more than a disconnected, completely wasted zombie - but I felt great. I had gone in a very short time through a wide range of emotions that only strengthened my initial beliefs: this world was beautiful, this world was healthy, I was part of it, and I would fight to the death to contribute something!

Which we did in 1992.

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

Sunday, May 20th, 2012

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.

The early days (8/10) - Rising Force

Sunday, May 20th, 2012

The Rising Force episode is one of my fondest coding-related memories. It happened at a coding-party, the Crystal Summer Convention II (CSC2). The Rising Force name obviously comes from Yngwie Malmsteen’s band. Let’s just say that at the time, we were fans. And it seemed to fit us like a glove. (For the record, I learnt for the first time about Malmsteen in a computer magazine, Micro News.)

Weary of war against competing groups, we had released Choice Of Gods without further ado. Without special announcement, without advertising, not even in the context of a coding-party – we simply sent it to a few swappers and called it a day. We were isolated from the small world of the demo scene, not aware of its gossip, rumors and stories. For the most part we stayed in our little corner. The Rising Force case was different. For the first time we went to a coding-party with a new creation, with the explicit goal of winning the demo-competition that took place there. We were going to witness people’s reactions live, on the spot, in realtime…

When we got there, we already had the screens. There wasn’t much left to code, we basically just had to put everything together, stitch one screen to the next, transfer that to a disk, done. And we naively thought we would wrap it in a few hours. That was a fatal mistake! Maybe a bit illogically it is, I think, notoriously difficult to code efficiently during a coding-party… Except we did not know that yet. It is impossible to code in a coding-party because too many extraordinary things happen all around. Too many people to meet, too much to say, too much to see. How can you focus on a task when speakers and decibels explode around you? When dozens of people constantly interrupt you for a chat? How do you track and kill a particularly nasty bug, which requires discipline and calm, in the midst of chaos? You guessed it, what had to happen did in fact happen: throughout this party I faced a bug… wait, no, not just “a” bug, it was the mother of all bugs. That was Murphy’s Law at its best: the bug that never happens, except when it can be the most damaging. Before we arrived, the organizers had already collected all competing demos, and thus they more or less already knew who would ultimately reach the podium. Oxygen, an already famous ST group, had joined the party with a finished demo, worthy of them. And then there was Nucleus/HMD as a challenger, with a demo called Phototro. Fighting like hell to finish it on time, his goal was to beat Oxygene at their own game for once.

And then, there was us. We arrived there after everyone else, but we did arrive anyway. And the small and little-known group named Holocaust was about to become a huge, a giant grain of sand in the well-oiled Oxygene machinery.

To be fair we only had a few scraps of demo, small pieces that we tried to pick up and put together. Design was lacking. It did not look polished or anything. Nonetheless, it was more than enough. Because of our isolation, because we had stayed away from “the scene”, we had never fully realized how good or how bad we were, compared to the competition. And thus what happened when one of the CSC2-people checked out our stuff was a genuine surprise to us.

Unforgettable: here we are, Elric and myself, showing a few screens to one of the jury members. The man in front of us, initially imperturbable, does not pay much attention. And then you see a spark of interest. And then something like a shock. His smile melts away. I think he realizes that the two scruffy mutants in front of him may be more than just Sunday coders after all. One of our specialties appears on the screen: a twisted mix of precomputed delta-compressed vectors, spectacular FlexiScroller, real-time 3D, all of this running at 60 Hz with, icing on the cake for us, a tiny touch of design to seal the deal. The man in front of us is stunned. He stammers out a few words, and without further ado he walks away, starts to rush behind the scenes, disappears. I suppose he went to tell the other guys that there might be a slight change of plans…

Elric and I are stunned as well. Receiving messages on the Minitel praising Choice of Gods is one thing. But this right here is something else entirely. It is much more striking, much more convincing: it is real, it is live. At that moment I started to realize, gradually, that we had gone beyond what I had imagined. It felt like not only we had reached the same level as our models and heroes, but in fact we had gone even further. And maybe we were in turn playing the role of pioneers, adventurers discovering new horizons and new possibilities.

While Elric follows the man behind the scenes to show off the rest of the demo (I am told this was epic!) I focus on the tedious bug that has kept me busy for several hours now. I try everything I can. I check everything. I recompile 100 times. I rant. I swear and I sweat. The organizers, friendly enough, push back the deadline for us, hour after hour. In vain. Meanwhile, I am in hell. As said before, I do not like doing things halfway. I am passionate. I put everything I can, all my heart and all my soul in what I do. And bloody hell that day, I thought I’d go mad. Mad with rage against this stupid machine that crashed constantly. I wanted to scream, to hit something, to throw the keyboard against a wall. Nothing worked, nothing. It was incomprehensible. A minor innocent change could make everything crash for no apparent reason. Or rather, there was a “reason” in a way: Murphy. Since we had an opportunity to beat Oxygene, HMD and all the others, there had to be something blocking our way, right? That is the Law. So time passed. And passed. And then so did the deadline. Disgusted, enraged, I had tears in my eyes: that kind of bug had never happened before! Never like this! It only happened, of course, when the stakes were high.

The competition took place in a small room, one floor down. People were starting to move, going there first to grab good seats. My eyes had not left the keyboard a single moment since the day before. And they still could not. I could not give up. Never! Not as long as I breath! I persisted. Minutes went by. The last remaining people left the room. The contest was about to start. Bitter, without much faith in it, I tried a final change… Will anybody ever believe it? It was there, and it was obvious. It was right there in the middle of the unpacking routine, which we did not write ourselves and which I would never have suspected. There it stood, proud and stupid, the most destructive bug I have ever faced. I compiled in haste, cold sweats going down the spine, and I ran the demo.

It worked. It was unreal. All the changes made since the previous day, all the pieces of the puzzle fell into place. The demo was running. I could not believe it. It was insane. It was the worst scenario I could have imagined, the meanest joke ever: everything worked, just a tiny bit too late. It was fucking unbelievable.

Too late? I was pumped full of adrenaline. I was over-excited. Disgusted as I have never been, vengeful, willing to try anything to tame this… this… this fucking bullshit piece of a demo! A second of eternity. And action! I never acted so fast in my life. Fingers fly over the keyboard. Floppy disks are inserted in the drive at the speed of light. I compile. Painfully slowly the demo is transferred to disk, one sector after the other. I have my finger on the drive’s eject button. I am already up, ready to sprint as soon as the drive’s LED goes off. Now! I run like hell, my mind is stewed, I rush down the stairs like a madman, raising the disk high in front of me… When I finally manage to find one of the guys in charge of the contest, and articulate some intelligible words to explain what the hell is going on, there are only three demos left to show on the big screen. But I won! I did it! It’s over! I got rid of that damn disk! I can now collapse, sleep, forget, relax…

I find Elric, staring blankly ahead. I am so tired. I explain the situation to him, and I finally take a look at the big screen. As a matter of fact the last two official demos to be projected there are the ones from Oxygene and HMD. Renewed interest. I check them out, as a connoisseur. They are rather good, but they lack something, they are no masterpieces. The Oxygene demo ends. I hold my breath.

One of the speakers starts to talk. Yes, there is a demo left to show. Yes, this is the one from Holocaust. Yes, it should have won if it had been completed in time. But it was not. And there are some minor bugs left in it, so…

True enough, it still has a few weird rendering bugs. Sorry, had no time to fix those. At least there is something to see. The demo is shown on the big screen, and I discover it at the same time as everyone else. I did not even have time to test if that disk worked from start to finish! But everything runs well. No crashes. I hear some reassuring comments around me: “Is this running on STE or STF?”. That one made me smile: dude, of course this is on STF! If you think we need an STE to do that, you’re dead wrong! Fullscreens, 3D, fractal mountains and a few effects never-seen before on ST catch a spell on the audience. Nobody expected anything like that from this rather unknown group… The demo ends… and we get a standing ovation! I will never forget that bit. After days of fighting that bug, this was a wonderful, extraordinary reward. I’m smiling, I’m on a cloud. Was I tired a minute ago? My fatigue is completely gone. This was the moment we understood that we had done it. We had reached our goal. We could beat our former heroes, Oxygene and others, at their own game. We could start believing in ourselves.

There are some days in life that you never forget. I had just experienced one of them.

The early days (9/10) - Japtro

Sunday, May 20th, 2012

The snippets of code used in Rising Force had not been created expressly for the CSC2. They were taken from a much more ambitious project started earlier, codenamed Japtro. At the time there was a plethora of demos with strange, creative labels. Traditionally it all started with intros and demos. But soon enough some hybrids started to appear: trackmos, dentros, etc, I even saw a “pantro” once. And thus, there was no reason for us not to create our own label. This is how the Japanese Dentro, or “Japtro” was born. At that time, Elric and I were in our Manga phase, and sure enough we wanted to share this with our beloved audience! After the Rising Force experience, we went back to code like never before, hungry for success. We had tasted a dirty drug called fame.

The new challenge, the new battlefield was 3D. The new opponents, as in a classic DragonBall scenario, were far more powerful than the previous ones: Overlanders, Equinox. The Overlanders, the very people who had motivated us years before, in the Salon de la Micro 1990. The old masters. As for Equinox, represented by Keops, they were the gifted challengers we had to monitor very closely. Needless to say, it was not going to be easy.

But the Rising Force episode had changed everything. We felt ready to compete with anyone. The Japtro project accurately captured this fighting spirit: four disks crammed to the rafters with code and graphics, going in every direction, trampling underfoot the so-called stars of the day (too bad for Keops!) without a shred of scruples. It was rough, naked, stripped, with an almost total lack of design, delivering some raw code to those who wanted it. Design? Why? Sorry, this is not what we do. We did not care a bit about design, and we did not mind pointing out that fact, even if we had to insist rather tediously. We felt like hardcore coders. In fact we felt like the Pure Metal Coders from the Amiga. And this is thus not a coincidence if the Japtro intro, where the camera moves in a 3D labyrinth that is eventually revealed to be a Japtro logo, is in fact inspired from a PMC demo.

The birth of Japtro was an amazing experience. Elric came to my place a week before the coding-party in which we wanted to present the demo. We already had a lot of code and manga drawings coming from a PC, we just had to put everything together and wrap things up. For a day or two, nothing happened. We did nothing. The day was spent watching demos from other people, mentally preparing ourselves for what would follow. And then we reached the moment when we knew we had to start coding. That was it, now. There was no way to wait any longer. Duly noted.

Intensive code for 3 or 4 days. Special moments where emulation is at its peak, where reality fades, giving way to the creative process that captures all the energy of the author. During these days, what usually never happens did in fact happen: everything clicked. We did not sleep, we barely ate, we just coded. And everything worked the first time. No bugs, no crashes, accurate and well thought out code that practically writes itself. At one point a major source file got accidentally deleted. Usually this is a catastrophe. But this time, we just recoded the whole thing in a few hours, and more efficiently to boot. That was just unheard of. Magic moments when man and machine become one, moments of perfect symbiosis where things Just Work, smoothly and effortlessly. We were on auto-pilot, on a suicide run. We stayed in the flow the whole time, and managed to complete three disks in three days. I still do not know how. I have never experienced such an intense coding session afterwards. At the end of the week we had four disks shock full of stuff for an epic demo that blew away everything we had done before. We were exhausted, washed out, but proud. We had enough ammo in there to kill any opponent without compunction. High-speed 3D, spectacular fullscreens, a whole bag of new tricks, funny things involving Keops (funny for us at least!), a ton of fullscreen pictures, in short: an orgy of code, music and graphs for a beast of a demo. Four disks at once? Only the Phaleon demo matched that. But dozens of groups contributed to that one, while we were alone! Two coders to fill up four disks. I think nobody ever repeated that feat in the years that followed.

The demo was presented at the Saturn Party II, and it was a success. Still, I was not yet completely satisfied.

The early days (10/10) - Blood

Sunday, May 20th, 2012

There was something missing. Just before releasing Japtro we had attended the Intermedia Forum, during which we had discovered the Flipo. This was the first demo from Diamond Design – a bunch of wizards that included, among others, some ex-Oxygene members. That demo was a jewel. They did things that we did not know how to do, and I found that unbearable (*). Similarly, the famous 3D demo from the Overlanders in the European Demos, or the fabulous Brain Damage from Aggression certainly felt like a thorn in my side…

(*) Note that the main force behind the Flipo, Oxbab, is now co-president from Naughty Dog and the main force behind Uncharted. Yes, that game. There is something about old ST coders!

Competition, competition… We could not stop there. We had to do something, no matter the cost. Something better. We were good, but we were not clearly better than the others. And I remembered in my dreams the giant gaping hole that had originally separated TCB from the rest of the world… This is why, in a final burst of creativity driven by jealousy and the desire to “rule” once and for all, we went back to coding. And this time it would be to the death.

Always faster, always more. We had often remade the same effects from one demo to the next, but bigger and better. Blood was no exception. I imagined tortured and twisted tricks to speed up our polygon-filling routines. I did sordid experiments with the video screen memory to save a few cycles. Elric pulled out of his magic hat some of the best routines he has ever created. And for once, following the Flipo’s lead, we paid a minimum amount of attention to the demo’s overall design – for the first time we even got graphics from a real artist, Mic/Dune. The difference was obvious!

Years later the fist disk of Blood remains one of the things I am the most proud of in my life. I go back to it constantly. I still watch it in 1998, amazed after some years of coding on a PC, by the miracles we pulled off with those simple STs. And I am proud of these routines, proud of having lived those times, proud of our contributions to the ST demo world, proud of having been a part of this adventure. It was not so long ago, but it feels like it was in another life already.

I did not exactly find the same drive, the same passion, the same insanity, the same “yes we can” attitude, the same “try to beat this” challenges in any of the things I did on PC afterwards. Coding on PC always feels a bit sloppy. Made/BOMB once said that when moving from Deluxe Paint to PhotoShop he lost “le contrôle du pixel” – control over individual pixels. That was spot on. And that is exactly what I also thought about the code: on PC, we lost “le contrôle du cycle” – control over individual cycles. I miss that. Coding on PC is goal-oriented: you program something as a mean to an end. You program this or that for a game, or for a tool, or just to feed a graphics driver. On the ST however, there was a certain form of beauty in the code itself, in managing to eliminate each and every “useless” instructions, in the certainty you could have that a given piece of code was fully, totally, utterly efficient, without a single wasted cycle. There was a neverending challenge just pushing your own enveloppe, competing with yourself, see if you could do better. The clear optimization rules on the ST made that possible: if you save one NOP anywhere, if will go faster. If you remove an instruction, it will go faster. It is like a game of Tetris, where you try to remove as many useless instructions as possible while organizing the remaining ones in ways that minimize the amount of holes. On the PC, all bets are off. Saving a NOP might go faster, or not. Removing an instruction might go faster, or not. The “optimization” you do on your machine may make things slower on another machine. The optimization rules one day might be different the next day. This makes all the micro-optimizations we loved spending time on completely pointless.

Coding on ST felt like fun. Coding on PC feels like a job.

Maybe I just stopped being a kid who wanted to take over the world, and I became a grown-up.

In any case, Blood was shown at the Place to Be Again, where it only reached the 2nd place. It did feel like a defeat. Having put everything we had in that demo, it felt very disappointing not to reach the 1st place. It was supposed to be a fight to the death, and we had lost. Soon after we stopped programming on the ST. Some amazing things like Tim Clarke’s Mars had started to appear on the PC, and we slowly moved to that machine. Coding on PC was not much fun. The first days were very frustrating: no INCBIN, no IDE integrated with the assembler (WTF!), memory was apparently limited to 64K in real mode (WTF!!), 80×86 assembly was retarded compared to 68000, we had to use different programs to compile and link (WTF!!!), it felt prehistoric compared to Devpac. But the PC’s brute force power was too alluring to ignore, so we bit the bullet and started learning. We later joined BOMB and a few other groups, but this is another, far less interesting story.

What do I conclude from all this?

I feel lucky to have started programming on those old machines. It was so much fun.

I feel sad for the poor kids starting programming in Java.

Idols, heroes, models, mentors, are only regular humans. You can beat any of them with hard work and a strong motivation. “Yes we can”.

You do not even need the fastest code in the world to do so. We got great results in Choice of Gods using very limited 3D rotation routines we got from STMag, and even bits and pieces of the disassembled Line-A. Jeez we really had no shame. “Whatever works”.

Rules are meant to be bent. Limits and world records are meant to be broken.

Don’t be a “prophet programmer”. Be a Nick.

OMG I’m a geek

Thursday, June 18th, 2009

Yesterday I woke up from what must be the geekiest nightmare ever.

In the dream, I was back to my old Atari ST days. A friend of mine was at home, using my ST to watch demos and play games. Suddenly he complains that the drive doesn’t work anymore, and that all the disks he tries are failing. I check it out, and I realize that the moron managed to insert 2 floppies at the same time in the drive! Shivers down my spine: it’s the 2 disks of Blood, and I’m starting to panic because he may just have killed my only copy. I painfully remove the 2 disks from the drive, then put one disk back to check everything still works. I reset the ST by pressing the small button in its back. The drive starts reading the disk sectors slowly… one at a time… tac… tac… tac… Something’s wrong. The frequency of the “tac” sounds is too low, like one per second. Should be much faster, like when booting Return To Genesis, here it sounds like the horrible Atari ST version of Out Run, which was loading for ever, super slowly. tac… tac… tac… I’m white with fear, the asshole killed my ST ?! tac… tac… tac… It loads ad infinitum, nothing happens… the thing is dead… tac… tac… tac…

The dream blends out, reality blends in. I emerge from that nightmare. Slowly.

Something is still wrong. I still hear the drive.

tac… tac… tac…

Half asleep I turn my head towards the noise.

And I see that loud, annoying, fucking alarm clock that my girlfriend recently bought in a cheap chinese bazar. Tac… tac… tac… tac… tac… That thing makes the same noise as an Atari ST floppy disk controller, and it took a nightmare for me to realize it.

Old dog, old tricks

Thursday, August 14th, 2008

Some discussions in the office about current issues on modern consoles curiously remind me of similar problems on the ST. A background loading thread that streams stuff from the DVD, where assets have to be carefully laid out to minimize seek times, is really the same as what people did in “trackmos” on ST and Amiga.

We didn’t use real “threads” with mutexes and everything, it was a lot simpler:

  • the demo code was put in the VBL interrupt (One ASM line: move.l #callback_address, $70.W)
  • the main code continued in the background, free to load, decompress or precompute the next effect, whatever was needed

No threads, but the end result was pretty much the same - although limited to one “main thread” and one “background thread”, granted.

We didn’t stream from the HD or the DVD, we streamed from the only thing we had: floppy disks. Properly storing your data in contiguous sectors on the disk was not only important to speed up loading times. It was also important to minimize the awful noise made by the floppy disk controller when seeking. With large seeks it sounded like the thing was about to break, so, yeah, we paid attention to those issues.

Those days I see some PC developers moving to consoles and rediscovering those problems, or cursing the next-gen consoles for those painful thorny new issues. But they’re nothing but new. cialis