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.

Disclaimer: This is not Aaron's cat, just another one of the millions
waiting to feed on us all.

Where do you work and what do you do aside from
MAME development?

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?

Mappy (of course), Moon Patrol, and Crossbow

Can you tell us some of your early arcade and gaming memories?

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
least proud?

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
and why?

"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
other projects?

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!

Conclusion

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.