Supaplex
(675 words)My first real paying job was at a small little company in Camberley, England called Digital Integration. The two-line advert in a national paper said “Assembly language programmers wanted for real time software”. The number included was in Reading, England. I called the number and the next week was on a train to Reading to go to an initial screening interview.
I don’t remember much about that interview. It was in a boring office building walking distance from the station. I had just finished university and had no luck getting a job, along with about two thirds of my course. This was 1991 and a recession was hitting hard. Nobody was hiring. I still remember the careers advice given to us in the last year of university:
Only about one third of you will find a job. But just be thankful that you didn’t do media studies.
A week later, a phone call invited me down to Camberley to have an interview at the actual office building for Digital Integration. Actually, scratch that, “Office Building” is a very grand way of describing a tired old industrial building nestled between an electricity substation and the local waste water treatment plant. (see Watchmoor Trade Centre)
I was quizzed on my ability to do assembly language and apparently passed as a job offer was made a week later. Having found somewhere to live in Aldershot, I packed up a few things and moved into the spare room of a lady and her family within walking distance to the station.
The first task was to take the Amiga game of Supaplex, written by a couple of Swiss gentlemen and convert it to run on a IBM PC. This was in the days of DOS, and critically everything was written in 8086 assembly code. Yeah, this was in the days before the 386 and 32-bit computing was even a thing.
My boss didn’t think that the port would be very good, because the Amiga had a blitter chip that could move large amounts of memory around quickly. However, I targeted the VGA graphics card. What is important to know is that the VGA card just has simple bitmapped graphics. At 16-colors, you could get a whopping 320 x 200 resolution. But this still means that you have 4-bits per pixel that needs to be moved and when a sprite was 16 x 16 pixels and we had up to 200 of them moving on a level at a time, that’s a lot of pixels to move.
However, the VGA cards also had 4 planes of memory. (see VGA Hardware) Each pixel on the screen would be a single bit in a memory plane, and with four planes we could have 16 colors. Most importantly, you could copy all 4 planes of memory at the same time, quadrupling the effective memory bandwidth of the system. This means that the VGA cards had enough internal bandwidth to get those 200 odd sprites all moving at a buttery 60 frames per second or so.
We also had an EGA version, for some reason, and we found a bug in that about two hours before shipping the game off to production. The EGA had a slightly different way of moving the start of the frame buffer to be displayed than the VGA, and given that I didn’t have an EGA system available, I’d forgotten about that little fact-let. A few lines of assembly code, a quick test on the VGA system I had and on another EGA system, and it was done.
I have to mention that I worked closely with Matt Smith, a graphic artist, during this six-month development timescale, porting the graphics from the Amiga palette to the PC. I only really spoke with the chaps in Switzerland, Philip Jespersen and Michael Stopp. Philip and Micheal stopped developing computer games after this.
I moved onto working on Tornado after this went out of the door. I also convinced my colleagues that programming in C would be so much easier than x86 assembly.