I recently had a chance to chat with Antonio Savona, developer of P0 Snake and the recently released groundbreaking game, Planet Golf. The development team have decided to donate all of their profits to UNICEF, which is admirable indeed.
Read on to learn more about Antonio’s early experiences with the Commodore 64, his influences and his code.
When did you first use a C64? What is your first memory?
It was my older brother who brought a Commodore 64 into the family, I think it was Christmas 1983. He dove straight into programming and I didn’t have a clue what he was doing, but I could play video games in between his programming sessions and that was fine with me. He moved on to the Amiga has soon as it came out and I had the Commodore 64 all to myself. It was then that I started some coding on my own, learning from his notes.
What games motivated you to get into design and development?
I’d mention two games: Archon and Mr. Robot. When I first played them, I was like, “I want to do something like this one day.” I remember I asked my brother to teach me asm when I saw the level editor of Mr. Robot. To me the idea that I could design my own game was mind-blowing. I wanted to expand on that concept building my own game. But it would take some more time before I mastered the skill.
Which coders inspired you to become a coder?
I guess the usual suspects: Jeff Minter, Antony Crowther and Paul Norman first. But I was really pushed to study asm to a better level, beyond the simple routines I was able to write back then, thanks to Mr. Simon Nicol. I remember being completely blown away by Mega Apocalypse when it came out and I decided that I really wanted to understand how it worked. I spent so much time peeking at its code that I think I could have re-written it myself at some point. To this day, I think that technically it’s one of the greatest games ever made for the C64, and of course Mr. Nicol belongs to the Olympus of the Commodore 64 coders. I recently had the privilege of meeting him: he is also a nice man, very humble and easy to talk to, which is a rare thing with living legends.
What was your first piece of code?
I can’t really remember my first piece of proper code. Back then I used to start a thousand things and finish none. Recently I was digging through my old tapes and disks, and I found a fractal generator. I think it was completed in 1986 because the label says “preserved from tape”, and I got my disk drive in 1986. So I guess this has to be my first “complete” proper program. It’s probably the first 100% asm thing that I wrote, and it’s not too bad. I should put it on CSDB for some laughs :-).
As a member of the scene, have you ever done a crack?
Not me, but my alter ego :-). I’m serving part-time in Atlantis, and once helped out people in HF if memory serves me correctly. I help out with intros and demos more than cracks because I’m always busy with other things, and cracking is a matter of speed and promptness. With intros and demos you can adjust your schedule to your availability and that works much better for me.
What is your favourite contemporary release?
I loved the Donkey Kong conversion that came out recently. There’s so much work behind that, really. Also, I love the whole idea that someone thought that “the greatest game of all times” (true or not, it doesn’t matter) didn’t have a proper conversion for the greatest computer of all times, and that this needed be rectified. And rectify they did. This whole thing has such an epic significance that goes beyond the actual release.
You were working on Planet Golf for over a year, what were the main challenges in development?
The physics, I guess. Implementing it in the first place was not really that difficult, but once I built the game around it I understood that my approach was too slow and I had to sweat a lot to optimize everything to have it run smoothly. I used all the possible tricks: code in Page zero, Illegal opcodes and the usual stuff one expects from a hacker, but also a lot of memory-saving tricks to accommodate the huge tables that I needed to speed the physics up. Audio and GFX are compressed, of course. The tables themselves are uncompressed on the fly right before their use and then destroyed. Finally, I had to come up with a bespoke Floating Point representation that was specifically designed to speed up exactly the kind of operations that Planet Golf needs to execute. This allowed me to use variable precision and trade accuracy for speed in calculus at will. So, for instance, when the ball is flying, the calculations are simple (just the gravity discount), but they need to be very accurate to prevent cumulative errors, while for the rebounds the calculations are very complex, but you don’t need extreme accuracy because it’s a “punctual” event, and you don’t care if you get the bouncing angle 0.001 degrees wrong, after all. So the game continuously switches between different levels of precision on the same data structures, according to the game scenario. There’s so much stuff going on while the ball moves…
Planet Golf features digitised speech, how did you record this audio for the C64 and what technique did you use to implement it?
The audio was recorded with a decent equipment on a PC and went through a lot of cleaning and preprocessing before it was fed to the Commodore. One could think this is a bit overkill, because we are talking 8Khz 8bit anyway, but you’d be surprised how much a good, clean sample to start with can make a difference in the actual result. The game uses Mahoney’s technique, which allows for clean and loud 8bit digis on both sid models. On the top of that, I built a vector quantization / codebook-based compression system (the game has A LOT of speech!). Unlike P0 Snake, which decompressed all the digis in memory before using them, Planet Golf plays the compressed digi, so specific care had to be taken to optimize the nmi play-routine.
The retro scene seems to be slowly growing with the influx of younger people getting involved, do you think this has affected pre-orders of Planet Golf?
Planet Golf sold much better than P0 Snake in its first month, but I’m not sure the two games can be compared. Cart vs disk, Free game vs DD, arcade vs simulation… there are too many variables. Also, P0 Snake sold out almost immediately and it was never reissued, so we won’t have a longer time series to compare the two. But in general, looking at the sheer number of releases that you get now, compared to a few years ago, I think that the scene is growing and that there’s new blood, which is something I’m really happy about. With me, when I’m done with my real -life job, I’m knackered and I seldom put in more than half an hour a day of programming, but I remember I could go all night when I was a kid, and then I would still be up and running for school. If the new kids can master the new cross-developing technologies and keep getting into C64 coding more and more, with their energy we will see great things in the future.
Do you plan to pursue your passion in C64 game development in future?
When I was about to finish Planet Golf I thought, “never again”. As much as I love Commodore 64, it is not my job (not surprisingly). To code a game is a very demanding task that requires a lot of time. Time you take from family, friends, rest, etc. This takes its toll on your real life. So I kinda promised myself: “never again”. But now I see the reception that the game had, and I think that this time was well spent after all and my hands are itching again. I know how this is going to end… 🙂
Thanks for taking the time to chat to us, I’m looking forward to getting my copy of Planet Golf Ultimate Edition and we wish you all the best in your future endeavours.