There are some times in programming, particularly on the 2600, that you have to expend a lot of effort to achieve relatively little. The last few days working on the PoP kernel have been like this for me. Having now become convinced of the safety and benefits of the undocumented 6502 instructions, I decided to use them to improve the efficiency of my code. In particular, I wasn't happy with the self-modifying code used in the kernel. Although this code was working fine, it was taking 14
It's been a while since I posted anything here, so here is a quick entry about a recent Atari 2600 project of mine.
I had an idea for a holiday-cart based around the Ultimate game Pssst! for the ZX Spectrum. For those unfamiliar with the game, here is a flash version of Pssst!, and a YouTube video of Pssst!.
The aim of Pssst! is to protect the flower growing in the centre of the screen from a variety of different bugs. The bugs are destroyed by spraying them using the aerosols positi
I have always preferred programming on paper for some reason. I think this is because I didn't have a computer at home when I first learned to program. The only computer available to me for a long time was in my school, and its usage was strictly controlled and very limited. As a result, I used to write out my programs by hand in exercise books, and spend my precious computer time typing-in these listings and attempting to debug them. At the end of the session, I would print out what I h
I am often struck by the similarity between the activities of game playing and game creation. In both cases, there is generally a long sequence of problems to be solved with an eventual goal in mind. These problems can have complex dependencies, and finding a good solution can make the difference between reaching the goal and starting over. As I have previously noted, I actually gain more enjoyment from creating games than I do from playing them. According to some friends of mine in the
I have been dropping hints for some time about a new Supercharger project that I have been working on. However, I am now finally ready to reveal some details about this project. The main reason for the delay was that I had some difficulties getting my head around the oddities of the Supercharger. On reflection it doesn't appear too complex now, but the lack of clear documentation (now fixed thanks to Eric), and the way you have to read memory to write caused me some big headaches. I ende
I often seem to have the following motivation problem: whatever task Iam supposed to be working on is the thing that I least want to do,while the thing that I can't work on is the thing that I most want todo! This seems to hold regardless of the tasks that are involved. Iseem to be constantly forcing myself to get on with the essentialtasks, while my mind is pulling me towards the less important tasks.I suppose this is just a corollary to the "shiny object syndrome" thatI described in my blog
I am a perfectionist in may areas of my life. To others, I probably come across as somewhat of a pedant, but I remain unapologetic! I think this quality is present, and necessary, in almost any gamer and programmer. It is this quality that drives one to collect every gold coin in Mario, to achieve the highest score, or squeeze every last byte and cycle out of the Atari 2600. However, there are times when this quest for perfection can get in the way, or it becomes increasingly unclear what "p
A couple of entries back I was pondering which project to do next after Juno First. Since then, I have been working on the semi-secret Harmony/Melody cart project. This project is now close to completion, and so I think it is safe to write some details about it here. To keep things simple, I'll only talk about the Harmony cart. The Melody cart is the same, but without the SD card and USB options.
The Harmony cart project was started by batari around a year ago. As I understand it,
With Juno First nearly done, I have started to think about my next Atari 2600 game project. I don't have anything decided yet, but these are the various projects that I have been considering:
Prince of Persia - I wrote a reasonable kernel for this a few years ago. However, the main issue is that it requires extra RAM and there aren't any such carts available yet. The other issue is the massive sprite requirements of the game. Le Geek made a good start on the sprites a while back, but
The start of a New Year is one of my favourite times. In Scotland, the beginning of the year (called Hogmanay) has traditionally been the most important celebration of the year. The city of Edinburgh (where I live) has a huge street party every year to celebrate Hogmanay, which involves fireworks, music, dancing, and excessive drinking! It is a time that can be appreciated by anyone, regardless of their religious beliefs or cultural calendar. From my own point of view, I like the opportuni
I have started to look at the Atari 2600 PoP project again now that the Harmony software is essentially done. I am making no promises on getting it finished, but I intend to do a bit more work on it to see where it goes. At the very least, I want to include the excellent sprites that LS_Dracon has produced. The first thing that I have done is to completely rewrite the kernel:
From the screen-shot, it looks almost identical to the old kernel, but there are two important differences.
Like most people on AtariAge, I have been playing computer games for a long time, since the late 1970s. However, I have always been more interested in how games work, rather than the games themselves. I tend to play each game for a short time, until I have figured out the mechanics and mastered the controls. Once I know that I can beat the game, I tend to lose interest and move on. Every now and again though, a game comes along that I really enjoy playing. These games hold my interest long after
I am not very good at multitasking. I find it difficult to switch from one project to another, and so I tend to give a single project my full attention for some time while ignoring the rest. My problem is that I have a lot of projects, including redecorating my house, writing a book, developing several websites, and learning to drive. I guess that my girlfriend should also be included in that list! As a result, my Atari projects tend to move along at a relatively slow pace, with occasiona
When I tell people that I write games for the Atari 2600 in my spare time, the first question they ask is usually an incredulous "Why?". Unfortunately I don't have a good answer for this, and my arguments about it being fun and challenging usually fall on deaf ears. At the end of the conversation, I am often left wishing that I hadn't brought it up. Not that I am ashamed of it you understand, just that it is difficult to convey to the uninitiated what an interesting and rewarding activity
I've been doing a bit more work on the Harmony project recently (together with batari and Thomas Jentzsch).
It was a bit of a struggle, but it actually seems to be working now - teaser shots below:
I'm still having fun writing text kernels. The latest version (attached) is an update to my 28char kernel to display multiple lines of text. This new kernel shows a 28x12 display without any restrictions. The kernel doesn't use any illegal opcodes, and there are still around 30 free cycles per-line, so it should be possible to display a few more lines of text with some work. Unfortunately, as before it has a 20Hz flicker, so it is essential to use the phosphor options under emulation. I
Here is another quick progress update on my Juno First game. I have now implemented the missiles, which were the final missing feature in the game. Up to 8 missiles can be shown simultaneously on screen (using flicker). There is still a bit of tearing when the missiles pass over the grid lines, but I hope this isn't too noticable. The missile firing patterns are rather boring, but I will improve this later. I was originally planning to use one of the missile sprites for regular missile
It has been rather quiet for me on the Atari front lately, after all of the excitement of the show. Since I returned the other facets of life have been taking up all my time, leaving little room for anything Atari related. It is that time of year when an endless succession of parties and engagements fill up the weekends, and work becomes hectic trying to meet all of those arbritrary end-of-year deadlines. I suspect that I won't have much time now to work on PoP until the New Year, though th
The 2600 scene is still alive and well, and there are quite a few of exciting projects currently in development. I have probably forgotten some, but the ones that I am looking forward to the most are:
AtariVox+ - I think this has been delayed by the difficulty in getting hold of SpeakJet chips.
Project Unity - a nice project to build a portable 2600 with integrated Harmony cart.
Flashback 3/Portable Flashback - actually I would settle for a PAL version of the FB2!
As someone who has been taught Software Engineering, there is something both refreshing and frightening about assembly programming on the Atari. On the one hand, all of the standard rules about abstraction, modularity, generic data structures and exception handling go out of the window as there is simply not enough memory or cycles. On the other hand, the resulting code ends up becoming increasingly complex and tangled in the quest for space and efficiency!My PoP project is now the largest as
Another quick PoP update:Following on from last time I have now managed to connect the switches and doors together. The attached demo shows the results with three switches and two doors. The upper switch opens the left door on a timer (it closes again after a delay), the lower right switch opens the right door, and the lower left switch closes the right door. There were an unbelievable number of special cases to consider, e.g. closing a door that is half open, but I think I have got them al
Last week I received a shiny new Krokodile Cartridge (KC) in the mail. I had been on the waiting list for some time, so it was great to finally get hold of one. It came at a good time, as I needed some way to test my Juno First game on real Atari hardware since exceeding the limits of my Supercharger (SC). In addition to permitting binaries over 4K, the KC has a number of other advantages over the SC: it doesn't require the weird audio setup that I was using to transfer game images, it ha
It appears that my Java port of the Krokodile Commander software generated almost no interest at all I guess all the people who were previously asking for a Java version on the forums were actually just wanting a Mac OS X version. Nonetheless, I have done some more work on the Java version to add multicart support, and increase the transfer speed. The new version is attached to this entry, and the documentation is contained in a README file inside the zip. It is still a command-line ap
If you read any discussion on Atari 2600 game programming you will soon come across the term "kernel". For the uninitiated, the kernel is the part of the code responsible for getting a picture on the screen. In any game, the Atari spends around 3/4 of its time in the kernel, so getting this code right is crucial. The reason that a kernel is required is a quirk in the design of the Atari. Memory (RAM) was expensive at that time, and so the console was designed without any video memory.
It has been some time since I last posted an update on my Juno First game. The project has been on hold for a while, but it has not been abandoned completely. One of the reasons that it stalled is because I wasn't completely happy with the kernel. My aim for the game was to have full colour sprites that are updated on every line (1LK). This should make the game visually superior to similar games (such as Beamrider), but it is quite a challenge to achieve!
I managed to get the kernel