By Bob Seidel
After a bit of a hiatus, welcome back to another Retroblast interview. Today we have with us MAME developer and current coordinator Aaron Giles.
Aaron, tell us a little about your self.
Hi, I'm Aaron Giles, currently the coordinator for the MAME project. I've been living in the Seattle, Washington area for the past 3 years. Before that, I've lived in the San Francisco Bay Area (8 years), Manhattan (1.5 years), Geneva (6 months), Chicago (4 years), and Toledo, Ohio (18 years), where I grew up. I'm 35, married, no kids, one evil cat.
Where do you work and what do you do aside from
At the moment I'm a developer lead at Microsoft, managing a team that is working on server virtualization technology derived from our Virtual PC and Virtual Server products. When I first started working on Virtual PC for the Macintosh back in 1998 at Connectix, it had a lot in common with emulation. These days, however, we're not emulating, we're "virtualizing," and it's a very different thing.
What are your top three favorite video games of all time?
The two local in & out stores -- Sterling and 7/11 -- each had a couple of arcade games that they would rotate in and out. Both stores were within biking distance, so my friends and I would make regular stops there. Whoever was picking the games had great taste, as we got a pretty good selection of games over the years: Asteroids, Mappy, Gyruss, Crossbow, Moon Patrol, Elevator Action, Track & Field, Hyper Sports, and a whole bunch more I can't remember at the moment.
Do you currently own any consoles, PCBs, or arcade
cabinets? Any that you would like to own?
I have one arcade cabinet, which is a Mappy I picked up cheap at an auction in San Jose back when I used to live in that area. The monitor needs some work, but it plays fine and the supersized marquee is intact, which is really what I care most about.
As for PCBs, I'm currently at around 70 or 80, I haven't counted recently. Mostly Atari stuff, a bunch of Strata/Incredible Technologies games, and more recently some Sega boards to play with.
Consoles? I have a few, but can't for the life of me ever get around to playing them. I've got a classic Atari 2600, a Dreamcast, a GameCube, and the original PlayStation that we disassembled and logic analyzed to produce Connectix Virtual Game Station. Oh, and I have a Pippin, just for yucks (I got it when I was the Mac game guru at LucasArts, but nobody was really interested in writing for it).
What is it about emulation that keeps you passionate
about the project?
A good chunk of it is just figuring out how stuff works. Crossing that line between hardware and software. I've always flirted with working on the hardware/firmware side of things, but never really got the chance to get into it. But I have been pretty successful as a software developer. So translating hardware into software is kind of my way of continuing to ride that line. And figuring out "clean" or elegant ways of emulating the wide variety of arcade hardware makes for an interesting software challenge as well.
But also, I just have a huge fondness for all the games I grew up with. I want to see all the games recreated faithfully and properly. I want to make sure that my kids can eventually get a chance to experience the fun of the classics. :)
What other emulation projects have you been involved
in and what are your current active projects?
I started off by doing the Mac port of Stella, which is an Atari 2600 emulator. That was my first experience, and was primarily a porting exercise, not so much actual emulator development (which was all handled by the Stella developer).
Shortly after that, though, I found MAME, and never looked back. I have literally no interest in console emulation (apart from the 2600 and the Intellivision, which are both interesting challenges). There are plenty of difficult challenges in the arcade space, and really, that's where all my favorite games were created.
I also did a little standalone project to emulate Radikal Bikers at full speed using static recompliation and Direct3D. But that was just a fun little diversion.
Can you tell us when and how you got involved in
the other emulation efforts?
For Stella, it was probably in 1996. I was porting Mac games at LucasArts at the time, and figured I could apply my skills to other ports. Seeing the Atari 2600 come to life for the first time was exciting.
For MAME, I started with MacMAME in 1997, first working on improving some of the Mac-specific code, and then starting to write my first driver. Over time, I probably rewrote 80%+ of the original Mac-specific code before I moved onto the Windows side and did the same thing.
For Radikal Bikers, it was a little challenge posed to me by someone else who was a big fan of the game. I told him it would be dog slow in MAME, and he asked if you couldn't make it faster. Well, sure, but it would take some work and would really need to be a separate emulator.... Plus, at the time, I wanted to learn more about how to use Direct3D, so I figured it was a good excuse.
What was your first driver or other submission to
the MAME project?
First driver was Mappy, though I think Mirko Buffoni and I submitted our Mappy drivers at the same time. I had just bought the import of Namco Classics Volume 2 for the PlayStation in order to play Mappy, so I had something to compare it against.
What is your favorite driver in MAME or favorite
MAME memory during development?
I still have a certain fondness for the Exidy 440 driver. I had been wanting to add Crossbow to MAME for a long time, but was intimidated by just how many ROMs there were. I had no idea how to put it together. Eventually I got to the point where I could read schematics, and was finally able to study the Crossbow schematics long enough to figure out how the video and sound system worked. There were a lot of interesting surprises in making that driver, the most notable being that all the sound effects were digitized (and in stereo, no less!) I had to learn about CVSD compression and FIR filters in order to get it sounding somewhat decent, but in the end it was worth it. It was also exciting because eventually 8 games turned out to be running on that hardware, which is a nice reward for spending so much time on something!
How many hours a week do you spend working on MAME
or other projects?
Depends on the week, but generally at least 4-5 hours and more often than not topping 10-15 hours/week. Everything else is regular life and work.
Do you ever speak to or meet with other MAMEdevs?
Apart from the usual chats on the mailing list, I've worked with several of the devs in person here and there, but only very occasionally. Frank Palazzolo and I met once to exchange slapstics for analysis back when we were working together on that. I've also had a chance to meet up with a few other devs who happened to be local to me at the time. Sadly, I've never met Nicola in person.
What is it about MAME that has kept your interest
for so long?
There's always more to do. I have a "to do" list on my website, which is just what I'm willing to publicly admit to wanting to do. I privately have a far more comprehensive list. There are tons of drivers that could use cleanup, or save state support added, or more accurate information derived from schematics. The core is better than it was a few years ago, but I still have a bunch of things I'd like to do to improve that, breaking everything along the way. :)
What piece of MAME code or other work are you most
proud of and what function does it perform?
That's hard to say. Probably the timer system, which has become incredibly fundamental to the entire core. Prior to that, timing on multi-CPU games was pretty dicey. I really think MAME would not be capable of emulating all the games it currently does without that system.
Is there a slice of MAME code of which you are the
The MIPS dynamic recompiler is not exactly my proudest moment. Yes, it's somewhat faster than the interpreter, but not by as much as you would think. I deliberately made it extremely simple, but the big tradeoff for being simple is that there's so much more that can be done to make the code better.
You have been known to tear out a few 'systems' in
MAME from time to time, i.e. audio and input. Some have even nicknamed
you Dr. Frankenstein. What 'system' or 'systems' would you like to change
"Dr. Frankenstein" -- I like it! Well, I've not made it a secret that I'm itching to re-do the video system to rely on the OS-dependent code to mix and render the artwork and video screen. There are a ton of benefits to this. Multi-screen games will be able to run on separate monitors; it will be possible to view just one or all of the screens on a multi-screen game; you'll be able to adjust the video screen much like you can adjust your monitor (stretch/shrink, adjust position); vector games and artwork will run much faster; artwork will be higher quality (running at your native resolution); it will be much easier to add laserdisc games support; etc, etc. It's a big jump, and I've done some preliminary work, but I'm not quite ready to launch into it full speed ahead just yet.
Is there any game or driver that you've never been
able to emulate as you would like and really bugs you?
The Sega System 32 mixer is kind of pissing me off at the moment. Charles MacDonald and I spent a lot of time trying to understand how it works. We got a lot of good information out of it, yet some games still don't look right.
But the ones that really get me are the later Atari games: Moto Frenzy, Space Lords, Road Riot, T-Mek, Primal Rage. I really should probably go back and give them another try sometime, but it's just a ton of work trying to reverse engineer the protection on those games. The Atari guys were very aggressive about the protection on a lot of their later games, putting in multiple levels of detection to catch people who tried to reverse engineer the behavior. It doesn't help either that so many of the non-working games just aren't really that compelling, so there's not that much incentive except completeness.
What does your significant other think of MAME and
She varies between tolerant and cautiously supportive of it. Sometimes when I'm really obsessed with some problem, tensions can get a little high, but most of the time we've managed to work things out. We've been married for close to 12 years, so we're pretty good at working things out. :)
What do you use for test equipment?
I've got a slightly hacked supergun that I use for plugging in JAMMA boards, and a SuperPro 3000U for ROM programming/dumping. I'm not very good at soldering, so I generally try to avoid that if possible, though I do have the equipment. The rest of my equipment is just a few multimonitors and several PCs that I use for various purposes. Nothing fancy.
When testing MAME do you use a keyboard and mouse
or do you use arcade controls?
Keyboard and mouse only. I use a laptop and like to move around, so it's not really worth it to plug in a clunky USB controller or anything more heavy duty. Some day I hope to build a cabinet dedicated to MAME, but until then, I'm not too worried about arcade controllers.
Do you use a front end, if so what is currently your front end of choice?
No frontend. I've tried a few here and there and dislike every one I've tried for some reason or another. I've toyed with writing a frontend myself, but working on the core MAME is far more interesting, so it's never gone farther than parsing the info.xml and displaying a gamelist onscreen using Direct3D. As a dev, I'm always running from the command-line, and since I don't really spend any time actually playing games, it's not important to have a frontend.
How does MAME currently compare to what you thought
MAME would be when you first started and why do you feel this is the case?
Well, it's certainly gone farther than I ever thought it could when I first joined and it was focused exclusively on 8-bit CPUs. I'm constantly amazed at how the whole thing has been stretched, tweaked, and ultimately rearchitected to support new concepts. I remember when the first 16-bit CPU was added (the 68000) and what a big deal that was. I think ultimately what has kept MAME going has been the dedication of the core people involved and a general desire to do things right.
Do you feel like your work is appreciated?
Definitely! For the most part, people have been really supportive, even when I break things for a few versions. Plus, after all these years, my noise filter is pretty strict, so the majority of the griping and unappreciative whining just gets ignored.
What would you suggest for other young developers
who are interested in MAME and emulation, as a starting point?
It's tough now. All the easy problems are solved. A lot of people think if they can just learn C, then they'll be able to emulate some games, but there's so much more you need to learn about and understand. You have to understand at least one type of assembly language, understand how computer architectures work, and a whole bunch of other stuff if you really want to work on the emulation itself. On the plus side, MAME is a good learning tool. Using the internal debugger, you can start exploring and understanding what is happening. You can also contribute to MAME in other ways as well, just check out http://mamedev.com/contribute.html.
What was the dumbest question you ever actually answered?
Can't think of anything too dumb. Most of the dumb questions are just ignored. I get so many of them in spite of all the warnings and disclaimers it's just kind of pathetic, really.
Any closing comments for the RetroBlast Readers?
If anyone out there can make me independently wealthy, so I don't have to work a day job and can just spend all my time working on MAME, contact me. :) Seriously, after almost 9 years working on the project, I'm still really enjoying the challenges and working with all of the folks involved, and I'm really looking forward to what 2006 will bring!
I'd like to thank Aaron for participating in this interview. Neither Rain, nor sleet, nor ripping out one or two of MAME's subsystems could stop him from completing this interview.
Exidy Crossbow flyer and Mappy arcade game image
courtesy of the Great Game Database