Archive for the 'Atari ST' Category

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.

Blast from the past

Sunday, July 6th, 2008

My old Atari ST has been locked in a box for years. Today, out of the blue, I decided to open the box again and check the machine was still working. My first surprise was that its color changed. I don’t know what happened but the light grey disappeared and got replaced by a dirty, sick-looking, brownish yellow. I have no idea how it happened, but it looks nasty.

The second surprise is that everything works like a charm - machine and disks. I expected both to be dead by now. But no, more than 20 years after I bought it, the Atari ST still works flawlessly. I watched a few of our old demos and I now realize one thing: our taste sucked. Check out those beautiful RGB colors in “Inverted Landscapes”, one of our first screens…

The one VBL rule

Friday, May 2nd, 2008

When I was programming demos on ST, the most important (yet tacit) rule we had was the “one VBL rule”. All demos had to run in one VBL = Vertical BLank, i.e. in one frame, i.e. at 60 Hz (or 50 Hz on european machines). It was just unthinkable not to run in one frame, we’d have been the laughing stock of the whole ST scene.Games however, didn’t bother - partly because it was more complicated to create a full game than a demo, partly because demomakers at the time were kind of more talented / advanced / stubborn than their counterpart game programmers. The result anyway, is that most Atari ST games ran at very poor framerates. The only ST games I can remember running at 60 Hz were Goldrunner, Return to Genesis, Bio-Challenge, and the out-of-this-world Enchanted Lands. Needless to say, those programming pearls shone like stars compared to the mass of pale-looking ST games. Sometimes the game only worked because it was fast. Could you imagine Goldrunner running at 30 Hz? I can’t. They can’t either.

The main reason why I liked console games so much more at that time, was because they all felt better. Smoother. More polished. And, you guessed it, they all ran “in one VBL”, i.e. at 60 Hz. Alex Kidd? Gynoug? Shadow Dancer? Thunderforce III? Zillion? Power Stone? Soul Calibur? Etc, etc, they all ran at 60 Hz, because it was the norm. And for me it was a proof of quality, I could buy a console game my eyes closed and be sure it would fly on my machine.

Nowadays…. Sigh.

It makes me grin when some programmers tell me things like “Pierre, 60 Hz is for PC games! On consoles the hardware is not as powerful, so the typical target framerate is usually 30 Hz”. …… What a load of BS. “Typical” for PC programmers trying to port their stuff to consoles, certainly. Just drop your super heavy, super generic, super bloated, super dynamic deferred-lighting, reduce the useless post-processing effects, and maybe things would run better on your “less powerful” hardware.

Consoles = 60 Hz, else go back to the drawing board.

MCoder sources

Friday, February 15th, 2008

Woah! Jean-Charles Meyrignac (a.k.a. MCoder) recently released most of his old Atari ST sources:

http://euler.free.fr/AtariST/

Years ago I would have killed for that :) When I was programming demos on Atari he used to be one of my coding heroes - along with Niclas Thisell (”Nick of TCB”), God of War’s Tim Moss (”Manikin of TLB”), Steve Bak, and a few others.

shopfr.org cialis