Phew... It has been too long since the last InterView and you may have thought
I had run out of InterViewees. Well guess again, here is one, and I have some others
in the queue. This is one of the main features of EV and I won't let it slide. So this
time, the InterView is with Larry Bank, the soul of C.A.G.E. This is a very nice
emulator which features speed, and an operating system support that not all emulators
have wandered upon. Larry talks to us about the
ins and outs of working with his baby, C.A.G.E. I hope you enjoy it!
|Larry Bank from Cage InterViewed! - June 27, '98 by JoseQ
1. Can you tell us a little bit about yourself (age, school preparations,
skills useful in C.A.G.E.)?
I am 32 years old and have a BS degree in electrical engineering. I have
never used my EE skills; I began programming at age 13 and continued until
today. I programmed all the early 8/16-bit microprocessors in assembly
language on the various PC's of that era (Apple ][, TRS-80, IBM-PC, Atari
ST). This knowledge of the various assembly languages has helped a little
in creating the emulator, but is not really a requirement. If you have the
data book and a general knowledge of how microprocessors work, then you can
write an emulator. I have always been interested in computer graphics and
this skill has made writing the emulated graphics easier. Being able to
think in terms of bits, bytes and pixels is definitely a required skill for
2. What got you to start doing C.A.G.E.? What caused you say "Alright, it's
time to start"?
I started to see various emulators getting better and better, but none of
them did a good job with Robotron, especially not running in a Window on NT.
I decided that I could write a Robotron emulator for NT and it would be a
good excuse to learn DirectX, Joystick support and Sound on Win32.
3. What kept you going the whole way through?
At times it was difficult to justify continuing. When my 6809 had bugs
and I would waste hours trying to find them, I kept asking myself why am I
pouring tons of time into this thing. It was very satisfying to finally get
everything working and that made all the time spent worthwhile. This is
basically how most programming is - 90% frustration and 10% satisfaction.
If you have the patience and tolerance for those odds, then you can be a
4. Did you ever think it was going to be this popular?
Part of my motivation was to lure away some of the MAME crowd who were
interested in running a fast Windows-based emulator. I really had no idea
how many people would take an interest in CAGE.
5. Why did you choose Windows as your platform? Do you think your speed
gains over MAME are maybe caused by Windows optimizations?
The choice of Windows as a platform was simple. I have programmed DOS
applications since the days of DOS version 1.1. DOS provides some benefits,
but the main downside was having to support so many different hardware
platforms. Besides the problems of video cards and modes, the sound and
joystick support meant either supporting a very limited set of hardware or
writing a whole lot of code. Writing an emulator as a side project means
that I have to make every hour I spend as useful as possible. I have a full
time job and a real life; time spent on the emulator has to be 'stolen' from
the little free time that I have. If I get bogged down testing DOS sound
card code I might not finish doing the rest of the emulator. At this point
in my life, I really prefer doing Win32 programming anyway. Windows may not
be the best gaming platform, but I can be more productive, especially when
creating the user interface.
The speed gains I have over MAME really have nothing to do with the
operating system. The same code will run at basically the same speed on any
operating system. Updating the video display used to be a performance issue
in Windows, but DirectX mostly solves that problem. The reason my emulator
is much faster than MAME is due to my fast CPU emulators. More than half
the time of any emulated game is spent in the CPU emulator and if you can
speed that up, then the whole thing goes faster. I rewrote my CPU's in
assembler and then went back and optimized them some more.
6. What are your main goals with C.A.G.E.? Do you look to please the user,
get quality game enjoyment, faithful emulation, speed?
Most of my goals with CAGE are quite selfish. I have tried to emulate my
favorite games to play well on Windows NT. The speed issue has two sides to
it: on the one hand, I always look at maximum performance as a challenge; on
the other hand, I also try to get the most speed out of the code so that
people with older hardware will still be able to run it. I keep a 486-66
test machine running just to do performance testing of CAGE.
I have a very short attention span and basically want to see progress in a
short time period. I have emulated some games extremely well (such as the
PacMan series) and others poorly (such as ZooKeeper). So far, I have
avoided games with advanced sound chips, but that is my next area to work
on. I want to improve the sound in all the games by using a 'Pull'
technique instead of the 'Push' techique I am now using. My attention
basically drifts from one area to another depending on how boring or
interesting it seems at the time.
7. Are you looking into adding network playability to C.A.G.E.? How
complicated do you think that might be?
I have thought about network play for CAGE, and it really doesn't seem
too difficult. Keeping the two machines synchronized will be simple because
I am using the high resolution internal timer. The only issue is how and
when to transmit information about joystick and keyboard changes. When I
have my home network back up and running (when I get the next NT 5.0 beta) I
will start playing with this idea.
8. What do you think has been the hardest part about working with C.A.G.E.?
The hardest part of working with CAGE was at the very beginning when I
was not sure if the bugs were in my CPU or in the rest of the emulator.
When you can't rely on your CPU being accurate, it is much more difficult to
debug the rest of the code. After I cleaned up the CPU code, adding more
game support and sound wasn't very difficult.
9. What should we expect in future versions?
In future versions I will keep trying to improve the quality of existing
games as I add new ones. In my last release, I cleaned up the joystick and
save/load code to a good level. Next comes re-doing all of the sound.
There are just so many things that need attention, it is difficult to
prioritize and divide up my time.
10. You have an area of your site devoted to coding... Have you gotten a
good response from that? What are your thoughts regarding distributing code
I have received a few notes thanking me for the various articles and
source that I have posted, but I don't think there are a great number of
people doing programming. I started CAGE with the idea that maybe I could
make money some time in the future. For this reason, I have not borrowed
any emulator code and written everything from scratch. As this idea seems
more and more remote, I have been releasing more and more of the source
code. There are some pieces that I consider trade secret and probably won't
release, but a large portion of it is already on my site. I will continue
to write new articles for my 'Code Corner' section because they also serve
to document the work I've done. I'm not sure I will ever release the
complete source to CAGE, but there's always a chance.
11. Any words you want to voice out to the public?
I'm going to continue with CAGE as long as I have some spare time
because I am always learning new things and that's what makes programming
fun. There is probably another 1000 hours of stuff on my to-do list for
CAGE, so I will be at it for a long time. Retrocade looks like it will be
an excellent emulator and may completely overshadow CAGE, but I will still
continue to work on it.
On another topic, I have had very few lamers email me and I answer 100% of
my email. Even if I don't have a good answer for someone, I think it's rude
to completely ignore email.
12. When will CAGE be "finished"?
CAGE will officially be finished when I
have emulated all of my favorite games (about 40) to a quality level I am
happy with. Some of the games I want to see emulated use a 68000 which
means I have a lot of work ahead of me :(.
Thanks a lot go to Larry
for his time answering all these questions. We congratulate him on his work
which is great (gives my dad a chance to play Joust (one of his favorites)
on his old PC). You can email Me or
Larry with comments. And you can
download his C.A.G.E. emulator at our Emulators Page.
One Article Up: EV News - Tiny Update
One Article Down: Rolling Thunder Emulator Page