- News for June 27, '98 -





Larry Bank from Cage InterViewed! - June 27, '98 by JoseQ
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!

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 emulator authors.

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 programmer.

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 freely?

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

Post Some NEW Comments on this topic...

2001 EmuViews