The random ramblings of a French programmer living in Norway...
2014
← New siteMy software history (part 2) →
  My software history (part 1)
Sun 2nd March 2014   
My software history
Part 1 Part 2 Part 3 Part 4  

Sometimes on IRC1 you find people you've not met in many, many years. Inevitably at some point the discussion have to go round what you've been doing all these years, if you are still a programmer, where you are working, etc.. etc... and then of course younger participants start asking questions about our older stuff, probably because they are not used to interact with dinosaurs who actually programmed in COBOL, used black and white terminals, and even touched punch cards. So, for the sake of my own declining memory I decided to do a walk in memory lane and write down an exhaustive (or at least as exhaustive as I can remember) list of the programs I wrote or participated in a way or another. While I was writing this I quickly realized it would be a very long list, so to make it more edible I have split it in three parts which roughly correspond to three phases of my life:
  • This part covers what I did before I started programming for a living, so roughly from 1981 to 1995
  • The second part will cover the period of time from 1995 (when I started at Adeline Software) to 2005 (when I left France and move to Norway)
  • The third part obviously will cover what I did since 2005
I unfortunately lost most of the early works. Back in the days me and my family were ruthlessly fighting over the audio-tapes: They wanted to record recipes or concerts broadcast on the radio while I needed them for saving my programs. Add to the mix the awesome reliability of magnetic medias over long period of time... the end result is that most of my stuff is lost. All I have are printed out screenshots and listings, notebooks with scriblings and my memory. On the Atari the situation is much better because I knew quite a lot of people and most of what I did was released around, so many people happened to have copies of my programs and then ended-up on Pouet.net or other computer software archives. Source code wise I believe I still have about half of what I did. University projects, I have all of it. BTS projects on the other hand I don't have anything remaining, which honestly tells more about my interest about what I did there than in my ability to keep backups! Time to start, I hope I have put enough screenshots to make the thing not too boring!

The Genesis: 1981-1983

In the early years I did not have my own computer so I had to go to the local microcomputer club and did learn BASIC on a ZX80 and then later on had access to slightly more advanced machines such as Louis XIV2. As far as programming goes it was variants of Hello World, What's your name, Guess the number and then later things like Snake or Scroll Racer. In the mean time I was dreaming while reading the end pages of La Redoute and Les 3 Suisses3, where an endless list of micro-computers was displayed...

The Oric period: 1983-1987

I spent a good part of the summer of 1983 working in the fields in a farm helping in the corn fields, which allowed me to buy my first computer: A brand new Oric Atmos.4
Me and my Oric
Me and my Oric
I would keep this machine for almost 4 years, and in the process wrote quite many programs, first in BASIC and then in 6502 assembler5... mostly because I did not have much money to spend on software so it was easier to write my own. My first programs were mostly typed from magazines such as Hebdogiciel and Theoric, but eventually I wrote my own, such as Oric Paint (inspired by MacPaint, 100% BASIC), Panic Miner Maze (an arcade game with about 30 hand made levels, highscores, scrolling text, 90% BASIC and 10% ASM) and Xanthenos (a role playing game, never finished it because it was too large, took too long to load from tape and ultimately got corrupted).
Xanthenos
Xanthenos
There was also a gazillion of small utilities (character set editor, sound designer, attempts at compressing data, disassembler, ...) which I used for my other projects, and also many pages of sprites, animations, background graphics and pictures I did for a number of game projects which ultimately got nowhere. I wish I had photos of my first public attempt at playing music on the Oric. It was pretty bad but also pretty cool in some awkward way: Me and a friend came on stage each with an acoustic guitar on which an Oric was fitted just under the strings. Each of the Oric was powered by a big pack of batteries stored inside the guitar frame, and preloaded with a simple Synthesizer program that played notes when pressing the keys. In 1986 I bought an Oric MCP40 graphic printer and plotter and wrote my own hard-copy program able to print out color pictures much faster than what was otherwise available. I also used the printer to write a small newsletter for a high-school assignment and later used my Oric to resolve my maths questions and print out curves on the printer6
The Chevrolier News
The Chevrolier News
Around this time I had a friend who had an Atari 800XL and we started to work on our own role playing game (inspired from our Stormbringer sessions), sharing the source code, until I realized why his code ran like crap on my machine while mine ran perfectly on his: The Atari had a 2mhz processor while the Oric was only 1mhz. That was basically the end of the project, but TTZP Inc was born and at least one Cracktro would be released in the wild bearing this signature along with the Dbug II handle.
The TTZP Inc logo
The TTZP Inc logo

The Atari ST period: 1987-1993

In 1987 I unfortunately had to sell my Oric Atmos so I could buy an Atari ST7 I started slowly with the ST Basic provided with the machine, but then quickly got access to the GFA Basic8. I'm not quite sure how many things I wrote in GFA, but basically during all the time I used Atari ST machines I used GFA to build tools (editors, colors and gradient generators, text converters, data packers and encoders, ...) it was really the equivalent of what people would use Python for now. Interestingly enough, TTZP Inc survived the passage to the 16bit generation, and since my Atari XL friend (Dr Click) also moved to the Atari ST, we resumed the development of our role playing game. Ultimately the game will never be released but would end up as being the basis for one of the Phaleon Demo menus.
Tiles
Tiles
I guess my first released GFA programs were a cracktro called Sea of Suns, I've lost the code but I was able to find the main picture (which honestly is the best part).
Sea of Sun
Sea of Sun
I was not particularly satisfied with the existing painting programs at the time, so I wrote my own, called Aquarel which had as an objective to be a kind of replacement simulating traditional tools and materials9.
View of the beach.
View of the beach.
Comes 1988, a big year for me because I got my Baccalauréat G2 (Accounting, with computer programming option) and proceeded to the university... to prepare a DEUG de droit (degree in law) a the local university. Let's just say that these three years could have been put in the 'better forgotten' category, but at least this helped dissipate the idea that the concepts of law, justice, morality and rightness were related. They are not.
Mission Elevator graphics
Mission Elevator graphics
That year I released the Mission Elevator cracktro (still written in GFA Basic) and my my first real 100% assembler code, the Double Scroller intro using an ugly font and a ripped music. The switch came thanks to K-Seka. I had earlier attempts at 68000 assembler using Profimat ST, which unfortunately was not able to survive things like resolution changes or playing with interrupts without dying horribly so should just be forgotten!
Ugly font
Ugly font
Then later I wrote the Dragon Slayer intro, still using K-Seka, inspired by some screenshots of an Amiga Game which was never released (as far as I know). That was my first intro involving very big sprites and sampled sound. It will end up as a cracktro for the game Lin Wu's Challenge
Dragon's Slayer
Dragon's Slayer
By the time 1989 came, Dr Click had already dropped out of sight. He was also at the university and decided that his studies were more important than programming games and demos. At this point I continued alone on the game project and started to work on my own version of Dungeon Master. The first version was in GFA Basic but would later be converted to 68000 assembler. I also decided to give a shot at 3D graphics and played with Vector Balls and Line Routines.
Dbug Vector Balls
Dbug Vector Balls
The first wireframe attempt was using the Line A, but I quickly realized that writing my own routines was the way to go. In short this means that I participated to the early contests of 'who can draw the largest number of diagonal lines in a single frame'. I participated until it became obvious that the contest at changed to 'who can waste the largest amount of memory to beat a stupid challenge'.
TTZP 3D logo
TTZP 3D logo
At the same time I was working on my Big Scroll, a mammoth scrolling demo using 160x200 letters10. The code was not particularly efficient but it was how Mit became involved in the demo scene: He somewhat got hand of my scroller from his local disk swapper, realized I was living in the same city and contacted me. I basically taught him all I knew about 68000 programming, he printed out the source code and asked me questions on the phone about what this or that was doing.
The High Scroll
The High Scroll
It happens that this was a good investment in my own time because soon after that the student was teaching the master: While I was busy wasting my time at university Mit was skipping school to learn assembler instead. After a short while he was better than me and then returned the courtesy by pointing out where my code could be improved. I have to admit that my ego took a hit, but on the long run it taught me a valuable lesson about keeping an open mind and accepting that sometimes other people know better and are worth listening to.
Dungeon's Intro
Dungeon's Intro
This was the beginning of a cooperation who would endure until 1998, both in the demo and work environments. By the time 1990 came we had started to work on our own overscan routines and released our first set of demo screens under the TTZP Inc label.
Shadow Preview
Shadow Preview
We got then contacted by Stan Mecury from Overlanders and St Wars from NeXT, both groups wishing us to join them. We ended up joining NeXT and almost immediately started to work on The Charts.
The Charts 2
The Charts 2
Since 3D seemed interesting but got kind of difficult to work with using only assembler statements I started to write my own 3D Editor - of course in GFA Basic.
GFA 3D Editor
GFA 3D Editor
Still in the tools department, I had to fix some productivity issues caused by not having a hard drive: Loading everything from disk was slow, very slow, and after a crash and a reboot it would have to reload it all again, which when programming in assembler is a frequent occurrence. I solved the problem thanks to RamBoot, a Frankenstein tool built from existing software (a reset resistant ram disk and a dead key handler) to which I added some boot sector checking and file copying code. The end result was fabulous: My Atari ST had 2.5 megabytes of memory, and when switched on it would start the program which would then test if it was already running. If not running it would create a ram disk and then copy files from the floppy disk to the ram disk (from a user edited list). If it was already running it would just compute a checksum to verify that the ram disk content was not corrupted, and would then proceed to auto boot from the ram disk, loading the assembler, debugger, source code and assets, ... all from the ramdisk. As a result I was able to work much faster than if I ever had a real hard drive. Additionally the tool had some fancy shortcuts to fix screen distortion and color palette, reset the YM sound, and was able to check that no virus was present on floppies while not annoying us with my own bootable floppies thanks to a white list I maintained of our own boot sector checksums. On the side I started working on a vertical scrolling Shoot-Em Up using hardscroll and top+bottom border technics. The code was able to auto-detect the tolerances of the machine by trying to start the border triggering at various positions and detect if an IRQ managed to start up at some normally non visible scanline on screen.
Shoot em up
Shoot em up
Then came 1991 and a major shift in my life: I miserably failed at the university and decided to re-orient myself toward computing, so I moved to Laval and started a "BTS Informatique de Gestion" (Diploma in Computer Science applied to accounting) at the Douanier Rousseau. Laval is probably one of the most boring places on earth (hint: A Mc Donald restaurant closed because it was not making enough money). On the plus side I had interesting discussion with the boss of Parx Software and I met two brothers who would later give us screens for the Phaleon Demo under the group name The Nerve Center.
Expose Software Logo
Expose Software Logo
Mit and I started to work on Euphoria, a relatively advanced arcade game for Expose Software. Mit was coding the main game while I was doing the intro, menus and bonus levels.
Euphoria Intro
Euphoria Intro
The intro sequence had some a nice module and highcolor pictures and fonts made by Chromix, and both the main menu and high-score screens were rendered in full overscan with a digi-drum music playing the background.
Euphoria: Menu
Euphoria: Menu
The high-score also used hard-scrolling techniques and full palette changes each line, just because we could.
Euphoria: Scores
Euphoria: Scores
We learned some precious nuggets of wisdom in the process as well, such as these: - A crappy game that get released is better than a perfect one that never get finished - It's more important to focus on the core of the game than on the fluff around One has to learn the hard way sometimes... Technically there was at least one actually working part of the game, the Fulltron, which as the name suggest is a Fullscreen version of the game of Tron. Calling the game difficult would be an understatement, but at least it was fully playable.
Euphoria :Fulltron
Euphoria :Fulltron
During the rest of the year 1991 we released a number of Charts, but I only participated as a graphic artist (I did the user interface element and animations in the Charts 5)
The 5th Charts
The 5th Charts
I later participated to the end of year Official Charts Compilation we did, by writing the the minimalistic loading screen (it had to fit in memory on a half meg machine while other intro were running).
Charts Compilation Loader
Charts Compilation Loader
The second contribution to the compilation was the intro screen, featuring a large picture by Bruno Bellamy with an overlaid vertical hardscroll.
Charts Compilation Intro
Charts Compilation Intro
The Charts adventure finished with the 6th Charts, my first ST/STe compatible intro (with additional digisounds on STe) featuring a game of Tic Tac Toe, font zoomer, and almost complete fullscreen rendering with a lot of scrollers moving all over the place.
The 6th Charts
The 6th Charts
I would close the page for 1991 with screenshots for what I did at school, but I doubt that the text mode based automated ticket delivery machine written in Turbo Pascal would look impressive. On the other hand I did that at home on my Atari ST using PC Ditto... yeah... the pain... Of course, to create all these demos and games we also had to create tools, such as the Ultimate Gradient Maker.
Ultimate Gradient Maker
Ultimate Gradient Maker
1992 was our big year, after finally almost two years of hardwork we released the Phaleon Gigademo. The Phaleon was a team effort, first started by The Replicants in 1989, it was finally NeXT who finished it, and I have to non-modestly say that it's mostly the Angers Team who did it. Here is the list of my own personal contribution to the project. I wrote the mini boot-intros present on three other disks, that tells you to insert the first disk, as well as all the graphics for the NeXT Step environment, and NeXT intro sequence.
Phaleon: Insert Disk
Phaleon: Insert Disk
Phaleon: Loading and Depacking
Phaleon: Loading and Depacking
Phaleon: Intro
Phaleon: Intro
Even if it does not look like it, this NeXT Step simulation code was quite difficult to write. Since all the display was busy trying to display the overscan, it made it quite difficult to do things as simple as showing the opening of a new window or the launch of an application. In the end I had to interlace some rectangle blit-copy calls in each scanline to achieve a decent display performance.
Phaleon: Intro
Phaleon: Intro
Phaleon: Intro
Phaleon: Intro
I also wrote the Fullball screen, which as the name hints involves vectorballs in fullscreen. The only part I did not do was the music, all the rest (including the eyes opening animation) were done by me. The picture was kind of difficult to do because at the time there was no software able to handle overscan formats, meaning that a lot of stitching and gluing had to be done. In the end I used a combo of my own program (Rembrandt 2) and Degas Elite to get the final result.
Phaleon: Fullball
Phaleon: Fullball
I wrote in one afternoon a very lame ShadeBobs hidden screen (you need to press reset somewhat after the main intro)
Phaleon: Shadebobs
Phaleon: Shadebobs
The Phaleon Dungeon menu of course was there, finally released after many years in the work!
Dungeon Title
Dungeon Title
Despite not being a complete game, the Dungeon Menu features a number of gameplay elements suchs as an auto-filling of the map based on your movement, both invisible and fake walls, a roaming monster that teleports you back to the center area if it finds you.
Dungeon Monster
Dungeon Monster
Dungeon Map
Dungeon Map
If the player got lost, all he had was to press the HELP key to access the built-in help, and the texts were available in four languages and could be changed at any time using the /afunction keys.
Dungeon Help
Dungeon Help
Considering the art, there was a nice selection of high resolution graphic assets, and a nice and relaxing soundchip music to accompany.
Dungeon Fountain
Dungeon Fountain
Dungeon Door
Dungeon Door
Since this Dungeon menu started as a game engine, I had a complete Dungeon Map Editor for it, featuring multiple-level loading and saving, label/text editor, minimap display and even a printer-out mode.
Dungeon Map Editor
Dungeon Map Editor
Now of course, both the Shadow of the beast and Dungeon menus were a bit slow to use if you wanted to go directly to a particular screen, so ultimately we added a Fast Menu with a simple list of entries to select.
Fast Menu
Fast Menu
The Lamer Test was written by Mit, but it used localized data generated by a tool I wrote.
Lamer Test
Lamer Test
And of course there was also the Illusion STE screen. This screen almost did not make it, some people said it was pointless to do STe specific code, that there was not enough STe machines on the market and that it would take some disk space that could better be used by other demo screens we had left over. In the end I got it in by negotiating: If I could make it run on a normal 520 STe it would be ok, if it required a 1040 STe then it would be ditched. It took some time and effort, but in the end I managed to get it to fit in half a meg while keeping most of the features.
Illusion Logo
Illusion Logo
The distorted picture from Killer D.
Illusion Distorter
Illusion Distorter
The Flexi Scroll, of course inspired from Unlimited Matrix.
Illusion Flexiscroll
Illusion Flexiscroll
Illusion Credits
Illusion Credits
Illusion Plasma
Illusion Plasma
And the famous rotating rasters, copied from an Amiga demo who claimed that an Atari could not do that.
Illusion Rotating Rasters
Illusion Rotating Rasters
I did not code anything in the BudNext Screen, but I've drawn some of the graphics.
Budnext
Budnext
We also participated to Zuul's NTM Mega Demo with a guest screen coded by Mit, all I did was writing scroll texts, design some of the vector shape and draw the logo.
NTM Guest Screen
NTM Guest Screen
My last Atari production of 1992 was an intro for the Caledonia PDL Catalog. What makes that one interesting is that it had to run on ST, STe, in color and in monochrom as well. That made for some interesting coding indeed.
Caledonia in Monochrom
Caledonia in Monochrom
Caledonia in Color
Caledonia in Color
On the serious front, I installed on the school computers some root level software written in QuickBasic to hide all my editors and tools so I did not have to use the horrendous IBM RS6000 text editor when writing C, COBOL or SQL Queries. I never got caught, and even found out that the IBM team upgrading machines spent more than half of their time looking on machines for pirated/non licensed software, which kind of annoyed the lead teacher.

The Falcon period: 1993-1995

In 1993 I got myself an Atari Falcon 03011, and started programming on it my BTS end of year project: WIND-BUL. Wind-Bul was supposed to be an advanced version of the Ambulance software used by my father. He had just bought a Falcon as well, and wanted to port his customer database and accounting software from his MS-DOS PC to something moder with icons and windows. I did not manage to finish the project to a usable state but I got a prototype able to read all the data of his old software and display it on the Atari.
WindBul desktop
WindBul desktop
WindBul Customer Search
WindBul Customer Search
WindBul Rates
WindBul Rates
After the summer break I was on my way to Besancon to prepare a Licence Informatique (Bachelor Degree in Computer Science) at the UFR Sciences et techniques. A combination of new technology, new place, lot of work at university... associated to many social events, parties and drinking, resulted in me not being as productive as I was before.
Rembrandt 3
Rembrandt 3
Nevertheless I still managed to release multiple beta versions of Rembrandt 3, while working remotely with Mit on a Falcon 030 demo which unfortunately did not go very far (The project was way too ambitious, and we spent a lot of time fighting with documentation, TOS and DMA bugs, learning the DSP, writing tools, ... so basically all that remains is few true color pictures of the intro sequence)
Falcon Demo Alien Base
Falcon Demo Alien Base
Falcon Demo Animation
Falcon Demo Animation

Besancon University: 1993-1994

At the end of the first university year (that would be the first half of 1994) we had to release our team projects. Technically I will call them 'my projects' because realistically I was the only one in the team working on them thanks to an arrangement: They would do all the projects involving pure mathematics and abstract stuff, while on my hand I would do all the projects involving graphical stuff or low level programming.
ZBuffer Intro
ZBuffer Intro
I guess that was against the spirit of the rules, but the end result is that I got very good grades for things I sucked at, while they got even better grades for things they had zero interest in: I call that a win-win situation! The first project was for the Computer Graphics course assignment, and since I already had done on the Atari ST all the things we were supposed to learn (Bresenham, bitmap-ed graphics, sprites, ...) I decided to up the ante and write a complete 3D renderer with basic shading, textures and gouraud interpolation and Z-Buffering. Thus the name of the executable: ZBUFFER.EXE. The entire code was written in Borland C++, and had to use 'far pointers' because of the size of my buffers it would not fit in conventional segments. The end result is that it runs like crap because of horribly convoluted pointer generated code. All the textures were drawn on the Atari with CrackArt, and the model and data were exported from a GFA Basic program.
ZBuffer House
ZBuffer House
The second project, called Solar System was written for the Projet d'Architecture des Systèmes Informatiques (Hardware/Assembler course basically) where we had to write something in 8086 assembler.
University Logos
University Logos
Coming from years practicing 680x0, asking me to write 8086 assembler was like asking me to hit my fingers with a hammer while screaming I LOVE IT! It was not going to happen. On the other hand I did not want to get a null grade for this assignment. After much reflexion I came to the conclusion that I would accept to write 80386 code, that would provide me with enough registers and advanced instructions to save my sanity. I had to argue with the teacher, but in the end he got convinced that having 32 bit registers would indeed allow me to do high precisions computations for the trajectories of planets, and that doing that in 8086 would be much more painful. So I got away with doing 80386 code while everybody else in the group had to do 8086...
Intro Picture
Intro Picture
So in the end I got quite a lot of fun doing the project and learned a lot of things about the PC. Technically this was more a demoscene production than a university thing:
  • The intro sequence shows each of the six symbols of the university (Recherche, Formation, Application, Sciences de la vie, Sciences de l'homme, Sciences et techniques) converted on the Atari to vector format and then displayed with faded-in gradient colors.
  • Then a 256 colors picture showing planets, stored in RLE format
  • The main part is using the 640x200 X-Graphics mode and exploits the screen split line feature to display a scrolling line at the bottom
  • When selecting one of the planets an information page appears, smooth scrolling from the bottom of the screen
Almost all the data was generated on the Falcon (Big Endian) and decoded on the PC (Little Endian), that generated some interesting results...
The About Page
The About Page
The Main Part
The Main Part
Jupiter Specs
Jupiter Specs
And that's about it for this first decade. In the second half of 1994 I started working on my Master Degree, but then I got a job offer from Adeline Software. I tried to find a solution where I could try to finish my studies while working, but in the end it proved to be unpractical and I dropped the studies. What happened from 1995 to 2005 will be the content of the second part, and as usual feedback is welcome.
My software history
Part 1 Part 2 Part 3 Part 4  



1. Internet Relay Chat, what people used before Facebook bought WhatsApp
2. A beefed up ZX 81 in a plywood box, complete with 16k memory expansion, sound generator expansion, hires graphics expansion, ... all tightly screwed to the box so it would not get disconnected and freeze when typing on the additional mechanical keyboard
3. Mail order companies, yesterday's equivalent of Amazon.
4. Since I was a bit short on cash my grand father paid for a tape recorder and the IJK Software Chess game.
5. Thanks to my uncle for offering me a 6502 programming book for my birthday.
6. Until the math teacher picked on me and decided to send me to the blackboard because I was supposedly cheating.
7. At this time I sold the Atmos with a printer, graphic tablet, joystick and interface, speech synthesizer, many books and magazines and quite many original games and utilities, all that for less than what the half meg, single sided drive Atari ST cost
8. Which in my book is still one of the best languages I ever used
9. That was before I heard of ZZ-Rush or Degas Elite
10. This code was then repackaged years later in what would be the What's That Screen?, our contribution to the Bird Mad Girl Show demo by The Fraggles.
11. This whole event would require an article by itself, but I would find difficult to not have to slander some of the Atari people community at the time.
comments powered by Disqus