While coding my C64 RPG, I came across a reference to an old game of mine, one named Delphian. Sure brought back some memories!
You see, a long time ago during the C64 days before I started working, I had written a few games at home, one based upon Star Force, one of my favourites arcade games of the time. Another was based upon an old cartoon series named Centurions, and the last was a space/trader named Delphian.
Now Delphian was planned as a disc-only game (being written just for fun and because I owned a C1541 drive at the time). I had all sorts of ideas for it, and had parts working before something amazing happened in my life.
I got a job.
I can still remember that first interview at Orpheus, wondering if my little demos were good enough to impress anyone. Well, they were, and it was only long afterwards when the boss told me he was blown away by what I had presented. Guess that explains why on the day of the interview he asked me when I could start work.
So Orpheus wanted to publish all three of my games. Two of them were easy, both being relatively simple one-load games.
But Delphian was something else.
The idea of a disc-only game was quickly rejected, so I had to write the game as a single load tape game. Now, that caused quite a few headaches!
As for the game, Delphian worked similar to the game Elite in many ways, but my execution was quite different. I had 256 star-systems, each with 4 planets, and every planet could be flown to and landed upon. Every system had an Earth-like world, the others being inhospitable.
The player started on an Earth-like world, but to reach others they had to purchase oxygen tanks so they could walk upon the surface. Most planets had shops you could visit to purchase equipment and upgrades for your ship, items such as faster drives, longer range hyperdrives, better laser weapons, missiles and rocket pods.
The graphics style I used was resizing software sprites drawn onto a hires screen. Now, the C64 wasn’t renown for is speed, so the update rate could be slow at times. I countered this by driving the control inputs by a v-blank IRQ, updating the player position every 50th of a second. The result mean it was actually quite playable! So on the planet surface I used a raster interrupt to split the screen for the sky/ground.
Memory was a major problem! I opted to use tricks like setting the colour RAM to black so I could use on-screen RAM to store data/graphics. To further save RAM, I used an off-screen buffer for rendering, then copied it to the main hires screen. Not the fastest method, but it saved a lot of RAM!
Out in space I used resizing sprites for the enemy spaceships and missiles, as well as using hardware sprites for the player’s weapons. I also used sprites for the planetary approach, locking the planet to the middle of the screen and switching to using the hires screen when you were close enough. The view then switched to flying over the surface, following the blips on a radar scanner to find the outpost to land at. I did allow the screen to tilt a little during this phase, although the sprites on the ground didn’t.
Once landed, you could leave your ship (and see it parked on the ground). Then you could walk around and visit the various shops, one being a commodity market for trading. Also on the planet surface there were also robot droids chasing you! You had a hand laser for shooting and destroying them.
Trading was the main way to make money, and by acquiring credits you could buy all sorts of upgrades: better weapons. The final upgrade was a galaxy drive, the only way to escape the galaxy and win the game. Along the way you had to find clues to the name of the planet you had to go to to purchase the galaxy drive. Some of the planets could not be reached normally, so you had to use teleportation gates on the surface to reach them.
Code-wise, I had space for 8K of code. At the time the assembler I was using was called Rapid Assembler System (RAS). I’d butchered RAS quite a bit, adding my own upgrades like a full-screen editor, (plus lots of disc commands and other stuff I don’t remember). RAS assembled code to fit into the 4K chunk of RAM from $C000 – $CFFF. So, for my game, I assembled the code as two 4K chunks, each using a jump table at the start so that each block of code could safely access the other block through known addresses.
All other memory was filled with graphics and data, plus VRAM needed for the screen and the few sprites I allowed myself to use. Memory was so tight, I had to de-optimise the code several times just to claw back some RAM for code! The final time left me with 3 bytes of RAM left. I even clobbered a large chunk of stack space, as well as every available bit of zero-page (the first 256 bytes of RAM).
But at the end of all the hard work and bug-fixing, the game was complete, and a deal struck with a company named The Big Apple.
Unfortunately, before the game could be published, the plug was pulled on Orpheus by its owner, so Delphian never did see the light of day…
I feel sad at times that Delphian was never released. I had a lot of fun coding it, and the emotions at the end knowing it fitted into RAM… A mixture of relief and elation I seem to recall…
But right now, after so many years, I’m back to coding C64 games. Currently working on my Briley Witch RPG, a game based upon my novels, but I have this little voice inside my head that’s suggesting one day I should resurrect Delphian and let it see the light of day once more.
I have a strong feeling people would enjoy playing the game, so if anyone thinks I should, please leave a message of encouragement…