Archive for May, 2012
The early days (1/10) - the Apple phase
Sunday, May 20th, 2012I wrote the following text in 1998. I found the original version, written in French, on some old backup CD. I thought it was an interesting read so I translated it (as well as I could, sorry for any obvious mistake), edited it a bit, corrected a few facts, and there it is.
The story begins long before the advent of the Atari ST. It begins with my father, in Troyes, around… 1982? 1983? I discover the Apple II and it turns my life upside down. 1982? I am 8 years old. The Apple fascinates me. I am mesmerized by this strange object that sits on the desk of the so-called Red Chamber, as my grandmother calls the room. Everything fits, everything comes together to make that machine mysterious, alluring, irresistible. The room, first. It looks like a library more than a bedroom, and it is usually forbidden for my brother and I, young kids, to go there. Too many fragile things we could break. Too many dangerous objects we could hurt ourselves with – in particular some paper cutters looking like daggers. The atmosphere that prevails is almost mystical. The shelves are full of old books that seem to come from the depths of time. I imagine ancient grimoires full of magic formulas. In a corner between two encyclopedias I have already spotted something a few years before, during one of my rare forays into this place: collections of photographs by David Hamilton. Bilitis, that kind of stuff… Obviously fascinating for a small child who is said to have been born an adult.
Adult. The machine that sits on the desk, facing me, belongs to the adult world. I want to enter this world. I do not have fun at all playing with my classmates. I want to change my world, and the Apple is the gateway to… something else. The unknown. And that machine is made even more attractive by an additional fact: even the grown-ups seem to mistrust it, and fear it.
So here I am, sitting at the Apple’s keyboard. My father shows me how to insert the 5 1/4 floppy disks into the drive. Then it is simple: you turn the power on, you wait. To see what is on a floppy disk, you type CATALOG. To load a game, you type BRUN followed by the name of the game… Easy peasy.
I gradually discover the available games. I destroy Sneakers frantically with my paddle. I have a hell of a hard time landing my LEM on the moon. I fight necromancers and various other goblins in Sortilèges. (Goblin? I do not even know what it is, but they are probably evil!).
But I am curious. Much too curious. I use up the games, and I try to see a little further ahead, like an explorer in a hostile territory, what else lies on the disks, what else lies beyond… I discover new programs, curious names. (“Le Chat Mauve”? I still have no idea what it was, but the name stuck with me.) I run random programs. Sometimes they crash, sometimes they just do things I do not understand. I can type CATALOG with my eyes closed but that’s about all I can do on Apple!
Sometimes my father comes play with me, becomes my wingman in the fight against the infamous Sneakers, or my rally teammate. I always suspected my dad to be a big kid. Magic moments where nothing else matters than defending Earth, or improving our lap times.
And suddenly… what happens? A crash? I do not remember. Still, my father types a new command: LIST. And then it starts scrolling: a hellish, impossible pile of incomprehensible characters. I learn with dismay that this is the program’s “listing”, and it is necessary to type all that stuff to ultimately get Sneakers or Frogger on the screen.
I find it hard to accept, hard to fathom. How can this terrible imbroglio of hieroglyphs generate anything but a headache? It is the little nudge that changes everything. The question that was about to haunt my days from then on. This is how it all started.
Armed with some new magic incantations (how to display the listing, how to modify it… - I can modify it! Oh creative joy!) I walk up and down the source code of Sortilèges (Spells in English, a text adventure game). And I discover, delighted, that when I modify the texts in the listing, they are also changed in the game after a RUN! So that’s all it takes? Programming is not hard! I feel dizzy. I can do so many things… In fact I suddenly realize that this way I can create anything and everything I want, it is only limited by my own imagination. Too many options, too much, too fast. I am overwhelmed by the enormity of the task, by the sheer amount of possibilities. I think I leave the room a bit discouraged. The holiday ends, I go back to my mother’s place, near Paris – my parents are divorced.
The early days (2/10) - the Amstrad phase
Sunday, May 20th, 2012Soon enough I am back to my father’s place, enjoying a new school holiday period. I am in Fifth Grade. I come back with undisguised pleasure to the Apple and the adult world.
And there, I am shocked! Another machine sits next to the well-known Apple IIe keyboard. Black, green, red: I am in front of a brand new Amstrad CPC 464. And games. Pacific, Crafton & Xunk. Feverish, I watch my dad introduce the Pacific tape in the cassette deck. Cassette? Bitter disappointment for a long-time floppy disks user: the CPC only reads tapes! The loading time is unbearable! But something new makes me quickly forget this detail: colors. There are colors on the screen! It is a completely different world compared to the sad monochrome Apple II screen. More lively, more playful, less austere. Maybe a bit less adult as well… A moment later I am shocked again: the Amstrad plays music! I am flabbergasted. The limited beeps from the Apple suddenly seem very sad and very distant. Music! I can not believe it.
Follows a period of euphoria during which I suffer the brunt of the two best ERE Informatique games at the time. Pacific. And Crafton. I am mesmerized by Pacific. The silent world and its 32000 screens, according to the manual. 32000?! THIRTY-TWO THOUSAND!!! It seems like an astronomical number! How? How is this possible? Remembering the size of the Spells source code, which scrolled for pages and pages, eventually producing what was only a limited text adventure game, I remain perplexed. The listing from Pacific must be monstrous. 32000 screens! In a word, I am puzzled. And my love for impressive programming feats might very well come from that moment. Was it really a feat of engineering? Probably not – I assume the world was ‘just’ procedurally generated - but for me it did the trick. The number broke the limits of my imagination, “pushed the envelope” to quote Dave Small (of SPECTRE GCR fame), and that’s what mattered. After Pacific, my vision of gaming would never be the same.
Days. I spent days underwater, scouting the ocean in search of lost treasures. Days, not nights. I was still a kid. Around 10 PM, I had to go to bed no matter what. It felt terrible. My only desire was to wake up quickly the next day to continue exploring the ocean. And I was not alone! My father also got the virus. He said he had bought the Amstrad for us, but what a joke! He played as much as I did! Ok, fair enough, maybe not that much. Still, he completed Pacific before me. I have this unreal memory: I woke up one morning with a vague recollection of something happening during the night. Images of a fuzzy shape on a screen. I knew that something had happened but could not remember what it was. The answer came to me a few moments later when my dad entered my room, all smiles: “Do you remember the mermaid?”… It exploded in my head. The mermaid! That was the shape I remembered! I dreamt about a mermaid. But wait, what? How does he know what I was dreaming of? Simple: my dad had completed Pacific during the night, and the end-screen was a mermaid. Since you cannot save in that game, he had taken upon himself to wake me up in the middle of the night, to show it to me. And of course since I was half asleep I did not remember any of it. Just that I dreamt about a mermaid that night…
Anyway.
I was clearly hooked. I had the virus.
That fever did not go down afterwards, quite the contrary. I usually do not do things by halves. I am rather passionate. I do things thoroughly. Thus overnight I let the Apple go and seriously considered convincing my mother to get a CPC for our other place, near Paris. The details are unimportant: it took time but it eventually happened. I spent all my pocket money on games. Of course they were incredibly expensive for a small kid. I started reading all the Amstrad-related magazines I could… and there were a lot of them. Amstrad Magazine, Amstar, Arcades, CPC, Amstradhebdo, Hebdogiciel… Oh boy, Hebdogiciel! Obviously fascinating for a kid who wants to be an adult. Iconoclastic, provocative, hilarious, educational, erotic. The cheeky Hebdogiciel was the perfect magazine which, much better than any teacher, taught me about the most precious thing in the world: freedom. And independence. This was a unique journal, completely politically incorrect, with reviewers calling a cat a cat, not hesitating a second before destroying a bad game or spitting on compagnies that tried to rip off their customers – which gave birth to a few hilarious reviews. Freedom of speech at its best. I have never seen anything quite like it afterwards.
As far as programming was concerned, the listings contained in Hebdogiciel were absolute gems. There was just no better way to learn. After the Amstrad boots, you are left with a small yellow blinking cursor on a blue background, along with a laconic message: ‘Ready.’ And then you’re on your own! To run any application, any game, you must enter at least one BASIC command. And if you fancy going further, it is childish: the BASIC language is built-in, in the ROM, waiting for you. You just need to type. That is what Hebdogiciel’s weekly listings were here for. Obviously formative, obviously tempting, obviously instructive: what Amstrad owner has not copied a listing off a magazine in his life? I learnt BASIC naturally, without really realizing, to have fun playing Rescue Mission and Le Temple du Soleil.
The Temple of the Sun: another highlight in my journey playing games on Mr Sugar’s machines. It was in a special issue of the CPC journal. The kind of issue you can not even imagine those days. For people who discovered games later, with Doom, Quake or Warcraft, that stuff would make you look like a complete freaky retarded mutant, not a gamer. Think about that: a special issue of a magazine containing… source code! Pages and pages of printed BASIC code, from the first page to the last. That’s it. With maybe a small screenshot in a corner to brighten up the whole thing, even though you can easily imagine the pictures produced by amateur BASIC code had a hard time brightening up anything. A full magazine! I now understand my mother’s horrified reactions upon discovering my ‘readings’. I must have been in Sixth or Seventh Grade! Anyway, the Temple of the Sun – le Temple du Soleil. Now that was a listing. It must have been the longest listing in the whole magazine, pages and pages of source code. But the result looked incredible for an amateur game published in a journal. So I took my courage in both hands, and I typed. I was on holiday at my father’s place, and alone in the intimidating Red Chamber, I typed this never-ending listing. It took me several days to type it, and also to correct any typos. But I finally ran the program, and I entered the Temple Du Soleil.
First surprise: there was some music! Wow, I typed instructions generating sound without even realizing it. And it did not even sound bad! I never understood how to use the sound-related commands from the Amstrad’s BASIC, what were the envelope, timbre, frequency and all that stuff. I was too young. And thus, being rewarded with such a pretty melody, while having no clue how it worked, created an indescribable sense of magic that only strengthened the general room ambience. I was an alchemist-wizard locked in his laboratory, engaged in his experiments, and I had just discovered the philosopher’s stone.
Second surprise: the game was excellent. A by-the-book exploration of the Pyramid of the Sun, with its treasures, its jewels, its deadly traps, its beetles and other mummies. Charmed, fascinated, I explored “my” own game for days. I pushed as far as to rummage through old dictionaries and encyclopedias to find out about what had been the starting point of the game in the spirit of the author: the Pyramid of the Sun. I was not interested simply in the software born from my hands, but I also looked up everything that reminded me of it. This is how I learnt about the Step Pyramid of Teotihuacan in Mexico, the Quetzalcoatl, the worship of the sun and so on.
Suddenly I was far away from computers and video games! I was immersed in the Inca and Mayan customs. Smoothly, as if it had been the most natural thing in the world, I had gotten myself interested in things that would have made me yawn with boredom if anybody had tried to teach them to me at school. Learning by playing, that’s the secret. Dave Small wrote it before me. And thanks to these computers, these video games supposed to make kids violent and transform them into morons (I’ll spare you the usual bullshit), I had managed to consecutively learn BASIC and some of Mexico’s history. Moreover, this is the kind of things you do not forget. I was 10. I still remember it. This may not be possible anymore those days. Of course kids still play games, much more so than before. But they are flooded with them, and games are very easy to get: download, play, forget. You do not have to fight for them. There is no emotional bond, no emotional attachment between you and a program you spent days typing, one character at a time. Who would publish a listing in a magazine today? Worse: when something boots up, it is a PC. And you do not end up in front of BASIC anymore, you end up in front of Windows. All you need to do is click your way out of trouble. Programming languages became a lot more difficult to learn and start playing with. What happened to BASIC?
My Amstrad phase lasted a few years, during which I tried everything I could: games, tools, programming, computer graphics. I started dozens of game projects in BASIC, only finishing up a few of them. BASIC’s limited power frustrated me. In CPC I tried to dissect the assembly code from RSX extensions that the magazine frequently published. In vain. I knew about 3 of the Z80 opcodes and I had some trouble to understand the concepts of registers, stack, etc. I gave up and wallowed in video games. Until one day…
The early days (3/10) - the Atari phase
Sunday, May 20th, 2012I 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, 2012ST 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, 2012The 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, 2012My 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, 2012Our 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, 2012The 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, 2012The 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.