Stella's ROM info viewer displaying a rare 1984 prototype. (click to enlarge)
About a week ago, I got a chance to interview Stephen Anthony (stephena). Steve maintains the Stella project, an excellent Atari 2600 emulator that's updated often and runs fast. It runs virtually every ROM for the 2600, has debugging capabilities, a ROM auditing tool, it's a breeze to install, and it's been ported to just about anything you can think of at one time or another by various authors.
Steve did his first patch for Stella back in 1999 and continues to work on the project regularly. He now maintains the Linux, Windows, and Mac OS X ports (as well as the core codebase). He was also the maintainer of KStella (a front end) until it became obsolete with the release of Stella 2.0.
The latest stable release of Stella for your platform can be found on the Stella homepage along with the source code, a user's guide, screenshots, and more. Support for Stella is available using mailing lists provided by SourceForge and bleeding edge code is available via Subversion.
Stella also has it's own page on Bazzie Bizzle.com. This page provides mirror downloads, the ability to rate or comment on Stella, a huge list of emulators based on Stella, and more. As a matter of fact, at this time we host more than twenty-five emulators based on Stella and continue to find and catalogue others regularly.
Like our previous interviews, this one was done over email. In it, Steve and I talk about several different topics including his favorite video games and emulators, what he has planned for Stella's future, and lots more. If you like the interview, please leave a comment at the bottom. We're working hard to bring you interviews with the best authors the emulation scene has to offer and we love to hear feedback from our visitors, both positive and negative. So, without further adieu we're proud to present Mr. Stephen Anthony:
Jay: Hi Stephen, Thank you so much for making time to do this interview, I know you've been busy lately.
Steve: Hello to all the old-timers (and youngsters!) still interested in the Atari 2600 :)
Jay: Can you tell us a bit about yourself, where you're from, your marital status, hobbies, education level, and profession?
Steve: I'm from Newfoundland, Canada. I obtained a B.Sc in Computer Science from the local university (Memorial University of Newfoundland) in 2000. I'm currently working towards a Masters, although I've had to postpone it several times over the past few years. Maybe one day I'll complete it. I currently work as a Computer Science Lab Instructor at Memorial, teaching up to 3000 level Java programming, Microsoft Office applications, and some Visual Basic, Fortran, C, etc.
My main hobby is working on and maintaining Stella. It's really taken on a life of its own, so I don't have much time to work on anything else outside of work. On the rare occasion that I get some free time from that, I also work on other Atari 2600 related utilities. This includes programming software for the Krokodile Cart and the Harmony/Melody cart (programmable cartridges that allow you to download games and play on a real 2600).
Jay: When did you first get into computers and programming and why?
Steve: Hmm, probably in the early 80's. I started out on the Atari 2600, then moved to the home computers of the day (VIC20, C64, Amiga). I first starting programming on the Amiga, where I taught myself the C programming language. I've just always found that sort of stuff interesting. You know, being able to sit down and create something that didn't exist before? My best subjects in school were in the math/science area, and programming seemed to be a nice real-world application that used those strengths.
Jay: What was the first gaming system you ever owned?
Steve: The Atari 2600 is what I'd consider the first real system. I did have the original Atari Pong game first, but it wasn't really a gaming system (you could only play one game).
Jay: What are your top three favorite game systems and what's your favorite game for each one?
Steve:
(1) Atari 2600, of course. My favourite games would be those from Activision. If I had to narrow it down, maybe River Raid and Frostbite.
(2) Amiga. Favourite games would be anything from Psygnosis.
(3) Linux. Believe it or not, there are actually quite a few games available for Linux. Anything from ID Software, but probably the best would be the Quake series.
Jay: What emulators do you use or have installed and which are your favorites?
Steve:
Stella (Atari 2600). Of course I'm biased here :)
E-UAE (Amiga emulator for Linux). Although development has stalled since 2007, and I recently bought the real thing (I have an Amiga 1200, 4000, and CD32).
ZSNES (Super Nintendo)
SDLMAME (arcade emulator for Linux)
VICE (C64 emulator for Linux)
Jay: What advice would you give a person who's considering writing or porting an emulator?
Steve: Not to sound negative, but if you're a beginning programmer, writing an emulator from scratch probably shouldn't be your first project. You need to be quite comfortable in the language on the host system (more than likely either C or C++), but also have intimate knowledge of the emulated system, including the common languages that were used in creating software for that system (very likely some sort of assembly). Add to that the fact that most systems don't have adequate documentation, so a lot of reverse engineering will be required. To do the job right, you'll also need the actual original hardware, and some way of running custom-made software on it.
Now that I've scared everyone away, I'll talk about porting an emulator :) If the original programmer has done their job correctly, porting can be quite easy, normally a project that can be done in less than a week. This is by far the easiest route to take, getting your feet wet before diving into a completely new codebase. I was lucky in that regard, as Stella was mostly written that way before I ever became involved with it.
Jay: What projects (besides Stella) have you been involved in? Any of them still being actively developed?
Steve: I've worked on a few other emulators, adding very basic stuff like joystick handling. I've added small snippets of code to some open-source ID games, and also some mail and news reader programs. Basically little nagging things that I wanted fixed in the programs I used, but nothing on the scale of Stella. For a time, I did maintain KStella, which was a KDE frontend for Stella (when it was a commandline application). But once I ported Stella to SDL and made it cross-platform and included a built-in UI, KStella became obsolete.
Jay: Any top secret projects you care to announce for the first time?... can't blame a guy for trying ;)
Steve: This isn't really terribly top secret, but I'm currently in alpha/beta testing for the next major release of Stella (3.0). It will feature a rewrite of the TIA (the main display chip in the 2600), fixing some bugs caused by undocumented features of the chip.
I'm also jointly working on a cross-platform programming tool for the Harmony/Melody cart. This cart will allow you to play perhaps 95% of every ROM out there on a real 2600. The cart itself should be available around Christmas 2009.
Jay: Can you tell us about the events that lead up to you joining the Stella Team?
Steve: In late 1999, I sent a patch to Brad Mott to fix the Linux port of Stella, as it hadn't been maintained for about a year before that. That patch eventually resulted in Stella 1.2.
Just after that, I graduated from university when an extended illness meant I couldn't leave my house for basically 6 months. So to keep myself from going crazy, I delved deeper into Stella. I started adding features and fixing bugs, and learning how the 2600 worked along the way.
Jay: Can you describe your responsibilities as a member of the Stella Team?
Steve: Currently, maintainer of the entire codebase, which includes responsibility for the Linux, OSX, and Windows ports. I try as much as possible to keep things cross-platform, because that's the only way I can handle the workload (and it's the number one mission statement of the project).
Jay: What's it like to work on such a large and complex project?
Steve: At first, it wasn't too bad, since I was only involved with the Linux side. Then I started working on the Windows port. Later I took over the OSX port. Finally, I started working on the core code itself, where changes would affect all ports.
Perhaps the hardest thing is making everything cross-platform. There are many emulators that are Windows-only, and I can understand the temptation to do that. It's just so much easier to only have to worry about one platform, and to take advantage of platform-specific things. But if Stella had started out that way, it probably wouldn't be where it is now, and I never would have started working on it.
There's a saying in programming, that multi-architecture programming is also called multi-archi-torture :) Especially when things aren't abstracted, and code that works perfectly well on one system doesn't exist on another (or does exist, but is named/used slightly differently). Those problems have been pretty much ironed out in Stella now, but it was very frustrating in the beginning.
Overall, I've been burnt out a few times over the past 8 years, sometimes not working on it for 6-8 months at a time. But I always come back to it eventually.
Jay: Is Brad Mott still involved in the development of Stella? If so, then to what extent?
Steve: Initially, Brad laid the groundwork for me to get a better understanding of how everything worked (not to mention actually writing the thing, of course). This advice was invaluable, as I wouldn't have been able to proceed without it.
More recently, I haven't received any feedback from Brad for about a year. Before that, communication would be months apart. I'm glad if he returns and wants to contribute to Stella, but at this point I consider myself the maintainer of the project. It wasn't a hostile takeover or anything; I understand that he was completing a M.SC and PHD, and later starting a company.
Jay: The Stella documentation lists a lot of contributors. How many people are still actively working on Stella?
Steve: In terms of the actual codebase, just me. There's the CRT Simulation group that contributes code every 4 months or so, but that's restricted to the TV effects; the rest falls to me.
There are several dedicated bug-testers on AtariAge. Some have sent small code patches, and I'm thankful for any help I receive. But probably most helpful are the people who understand the hardware better than I do, and create test ROMs/give detailed descriptions of how things should work. They're the people that really push progress forward.
Jay: Can you tell us about the implementation of the CRT simulation effects?
Steve: Currently, these effects are OpenGL only, and use OpenGL shader language. So you need at least OpenGL 2.0 to use them. I believe the next revision will still use some OpenGL shader stuff, but relax the requirements and speed up the implementation, so people with slower computers or older OpenGL cards can make use of the effects too. I can't really say much more about that, as I rely on the Georgia Tech Atari Team (the guys behind the effects code) to take care of that side of things.
Jay: What other features are (or might be) coming to Stella in the future?
Steve: The TIA improvements were already mentioned above. There are also quite a few debugger/developer improvements I want to make, to make it easier for people to create new 2600 games. Those two make up the bulk of what will become version 3.0.
Beyond that, I'd like to include all the basic functionality that exists in other 2600 emulators. No single 2600 emulator contains everything out there, so you're forced to use different ones. I want to eliminate that need :) Things such as esoteric controllers (Lightgun, Compumate keyboard, KidVid, etc) are probably next on the list.
Further on, perhaps network play and movie recording/playback. But those are well past v3.0; perhaps 3.2/3.3 or later.
Jay: Well, it's been a pleasure talking with you, Steve. Good luck in the future with this excellent emulator.
Steve: Thanks for giving me the chance to talk about one of my passions. Hopefully I haven't bored anyone with my probably overly-detailed responses.